corrade-nucleus-nucleons – Blame information for rev 20
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
20 | office | 1 | /** |
2 | * ### Changed plugin |
||
3 | * |
||
4 | * This plugin adds more information to the `changed.jstree` event. The new data is contained in the `changed` event data property, and contains a lists of `selected` and `deselected` nodes. |
||
5 | */ |
||
6 | /*globals jQuery, define, exports, require, document */ |
||
7 | (function (factory) { |
||
8 | "use strict"; |
||
9 | if (typeof define === 'function' && define.amd) { |
||
10 | define('jstree.changed', ['jquery','jstree'], factory); |
||
11 | } |
||
12 | else if(typeof exports === 'object') { |
||
13 | factory(require('jquery'), require('jstree')); |
||
14 | } |
||
15 | else { |
||
16 | factory(jQuery, jQuery.jstree); |
||
17 | } |
||
18 | }(function ($, jstree, undefined) { |
||
19 | "use strict"; |
||
20 | |||
21 | if($.jstree.plugins.changed) { return; } |
||
22 | |||
23 | $.jstree.plugins.changed = function (options, parent) { |
||
24 | var last = []; |
||
25 | this.trigger = function (ev, data) { |
||
26 | var i, j; |
||
27 | if(!data) { |
||
28 | data = {}; |
||
29 | } |
||
30 | if(ev.replace('.jstree','') === 'changed') { |
||
31 | data.changed = { selected : [], deselected : [] }; |
||
32 | var tmp = {}; |
||
33 | for(i = 0, j = last.length; i < j; i++) { |
||
34 | tmp[last[i]] = 1; |
||
35 | } |
||
36 | for(i = 0, j = data.selected.length; i < j; i++) { |
||
37 | if(!tmp[data.selected[i]]) { |
||
38 | data.changed.selected.push(data.selected[i]); |
||
39 | } |
||
40 | else { |
||
41 | tmp[data.selected[i]] = 2; |
||
42 | } |
||
43 | } |
||
44 | for(i = 0, j = last.length; i < j; i++) { |
||
45 | if(tmp[last[i]] === 1) { |
||
46 | data.changed.deselected.push(last[i]); |
||
47 | } |
||
48 | } |
||
49 | last = data.selected.slice(); |
||
50 | } |
||
51 | /** |
||
52 | * triggered when selection changes (the "changed" plugin enhances the original event with more data) |
||
53 | * @event |
||
54 | * @name changed.jstree |
||
55 | * @param {Object} node |
||
56 | * @param {Object} action the action that caused the selection to change |
||
57 | * @param {Array} selected the current selection |
||
58 | * @param {Object} changed an object containing two properties `selected` and `deselected` - both arrays of node IDs, which were selected or deselected since the last changed event |
||
59 | * @param {Object} event the event (if any) that triggered this changed event |
||
60 | * @plugin changed |
||
61 | */ |
||
62 | parent.trigger.call(this, ev, data); |
||
63 | }; |
||
64 | this.refresh = function (skip_loading, forget_state) { |
||
65 | last = []; |
||
66 | return parent.refresh.apply(this, arguments); |
||
67 | }; |
||
68 | }; |
||
69 | })); |