corrade-nucleus-nucleons – Rev 20

Subversion Repositories:
Rev:
/**
 * ### Changed plugin
 *
 * 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.
 */
/*globals jQuery, define, exports, require, document */
(function (factory) {
        "use strict";
        if (typeof define === 'function' && define.amd) {
                define('jstree.changed', ['jquery','jstree'], factory);
        }
        else if(typeof exports === 'object') {
                factory(require('jquery'), require('jstree'));
        }
        else {
                factory(jQuery, jQuery.jstree);
        }
}(function ($, jstree, undefined) {
        "use strict";

        if($.jstree.plugins.changed) { return; }

        $.jstree.plugins.changed = function (options, parent) {
                var last = [];
                this.trigger = function (ev, data) {
                        var i, j;
                        if(!data) {
                                data = {};
                        }
                        if(ev.replace('.jstree','') === 'changed') {
                                data.changed = { selected : [], deselected : [] };
                                var tmp = {};
                                for(i = 0, j = last.length; i < j; i++) {
                                        tmp[last[i]] = 1;
                                }
                                for(i = 0, j = data.selected.length; i < j; i++) {
                                        if(!tmp[data.selected[i]]) {
                                                data.changed.selected.push(data.selected[i]);
                                        }
                                        else {
                                                tmp[data.selected[i]] = 2;
                                        }
                                }
                                for(i = 0, j = last.length; i < j; i++) {
                                        if(tmp[last[i]] === 1) {
                                                data.changed.deselected.push(last[i]);
                                        }
                                }
                                last = data.selected.slice();
                        }
                        /**
                         * triggered when selection changes (the "changed" plugin enhances the original event with more data)
                         * @event
                         * @name changed.jstree
                         * @param {Object} node
                         * @param {Object} action the action that caused the selection to change
                         * @param {Array} selected the current selection
                         * @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
                         * @param {Object} event the event (if any) that triggered this changed event
                         * @plugin changed
                         */
                        parent.trigger.call(this, ev, data);
                };
                this.refresh = function (skip_loading, forget_state) {
                        last = [];
                        return parent.refresh.apply(this, arguments);
                };
        };
}));

Generated by GNU Enscript 1.6.5.90.