root / env / lib / python2.7 / site-packages / django / contrib / admin / static / admin / js / SelectBox.js @ 1a305335
History | View | Annotate | Download (3.96 KB)
1 | 1a305335 | officers | var SelectBox = {
|
---|---|---|---|
2 | cache: new Object(), |
||
3 | init: function(id) { |
||
4 | var box = document.getElementById(id);
|
||
5 | var node;
|
||
6 | SelectBox.cache[id] = new Array();
|
||
7 | var cache = SelectBox.cache[id];
|
||
8 | for (var i = 0; (node = box.options[i]); i++) { |
||
9 | cache.push({value: node.value, text: node.text, displayed: 1}); |
||
10 | } |
||
11 | }, |
||
12 | redisplay: function(id) { |
||
13 | // Repopulate HTML select box from cache
|
||
14 | var box = document.getElementById(id);
|
||
15 | box.options.length = 0; // clear all options |
||
16 | for (var i = 0, j = SelectBox.cache[id].length; i < j; i++) { |
||
17 | var node = SelectBox.cache[id][i];
|
||
18 | if (node.displayed) {
|
||
19 | box.options[box.options.length] = new Option(node.text, node.value, false, false); |
||
20 | } |
||
21 | } |
||
22 | }, |
||
23 | filter: function(id, text) { |
||
24 | // Redisplay the HTML select box, displaying only the choices containing ALL
|
||
25 | // the words in text. (It's an AND search.)
|
||
26 | var tokens = text.toLowerCase().split(/\s+/); |
||
27 | var node, token;
|
||
28 | for (var i = 0; (node = SelectBox.cache[id][i]); i++) { |
||
29 | node.displayed = 1;
|
||
30 | for (var j = 0; (token = tokens[j]); j++) { |
||
31 | if (node.text.toLowerCase().indexOf(token) == -1) { |
||
32 | node.displayed = 0;
|
||
33 | } |
||
34 | } |
||
35 | } |
||
36 | SelectBox.redisplay(id); |
||
37 | }, |
||
38 | delete_from_cache: function(id, value) { |
||
39 | var node, delete_index = null; |
||
40 | for (var i = 0; (node = SelectBox.cache[id][i]); i++) { |
||
41 | if (node.value == value) {
|
||
42 | delete_index = i; |
||
43 | break;
|
||
44 | } |
||
45 | } |
||
46 | var j = SelectBox.cache[id].length - 1; |
||
47 | for (var i = delete_index; i < j; i++) { |
||
48 | SelectBox.cache[id][i] = SelectBox.cache[id][i+1];
|
||
49 | } |
||
50 | SelectBox.cache[id].length--; |
||
51 | }, |
||
52 | add_to_cache: function(id, option) { |
||
53 | SelectBox.cache[id].push({value: option.value, text: option.text, displayed: 1}); |
||
54 | }, |
||
55 | cache_contains: function(id, value) { |
||
56 | // Check if an item is contained in the cache
|
||
57 | var node;
|
||
58 | for (var i = 0; (node = SelectBox.cache[id][i]); i++) { |
||
59 | if (node.value == value) {
|
||
60 | return true; |
||
61 | } |
||
62 | } |
||
63 | return false; |
||
64 | }, |
||
65 | move: function(from, to) { |
||
66 | var from_box = document.getElementById(from);
|
||
67 | var to_box = document.getElementById(to);
|
||
68 | var option;
|
||
69 | for (var i = 0; (option = from_box.options[i]); i++) { |
||
70 | if (option.selected && SelectBox.cache_contains(from, option.value)) {
|
||
71 | SelectBox.add_to_cache(to, {value: option.value, text: option.text, displayed: 1}); |
||
72 | SelectBox.delete_from_cache(from, option.value); |
||
73 | } |
||
74 | } |
||
75 | SelectBox.redisplay(from); |
||
76 | SelectBox.redisplay(to); |
||
77 | }, |
||
78 | move_all: function(from, to) { |
||
79 | var from_box = document.getElementById(from);
|
||
80 | var to_box = document.getElementById(to);
|
||
81 | var option;
|
||
82 | for (var i = 0; (option = from_box.options[i]); i++) { |
||
83 | if (SelectBox.cache_contains(from, option.value)) {
|
||
84 | SelectBox.add_to_cache(to, {value: option.value, text: option.text, displayed: 1}); |
||
85 | SelectBox.delete_from_cache(from, option.value); |
||
86 | } |
||
87 | } |
||
88 | SelectBox.redisplay(from); |
||
89 | SelectBox.redisplay(to); |
||
90 | }, |
||
91 | sort: function(id) { |
||
92 | SelectBox.cache[id].sort( function(a, b) {
|
||
93 | a = a.text.toLowerCase(); |
||
94 | b = b.text.toLowerCase(); |
||
95 | try {
|
||
96 | if (a > b) return 1; |
||
97 | if (a < b) return -1; |
||
98 | } |
||
99 | catch (e) {
|
||
100 | // silently fail on IE 'unknown' exception
|
||
101 | } |
||
102 | return 0; |
||
103 | } ); |
||
104 | }, |
||
105 | select_all: function(id) { |
||
106 | var box = document.getElementById(id);
|
||
107 | for (var i = 0; i < box.options.length; i++) { |
||
108 | box.options[i].selected = 'selected';
|
||
109 | } |
||
110 | } |
||
111 | } |