/pack-rat/003_pack_rat/pack-rat/bower_components/jstree/src/jstree.sort.js |
@@ -0,0 +1,74 @@ |
/** |
* ### 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"); |
})); |