corrade-nucleus-nucleons – Rev 20

Subversion Repositories:
Rev:
/**
 * ### Sort plugin
 *
 * Automatically sorts all siblings in the tree according to a sorting function.
 */
/*globals jQuery, define, exports, require */
(function (factory) {
        "use strict";
        if (typeof define === 'function' && define.amd) {
                define('jstree.sort', ['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.sort) { return; }

        /**
         * the settings function used to sort the nodes.
         * It is executed in the tree's context, accepts two nodes as arguments and should return `1` or `-1`.
         * @name $.jstree.defaults.sort
         * @plugin sort
         */
        $.jstree.defaults.sort = function (a, b) {
                //return this.get_type(a) === this.get_type(b) ? (this.get_text(a) > this.get_text(b) ? 1 : -1) : this.get_type(a) >= this.get_type(b);
                return this.get_text(a) > this.get_text(b) ? 1 : -1;
        };
        $.jstree.plugins.sort = function (options, parent) {
                this.bind = function () {
                        parent.bind.call(this);
                        this.element
                                .on("model.jstree", $.proxy(function (e, data) {
                                                this.sort(data.parent, true);
                                        }, this))
                                .on("rename_node.jstree create_node.jstree", $.proxy(function (e, data) {
                                                this.sort(data.parent || data.node.parent, false);
                                                this.redraw_node(data.parent || data.node.parent, true);
                                        }, this))
                                .on("move_node.jstree copy_node.jstree", $.proxy(function (e, data) {
                                                this.sort(data.parent, false);
                                                this.redraw_node(data.parent, true);
                                        }, this));
                };
                /**
                 * used to sort a node's children
                 * @private
                 * @name sort(obj [, deep])
                 * @param  {mixed} obj the node
                 * @param {Boolean} deep if set to `true` nodes are sorted recursively.
                 * @plugin sort
                 * @trigger search.jstree
                 */
                this.sort = function (obj, deep) {
                        var i, j;
                        obj = this.get_node(obj);
                        if(obj && obj.children && obj.children.length) {
                                obj.children.sort($.proxy(this.settings.sort, this));
                                if(deep) {
                                        for(i = 0, j = obj.children_d.length; i < j; i++) {
                                                this.sort(obj.children_d[i], false);
                                        }
                                }
                        }
                };
        };

        // include the sort plugin by default
        // $.jstree.defaults.plugins.push("sort");
}));

Generated by GNU Enscript 1.6.5.90.