1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- /**
- * ### 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");
- }));
|