diff options
Diffstat (limited to 'static/development-bundle/ui/ui.selectable.js')
-rw-r--r-- | static/development-bundle/ui/ui.selectable.js | 257 |
1 files changed, 257 insertions, 0 deletions
diff --git a/static/development-bundle/ui/ui.selectable.js b/static/development-bundle/ui/ui.selectable.js new file mode 100644 index 0000000..08f99cf --- /dev/null +++ b/static/development-bundle/ui/ui.selectable.js | |||
@@ -0,0 +1,257 @@ | |||
1 | /* | ||
2 | * jQuery UI Selectable 1.7.2 | ||
3 | * | ||
4 | * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) | ||
5 | * Dual licensed under the MIT (MIT-LICENSE.txt) | ||
6 | * and GPL (GPL-LICENSE.txt) licenses. | ||
7 | * | ||
8 | * http://docs.jquery.com/UI/Selectables | ||
9 | * | ||
10 | * Depends: | ||
11 | * ui.core.js | ||
12 | */ | ||
13 | (function($) { | ||
14 | |||
15 | $.widget("ui.selectable", $.extend({}, $.ui.mouse, { | ||
16 | |||
17 | _init: function() { | ||
18 | var self = this; | ||
19 | |||
20 | this.element.addClass("ui-selectable"); | ||
21 | |||
22 | this.dragged = false; | ||
23 | |||
24 | // cache selectee children based on filter | ||
25 | var selectees; | ||
26 | this.refresh = function() { | ||
27 | selectees = $(self.options.filter, self.element[0]); | ||
28 | selectees.each(function() { | ||
29 | var $this = $(this); | ||
30 | var pos = $this.offset(); | ||
31 | $.data(this, "selectable-item", { | ||
32 | element: this, | ||
33 | $element: $this, | ||
34 | left: pos.left, | ||
35 | top: pos.top, | ||
36 | right: pos.left + $this.outerWidth(), | ||
37 | bottom: pos.top + $this.outerHeight(), | ||
38 | startselected: false, | ||
39 | selected: $this.hasClass('ui-selected'), | ||
40 | selecting: $this.hasClass('ui-selecting'), | ||
41 | unselecting: $this.hasClass('ui-unselecting') | ||
42 | }); | ||
43 | }); | ||
44 | }; | ||
45 | this.refresh(); | ||
46 | |||
47 | this.selectees = selectees.addClass("ui-selectee"); | ||
48 | |||
49 | this._mouseInit(); | ||
50 | |||
51 | this.helper = $(document.createElement('div')) | ||
52 | .css({border:'1px dotted black'}) | ||
53 | .addClass("ui-selectable-helper"); | ||
54 | }, | ||
55 | |||
56 | destroy: function() { | ||
57 | this.element | ||
58 | .removeClass("ui-selectable ui-selectable-disabled") | ||
59 | .removeData("selectable") | ||
60 | .unbind(".selectable"); | ||
61 | this._mouseDestroy(); | ||
62 | }, | ||
63 | |||
64 | _mouseStart: function(event) { | ||
65 | var self = this; | ||
66 | |||
67 | this.opos = [event.pageX, event.pageY]; | ||
68 | |||
69 | if (this.options.disabled) | ||
70 | return; | ||
71 | |||
72 | var options = this.options; | ||
73 | |||
74 | this.selectees = $(options.filter, this.element[0]); | ||
75 | |||
76 | this._trigger("start", event); | ||
77 | |||
78 | $(options.appendTo).append(this.helper); | ||
79 | // position helper (lasso) | ||
80 | this.helper.css({ | ||
81 | "z-index": 100, | ||
82 | "position": "absolute", | ||
83 | "left": event.clientX, | ||
84 | "top": event.clientY, | ||
85 | "width": 0, | ||
86 | "height": 0 | ||
87 | }); | ||
88 | |||
89 | if (options.autoRefresh) { | ||
90 | this.refresh(); | ||
91 | } | ||
92 | |||
93 | this.selectees.filter('.ui-selected').each(function() { | ||
94 | var selectee = $.data(this, "selectable-item"); | ||
95 | selectee.startselected = true; | ||
96 | if (!event.metaKey) { | ||
97 | selectee.$element.removeClass('ui-selected'); | ||
98 | selectee.selected = false; | ||
99 | selectee.$element.addClass('ui-unselecting'); | ||
100 | selectee.unselecting = true; | ||
101 | // selectable UNSELECTING callback | ||
102 | self._trigger("unselecting", event, { | ||
103 | unselecting: selectee.element | ||
104 | }); | ||
105 | } | ||
106 | }); | ||
107 | |||
108 | $(event.target).parents().andSelf().each(function() { | ||
109 | var selectee = $.data(this, "selectable-item"); | ||
110 | if (selectee) { | ||
111 | selectee.$element.removeClass("ui-unselecting").addClass('ui-selecting'); | ||
112 | selectee.unselecting = false; | ||
113 | selectee.selecting = true; | ||
114 | selectee.selected = true; | ||
115 | // selectable SELECTING callback | ||
116 | self._trigger("selecting", event, { | ||
117 | selecting: selectee.element | ||
118 | }); | ||
119 | return false; | ||
120 | } | ||
121 | }); | ||
122 | |||
123 | }, | ||
124 | |||
125 | _mouseDrag: function(event) { | ||
126 | var self = this; | ||
127 | this.dragged = true; | ||
128 | |||
129 | if (this.options.disabled) | ||
130 | return; | ||
131 | |||
132 | var options = this.options; | ||
133 | |||
134 | var x1 = this.opos[0], y1 = this.opos[1], x2 = event.pageX, y2 = event.pageY; | ||
135 | if (x1 > x2) { var tmp = x2; x2 = x1; x1 = tmp; } | ||
136 | if (y1 > y2) { var tmp = y2; y2 = y1; y1 = tmp; } | ||
137 | this.helper.css({left: x1, top: y1, width: x2-x1, height: y2-y1}); | ||
138 | |||
139 | this.selectees.each(function() { | ||
140 | var selectee = $.data(this, "selectable-item"); | ||
141 | //prevent helper from being selected if appendTo: selectable | ||
142 | if (!selectee || selectee.element == self.element[0]) | ||
143 | return; | ||
144 | var hit = false; | ||
145 | if (options.tolerance == 'touch') { | ||
146 | hit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) ); | ||
147 | } else if (options.tolerance == 'fit') { | ||
148 | hit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2); | ||
149 | } | ||
150 | |||
151 | if (hit) { | ||
152 | // SELECT | ||
153 | if (selectee.selected) { | ||
154 | selectee.$element.removeClass('ui-selected'); | ||
155 | selectee.selected = false; | ||
156 | } | ||
157 | if (selectee.unselecting) { | ||
158 | selectee.$element.removeClass('ui-unselecting'); | ||
159 | selectee.unselecting = false; | ||
160 | } | ||
161 | if (!selectee.selecting) { | ||
162 | selectee.$element.addClass('ui-selecting'); | ||
163 | selectee.selecting = true; | ||
164 | // selectable SELECTING callback | ||
165 | self._trigger("selecting", event, { | ||
166 | selecting: selectee.element | ||
167 | }); | ||
168 | } | ||
169 | } else { | ||
170 | // UNSELECT | ||
171 | if (selectee.selecting) { | ||
172 | if (event.metaKey && selectee.startselected) { | ||
173 | selectee.$element.removeClass('ui-selecting'); | ||
174 | selectee.selecting = false; | ||
175 | selectee.$element.addClass('ui-selected'); | ||
176 | selectee.selected = true; | ||
177 | } else { | ||
178 | selectee.$element.removeClass('ui-selecting'); | ||
179 | selectee.selecting = false; | ||
180 | if (selectee.startselected) { | ||
181 | selectee.$element.addClass('ui-unselecting'); | ||
182 | selectee.unselecting = true; | ||
183 | } | ||
184 | // selectable UNSELECTING callback | ||
185 | self._trigger("unselecting", event, { | ||
186 | unselecting: selectee.element | ||
187 | }); | ||
188 | } | ||
189 | } | ||
190 | if (selectee.selected) { | ||
191 | if (!event.metaKey && !selectee.startselected) { | ||
192 | selectee.$element.removeClass('ui-selected'); | ||
193 | selectee.selected = false; | ||
194 | |||
195 | selectee.$element.addClass('ui-unselecting'); | ||
196 | selectee.unselecting = true; | ||
197 | // selectable UNSELECTING callback | ||
198 | self._trigger("unselecting", event, { | ||
199 | unselecting: selectee.element | ||
200 | }); | ||
201 | } | ||
202 | } | ||
203 | } | ||
204 | }); | ||
205 | |||
206 | return false; | ||
207 | }, | ||
208 | |||
209 | _mouseStop: function(event) { | ||
210 | var self = this; | ||
211 | |||
212 | this.dragged = false; | ||
213 | |||
214 | var options = this.options; | ||
215 | |||
216 | $('.ui-unselecting', this.element[0]).each(function() { | ||
217 | var selectee = $.data(this, "selectable-item"); | ||
218 | selectee.$element.removeClass('ui-unselecting'); | ||
219 | selectee.unselecting = false; | ||
220 | selectee.startselected = false; | ||
221 | self._trigger("unselected", event, { | ||
222 | unselected: selectee.element | ||
223 | }); | ||
224 | }); | ||
225 | $('.ui-selecting', this.element[0]).each(function() { | ||
226 | var selectee = $.data(this, "selectable-item"); | ||
227 | selectee.$element.removeClass('ui-selecting').addClass('ui-selected'); | ||
228 | selectee.selecting = false; | ||
229 | selectee.selected = true; | ||
230 | selectee.startselected = true; | ||
231 | self._trigger("selected", event, { | ||
232 | selected: selectee.element | ||
233 | }); | ||
234 | }); | ||
235 | this._trigger("stop", event); | ||
236 | |||
237 | this.helper.remove(); | ||
238 | |||
239 | return false; | ||
240 | } | ||
241 | |||
242 | })); | ||
243 | |||
244 | $.extend($.ui.selectable, { | ||
245 | version: "1.7.2", | ||
246 | defaults: { | ||
247 | appendTo: 'body', | ||
248 | autoRefresh: true, | ||
249 | cancel: ":input,option", | ||
250 | delay: 0, | ||
251 | distance: 0, | ||
252 | filter: '*', | ||
253 | tolerance: 'touch' | ||
254 | } | ||
255 | }); | ||
256 | |||
257 | })(jQuery); | ||