Mercurial > repos > mingchen0919 > aurora_htseq
annotate vakata-jstree-3.3.5/dist/jstree.js @ 3:6a3bbafa24b3 draft
planemo upload commit 841d8b22bf9f1aaed6bfe8344b60617f45b275b2-dirty
author | mingchen0919 |
---|---|
date | Fri, 14 Dec 2018 09:16:39 -0500 |
parents | 803f4888f36a |
children |
rev | line source |
---|---|
0
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1 /*globals jQuery, define, module, exports, require, window, document, postMessage */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2 (function (factory) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3 "use strict"; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4 if (typeof define === 'function' && define.amd) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5 define(['jquery'], factory); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7 else if(typeof module !== 'undefined' && module.exports) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8 module.exports = factory(require('jquery')); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
9 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
10 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
11 factory(jQuery); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
12 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
13 }(function ($, undefined) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
14 "use strict"; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
15 /*! |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
16 * jsTree 3.3.5 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
17 * http://jstree.com/ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
18 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
19 * Copyright (c) 2014 Ivan Bozhanov (http://vakata.com) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
20 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
21 * Licensed same as jquery - under the terms of the MIT License |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
22 * http://www.opensource.org/licenses/mit-license.php |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
23 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
24 /*! |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
25 * if using jslint please allow for the jQuery global and use following options: |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
26 * jslint: loopfunc: true, browser: true, ass: true, bitwise: true, continue: true, nomen: true, plusplus: true, regexp: true, unparam: true, todo: true, white: true |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
27 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
28 /*jshint -W083 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
29 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
30 // prevent another load? maybe there is a better way? |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
31 if($.jstree) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
32 return; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
33 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
34 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
35 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
36 * ### jsTree core functionality |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
37 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
38 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
39 // internal variables |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
40 var instance_counter = 0, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
41 ccp_node = false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
42 ccp_mode = false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
43 ccp_inst = false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
44 themes_loaded = [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
45 src = $('script:last').attr('src'), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
46 document = window.document; // local variable is always faster to access then a global |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
47 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
48 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
49 * holds all jstree related functions and variables, including the actual class and methods to create, access and manipulate instances. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
50 * @name $.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
51 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
52 $.jstree = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
53 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
54 * specifies the jstree version in use |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
55 * @name $.jstree.version |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
56 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
57 version : '3.3.5', |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
58 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
59 * holds all the default options used when creating new instances |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
60 * @name $.jstree.defaults |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
61 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
62 defaults : { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
63 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
64 * configure which plugins will be active on an instance. Should be an array of strings, where each element is a plugin name. The default is `[]` |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
65 * @name $.jstree.defaults.plugins |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
66 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
67 plugins : [] |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
68 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
69 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
70 * stores all loaded jstree plugins (used internally) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
71 * @name $.jstree.plugins |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
72 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
73 plugins : {}, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
74 path : src && src.indexOf('/') !== -1 ? src.replace(/\/[^\/]+$/,'') : '', |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
75 idregex : /[\\:&!^|()\[\]<>@*'+~#";.,=\- \/${}%?`]/g, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
76 root : '#' |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
77 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
78 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
79 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
80 * creates a jstree instance |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
81 * @name $.jstree.create(el [, options]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
82 * @param {DOMElement|jQuery|String} el the element to create the instance on, can be jQuery extended or a selector |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
83 * @param {Object} options options for this instance (extends `$.jstree.defaults`) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
84 * @return {jsTree} the new instance |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
85 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
86 $.jstree.create = function (el, options) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
87 var tmp = new $.jstree.core(++instance_counter), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
88 opt = options; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
89 options = $.extend(true, {}, $.jstree.defaults, options); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
90 if(opt && opt.plugins) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
91 options.plugins = opt.plugins; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
92 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
93 $.each(options.plugins, function (i, k) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
94 if(i !== 'core') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
95 tmp = tmp.plugin(k, options[k]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
96 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
97 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
98 $(el).data('jstree', tmp); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
99 tmp.init(el, options); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
100 return tmp; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
101 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
102 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
103 * remove all traces of jstree from the DOM and destroy all instances |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
104 * @name $.jstree.destroy() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
105 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
106 $.jstree.destroy = function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
107 $('.jstree:jstree').jstree('destroy'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
108 $(document).off('.jstree'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
109 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
110 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
111 * the jstree class constructor, used only internally |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
112 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
113 * @name $.jstree.core(id) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
114 * @param {Number} id this instance's index |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
115 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
116 $.jstree.core = function (id) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
117 this._id = id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
118 this._cnt = 0; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
119 this._wrk = null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
120 this._data = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
121 core : { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
122 themes : { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
123 name : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
124 dots : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
125 icons : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
126 ellipsis : false |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
127 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
128 selected : [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
129 last_error : {}, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
130 working : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
131 worker_queue : [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
132 focused : null |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
133 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
134 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
135 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
136 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
137 * get a reference to an existing instance |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
138 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
139 * __Examples__ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
140 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
141 * // provided a container with an ID of "tree", and a nested node with an ID of "branch" |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
142 * // all of there will return the same instance |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
143 * $.jstree.reference('tree'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
144 * $.jstree.reference('#tree'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
145 * $.jstree.reference($('#tree')); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
146 * $.jstree.reference(document.getElementByID('tree')); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
147 * $.jstree.reference('branch'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
148 * $.jstree.reference('#branch'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
149 * $.jstree.reference($('#branch')); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
150 * $.jstree.reference(document.getElementByID('branch')); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
151 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
152 * @name $.jstree.reference(needle) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
153 * @param {DOMElement|jQuery|String} needle |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
154 * @return {jsTree|null} the instance or `null` if not found |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
155 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
156 $.jstree.reference = function (needle) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
157 var tmp = null, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
158 obj = null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
159 if(needle && needle.id && (!needle.tagName || !needle.nodeType)) { needle = needle.id; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
160 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
161 if(!obj || !obj.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
162 try { obj = $(needle); } catch (ignore) { } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
163 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
164 if(!obj || !obj.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
165 try { obj = $('#' + needle.replace($.jstree.idregex,'\\$&')); } catch (ignore) { } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
166 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
167 if(obj && obj.length && (obj = obj.closest('.jstree')).length && (obj = obj.data('jstree'))) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
168 tmp = obj; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
169 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
170 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
171 $('.jstree').each(function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
172 var inst = $(this).data('jstree'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
173 if(inst && inst._model.data[needle]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
174 tmp = inst; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
175 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
176 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
177 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
178 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
179 return tmp; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
180 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
181 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
182 * Create an instance, get an instance or invoke a command on a instance. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
183 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
184 * If there is no instance associated with the current node a new one is created and `arg` is used to extend `$.jstree.defaults` for this new instance. There would be no return value (chaining is not broken). |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
185 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
186 * If there is an existing instance and `arg` is a string the command specified by `arg` is executed on the instance, with any additional arguments passed to the function. If the function returns a value it will be returned (chaining could break depending on function). |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
187 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
188 * If there is an existing instance and `arg` is not a string the instance itself is returned (similar to `$.jstree.reference`). |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
189 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
190 * In any other case - nothing is returned and chaining is not broken. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
191 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
192 * __Examples__ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
193 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
194 * $('#tree1').jstree(); // creates an instance |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
195 * $('#tree2').jstree({ plugins : [] }); // create an instance with some options |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
196 * $('#tree1').jstree('open_node', '#branch_1'); // call a method on an existing instance, passing additional arguments |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
197 * $('#tree2').jstree(); // get an existing instance (or create an instance) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
198 * $('#tree2').jstree(true); // get an existing instance (will not create new instance) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
199 * $('#branch_1').jstree().select_node('#branch_1'); // get an instance (using a nested element and call a method) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
200 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
201 * @name $().jstree([arg]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
202 * @param {String|Object} arg |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
203 * @return {Mixed} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
204 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
205 $.fn.jstree = function (arg) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
206 // check for string argument |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
207 var is_method = (typeof arg === 'string'), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
208 args = Array.prototype.slice.call(arguments, 1), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
209 result = null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
210 if(arg === true && !this.length) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
211 this.each(function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
212 // get the instance (if there is one) and method (if it exists) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
213 var instance = $.jstree.reference(this), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
214 method = is_method && instance ? instance[arg] : null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
215 // if calling a method, and method is available - execute on the instance |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
216 result = is_method && method ? |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
217 method.apply(instance, args) : |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
218 null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
219 // if there is no instance and no method is being called - create one |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
220 if(!instance && !is_method && (arg === undefined || $.isPlainObject(arg))) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
221 $.jstree.create(this, arg); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
222 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
223 // if there is an instance and no method is called - return the instance |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
224 if( (instance && !is_method) || arg === true ) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
225 result = instance || false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
226 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
227 // if there was a method call which returned a result - break and return the value |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
228 if(result !== null && result !== undefined) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
229 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
230 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
231 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
232 // if there was a method call with a valid return value - return that, otherwise continue the chain |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
233 return result !== null && result !== undefined ? |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
234 result : this; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
235 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
236 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
237 * used to find elements containing an instance |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
238 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
239 * __Examples__ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
240 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
241 * $('div:jstree').each(function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
242 * $(this).jstree('destroy'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
243 * }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
244 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
245 * @name $(':jstree') |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
246 * @return {jQuery} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
247 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
248 $.expr.pseudos.jstree = $.expr.createPseudo(function(search) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
249 return function(a) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
250 return $(a).hasClass('jstree') && |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
251 $(a).data('jstree') !== undefined; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
252 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
253 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
254 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
255 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
256 * stores all defaults for the core |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
257 * @name $.jstree.defaults.core |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
258 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
259 $.jstree.defaults.core = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
260 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
261 * data configuration |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
262 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
263 * If left as `false` the HTML inside the jstree container element is used to populate the tree (that should be an unordered list with list items). |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
264 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
265 * You can also pass in a HTML string or a JSON array here. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
266 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
267 * It is possible to pass in a standard jQuery-like AJAX config and jstree will automatically determine if the response is JSON or HTML and use that to populate the tree. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
268 * In addition to the standard jQuery ajax options here you can suppy functions for `data` and `url`, the functions will be run in the current instance's scope and a param will be passed indicating which node is being loaded, the return value of those functions will be used. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
269 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
270 * The last option is to specify a function, that function will receive the node being loaded as argument and a second param which is a function which should be called with the result. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
271 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
272 * __Examples__ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
273 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
274 * // AJAX |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
275 * $('#tree').jstree({ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
276 * 'core' : { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
277 * 'data' : { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
278 * 'url' : '/get/children/', |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
279 * 'data' : function (node) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
280 * return { 'id' : node.id }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
281 * } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
282 * } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
283 * }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
284 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
285 * // direct data |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
286 * $('#tree').jstree({ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
287 * 'core' : { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
288 * 'data' : [ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
289 * 'Simple root node', |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
290 * { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
291 * 'id' : 'node_2', |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
292 * 'text' : 'Root node with options', |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
293 * 'state' : { 'opened' : true, 'selected' : true }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
294 * 'children' : [ { 'text' : 'Child 1' }, 'Child 2'] |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
295 * } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
296 * ] |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
297 * } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
298 * }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
299 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
300 * // function |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
301 * $('#tree').jstree({ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
302 * 'core' : { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
303 * 'data' : function (obj, callback) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
304 * callback.call(this, ['Root 1', 'Root 2']); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
305 * } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
306 * }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
307 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
308 * @name $.jstree.defaults.core.data |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
309 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
310 data : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
311 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
312 * configure the various strings used throughout the tree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
313 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
314 * You can use an object where the key is the string you need to replace and the value is your replacement. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
315 * Another option is to specify a function which will be called with an argument of the needed string and should return the replacement. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
316 * If left as `false` no replacement is made. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
317 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
318 * __Examples__ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
319 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
320 * $('#tree').jstree({ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
321 * 'core' : { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
322 * 'strings' : { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
323 * 'Loading ...' : 'Please wait ...' |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
324 * } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
325 * } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
326 * }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
327 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
328 * @name $.jstree.defaults.core.strings |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
329 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
330 strings : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
331 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
332 * determines what happens when a user tries to modify the structure of the tree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
333 * If left as `false` all operations like create, rename, delete, move or copy are prevented. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
334 * You can set this to `true` to allow all interactions or use a function to have better control. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
335 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
336 * __Examples__ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
337 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
338 * $('#tree').jstree({ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
339 * 'core' : { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
340 * 'check_callback' : function (operation, node, node_parent, node_position, more) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
341 * // operation can be 'create_node', 'rename_node', 'delete_node', 'move_node', 'copy_node' or 'edit' |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
342 * // in case of 'rename_node' node_position is filled with the new node name |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
343 * return operation === 'rename_node' ? true : false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
344 * } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
345 * } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
346 * }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
347 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
348 * @name $.jstree.defaults.core.check_callback |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
349 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
350 check_callback : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
351 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
352 * a callback called with a single object parameter in the instance's scope when something goes wrong (operation prevented, ajax failed, etc) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
353 * @name $.jstree.defaults.core.error |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
354 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
355 error : $.noop, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
356 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
357 * the open / close animation duration in milliseconds - set this to `false` to disable the animation (default is `200`) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
358 * @name $.jstree.defaults.core.animation |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
359 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
360 animation : 200, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
361 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
362 * a boolean indicating if multiple nodes can be selected |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
363 * @name $.jstree.defaults.core.multiple |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
364 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
365 multiple : true, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
366 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
367 * theme configuration object |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
368 * @name $.jstree.defaults.core.themes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
369 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
370 themes : { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
371 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
372 * the name of the theme to use (if left as `false` the default theme is used) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
373 * @name $.jstree.defaults.core.themes.name |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
374 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
375 name : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
376 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
377 * the URL of the theme's CSS file, leave this as `false` if you have manually included the theme CSS (recommended). You can set this to `true` too which will try to autoload the theme. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
378 * @name $.jstree.defaults.core.themes.url |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
379 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
380 url : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
381 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
382 * the location of all jstree themes - only used if `url` is set to `true` |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
383 * @name $.jstree.defaults.core.themes.dir |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
384 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
385 dir : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
386 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
387 * a boolean indicating if connecting dots are shown |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
388 * @name $.jstree.defaults.core.themes.dots |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
389 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
390 dots : true, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
391 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
392 * a boolean indicating if node icons are shown |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
393 * @name $.jstree.defaults.core.themes.icons |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
394 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
395 icons : true, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
396 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
397 * a boolean indicating if node ellipsis should be shown - this only works with a fixed with on the container |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
398 * @name $.jstree.defaults.core.themes.ellipsis |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
399 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
400 ellipsis : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
401 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
402 * a boolean indicating if the tree background is striped |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
403 * @name $.jstree.defaults.core.themes.stripes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
404 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
405 stripes : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
406 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
407 * a string (or boolean `false`) specifying the theme variant to use (if the theme supports variants) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
408 * @name $.jstree.defaults.core.themes.variant |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
409 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
410 variant : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
411 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
412 * a boolean specifying if a reponsive version of the theme should kick in on smaller screens (if the theme supports it). Defaults to `false`. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
413 * @name $.jstree.defaults.core.themes.responsive |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
414 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
415 responsive : false |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
416 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
417 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
418 * if left as `true` all parents of all selected nodes will be opened once the tree loads (so that all selected nodes are visible to the user) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
419 * @name $.jstree.defaults.core.expand_selected_onload |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
420 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
421 expand_selected_onload : true, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
422 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
423 * if left as `true` web workers will be used to parse incoming JSON data where possible, so that the UI will not be blocked by large requests. Workers are however about 30% slower. Defaults to `true` |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
424 * @name $.jstree.defaults.core.worker |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
425 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
426 worker : true, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
427 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
428 * Force node text to plain text (and escape HTML). Defaults to `false` |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
429 * @name $.jstree.defaults.core.force_text |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
430 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
431 force_text : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
432 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
433 * Should the node should be toggled if the text is double clicked . Defaults to `true` |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
434 * @name $.jstree.defaults.core.dblclick_toggle |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
435 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
436 dblclick_toggle : true, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
437 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
438 * Should the loaded nodes be part of the state. Defaults to `false` |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
439 * @name $.jstree.defaults.core.loaded_state |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
440 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
441 loaded_state : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
442 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
443 * Should the last active node be focused when the tree container is blurred and the focused again. This helps working with screen readers. Defaults to `true` |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
444 * @name $.jstree.defaults.core.restore_focus |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
445 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
446 restore_focus : true, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
447 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
448 * Default keyboard shortcuts (an object where each key is the button name or combo - like 'enter', 'ctrl-space', 'p', etc and the value is the function to execute in the instance's scope) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
449 * @name $.jstree.defaults.core.keyboard |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
450 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
451 keyboard : { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
452 'ctrl-space': function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
453 // aria defines space only with Ctrl |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
454 e.type = "click"; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
455 $(e.currentTarget).trigger(e); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
456 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
457 'enter': function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
458 // enter |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
459 e.type = "click"; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
460 $(e.currentTarget).trigger(e); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
461 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
462 'left': function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
463 // left |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
464 e.preventDefault(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
465 if(this.is_open(e.currentTarget)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
466 this.close_node(e.currentTarget); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
467 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
468 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
469 var o = this.get_parent(e.currentTarget); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
470 if(o && o.id !== $.jstree.root) { this.get_node(o, true).children('.jstree-anchor').focus(); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
471 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
472 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
473 'up': function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
474 // up |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
475 e.preventDefault(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
476 var o = this.get_prev_dom(e.currentTarget); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
477 if(o && o.length) { o.children('.jstree-anchor').focus(); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
478 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
479 'right': function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
480 // right |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
481 e.preventDefault(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
482 if(this.is_closed(e.currentTarget)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
483 this.open_node(e.currentTarget, function (o) { this.get_node(o, true).children('.jstree-anchor').focus(); }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
484 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
485 else if (this.is_open(e.currentTarget)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
486 var o = this.get_node(e.currentTarget, true).children('.jstree-children')[0]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
487 if(o) { $(this._firstChild(o)).children('.jstree-anchor').focus(); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
488 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
489 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
490 'down': function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
491 // down |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
492 e.preventDefault(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
493 var o = this.get_next_dom(e.currentTarget); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
494 if(o && o.length) { o.children('.jstree-anchor').focus(); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
495 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
496 '*': function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
497 // aria defines * on numpad as open_all - not very common |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
498 this.open_all(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
499 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
500 'home': function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
501 // home |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
502 e.preventDefault(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
503 var o = this._firstChild(this.get_container_ul()[0]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
504 if(o) { $(o).children('.jstree-anchor').filter(':visible').focus(); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
505 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
506 'end': function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
507 // end |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
508 e.preventDefault(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
509 this.element.find('.jstree-anchor').filter(':visible').last().focus(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
510 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
511 'f2': function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
512 // f2 - safe to include - if check_callback is false it will fail |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
513 e.preventDefault(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
514 this.edit(e.currentTarget); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
515 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
516 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
517 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
518 $.jstree.core.prototype = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
519 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
520 * used to decorate an instance with a plugin. Used internally. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
521 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
522 * @name plugin(deco [, opts]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
523 * @param {String} deco the plugin to decorate with |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
524 * @param {Object} opts options for the plugin |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
525 * @return {jsTree} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
526 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
527 plugin : function (deco, opts) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
528 var Child = $.jstree.plugins[deco]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
529 if(Child) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
530 this._data[deco] = {}; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
531 Child.prototype = this; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
532 return new Child(opts, this); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
533 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
534 return this; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
535 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
536 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
537 * initialize the instance. Used internally. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
538 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
539 * @name init(el, optons) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
540 * @param {DOMElement|jQuery|String} el the element we are transforming |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
541 * @param {Object} options options for this instance |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
542 * @trigger init.jstree, loading.jstree, loaded.jstree, ready.jstree, changed.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
543 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
544 init : function (el, options) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
545 this._model = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
546 data : {}, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
547 changed : [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
548 force_full_redraw : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
549 redraw_timeout : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
550 default_state : { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
551 loaded : true, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
552 opened : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
553 selected : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
554 disabled : false |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
555 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
556 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
557 this._model.data[$.jstree.root] = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
558 id : $.jstree.root, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
559 parent : null, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
560 parents : [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
561 children : [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
562 children_d : [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
563 state : { loaded : false } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
564 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
565 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
566 this.element = $(el).addClass('jstree jstree-' + this._id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
567 this.settings = options; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
568 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
569 this._data.core.ready = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
570 this._data.core.loaded = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
571 this._data.core.rtl = (this.element.css("direction") === "rtl"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
572 this.element[this._data.core.rtl ? 'addClass' : 'removeClass']("jstree-rtl"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
573 this.element.attr('role','tree'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
574 if(this.settings.core.multiple) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
575 this.element.attr('aria-multiselectable', true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
576 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
577 if(!this.element.attr('tabindex')) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
578 this.element.attr('tabindex','0'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
579 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
580 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
581 this.bind(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
582 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
583 * triggered after all events are bound |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
584 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
585 * @name init.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
586 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
587 this.trigger("init"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
588 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
589 this._data.core.original_container_html = this.element.find(" > ul > li").clone(true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
590 this._data.core.original_container_html |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
591 .find("li").addBack() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
592 .contents().filter(function() { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
593 return this.nodeType === 3 && (!this.nodeValue || /^\s+$/.test(this.nodeValue)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
594 }) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
595 .remove(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
596 this.element.html("<"+"ul class='jstree-container-ul jstree-children' role='group'><"+"li id='j"+this._id+"_loading' class='jstree-initial-node jstree-loading jstree-leaf jstree-last' role='tree-item'><i class='jstree-icon jstree-ocl'></i><"+"a class='jstree-anchor' href='#'><i class='jstree-icon jstree-themeicon-hidden'></i>" + this.get_string("Loading ...") + "</a></li></ul>"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
597 this.element.attr('aria-activedescendant','j' + this._id + '_loading'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
598 this._data.core.li_height = this.get_container_ul().children("li").first().outerHeight() || 24; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
599 this._data.core.node = this._create_prototype_node(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
600 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
601 * triggered after the loading text is shown and before loading starts |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
602 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
603 * @name loading.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
604 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
605 this.trigger("loading"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
606 this.load_node($.jstree.root); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
607 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
608 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
609 * destroy an instance |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
610 * @name destroy() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
611 * @param {Boolean} keep_html if not set to `true` the container will be emptied, otherwise the current DOM elements will be kept intact |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
612 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
613 destroy : function (keep_html) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
614 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
615 * triggered before the tree is destroyed |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
616 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
617 * @name destroy.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
618 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
619 this.trigger("destroy"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
620 if(this._wrk) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
621 try { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
622 window.URL.revokeObjectURL(this._wrk); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
623 this._wrk = null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
624 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
625 catch (ignore) { } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
626 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
627 if(!keep_html) { this.element.empty(); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
628 this.teardown(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
629 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
630 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
631 * Create a prototype node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
632 * @name _create_prototype_node() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
633 * @return {DOMElement} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
634 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
635 _create_prototype_node : function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
636 var _node = document.createElement('LI'), _temp1, _temp2; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
637 _node.setAttribute('role', 'treeitem'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
638 _temp1 = document.createElement('I'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
639 _temp1.className = 'jstree-icon jstree-ocl'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
640 _temp1.setAttribute('role', 'presentation'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
641 _node.appendChild(_temp1); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
642 _temp1 = document.createElement('A'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
643 _temp1.className = 'jstree-anchor'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
644 _temp1.setAttribute('href','#'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
645 _temp1.setAttribute('tabindex','-1'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
646 _temp2 = document.createElement('I'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
647 _temp2.className = 'jstree-icon jstree-themeicon'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
648 _temp2.setAttribute('role', 'presentation'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
649 _temp1.appendChild(_temp2); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
650 _node.appendChild(_temp1); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
651 _temp1 = _temp2 = null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
652 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
653 return _node; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
654 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
655 _kbevent_to_func : function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
656 var keys = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
657 8: "Backspace", 9: "Tab", 13: "Return", 19: "Pause", 27: "Esc", |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
658 32: "Space", 33: "PageUp", 34: "PageDown", 35: "End", 36: "Home", |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
659 37: "Left", 38: "Up", 39: "Right", 40: "Down", 44: "Print", 45: "Insert", |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
660 46: "Delete", 96: "Numpad0", 97: "Numpad1", 98: "Numpad2", 99 : "Numpad3", |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
661 100: "Numpad4", 101: "Numpad5", 102: "Numpad6", 103: "Numpad7", |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
662 104: "Numpad8", 105: "Numpad9", '-13': "NumpadEnter", 112: "F1", |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
663 113: "F2", 114: "F3", 115: "F4", 116: "F5", 117: "F6", 118: "F7", |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
664 119: "F8", 120: "F9", 121: "F10", 122: "F11", 123: "F12", 144: "Numlock", |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
665 145: "Scrolllock", 16: 'Shift', 17: 'Ctrl', 18: 'Alt', |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
666 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5', |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
667 54: '6', 55: '7', 56: '8', 57: '9', 59: ';', 61: '=', 65: 'a', |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
668 66: 'b', 67: 'c', 68: 'd', 69: 'e', 70: 'f', 71: 'g', 72: 'h', |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
669 73: 'i', 74: 'j', 75: 'k', 76: 'l', 77: 'm', 78: 'n', 79: 'o', |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
670 80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't', 85: 'u', 86: 'v', |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
671 87: 'w', 88: 'x', 89: 'y', 90: 'z', 107: '+', 109: '-', 110: '.', |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
672 186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`', |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
673 219: '[', 220: '\\',221: ']', 222: "'", 111: '/', 106: '*', 173: '-' |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
674 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
675 var parts = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
676 if (e.ctrlKey) { parts.push('ctrl'); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
677 if (e.altKey) { parts.push('alt'); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
678 if (e.shiftKey) { parts.push('shift'); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
679 parts.push(keys[e.which] || e.which); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
680 parts = parts.sort().join('-').toLowerCase(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
681 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
682 var kb = this.settings.core.keyboard, i, tmp; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
683 for (i in kb) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
684 if (kb.hasOwnProperty(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
685 tmp = i; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
686 if (tmp !== '-' && tmp !== '+') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
687 tmp = tmp.replace('--', '-MINUS').replace('+-', '-MINUS').replace('++', '-PLUS').replace('-+', '-PLUS'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
688 tmp = tmp.split(/-|\+/).sort().join('-').replace('MINUS', '-').replace('PLUS', '+').toLowerCase(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
689 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
690 if (tmp === parts) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
691 return kb[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
692 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
693 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
694 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
695 return null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
696 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
697 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
698 * part of the destroying of an instance. Used internally. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
699 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
700 * @name teardown() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
701 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
702 teardown : function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
703 this.unbind(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
704 this.element |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
705 .removeClass('jstree') |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
706 .removeData('jstree') |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
707 .find("[class^='jstree']") |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
708 .addBack() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
709 .attr("class", function () { return this.className.replace(/jstree[^ ]*|$/ig,''); }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
710 this.element = null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
711 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
712 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
713 * bind all events. Used internally. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
714 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
715 * @name bind() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
716 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
717 bind : function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
718 var word = '', |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
719 tout = null, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
720 was_click = 0; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
721 this.element |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
722 .on("dblclick.jstree", function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
723 if(e.target.tagName && e.target.tagName.toLowerCase() === "input") { return true; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
724 if(document.selection && document.selection.empty) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
725 document.selection.empty(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
726 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
727 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
728 if(window.getSelection) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
729 var sel = window.getSelection(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
730 try { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
731 sel.removeAllRanges(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
732 sel.collapse(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
733 } catch (ignore) { } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
734 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
735 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
736 }) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
737 .on("mousedown.jstree", $.proxy(function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
738 if(e.target === this.element[0]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
739 e.preventDefault(); // prevent losing focus when clicking scroll arrows (FF, Chrome) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
740 was_click = +(new Date()); // ie does not allow to prevent losing focus |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
741 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
742 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
743 .on("mousedown.jstree", ".jstree-ocl", function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
744 e.preventDefault(); // prevent any node inside from losing focus when clicking the open/close icon |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
745 }) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
746 .on("click.jstree", ".jstree-ocl", $.proxy(function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
747 this.toggle_node(e.target); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
748 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
749 .on("dblclick.jstree", ".jstree-anchor", $.proxy(function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
750 if(e.target.tagName && e.target.tagName.toLowerCase() === "input") { return true; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
751 if(this.settings.core.dblclick_toggle) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
752 this.toggle_node(e.target); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
753 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
754 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
755 .on("click.jstree", ".jstree-anchor", $.proxy(function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
756 e.preventDefault(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
757 if(e.currentTarget !== document.activeElement) { $(e.currentTarget).focus(); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
758 this.activate_node(e.currentTarget, e); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
759 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
760 .on('keydown.jstree', '.jstree-anchor', $.proxy(function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
761 if(e.target.tagName && e.target.tagName.toLowerCase() === "input") { return true; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
762 if(this._data.core.rtl) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
763 if(e.which === 37) { e.which = 39; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
764 else if(e.which === 39) { e.which = 37; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
765 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
766 var f = this._kbevent_to_func(e); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
767 if (f) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
768 var r = f.call(this, e); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
769 if (r === false || r === true) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
770 return r; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
771 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
772 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
773 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
774 .on("load_node.jstree", $.proxy(function (e, data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
775 if(data.status) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
776 if(data.node.id === $.jstree.root && !this._data.core.loaded) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
777 this._data.core.loaded = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
778 if(this._firstChild(this.get_container_ul()[0])) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
779 this.element.attr('aria-activedescendant',this._firstChild(this.get_container_ul()[0]).id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
780 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
781 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
782 * triggered after the root node is loaded for the first time |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
783 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
784 * @name loaded.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
785 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
786 this.trigger("loaded"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
787 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
788 if(!this._data.core.ready) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
789 setTimeout($.proxy(function() { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
790 if(this.element && !this.get_container_ul().find('.jstree-loading').length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
791 this._data.core.ready = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
792 if(this._data.core.selected.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
793 if(this.settings.core.expand_selected_onload) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
794 var tmp = [], i, j; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
795 for(i = 0, j = this._data.core.selected.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
796 tmp = tmp.concat(this._model.data[this._data.core.selected[i]].parents); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
797 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
798 tmp = $.vakata.array_unique(tmp); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
799 for(i = 0, j = tmp.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
800 this.open_node(tmp[i], false, 0); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
801 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
802 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
803 this.trigger('changed', { 'action' : 'ready', 'selected' : this._data.core.selected }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
804 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
805 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
806 * triggered after all nodes are finished loading |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
807 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
808 * @name ready.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
809 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
810 this.trigger("ready"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
811 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
812 }, this), 0); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
813 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
814 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
815 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
816 // quick searching when the tree is focused |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
817 .on('keypress.jstree', $.proxy(function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
818 if(e.target.tagName && e.target.tagName.toLowerCase() === "input") { return true; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
819 if(tout) { clearTimeout(tout); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
820 tout = setTimeout(function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
821 word = ''; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
822 }, 500); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
823 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
824 var chr = String.fromCharCode(e.which).toLowerCase(), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
825 col = this.element.find('.jstree-anchor').filter(':visible'), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
826 ind = col.index(document.activeElement) || 0, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
827 end = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
828 word += chr; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
829 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
830 // match for whole word from current node down (including the current node) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
831 if(word.length > 1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
832 col.slice(ind).each($.proxy(function (i, v) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
833 if($(v).text().toLowerCase().indexOf(word) === 0) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
834 $(v).focus(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
835 end = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
836 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
837 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
838 }, this)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
839 if(end) { return; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
840 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
841 // match for whole word from the beginning of the tree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
842 col.slice(0, ind).each($.proxy(function (i, v) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
843 if($(v).text().toLowerCase().indexOf(word) === 0) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
844 $(v).focus(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
845 end = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
846 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
847 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
848 }, this)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
849 if(end) { return; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
850 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
851 // list nodes that start with that letter (only if word consists of a single char) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
852 if(new RegExp('^' + chr.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') + '+$').test(word)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
853 // search for the next node starting with that letter |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
854 col.slice(ind + 1).each($.proxy(function (i, v) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
855 if($(v).text().toLowerCase().charAt(0) === chr) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
856 $(v).focus(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
857 end = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
858 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
859 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
860 }, this)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
861 if(end) { return; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
862 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
863 // search from the beginning |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
864 col.slice(0, ind + 1).each($.proxy(function (i, v) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
865 if($(v).text().toLowerCase().charAt(0) === chr) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
866 $(v).focus(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
867 end = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
868 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
869 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
870 }, this)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
871 if(end) { return; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
872 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
873 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
874 // THEME RELATED |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
875 .on("init.jstree", $.proxy(function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
876 var s = this.settings.core.themes; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
877 this._data.core.themes.dots = s.dots; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
878 this._data.core.themes.stripes = s.stripes; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
879 this._data.core.themes.icons = s.icons; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
880 this._data.core.themes.ellipsis = s.ellipsis; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
881 this.set_theme(s.name || "default", s.url); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
882 this.set_theme_variant(s.variant); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
883 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
884 .on("loading.jstree", $.proxy(function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
885 this[ this._data.core.themes.dots ? "show_dots" : "hide_dots" ](); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
886 this[ this._data.core.themes.icons ? "show_icons" : "hide_icons" ](); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
887 this[ this._data.core.themes.stripes ? "show_stripes" : "hide_stripes" ](); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
888 this[ this._data.core.themes.ellipsis ? "show_ellipsis" : "hide_ellipsis" ](); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
889 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
890 .on('blur.jstree', '.jstree-anchor', $.proxy(function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
891 this._data.core.focused = null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
892 $(e.currentTarget).filter('.jstree-hovered').mouseleave(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
893 this.element.attr('tabindex', '0'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
894 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
895 .on('focus.jstree', '.jstree-anchor', $.proxy(function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
896 var tmp = this.get_node(e.currentTarget); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
897 if(tmp && tmp.id) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
898 this._data.core.focused = tmp.id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
899 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
900 this.element.find('.jstree-hovered').not(e.currentTarget).mouseleave(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
901 $(e.currentTarget).mouseenter(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
902 this.element.attr('tabindex', '-1'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
903 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
904 .on('focus.jstree', $.proxy(function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
905 if(+(new Date()) - was_click > 500 && !this._data.core.focused && this.settings.core.restore_focus) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
906 was_click = 0; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
907 var act = this.get_node(this.element.attr('aria-activedescendant'), true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
908 if(act) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
909 act.find('> .jstree-anchor').focus(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
910 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
911 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
912 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
913 .on('mouseenter.jstree', '.jstree-anchor', $.proxy(function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
914 this.hover_node(e.currentTarget); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
915 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
916 .on('mouseleave.jstree', '.jstree-anchor', $.proxy(function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
917 this.dehover_node(e.currentTarget); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
918 }, this)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
919 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
920 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
921 * part of the destroying of an instance. Used internally. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
922 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
923 * @name unbind() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
924 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
925 unbind : function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
926 this.element.off('.jstree'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
927 $(document).off('.jstree-' + this._id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
928 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
929 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
930 * trigger an event. Used internally. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
931 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
932 * @name trigger(ev [, data]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
933 * @param {String} ev the name of the event to trigger |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
934 * @param {Object} data additional data to pass with the event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
935 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
936 trigger : function (ev, data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
937 if(!data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
938 data = {}; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
939 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
940 data.instance = this; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
941 this.element.triggerHandler(ev.replace('.jstree','') + '.jstree', data); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
942 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
943 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
944 * returns the jQuery extended instance container |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
945 * @name get_container() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
946 * @return {jQuery} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
947 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
948 get_container : function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
949 return this.element; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
950 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
951 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
952 * returns the jQuery extended main UL node inside the instance container. Used internally. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
953 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
954 * @name get_container_ul() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
955 * @return {jQuery} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
956 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
957 get_container_ul : function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
958 return this.element.children(".jstree-children").first(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
959 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
960 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
961 * gets string replacements (localization). Used internally. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
962 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
963 * @name get_string(key) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
964 * @param {String} key |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
965 * @return {String} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
966 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
967 get_string : function (key) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
968 var a = this.settings.core.strings; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
969 if($.isFunction(a)) { return a.call(this, key); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
970 if(a && a[key]) { return a[key]; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
971 return key; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
972 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
973 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
974 * gets the first child of a DOM node. Used internally. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
975 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
976 * @name _firstChild(dom) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
977 * @param {DOMElement} dom |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
978 * @return {DOMElement} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
979 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
980 _firstChild : function (dom) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
981 dom = dom ? dom.firstChild : null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
982 while(dom !== null && dom.nodeType !== 1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
983 dom = dom.nextSibling; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
984 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
985 return dom; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
986 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
987 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
988 * gets the next sibling of a DOM node. Used internally. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
989 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
990 * @name _nextSibling(dom) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
991 * @param {DOMElement} dom |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
992 * @return {DOMElement} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
993 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
994 _nextSibling : function (dom) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
995 dom = dom ? dom.nextSibling : null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
996 while(dom !== null && dom.nodeType !== 1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
997 dom = dom.nextSibling; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
998 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
999 return dom; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1000 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1001 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1002 * gets the previous sibling of a DOM node. Used internally. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1003 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1004 * @name _previousSibling(dom) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1005 * @param {DOMElement} dom |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1006 * @return {DOMElement} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1007 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1008 _previousSibling : function (dom) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1009 dom = dom ? dom.previousSibling : null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1010 while(dom !== null && dom.nodeType !== 1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1011 dom = dom.previousSibling; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1012 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1013 return dom; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1014 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1015 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1016 * get the JSON representation of a node (or the actual jQuery extended DOM node) by using any input (child DOM element, ID string, selector, etc) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1017 * @name get_node(obj [, as_dom]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1018 * @param {mixed} obj |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1019 * @param {Boolean} as_dom |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1020 * @return {Object|jQuery} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1021 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1022 get_node : function (obj, as_dom) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1023 if(obj && obj.id) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1024 obj = obj.id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1025 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1026 var dom; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1027 try { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1028 if(this._model.data[obj]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1029 obj = this._model.data[obj]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1030 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1031 else if(typeof obj === "string" && this._model.data[obj.replace(/^#/, '')]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1032 obj = this._model.data[obj.replace(/^#/, '')]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1033 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1034 else if(typeof obj === "string" && (dom = $('#' + obj.replace($.jstree.idregex,'\\$&'), this.element)).length && this._model.data[dom.closest('.jstree-node').attr('id')]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1035 obj = this._model.data[dom.closest('.jstree-node').attr('id')]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1036 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1037 else if((dom = $(obj, this.element)).length && this._model.data[dom.closest('.jstree-node').attr('id')]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1038 obj = this._model.data[dom.closest('.jstree-node').attr('id')]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1039 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1040 else if((dom = $(obj, this.element)).length && dom.hasClass('jstree')) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1041 obj = this._model.data[$.jstree.root]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1042 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1043 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1044 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1045 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1046 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1047 if(as_dom) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1048 obj = obj.id === $.jstree.root ? this.element : $('#' + obj.id.replace($.jstree.idregex,'\\$&'), this.element); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1049 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1050 return obj; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1051 } catch (ex) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1052 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1053 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1054 * get the path to a node, either consisting of node texts, or of node IDs, optionally glued together (otherwise an array) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1055 * @name get_path(obj [, glue, ids]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1056 * @param {mixed} obj the node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1057 * @param {String} glue if you want the path as a string - pass the glue here (for example '/'), if a falsy value is supplied here, an array is returned |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1058 * @param {Boolean} ids if set to true build the path using ID, otherwise node text is used |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1059 * @return {mixed} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1060 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1061 get_path : function (obj, glue, ids) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1062 obj = obj.parents ? obj : this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1063 if(!obj || obj.id === $.jstree.root || !obj.parents) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1064 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1065 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1066 var i, j, p = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1067 p.push(ids ? obj.id : obj.text); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1068 for(i = 0, j = obj.parents.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1069 p.push(ids ? obj.parents[i] : this.get_text(obj.parents[i])); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1070 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1071 p = p.reverse().slice(1); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1072 return glue ? p.join(glue) : p; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1073 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1074 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1075 * get the next visible node that is below the `obj` node. If `strict` is set to `true` only sibling nodes are returned. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1076 * @name get_next_dom(obj [, strict]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1077 * @param {mixed} obj |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1078 * @param {Boolean} strict |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1079 * @return {jQuery} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1080 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1081 get_next_dom : function (obj, strict) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1082 var tmp; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1083 obj = this.get_node(obj, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1084 if(obj[0] === this.element[0]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1085 tmp = this._firstChild(this.get_container_ul()[0]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1086 while (tmp && tmp.offsetHeight === 0) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1087 tmp = this._nextSibling(tmp); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1088 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1089 return tmp ? $(tmp) : false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1090 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1091 if(!obj || !obj.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1092 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1093 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1094 if(strict) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1095 tmp = obj[0]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1096 do { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1097 tmp = this._nextSibling(tmp); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1098 } while (tmp && tmp.offsetHeight === 0); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1099 return tmp ? $(tmp) : false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1100 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1101 if(obj.hasClass("jstree-open")) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1102 tmp = this._firstChild(obj.children('.jstree-children')[0]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1103 while (tmp && tmp.offsetHeight === 0) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1104 tmp = this._nextSibling(tmp); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1105 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1106 if(tmp !== null) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1107 return $(tmp); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1108 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1109 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1110 tmp = obj[0]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1111 do { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1112 tmp = this._nextSibling(tmp); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1113 } while (tmp && tmp.offsetHeight === 0); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1114 if(tmp !== null) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1115 return $(tmp); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1116 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1117 return obj.parentsUntil(".jstree",".jstree-node").nextAll(".jstree-node:visible").first(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1118 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1119 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1120 * get the previous visible node that is above the `obj` node. If `strict` is set to `true` only sibling nodes are returned. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1121 * @name get_prev_dom(obj [, strict]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1122 * @param {mixed} obj |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1123 * @param {Boolean} strict |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1124 * @return {jQuery} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1125 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1126 get_prev_dom : function (obj, strict) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1127 var tmp; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1128 obj = this.get_node(obj, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1129 if(obj[0] === this.element[0]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1130 tmp = this.get_container_ul()[0].lastChild; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1131 while (tmp && tmp.offsetHeight === 0) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1132 tmp = this._previousSibling(tmp); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1133 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1134 return tmp ? $(tmp) : false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1135 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1136 if(!obj || !obj.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1137 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1138 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1139 if(strict) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1140 tmp = obj[0]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1141 do { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1142 tmp = this._previousSibling(tmp); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1143 } while (tmp && tmp.offsetHeight === 0); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1144 return tmp ? $(tmp) : false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1145 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1146 tmp = obj[0]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1147 do { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1148 tmp = this._previousSibling(tmp); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1149 } while (tmp && tmp.offsetHeight === 0); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1150 if(tmp !== null) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1151 obj = $(tmp); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1152 while(obj.hasClass("jstree-open")) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1153 obj = obj.children(".jstree-children").first().children(".jstree-node:visible:last"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1154 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1155 return obj; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1156 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1157 tmp = obj[0].parentNode.parentNode; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1158 return tmp && tmp.className && tmp.className.indexOf('jstree-node') !== -1 ? $(tmp) : false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1159 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1160 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1161 * get the parent ID of a node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1162 * @name get_parent(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1163 * @param {mixed} obj |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1164 * @return {String} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1165 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1166 get_parent : function (obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1167 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1168 if(!obj || obj.id === $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1169 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1170 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1171 return obj.parent; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1172 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1173 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1174 * get a jQuery collection of all the children of a node (node must be rendered), returns false on error |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1175 * @name get_children_dom(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1176 * @param {mixed} obj |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1177 * @return {jQuery} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1178 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1179 get_children_dom : function (obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1180 obj = this.get_node(obj, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1181 if(obj[0] === this.element[0]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1182 return this.get_container_ul().children(".jstree-node"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1183 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1184 if(!obj || !obj.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1185 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1186 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1187 return obj.children(".jstree-children").children(".jstree-node"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1188 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1189 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1190 * checks if a node has children |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1191 * @name is_parent(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1192 * @param {mixed} obj |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1193 * @return {Boolean} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1194 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1195 is_parent : function (obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1196 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1197 return obj && (obj.state.loaded === false || obj.children.length > 0); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1198 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1199 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1200 * checks if a node is loaded (its children are available) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1201 * @name is_loaded(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1202 * @param {mixed} obj |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1203 * @return {Boolean} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1204 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1205 is_loaded : function (obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1206 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1207 return obj && obj.state.loaded; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1208 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1209 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1210 * check if a node is currently loading (fetching children) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1211 * @name is_loading(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1212 * @param {mixed} obj |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1213 * @return {Boolean} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1214 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1215 is_loading : function (obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1216 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1217 return obj && obj.state && obj.state.loading; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1218 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1219 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1220 * check if a node is opened |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1221 * @name is_open(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1222 * @param {mixed} obj |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1223 * @return {Boolean} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1224 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1225 is_open : function (obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1226 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1227 return obj && obj.state.opened; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1228 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1229 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1230 * check if a node is in a closed state |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1231 * @name is_closed(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1232 * @param {mixed} obj |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1233 * @return {Boolean} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1234 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1235 is_closed : function (obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1236 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1237 return obj && this.is_parent(obj) && !obj.state.opened; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1238 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1239 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1240 * check if a node has no children |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1241 * @name is_leaf(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1242 * @param {mixed} obj |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1243 * @return {Boolean} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1244 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1245 is_leaf : function (obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1246 return !this.is_parent(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1247 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1248 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1249 * loads a node (fetches its children using the `core.data` setting). Multiple nodes can be passed to by using an array. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1250 * @name load_node(obj [, callback]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1251 * @param {mixed} obj |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1252 * @param {function} callback a function to be executed once loading is complete, the function is executed in the instance's scope and receives two arguments - the node and a boolean status |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1253 * @return {Boolean} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1254 * @trigger load_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1255 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1256 load_node : function (obj, callback) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1257 var k, l, i, j, c; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1258 if($.isArray(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1259 this._load_nodes(obj.slice(), callback); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1260 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1261 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1262 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1263 if(!obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1264 if(callback) { callback.call(this, obj, false); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1265 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1266 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1267 // if(obj.state.loading) { } // the node is already loading - just wait for it to load and invoke callback? but if called implicitly it should be loaded again? |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1268 if(obj.state.loaded) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1269 obj.state.loaded = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1270 for(i = 0, j = obj.parents.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1271 this._model.data[obj.parents[i]].children_d = $.vakata.array_filter(this._model.data[obj.parents[i]].children_d, function (v) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1272 return $.inArray(v, obj.children_d) === -1; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1273 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1274 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1275 for(k = 0, l = obj.children_d.length; k < l; k++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1276 if(this._model.data[obj.children_d[k]].state.selected) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1277 c = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1278 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1279 delete this._model.data[obj.children_d[k]]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1280 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1281 if (c) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1282 this._data.core.selected = $.vakata.array_filter(this._data.core.selected, function (v) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1283 return $.inArray(v, obj.children_d) === -1; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1284 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1285 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1286 obj.children = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1287 obj.children_d = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1288 if(c) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1289 this.trigger('changed', { 'action' : 'load_node', 'node' : obj, 'selected' : this._data.core.selected }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1290 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1291 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1292 obj.state.failed = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1293 obj.state.loading = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1294 this.get_node(obj, true).addClass("jstree-loading").attr('aria-busy',true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1295 this._load_node(obj, $.proxy(function (status) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1296 obj = this._model.data[obj.id]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1297 obj.state.loading = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1298 obj.state.loaded = status; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1299 obj.state.failed = !obj.state.loaded; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1300 var dom = this.get_node(obj, true), i = 0, j = 0, m = this._model.data, has_children = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1301 for(i = 0, j = obj.children.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1302 if(m[obj.children[i]] && !m[obj.children[i]].state.hidden) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1303 has_children = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1304 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1305 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1306 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1307 if(obj.state.loaded && dom && dom.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1308 dom.removeClass('jstree-closed jstree-open jstree-leaf'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1309 if (!has_children) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1310 dom.addClass('jstree-leaf'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1311 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1312 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1313 if (obj.id !== '#') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1314 dom.addClass(obj.state.opened ? 'jstree-open' : 'jstree-closed'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1315 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1316 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1317 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1318 dom.removeClass("jstree-loading").attr('aria-busy',false); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1319 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1320 * triggered after a node is loaded |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1321 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1322 * @name load_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1323 * @param {Object} node the node that was loading |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1324 * @param {Boolean} status was the node loaded successfully |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1325 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1326 this.trigger('load_node', { "node" : obj, "status" : status }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1327 if(callback) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1328 callback.call(this, obj, status); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1329 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1330 }, this)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1331 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1332 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1333 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1334 * load an array of nodes (will also load unavailable nodes as soon as the appear in the structure). Used internally. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1335 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1336 * @name _load_nodes(nodes [, callback]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1337 * @param {array} nodes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1338 * @param {function} callback a function to be executed once loading is complete, the function is executed in the instance's scope and receives one argument - the array passed to _load_nodes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1339 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1340 _load_nodes : function (nodes, callback, is_callback, force_reload) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1341 var r = true, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1342 c = function () { this._load_nodes(nodes, callback, true); }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1343 m = this._model.data, i, j, tmp = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1344 for(i = 0, j = nodes.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1345 if(m[nodes[i]] && ( (!m[nodes[i]].state.loaded && !m[nodes[i]].state.failed) || (!is_callback && force_reload) )) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1346 if(!this.is_loading(nodes[i])) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1347 this.load_node(nodes[i], c); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1348 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1349 r = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1350 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1351 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1352 if(r) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1353 for(i = 0, j = nodes.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1354 if(m[nodes[i]] && m[nodes[i]].state.loaded) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1355 tmp.push(nodes[i]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1356 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1357 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1358 if(callback && !callback.done) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1359 callback.call(this, tmp); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1360 callback.done = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1361 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1362 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1363 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1364 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1365 * loads all unloaded nodes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1366 * @name load_all([obj, callback]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1367 * @param {mixed} obj the node to load recursively, omit to load all nodes in the tree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1368 * @param {function} callback a function to be executed once loading all the nodes is complete, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1369 * @trigger load_all.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1370 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1371 load_all : function (obj, callback) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1372 if(!obj) { obj = $.jstree.root; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1373 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1374 if(!obj) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1375 var to_load = [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1376 m = this._model.data, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1377 c = m[obj.id].children_d, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1378 i, j; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1379 if(obj.state && !obj.state.loaded) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1380 to_load.push(obj.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1381 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1382 for(i = 0, j = c.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1383 if(m[c[i]] && m[c[i]].state && !m[c[i]].state.loaded) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1384 to_load.push(c[i]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1385 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1386 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1387 if(to_load.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1388 this._load_nodes(to_load, function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1389 this.load_all(obj, callback); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1390 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1391 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1392 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1393 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1394 * triggered after a load_all call completes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1395 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1396 * @name load_all.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1397 * @param {Object} node the recursively loaded node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1398 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1399 if(callback) { callback.call(this, obj); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1400 this.trigger('load_all', { "node" : obj }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1401 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1402 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1403 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1404 * handles the actual loading of a node. Used only internally. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1405 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1406 * @name _load_node(obj [, callback]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1407 * @param {mixed} obj |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1408 * @param {function} callback a function to be executed once loading is complete, the function is executed in the instance's scope and receives one argument - a boolean status |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1409 * @return {Boolean} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1410 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1411 _load_node : function (obj, callback) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1412 var s = this.settings.core.data, t; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1413 var notTextOrCommentNode = function notTextOrCommentNode () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1414 return this.nodeType !== 3 && this.nodeType !== 8; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1415 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1416 // use original HTML |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1417 if(!s) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1418 if(obj.id === $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1419 return this._append_html_data(obj, this._data.core.original_container_html.clone(true), function (status) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1420 callback.call(this, status); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1421 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1422 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1423 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1424 return callback.call(this, false); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1425 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1426 // return callback.call(this, obj.id === $.jstree.root ? this._append_html_data(obj, this._data.core.original_container_html.clone(true)) : false); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1427 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1428 if($.isFunction(s)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1429 return s.call(this, obj, $.proxy(function (d) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1430 if(d === false) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1431 callback.call(this, false); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1432 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1433 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1434 this[typeof d === 'string' ? '_append_html_data' : '_append_json_data'](obj, typeof d === 'string' ? $($.parseHTML(d)).filter(notTextOrCommentNode) : d, function (status) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1435 callback.call(this, status); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1436 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1437 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1438 // return d === false ? callback.call(this, false) : callback.call(this, this[typeof d === 'string' ? '_append_html_data' : '_append_json_data'](obj, typeof d === 'string' ? $(d) : d)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1439 }, this)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1440 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1441 if(typeof s === 'object') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1442 if(s.url) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1443 s = $.extend(true, {}, s); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1444 if($.isFunction(s.url)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1445 s.url = s.url.call(this, obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1446 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1447 if($.isFunction(s.data)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1448 s.data = s.data.call(this, obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1449 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1450 return $.ajax(s) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1451 .done($.proxy(function (d,t,x) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1452 var type = x.getResponseHeader('Content-Type'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1453 if((type && type.indexOf('json') !== -1) || typeof d === "object") { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1454 return this._append_json_data(obj, d, function (status) { callback.call(this, status); }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1455 //return callback.call(this, this._append_json_data(obj, d)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1456 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1457 if((type && type.indexOf('html') !== -1) || typeof d === "string") { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1458 return this._append_html_data(obj, $($.parseHTML(d)).filter(notTextOrCommentNode), function (status) { callback.call(this, status); }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1459 // return callback.call(this, this._append_html_data(obj, $(d))); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1460 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1461 this._data.core.last_error = { 'error' : 'ajax', 'plugin' : 'core', 'id' : 'core_04', 'reason' : 'Could not load node', 'data' : JSON.stringify({ 'id' : obj.id, 'xhr' : x }) }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1462 this.settings.core.error.call(this, this._data.core.last_error); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1463 return callback.call(this, false); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1464 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1465 .fail($.proxy(function (f) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1466 this._data.core.last_error = { 'error' : 'ajax', 'plugin' : 'core', 'id' : 'core_04', 'reason' : 'Could not load node', 'data' : JSON.stringify({ 'id' : obj.id, 'xhr' : f }) }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1467 callback.call(this, false); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1468 this.settings.core.error.call(this, this._data.core.last_error); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1469 }, this)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1470 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1471 if ($.isArray(s)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1472 t = $.extend(true, [], s); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1473 } else if ($.isPlainObject(s)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1474 t = $.extend(true, {}, s); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1475 } else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1476 t = s; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1477 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1478 if(obj.id === $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1479 return this._append_json_data(obj, t, function (status) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1480 callback.call(this, status); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1481 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1482 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1483 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1484 this._data.core.last_error = { 'error' : 'nodata', 'plugin' : 'core', 'id' : 'core_05', 'reason' : 'Could not load node', 'data' : JSON.stringify({ 'id' : obj.id }) }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1485 this.settings.core.error.call(this, this._data.core.last_error); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1486 return callback.call(this, false); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1487 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1488 //return callback.call(this, (obj.id === $.jstree.root ? this._append_json_data(obj, t) : false) ); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1489 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1490 if(typeof s === 'string') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1491 if(obj.id === $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1492 return this._append_html_data(obj, $($.parseHTML(s)).filter(notTextOrCommentNode), function (status) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1493 callback.call(this, status); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1494 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1495 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1496 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1497 this._data.core.last_error = { 'error' : 'nodata', 'plugin' : 'core', 'id' : 'core_06', 'reason' : 'Could not load node', 'data' : JSON.stringify({ 'id' : obj.id }) }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1498 this.settings.core.error.call(this, this._data.core.last_error); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1499 return callback.call(this, false); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1500 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1501 //return callback.call(this, (obj.id === $.jstree.root ? this._append_html_data(obj, $(s)) : false) ); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1502 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1503 return callback.call(this, false); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1504 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1505 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1506 * adds a node to the list of nodes to redraw. Used only internally. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1507 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1508 * @name _node_changed(obj [, callback]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1509 * @param {mixed} obj |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1510 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1511 _node_changed : function (obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1512 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1513 if (obj && $.inArray(obj.id, this._model.changed) === -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1514 this._model.changed.push(obj.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1515 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1516 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1517 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1518 * appends HTML content to the tree. Used internally. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1519 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1520 * @name _append_html_data(obj, data) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1521 * @param {mixed} obj the node to append to |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1522 * @param {String} data the HTML string to parse and append |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1523 * @trigger model.jstree, changed.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1524 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1525 _append_html_data : function (dom, data, cb) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1526 dom = this.get_node(dom); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1527 dom.children = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1528 dom.children_d = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1529 var dat = data.is('ul') ? data.children() : data, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1530 par = dom.id, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1531 chd = [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1532 dpc = [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1533 m = this._model.data, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1534 p = m[par], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1535 s = this._data.core.selected.length, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1536 tmp, i, j; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1537 dat.each($.proxy(function (i, v) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1538 tmp = this._parse_model_from_html($(v), par, p.parents.concat()); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1539 if(tmp) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1540 chd.push(tmp); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1541 dpc.push(tmp); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1542 if(m[tmp].children_d.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1543 dpc = dpc.concat(m[tmp].children_d); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1544 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1545 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1546 }, this)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1547 p.children = chd; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1548 p.children_d = dpc; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1549 for(i = 0, j = p.parents.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1550 m[p.parents[i]].children_d = m[p.parents[i]].children_d.concat(dpc); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1551 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1552 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1553 * triggered when new data is inserted to the tree model |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1554 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1555 * @name model.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1556 * @param {Array} nodes an array of node IDs |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1557 * @param {String} parent the parent ID of the nodes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1558 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1559 this.trigger('model', { "nodes" : dpc, 'parent' : par }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1560 if(par !== $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1561 this._node_changed(par); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1562 this.redraw(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1563 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1564 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1565 this.get_container_ul().children('.jstree-initial-node').remove(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1566 this.redraw(true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1567 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1568 if(this._data.core.selected.length !== s) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1569 this.trigger('changed', { 'action' : 'model', 'selected' : this._data.core.selected }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1570 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1571 cb.call(this, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1572 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1573 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1574 * appends JSON content to the tree. Used internally. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1575 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1576 * @name _append_json_data(obj, data) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1577 * @param {mixed} obj the node to append to |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1578 * @param {String} data the JSON object to parse and append |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1579 * @param {Boolean} force_processing internal param - do not set |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1580 * @trigger model.jstree, changed.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1581 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1582 _append_json_data : function (dom, data, cb, force_processing) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1583 if(this.element === null) { return; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1584 dom = this.get_node(dom); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1585 dom.children = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1586 dom.children_d = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1587 // *%$@!!! |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1588 if(data.d) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1589 data = data.d; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1590 if(typeof data === "string") { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1591 data = JSON.parse(data); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1592 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1593 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1594 if(!$.isArray(data)) { data = [data]; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1595 var w = null, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1596 args = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1597 'df' : this._model.default_state, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1598 'dat' : data, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1599 'par' : dom.id, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1600 'm' : this._model.data, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1601 't_id' : this._id, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1602 't_cnt' : this._cnt, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1603 'sel' : this._data.core.selected |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1604 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1605 func = function (data, undefined) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1606 if(data.data) { data = data.data; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1607 var dat = data.dat, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1608 par = data.par, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1609 chd = [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1610 dpc = [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1611 add = [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1612 df = data.df, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1613 t_id = data.t_id, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1614 t_cnt = data.t_cnt, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1615 m = data.m, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1616 p = m[par], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1617 sel = data.sel, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1618 tmp, i, j, rslt, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1619 parse_flat = function (d, p, ps) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1620 if(!ps) { ps = []; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1621 else { ps = ps.concat(); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1622 if(p) { ps.unshift(p); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1623 var tid = d.id.toString(), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1624 i, j, c, e, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1625 tmp = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1626 id : tid, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1627 text : d.text || '', |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1628 icon : d.icon !== undefined ? d.icon : true, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1629 parent : p, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1630 parents : ps, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1631 children : d.children || [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1632 children_d : d.children_d || [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1633 data : d.data, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1634 state : { }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1635 li_attr : { id : false }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1636 a_attr : { href : '#' }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1637 original : false |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1638 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1639 for(i in df) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1640 if(df.hasOwnProperty(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1641 tmp.state[i] = df[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1642 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1643 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1644 if(d && d.data && d.data.jstree && d.data.jstree.icon) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1645 tmp.icon = d.data.jstree.icon; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1646 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1647 if(tmp.icon === undefined || tmp.icon === null || tmp.icon === "") { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1648 tmp.icon = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1649 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1650 if(d && d.data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1651 tmp.data = d.data; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1652 if(d.data.jstree) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1653 for(i in d.data.jstree) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1654 if(d.data.jstree.hasOwnProperty(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1655 tmp.state[i] = d.data.jstree[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1656 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1657 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1658 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1659 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1660 if(d && typeof d.state === 'object') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1661 for (i in d.state) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1662 if(d.state.hasOwnProperty(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1663 tmp.state[i] = d.state[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1664 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1665 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1666 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1667 if(d && typeof d.li_attr === 'object') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1668 for (i in d.li_attr) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1669 if(d.li_attr.hasOwnProperty(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1670 tmp.li_attr[i] = d.li_attr[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1671 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1672 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1673 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1674 if(!tmp.li_attr.id) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1675 tmp.li_attr.id = tid; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1676 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1677 if(d && typeof d.a_attr === 'object') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1678 for (i in d.a_attr) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1679 if(d.a_attr.hasOwnProperty(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1680 tmp.a_attr[i] = d.a_attr[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1681 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1682 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1683 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1684 if(d && d.children && d.children === true) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1685 tmp.state.loaded = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1686 tmp.children = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1687 tmp.children_d = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1688 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1689 m[tmp.id] = tmp; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1690 for(i = 0, j = tmp.children.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1691 c = parse_flat(m[tmp.children[i]], tmp.id, ps); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1692 e = m[c]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1693 tmp.children_d.push(c); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1694 if(e.children_d.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1695 tmp.children_d = tmp.children_d.concat(e.children_d); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1696 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1697 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1698 delete d.data; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1699 delete d.children; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1700 m[tmp.id].original = d; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1701 if(tmp.state.selected) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1702 add.push(tmp.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1703 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1704 return tmp.id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1705 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1706 parse_nest = function (d, p, ps) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1707 if(!ps) { ps = []; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1708 else { ps = ps.concat(); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1709 if(p) { ps.unshift(p); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1710 var tid = false, i, j, c, e, tmp; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1711 do { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1712 tid = 'j' + t_id + '_' + (++t_cnt); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1713 } while(m[tid]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1714 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1715 tmp = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1716 id : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1717 text : typeof d === 'string' ? d : '', |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1718 icon : typeof d === 'object' && d.icon !== undefined ? d.icon : true, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1719 parent : p, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1720 parents : ps, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1721 children : [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1722 children_d : [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1723 data : null, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1724 state : { }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1725 li_attr : { id : false }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1726 a_attr : { href : '#' }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1727 original : false |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1728 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1729 for(i in df) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1730 if(df.hasOwnProperty(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1731 tmp.state[i] = df[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1732 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1733 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1734 if(d && d.id) { tmp.id = d.id.toString(); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1735 if(d && d.text) { tmp.text = d.text; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1736 if(d && d.data && d.data.jstree && d.data.jstree.icon) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1737 tmp.icon = d.data.jstree.icon; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1738 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1739 if(tmp.icon === undefined || tmp.icon === null || tmp.icon === "") { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1740 tmp.icon = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1741 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1742 if(d && d.data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1743 tmp.data = d.data; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1744 if(d.data.jstree) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1745 for(i in d.data.jstree) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1746 if(d.data.jstree.hasOwnProperty(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1747 tmp.state[i] = d.data.jstree[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1748 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1749 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1750 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1751 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1752 if(d && typeof d.state === 'object') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1753 for (i in d.state) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1754 if(d.state.hasOwnProperty(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1755 tmp.state[i] = d.state[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1756 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1757 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1758 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1759 if(d && typeof d.li_attr === 'object') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1760 for (i in d.li_attr) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1761 if(d.li_attr.hasOwnProperty(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1762 tmp.li_attr[i] = d.li_attr[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1763 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1764 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1765 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1766 if(tmp.li_attr.id && !tmp.id) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1767 tmp.id = tmp.li_attr.id.toString(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1768 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1769 if(!tmp.id) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1770 tmp.id = tid; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1771 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1772 if(!tmp.li_attr.id) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1773 tmp.li_attr.id = tmp.id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1774 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1775 if(d && typeof d.a_attr === 'object') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1776 for (i in d.a_attr) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1777 if(d.a_attr.hasOwnProperty(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1778 tmp.a_attr[i] = d.a_attr[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1779 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1780 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1781 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1782 if(d && d.children && d.children.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1783 for(i = 0, j = d.children.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1784 c = parse_nest(d.children[i], tmp.id, ps); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1785 e = m[c]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1786 tmp.children.push(c); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1787 if(e.children_d.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1788 tmp.children_d = tmp.children_d.concat(e.children_d); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1789 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1790 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1791 tmp.children_d = tmp.children_d.concat(tmp.children); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1792 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1793 if(d && d.children && d.children === true) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1794 tmp.state.loaded = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1795 tmp.children = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1796 tmp.children_d = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1797 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1798 delete d.data; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1799 delete d.children; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1800 tmp.original = d; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1801 m[tmp.id] = tmp; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1802 if(tmp.state.selected) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1803 add.push(tmp.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1804 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1805 return tmp.id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1806 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1807 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1808 if(dat.length && dat[0].id !== undefined && dat[0].parent !== undefined) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1809 // Flat JSON support (for easy import from DB): |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1810 // 1) convert to object (foreach) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1811 for(i = 0, j = dat.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1812 if(!dat[i].children) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1813 dat[i].children = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1814 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1815 if(!dat[i].state) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1816 dat[i].state = {}; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1817 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1818 m[dat[i].id.toString()] = dat[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1819 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1820 // 2) populate children (foreach) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1821 for(i = 0, j = dat.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1822 if (!m[dat[i].parent.toString()]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1823 this._data.core.last_error = { 'error' : 'parse', 'plugin' : 'core', 'id' : 'core_07', 'reason' : 'Node with invalid parent', 'data' : JSON.stringify({ 'id' : dat[i].id.toString(), 'parent' : dat[i].parent.toString() }) }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1824 this.settings.core.error.call(this, this._data.core.last_error); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1825 continue; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1826 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1827 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1828 m[dat[i].parent.toString()].children.push(dat[i].id.toString()); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1829 // populate parent.children_d |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1830 p.children_d.push(dat[i].id.toString()); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1831 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1832 // 3) normalize && populate parents and children_d with recursion |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1833 for(i = 0, j = p.children.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1834 tmp = parse_flat(m[p.children[i]], par, p.parents.concat()); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1835 dpc.push(tmp); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1836 if(m[tmp].children_d.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1837 dpc = dpc.concat(m[tmp].children_d); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1838 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1839 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1840 for(i = 0, j = p.parents.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1841 m[p.parents[i]].children_d = m[p.parents[i]].children_d.concat(dpc); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1842 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1843 // ?) three_state selection - p.state.selected && t - (if three_state foreach(dat => ch) -> foreach(parents) if(parent.selected) child.selected = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1844 rslt = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1845 'cnt' : t_cnt, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1846 'mod' : m, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1847 'sel' : sel, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1848 'par' : par, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1849 'dpc' : dpc, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1850 'add' : add |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1851 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1852 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1853 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1854 for(i = 0, j = dat.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1855 tmp = parse_nest(dat[i], par, p.parents.concat()); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1856 if(tmp) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1857 chd.push(tmp); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1858 dpc.push(tmp); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1859 if(m[tmp].children_d.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1860 dpc = dpc.concat(m[tmp].children_d); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1861 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1862 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1863 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1864 p.children = chd; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1865 p.children_d = dpc; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1866 for(i = 0, j = p.parents.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1867 m[p.parents[i]].children_d = m[p.parents[i]].children_d.concat(dpc); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1868 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1869 rslt = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1870 'cnt' : t_cnt, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1871 'mod' : m, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1872 'sel' : sel, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1873 'par' : par, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1874 'dpc' : dpc, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1875 'add' : add |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1876 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1877 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1878 if(typeof window === 'undefined' || typeof window.document === 'undefined') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1879 postMessage(rslt); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1880 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1881 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1882 return rslt; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1883 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1884 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1885 rslt = function (rslt, worker) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1886 if(this.element === null) { return; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1887 this._cnt = rslt.cnt; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1888 var i, m = this._model.data; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1889 for (i in m) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1890 if (m.hasOwnProperty(i) && m[i].state && m[i].state.loading && rslt.mod[i]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1891 rslt.mod[i].state.loading = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1892 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1893 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1894 this._model.data = rslt.mod; // breaks the reference in load_node - careful |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1895 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1896 if(worker) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1897 var j, a = rslt.add, r = rslt.sel, s = this._data.core.selected.slice(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1898 m = this._model.data; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1899 // if selection was changed while calculating in worker |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1900 if(r.length !== s.length || $.vakata.array_unique(r.concat(s)).length !== r.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1901 // deselect nodes that are no longer selected |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1902 for(i = 0, j = r.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1903 if($.inArray(r[i], a) === -1 && $.inArray(r[i], s) === -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1904 m[r[i]].state.selected = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1905 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1906 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1907 // select nodes that were selected in the mean time |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1908 for(i = 0, j = s.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1909 if($.inArray(s[i], r) === -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1910 m[s[i]].state.selected = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1911 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1912 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1913 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1914 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1915 if(rslt.add.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1916 this._data.core.selected = this._data.core.selected.concat(rslt.add); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1917 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1918 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1919 this.trigger('model', { "nodes" : rslt.dpc, 'parent' : rslt.par }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1920 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1921 if(rslt.par !== $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1922 this._node_changed(rslt.par); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1923 this.redraw(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1924 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1925 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1926 // this.get_container_ul().children('.jstree-initial-node').remove(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1927 this.redraw(true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1928 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1929 if(rslt.add.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1930 this.trigger('changed', { 'action' : 'model', 'selected' : this._data.core.selected }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1931 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1932 cb.call(this, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1933 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1934 if(this.settings.core.worker && window.Blob && window.URL && window.Worker) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1935 try { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1936 if(this._wrk === null) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1937 this._wrk = window.URL.createObjectURL( |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1938 new window.Blob( |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1939 ['self.onmessage = ' + func.toString()], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1940 {type:"text/javascript"} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1941 ) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1942 ); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1943 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1944 if(!this._data.core.working || force_processing) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1945 this._data.core.working = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1946 w = new window.Worker(this._wrk); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1947 w.onmessage = $.proxy(function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1948 rslt.call(this, e.data, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1949 try { w.terminate(); w = null; } catch(ignore) { } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1950 if(this._data.core.worker_queue.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1951 this._append_json_data.apply(this, this._data.core.worker_queue.shift()); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1952 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1953 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1954 this._data.core.working = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1955 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1956 }, this); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1957 if(!args.par) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1958 if(this._data.core.worker_queue.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1959 this._append_json_data.apply(this, this._data.core.worker_queue.shift()); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1960 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1961 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1962 this._data.core.working = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1963 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1964 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1965 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1966 w.postMessage(args); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1967 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1968 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1969 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1970 this._data.core.worker_queue.push([dom, data, cb, true]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1971 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1972 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1973 catch(e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1974 rslt.call(this, func(args), false); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1975 if(this._data.core.worker_queue.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1976 this._append_json_data.apply(this, this._data.core.worker_queue.shift()); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1977 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1978 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1979 this._data.core.working = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1980 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1981 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1982 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1983 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1984 rslt.call(this, func(args), false); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1985 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1986 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1987 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1988 * parses a node from a jQuery object and appends them to the in memory tree model. Used internally. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1989 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1990 * @name _parse_model_from_html(d [, p, ps]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1991 * @param {jQuery} d the jQuery object to parse |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1992 * @param {String} p the parent ID |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1993 * @param {Array} ps list of all parents |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1994 * @return {String} the ID of the object added to the model |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1995 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1996 _parse_model_from_html : function (d, p, ps) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1997 if(!ps) { ps = []; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1998 else { ps = [].concat(ps); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
1999 if(p) { ps.unshift(p); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2000 var c, e, m = this._model.data, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2001 data = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2002 id : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2003 text : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2004 icon : true, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2005 parent : p, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2006 parents : ps, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2007 children : [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2008 children_d : [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2009 data : null, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2010 state : { }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2011 li_attr : { id : false }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2012 a_attr : { href : '#' }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2013 original : false |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2014 }, i, tmp, tid; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2015 for(i in this._model.default_state) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2016 if(this._model.default_state.hasOwnProperty(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2017 data.state[i] = this._model.default_state[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2018 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2019 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2020 tmp = $.vakata.attributes(d, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2021 $.each(tmp, function (i, v) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2022 v = $.trim(v); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2023 if(!v.length) { return true; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2024 data.li_attr[i] = v; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2025 if(i === 'id') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2026 data.id = v.toString(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2027 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2028 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2029 tmp = d.children('a').first(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2030 if(tmp.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2031 tmp = $.vakata.attributes(tmp, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2032 $.each(tmp, function (i, v) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2033 v = $.trim(v); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2034 if(v.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2035 data.a_attr[i] = v; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2036 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2037 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2038 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2039 tmp = d.children("a").first().length ? d.children("a").first().clone() : d.clone(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2040 tmp.children("ins, i, ul").remove(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2041 tmp = tmp.html(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2042 tmp = $('<div />').html(tmp); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2043 data.text = this.settings.core.force_text ? tmp.text() : tmp.html(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2044 tmp = d.data(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2045 data.data = tmp ? $.extend(true, {}, tmp) : null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2046 data.state.opened = d.hasClass('jstree-open'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2047 data.state.selected = d.children('a').hasClass('jstree-clicked'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2048 data.state.disabled = d.children('a').hasClass('jstree-disabled'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2049 if(data.data && data.data.jstree) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2050 for(i in data.data.jstree) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2051 if(data.data.jstree.hasOwnProperty(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2052 data.state[i] = data.data.jstree[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2053 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2054 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2055 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2056 tmp = d.children("a").children(".jstree-themeicon"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2057 if(tmp.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2058 data.icon = tmp.hasClass('jstree-themeicon-hidden') ? false : tmp.attr('rel'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2059 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2060 if(data.state.icon !== undefined) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2061 data.icon = data.state.icon; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2062 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2063 if(data.icon === undefined || data.icon === null || data.icon === "") { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2064 data.icon = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2065 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2066 tmp = d.children("ul").children("li"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2067 do { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2068 tid = 'j' + this._id + '_' + (++this._cnt); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2069 } while(m[tid]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2070 data.id = data.li_attr.id ? data.li_attr.id.toString() : tid; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2071 if(tmp.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2072 tmp.each($.proxy(function (i, v) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2073 c = this._parse_model_from_html($(v), data.id, ps); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2074 e = this._model.data[c]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2075 data.children.push(c); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2076 if(e.children_d.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2077 data.children_d = data.children_d.concat(e.children_d); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2078 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2079 }, this)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2080 data.children_d = data.children_d.concat(data.children); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2081 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2082 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2083 if(d.hasClass('jstree-closed')) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2084 data.state.loaded = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2085 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2086 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2087 if(data.li_attr['class']) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2088 data.li_attr['class'] = data.li_attr['class'].replace('jstree-closed','').replace('jstree-open',''); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2089 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2090 if(data.a_attr['class']) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2091 data.a_attr['class'] = data.a_attr['class'].replace('jstree-clicked','').replace('jstree-disabled',''); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2092 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2093 m[data.id] = data; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2094 if(data.state.selected) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2095 this._data.core.selected.push(data.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2096 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2097 return data.id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2098 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2099 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2100 * parses a node from a JSON object (used when dealing with flat data, which has no nesting of children, but has id and parent properties) and appends it to the in memory tree model. Used internally. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2101 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2102 * @name _parse_model_from_flat_json(d [, p, ps]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2103 * @param {Object} d the JSON object to parse |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2104 * @param {String} p the parent ID |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2105 * @param {Array} ps list of all parents |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2106 * @return {String} the ID of the object added to the model |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2107 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2108 _parse_model_from_flat_json : function (d, p, ps) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2109 if(!ps) { ps = []; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2110 else { ps = ps.concat(); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2111 if(p) { ps.unshift(p); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2112 var tid = d.id.toString(), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2113 m = this._model.data, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2114 df = this._model.default_state, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2115 i, j, c, e, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2116 tmp = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2117 id : tid, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2118 text : d.text || '', |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2119 icon : d.icon !== undefined ? d.icon : true, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2120 parent : p, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2121 parents : ps, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2122 children : d.children || [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2123 children_d : d.children_d || [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2124 data : d.data, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2125 state : { }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2126 li_attr : { id : false }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2127 a_attr : { href : '#' }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2128 original : false |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2129 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2130 for(i in df) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2131 if(df.hasOwnProperty(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2132 tmp.state[i] = df[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2133 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2134 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2135 if(d && d.data && d.data.jstree && d.data.jstree.icon) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2136 tmp.icon = d.data.jstree.icon; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2137 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2138 if(tmp.icon === undefined || tmp.icon === null || tmp.icon === "") { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2139 tmp.icon = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2140 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2141 if(d && d.data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2142 tmp.data = d.data; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2143 if(d.data.jstree) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2144 for(i in d.data.jstree) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2145 if(d.data.jstree.hasOwnProperty(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2146 tmp.state[i] = d.data.jstree[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2147 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2148 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2149 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2150 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2151 if(d && typeof d.state === 'object') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2152 for (i in d.state) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2153 if(d.state.hasOwnProperty(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2154 tmp.state[i] = d.state[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2155 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2156 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2157 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2158 if(d && typeof d.li_attr === 'object') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2159 for (i in d.li_attr) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2160 if(d.li_attr.hasOwnProperty(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2161 tmp.li_attr[i] = d.li_attr[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2162 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2163 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2164 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2165 if(!tmp.li_attr.id) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2166 tmp.li_attr.id = tid; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2167 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2168 if(d && typeof d.a_attr === 'object') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2169 for (i in d.a_attr) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2170 if(d.a_attr.hasOwnProperty(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2171 tmp.a_attr[i] = d.a_attr[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2172 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2173 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2174 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2175 if(d && d.children && d.children === true) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2176 tmp.state.loaded = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2177 tmp.children = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2178 tmp.children_d = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2179 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2180 m[tmp.id] = tmp; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2181 for(i = 0, j = tmp.children.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2182 c = this._parse_model_from_flat_json(m[tmp.children[i]], tmp.id, ps); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2183 e = m[c]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2184 tmp.children_d.push(c); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2185 if(e.children_d.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2186 tmp.children_d = tmp.children_d.concat(e.children_d); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2187 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2188 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2189 delete d.data; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2190 delete d.children; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2191 m[tmp.id].original = d; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2192 if(tmp.state.selected) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2193 this._data.core.selected.push(tmp.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2194 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2195 return tmp.id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2196 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2197 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2198 * parses a node from a JSON object and appends it to the in memory tree model. Used internally. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2199 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2200 * @name _parse_model_from_json(d [, p, ps]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2201 * @param {Object} d the JSON object to parse |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2202 * @param {String} p the parent ID |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2203 * @param {Array} ps list of all parents |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2204 * @return {String} the ID of the object added to the model |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2205 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2206 _parse_model_from_json : function (d, p, ps) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2207 if(!ps) { ps = []; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2208 else { ps = ps.concat(); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2209 if(p) { ps.unshift(p); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2210 var tid = false, i, j, c, e, m = this._model.data, df = this._model.default_state, tmp; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2211 do { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2212 tid = 'j' + this._id + '_' + (++this._cnt); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2213 } while(m[tid]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2214 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2215 tmp = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2216 id : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2217 text : typeof d === 'string' ? d : '', |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2218 icon : typeof d === 'object' && d.icon !== undefined ? d.icon : true, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2219 parent : p, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2220 parents : ps, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2221 children : [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2222 children_d : [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2223 data : null, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2224 state : { }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2225 li_attr : { id : false }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2226 a_attr : { href : '#' }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2227 original : false |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2228 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2229 for(i in df) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2230 if(df.hasOwnProperty(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2231 tmp.state[i] = df[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2232 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2233 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2234 if(d && d.id) { tmp.id = d.id.toString(); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2235 if(d && d.text) { tmp.text = d.text; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2236 if(d && d.data && d.data.jstree && d.data.jstree.icon) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2237 tmp.icon = d.data.jstree.icon; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2238 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2239 if(tmp.icon === undefined || tmp.icon === null || tmp.icon === "") { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2240 tmp.icon = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2241 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2242 if(d && d.data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2243 tmp.data = d.data; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2244 if(d.data.jstree) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2245 for(i in d.data.jstree) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2246 if(d.data.jstree.hasOwnProperty(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2247 tmp.state[i] = d.data.jstree[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2248 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2249 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2250 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2251 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2252 if(d && typeof d.state === 'object') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2253 for (i in d.state) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2254 if(d.state.hasOwnProperty(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2255 tmp.state[i] = d.state[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2256 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2257 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2258 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2259 if(d && typeof d.li_attr === 'object') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2260 for (i in d.li_attr) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2261 if(d.li_attr.hasOwnProperty(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2262 tmp.li_attr[i] = d.li_attr[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2263 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2264 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2265 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2266 if(tmp.li_attr.id && !tmp.id) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2267 tmp.id = tmp.li_attr.id.toString(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2268 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2269 if(!tmp.id) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2270 tmp.id = tid; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2271 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2272 if(!tmp.li_attr.id) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2273 tmp.li_attr.id = tmp.id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2274 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2275 if(d && typeof d.a_attr === 'object') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2276 for (i in d.a_attr) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2277 if(d.a_attr.hasOwnProperty(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2278 tmp.a_attr[i] = d.a_attr[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2279 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2280 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2281 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2282 if(d && d.children && d.children.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2283 for(i = 0, j = d.children.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2284 c = this._parse_model_from_json(d.children[i], tmp.id, ps); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2285 e = m[c]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2286 tmp.children.push(c); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2287 if(e.children_d.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2288 tmp.children_d = tmp.children_d.concat(e.children_d); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2289 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2290 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2291 tmp.children_d = tmp.children_d.concat(tmp.children); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2292 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2293 if(d && d.children && d.children === true) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2294 tmp.state.loaded = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2295 tmp.children = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2296 tmp.children_d = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2297 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2298 delete d.data; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2299 delete d.children; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2300 tmp.original = d; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2301 m[tmp.id] = tmp; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2302 if(tmp.state.selected) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2303 this._data.core.selected.push(tmp.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2304 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2305 return tmp.id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2306 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2307 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2308 * redraws all nodes that need to be redrawn. Used internally. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2309 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2310 * @name _redraw() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2311 * @trigger redraw.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2312 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2313 _redraw : function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2314 var nodes = this._model.force_full_redraw ? this._model.data[$.jstree.root].children.concat([]) : this._model.changed.concat([]), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2315 f = document.createElement('UL'), tmp, i, j, fe = this._data.core.focused; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2316 for(i = 0, j = nodes.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2317 tmp = this.redraw_node(nodes[i], true, this._model.force_full_redraw); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2318 if(tmp && this._model.force_full_redraw) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2319 f.appendChild(tmp); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2320 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2321 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2322 if(this._model.force_full_redraw) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2323 f.className = this.get_container_ul()[0].className; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2324 f.setAttribute('role','group'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2325 this.element.empty().append(f); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2326 //this.get_container_ul()[0].appendChild(f); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2327 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2328 if(fe !== null) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2329 tmp = this.get_node(fe, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2330 if(tmp && tmp.length && tmp.children('.jstree-anchor')[0] !== document.activeElement) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2331 tmp.children('.jstree-anchor').focus(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2332 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2333 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2334 this._data.core.focused = null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2335 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2336 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2337 this._model.force_full_redraw = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2338 this._model.changed = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2339 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2340 * triggered after nodes are redrawn |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2341 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2342 * @name redraw.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2343 * @param {array} nodes the redrawn nodes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2344 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2345 this.trigger('redraw', { "nodes" : nodes }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2346 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2347 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2348 * redraws all nodes that need to be redrawn or optionally - the whole tree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2349 * @name redraw([full]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2350 * @param {Boolean} full if set to `true` all nodes are redrawn. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2351 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2352 redraw : function (full) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2353 if(full) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2354 this._model.force_full_redraw = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2355 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2356 //if(this._model.redraw_timeout) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2357 // clearTimeout(this._model.redraw_timeout); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2358 //} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2359 //this._model.redraw_timeout = setTimeout($.proxy(this._redraw, this),0); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2360 this._redraw(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2361 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2362 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2363 * redraws a single node's children. Used internally. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2364 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2365 * @name draw_children(node) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2366 * @param {mixed} node the node whose children will be redrawn |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2367 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2368 draw_children : function (node) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2369 var obj = this.get_node(node), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2370 i = false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2371 j = false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2372 k = false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2373 d = document; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2374 if(!obj) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2375 if(obj.id === $.jstree.root) { return this.redraw(true); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2376 node = this.get_node(node, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2377 if(!node || !node.length) { return false; } // TODO: quick toggle |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2378 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2379 node.children('.jstree-children').remove(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2380 node = node[0]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2381 if(obj.children.length && obj.state.loaded) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2382 k = d.createElement('UL'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2383 k.setAttribute('role', 'group'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2384 k.className = 'jstree-children'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2385 for(i = 0, j = obj.children.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2386 k.appendChild(this.redraw_node(obj.children[i], true, true)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2387 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2388 node.appendChild(k); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2389 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2390 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2391 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2392 * redraws a single node. Used internally. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2393 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2394 * @name redraw_node(node, deep, is_callback, force_render) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2395 * @param {mixed} node the node to redraw |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2396 * @param {Boolean} deep should child nodes be redrawn too |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2397 * @param {Boolean} is_callback is this a recursion call |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2398 * @param {Boolean} force_render should children of closed parents be drawn anyway |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2399 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2400 redraw_node : function (node, deep, is_callback, force_render) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2401 var obj = this.get_node(node), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2402 par = false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2403 ind = false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2404 old = false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2405 i = false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2406 j = false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2407 k = false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2408 c = '', |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2409 d = document, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2410 m = this._model.data, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2411 f = false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2412 s = false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2413 tmp = null, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2414 t = 0, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2415 l = 0, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2416 has_children = false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2417 last_sibling = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2418 if(!obj) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2419 if(obj.id === $.jstree.root) { return this.redraw(true); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2420 deep = deep || obj.children.length === 0; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2421 node = !document.querySelector ? document.getElementById(obj.id) : this.element[0].querySelector('#' + ("0123456789".indexOf(obj.id[0]) !== -1 ? '\\3' + obj.id[0] + ' ' + obj.id.substr(1).replace($.jstree.idregex,'\\$&') : obj.id.replace($.jstree.idregex,'\\$&')) ); //, this.element); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2422 if(!node) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2423 deep = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2424 //node = d.createElement('LI'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2425 if(!is_callback) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2426 par = obj.parent !== $.jstree.root ? $('#' + obj.parent.replace($.jstree.idregex,'\\$&'), this.element)[0] : null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2427 if(par !== null && (!par || !m[obj.parent].state.opened)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2428 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2429 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2430 ind = $.inArray(obj.id, par === null ? m[$.jstree.root].children : m[obj.parent].children); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2431 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2432 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2433 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2434 node = $(node); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2435 if(!is_callback) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2436 par = node.parent().parent()[0]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2437 if(par === this.element[0]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2438 par = null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2439 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2440 ind = node.index(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2441 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2442 // m[obj.id].data = node.data(); // use only node's data, no need to touch jquery storage |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2443 if(!deep && obj.children.length && !node.children('.jstree-children').length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2444 deep = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2445 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2446 if(!deep) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2447 old = node.children('.jstree-children')[0]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2448 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2449 f = node.children('.jstree-anchor')[0] === document.activeElement; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2450 node.remove(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2451 //node = d.createElement('LI'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2452 //node = node[0]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2453 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2454 node = this._data.core.node.cloneNode(true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2455 // node is DOM, deep is boolean |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2456 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2457 c = 'jstree-node '; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2458 for(i in obj.li_attr) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2459 if(obj.li_attr.hasOwnProperty(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2460 if(i === 'id') { continue; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2461 if(i !== 'class') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2462 node.setAttribute(i, obj.li_attr[i]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2463 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2464 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2465 c += obj.li_attr[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2466 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2467 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2468 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2469 if(!obj.a_attr.id) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2470 obj.a_attr.id = obj.id + '_anchor'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2471 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2472 node.setAttribute('aria-selected', !!obj.state.selected); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2473 node.setAttribute('aria-level', obj.parents.length); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2474 node.setAttribute('aria-labelledby', obj.a_attr.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2475 if(obj.state.disabled) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2476 node.setAttribute('aria-disabled', true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2477 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2478 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2479 for(i = 0, j = obj.children.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2480 if(!m[obj.children[i]].state.hidden) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2481 has_children = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2482 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2483 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2484 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2485 if(obj.parent !== null && m[obj.parent] && !obj.state.hidden) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2486 i = $.inArray(obj.id, m[obj.parent].children); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2487 last_sibling = obj.id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2488 if(i !== -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2489 i++; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2490 for(j = m[obj.parent].children.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2491 if(!m[m[obj.parent].children[i]].state.hidden) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2492 last_sibling = m[obj.parent].children[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2493 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2494 if(last_sibling !== obj.id) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2495 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2496 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2497 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2498 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2499 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2500 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2501 if(obj.state.hidden) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2502 c += ' jstree-hidden'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2503 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2504 if (obj.state.loading) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2505 c += ' jstree-loading'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2506 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2507 if(obj.state.loaded && !has_children) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2508 c += ' jstree-leaf'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2509 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2510 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2511 c += obj.state.opened && obj.state.loaded ? ' jstree-open' : ' jstree-closed'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2512 node.setAttribute('aria-expanded', (obj.state.opened && obj.state.loaded) ); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2513 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2514 if(last_sibling === obj.id) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2515 c += ' jstree-last'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2516 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2517 node.id = obj.id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2518 node.className = c; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2519 c = ( obj.state.selected ? ' jstree-clicked' : '') + ( obj.state.disabled ? ' jstree-disabled' : ''); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2520 for(j in obj.a_attr) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2521 if(obj.a_attr.hasOwnProperty(j)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2522 if(j === 'href' && obj.a_attr[j] === '#') { continue; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2523 if(j !== 'class') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2524 node.childNodes[1].setAttribute(j, obj.a_attr[j]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2525 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2526 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2527 c += ' ' + obj.a_attr[j]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2528 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2529 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2530 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2531 if(c.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2532 node.childNodes[1].className = 'jstree-anchor ' + c; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2533 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2534 if((obj.icon && obj.icon !== true) || obj.icon === false) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2535 if(obj.icon === false) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2536 node.childNodes[1].childNodes[0].className += ' jstree-themeicon-hidden'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2537 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2538 else if(obj.icon.indexOf('/') === -1 && obj.icon.indexOf('.') === -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2539 node.childNodes[1].childNodes[0].className += ' ' + obj.icon + ' jstree-themeicon-custom'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2540 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2541 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2542 node.childNodes[1].childNodes[0].style.backgroundImage = 'url("'+obj.icon+'")'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2543 node.childNodes[1].childNodes[0].style.backgroundPosition = 'center center'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2544 node.childNodes[1].childNodes[0].style.backgroundSize = 'auto'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2545 node.childNodes[1].childNodes[0].className += ' jstree-themeicon-custom'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2546 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2547 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2548 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2549 if(this.settings.core.force_text) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2550 node.childNodes[1].appendChild(d.createTextNode(obj.text)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2551 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2552 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2553 node.childNodes[1].innerHTML += obj.text; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2554 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2555 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2556 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2557 if(deep && obj.children.length && (obj.state.opened || force_render) && obj.state.loaded) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2558 k = d.createElement('UL'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2559 k.setAttribute('role', 'group'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2560 k.className = 'jstree-children'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2561 for(i = 0, j = obj.children.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2562 k.appendChild(this.redraw_node(obj.children[i], deep, true)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2563 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2564 node.appendChild(k); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2565 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2566 if(old) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2567 node.appendChild(old); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2568 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2569 if(!is_callback) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2570 // append back using par / ind |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2571 if(!par) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2572 par = this.element[0]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2573 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2574 for(i = 0, j = par.childNodes.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2575 if(par.childNodes[i] && par.childNodes[i].className && par.childNodes[i].className.indexOf('jstree-children') !== -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2576 tmp = par.childNodes[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2577 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2578 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2579 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2580 if(!tmp) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2581 tmp = d.createElement('UL'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2582 tmp.setAttribute('role', 'group'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2583 tmp.className = 'jstree-children'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2584 par.appendChild(tmp); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2585 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2586 par = tmp; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2587 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2588 if(ind < par.childNodes.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2589 par.insertBefore(node, par.childNodes[ind]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2590 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2591 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2592 par.appendChild(node); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2593 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2594 if(f) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2595 t = this.element[0].scrollTop; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2596 l = this.element[0].scrollLeft; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2597 node.childNodes[1].focus(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2598 this.element[0].scrollTop = t; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2599 this.element[0].scrollLeft = l; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2600 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2601 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2602 if(obj.state.opened && !obj.state.loaded) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2603 obj.state.opened = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2604 setTimeout($.proxy(function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2605 this.open_node(obj.id, false, 0); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2606 }, this), 0); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2607 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2608 return node; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2609 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2610 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2611 * opens a node, revaling its children. If the node is not loaded it will be loaded and opened once ready. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2612 * @name open_node(obj [, callback, animation]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2613 * @param {mixed} obj the node to open |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2614 * @param {Function} callback a function to execute once the node is opened |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2615 * @param {Number} animation the animation duration in milliseconds when opening the node (overrides the `core.animation` setting). Use `false` for no animation. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2616 * @trigger open_node.jstree, after_open.jstree, before_open.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2617 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2618 open_node : function (obj, callback, animation) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2619 var t1, t2, d, t; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2620 if($.isArray(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2621 obj = obj.slice(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2622 for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2623 this.open_node(obj[t1], callback, animation); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2624 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2625 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2626 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2627 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2628 if(!obj || obj.id === $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2629 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2630 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2631 animation = animation === undefined ? this.settings.core.animation : animation; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2632 if(!this.is_closed(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2633 if(callback) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2634 callback.call(this, obj, false); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2635 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2636 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2637 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2638 if(!this.is_loaded(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2639 if(this.is_loading(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2640 return setTimeout($.proxy(function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2641 this.open_node(obj, callback, animation); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2642 }, this), 500); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2643 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2644 this.load_node(obj, function (o, ok) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2645 return ok ? this.open_node(o, callback, animation) : (callback ? callback.call(this, o, false) : false); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2646 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2647 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2648 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2649 d = this.get_node(obj, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2650 t = this; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2651 if(d.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2652 if(animation && d.children(".jstree-children").length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2653 d.children(".jstree-children").stop(true, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2654 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2655 if(obj.children.length && !this._firstChild(d.children('.jstree-children')[0])) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2656 this.draw_children(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2657 //d = this.get_node(obj, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2658 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2659 if(!animation) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2660 this.trigger('before_open', { "node" : obj }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2661 d[0].className = d[0].className.replace('jstree-closed', 'jstree-open'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2662 d[0].setAttribute("aria-expanded", true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2663 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2664 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2665 this.trigger('before_open', { "node" : obj }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2666 d |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2667 .children(".jstree-children").css("display","none").end() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2668 .removeClass("jstree-closed").addClass("jstree-open").attr("aria-expanded", true) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2669 .children(".jstree-children").stop(true, true) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2670 .slideDown(animation, function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2671 this.style.display = ""; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2672 if (t.element) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2673 t.trigger("after_open", { "node" : obj }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2674 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2675 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2676 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2677 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2678 obj.state.opened = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2679 if(callback) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2680 callback.call(this, obj, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2681 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2682 if(!d.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2683 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2684 * triggered when a node is about to be opened (if the node is supposed to be in the DOM, it will be, but it won't be visible yet) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2685 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2686 * @name before_open.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2687 * @param {Object} node the opened node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2688 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2689 this.trigger('before_open', { "node" : obj }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2690 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2691 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2692 * triggered when a node is opened (if there is an animation it will not be completed yet) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2693 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2694 * @name open_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2695 * @param {Object} node the opened node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2696 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2697 this.trigger('open_node', { "node" : obj }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2698 if(!animation || !d.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2699 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2700 * triggered when a node is opened and the animation is complete |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2701 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2702 * @name after_open.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2703 * @param {Object} node the opened node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2704 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2705 this.trigger("after_open", { "node" : obj }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2706 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2707 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2708 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2709 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2710 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2711 * opens every parent of a node (node should be loaded) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2712 * @name _open_to(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2713 * @param {mixed} obj the node to reveal |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2714 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2715 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2716 _open_to : function (obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2717 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2718 if(!obj || obj.id === $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2719 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2720 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2721 var i, j, p = obj.parents; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2722 for(i = 0, j = p.length; i < j; i+=1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2723 if(i !== $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2724 this.open_node(p[i], false, 0); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2725 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2726 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2727 return $('#' + obj.id.replace($.jstree.idregex,'\\$&'), this.element); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2728 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2729 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2730 * closes a node, hiding its children |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2731 * @name close_node(obj [, animation]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2732 * @param {mixed} obj the node to close |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2733 * @param {Number} animation the animation duration in milliseconds when closing the node (overrides the `core.animation` setting). Use `false` for no animation. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2734 * @trigger close_node.jstree, after_close.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2735 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2736 close_node : function (obj, animation) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2737 var t1, t2, t, d; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2738 if($.isArray(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2739 obj = obj.slice(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2740 for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2741 this.close_node(obj[t1], animation); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2742 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2743 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2744 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2745 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2746 if(!obj || obj.id === $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2747 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2748 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2749 if(this.is_closed(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2750 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2751 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2752 animation = animation === undefined ? this.settings.core.animation : animation; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2753 t = this; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2754 d = this.get_node(obj, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2755 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2756 obj.state.opened = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2757 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2758 * triggered when a node is closed (if there is an animation it will not be complete yet) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2759 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2760 * @name close_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2761 * @param {Object} node the closed node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2762 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2763 this.trigger('close_node',{ "node" : obj }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2764 if(!d.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2765 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2766 * triggered when a node is closed and the animation is complete |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2767 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2768 * @name after_close.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2769 * @param {Object} node the closed node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2770 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2771 this.trigger("after_close", { "node" : obj }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2772 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2773 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2774 if(!animation) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2775 d[0].className = d[0].className.replace('jstree-open', 'jstree-closed'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2776 d.attr("aria-expanded", false).children('.jstree-children').remove(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2777 this.trigger("after_close", { "node" : obj }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2778 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2779 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2780 d |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2781 .children(".jstree-children").attr("style","display:block !important").end() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2782 .removeClass("jstree-open").addClass("jstree-closed").attr("aria-expanded", false) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2783 .children(".jstree-children").stop(true, true).slideUp(animation, function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2784 this.style.display = ""; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2785 d.children('.jstree-children').remove(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2786 if (t.element) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2787 t.trigger("after_close", { "node" : obj }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2788 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2789 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2790 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2791 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2792 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2793 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2794 * toggles a node - closing it if it is open, opening it if it is closed |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2795 * @name toggle_node(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2796 * @param {mixed} obj the node to toggle |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2797 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2798 toggle_node : function (obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2799 var t1, t2; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2800 if($.isArray(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2801 obj = obj.slice(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2802 for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2803 this.toggle_node(obj[t1]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2804 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2805 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2806 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2807 if(this.is_closed(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2808 return this.open_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2809 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2810 if(this.is_open(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2811 return this.close_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2812 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2813 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2814 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2815 * opens all nodes within a node (or the tree), revaling their children. If the node is not loaded it will be loaded and opened once ready. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2816 * @name open_all([obj, animation, original_obj]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2817 * @param {mixed} obj the node to open recursively, omit to open all nodes in the tree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2818 * @param {Number} animation the animation duration in milliseconds when opening the nodes, the default is no animation |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2819 * @param {jQuery} reference to the node that started the process (internal use) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2820 * @trigger open_all.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2821 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2822 open_all : function (obj, animation, original_obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2823 if(!obj) { obj = $.jstree.root; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2824 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2825 if(!obj) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2826 var dom = obj.id === $.jstree.root ? this.get_container_ul() : this.get_node(obj, true), i, j, _this; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2827 if(!dom.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2828 for(i = 0, j = obj.children_d.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2829 if(this.is_closed(this._model.data[obj.children_d[i]])) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2830 this._model.data[obj.children_d[i]].state.opened = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2831 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2832 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2833 return this.trigger('open_all', { "node" : obj }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2834 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2835 original_obj = original_obj || dom; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2836 _this = this; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2837 dom = this.is_closed(obj) ? dom.find('.jstree-closed').addBack() : dom.find('.jstree-closed'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2838 dom.each(function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2839 _this.open_node( |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2840 this, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2841 function(node, status) { if(status && this.is_parent(node)) { this.open_all(node, animation, original_obj); } }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2842 animation || 0 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2843 ); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2844 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2845 if(original_obj.find('.jstree-closed').length === 0) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2846 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2847 * triggered when an `open_all` call completes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2848 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2849 * @name open_all.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2850 * @param {Object} node the opened node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2851 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2852 this.trigger('open_all', { "node" : this.get_node(original_obj) }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2853 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2854 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2855 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2856 * closes all nodes within a node (or the tree), revaling their children |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2857 * @name close_all([obj, animation]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2858 * @param {mixed} obj the node to close recursively, omit to close all nodes in the tree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2859 * @param {Number} animation the animation duration in milliseconds when closing the nodes, the default is no animation |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2860 * @trigger close_all.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2861 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2862 close_all : function (obj, animation) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2863 if(!obj) { obj = $.jstree.root; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2864 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2865 if(!obj) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2866 var dom = obj.id === $.jstree.root ? this.get_container_ul() : this.get_node(obj, true), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2867 _this = this, i, j; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2868 if(dom.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2869 dom = this.is_open(obj) ? dom.find('.jstree-open').addBack() : dom.find('.jstree-open'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2870 $(dom.get().reverse()).each(function () { _this.close_node(this, animation || 0); }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2871 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2872 for(i = 0, j = obj.children_d.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2873 this._model.data[obj.children_d[i]].state.opened = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2874 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2875 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2876 * triggered when an `close_all` call completes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2877 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2878 * @name close_all.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2879 * @param {Object} node the closed node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2880 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2881 this.trigger('close_all', { "node" : obj }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2882 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2883 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2884 * checks if a node is disabled (not selectable) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2885 * @name is_disabled(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2886 * @param {mixed} obj |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2887 * @return {Boolean} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2888 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2889 is_disabled : function (obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2890 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2891 return obj && obj.state && obj.state.disabled; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2892 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2893 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2894 * enables a node - so that it can be selected |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2895 * @name enable_node(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2896 * @param {mixed} obj the node to enable |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2897 * @trigger enable_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2898 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2899 enable_node : function (obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2900 var t1, t2; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2901 if($.isArray(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2902 obj = obj.slice(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2903 for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2904 this.enable_node(obj[t1]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2905 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2906 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2907 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2908 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2909 if(!obj || obj.id === $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2910 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2911 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2912 obj.state.disabled = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2913 this.get_node(obj,true).children('.jstree-anchor').removeClass('jstree-disabled').attr('aria-disabled', false); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2914 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2915 * triggered when an node is enabled |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2916 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2917 * @name enable_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2918 * @param {Object} node the enabled node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2919 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2920 this.trigger('enable_node', { 'node' : obj }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2921 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2922 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2923 * disables a node - so that it can not be selected |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2924 * @name disable_node(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2925 * @param {mixed} obj the node to disable |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2926 * @trigger disable_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2927 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2928 disable_node : function (obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2929 var t1, t2; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2930 if($.isArray(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2931 obj = obj.slice(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2932 for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2933 this.disable_node(obj[t1]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2934 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2935 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2936 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2937 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2938 if(!obj || obj.id === $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2939 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2940 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2941 obj.state.disabled = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2942 this.get_node(obj,true).children('.jstree-anchor').addClass('jstree-disabled').attr('aria-disabled', true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2943 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2944 * triggered when an node is disabled |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2945 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2946 * @name disable_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2947 * @param {Object} node the disabled node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2948 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2949 this.trigger('disable_node', { 'node' : obj }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2950 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2951 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2952 * determines if a node is hidden |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2953 * @name is_hidden(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2954 * @param {mixed} obj the node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2955 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2956 is_hidden : function (obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2957 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2958 return obj.state.hidden === true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2959 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2960 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2961 * hides a node - it is still in the structure but will not be visible |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2962 * @name hide_node(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2963 * @param {mixed} obj the node to hide |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2964 * @param {Boolean} skip_redraw internal parameter controlling if redraw is called |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2965 * @trigger hide_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2966 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2967 hide_node : function (obj, skip_redraw) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2968 var t1, t2; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2969 if($.isArray(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2970 obj = obj.slice(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2971 for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2972 this.hide_node(obj[t1], true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2973 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2974 if (!skip_redraw) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2975 this.redraw(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2976 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2977 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2978 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2979 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2980 if(!obj || obj.id === $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2981 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2982 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2983 if(!obj.state.hidden) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2984 obj.state.hidden = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2985 this._node_changed(obj.parent); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2986 if(!skip_redraw) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2987 this.redraw(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2988 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2989 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2990 * triggered when an node is hidden |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2991 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2992 * @name hide_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2993 * @param {Object} node the hidden node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2994 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2995 this.trigger('hide_node', { 'node' : obj }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2996 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2997 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2998 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
2999 * shows a node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3000 * @name show_node(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3001 * @param {mixed} obj the node to show |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3002 * @param {Boolean} skip_redraw internal parameter controlling if redraw is called |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3003 * @trigger show_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3004 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3005 show_node : function (obj, skip_redraw) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3006 var t1, t2; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3007 if($.isArray(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3008 obj = obj.slice(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3009 for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3010 this.show_node(obj[t1], true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3011 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3012 if (!skip_redraw) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3013 this.redraw(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3014 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3015 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3016 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3017 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3018 if(!obj || obj.id === $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3019 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3020 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3021 if(obj.state.hidden) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3022 obj.state.hidden = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3023 this._node_changed(obj.parent); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3024 if(!skip_redraw) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3025 this.redraw(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3026 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3027 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3028 * triggered when an node is shown |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3029 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3030 * @name show_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3031 * @param {Object} node the shown node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3032 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3033 this.trigger('show_node', { 'node' : obj }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3034 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3035 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3036 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3037 * hides all nodes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3038 * @name hide_all() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3039 * @trigger hide_all.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3040 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3041 hide_all : function (skip_redraw) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3042 var i, m = this._model.data, ids = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3043 for(i in m) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3044 if(m.hasOwnProperty(i) && i !== $.jstree.root && !m[i].state.hidden) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3045 m[i].state.hidden = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3046 ids.push(i); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3047 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3048 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3049 this._model.force_full_redraw = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3050 if(!skip_redraw) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3051 this.redraw(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3052 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3053 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3054 * triggered when all nodes are hidden |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3055 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3056 * @name hide_all.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3057 * @param {Array} nodes the IDs of all hidden nodes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3058 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3059 this.trigger('hide_all', { 'nodes' : ids }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3060 return ids; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3061 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3062 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3063 * shows all nodes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3064 * @name show_all() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3065 * @trigger show_all.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3066 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3067 show_all : function (skip_redraw) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3068 var i, m = this._model.data, ids = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3069 for(i in m) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3070 if(m.hasOwnProperty(i) && i !== $.jstree.root && m[i].state.hidden) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3071 m[i].state.hidden = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3072 ids.push(i); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3073 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3074 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3075 this._model.force_full_redraw = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3076 if(!skip_redraw) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3077 this.redraw(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3078 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3079 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3080 * triggered when all nodes are shown |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3081 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3082 * @name show_all.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3083 * @param {Array} nodes the IDs of all shown nodes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3084 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3085 this.trigger('show_all', { 'nodes' : ids }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3086 return ids; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3087 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3088 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3089 * called when a node is selected by the user. Used internally. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3090 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3091 * @name activate_node(obj, e) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3092 * @param {mixed} obj the node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3093 * @param {Object} e the related event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3094 * @trigger activate_node.jstree, changed.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3095 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3096 activate_node : function (obj, e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3097 if(this.is_disabled(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3098 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3099 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3100 if(!e || typeof e !== 'object') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3101 e = {}; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3102 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3103 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3104 // ensure last_clicked is still in the DOM, make it fresh (maybe it was moved?) and make sure it is still selected, if not - make last_clicked the last selected node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3105 this._data.core.last_clicked = this._data.core.last_clicked && this._data.core.last_clicked.id !== undefined ? this.get_node(this._data.core.last_clicked.id) : null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3106 if(this._data.core.last_clicked && !this._data.core.last_clicked.state.selected) { this._data.core.last_clicked = null; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3107 if(!this._data.core.last_clicked && this._data.core.selected.length) { this._data.core.last_clicked = this.get_node(this._data.core.selected[this._data.core.selected.length - 1]); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3108 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3109 if(!this.settings.core.multiple || (!e.metaKey && !e.ctrlKey && !e.shiftKey) || (e.shiftKey && (!this._data.core.last_clicked || !this.get_parent(obj) || this.get_parent(obj) !== this._data.core.last_clicked.parent ) )) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3110 if(!this.settings.core.multiple && (e.metaKey || e.ctrlKey || e.shiftKey) && this.is_selected(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3111 this.deselect_node(obj, false, e); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3112 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3113 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3114 this.deselect_all(true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3115 this.select_node(obj, false, false, e); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3116 this._data.core.last_clicked = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3117 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3118 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3119 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3120 if(e.shiftKey) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3121 var o = this.get_node(obj).id, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3122 l = this._data.core.last_clicked.id, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3123 p = this.get_node(this._data.core.last_clicked.parent).children, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3124 c = false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3125 i, j; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3126 for(i = 0, j = p.length; i < j; i += 1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3127 // separate IFs work whem o and l are the same |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3128 if(p[i] === o) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3129 c = !c; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3130 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3131 if(p[i] === l) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3132 c = !c; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3133 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3134 if(!this.is_disabled(p[i]) && (c || p[i] === o || p[i] === l)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3135 if (!this.is_hidden(p[i])) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3136 this.select_node(p[i], true, false, e); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3137 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3138 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3139 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3140 this.deselect_node(p[i], true, e); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3141 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3142 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3143 this.trigger('changed', { 'action' : 'select_node', 'node' : this.get_node(obj), 'selected' : this._data.core.selected, 'event' : e }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3144 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3145 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3146 if(!this.is_selected(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3147 this.select_node(obj, false, false, e); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3148 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3149 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3150 this.deselect_node(obj, false, e); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3151 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3152 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3153 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3154 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3155 * triggered when an node is clicked or intercated with by the user |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3156 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3157 * @name activate_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3158 * @param {Object} node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3159 * @param {Object} event the ooriginal event (if any) which triggered the call (may be an empty object) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3160 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3161 this.trigger('activate_node', { 'node' : this.get_node(obj), 'event' : e }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3162 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3163 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3164 * applies the hover state on a node, called when a node is hovered by the user. Used internally. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3165 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3166 * @name hover_node(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3167 * @param {mixed} obj |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3168 * @trigger hover_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3169 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3170 hover_node : function (obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3171 obj = this.get_node(obj, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3172 if(!obj || !obj.length || obj.children('.jstree-hovered').length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3173 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3174 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3175 var o = this.element.find('.jstree-hovered'), t = this.element; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3176 if(o && o.length) { this.dehover_node(o); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3177 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3178 obj.children('.jstree-anchor').addClass('jstree-hovered'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3179 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3180 * triggered when an node is hovered |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3181 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3182 * @name hover_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3183 * @param {Object} node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3184 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3185 this.trigger('hover_node', { 'node' : this.get_node(obj) }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3186 setTimeout(function () { t.attr('aria-activedescendant', obj[0].id); }, 0); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3187 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3188 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3189 * removes the hover state from a nodecalled when a node is no longer hovered by the user. Used internally. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3190 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3191 * @name dehover_node(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3192 * @param {mixed} obj |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3193 * @trigger dehover_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3194 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3195 dehover_node : function (obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3196 obj = this.get_node(obj, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3197 if(!obj || !obj.length || !obj.children('.jstree-hovered').length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3198 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3199 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3200 obj.children('.jstree-anchor').removeClass('jstree-hovered'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3201 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3202 * triggered when an node is no longer hovered |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3203 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3204 * @name dehover_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3205 * @param {Object} node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3206 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3207 this.trigger('dehover_node', { 'node' : this.get_node(obj) }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3208 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3209 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3210 * select a node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3211 * @name select_node(obj [, supress_event, prevent_open]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3212 * @param {mixed} obj an array can be used to select multiple nodes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3213 * @param {Boolean} supress_event if set to `true` the `changed.jstree` event won't be triggered |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3214 * @param {Boolean} prevent_open if set to `true` parents of the selected node won't be opened |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3215 * @trigger select_node.jstree, changed.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3216 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3217 select_node : function (obj, supress_event, prevent_open, e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3218 var dom, t1, t2, th; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3219 if($.isArray(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3220 obj = obj.slice(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3221 for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3222 this.select_node(obj[t1], supress_event, prevent_open, e); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3223 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3224 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3225 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3226 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3227 if(!obj || obj.id === $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3228 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3229 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3230 dom = this.get_node(obj, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3231 if(!obj.state.selected) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3232 obj.state.selected = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3233 this._data.core.selected.push(obj.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3234 if(!prevent_open) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3235 dom = this._open_to(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3236 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3237 if(dom && dom.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3238 dom.attr('aria-selected', true).children('.jstree-anchor').addClass('jstree-clicked'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3239 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3240 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3241 * triggered when an node is selected |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3242 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3243 * @name select_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3244 * @param {Object} node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3245 * @param {Array} selected the current selection |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3246 * @param {Object} event the event (if any) that triggered this select_node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3247 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3248 this.trigger('select_node', { 'node' : obj, 'selected' : this._data.core.selected, 'event' : e }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3249 if(!supress_event) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3250 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3251 * triggered when selection changes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3252 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3253 * @name changed.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3254 * @param {Object} node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3255 * @param {Object} action the action that caused the selection to change |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3256 * @param {Array} selected the current selection |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3257 * @param {Object} event the event (if any) that triggered this changed event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3258 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3259 this.trigger('changed', { 'action' : 'select_node', 'node' : obj, 'selected' : this._data.core.selected, 'event' : e }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3260 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3261 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3262 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3263 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3264 * deselect a node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3265 * @name deselect_node(obj [, supress_event]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3266 * @param {mixed} obj an array can be used to deselect multiple nodes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3267 * @param {Boolean} supress_event if set to `true` the `changed.jstree` event won't be triggered |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3268 * @trigger deselect_node.jstree, changed.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3269 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3270 deselect_node : function (obj, supress_event, e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3271 var t1, t2, dom; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3272 if($.isArray(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3273 obj = obj.slice(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3274 for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3275 this.deselect_node(obj[t1], supress_event, e); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3276 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3277 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3278 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3279 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3280 if(!obj || obj.id === $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3281 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3282 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3283 dom = this.get_node(obj, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3284 if(obj.state.selected) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3285 obj.state.selected = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3286 this._data.core.selected = $.vakata.array_remove_item(this._data.core.selected, obj.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3287 if(dom.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3288 dom.attr('aria-selected', false).children('.jstree-anchor').removeClass('jstree-clicked'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3289 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3290 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3291 * triggered when an node is deselected |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3292 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3293 * @name deselect_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3294 * @param {Object} node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3295 * @param {Array} selected the current selection |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3296 * @param {Object} event the event (if any) that triggered this deselect_node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3297 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3298 this.trigger('deselect_node', { 'node' : obj, 'selected' : this._data.core.selected, 'event' : e }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3299 if(!supress_event) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3300 this.trigger('changed', { 'action' : 'deselect_node', 'node' : obj, 'selected' : this._data.core.selected, 'event' : e }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3301 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3302 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3303 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3304 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3305 * select all nodes in the tree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3306 * @name select_all([supress_event]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3307 * @param {Boolean} supress_event if set to `true` the `changed.jstree` event won't be triggered |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3308 * @trigger select_all.jstree, changed.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3309 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3310 select_all : function (supress_event) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3311 var tmp = this._data.core.selected.concat([]), i, j; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3312 this._data.core.selected = this._model.data[$.jstree.root].children_d.concat(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3313 for(i = 0, j = this._data.core.selected.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3314 if(this._model.data[this._data.core.selected[i]]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3315 this._model.data[this._data.core.selected[i]].state.selected = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3316 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3317 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3318 this.redraw(true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3319 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3320 * triggered when all nodes are selected |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3321 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3322 * @name select_all.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3323 * @param {Array} selected the current selection |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3324 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3325 this.trigger('select_all', { 'selected' : this._data.core.selected }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3326 if(!supress_event) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3327 this.trigger('changed', { 'action' : 'select_all', 'selected' : this._data.core.selected, 'old_selection' : tmp }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3328 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3329 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3330 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3331 * deselect all selected nodes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3332 * @name deselect_all([supress_event]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3333 * @param {Boolean} supress_event if set to `true` the `changed.jstree` event won't be triggered |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3334 * @trigger deselect_all.jstree, changed.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3335 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3336 deselect_all : function (supress_event) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3337 var tmp = this._data.core.selected.concat([]), i, j; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3338 for(i = 0, j = this._data.core.selected.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3339 if(this._model.data[this._data.core.selected[i]]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3340 this._model.data[this._data.core.selected[i]].state.selected = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3341 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3342 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3343 this._data.core.selected = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3344 this.element.find('.jstree-clicked').removeClass('jstree-clicked').parent().attr('aria-selected', false); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3345 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3346 * triggered when all nodes are deselected |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3347 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3348 * @name deselect_all.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3349 * @param {Object} node the previous selection |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3350 * @param {Array} selected the current selection |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3351 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3352 this.trigger('deselect_all', { 'selected' : this._data.core.selected, 'node' : tmp }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3353 if(!supress_event) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3354 this.trigger('changed', { 'action' : 'deselect_all', 'selected' : this._data.core.selected, 'old_selection' : tmp }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3355 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3356 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3357 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3358 * checks if a node is selected |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3359 * @name is_selected(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3360 * @param {mixed} obj |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3361 * @return {Boolean} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3362 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3363 is_selected : function (obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3364 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3365 if(!obj || obj.id === $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3366 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3367 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3368 return obj.state.selected; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3369 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3370 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3371 * get an array of all selected nodes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3372 * @name get_selected([full]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3373 * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3374 * @return {Array} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3375 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3376 get_selected : function (full) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3377 return full ? $.map(this._data.core.selected, $.proxy(function (i) { return this.get_node(i); }, this)) : this._data.core.selected.slice(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3378 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3379 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3380 * get an array of all top level selected nodes (ignoring children of selected nodes) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3381 * @name get_top_selected([full]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3382 * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3383 * @return {Array} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3384 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3385 get_top_selected : function (full) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3386 var tmp = this.get_selected(true), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3387 obj = {}, i, j, k, l; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3388 for(i = 0, j = tmp.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3389 obj[tmp[i].id] = tmp[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3390 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3391 for(i = 0, j = tmp.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3392 for(k = 0, l = tmp[i].children_d.length; k < l; k++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3393 if(obj[tmp[i].children_d[k]]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3394 delete obj[tmp[i].children_d[k]]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3395 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3396 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3397 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3398 tmp = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3399 for(i in obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3400 if(obj.hasOwnProperty(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3401 tmp.push(i); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3402 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3403 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3404 return full ? $.map(tmp, $.proxy(function (i) { return this.get_node(i); }, this)) : tmp; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3405 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3406 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3407 * get an array of all bottom level selected nodes (ignoring selected parents) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3408 * @name get_bottom_selected([full]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3409 * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3410 * @return {Array} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3411 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3412 get_bottom_selected : function (full) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3413 var tmp = this.get_selected(true), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3414 obj = [], i, j; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3415 for(i = 0, j = tmp.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3416 if(!tmp[i].children.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3417 obj.push(tmp[i].id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3418 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3419 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3420 return full ? $.map(obj, $.proxy(function (i) { return this.get_node(i); }, this)) : obj; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3421 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3422 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3423 * gets the current state of the tree so that it can be restored later with `set_state(state)`. Used internally. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3424 * @name get_state() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3425 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3426 * @return {Object} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3427 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3428 get_state : function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3429 var state = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3430 'core' : { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3431 'open' : [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3432 'loaded' : [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3433 'scroll' : { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3434 'left' : this.element.scrollLeft(), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3435 'top' : this.element.scrollTop() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3436 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3437 /*! |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3438 'themes' : { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3439 'name' : this.get_theme(), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3440 'icons' : this._data.core.themes.icons, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3441 'dots' : this._data.core.themes.dots |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3442 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3443 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3444 'selected' : [] |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3445 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3446 }, i; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3447 for(i in this._model.data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3448 if(this._model.data.hasOwnProperty(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3449 if(i !== $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3450 if(this._model.data[i].state.loaded && this.settings.core.loaded_state) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3451 state.core.loaded.push(i); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3452 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3453 if(this._model.data[i].state.opened) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3454 state.core.open.push(i); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3455 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3456 if(this._model.data[i].state.selected) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3457 state.core.selected.push(i); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3458 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3459 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3460 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3461 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3462 return state; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3463 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3464 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3465 * sets the state of the tree. Used internally. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3466 * @name set_state(state [, callback]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3467 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3468 * @param {Object} state the state to restore. Keep in mind this object is passed by reference and jstree will modify it. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3469 * @param {Function} callback an optional function to execute once the state is restored. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3470 * @trigger set_state.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3471 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3472 set_state : function (state, callback) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3473 if(state) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3474 if(state.core && state.core.selected && state.core.initial_selection === undefined) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3475 state.core.initial_selection = this._data.core.selected.concat([]).sort().join(','); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3476 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3477 if(state.core) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3478 var res, n, t, _this, i; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3479 if(state.core.loaded) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3480 if(!this.settings.core.loaded_state || !$.isArray(state.core.loaded) || !state.core.loaded.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3481 delete state.core.loaded; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3482 this.set_state(state, callback); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3483 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3484 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3485 this._load_nodes(state.core.loaded, function (nodes) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3486 delete state.core.loaded; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3487 this.set_state(state, callback); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3488 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3489 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3490 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3491 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3492 if(state.core.open) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3493 if(!$.isArray(state.core.open) || !state.core.open.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3494 delete state.core.open; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3495 this.set_state(state, callback); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3496 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3497 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3498 this._load_nodes(state.core.open, function (nodes) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3499 this.open_node(nodes, false, 0); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3500 delete state.core.open; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3501 this.set_state(state, callback); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3502 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3503 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3504 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3505 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3506 if(state.core.scroll) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3507 if(state.core.scroll && state.core.scroll.left !== undefined) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3508 this.element.scrollLeft(state.core.scroll.left); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3509 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3510 if(state.core.scroll && state.core.scroll.top !== undefined) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3511 this.element.scrollTop(state.core.scroll.top); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3512 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3513 delete state.core.scroll; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3514 this.set_state(state, callback); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3515 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3516 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3517 if(state.core.selected) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3518 _this = this; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3519 if (state.core.initial_selection === undefined || |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3520 state.core.initial_selection === this._data.core.selected.concat([]).sort().join(',') |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3521 ) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3522 this.deselect_all(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3523 $.each(state.core.selected, function (i, v) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3524 _this.select_node(v, false, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3525 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3526 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3527 delete state.core.initial_selection; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3528 delete state.core.selected; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3529 this.set_state(state, callback); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3530 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3531 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3532 for(i in state) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3533 if(state.hasOwnProperty(i) && i !== "core" && $.inArray(i, this.settings.plugins) === -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3534 delete state[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3535 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3536 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3537 if($.isEmptyObject(state.core)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3538 delete state.core; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3539 this.set_state(state, callback); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3540 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3541 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3542 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3543 if($.isEmptyObject(state)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3544 state = null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3545 if(callback) { callback.call(this); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3546 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3547 * triggered when a `set_state` call completes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3548 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3549 * @name set_state.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3550 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3551 this.trigger('set_state'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3552 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3553 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3554 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3555 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3556 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3557 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3558 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3559 * refreshes the tree - all nodes are reloaded with calls to `load_node`. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3560 * @name refresh() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3561 * @param {Boolean} skip_loading an option to skip showing the loading indicator |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3562 * @param {Mixed} forget_state if set to `true` state will not be reapplied, if set to a function (receiving the current state as argument) the result of that function will be used as state |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3563 * @trigger refresh.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3564 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3565 refresh : function (skip_loading, forget_state) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3566 this._data.core.state = forget_state === true ? {} : this.get_state(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3567 if(forget_state && $.isFunction(forget_state)) { this._data.core.state = forget_state.call(this, this._data.core.state); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3568 this._cnt = 0; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3569 this._model.data = {}; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3570 this._model.data[$.jstree.root] = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3571 id : $.jstree.root, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3572 parent : null, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3573 parents : [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3574 children : [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3575 children_d : [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3576 state : { loaded : false } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3577 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3578 this._data.core.selected = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3579 this._data.core.last_clicked = null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3580 this._data.core.focused = null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3581 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3582 var c = this.get_container_ul()[0].className; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3583 if(!skip_loading) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3584 this.element.html("<"+"ul class='"+c+"' role='group'><"+"li class='jstree-initial-node jstree-loading jstree-leaf jstree-last' role='treeitem' id='j"+this._id+"_loading'><i class='jstree-icon jstree-ocl'></i><"+"a class='jstree-anchor' href='#'><i class='jstree-icon jstree-themeicon-hidden'></i>" + this.get_string("Loading ...") + "</a></li></ul>"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3585 this.element.attr('aria-activedescendant','j'+this._id+'_loading'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3586 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3587 this.load_node($.jstree.root, function (o, s) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3588 if(s) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3589 this.get_container_ul()[0].className = c; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3590 if(this._firstChild(this.get_container_ul()[0])) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3591 this.element.attr('aria-activedescendant',this._firstChild(this.get_container_ul()[0]).id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3592 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3593 this.set_state($.extend(true, {}, this._data.core.state), function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3594 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3595 * triggered when a `refresh` call completes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3596 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3597 * @name refresh.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3598 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3599 this.trigger('refresh'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3600 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3601 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3602 this._data.core.state = null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3603 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3604 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3605 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3606 * refreshes a node in the tree (reload its children) all opened nodes inside that node are reloaded with calls to `load_node`. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3607 * @name refresh_node(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3608 * @param {mixed} obj the node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3609 * @trigger refresh_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3610 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3611 refresh_node : function (obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3612 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3613 if(!obj || obj.id === $.jstree.root) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3614 var opened = [], to_load = [], s = this._data.core.selected.concat([]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3615 to_load.push(obj.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3616 if(obj.state.opened === true) { opened.push(obj.id); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3617 this.get_node(obj, true).find('.jstree-open').each(function() { to_load.push(this.id); opened.push(this.id); }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3618 this._load_nodes(to_load, $.proxy(function (nodes) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3619 this.open_node(opened, false, 0); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3620 this.select_node(s); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3621 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3622 * triggered when a node is refreshed |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3623 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3624 * @name refresh_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3625 * @param {Object} node - the refreshed node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3626 * @param {Array} nodes - an array of the IDs of the nodes that were reloaded |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3627 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3628 this.trigger('refresh_node', { 'node' : obj, 'nodes' : nodes }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3629 }, this), false, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3630 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3631 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3632 * set (change) the ID of a node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3633 * @name set_id(obj, id) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3634 * @param {mixed} obj the node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3635 * @param {String} id the new ID |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3636 * @return {Boolean} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3637 * @trigger set_id.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3638 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3639 set_id : function (obj, id) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3640 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3641 if(!obj || obj.id === $.jstree.root) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3642 var i, j, m = this._model.data, old = obj.id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3643 id = id.toString(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3644 // update parents (replace current ID with new one in children and children_d) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3645 m[obj.parent].children[$.inArray(obj.id, m[obj.parent].children)] = id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3646 for(i = 0, j = obj.parents.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3647 m[obj.parents[i]].children_d[$.inArray(obj.id, m[obj.parents[i]].children_d)] = id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3648 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3649 // update children (replace current ID with new one in parent and parents) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3650 for(i = 0, j = obj.children.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3651 m[obj.children[i]].parent = id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3652 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3653 for(i = 0, j = obj.children_d.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3654 m[obj.children_d[i]].parents[$.inArray(obj.id, m[obj.children_d[i]].parents)] = id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3655 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3656 i = $.inArray(obj.id, this._data.core.selected); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3657 if(i !== -1) { this._data.core.selected[i] = id; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3658 // update model and obj itself (obj.id, this._model.data[KEY]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3659 i = this.get_node(obj.id, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3660 if(i) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3661 i.attr('id', id); //.children('.jstree-anchor').attr('id', id + '_anchor').end().attr('aria-labelledby', id + '_anchor'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3662 if(this.element.attr('aria-activedescendant') === obj.id) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3663 this.element.attr('aria-activedescendant', id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3664 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3665 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3666 delete m[obj.id]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3667 obj.id = id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3668 obj.li_attr.id = id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3669 m[id] = obj; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3670 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3671 * triggered when a node id value is changed |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3672 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3673 * @name set_id.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3674 * @param {Object} node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3675 * @param {String} old the old id |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3676 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3677 this.trigger('set_id',{ "node" : obj, "new" : obj.id, "old" : old }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3678 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3679 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3680 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3681 * get the text value of a node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3682 * @name get_text(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3683 * @param {mixed} obj the node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3684 * @return {String} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3685 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3686 get_text : function (obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3687 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3688 return (!obj || obj.id === $.jstree.root) ? false : obj.text; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3689 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3690 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3691 * set the text value of a node. Used internally, please use `rename_node(obj, val)`. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3692 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3693 * @name set_text(obj, val) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3694 * @param {mixed} obj the node, you can pass an array to set the text on multiple nodes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3695 * @param {String} val the new text value |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3696 * @return {Boolean} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3697 * @trigger set_text.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3698 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3699 set_text : function (obj, val) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3700 var t1, t2; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3701 if($.isArray(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3702 obj = obj.slice(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3703 for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3704 this.set_text(obj[t1], val); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3705 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3706 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3707 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3708 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3709 if(!obj || obj.id === $.jstree.root) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3710 obj.text = val; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3711 if(this.get_node(obj, true).length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3712 this.redraw_node(obj.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3713 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3714 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3715 * triggered when a node text value is changed |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3716 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3717 * @name set_text.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3718 * @param {Object} obj |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3719 * @param {String} text the new value |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3720 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3721 this.trigger('set_text',{ "obj" : obj, "text" : val }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3722 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3723 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3724 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3725 * gets a JSON representation of a node (or the whole tree) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3726 * @name get_json([obj, options]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3727 * @param {mixed} obj |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3728 * @param {Object} options |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3729 * @param {Boolean} options.no_state do not return state information |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3730 * @param {Boolean} options.no_id do not return ID |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3731 * @param {Boolean} options.no_children do not include children |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3732 * @param {Boolean} options.no_data do not include node data |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3733 * @param {Boolean} options.no_li_attr do not include LI attributes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3734 * @param {Boolean} options.no_a_attr do not include A attributes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3735 * @param {Boolean} options.flat return flat JSON instead of nested |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3736 * @return {Object} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3737 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3738 get_json : function (obj, options, flat) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3739 obj = this.get_node(obj || $.jstree.root); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3740 if(!obj) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3741 if(options && options.flat && !flat) { flat = []; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3742 var tmp = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3743 'id' : obj.id, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3744 'text' : obj.text, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3745 'icon' : this.get_icon(obj), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3746 'li_attr' : $.extend(true, {}, obj.li_attr), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3747 'a_attr' : $.extend(true, {}, obj.a_attr), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3748 'state' : {}, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3749 'data' : options && options.no_data ? false : $.extend(true, $.isArray(obj.data)?[]:{}, obj.data) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3750 //( this.get_node(obj, true).length ? this.get_node(obj, true).data() : obj.data ), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3751 }, i, j; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3752 if(options && options.flat) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3753 tmp.parent = obj.parent; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3754 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3755 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3756 tmp.children = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3757 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3758 if(!options || !options.no_state) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3759 for(i in obj.state) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3760 if(obj.state.hasOwnProperty(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3761 tmp.state[i] = obj.state[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3762 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3763 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3764 } else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3765 delete tmp.state; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3766 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3767 if(options && options.no_li_attr) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3768 delete tmp.li_attr; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3769 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3770 if(options && options.no_a_attr) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3771 delete tmp.a_attr; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3772 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3773 if(options && options.no_id) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3774 delete tmp.id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3775 if(tmp.li_attr && tmp.li_attr.id) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3776 delete tmp.li_attr.id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3777 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3778 if(tmp.a_attr && tmp.a_attr.id) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3779 delete tmp.a_attr.id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3780 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3781 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3782 if(options && options.flat && obj.id !== $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3783 flat.push(tmp); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3784 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3785 if(!options || !options.no_children) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3786 for(i = 0, j = obj.children.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3787 if(options && options.flat) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3788 this.get_json(obj.children[i], options, flat); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3789 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3790 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3791 tmp.children.push(this.get_json(obj.children[i], options)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3792 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3793 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3794 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3795 return options && options.flat ? flat : (obj.id === $.jstree.root ? tmp.children : tmp); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3796 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3797 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3798 * create a new node (do not confuse with load_node) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3799 * @name create_node([par, node, pos, callback, is_loaded]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3800 * @param {mixed} par the parent node (to create a root node use either "#" (string) or `null`) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3801 * @param {mixed} node the data for the new node (a valid JSON object, or a simple string with the name) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3802 * @param {mixed} pos the index at which to insert the node, "first" and "last" are also supported, default is "last" |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3803 * @param {Function} callback a function to be called once the node is created |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3804 * @param {Boolean} is_loaded internal argument indicating if the parent node was succesfully loaded |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3805 * @return {String} the ID of the newly create node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3806 * @trigger model.jstree, create_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3807 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3808 create_node : function (par, node, pos, callback, is_loaded) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3809 if(par === null) { par = $.jstree.root; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3810 par = this.get_node(par); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3811 if(!par) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3812 pos = pos === undefined ? "last" : pos; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3813 if(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3814 return this.load_node(par, function () { this.create_node(par, node, pos, callback, true); }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3815 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3816 if(!node) { node = { "text" : this.get_string('New node') }; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3817 if(typeof node === "string") { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3818 node = { "text" : node }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3819 } else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3820 node = $.extend(true, {}, node); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3821 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3822 if(node.text === undefined) { node.text = this.get_string('New node'); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3823 var tmp, dpc, i, j; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3824 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3825 if(par.id === $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3826 if(pos === "before") { pos = "first"; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3827 if(pos === "after") { pos = "last"; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3828 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3829 switch(pos) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3830 case "before": |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3831 tmp = this.get_node(par.parent); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3832 pos = $.inArray(par.id, tmp.children); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3833 par = tmp; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3834 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3835 case "after" : |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3836 tmp = this.get_node(par.parent); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3837 pos = $.inArray(par.id, tmp.children) + 1; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3838 par = tmp; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3839 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3840 case "inside": |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3841 case "first": |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3842 pos = 0; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3843 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3844 case "last": |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3845 pos = par.children.length; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3846 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3847 default: |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3848 if(!pos) { pos = 0; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3849 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3850 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3851 if(pos > par.children.length) { pos = par.children.length; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3852 if(!node.id) { node.id = true; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3853 if(!this.check("create_node", node, par, pos)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3854 this.settings.core.error.call(this, this._data.core.last_error); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3855 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3856 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3857 if(node.id === true) { delete node.id; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3858 node = this._parse_model_from_json(node, par.id, par.parents.concat()); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3859 if(!node) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3860 tmp = this.get_node(node); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3861 dpc = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3862 dpc.push(node); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3863 dpc = dpc.concat(tmp.children_d); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3864 this.trigger('model', { "nodes" : dpc, "parent" : par.id }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3865 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3866 par.children_d = par.children_d.concat(dpc); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3867 for(i = 0, j = par.parents.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3868 this._model.data[par.parents[i]].children_d = this._model.data[par.parents[i]].children_d.concat(dpc); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3869 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3870 node = tmp; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3871 tmp = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3872 for(i = 0, j = par.children.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3873 tmp[i >= pos ? i+1 : i] = par.children[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3874 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3875 tmp[pos] = node.id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3876 par.children = tmp; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3877 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3878 this.redraw_node(par, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3879 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3880 * triggered when a node is created |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3881 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3882 * @name create_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3883 * @param {Object} node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3884 * @param {String} parent the parent's ID |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3885 * @param {Number} position the position of the new node among the parent's children |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3886 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3887 this.trigger('create_node', { "node" : this.get_node(node), "parent" : par.id, "position" : pos }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3888 if(callback) { callback.call(this, this.get_node(node)); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3889 return node.id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3890 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3891 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3892 * set the text value of a node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3893 * @name rename_node(obj, val) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3894 * @param {mixed} obj the node, you can pass an array to rename multiple nodes to the same name |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3895 * @param {String} val the new text value |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3896 * @return {Boolean} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3897 * @trigger rename_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3898 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3899 rename_node : function (obj, val) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3900 var t1, t2, old; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3901 if($.isArray(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3902 obj = obj.slice(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3903 for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3904 this.rename_node(obj[t1], val); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3905 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3906 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3907 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3908 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3909 if(!obj || obj.id === $.jstree.root) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3910 old = obj.text; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3911 if(!this.check("rename_node", obj, this.get_parent(obj), val)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3912 this.settings.core.error.call(this, this._data.core.last_error); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3913 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3914 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3915 this.set_text(obj, val); // .apply(this, Array.prototype.slice.call(arguments)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3916 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3917 * triggered when a node is renamed |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3918 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3919 * @name rename_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3920 * @param {Object} node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3921 * @param {String} text the new value |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3922 * @param {String} old the old value |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3923 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3924 this.trigger('rename_node', { "node" : obj, "text" : val, "old" : old }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3925 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3926 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3927 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3928 * remove a node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3929 * @name delete_node(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3930 * @param {mixed} obj the node, you can pass an array to delete multiple nodes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3931 * @return {Boolean} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3932 * @trigger delete_node.jstree, changed.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3933 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3934 delete_node : function (obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3935 var t1, t2, par, pos, tmp, i, j, k, l, c, top, lft; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3936 if($.isArray(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3937 obj = obj.slice(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3938 for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3939 this.delete_node(obj[t1]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3940 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3941 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3942 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3943 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3944 if(!obj || obj.id === $.jstree.root) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3945 par = this.get_node(obj.parent); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3946 pos = $.inArray(obj.id, par.children); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3947 c = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3948 if(!this.check("delete_node", obj, par, pos)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3949 this.settings.core.error.call(this, this._data.core.last_error); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3950 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3951 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3952 if(pos !== -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3953 par.children = $.vakata.array_remove(par.children, pos); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3954 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3955 tmp = obj.children_d.concat([]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3956 tmp.push(obj.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3957 for(i = 0, j = obj.parents.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3958 this._model.data[obj.parents[i]].children_d = $.vakata.array_filter(this._model.data[obj.parents[i]].children_d, function (v) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3959 return $.inArray(v, tmp) === -1; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3960 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3961 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3962 for(k = 0, l = tmp.length; k < l; k++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3963 if(this._model.data[tmp[k]].state.selected) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3964 c = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3965 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3966 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3967 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3968 if (c) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3969 this._data.core.selected = $.vakata.array_filter(this._data.core.selected, function (v) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3970 return $.inArray(v, tmp) === -1; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3971 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3972 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3973 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3974 * triggered when a node is deleted |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3975 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3976 * @name delete_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3977 * @param {Object} node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3978 * @param {String} parent the parent's ID |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3979 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3980 this.trigger('delete_node', { "node" : obj, "parent" : par.id }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3981 if(c) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3982 this.trigger('changed', { 'action' : 'delete_node', 'node' : obj, 'selected' : this._data.core.selected, 'parent' : par.id }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3983 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3984 for(k = 0, l = tmp.length; k < l; k++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3985 delete this._model.data[tmp[k]]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3986 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3987 if($.inArray(this._data.core.focused, tmp) !== -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3988 this._data.core.focused = null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3989 top = this.element[0].scrollTop; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3990 lft = this.element[0].scrollLeft; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3991 if(par.id === $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3992 if (this._model.data[$.jstree.root].children[0]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3993 this.get_node(this._model.data[$.jstree.root].children[0], true).children('.jstree-anchor').focus(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3994 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3995 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3996 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3997 this.get_node(par, true).children('.jstree-anchor').focus(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3998 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
3999 this.element[0].scrollTop = top; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4000 this.element[0].scrollLeft = lft; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4001 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4002 this.redraw_node(par, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4003 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4004 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4005 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4006 * check if an operation is premitted on the tree. Used internally. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4007 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4008 * @name check(chk, obj, par, pos) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4009 * @param {String} chk the operation to check, can be "create_node", "rename_node", "delete_node", "copy_node" or "move_node" |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4010 * @param {mixed} obj the node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4011 * @param {mixed} par the parent |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4012 * @param {mixed} pos the position to insert at, or if "rename_node" - the new name |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4013 * @param {mixed} more some various additional information, for example if a "move_node" operations is triggered by DND this will be the hovered node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4014 * @return {Boolean} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4015 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4016 check : function (chk, obj, par, pos, more) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4017 obj = obj && obj.id ? obj : this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4018 par = par && par.id ? par : this.get_node(par); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4019 var tmp = chk.match(/^move_node|copy_node|create_node$/i) ? par : obj, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4020 chc = this.settings.core.check_callback; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4021 if(chk === "move_node" || chk === "copy_node") { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4022 if((!more || !more.is_multi) && (obj.id === par.id || (chk === "move_node" && $.inArray(obj.id, par.children) === pos) || $.inArray(par.id, obj.children_d) !== -1)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4023 this._data.core.last_error = { 'error' : 'check', 'plugin' : 'core', 'id' : 'core_01', 'reason' : 'Moving parent inside child', 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4024 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4025 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4026 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4027 if(tmp && tmp.data) { tmp = tmp.data; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4028 if(tmp && tmp.functions && (tmp.functions[chk] === false || tmp.functions[chk] === true)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4029 if(tmp.functions[chk] === false) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4030 this._data.core.last_error = { 'error' : 'check', 'plugin' : 'core', 'id' : 'core_02', 'reason' : 'Node data prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4031 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4032 return tmp.functions[chk]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4033 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4034 if(chc === false || ($.isFunction(chc) && chc.call(this, chk, obj, par, pos, more) === false) || (chc && chc[chk] === false)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4035 this._data.core.last_error = { 'error' : 'check', 'plugin' : 'core', 'id' : 'core_03', 'reason' : 'User config for core.check_callback prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4036 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4037 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4038 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4039 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4040 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4041 * get the last error |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4042 * @name last_error() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4043 * @return {Object} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4044 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4045 last_error : function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4046 return this._data.core.last_error; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4047 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4048 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4049 * move a node to a new parent |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4050 * @name move_node(obj, par [, pos, callback, is_loaded]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4051 * @param {mixed} obj the node to move, pass an array to move multiple nodes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4052 * @param {mixed} par the new parent |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4053 * @param {mixed} pos the position to insert at (besides integer values, "first" and "last" are supported, as well as "before" and "after"), defaults to integer `0` |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4054 * @param {function} callback a function to call once the move is completed, receives 3 arguments - the node, the new parent and the position |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4055 * @param {Boolean} is_loaded internal parameter indicating if the parent node has been loaded |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4056 * @param {Boolean} skip_redraw internal parameter indicating if the tree should be redrawn |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4057 * @param {Boolean} instance internal parameter indicating if the node comes from another instance |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4058 * @trigger move_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4059 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4060 move_node : function (obj, par, pos, callback, is_loaded, skip_redraw, origin) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4061 var t1, t2, old_par, old_pos, new_par, old_ins, is_multi, dpc, tmp, i, j, k, l, p; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4062 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4063 par = this.get_node(par); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4064 pos = pos === undefined ? 0 : pos; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4065 if(!par) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4066 if(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4067 return this.load_node(par, function () { this.move_node(obj, par, pos, callback, true, false, origin); }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4068 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4069 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4070 if($.isArray(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4071 if(obj.length === 1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4072 obj = obj[0]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4073 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4074 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4075 //obj = obj.slice(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4076 for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4077 if((tmp = this.move_node(obj[t1], par, pos, callback, is_loaded, false, origin))) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4078 par = tmp; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4079 pos = "after"; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4080 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4081 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4082 this.redraw(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4083 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4084 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4085 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4086 obj = obj && obj.id ? obj : this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4087 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4088 if(!obj || obj.id === $.jstree.root) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4089 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4090 old_par = (obj.parent || $.jstree.root).toString(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4091 new_par = (!pos.toString().match(/^(before|after)$/) || par.id === $.jstree.root) ? par : this.get_node(par.parent); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4092 old_ins = origin ? origin : (this._model.data[obj.id] ? this : $.jstree.reference(obj.id)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4093 is_multi = !old_ins || !old_ins._id || (this._id !== old_ins._id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4094 old_pos = old_ins && old_ins._id && old_par && old_ins._model.data[old_par] && old_ins._model.data[old_par].children ? $.inArray(obj.id, old_ins._model.data[old_par].children) : -1; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4095 if(old_ins && old_ins._id) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4096 obj = old_ins._model.data[obj.id]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4097 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4098 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4099 if(is_multi) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4100 if((tmp = this.copy_node(obj, par, pos, callback, is_loaded, false, origin))) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4101 if(old_ins) { old_ins.delete_node(obj); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4102 return tmp; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4103 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4104 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4105 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4106 //var m = this._model.data; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4107 if(par.id === $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4108 if(pos === "before") { pos = "first"; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4109 if(pos === "after") { pos = "last"; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4110 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4111 switch(pos) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4112 case "before": |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4113 pos = $.inArray(par.id, new_par.children); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4114 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4115 case "after" : |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4116 pos = $.inArray(par.id, new_par.children) + 1; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4117 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4118 case "inside": |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4119 case "first": |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4120 pos = 0; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4121 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4122 case "last": |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4123 pos = new_par.children.length; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4124 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4125 default: |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4126 if(!pos) { pos = 0; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4127 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4128 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4129 if(pos > new_par.children.length) { pos = new_par.children.length; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4130 if(!this.check("move_node", obj, new_par, pos, { 'core' : true, 'origin' : origin, 'is_multi' : (old_ins && old_ins._id && old_ins._id !== this._id), 'is_foreign' : (!old_ins || !old_ins._id) })) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4131 this.settings.core.error.call(this, this._data.core.last_error); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4132 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4133 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4134 if(obj.parent === new_par.id) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4135 dpc = new_par.children.concat(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4136 tmp = $.inArray(obj.id, dpc); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4137 if(tmp !== -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4138 dpc = $.vakata.array_remove(dpc, tmp); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4139 if(pos > tmp) { pos--; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4140 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4141 tmp = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4142 for(i = 0, j = dpc.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4143 tmp[i >= pos ? i+1 : i] = dpc[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4144 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4145 tmp[pos] = obj.id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4146 new_par.children = tmp; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4147 this._node_changed(new_par.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4148 this.redraw(new_par.id === $.jstree.root); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4149 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4150 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4151 // clean old parent and up |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4152 tmp = obj.children_d.concat(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4153 tmp.push(obj.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4154 for(i = 0, j = obj.parents.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4155 dpc = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4156 p = old_ins._model.data[obj.parents[i]].children_d; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4157 for(k = 0, l = p.length; k < l; k++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4158 if($.inArray(p[k], tmp) === -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4159 dpc.push(p[k]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4160 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4161 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4162 old_ins._model.data[obj.parents[i]].children_d = dpc; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4163 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4164 old_ins._model.data[old_par].children = $.vakata.array_remove_item(old_ins._model.data[old_par].children, obj.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4165 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4166 // insert into new parent and up |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4167 for(i = 0, j = new_par.parents.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4168 this._model.data[new_par.parents[i]].children_d = this._model.data[new_par.parents[i]].children_d.concat(tmp); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4169 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4170 dpc = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4171 for(i = 0, j = new_par.children.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4172 dpc[i >= pos ? i+1 : i] = new_par.children[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4173 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4174 dpc[pos] = obj.id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4175 new_par.children = dpc; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4176 new_par.children_d.push(obj.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4177 new_par.children_d = new_par.children_d.concat(obj.children_d); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4178 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4179 // update object |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4180 obj.parent = new_par.id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4181 tmp = new_par.parents.concat(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4182 tmp.unshift(new_par.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4183 p = obj.parents.length; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4184 obj.parents = tmp; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4185 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4186 // update object children |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4187 tmp = tmp.concat(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4188 for(i = 0, j = obj.children_d.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4189 this._model.data[obj.children_d[i]].parents = this._model.data[obj.children_d[i]].parents.slice(0,p*-1); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4190 Array.prototype.push.apply(this._model.data[obj.children_d[i]].parents, tmp); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4191 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4192 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4193 if(old_par === $.jstree.root || new_par.id === $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4194 this._model.force_full_redraw = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4195 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4196 if(!this._model.force_full_redraw) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4197 this._node_changed(old_par); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4198 this._node_changed(new_par.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4199 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4200 if(!skip_redraw) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4201 this.redraw(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4202 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4203 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4204 if(callback) { callback.call(this, obj, new_par, pos); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4205 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4206 * triggered when a node is moved |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4207 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4208 * @name move_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4209 * @param {Object} node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4210 * @param {String} parent the parent's ID |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4211 * @param {Number} position the position of the node among the parent's children |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4212 * @param {String} old_parent the old parent of the node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4213 * @param {Number} old_position the old position of the node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4214 * @param {Boolean} is_multi do the node and new parent belong to different instances |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4215 * @param {jsTree} old_instance the instance the node came from |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4216 * @param {jsTree} new_instance the instance of the new parent |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4217 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4218 this.trigger('move_node', { "node" : obj, "parent" : new_par.id, "position" : pos, "old_parent" : old_par, "old_position" : old_pos, 'is_multi' : (old_ins && old_ins._id && old_ins._id !== this._id), 'is_foreign' : (!old_ins || !old_ins._id), 'old_instance' : old_ins, 'new_instance' : this }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4219 return obj.id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4220 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4221 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4222 * copy a node to a new parent |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4223 * @name copy_node(obj, par [, pos, callback, is_loaded]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4224 * @param {mixed} obj the node to copy, pass an array to copy multiple nodes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4225 * @param {mixed} par the new parent |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4226 * @param {mixed} pos the position to insert at (besides integer values, "first" and "last" are supported, as well as "before" and "after"), defaults to integer `0` |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4227 * @param {function} callback a function to call once the move is completed, receives 3 arguments - the node, the new parent and the position |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4228 * @param {Boolean} is_loaded internal parameter indicating if the parent node has been loaded |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4229 * @param {Boolean} skip_redraw internal parameter indicating if the tree should be redrawn |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4230 * @param {Boolean} instance internal parameter indicating if the node comes from another instance |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4231 * @trigger model.jstree copy_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4232 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4233 copy_node : function (obj, par, pos, callback, is_loaded, skip_redraw, origin) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4234 var t1, t2, dpc, tmp, i, j, node, old_par, new_par, old_ins, is_multi; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4235 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4236 par = this.get_node(par); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4237 pos = pos === undefined ? 0 : pos; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4238 if(!par) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4239 if(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4240 return this.load_node(par, function () { this.copy_node(obj, par, pos, callback, true, false, origin); }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4241 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4242 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4243 if($.isArray(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4244 if(obj.length === 1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4245 obj = obj[0]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4246 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4247 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4248 //obj = obj.slice(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4249 for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4250 if((tmp = this.copy_node(obj[t1], par, pos, callback, is_loaded, true, origin))) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4251 par = tmp; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4252 pos = "after"; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4253 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4254 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4255 this.redraw(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4256 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4257 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4258 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4259 obj = obj && obj.id ? obj : this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4260 if(!obj || obj.id === $.jstree.root) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4261 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4262 old_par = (obj.parent || $.jstree.root).toString(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4263 new_par = (!pos.toString().match(/^(before|after)$/) || par.id === $.jstree.root) ? par : this.get_node(par.parent); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4264 old_ins = origin ? origin : (this._model.data[obj.id] ? this : $.jstree.reference(obj.id)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4265 is_multi = !old_ins || !old_ins._id || (this._id !== old_ins._id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4266 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4267 if(old_ins && old_ins._id) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4268 obj = old_ins._model.data[obj.id]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4269 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4270 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4271 if(par.id === $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4272 if(pos === "before") { pos = "first"; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4273 if(pos === "after") { pos = "last"; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4274 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4275 switch(pos) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4276 case "before": |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4277 pos = $.inArray(par.id, new_par.children); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4278 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4279 case "after" : |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4280 pos = $.inArray(par.id, new_par.children) + 1; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4281 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4282 case "inside": |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4283 case "first": |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4284 pos = 0; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4285 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4286 case "last": |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4287 pos = new_par.children.length; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4288 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4289 default: |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4290 if(!pos) { pos = 0; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4291 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4292 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4293 if(pos > new_par.children.length) { pos = new_par.children.length; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4294 if(!this.check("copy_node", obj, new_par, pos, { 'core' : true, 'origin' : origin, 'is_multi' : (old_ins && old_ins._id && old_ins._id !== this._id), 'is_foreign' : (!old_ins || !old_ins._id) })) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4295 this.settings.core.error.call(this, this._data.core.last_error); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4296 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4297 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4298 node = old_ins ? old_ins.get_json(obj, { no_id : true, no_data : true, no_state : true }) : obj; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4299 if(!node) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4300 if(node.id === true) { delete node.id; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4301 node = this._parse_model_from_json(node, new_par.id, new_par.parents.concat()); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4302 if(!node) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4303 tmp = this.get_node(node); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4304 if(obj && obj.state && obj.state.loaded === false) { tmp.state.loaded = false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4305 dpc = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4306 dpc.push(node); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4307 dpc = dpc.concat(tmp.children_d); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4308 this.trigger('model', { "nodes" : dpc, "parent" : new_par.id }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4309 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4310 // insert into new parent and up |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4311 for(i = 0, j = new_par.parents.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4312 this._model.data[new_par.parents[i]].children_d = this._model.data[new_par.parents[i]].children_d.concat(dpc); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4313 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4314 dpc = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4315 for(i = 0, j = new_par.children.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4316 dpc[i >= pos ? i+1 : i] = new_par.children[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4317 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4318 dpc[pos] = tmp.id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4319 new_par.children = dpc; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4320 new_par.children_d.push(tmp.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4321 new_par.children_d = new_par.children_d.concat(tmp.children_d); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4322 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4323 if(new_par.id === $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4324 this._model.force_full_redraw = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4325 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4326 if(!this._model.force_full_redraw) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4327 this._node_changed(new_par.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4328 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4329 if(!skip_redraw) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4330 this.redraw(new_par.id === $.jstree.root); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4331 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4332 if(callback) { callback.call(this, tmp, new_par, pos); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4333 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4334 * triggered when a node is copied |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4335 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4336 * @name copy_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4337 * @param {Object} node the copied node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4338 * @param {Object} original the original node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4339 * @param {String} parent the parent's ID |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4340 * @param {Number} position the position of the node among the parent's children |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4341 * @param {String} old_parent the old parent of the node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4342 * @param {Number} old_position the position of the original node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4343 * @param {Boolean} is_multi do the node and new parent belong to different instances |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4344 * @param {jsTree} old_instance the instance the node came from |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4345 * @param {jsTree} new_instance the instance of the new parent |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4346 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4347 this.trigger('copy_node', { "node" : tmp, "original" : obj, "parent" : new_par.id, "position" : pos, "old_parent" : old_par, "old_position" : old_ins && old_ins._id && old_par && old_ins._model.data[old_par] && old_ins._model.data[old_par].children ? $.inArray(obj.id, old_ins._model.data[old_par].children) : -1,'is_multi' : (old_ins && old_ins._id && old_ins._id !== this._id), 'is_foreign' : (!old_ins || !old_ins._id), 'old_instance' : old_ins, 'new_instance' : this }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4348 return tmp.id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4349 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4350 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4351 * cut a node (a later call to `paste(obj)` would move the node) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4352 * @name cut(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4353 * @param {mixed} obj multiple objects can be passed using an array |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4354 * @trigger cut.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4355 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4356 cut : function (obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4357 if(!obj) { obj = this._data.core.selected.concat(); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4358 if(!$.isArray(obj)) { obj = [obj]; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4359 if(!obj.length) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4360 var tmp = [], o, t1, t2; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4361 for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4362 o = this.get_node(obj[t1]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4363 if(o && o.id && o.id !== $.jstree.root) { tmp.push(o); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4364 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4365 if(!tmp.length) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4366 ccp_node = tmp; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4367 ccp_inst = this; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4368 ccp_mode = 'move_node'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4369 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4370 * triggered when nodes are added to the buffer for moving |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4371 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4372 * @name cut.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4373 * @param {Array} node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4374 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4375 this.trigger('cut', { "node" : obj }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4376 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4377 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4378 * copy a node (a later call to `paste(obj)` would copy the node) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4379 * @name copy(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4380 * @param {mixed} obj multiple objects can be passed using an array |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4381 * @trigger copy.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4382 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4383 copy : function (obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4384 if(!obj) { obj = this._data.core.selected.concat(); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4385 if(!$.isArray(obj)) { obj = [obj]; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4386 if(!obj.length) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4387 var tmp = [], o, t1, t2; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4388 for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4389 o = this.get_node(obj[t1]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4390 if(o && o.id && o.id !== $.jstree.root) { tmp.push(o); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4391 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4392 if(!tmp.length) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4393 ccp_node = tmp; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4394 ccp_inst = this; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4395 ccp_mode = 'copy_node'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4396 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4397 * triggered when nodes are added to the buffer for copying |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4398 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4399 * @name copy.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4400 * @param {Array} node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4401 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4402 this.trigger('copy', { "node" : obj }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4403 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4404 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4405 * get the current buffer (any nodes that are waiting for a paste operation) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4406 * @name get_buffer() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4407 * @return {Object} an object consisting of `mode` ("copy_node" or "move_node"), `node` (an array of objects) and `inst` (the instance) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4408 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4409 get_buffer : function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4410 return { 'mode' : ccp_mode, 'node' : ccp_node, 'inst' : ccp_inst }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4411 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4412 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4413 * check if there is something in the buffer to paste |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4414 * @name can_paste() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4415 * @return {Boolean} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4416 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4417 can_paste : function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4418 return ccp_mode !== false && ccp_node !== false; // && ccp_inst._model.data[ccp_node]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4419 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4420 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4421 * copy or move the previously cut or copied nodes to a new parent |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4422 * @name paste(obj [, pos]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4423 * @param {mixed} obj the new parent |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4424 * @param {mixed} pos the position to insert at (besides integer, "first" and "last" are supported), defaults to integer `0` |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4425 * @trigger paste.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4426 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4427 paste : function (obj, pos) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4428 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4429 if(!obj || !ccp_mode || !ccp_mode.match(/^(copy_node|move_node)$/) || !ccp_node) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4430 if(this[ccp_mode](ccp_node, obj, pos, false, false, false, ccp_inst)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4431 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4432 * triggered when paste is invoked |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4433 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4434 * @name paste.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4435 * @param {String} parent the ID of the receiving node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4436 * @param {Array} node the nodes in the buffer |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4437 * @param {String} mode the performed operation - "copy_node" or "move_node" |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4438 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4439 this.trigger('paste', { "parent" : obj.id, "node" : ccp_node, "mode" : ccp_mode }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4440 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4441 ccp_node = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4442 ccp_mode = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4443 ccp_inst = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4444 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4445 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4446 * clear the buffer of previously copied or cut nodes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4447 * @name clear_buffer() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4448 * @trigger clear_buffer.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4449 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4450 clear_buffer : function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4451 ccp_node = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4452 ccp_mode = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4453 ccp_inst = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4454 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4455 * triggered when the copy / cut buffer is cleared |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4456 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4457 * @name clear_buffer.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4458 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4459 this.trigger('clear_buffer'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4460 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4461 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4462 * put a node in edit mode (input field to rename the node) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4463 * @name edit(obj [, default_text, callback]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4464 * @param {mixed} obj |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4465 * @param {String} default_text the text to populate the input with (if omitted or set to a non-string value the node's text value is used) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4466 * @param {Function} callback a function to be called once the text box is blurred, it is called in the instance's scope and receives the node, a status parameter (true if the rename is successful, false otherwise) and a boolean indicating if the user cancelled the edit. You can access the node's title using .text |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4467 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4468 edit : function (obj, default_text, callback) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4469 var rtl, w, a, s, t, h1, h2, fn, tmp, cancel = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4470 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4471 if(!obj) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4472 if(!this.check("edit", obj, this.get_parent(obj))) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4473 this.settings.core.error.call(this, this._data.core.last_error); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4474 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4475 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4476 tmp = obj; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4477 default_text = typeof default_text === 'string' ? default_text : obj.text; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4478 this.set_text(obj, ""); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4479 obj = this._open_to(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4480 tmp.text = default_text; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4481 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4482 rtl = this._data.core.rtl; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4483 w = this.element.width(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4484 this._data.core.focused = tmp.id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4485 a = obj.children('.jstree-anchor').focus(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4486 s = $('<span>'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4487 /*! |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4488 oi = obj.children("i:visible"), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4489 ai = a.children("i:visible"), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4490 w1 = oi.width() * oi.length, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4491 w2 = ai.width() * ai.length, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4492 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4493 t = default_text; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4494 h1 = $("<"+"div />", { css : { "position" : "absolute", "top" : "-200px", "left" : (rtl ? "0px" : "-1000px"), "visibility" : "hidden" } }).appendTo("body"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4495 h2 = $("<"+"input />", { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4496 "value" : t, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4497 "class" : "jstree-rename-input", |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4498 // "size" : t.length, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4499 "css" : { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4500 "padding" : "0", |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4501 "border" : "1px solid silver", |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4502 "box-sizing" : "border-box", |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4503 "display" : "inline-block", |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4504 "height" : (this._data.core.li_height) + "px", |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4505 "lineHeight" : (this._data.core.li_height) + "px", |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4506 "width" : "150px" // will be set a bit further down |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4507 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4508 "blur" : $.proxy(function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4509 e.stopImmediatePropagation(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4510 e.preventDefault(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4511 var i = s.children(".jstree-rename-input"), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4512 v = i.val(), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4513 f = this.settings.core.force_text, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4514 nv; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4515 if(v === "") { v = t; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4516 h1.remove(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4517 s.replaceWith(a); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4518 s.remove(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4519 t = f ? t : $('<div></div>').append($.parseHTML(t)).html(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4520 this.set_text(obj, t); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4521 nv = !!this.rename_node(obj, f ? $('<div></div>').text(v).text() : $('<div></div>').append($.parseHTML(v)).html()); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4522 if(!nv) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4523 this.set_text(obj, t); // move this up? and fix #483 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4524 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4525 this._data.core.focused = tmp.id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4526 setTimeout($.proxy(function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4527 var node = this.get_node(tmp.id, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4528 if(node.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4529 this._data.core.focused = tmp.id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4530 node.children('.jstree-anchor').focus(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4531 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4532 }, this), 0); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4533 if(callback) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4534 callback.call(this, tmp, nv, cancel); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4535 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4536 h2 = null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4537 }, this), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4538 "keydown" : function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4539 var key = e.which; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4540 if(key === 27) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4541 cancel = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4542 this.value = t; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4543 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4544 if(key === 27 || key === 13 || key === 37 || key === 38 || key === 39 || key === 40 || key === 32) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4545 e.stopImmediatePropagation(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4546 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4547 if(key === 27 || key === 13) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4548 e.preventDefault(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4549 this.blur(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4550 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4551 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4552 "click" : function (e) { e.stopImmediatePropagation(); }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4553 "mousedown" : function (e) { e.stopImmediatePropagation(); }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4554 "keyup" : function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4555 h2.width(Math.min(h1.text("pW" + this.value).width(),w)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4556 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4557 "keypress" : function(e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4558 if(e.which === 13) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4559 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4560 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4561 fn = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4562 fontFamily : a.css('fontFamily') || '', |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4563 fontSize : a.css('fontSize') || '', |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4564 fontWeight : a.css('fontWeight') || '', |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4565 fontStyle : a.css('fontStyle') || '', |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4566 fontStretch : a.css('fontStretch') || '', |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4567 fontVariant : a.css('fontVariant') || '', |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4568 letterSpacing : a.css('letterSpacing') || '', |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4569 wordSpacing : a.css('wordSpacing') || '' |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4570 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4571 s.attr('class', a.attr('class')).append(a.contents().clone()).append(h2); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4572 a.replaceWith(s); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4573 h1.css(fn); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4574 h2.css(fn).width(Math.min(h1.text("pW" + h2[0].value).width(),w))[0].select(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4575 $(document).one('mousedown.jstree touchstart.jstree dnd_start.vakata', function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4576 if (h2 && e.target !== h2) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4577 $(h2).blur(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4578 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4579 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4580 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4581 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4582 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4583 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4584 * changes the theme |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4585 * @name set_theme(theme_name [, theme_url]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4586 * @param {String} theme_name the name of the new theme to apply |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4587 * @param {mixed} theme_url the location of the CSS file for this theme. Omit or set to `false` if you manually included the file. Set to `true` to autoload from the `core.themes.dir` directory. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4588 * @trigger set_theme.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4589 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4590 set_theme : function (theme_name, theme_url) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4591 if(!theme_name) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4592 if(theme_url === true) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4593 var dir = this.settings.core.themes.dir; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4594 if(!dir) { dir = $.jstree.path + '/themes'; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4595 theme_url = dir + '/' + theme_name + '/style.css'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4596 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4597 if(theme_url && $.inArray(theme_url, themes_loaded) === -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4598 $('head').append('<'+'link rel="stylesheet" href="' + theme_url + '" type="text/css" />'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4599 themes_loaded.push(theme_url); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4600 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4601 if(this._data.core.themes.name) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4602 this.element.removeClass('jstree-' + this._data.core.themes.name); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4603 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4604 this._data.core.themes.name = theme_name; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4605 this.element.addClass('jstree-' + theme_name); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4606 this.element[this.settings.core.themes.responsive ? 'addClass' : 'removeClass' ]('jstree-' + theme_name + '-responsive'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4607 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4608 * triggered when a theme is set |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4609 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4610 * @name set_theme.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4611 * @param {String} theme the new theme |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4612 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4613 this.trigger('set_theme', { 'theme' : theme_name }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4614 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4615 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4616 * gets the name of the currently applied theme name |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4617 * @name get_theme() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4618 * @return {String} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4619 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4620 get_theme : function () { return this._data.core.themes.name; }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4621 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4622 * changes the theme variant (if the theme has variants) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4623 * @name set_theme_variant(variant_name) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4624 * @param {String|Boolean} variant_name the variant to apply (if `false` is used the current variant is removed) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4625 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4626 set_theme_variant : function (variant_name) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4627 if(this._data.core.themes.variant) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4628 this.element.removeClass('jstree-' + this._data.core.themes.name + '-' + this._data.core.themes.variant); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4629 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4630 this._data.core.themes.variant = variant_name; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4631 if(variant_name) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4632 this.element.addClass('jstree-' + this._data.core.themes.name + '-' + this._data.core.themes.variant); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4633 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4634 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4635 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4636 * gets the name of the currently applied theme variant |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4637 * @name get_theme() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4638 * @return {String} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4639 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4640 get_theme_variant : function () { return this._data.core.themes.variant; }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4641 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4642 * shows a striped background on the container (if the theme supports it) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4643 * @name show_stripes() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4644 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4645 show_stripes : function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4646 this._data.core.themes.stripes = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4647 this.get_container_ul().addClass("jstree-striped"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4648 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4649 * triggered when stripes are shown |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4650 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4651 * @name show_stripes.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4652 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4653 this.trigger('show_stripes'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4654 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4655 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4656 * hides the striped background on the container |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4657 * @name hide_stripes() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4658 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4659 hide_stripes : function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4660 this._data.core.themes.stripes = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4661 this.get_container_ul().removeClass("jstree-striped"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4662 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4663 * triggered when stripes are hidden |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4664 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4665 * @name hide_stripes.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4666 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4667 this.trigger('hide_stripes'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4668 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4669 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4670 * toggles the striped background on the container |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4671 * @name toggle_stripes() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4672 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4673 toggle_stripes : function () { if(this._data.core.themes.stripes) { this.hide_stripes(); } else { this.show_stripes(); } }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4674 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4675 * shows the connecting dots (if the theme supports it) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4676 * @name show_dots() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4677 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4678 show_dots : function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4679 this._data.core.themes.dots = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4680 this.get_container_ul().removeClass("jstree-no-dots"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4681 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4682 * triggered when dots are shown |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4683 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4684 * @name show_dots.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4685 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4686 this.trigger('show_dots'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4687 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4688 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4689 * hides the connecting dots |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4690 * @name hide_dots() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4691 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4692 hide_dots : function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4693 this._data.core.themes.dots = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4694 this.get_container_ul().addClass("jstree-no-dots"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4695 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4696 * triggered when dots are hidden |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4697 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4698 * @name hide_dots.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4699 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4700 this.trigger('hide_dots'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4701 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4702 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4703 * toggles the connecting dots |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4704 * @name toggle_dots() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4705 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4706 toggle_dots : function () { if(this._data.core.themes.dots) { this.hide_dots(); } else { this.show_dots(); } }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4707 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4708 * show the node icons |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4709 * @name show_icons() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4710 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4711 show_icons : function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4712 this._data.core.themes.icons = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4713 this.get_container_ul().removeClass("jstree-no-icons"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4714 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4715 * triggered when icons are shown |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4716 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4717 * @name show_icons.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4718 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4719 this.trigger('show_icons'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4720 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4721 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4722 * hide the node icons |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4723 * @name hide_icons() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4724 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4725 hide_icons : function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4726 this._data.core.themes.icons = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4727 this.get_container_ul().addClass("jstree-no-icons"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4728 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4729 * triggered when icons are hidden |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4730 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4731 * @name hide_icons.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4732 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4733 this.trigger('hide_icons'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4734 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4735 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4736 * toggle the node icons |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4737 * @name toggle_icons() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4738 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4739 toggle_icons : function () { if(this._data.core.themes.icons) { this.hide_icons(); } else { this.show_icons(); } }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4740 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4741 * show the node ellipsis |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4742 * @name show_icons() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4743 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4744 show_ellipsis : function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4745 this._data.core.themes.ellipsis = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4746 this.get_container_ul().addClass("jstree-ellipsis"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4747 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4748 * triggered when ellisis is shown |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4749 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4750 * @name show_ellipsis.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4751 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4752 this.trigger('show_ellipsis'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4753 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4754 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4755 * hide the node ellipsis |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4756 * @name hide_ellipsis() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4757 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4758 hide_ellipsis : function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4759 this._data.core.themes.ellipsis = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4760 this.get_container_ul().removeClass("jstree-ellipsis"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4761 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4762 * triggered when ellisis is hidden |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4763 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4764 * @name hide_ellipsis.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4765 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4766 this.trigger('hide_ellipsis'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4767 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4768 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4769 * toggle the node ellipsis |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4770 * @name toggle_icons() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4771 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4772 toggle_ellipsis : function () { if(this._data.core.themes.ellipsis) { this.hide_ellipsis(); } else { this.show_ellipsis(); } }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4773 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4774 * set the node icon for a node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4775 * @name set_icon(obj, icon) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4776 * @param {mixed} obj |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4777 * @param {String} icon the new icon - can be a path to an icon or a className, if using an image that is in the current directory use a `./` prefix, otherwise it will be detected as a class |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4778 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4779 set_icon : function (obj, icon) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4780 var t1, t2, dom, old; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4781 if($.isArray(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4782 obj = obj.slice(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4783 for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4784 this.set_icon(obj[t1], icon); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4785 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4786 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4787 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4788 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4789 if(!obj || obj.id === $.jstree.root) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4790 old = obj.icon; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4791 obj.icon = icon === true || icon === null || icon === undefined || icon === '' ? true : icon; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4792 dom = this.get_node(obj, true).children(".jstree-anchor").children(".jstree-themeicon"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4793 if(icon === false) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4794 dom.removeClass('jstree-themeicon-custom ' + old).css("background","").removeAttr("rel"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4795 this.hide_icon(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4796 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4797 else if(icon === true || icon === null || icon === undefined || icon === '') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4798 dom.removeClass('jstree-themeicon-custom ' + old).css("background","").removeAttr("rel"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4799 if(old === false) { this.show_icon(obj); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4800 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4801 else if(icon.indexOf("/") === -1 && icon.indexOf(".") === -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4802 dom.removeClass(old).css("background",""); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4803 dom.addClass(icon + ' jstree-themeicon-custom').attr("rel",icon); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4804 if(old === false) { this.show_icon(obj); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4805 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4806 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4807 dom.removeClass(old).css("background",""); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4808 dom.addClass('jstree-themeicon-custom').css("background", "url('" + icon + "') center center no-repeat").attr("rel",icon); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4809 if(old === false) { this.show_icon(obj); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4810 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4811 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4812 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4813 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4814 * get the node icon for a node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4815 * @name get_icon(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4816 * @param {mixed} obj |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4817 * @return {String} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4818 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4819 get_icon : function (obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4820 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4821 return (!obj || obj.id === $.jstree.root) ? false : obj.icon; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4822 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4823 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4824 * hide the icon on an individual node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4825 * @name hide_icon(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4826 * @param {mixed} obj |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4827 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4828 hide_icon : function (obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4829 var t1, t2; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4830 if($.isArray(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4831 obj = obj.slice(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4832 for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4833 this.hide_icon(obj[t1]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4834 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4835 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4836 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4837 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4838 if(!obj || obj === $.jstree.root) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4839 obj.icon = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4840 this.get_node(obj, true).children(".jstree-anchor").children(".jstree-themeicon").addClass('jstree-themeicon-hidden'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4841 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4842 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4843 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4844 * show the icon on an individual node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4845 * @name show_icon(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4846 * @param {mixed} obj |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4847 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4848 show_icon : function (obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4849 var t1, t2, dom; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4850 if($.isArray(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4851 obj = obj.slice(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4852 for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4853 this.show_icon(obj[t1]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4854 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4855 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4856 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4857 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4858 if(!obj || obj === $.jstree.root) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4859 dom = this.get_node(obj, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4860 obj.icon = dom.length ? dom.children(".jstree-anchor").children(".jstree-themeicon").attr('rel') : true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4861 if(!obj.icon) { obj.icon = true; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4862 dom.children(".jstree-anchor").children(".jstree-themeicon").removeClass('jstree-themeicon-hidden'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4863 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4864 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4865 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4866 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4867 // helpers |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4868 $.vakata = {}; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4869 // collect attributes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4870 $.vakata.attributes = function(node, with_values) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4871 node = $(node)[0]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4872 var attr = with_values ? {} : []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4873 if(node && node.attributes) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4874 $.each(node.attributes, function (i, v) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4875 if($.inArray(v.name.toLowerCase(),['style','contenteditable','hasfocus','tabindex']) !== -1) { return; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4876 if(v.value !== null && $.trim(v.value) !== '') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4877 if(with_values) { attr[v.name] = v.value; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4878 else { attr.push(v.name); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4879 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4880 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4881 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4882 return attr; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4883 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4884 $.vakata.array_unique = function(array) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4885 var a = [], i, j, l, o = {}; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4886 for(i = 0, l = array.length; i < l; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4887 if(o[array[i]] === undefined) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4888 a.push(array[i]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4889 o[array[i]] = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4890 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4891 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4892 return a; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4893 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4894 // remove item from array |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4895 $.vakata.array_remove = function(array, from) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4896 array.splice(from, 1); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4897 return array; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4898 //var rest = array.slice((to || from) + 1 || array.length); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4899 //array.length = from < 0 ? array.length + from : from; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4900 //array.push.apply(array, rest); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4901 //return array; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4902 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4903 // remove item from array |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4904 $.vakata.array_remove_item = function(array, item) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4905 var tmp = $.inArray(item, array); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4906 return tmp !== -1 ? $.vakata.array_remove(array, tmp) : array; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4907 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4908 $.vakata.array_filter = function(c,a,b,d,e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4909 if (c.filter) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4910 return c.filter(a, b); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4911 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4912 d=[]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4913 for (e in c) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4914 if (~~e+''===e+'' && e>=0 && a.call(b,c[e],+e,c)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4915 d.push(c[e]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4916 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4917 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4918 return d; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4919 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4920 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4921 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4922 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4923 * ### Changed plugin |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4924 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4925 * 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. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4926 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4927 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4928 $.jstree.plugins.changed = function (options, parent) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4929 var last = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4930 this.trigger = function (ev, data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4931 var i, j; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4932 if(!data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4933 data = {}; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4934 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4935 if(ev.replace('.jstree','') === 'changed') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4936 data.changed = { selected : [], deselected : [] }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4937 var tmp = {}; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4938 for(i = 0, j = last.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4939 tmp[last[i]] = 1; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4940 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4941 for(i = 0, j = data.selected.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4942 if(!tmp[data.selected[i]]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4943 data.changed.selected.push(data.selected[i]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4944 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4945 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4946 tmp[data.selected[i]] = 2; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4947 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4948 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4949 for(i = 0, j = last.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4950 if(tmp[last[i]] === 1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4951 data.changed.deselected.push(last[i]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4952 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4953 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4954 last = data.selected.slice(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4955 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4956 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4957 * triggered when selection changes (the "changed" plugin enhances the original event with more data) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4958 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4959 * @name changed.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4960 * @param {Object} node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4961 * @param {Object} action the action that caused the selection to change |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4962 * @param {Array} selected the current selection |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4963 * @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 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4964 * @param {Object} event the event (if any) that triggered this changed event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4965 * @plugin changed |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4966 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4967 parent.trigger.call(this, ev, data); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4968 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4969 this.refresh = function (skip_loading, forget_state) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4970 last = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4971 return parent.refresh.apply(this, arguments); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4972 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4973 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4974 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4975 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4976 * ### Checkbox plugin |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4977 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4978 * This plugin renders checkbox icons in front of each node, making multiple selection much easier. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4979 * It also supports tri-state behavior, meaning that if a node has a few of its children checked it will be rendered as undetermined, and state will be propagated up. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4980 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4981 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4982 var _i = document.createElement('I'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4983 _i.className = 'jstree-icon jstree-checkbox'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4984 _i.setAttribute('role', 'presentation'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4985 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4986 * stores all defaults for the checkbox plugin |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4987 * @name $.jstree.defaults.checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4988 * @plugin checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4989 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4990 $.jstree.defaults.checkbox = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4991 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4992 * a boolean indicating if checkboxes should be visible (can be changed at a later time using `show_checkboxes()` and `hide_checkboxes`). Defaults to `true`. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4993 * @name $.jstree.defaults.checkbox.visible |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4994 * @plugin checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4995 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4996 visible : true, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4997 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4998 * a boolean indicating if checkboxes should cascade down and have an undetermined state. Defaults to `true`. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
4999 * @name $.jstree.defaults.checkbox.three_state |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5000 * @plugin checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5001 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5002 three_state : true, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5003 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5004 * a boolean indicating if clicking anywhere on the node should act as clicking on the checkbox. Defaults to `true`. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5005 * @name $.jstree.defaults.checkbox.whole_node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5006 * @plugin checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5007 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5008 whole_node : true, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5009 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5010 * a boolean indicating if the selected style of a node should be kept, or removed. Defaults to `true`. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5011 * @name $.jstree.defaults.checkbox.keep_selected_style |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5012 * @plugin checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5013 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5014 keep_selected_style : true, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5015 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5016 * This setting controls how cascading and undetermined nodes are applied. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5017 * If 'up' is in the string - cascading up is enabled, if 'down' is in the string - cascading down is enabled, if 'undetermined' is in the string - undetermined nodes will be used. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5018 * If `three_state` is set to `true` this setting is automatically set to 'up+down+undetermined'. Defaults to ''. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5019 * @name $.jstree.defaults.checkbox.cascade |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5020 * @plugin checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5021 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5022 cascade : '', |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5023 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5024 * This setting controls if checkbox are bound to the general tree selection or to an internal array maintained by the checkbox plugin. Defaults to `true`, only set to `false` if you know exactly what you are doing. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5025 * @name $.jstree.defaults.checkbox.tie_selection |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5026 * @plugin checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5027 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5028 tie_selection : true, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5029 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5030 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5031 * This setting controls if cascading down affects disabled checkboxes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5032 * @name $.jstree.defaults.checkbox.cascade_to_disabled |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5033 * @plugin checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5034 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5035 cascade_to_disabled : true, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5036 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5037 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5038 * This setting controls if cascading down affects hidden checkboxes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5039 * @name $.jstree.defaults.checkbox.cascade_to_hidden |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5040 * @plugin checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5041 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5042 cascade_to_hidden : true |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5043 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5044 $.jstree.plugins.checkbox = function (options, parent) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5045 this.bind = function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5046 parent.bind.call(this); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5047 this._data.checkbox.uto = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5048 this._data.checkbox.selected = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5049 if(this.settings.checkbox.three_state) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5050 this.settings.checkbox.cascade = 'up+down+undetermined'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5051 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5052 this.element |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5053 .on("init.jstree", $.proxy(function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5054 this._data.checkbox.visible = this.settings.checkbox.visible; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5055 if(!this.settings.checkbox.keep_selected_style) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5056 this.element.addClass('jstree-checkbox-no-clicked'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5057 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5058 if(this.settings.checkbox.tie_selection) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5059 this.element.addClass('jstree-checkbox-selection'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5060 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5061 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5062 .on("loading.jstree", $.proxy(function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5063 this[ this._data.checkbox.visible ? 'show_checkboxes' : 'hide_checkboxes' ](); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5064 }, this)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5065 if(this.settings.checkbox.cascade.indexOf('undetermined') !== -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5066 this.element |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5067 .on('changed.jstree uncheck_node.jstree check_node.jstree uncheck_all.jstree check_all.jstree move_node.jstree copy_node.jstree redraw.jstree open_node.jstree', $.proxy(function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5068 // only if undetermined is in setting |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5069 if(this._data.checkbox.uto) { clearTimeout(this._data.checkbox.uto); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5070 this._data.checkbox.uto = setTimeout($.proxy(this._undetermined, this), 50); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5071 }, this)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5072 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5073 if(!this.settings.checkbox.tie_selection) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5074 this.element |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5075 .on('model.jstree', $.proxy(function (e, data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5076 var m = this._model.data, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5077 p = m[data.parent], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5078 dpc = data.nodes, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5079 i, j; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5080 for(i = 0, j = dpc.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5081 m[dpc[i]].state.checked = m[dpc[i]].state.checked || (m[dpc[i]].original && m[dpc[i]].original.state && m[dpc[i]].original.state.checked); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5082 if(m[dpc[i]].state.checked) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5083 this._data.checkbox.selected.push(dpc[i]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5084 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5085 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5086 }, this)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5087 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5088 if(this.settings.checkbox.cascade.indexOf('up') !== -1 || this.settings.checkbox.cascade.indexOf('down') !== -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5089 this.element |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5090 .on('model.jstree', $.proxy(function (e, data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5091 var m = this._model.data, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5092 p = m[data.parent], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5093 dpc = data.nodes, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5094 chd = [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5095 c, i, j, k, l, tmp, s = this.settings.checkbox.cascade, t = this.settings.checkbox.tie_selection; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5096 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5097 if(s.indexOf('down') !== -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5098 // apply down |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5099 if(p.state[ t ? 'selected' : 'checked' ]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5100 for(i = 0, j = dpc.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5101 m[dpc[i]].state[ t ? 'selected' : 'checked' ] = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5102 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5103 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5104 this._data[ t ? 'core' : 'checkbox' ].selected = this._data[ t ? 'core' : 'checkbox' ].selected.concat(dpc); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5105 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5106 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5107 for(i = 0, j = dpc.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5108 if(m[dpc[i]].state[ t ? 'selected' : 'checked' ]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5109 for(k = 0, l = m[dpc[i]].children_d.length; k < l; k++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5110 m[m[dpc[i]].children_d[k]].state[ t ? 'selected' : 'checked' ] = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5111 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5112 this._data[ t ? 'core' : 'checkbox' ].selected = this._data[ t ? 'core' : 'checkbox' ].selected.concat(m[dpc[i]].children_d); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5113 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5114 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5115 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5116 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5117 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5118 if(s.indexOf('up') !== -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5119 // apply up |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5120 for(i = 0, j = p.children_d.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5121 if(!m[p.children_d[i]].children.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5122 chd.push(m[p.children_d[i]].parent); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5123 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5124 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5125 chd = $.vakata.array_unique(chd); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5126 for(k = 0, l = chd.length; k < l; k++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5127 p = m[chd[k]]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5128 while(p && p.id !== $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5129 c = 0; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5130 for(i = 0, j = p.children.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5131 c += m[p.children[i]].state[ t ? 'selected' : 'checked' ]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5132 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5133 if(c === j) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5134 p.state[ t ? 'selected' : 'checked' ] = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5135 this._data[ t ? 'core' : 'checkbox' ].selected.push(p.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5136 tmp = this.get_node(p, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5137 if(tmp && tmp.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5138 tmp.attr('aria-selected', true).children('.jstree-anchor').addClass( t ? 'jstree-clicked' : 'jstree-checked'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5139 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5140 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5141 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5142 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5143 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5144 p = this.get_node(p.parent); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5145 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5146 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5147 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5148 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5149 this._data[ t ? 'core' : 'checkbox' ].selected = $.vakata.array_unique(this._data[ t ? 'core' : 'checkbox' ].selected); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5150 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5151 .on(this.settings.checkbox.tie_selection ? 'select_node.jstree' : 'check_node.jstree', $.proxy(function (e, data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5152 var self = this, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5153 obj = data.node, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5154 m = this._model.data, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5155 par = this.get_node(obj.parent), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5156 i, j, c, tmp, s = this.settings.checkbox.cascade, t = this.settings.checkbox.tie_selection, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5157 sel = {}, cur = this._data[ t ? 'core' : 'checkbox' ].selected; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5158 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5159 for (i = 0, j = cur.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5160 sel[cur[i]] = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5161 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5162 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5163 // apply down |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5164 if(s.indexOf('down') !== -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5165 //this._data[ t ? 'core' : 'checkbox' ].selected = $.vakata.array_unique(this._data[ t ? 'core' : 'checkbox' ].selected.concat(obj.children_d)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5166 var selectedIds = this._cascade_new_checked_state(obj.id, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5167 var temp = obj.children_d.concat(obj.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5168 for (i = 0, j = temp.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5169 if (selectedIds.indexOf(temp[i]) > -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5170 sel[temp[i]] = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5171 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5172 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5173 delete sel[temp[i]]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5174 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5175 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5176 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5177 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5178 // apply up |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5179 if(s.indexOf('up') !== -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5180 while(par && par.id !== $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5181 c = 0; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5182 for(i = 0, j = par.children.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5183 c += m[par.children[i]].state[ t ? 'selected' : 'checked' ]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5184 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5185 if(c === j) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5186 par.state[ t ? 'selected' : 'checked' ] = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5187 sel[par.id] = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5188 //this._data[ t ? 'core' : 'checkbox' ].selected.push(par.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5189 tmp = this.get_node(par, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5190 if(tmp && tmp.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5191 tmp.attr('aria-selected', true).children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5192 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5193 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5194 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5195 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5196 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5197 par = this.get_node(par.parent); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5198 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5199 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5200 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5201 cur = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5202 for (i in sel) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5203 if (sel.hasOwnProperty(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5204 cur.push(i); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5205 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5206 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5207 this._data[ t ? 'core' : 'checkbox' ].selected = cur; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5208 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5209 .on(this.settings.checkbox.tie_selection ? 'deselect_all.jstree' : 'uncheck_all.jstree', $.proxy(function (e, data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5210 var obj = this.get_node($.jstree.root), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5211 m = this._model.data, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5212 i, j, tmp; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5213 for(i = 0, j = obj.children_d.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5214 tmp = m[obj.children_d[i]]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5215 if(tmp && tmp.original && tmp.original.state && tmp.original.state.undetermined) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5216 tmp.original.state.undetermined = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5217 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5218 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5219 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5220 .on(this.settings.checkbox.tie_selection ? 'deselect_node.jstree' : 'uncheck_node.jstree', $.proxy(function (e, data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5221 var self = this, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5222 obj = data.node, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5223 dom = this.get_node(obj, true), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5224 i, j, tmp, s = this.settings.checkbox.cascade, t = this.settings.checkbox.tie_selection, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5225 cur = this._data[ t ? 'core' : 'checkbox' ].selected, sel = {}, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5226 stillSelectedIds = [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5227 allIds = obj.children_d.concat(obj.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5228 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5229 // apply down |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5230 if(s.indexOf('down') !== -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5231 var selectedIds = this._cascade_new_checked_state(obj.id, false); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5232 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5233 cur = cur.filter(function(id) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5234 return allIds.indexOf(id) === -1 || selectedIds.indexOf(id) > -1; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5235 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5236 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5237 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5238 // only apply up if cascade up is enabled and if this node is not selected |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5239 // (if all child nodes are disabled and cascade_to_disabled === false then this node will till be selected). |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5240 if(s.indexOf('up') !== -1 && cur.indexOf(obj.id) === -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5241 for(i = 0, j = obj.parents.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5242 tmp = this._model.data[obj.parents[i]]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5243 tmp.state[ t ? 'selected' : 'checked' ] = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5244 if(tmp && tmp.original && tmp.original.state && tmp.original.state.undetermined) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5245 tmp.original.state.undetermined = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5246 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5247 tmp = this.get_node(obj.parents[i], true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5248 if(tmp && tmp.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5249 tmp.attr('aria-selected', false).children('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5250 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5251 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5252 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5253 cur = cur.filter(function(id) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5254 return obj.parents.indexOf(id) === -1; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5255 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5256 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5257 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5258 this._data[ t ? 'core' : 'checkbox' ].selected = cur; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5259 }, this)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5260 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5261 if(this.settings.checkbox.cascade.indexOf('up') !== -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5262 this.element |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5263 .on('delete_node.jstree', $.proxy(function (e, data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5264 // apply up (whole handler) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5265 var p = this.get_node(data.parent), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5266 m = this._model.data, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5267 i, j, c, tmp, t = this.settings.checkbox.tie_selection; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5268 while(p && p.id !== $.jstree.root && !p.state[ t ? 'selected' : 'checked' ]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5269 c = 0; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5270 for(i = 0, j = p.children.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5271 c += m[p.children[i]].state[ t ? 'selected' : 'checked' ]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5272 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5273 if(j > 0 && c === j) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5274 p.state[ t ? 'selected' : 'checked' ] = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5275 this._data[ t ? 'core' : 'checkbox' ].selected.push(p.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5276 tmp = this.get_node(p, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5277 if(tmp && tmp.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5278 tmp.attr('aria-selected', true).children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5279 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5280 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5281 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5282 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5283 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5284 p = this.get_node(p.parent); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5285 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5286 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5287 .on('move_node.jstree', $.proxy(function (e, data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5288 // apply up (whole handler) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5289 var is_multi = data.is_multi, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5290 old_par = data.old_parent, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5291 new_par = this.get_node(data.parent), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5292 m = this._model.data, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5293 p, c, i, j, tmp, t = this.settings.checkbox.tie_selection; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5294 if(!is_multi) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5295 p = this.get_node(old_par); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5296 while(p && p.id !== $.jstree.root && !p.state[ t ? 'selected' : 'checked' ]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5297 c = 0; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5298 for(i = 0, j = p.children.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5299 c += m[p.children[i]].state[ t ? 'selected' : 'checked' ]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5300 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5301 if(j > 0 && c === j) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5302 p.state[ t ? 'selected' : 'checked' ] = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5303 this._data[ t ? 'core' : 'checkbox' ].selected.push(p.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5304 tmp = this.get_node(p, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5305 if(tmp && tmp.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5306 tmp.attr('aria-selected', true).children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5307 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5308 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5309 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5310 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5311 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5312 p = this.get_node(p.parent); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5313 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5314 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5315 p = new_par; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5316 while(p && p.id !== $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5317 c = 0; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5318 for(i = 0, j = p.children.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5319 c += m[p.children[i]].state[ t ? 'selected' : 'checked' ]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5320 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5321 if(c === j) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5322 if(!p.state[ t ? 'selected' : 'checked' ]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5323 p.state[ t ? 'selected' : 'checked' ] = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5324 this._data[ t ? 'core' : 'checkbox' ].selected.push(p.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5325 tmp = this.get_node(p, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5326 if(tmp && tmp.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5327 tmp.attr('aria-selected', true).children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5328 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5329 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5330 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5331 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5332 if(p.state[ t ? 'selected' : 'checked' ]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5333 p.state[ t ? 'selected' : 'checked' ] = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5334 this._data[ t ? 'core' : 'checkbox' ].selected = $.vakata.array_remove_item(this._data[ t ? 'core' : 'checkbox' ].selected, p.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5335 tmp = this.get_node(p, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5336 if(tmp && tmp.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5337 tmp.attr('aria-selected', false).children('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5338 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5339 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5340 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5341 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5342 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5343 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5344 p = this.get_node(p.parent); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5345 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5346 }, this)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5347 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5348 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5349 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5350 * get an array of all nodes whose state is "undetermined" |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5351 * @name get_undetermined([full]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5352 * @param {boolean} full: if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5353 * @return {Array} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5354 * @plugin checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5355 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5356 this.get_undetermined = function (full) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5357 if (this.settings.checkbox.cascade.indexOf('undetermined') === -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5358 return []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5359 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5360 var i, j, k, l, o = {}, m = this._model.data, t = this.settings.checkbox.tie_selection, s = this._data[ t ? 'core' : 'checkbox' ].selected, p = [], tt = this, r = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5361 for(i = 0, j = s.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5362 if(m[s[i]] && m[s[i]].parents) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5363 for(k = 0, l = m[s[i]].parents.length; k < l; k++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5364 if(o[m[s[i]].parents[k]] !== undefined) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5365 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5366 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5367 if(m[s[i]].parents[k] !== $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5368 o[m[s[i]].parents[k]] = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5369 p.push(m[s[i]].parents[k]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5370 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5371 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5372 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5373 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5374 // attempt for server side undetermined state |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5375 this.element.find('.jstree-closed').not(':has(.jstree-children)') |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5376 .each(function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5377 var tmp = tt.get_node(this), tmp2; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5378 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5379 if(!tmp) { return; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5380 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5381 if(!tmp.state.loaded) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5382 if(tmp.original && tmp.original.state && tmp.original.state.undetermined && tmp.original.state.undetermined === true) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5383 if(o[tmp.id] === undefined && tmp.id !== $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5384 o[tmp.id] = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5385 p.push(tmp.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5386 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5387 for(k = 0, l = tmp.parents.length; k < l; k++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5388 if(o[tmp.parents[k]] === undefined && tmp.parents[k] !== $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5389 o[tmp.parents[k]] = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5390 p.push(tmp.parents[k]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5391 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5392 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5393 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5394 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5395 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5396 for(i = 0, j = tmp.children_d.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5397 tmp2 = m[tmp.children_d[i]]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5398 if(!tmp2.state.loaded && tmp2.original && tmp2.original.state && tmp2.original.state.undetermined && tmp2.original.state.undetermined === true) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5399 if(o[tmp2.id] === undefined && tmp2.id !== $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5400 o[tmp2.id] = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5401 p.push(tmp2.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5402 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5403 for(k = 0, l = tmp2.parents.length; k < l; k++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5404 if(o[tmp2.parents[k]] === undefined && tmp2.parents[k] !== $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5405 o[tmp2.parents[k]] = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5406 p.push(tmp2.parents[k]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5407 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5408 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5409 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5410 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5411 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5412 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5413 for (i = 0, j = p.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5414 if(!m[p[i]].state[ t ? 'selected' : 'checked' ]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5415 r.push(full ? m[p[i]] : p[i]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5416 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5417 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5418 return r; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5419 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5420 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5421 * set the undetermined state where and if necessary. Used internally. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5422 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5423 * @name _undetermined() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5424 * @plugin checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5425 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5426 this._undetermined = function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5427 if(this.element === null) { return; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5428 var p = this.get_undetermined(false), i, j, s; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5429 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5430 this.element.find('.jstree-undetermined').removeClass('jstree-undetermined'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5431 for (i = 0, j = p.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5432 s = this.get_node(p[i], true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5433 if(s && s.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5434 s.children('.jstree-anchor').children('.jstree-checkbox').addClass('jstree-undetermined'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5435 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5436 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5437 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5438 this.redraw_node = function(obj, deep, is_callback, force_render) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5439 obj = parent.redraw_node.apply(this, arguments); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5440 if(obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5441 var i, j, tmp = null, icon = null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5442 for(i = 0, j = obj.childNodes.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5443 if(obj.childNodes[i] && obj.childNodes[i].className && obj.childNodes[i].className.indexOf("jstree-anchor") !== -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5444 tmp = obj.childNodes[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5445 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5446 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5447 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5448 if(tmp) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5449 if(!this.settings.checkbox.tie_selection && this._model.data[obj.id].state.checked) { tmp.className += ' jstree-checked'; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5450 icon = _i.cloneNode(false); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5451 if(this._model.data[obj.id].state.checkbox_disabled) { icon.className += ' jstree-checkbox-disabled'; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5452 tmp.insertBefore(icon, tmp.childNodes[0]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5453 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5454 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5455 if(!is_callback && this.settings.checkbox.cascade.indexOf('undetermined') !== -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5456 if(this._data.checkbox.uto) { clearTimeout(this._data.checkbox.uto); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5457 this._data.checkbox.uto = setTimeout($.proxy(this._undetermined, this), 50); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5458 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5459 return obj; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5460 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5461 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5462 * show the node checkbox icons |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5463 * @name show_checkboxes() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5464 * @plugin checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5465 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5466 this.show_checkboxes = function () { this._data.core.themes.checkboxes = true; this.get_container_ul().removeClass("jstree-no-checkboxes"); }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5467 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5468 * hide the node checkbox icons |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5469 * @name hide_checkboxes() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5470 * @plugin checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5471 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5472 this.hide_checkboxes = function () { this._data.core.themes.checkboxes = false; this.get_container_ul().addClass("jstree-no-checkboxes"); }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5473 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5474 * toggle the node icons |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5475 * @name toggle_checkboxes() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5476 * @plugin checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5477 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5478 this.toggle_checkboxes = function () { if(this._data.core.themes.checkboxes) { this.hide_checkboxes(); } else { this.show_checkboxes(); } }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5479 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5480 * checks if a node is in an undetermined state |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5481 * @name is_undetermined(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5482 * @param {mixed} obj |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5483 * @return {Boolean} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5484 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5485 this.is_undetermined = function (obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5486 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5487 var s = this.settings.checkbox.cascade, i, j, t = this.settings.checkbox.tie_selection, d = this._data[ t ? 'core' : 'checkbox' ].selected, m = this._model.data; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5488 if(!obj || obj.state[ t ? 'selected' : 'checked' ] === true || s.indexOf('undetermined') === -1 || (s.indexOf('down') === -1 && s.indexOf('up') === -1)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5489 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5490 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5491 if(!obj.state.loaded && obj.original.state.undetermined === true) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5492 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5493 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5494 for(i = 0, j = obj.children_d.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5495 if($.inArray(obj.children_d[i], d) !== -1 || (!m[obj.children_d[i]].state.loaded && m[obj.children_d[i]].original.state.undetermined)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5496 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5497 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5498 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5499 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5500 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5501 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5502 * disable a node's checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5503 * @name disable_checkbox(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5504 * @param {mixed} obj an array can be used too |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5505 * @trigger disable_checkbox.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5506 * @plugin checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5507 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5508 this.disable_checkbox = function (obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5509 var t1, t2, dom; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5510 if($.isArray(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5511 obj = obj.slice(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5512 for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5513 this.disable_checkbox(obj[t1]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5514 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5515 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5516 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5517 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5518 if(!obj || obj.id === $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5519 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5520 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5521 dom = this.get_node(obj, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5522 if(!obj.state.checkbox_disabled) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5523 obj.state.checkbox_disabled = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5524 if(dom && dom.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5525 dom.children('.jstree-anchor').children('.jstree-checkbox').addClass('jstree-checkbox-disabled'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5526 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5527 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5528 * triggered when an node's checkbox is disabled |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5529 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5530 * @name disable_checkbox.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5531 * @param {Object} node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5532 * @plugin checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5533 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5534 this.trigger('disable_checkbox', { 'node' : obj }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5535 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5536 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5537 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5538 * enable a node's checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5539 * @name disable_checkbox(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5540 * @param {mixed} obj an array can be used too |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5541 * @trigger enable_checkbox.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5542 * @plugin checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5543 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5544 this.enable_checkbox = function (obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5545 var t1, t2, dom; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5546 if($.isArray(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5547 obj = obj.slice(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5548 for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5549 this.enable_checkbox(obj[t1]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5550 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5551 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5552 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5553 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5554 if(!obj || obj.id === $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5555 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5556 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5557 dom = this.get_node(obj, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5558 if(obj.state.checkbox_disabled) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5559 obj.state.checkbox_disabled = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5560 if(dom && dom.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5561 dom.children('.jstree-anchor').children('.jstree-checkbox').removeClass('jstree-checkbox-disabled'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5562 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5563 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5564 * triggered when an node's checkbox is enabled |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5565 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5566 * @name enable_checkbox.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5567 * @param {Object} node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5568 * @plugin checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5569 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5570 this.trigger('enable_checkbox', { 'node' : obj }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5571 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5572 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5573 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5574 this.activate_node = function (obj, e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5575 if($(e.target).hasClass('jstree-checkbox-disabled')) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5576 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5577 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5578 if(this.settings.checkbox.tie_selection && (this.settings.checkbox.whole_node || $(e.target).hasClass('jstree-checkbox'))) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5579 e.ctrlKey = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5580 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5581 if(this.settings.checkbox.tie_selection || (!this.settings.checkbox.whole_node && !$(e.target).hasClass('jstree-checkbox'))) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5582 return parent.activate_node.call(this, obj, e); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5583 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5584 if(this.is_disabled(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5585 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5586 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5587 if(this.is_checked(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5588 this.uncheck_node(obj, e); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5589 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5590 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5591 this.check_node(obj, e); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5592 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5593 this.trigger('activate_node', { 'node' : this.get_node(obj) }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5594 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5595 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5596 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5597 * Cascades checked state to a node and all its descendants. This function does NOT affect hidden and disabled nodes (or their descendants). |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5598 * However if these unaffected nodes are already selected their ids will be included in the returned array. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5599 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5600 * @param {string} id the node ID |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5601 * @param {bool} checkedState should the nodes be checked or not |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5602 * @returns {Array} Array of all node id's (in this tree branch) that are checked. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5603 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5604 this._cascade_new_checked_state = function (id, checkedState) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5605 var self = this; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5606 var t = this.settings.checkbox.tie_selection; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5607 var node = this._model.data[id]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5608 var selectedNodeIds = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5609 var selectedChildrenIds = [], i, j, selectedChildIds; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5610 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5611 if ( |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5612 (this.settings.checkbox.cascade_to_disabled || !node.state.disabled) && |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5613 (this.settings.checkbox.cascade_to_hidden || !node.state.hidden) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5614 ) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5615 //First try and check/uncheck the children |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5616 if (node.children) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5617 for (i = 0, j = node.children.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5618 var childId = node.children[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5619 selectedChildIds = self._cascade_new_checked_state(childId, checkedState); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5620 selectedNodeIds = selectedNodeIds.concat(selectedChildIds); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5621 if (selectedChildIds.indexOf(childId) > -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5622 selectedChildrenIds.push(childId); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5623 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5624 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5625 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5626 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5627 var dom = self.get_node(node, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5628 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5629 //A node's state is undetermined if some but not all of it's children are checked/selected . |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5630 var undetermined = selectedChildrenIds.length > 0 && selectedChildrenIds.length < node.children.length; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5631 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5632 if(node.original && node.original.state && node.original.state.undetermined) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5633 node.original.state.undetermined = undetermined; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5634 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5635 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5636 //If a node is undetermined then remove selected class |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5637 if (undetermined) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5638 node.state[ t ? 'selected' : 'checked' ] = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5639 dom.attr('aria-selected', false).children('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5640 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5641 //Otherwise, if the checkedState === true (i.e. the node is being checked now) and all of the node's children are checked (if it has any children), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5642 //check the node and style it correctly. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5643 else if (checkedState && selectedChildrenIds.length === node.children.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5644 node.state[ t ? 'selected' : 'checked' ] = checkedState; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5645 selectedNodeIds.push(node.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5646 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5647 dom.attr('aria-selected', true).children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5648 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5649 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5650 node.state[ t ? 'selected' : 'checked' ] = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5651 dom.attr('aria-selected', false).children('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5652 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5653 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5654 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5655 selectedChildIds = this.get_checked_descendants(id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5656 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5657 if (node.state[ t ? 'selected' : 'checked' ]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5658 selectedChildIds.push(node.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5659 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5660 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5661 selectedNodeIds = selectedNodeIds.concat(selectedChildIds); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5662 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5663 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5664 return selectedNodeIds; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5665 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5666 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5667 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5668 * Gets ids of nodes selected in branch (of tree) specified by id (does not include the node specified by id) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5669 * @name get_checked_descendants(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5670 * @param {string} id the node ID |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5671 * @return {Array} array of IDs |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5672 * @plugin checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5673 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5674 this.get_checked_descendants = function (id) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5675 var self = this; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5676 var t = self.settings.checkbox.tie_selection; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5677 var node = self._model.data[id]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5678 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5679 return node.children_d.filter(function(_id) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5680 return self._model.data[_id].state[ t ? 'selected' : 'checked' ]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5681 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5682 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5683 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5684 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5685 * check a node (only if tie_selection in checkbox settings is false, otherwise select_node will be called internally) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5686 * @name check_node(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5687 * @param {mixed} obj an array can be used to check multiple nodes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5688 * @trigger check_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5689 * @plugin checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5690 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5691 this.check_node = function (obj, e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5692 if(this.settings.checkbox.tie_selection) { return this.select_node(obj, false, true, e); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5693 var dom, t1, t2, th; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5694 if($.isArray(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5695 obj = obj.slice(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5696 for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5697 this.check_node(obj[t1], e); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5698 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5699 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5700 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5701 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5702 if(!obj || obj.id === $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5703 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5704 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5705 dom = this.get_node(obj, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5706 if(!obj.state.checked) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5707 obj.state.checked = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5708 this._data.checkbox.selected.push(obj.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5709 if(dom && dom.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5710 dom.children('.jstree-anchor').addClass('jstree-checked'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5711 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5712 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5713 * triggered when an node is checked (only if tie_selection in checkbox settings is false) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5714 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5715 * @name check_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5716 * @param {Object} node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5717 * @param {Array} selected the current selection |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5718 * @param {Object} event the event (if any) that triggered this check_node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5719 * @plugin checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5720 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5721 this.trigger('check_node', { 'node' : obj, 'selected' : this._data.checkbox.selected, 'event' : e }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5722 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5723 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5724 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5725 * uncheck a node (only if tie_selection in checkbox settings is false, otherwise deselect_node will be called internally) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5726 * @name uncheck_node(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5727 * @param {mixed} obj an array can be used to uncheck multiple nodes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5728 * @trigger uncheck_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5729 * @plugin checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5730 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5731 this.uncheck_node = function (obj, e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5732 if(this.settings.checkbox.tie_selection) { return this.deselect_node(obj, false, e); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5733 var t1, t2, dom; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5734 if($.isArray(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5735 obj = obj.slice(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5736 for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5737 this.uncheck_node(obj[t1], e); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5738 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5739 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5740 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5741 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5742 if(!obj || obj.id === $.jstree.root) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5743 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5744 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5745 dom = this.get_node(obj, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5746 if(obj.state.checked) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5747 obj.state.checked = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5748 this._data.checkbox.selected = $.vakata.array_remove_item(this._data.checkbox.selected, obj.id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5749 if(dom.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5750 dom.children('.jstree-anchor').removeClass('jstree-checked'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5751 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5752 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5753 * triggered when an node is unchecked (only if tie_selection in checkbox settings is false) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5754 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5755 * @name uncheck_node.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5756 * @param {Object} node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5757 * @param {Array} selected the current selection |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5758 * @param {Object} event the event (if any) that triggered this uncheck_node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5759 * @plugin checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5760 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5761 this.trigger('uncheck_node', { 'node' : obj, 'selected' : this._data.checkbox.selected, 'event' : e }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5762 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5763 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5764 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5765 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5766 * checks all nodes in the tree (only if tie_selection in checkbox settings is false, otherwise select_all will be called internally) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5767 * @name check_all() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5768 * @trigger check_all.jstree, changed.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5769 * @plugin checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5770 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5771 this.check_all = function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5772 if(this.settings.checkbox.tie_selection) { return this.select_all(); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5773 var tmp = this._data.checkbox.selected.concat([]), i, j; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5774 this._data.checkbox.selected = this._model.data[$.jstree.root].children_d.concat(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5775 for(i = 0, j = this._data.checkbox.selected.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5776 if(this._model.data[this._data.checkbox.selected[i]]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5777 this._model.data[this._data.checkbox.selected[i]].state.checked = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5778 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5779 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5780 this.redraw(true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5781 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5782 * triggered when all nodes are checked (only if tie_selection in checkbox settings is false) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5783 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5784 * @name check_all.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5785 * @param {Array} selected the current selection |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5786 * @plugin checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5787 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5788 this.trigger('check_all', { 'selected' : this._data.checkbox.selected }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5789 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5790 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5791 * uncheck all checked nodes (only if tie_selection in checkbox settings is false, otherwise deselect_all will be called internally) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5792 * @name uncheck_all() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5793 * @trigger uncheck_all.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5794 * @plugin checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5795 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5796 this.uncheck_all = function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5797 if(this.settings.checkbox.tie_selection) { return this.deselect_all(); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5798 var tmp = this._data.checkbox.selected.concat([]), i, j; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5799 for(i = 0, j = this._data.checkbox.selected.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5800 if(this._model.data[this._data.checkbox.selected[i]]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5801 this._model.data[this._data.checkbox.selected[i]].state.checked = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5802 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5803 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5804 this._data.checkbox.selected = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5805 this.element.find('.jstree-checked').removeClass('jstree-checked'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5806 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5807 * triggered when all nodes are unchecked (only if tie_selection in checkbox settings is false) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5808 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5809 * @name uncheck_all.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5810 * @param {Object} node the previous selection |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5811 * @param {Array} selected the current selection |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5812 * @plugin checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5813 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5814 this.trigger('uncheck_all', { 'selected' : this._data.checkbox.selected, 'node' : tmp }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5815 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5816 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5817 * checks if a node is checked (if tie_selection is on in the settings this function will return the same as is_selected) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5818 * @name is_checked(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5819 * @param {mixed} obj |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5820 * @return {Boolean} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5821 * @plugin checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5822 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5823 this.is_checked = function (obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5824 if(this.settings.checkbox.tie_selection) { return this.is_selected(obj); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5825 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5826 if(!obj || obj.id === $.jstree.root) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5827 return obj.state.checked; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5828 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5829 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5830 * get an array of all checked nodes (if tie_selection is on in the settings this function will return the same as get_selected) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5831 * @name get_checked([full]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5832 * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5833 * @return {Array} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5834 * @plugin checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5835 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5836 this.get_checked = function (full) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5837 if(this.settings.checkbox.tie_selection) { return this.get_selected(full); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5838 return full ? $.map(this._data.checkbox.selected, $.proxy(function (i) { return this.get_node(i); }, this)) : this._data.checkbox.selected; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5839 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5840 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5841 * get an array of all top level checked nodes (ignoring children of checked nodes) (if tie_selection is on in the settings this function will return the same as get_top_selected) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5842 * @name get_top_checked([full]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5843 * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5844 * @return {Array} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5845 * @plugin checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5846 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5847 this.get_top_checked = function (full) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5848 if(this.settings.checkbox.tie_selection) { return this.get_top_selected(full); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5849 var tmp = this.get_checked(true), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5850 obj = {}, i, j, k, l; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5851 for(i = 0, j = tmp.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5852 obj[tmp[i].id] = tmp[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5853 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5854 for(i = 0, j = tmp.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5855 for(k = 0, l = tmp[i].children_d.length; k < l; k++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5856 if(obj[tmp[i].children_d[k]]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5857 delete obj[tmp[i].children_d[k]]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5858 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5859 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5860 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5861 tmp = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5862 for(i in obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5863 if(obj.hasOwnProperty(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5864 tmp.push(i); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5865 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5866 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5867 return full ? $.map(tmp, $.proxy(function (i) { return this.get_node(i); }, this)) : tmp; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5868 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5869 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5870 * get an array of all bottom level checked nodes (ignoring selected parents) (if tie_selection is on in the settings this function will return the same as get_bottom_selected) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5871 * @name get_bottom_checked([full]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5872 * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5873 * @return {Array} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5874 * @plugin checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5875 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5876 this.get_bottom_checked = function (full) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5877 if(this.settings.checkbox.tie_selection) { return this.get_bottom_selected(full); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5878 var tmp = this.get_checked(true), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5879 obj = [], i, j; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5880 for(i = 0, j = tmp.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5881 if(!tmp[i].children.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5882 obj.push(tmp[i].id); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5883 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5884 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5885 return full ? $.map(obj, $.proxy(function (i) { return this.get_node(i); }, this)) : obj; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5886 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5887 this.load_node = function (obj, callback) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5888 var k, l, i, j, c, tmp; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5889 if(!$.isArray(obj) && !this.settings.checkbox.tie_selection) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5890 tmp = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5891 if(tmp && tmp.state.loaded) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5892 for(k = 0, l = tmp.children_d.length; k < l; k++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5893 if(this._model.data[tmp.children_d[k]].state.checked) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5894 c = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5895 this._data.checkbox.selected = $.vakata.array_remove_item(this._data.checkbox.selected, tmp.children_d[k]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5896 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5897 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5898 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5899 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5900 return parent.load_node.apply(this, arguments); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5901 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5902 this.get_state = function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5903 var state = parent.get_state.apply(this, arguments); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5904 if(this.settings.checkbox.tie_selection) { return state; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5905 state.checkbox = this._data.checkbox.selected.slice(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5906 return state; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5907 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5908 this.set_state = function (state, callback) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5909 var res = parent.set_state.apply(this, arguments); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5910 if(res && state.checkbox) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5911 if(!this.settings.checkbox.tie_selection) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5912 this.uncheck_all(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5913 var _this = this; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5914 $.each(state.checkbox, function (i, v) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5915 _this.check_node(v); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5916 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5917 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5918 delete state.checkbox; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5919 this.set_state(state, callback); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5920 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5921 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5922 return res; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5923 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5924 this.refresh = function (skip_loading, forget_state) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5925 if(!this.settings.checkbox.tie_selection) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5926 this._data.checkbox.selected = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5927 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5928 return parent.refresh.apply(this, arguments); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5929 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5930 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5931 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5932 // include the checkbox plugin by default |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5933 // $.jstree.defaults.plugins.push("checkbox"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5934 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5935 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5936 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5937 * ### Conditionalselect plugin |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5938 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5939 * This plugin allows defining a callback to allow or deny node selection by user input (activate node method). |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5940 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5941 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5942 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5943 * a callback (function) which is invoked in the instance's scope and receives two arguments - the node and the event that triggered the `activate_node` call. Returning false prevents working with the node, returning true allows invoking activate_node. Defaults to returning `true`. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5944 * @name $.jstree.defaults.checkbox.visible |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5945 * @plugin checkbox |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5946 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5947 $.jstree.defaults.conditionalselect = function () { return true; }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5948 $.jstree.plugins.conditionalselect = function (options, parent) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5949 // own function |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5950 this.activate_node = function (obj, e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5951 if(this.settings.conditionalselect.call(this, this.get_node(obj), e)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5952 return parent.activate_node.call(this, obj, e); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5953 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5954 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5955 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5956 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5957 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5958 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5959 * ### Contextmenu plugin |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5960 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5961 * Shows a context menu when a node is right-clicked. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5962 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5963 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5964 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5965 * stores all defaults for the contextmenu plugin |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5966 * @name $.jstree.defaults.contextmenu |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5967 * @plugin contextmenu |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5968 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5969 $.jstree.defaults.contextmenu = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5970 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5971 * a boolean indicating if the node should be selected when the context menu is invoked on it. Defaults to `true`. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5972 * @name $.jstree.defaults.contextmenu.select_node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5973 * @plugin contextmenu |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5974 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5975 select_node : true, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5976 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5977 * a boolean indicating if the menu should be shown aligned with the node. Defaults to `true`, otherwise the mouse coordinates are used. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5978 * @name $.jstree.defaults.contextmenu.show_at_node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5979 * @plugin contextmenu |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5980 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5981 show_at_node : true, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5982 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5983 * an object of actions, or a function that accepts a node and a callback function and calls the callback function with an object of actions available for that node (you can also return the items too). |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5984 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5985 * Each action consists of a key (a unique name) and a value which is an object with the following properties (only label and action are required). Once a menu item is activated the `action` function will be invoked with an object containing the following keys: item - the contextmenu item definition as seen below, reference - the DOM node that was used (the tree node), element - the contextmenu DOM element, position - an object with x/y properties indicating the position of the menu. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5986 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5987 * * `separator_before` - a boolean indicating if there should be a separator before this item |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5988 * * `separator_after` - a boolean indicating if there should be a separator after this item |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5989 * * `_disabled` - a boolean indicating if this action should be disabled |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5990 * * `label` - a string - the name of the action (could be a function returning a string) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5991 * * `title` - a string - an optional tooltip for the item |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5992 * * `action` - a function to be executed if this item is chosen, the function will receive |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5993 * * `icon` - a string, can be a path to an icon or a className, if using an image that is in the current directory use a `./` prefix, otherwise it will be detected as a class |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5994 * * `shortcut` - keyCode which will trigger the action if the menu is open (for example `113` for rename, which equals F2) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5995 * * `shortcut_label` - shortcut label (like for example `F2` for rename) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5996 * * `submenu` - an object with the same structure as $.jstree.defaults.contextmenu.items which can be used to create a submenu - each key will be rendered as a separate option in a submenu that will appear once the current item is hovered |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5997 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5998 * @name $.jstree.defaults.contextmenu.items |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
5999 * @plugin contextmenu |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6000 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6001 items : function (o, cb) { // Could be an object directly |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6002 return { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6003 "create" : { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6004 "separator_before" : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6005 "separator_after" : true, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6006 "_disabled" : false, //(this.check("create_node", data.reference, {}, "last")), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6007 "label" : "Create", |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6008 "action" : function (data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6009 var inst = $.jstree.reference(data.reference), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6010 obj = inst.get_node(data.reference); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6011 inst.create_node(obj, {}, "last", function (new_node) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6012 try { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6013 inst.edit(new_node); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6014 } catch (ex) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6015 setTimeout(function () { inst.edit(new_node); },0); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6016 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6017 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6018 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6019 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6020 "rename" : { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6021 "separator_before" : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6022 "separator_after" : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6023 "_disabled" : false, //(this.check("rename_node", data.reference, this.get_parent(data.reference), "")), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6024 "label" : "Rename", |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6025 /*! |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6026 "shortcut" : 113, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6027 "shortcut_label" : 'F2', |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6028 "icon" : "glyphicon glyphicon-leaf", |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6029 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6030 "action" : function (data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6031 var inst = $.jstree.reference(data.reference), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6032 obj = inst.get_node(data.reference); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6033 inst.edit(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6034 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6035 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6036 "remove" : { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6037 "separator_before" : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6038 "icon" : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6039 "separator_after" : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6040 "_disabled" : false, //(this.check("delete_node", data.reference, this.get_parent(data.reference), "")), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6041 "label" : "Delete", |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6042 "action" : function (data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6043 var inst = $.jstree.reference(data.reference), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6044 obj = inst.get_node(data.reference); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6045 if(inst.is_selected(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6046 inst.delete_node(inst.get_selected()); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6047 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6048 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6049 inst.delete_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6050 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6051 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6052 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6053 "ccp" : { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6054 "separator_before" : true, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6055 "icon" : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6056 "separator_after" : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6057 "label" : "Edit", |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6058 "action" : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6059 "submenu" : { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6060 "cut" : { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6061 "separator_before" : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6062 "separator_after" : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6063 "label" : "Cut", |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6064 "action" : function (data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6065 var inst = $.jstree.reference(data.reference), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6066 obj = inst.get_node(data.reference); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6067 if(inst.is_selected(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6068 inst.cut(inst.get_top_selected()); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6069 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6070 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6071 inst.cut(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6072 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6073 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6074 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6075 "copy" : { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6076 "separator_before" : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6077 "icon" : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6078 "separator_after" : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6079 "label" : "Copy", |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6080 "action" : function (data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6081 var inst = $.jstree.reference(data.reference), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6082 obj = inst.get_node(data.reference); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6083 if(inst.is_selected(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6084 inst.copy(inst.get_top_selected()); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6085 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6086 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6087 inst.copy(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6088 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6089 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6090 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6091 "paste" : { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6092 "separator_before" : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6093 "icon" : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6094 "_disabled" : function (data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6095 return !$.jstree.reference(data.reference).can_paste(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6096 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6097 "separator_after" : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6098 "label" : "Paste", |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6099 "action" : function (data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6100 var inst = $.jstree.reference(data.reference), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6101 obj = inst.get_node(data.reference); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6102 inst.paste(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6103 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6104 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6105 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6106 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6107 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6108 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6109 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6110 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6111 $.jstree.plugins.contextmenu = function (options, parent) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6112 this.bind = function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6113 parent.bind.call(this); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6114 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6115 var last_ts = 0, cto = null, ex, ey; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6116 this.element |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6117 .on("init.jstree loading.jstree ready.jstree", $.proxy(function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6118 this.get_container_ul().addClass('jstree-contextmenu'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6119 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6120 .on("contextmenu.jstree", ".jstree-anchor", $.proxy(function (e, data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6121 if (e.target.tagName.toLowerCase() === 'input') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6122 return; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6123 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6124 e.preventDefault(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6125 last_ts = e.ctrlKey ? +new Date() : 0; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6126 if(data || cto) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6127 last_ts = (+new Date()) + 10000; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6128 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6129 if(cto) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6130 clearTimeout(cto); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6131 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6132 if(!this.is_loading(e.currentTarget)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6133 this.show_contextmenu(e.currentTarget, e.pageX, e.pageY, e); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6134 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6135 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6136 .on("click.jstree", ".jstree-anchor", $.proxy(function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6137 if(this._data.contextmenu.visible && (!last_ts || (+new Date()) - last_ts > 250)) { // work around safari & macOS ctrl+click |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6138 $.vakata.context.hide(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6139 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6140 last_ts = 0; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6141 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6142 .on("touchstart.jstree", ".jstree-anchor", function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6143 if(!e.originalEvent || !e.originalEvent.changedTouches || !e.originalEvent.changedTouches[0]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6144 return; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6145 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6146 ex = e.originalEvent.changedTouches[0].clientX; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6147 ey = e.originalEvent.changedTouches[0].clientY; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6148 cto = setTimeout(function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6149 $(e.currentTarget).trigger('contextmenu', true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6150 }, 750); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6151 }) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6152 .on('touchmove.vakata.jstree', function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6153 if(cto && e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0] && (Math.abs(ex - e.originalEvent.changedTouches[0].clientX) > 10 || Math.abs(ey - e.originalEvent.changedTouches[0].clientY) > 10)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6154 clearTimeout(cto); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6155 $.vakata.context.hide(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6156 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6157 }) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6158 .on('touchend.vakata.jstree', function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6159 if(cto) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6160 clearTimeout(cto); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6161 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6162 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6163 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6164 /*! |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6165 if(!('oncontextmenu' in document.body) && ('ontouchstart' in document.body)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6166 var el = null, tm = null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6167 this.element |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6168 .on("touchstart", ".jstree-anchor", function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6169 el = e.currentTarget; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6170 tm = +new Date(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6171 $(document).one("touchend", function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6172 e.target = document.elementFromPoint(e.originalEvent.targetTouches[0].pageX - window.pageXOffset, e.originalEvent.targetTouches[0].pageY - window.pageYOffset); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6173 e.currentTarget = e.target; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6174 tm = ((+(new Date())) - tm); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6175 if(e.target === el && tm > 600 && tm < 1000) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6176 e.preventDefault(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6177 $(el).trigger('contextmenu', e); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6178 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6179 el = null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6180 tm = null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6181 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6182 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6183 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6184 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6185 $(document).on("context_hide.vakata.jstree", $.proxy(function (e, data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6186 this._data.contextmenu.visible = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6187 $(data.reference).removeClass('jstree-context'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6188 }, this)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6189 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6190 this.teardown = function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6191 if(this._data.contextmenu.visible) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6192 $.vakata.context.hide(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6193 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6194 parent.teardown.call(this); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6195 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6196 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6197 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6198 * prepare and show the context menu for a node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6199 * @name show_contextmenu(obj [, x, y]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6200 * @param {mixed} obj the node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6201 * @param {Number} x the x-coordinate relative to the document to show the menu at |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6202 * @param {Number} y the y-coordinate relative to the document to show the menu at |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6203 * @param {Object} e the event if available that triggered the contextmenu |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6204 * @plugin contextmenu |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6205 * @trigger show_contextmenu.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6206 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6207 this.show_contextmenu = function (obj, x, y, e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6208 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6209 if(!obj || obj.id === $.jstree.root) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6210 var s = this.settings.contextmenu, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6211 d = this.get_node(obj, true), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6212 a = d.children(".jstree-anchor"), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6213 o = false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6214 i = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6215 if(s.show_at_node || x === undefined || y === undefined) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6216 o = a.offset(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6217 x = o.left; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6218 y = o.top + this._data.core.li_height; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6219 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6220 if(this.settings.contextmenu.select_node && !this.is_selected(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6221 this.activate_node(obj, e); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6222 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6223 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6224 i = s.items; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6225 if($.isFunction(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6226 i = i.call(this, obj, $.proxy(function (i) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6227 this._show_contextmenu(obj, x, y, i); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6228 }, this)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6229 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6230 if($.isPlainObject(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6231 this._show_contextmenu(obj, x, y, i); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6232 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6233 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6234 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6235 * show the prepared context menu for a node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6236 * @name _show_contextmenu(obj, x, y, i) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6237 * @param {mixed} obj the node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6238 * @param {Number} x the x-coordinate relative to the document to show the menu at |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6239 * @param {Number} y the y-coordinate relative to the document to show the menu at |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6240 * @param {Number} i the object of items to show |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6241 * @plugin contextmenu |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6242 * @trigger show_contextmenu.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6243 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6244 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6245 this._show_contextmenu = function (obj, x, y, i) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6246 var d = this.get_node(obj, true), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6247 a = d.children(".jstree-anchor"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6248 $(document).one("context_show.vakata.jstree", $.proxy(function (e, data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6249 var cls = 'jstree-contextmenu jstree-' + this.get_theme() + '-contextmenu'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6250 $(data.element).addClass(cls); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6251 a.addClass('jstree-context'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6252 }, this)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6253 this._data.contextmenu.visible = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6254 $.vakata.context.show(a, { 'x' : x, 'y' : y }, i); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6255 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6256 * triggered when the contextmenu is shown for a node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6257 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6258 * @name show_contextmenu.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6259 * @param {Object} node the node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6260 * @param {Number} x the x-coordinate of the menu relative to the document |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6261 * @param {Number} y the y-coordinate of the menu relative to the document |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6262 * @plugin contextmenu |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6263 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6264 this.trigger('show_contextmenu', { "node" : obj, "x" : x, "y" : y }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6265 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6266 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6267 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6268 // contextmenu helper |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6269 (function ($) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6270 var right_to_left = false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6271 vakata_context = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6272 element : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6273 reference : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6274 position_x : 0, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6275 position_y : 0, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6276 items : [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6277 html : "", |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6278 is_visible : false |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6279 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6280 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6281 $.vakata.context = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6282 settings : { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6283 hide_onmouseleave : 0, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6284 icons : true |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6285 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6286 _trigger : function (event_name) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6287 $(document).triggerHandler("context_" + event_name + ".vakata", { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6288 "reference" : vakata_context.reference, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6289 "element" : vakata_context.element, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6290 "position" : { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6291 "x" : vakata_context.position_x, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6292 "y" : vakata_context.position_y |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6293 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6294 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6295 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6296 _execute : function (i) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6297 i = vakata_context.items[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6298 return i && (!i._disabled || ($.isFunction(i._disabled) && !i._disabled({ "item" : i, "reference" : vakata_context.reference, "element" : vakata_context.element }))) && i.action ? i.action.call(null, { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6299 "item" : i, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6300 "reference" : vakata_context.reference, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6301 "element" : vakata_context.element, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6302 "position" : { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6303 "x" : vakata_context.position_x, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6304 "y" : vakata_context.position_y |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6305 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6306 }) : false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6307 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6308 _parse : function (o, is_callback) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6309 if(!o) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6310 if(!is_callback) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6311 vakata_context.html = ""; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6312 vakata_context.items = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6313 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6314 var str = "", |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6315 sep = false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6316 tmp; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6317 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6318 if(is_callback) { str += "<"+"ul>"; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6319 $.each(o, function (i, val) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6320 if(!val) { return true; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6321 vakata_context.items.push(val); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6322 if(!sep && val.separator_before) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6323 str += "<"+"li class='vakata-context-separator'><"+"a href='#' " + ($.vakata.context.settings.icons ? '' : 'style="margin-left:0px;"') + "> <"+"/a><"+"/li>"; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6324 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6325 sep = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6326 str += "<"+"li class='" + (val._class || "") + (val._disabled === true || ($.isFunction(val._disabled) && val._disabled({ "item" : val, "reference" : vakata_context.reference, "element" : vakata_context.element })) ? " vakata-contextmenu-disabled " : "") + "' "+(val.shortcut?" data-shortcut='"+val.shortcut+"' ":'')+">"; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6327 str += "<"+"a href='#' rel='" + (vakata_context.items.length - 1) + "' " + (val.title ? "title='" + val.title + "'" : "") + ">"; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6328 if($.vakata.context.settings.icons) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6329 str += "<"+"i "; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6330 if(val.icon) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6331 if(val.icon.indexOf("/") !== -1 || val.icon.indexOf(".") !== -1) { str += " style='background:url(\"" + val.icon + "\") center center no-repeat' "; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6332 else { str += " class='" + val.icon + "' "; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6333 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6334 str += "><"+"/i><"+"span class='vakata-contextmenu-sep'> <"+"/span>"; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6335 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6336 str += ($.isFunction(val.label) ? val.label({ "item" : i, "reference" : vakata_context.reference, "element" : vakata_context.element }) : val.label) + (val.shortcut?' <span class="vakata-contextmenu-shortcut vakata-contextmenu-shortcut-'+val.shortcut+'">'+ (val.shortcut_label || '') +'</span>':'') + "<"+"/a>"; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6337 if(val.submenu) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6338 tmp = $.vakata.context._parse(val.submenu, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6339 if(tmp) { str += tmp; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6340 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6341 str += "<"+"/li>"; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6342 if(val.separator_after) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6343 str += "<"+"li class='vakata-context-separator'><"+"a href='#' " + ($.vakata.context.settings.icons ? '' : 'style="margin-left:0px;"') + "> <"+"/a><"+"/li>"; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6344 sep = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6345 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6346 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6347 str = str.replace(/<li class\='vakata-context-separator'\><\/li\>$/,""); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6348 if(is_callback) { str += "</ul>"; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6349 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6350 * triggered on the document when the contextmenu is parsed (HTML is built) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6351 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6352 * @plugin contextmenu |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6353 * @name context_parse.vakata |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6354 * @param {jQuery} reference the element that was right clicked |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6355 * @param {jQuery} element the DOM element of the menu itself |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6356 * @param {Object} position the x & y coordinates of the menu |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6357 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6358 if(!is_callback) { vakata_context.html = str; $.vakata.context._trigger("parse"); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6359 return str.length > 10 ? str : false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6360 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6361 _show_submenu : function (o) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6362 o = $(o); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6363 if(!o.length || !o.children("ul").length) { return; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6364 var e = o.children("ul"), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6365 xl = o.offset().left, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6366 x = xl + o.outerWidth(), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6367 y = o.offset().top, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6368 w = e.width(), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6369 h = e.height(), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6370 dw = $(window).width() + $(window).scrollLeft(), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6371 dh = $(window).height() + $(window).scrollTop(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6372 // може да се спести е една проверка - дали няма някой от класовете вече нагоре |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6373 if(right_to_left) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6374 o[x - (w + 10 + o.outerWidth()) < 0 ? "addClass" : "removeClass"]("vakata-context-left"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6375 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6376 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6377 o[x + w > dw && xl > dw - x ? "addClass" : "removeClass"]("vakata-context-right"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6378 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6379 if(y + h + 10 > dh) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6380 e.css("bottom","-1px"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6381 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6382 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6383 //if does not fit - stick it to the side |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6384 if (o.hasClass('vakata-context-right')) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6385 if (xl < w) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6386 e.css("margin-right", xl - w); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6387 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6388 } else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6389 if (dw - x < w) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6390 e.css("margin-left", dw - x - w); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6391 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6392 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6393 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6394 e.show(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6395 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6396 show : function (reference, position, data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6397 var o, e, x, y, w, h, dw, dh, cond = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6398 if(vakata_context.element && vakata_context.element.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6399 vakata_context.element.width(''); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6400 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6401 switch(cond) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6402 case (!position && !reference): |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6403 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6404 case (!!position && !!reference): |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6405 vakata_context.reference = reference; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6406 vakata_context.position_x = position.x; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6407 vakata_context.position_y = position.y; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6408 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6409 case (!position && !!reference): |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6410 vakata_context.reference = reference; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6411 o = reference.offset(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6412 vakata_context.position_x = o.left + reference.outerHeight(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6413 vakata_context.position_y = o.top; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6414 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6415 case (!!position && !reference): |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6416 vakata_context.position_x = position.x; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6417 vakata_context.position_y = position.y; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6418 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6419 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6420 if(!!reference && !data && $(reference).data('vakata_contextmenu')) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6421 data = $(reference).data('vakata_contextmenu'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6422 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6423 if($.vakata.context._parse(data)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6424 vakata_context.element.html(vakata_context.html); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6425 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6426 if(vakata_context.items.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6427 vakata_context.element.appendTo("body"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6428 e = vakata_context.element; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6429 x = vakata_context.position_x; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6430 y = vakata_context.position_y; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6431 w = e.width(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6432 h = e.height(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6433 dw = $(window).width() + $(window).scrollLeft(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6434 dh = $(window).height() + $(window).scrollTop(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6435 if(right_to_left) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6436 x -= (e.outerWidth() - $(reference).outerWidth()); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6437 if(x < $(window).scrollLeft() + 20) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6438 x = $(window).scrollLeft() + 20; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6439 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6440 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6441 if(x + w + 20 > dw) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6442 x = dw - (w + 20); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6443 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6444 if(y + h + 20 > dh) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6445 y = dh - (h + 20); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6446 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6447 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6448 vakata_context.element |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6449 .css({ "left" : x, "top" : y }) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6450 .show() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6451 .find('a').first().focus().parent().addClass("vakata-context-hover"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6452 vakata_context.is_visible = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6453 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6454 * triggered on the document when the contextmenu is shown |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6455 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6456 * @plugin contextmenu |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6457 * @name context_show.vakata |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6458 * @param {jQuery} reference the element that was right clicked |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6459 * @param {jQuery} element the DOM element of the menu itself |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6460 * @param {Object} position the x & y coordinates of the menu |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6461 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6462 $.vakata.context._trigger("show"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6463 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6464 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6465 hide : function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6466 if(vakata_context.is_visible) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6467 vakata_context.element.hide().find("ul").hide().end().find(':focus').blur().end().detach(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6468 vakata_context.is_visible = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6469 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6470 * triggered on the document when the contextmenu is hidden |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6471 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6472 * @plugin contextmenu |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6473 * @name context_hide.vakata |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6474 * @param {jQuery} reference the element that was right clicked |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6475 * @param {jQuery} element the DOM element of the menu itself |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6476 * @param {Object} position the x & y coordinates of the menu |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6477 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6478 $.vakata.context._trigger("hide"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6479 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6480 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6481 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6482 $(function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6483 right_to_left = $("body").css("direction") === "rtl"; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6484 var to = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6485 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6486 vakata_context.element = $("<ul class='vakata-context'></ul>"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6487 vakata_context.element |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6488 .on("mouseenter", "li", function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6489 e.stopImmediatePropagation(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6490 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6491 if($.contains(this, e.relatedTarget)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6492 // премахнато заради delegate mouseleave по-долу |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6493 // $(this).find(".vakata-context-hover").removeClass("vakata-context-hover"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6494 return; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6495 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6496 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6497 if(to) { clearTimeout(to); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6498 vakata_context.element.find(".vakata-context-hover").removeClass("vakata-context-hover").end(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6499 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6500 $(this) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6501 .siblings().find("ul").hide().end().end() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6502 .parentsUntil(".vakata-context", "li").addBack().addClass("vakata-context-hover"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6503 $.vakata.context._show_submenu(this); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6504 }) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6505 // тестово - дали не натоварва? |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6506 .on("mouseleave", "li", function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6507 if($.contains(this, e.relatedTarget)) { return; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6508 $(this).find(".vakata-context-hover").addBack().removeClass("vakata-context-hover"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6509 }) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6510 .on("mouseleave", function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6511 $(this).find(".vakata-context-hover").removeClass("vakata-context-hover"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6512 if($.vakata.context.settings.hide_onmouseleave) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6513 to = setTimeout( |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6514 (function (t) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6515 return function () { $.vakata.context.hide(); }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6516 }(this)), $.vakata.context.settings.hide_onmouseleave); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6517 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6518 }) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6519 .on("click", "a", function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6520 e.preventDefault(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6521 //}) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6522 //.on("mouseup", "a", function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6523 if(!$(this).blur().parent().hasClass("vakata-context-disabled") && $.vakata.context._execute($(this).attr("rel")) !== false) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6524 $.vakata.context.hide(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6525 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6526 }) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6527 .on('keydown', 'a', function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6528 var o = null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6529 switch(e.which) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6530 case 13: |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6531 case 32: |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6532 e.type = "click"; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6533 e.preventDefault(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6534 $(e.currentTarget).trigger(e); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6535 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6536 case 37: |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6537 if(vakata_context.is_visible) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6538 vakata_context.element.find(".vakata-context-hover").last().closest("li").first().find("ul").hide().find(".vakata-context-hover").removeClass("vakata-context-hover").end().end().children('a').focus(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6539 e.stopImmediatePropagation(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6540 e.preventDefault(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6541 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6542 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6543 case 38: |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6544 if(vakata_context.is_visible) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6545 o = vakata_context.element.find("ul:visible").addBack().last().children(".vakata-context-hover").removeClass("vakata-context-hover").prevAll("li:not(.vakata-context-separator)").first(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6546 if(!o.length) { o = vakata_context.element.find("ul:visible").addBack().last().children("li:not(.vakata-context-separator)").last(); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6547 o.addClass("vakata-context-hover").children('a').focus(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6548 e.stopImmediatePropagation(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6549 e.preventDefault(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6550 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6551 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6552 case 39: |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6553 if(vakata_context.is_visible) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6554 vakata_context.element.find(".vakata-context-hover").last().children("ul").show().children("li:not(.vakata-context-separator)").removeClass("vakata-context-hover").first().addClass("vakata-context-hover").children('a').focus(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6555 e.stopImmediatePropagation(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6556 e.preventDefault(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6557 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6558 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6559 case 40: |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6560 if(vakata_context.is_visible) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6561 o = vakata_context.element.find("ul:visible").addBack().last().children(".vakata-context-hover").removeClass("vakata-context-hover").nextAll("li:not(.vakata-context-separator)").first(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6562 if(!o.length) { o = vakata_context.element.find("ul:visible").addBack().last().children("li:not(.vakata-context-separator)").first(); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6563 o.addClass("vakata-context-hover").children('a').focus(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6564 e.stopImmediatePropagation(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6565 e.preventDefault(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6566 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6567 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6568 case 27: |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6569 $.vakata.context.hide(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6570 e.preventDefault(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6571 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6572 default: |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6573 //console.log(e.which); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6574 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6575 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6576 }) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6577 .on('keydown', function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6578 e.preventDefault(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6579 var a = vakata_context.element.find('.vakata-contextmenu-shortcut-' + e.which).parent(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6580 if(a.parent().not('.vakata-context-disabled')) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6581 a.click(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6582 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6583 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6584 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6585 $(document) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6586 .on("mousedown.vakata.jstree", function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6587 if(vakata_context.is_visible && vakata_context.element[0] !== e.target && !$.contains(vakata_context.element[0], e.target)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6588 $.vakata.context.hide(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6589 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6590 }) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6591 .on("context_show.vakata.jstree", function (e, data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6592 vakata_context.element.find("li:has(ul)").children("a").addClass("vakata-context-parent"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6593 if(right_to_left) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6594 vakata_context.element.addClass("vakata-context-rtl").css("direction", "rtl"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6595 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6596 // also apply a RTL class? |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6597 vakata_context.element.find("ul").hide().end(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6598 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6599 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6600 }($)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6601 // $.jstree.defaults.plugins.push("contextmenu"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6602 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6603 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6604 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6605 * ### Drag'n'drop plugin |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6606 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6607 * Enables dragging and dropping of nodes in the tree, resulting in a move or copy operations. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6608 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6609 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6610 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6611 * stores all defaults for the drag'n'drop plugin |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6612 * @name $.jstree.defaults.dnd |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6613 * @plugin dnd |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6614 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6615 $.jstree.defaults.dnd = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6616 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6617 * a boolean indicating if a copy should be possible while dragging (by pressint the meta key or Ctrl). Defaults to `true`. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6618 * @name $.jstree.defaults.dnd.copy |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6619 * @plugin dnd |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6620 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6621 copy : true, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6622 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6623 * a number indicating how long a node should remain hovered while dragging to be opened. Defaults to `500`. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6624 * @name $.jstree.defaults.dnd.open_timeout |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6625 * @plugin dnd |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6626 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6627 open_timeout : 500, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6628 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6629 * a function invoked each time a node is about to be dragged, invoked in the tree's scope and receives the nodes about to be dragged as an argument (array) and the event that started the drag - return `false` to prevent dragging |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6630 * @name $.jstree.defaults.dnd.is_draggable |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6631 * @plugin dnd |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6632 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6633 is_draggable : true, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6634 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6635 * a boolean indicating if checks should constantly be made while the user is dragging the node (as opposed to checking only on drop), default is `true` |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6636 * @name $.jstree.defaults.dnd.check_while_dragging |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6637 * @plugin dnd |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6638 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6639 check_while_dragging : true, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6640 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6641 * a boolean indicating if nodes from this tree should only be copied with dnd (as opposed to moved), default is `false` |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6642 * @name $.jstree.defaults.dnd.always_copy |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6643 * @plugin dnd |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6644 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6645 always_copy : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6646 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6647 * when dropping a node "inside", this setting indicates the position the node should go to - it can be an integer or a string: "first" (same as 0) or "last", default is `0` |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6648 * @name $.jstree.defaults.dnd.inside_pos |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6649 * @plugin dnd |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6650 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6651 inside_pos : 0, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6652 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6653 * when starting the drag on a node that is selected this setting controls if all selected nodes are dragged or only the single node, default is `true`, which means all selected nodes are dragged when the drag is started on a selected node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6654 * @name $.jstree.defaults.dnd.drag_selection |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6655 * @plugin dnd |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6656 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6657 drag_selection : true, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6658 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6659 * controls whether dnd works on touch devices. If left as boolean true dnd will work the same as in desktop browsers, which in some cases may impair scrolling. If set to boolean false dnd will not work on touch devices. There is a special third option - string "selected" which means only selected nodes can be dragged on touch devices. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6660 * @name $.jstree.defaults.dnd.touch |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6661 * @plugin dnd |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6662 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6663 touch : true, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6664 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6665 * controls whether items can be dropped anywhere on the node, not just on the anchor, by default only the node anchor is a valid drop target. Works best with the wholerow plugin. If enabled on mobile depending on the interface it might be hard for the user to cancel the drop, since the whole tree container will be a valid drop target. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6666 * @name $.jstree.defaults.dnd.large_drop_target |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6667 * @plugin dnd |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6668 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6669 large_drop_target : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6670 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6671 * controls whether a drag can be initiated from any part of the node and not just the text/icon part, works best with the wholerow plugin. Keep in mind it can cause problems with tree scrolling on mobile depending on the interface - in that case set the touch option to "selected". |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6672 * @name $.jstree.defaults.dnd.large_drag_target |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6673 * @plugin dnd |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6674 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6675 large_drag_target : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6676 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6677 * controls whether use HTML5 dnd api instead of classical. That will allow better integration of dnd events with other HTML5 controls. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6678 * @reference http://caniuse.com/#feat=dragndrop |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6679 * @name $.jstree.defaults.dnd.use_html5 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6680 * @plugin dnd |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6681 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6682 use_html5: false |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6683 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6684 var drg, elm; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6685 // TODO: now check works by checking for each node individually, how about max_children, unique, etc? |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6686 $.jstree.plugins.dnd = function (options, parent) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6687 this.init = function (el, options) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6688 parent.init.call(this, el, options); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6689 this.settings.dnd.use_html5 = this.settings.dnd.use_html5 && ('draggable' in document.createElement('span')); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6690 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6691 this.bind = function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6692 parent.bind.call(this); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6693 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6694 this.element |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6695 .on(this.settings.dnd.use_html5 ? 'dragstart.jstree' : 'mousedown.jstree touchstart.jstree', this.settings.dnd.large_drag_target ? '.jstree-node' : '.jstree-anchor', $.proxy(function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6696 if(this.settings.dnd.large_drag_target && $(e.target).closest('.jstree-node')[0] !== e.currentTarget) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6697 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6698 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6699 if(e.type === "touchstart" && (!this.settings.dnd.touch || (this.settings.dnd.touch === 'selected' && !$(e.currentTarget).closest('.jstree-node').children('.jstree-anchor').hasClass('jstree-clicked')))) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6700 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6701 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6702 var obj = this.get_node(e.target), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6703 mlt = this.is_selected(obj) && this.settings.dnd.drag_selection ? this.get_top_selected().length : 1, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6704 txt = (mlt > 1 ? mlt + ' ' + this.get_string('nodes') : this.get_text(e.currentTarget)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6705 if(this.settings.core.force_text) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6706 txt = $.vakata.html.escape(txt); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6707 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6708 if(obj && obj.id && obj.id !== $.jstree.root && (e.which === 1 || e.type === "touchstart" || e.type === "dragstart") && |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6709 (this.settings.dnd.is_draggable === true || ($.isFunction(this.settings.dnd.is_draggable) && this.settings.dnd.is_draggable.call(this, (mlt > 1 ? this.get_top_selected(true) : [obj]), e))) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6710 ) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6711 drg = { 'jstree' : true, 'origin' : this, 'obj' : this.get_node(obj,true), 'nodes' : mlt > 1 ? this.get_top_selected() : [obj.id] }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6712 elm = e.currentTarget; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6713 if (this.settings.dnd.use_html5) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6714 $.vakata.dnd._trigger('start', e, { 'helper': $(), 'element': elm, 'data': drg }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6715 } else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6716 this.element.trigger('mousedown.jstree'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6717 return $.vakata.dnd.start(e, drg, '<div id="jstree-dnd" class="jstree-' + this.get_theme() + ' jstree-' + this.get_theme() + '-' + this.get_theme_variant() + ' ' + ( this.settings.core.themes.responsive ? ' jstree-dnd-responsive' : '' ) + '"><i class="jstree-icon jstree-er"></i>' + txt + '<ins class="jstree-copy" style="display:none;">+</ins></div>'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6718 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6719 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6720 }, this)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6721 if (this.settings.dnd.use_html5) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6722 this.element |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6723 .on('dragover.jstree', function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6724 e.preventDefault(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6725 $.vakata.dnd._trigger('move', e, { 'helper': $(), 'element': elm, 'data': drg }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6726 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6727 }) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6728 //.on('dragenter.jstree', this.settings.dnd.large_drop_target ? '.jstree-node' : '.jstree-anchor', $.proxy(function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6729 // e.preventDefault(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6730 // $.vakata.dnd._trigger('move', e, { 'helper': $(), 'element': elm, 'data': drg }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6731 // return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6732 // }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6733 .on('drop.jstree', $.proxy(function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6734 e.preventDefault(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6735 $.vakata.dnd._trigger('stop', e, { 'helper': $(), 'element': elm, 'data': drg }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6736 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6737 }, this)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6738 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6739 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6740 this.redraw_node = function(obj, deep, callback, force_render) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6741 obj = parent.redraw_node.apply(this, arguments); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6742 if (obj && this.settings.dnd.use_html5) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6743 if (this.settings.dnd.large_drag_target) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6744 obj.setAttribute('draggable', true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6745 } else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6746 var i, j, tmp = null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6747 for(i = 0, j = obj.childNodes.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6748 if(obj.childNodes[i] && obj.childNodes[i].className && obj.childNodes[i].className.indexOf("jstree-anchor") !== -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6749 tmp = obj.childNodes[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6750 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6751 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6752 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6753 if(tmp) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6754 tmp.setAttribute('draggable', true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6755 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6756 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6757 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6758 return obj; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6759 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6760 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6761 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6762 $(function() { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6763 // bind only once for all instances |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6764 var lastmv = false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6765 laster = false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6766 lastev = false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6767 opento = false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6768 marker = $('<div id="jstree-marker"> </div>').hide(); //.appendTo('body'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6769 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6770 $(document) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6771 .on('dnd_start.vakata.jstree', function (e, data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6772 lastmv = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6773 lastev = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6774 if(!data || !data.data || !data.data.jstree) { return; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6775 marker.appendTo('body'); //.show(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6776 }) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6777 .on('dnd_move.vakata.jstree', function (e, data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6778 var isDifferentNode = data.event.target !== lastev.target; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6779 if(opento) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6780 if (!data.event || data.event.type !== 'dragover' || isDifferentNode) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6781 clearTimeout(opento); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6782 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6783 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6784 if(!data || !data.data || !data.data.jstree) { return; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6785 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6786 // if we are hovering the marker image do nothing (can happen on "inside" drags) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6787 if(data.event.target.id && data.event.target.id === 'jstree-marker') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6788 return; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6789 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6790 lastev = data.event; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6791 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6792 var ins = $.jstree.reference(data.event.target), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6793 ref = false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6794 off = false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6795 rel = false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6796 tmp, l, t, h, p, i, o, ok, t1, t2, op, ps, pr, ip, tm, is_copy, pn; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6797 // if we are over an instance |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6798 if(ins && ins._data && ins._data.dnd) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6799 marker.attr('class', 'jstree-' + ins.get_theme() + ( ins.settings.core.themes.responsive ? ' jstree-dnd-responsive' : '' )); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6800 is_copy = data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (data.event.metaKey || data.event.ctrlKey))); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6801 data.helper |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6802 .children().attr('class', 'jstree-' + ins.get_theme() + ' jstree-' + ins.get_theme() + '-' + ins.get_theme_variant() + ' ' + ( ins.settings.core.themes.responsive ? ' jstree-dnd-responsive' : '' )) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6803 .find('.jstree-copy').first()[ is_copy ? 'show' : 'hide' ](); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6804 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6805 // if are hovering the container itself add a new root node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6806 //console.log(data.event); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6807 if( (data.event.target === ins.element[0] || data.event.target === ins.get_container_ul()[0]) && ins.get_container_ul().children().length === 0) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6808 ok = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6809 for(t1 = 0, t2 = data.data.nodes.length; t1 < t2; t1++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6810 ok = ok && ins.check( (data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (data.event.metaKey || data.event.ctrlKey)) ) ? "copy_node" : "move_node"), (data.data.origin && data.data.origin !== ins ? data.data.origin.get_node(data.data.nodes[t1]) : data.data.nodes[t1]), $.jstree.root, 'last', { 'dnd' : true, 'ref' : ins.get_node($.jstree.root), 'pos' : 'i', 'origin' : data.data.origin, 'is_multi' : (data.data.origin && data.data.origin !== ins), 'is_foreign' : (!data.data.origin) }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6811 if(!ok) { break; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6812 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6813 if(ok) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6814 lastmv = { 'ins' : ins, 'par' : $.jstree.root, 'pos' : 'last' }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6815 marker.hide(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6816 data.helper.find('.jstree-icon').first().removeClass('jstree-er').addClass('jstree-ok'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6817 if (data.event.originalEvent && data.event.originalEvent.dataTransfer) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6818 data.event.originalEvent.dataTransfer.dropEffect = is_copy ? 'copy' : 'move'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6819 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6820 return; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6821 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6822 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6823 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6824 // if we are hovering a tree node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6825 ref = ins.settings.dnd.large_drop_target ? $(data.event.target).closest('.jstree-node').children('.jstree-anchor') : $(data.event.target).closest('.jstree-anchor'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6826 if(ref && ref.length && ref.parent().is('.jstree-closed, .jstree-open, .jstree-leaf')) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6827 off = ref.offset(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6828 rel = (data.event.pageY !== undefined ? data.event.pageY : data.event.originalEvent.pageY) - off.top; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6829 h = ref.outerHeight(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6830 if(rel < h / 3) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6831 o = ['b', 'i', 'a']; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6832 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6833 else if(rel > h - h / 3) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6834 o = ['a', 'i', 'b']; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6835 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6836 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6837 o = rel > h / 2 ? ['i', 'a', 'b'] : ['i', 'b', 'a']; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6838 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6839 $.each(o, function (j, v) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6840 switch(v) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6841 case 'b': |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6842 l = off.left - 6; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6843 t = off.top; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6844 p = ins.get_parent(ref); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6845 i = ref.parent().index(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6846 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6847 case 'i': |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6848 ip = ins.settings.dnd.inside_pos; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6849 tm = ins.get_node(ref.parent()); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6850 l = off.left - 2; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6851 t = off.top + h / 2 + 1; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6852 p = tm.id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6853 i = ip === 'first' ? 0 : (ip === 'last' ? tm.children.length : Math.min(ip, tm.children.length)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6854 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6855 case 'a': |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6856 l = off.left - 6; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6857 t = off.top + h; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6858 p = ins.get_parent(ref); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6859 i = ref.parent().index() + 1; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6860 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6861 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6862 ok = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6863 for(t1 = 0, t2 = data.data.nodes.length; t1 < t2; t1++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6864 op = data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (data.event.metaKey || data.event.ctrlKey))) ? "copy_node" : "move_node"; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6865 ps = i; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6866 if(op === "move_node" && v === 'a' && (data.data.origin && data.data.origin === ins) && p === ins.get_parent(data.data.nodes[t1])) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6867 pr = ins.get_node(p); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6868 if(ps > $.inArray(data.data.nodes[t1], pr.children)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6869 ps -= 1; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6870 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6871 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6872 ok = ok && ( (ins && ins.settings && ins.settings.dnd && ins.settings.dnd.check_while_dragging === false) || ins.check(op, (data.data.origin && data.data.origin !== ins ? data.data.origin.get_node(data.data.nodes[t1]) : data.data.nodes[t1]), p, ps, { 'dnd' : true, 'ref' : ins.get_node(ref.parent()), 'pos' : v, 'origin' : data.data.origin, 'is_multi' : (data.data.origin && data.data.origin !== ins), 'is_foreign' : (!data.data.origin) }) ); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6873 if(!ok) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6874 if(ins && ins.last_error) { laster = ins.last_error(); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6875 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6876 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6877 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6878 if(v === 'i' && ref.parent().is('.jstree-closed') && ins.settings.dnd.open_timeout) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6879 if (!data.event || data.event.type !== 'dragover' || isDifferentNode) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6880 if (opento) { clearTimeout(opento); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6881 opento = setTimeout((function (x, z) { return function () { x.open_node(z); }; }(ins, ref)), ins.settings.dnd.open_timeout); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6882 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6883 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6884 if(ok) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6885 pn = ins.get_node(p, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6886 if (!pn.hasClass('.jstree-dnd-parent')) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6887 $('.jstree-dnd-parent').removeClass('jstree-dnd-parent'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6888 pn.addClass('jstree-dnd-parent'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6889 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6890 lastmv = { 'ins' : ins, 'par' : p, 'pos' : v === 'i' && ip === 'last' && i === 0 && !ins.is_loaded(tm) ? 'last' : i }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6891 marker.css({ 'left' : l + 'px', 'top' : t + 'px' }).show(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6892 data.helper.find('.jstree-icon').first().removeClass('jstree-er').addClass('jstree-ok'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6893 if (data.event.originalEvent && data.event.originalEvent.dataTransfer) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6894 data.event.originalEvent.dataTransfer.dropEffect = is_copy ? 'copy' : 'move'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6895 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6896 laster = {}; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6897 o = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6898 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6899 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6900 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6901 if(o === true) { return; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6902 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6903 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6904 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6905 $('.jstree-dnd-parent').removeClass('jstree-dnd-parent'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6906 lastmv = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6907 data.helper.find('.jstree-icon').removeClass('jstree-ok').addClass('jstree-er'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6908 if (data.event.originalEvent && data.event.originalEvent.dataTransfer) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6909 data.event.originalEvent.dataTransfer.dropEffect = 'none'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6910 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6911 marker.hide(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6912 }) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6913 .on('dnd_scroll.vakata.jstree', function (e, data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6914 if(!data || !data.data || !data.data.jstree) { return; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6915 marker.hide(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6916 lastmv = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6917 lastev = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6918 data.helper.find('.jstree-icon').first().removeClass('jstree-ok').addClass('jstree-er'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6919 }) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6920 .on('dnd_stop.vakata.jstree', function (e, data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6921 $('.jstree-dnd-parent').removeClass('jstree-dnd-parent'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6922 if(opento) { clearTimeout(opento); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6923 if(!data || !data.data || !data.data.jstree) { return; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6924 marker.hide().detach(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6925 var i, j, nodes = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6926 if(lastmv) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6927 for(i = 0, j = data.data.nodes.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6928 nodes[i] = data.data.origin ? data.data.origin.get_node(data.data.nodes[i]) : data.data.nodes[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6929 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6930 lastmv.ins[ data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (data.event.metaKey || data.event.ctrlKey))) ? 'copy_node' : 'move_node' ](nodes, lastmv.par, lastmv.pos, false, false, false, data.data.origin); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6931 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6932 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6933 i = $(data.event.target).closest('.jstree'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6934 if(i.length && laster && laster.error && laster.error === 'check') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6935 i = i.jstree(true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6936 if(i) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6937 i.settings.core.error.call(this, laster); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6938 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6939 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6940 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6941 lastev = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6942 lastmv = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6943 }) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6944 .on('keyup.jstree keydown.jstree', function (e, data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6945 data = $.vakata.dnd._get(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6946 if(data && data.data && data.data.jstree) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6947 if (e.type === "keyup" && e.which === 27) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6948 if (opento) { clearTimeout(opento); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6949 lastmv = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6950 laster = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6951 lastev = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6952 opento = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6953 marker.hide().detach(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6954 $.vakata.dnd._clean(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6955 } else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6956 data.helper.find('.jstree-copy').first()[ data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (e.metaKey || e.ctrlKey))) ? 'show' : 'hide' ](); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6957 if(lastev) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6958 lastev.metaKey = e.metaKey; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6959 lastev.ctrlKey = e.ctrlKey; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6960 $.vakata.dnd._trigger('move', lastev); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6961 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6962 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6963 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6964 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6965 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6966 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6967 // helpers |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6968 (function ($) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6969 $.vakata.html = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6970 div : $('<div />'), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6971 escape : function (str) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6972 return $.vakata.html.div.text(str).html(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6973 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6974 strip : function (str) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6975 return $.vakata.html.div.empty().append($.parseHTML(str)).text(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6976 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6977 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6978 // private variable |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6979 var vakata_dnd = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6980 element : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6981 target : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6982 is_down : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6983 is_drag : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6984 helper : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6985 helper_w: 0, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6986 data : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6987 init_x : 0, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6988 init_y : 0, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6989 scroll_l: 0, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6990 scroll_t: 0, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6991 scroll_e: false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6992 scroll_i: false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6993 is_touch: false |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6994 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6995 $.vakata.dnd = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6996 settings : { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6997 scroll_speed : 10, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6998 scroll_proximity : 20, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
6999 helper_left : 5, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7000 helper_top : 10, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7001 threshold : 5, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7002 threshold_touch : 10 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7003 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7004 _trigger : function (event_name, e, data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7005 if (data === undefined) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7006 data = $.vakata.dnd._get(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7007 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7008 data.event = e; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7009 $(document).triggerHandler("dnd_" + event_name + ".vakata", data); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7010 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7011 _get : function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7012 return { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7013 "data" : vakata_dnd.data, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7014 "element" : vakata_dnd.element, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7015 "helper" : vakata_dnd.helper |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7016 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7017 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7018 _clean : function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7019 if(vakata_dnd.helper) { vakata_dnd.helper.remove(); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7020 if(vakata_dnd.scroll_i) { clearInterval(vakata_dnd.scroll_i); vakata_dnd.scroll_i = false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7021 vakata_dnd = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7022 element : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7023 target : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7024 is_down : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7025 is_drag : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7026 helper : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7027 helper_w: 0, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7028 data : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7029 init_x : 0, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7030 init_y : 0, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7031 scroll_l: 0, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7032 scroll_t: 0, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7033 scroll_e: false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7034 scroll_i: false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7035 is_touch: false |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7036 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7037 $(document).off("mousemove.vakata.jstree touchmove.vakata.jstree", $.vakata.dnd.drag); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7038 $(document).off("mouseup.vakata.jstree touchend.vakata.jstree", $.vakata.dnd.stop); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7039 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7040 _scroll : function (init_only) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7041 if(!vakata_dnd.scroll_e || (!vakata_dnd.scroll_l && !vakata_dnd.scroll_t)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7042 if(vakata_dnd.scroll_i) { clearInterval(vakata_dnd.scroll_i); vakata_dnd.scroll_i = false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7043 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7044 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7045 if(!vakata_dnd.scroll_i) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7046 vakata_dnd.scroll_i = setInterval($.vakata.dnd._scroll, 100); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7047 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7048 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7049 if(init_only === true) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7050 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7051 var i = vakata_dnd.scroll_e.scrollTop(), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7052 j = vakata_dnd.scroll_e.scrollLeft(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7053 vakata_dnd.scroll_e.scrollTop(i + vakata_dnd.scroll_t * $.vakata.dnd.settings.scroll_speed); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7054 vakata_dnd.scroll_e.scrollLeft(j + vakata_dnd.scroll_l * $.vakata.dnd.settings.scroll_speed); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7055 if(i !== vakata_dnd.scroll_e.scrollTop() || j !== vakata_dnd.scroll_e.scrollLeft()) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7056 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7057 * triggered on the document when a drag causes an element to scroll |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7058 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7059 * @plugin dnd |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7060 * @name dnd_scroll.vakata |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7061 * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7062 * @param {DOM} element the DOM element being dragged |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7063 * @param {jQuery} helper the helper shown next to the mouse |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7064 * @param {jQuery} event the element that is scrolling |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7065 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7066 $.vakata.dnd._trigger("scroll", vakata_dnd.scroll_e); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7067 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7068 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7069 start : function (e, data, html) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7070 if(e.type === "touchstart" && e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7071 e.pageX = e.originalEvent.changedTouches[0].pageX; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7072 e.pageY = e.originalEvent.changedTouches[0].pageY; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7073 e.target = document.elementFromPoint(e.originalEvent.changedTouches[0].pageX - window.pageXOffset, e.originalEvent.changedTouches[0].pageY - window.pageYOffset); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7074 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7075 if(vakata_dnd.is_drag) { $.vakata.dnd.stop({}); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7076 try { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7077 e.currentTarget.unselectable = "on"; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7078 e.currentTarget.onselectstart = function() { return false; }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7079 if(e.currentTarget.style) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7080 e.currentTarget.style.touchAction = "none"; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7081 e.currentTarget.style.msTouchAction = "none"; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7082 e.currentTarget.style.MozUserSelect = "none"; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7083 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7084 } catch(ignore) { } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7085 vakata_dnd.init_x = e.pageX; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7086 vakata_dnd.init_y = e.pageY; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7087 vakata_dnd.data = data; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7088 vakata_dnd.is_down = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7089 vakata_dnd.element = e.currentTarget; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7090 vakata_dnd.target = e.target; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7091 vakata_dnd.is_touch = e.type === "touchstart"; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7092 if(html !== false) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7093 vakata_dnd.helper = $("<div id='vakata-dnd'></div>").html(html).css({ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7094 "display" : "block", |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7095 "margin" : "0", |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7096 "padding" : "0", |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7097 "position" : "absolute", |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7098 "top" : "-2000px", |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7099 "lineHeight" : "16px", |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7100 "zIndex" : "10000" |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7101 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7102 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7103 $(document).on("mousemove.vakata.jstree touchmove.vakata.jstree", $.vakata.dnd.drag); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7104 $(document).on("mouseup.vakata.jstree touchend.vakata.jstree", $.vakata.dnd.stop); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7105 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7106 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7107 drag : function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7108 if(e.type === "touchmove" && e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7109 e.pageX = e.originalEvent.changedTouches[0].pageX; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7110 e.pageY = e.originalEvent.changedTouches[0].pageY; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7111 e.target = document.elementFromPoint(e.originalEvent.changedTouches[0].pageX - window.pageXOffset, e.originalEvent.changedTouches[0].pageY - window.pageYOffset); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7112 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7113 if(!vakata_dnd.is_down) { return; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7114 if(!vakata_dnd.is_drag) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7115 if( |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7116 Math.abs(e.pageX - vakata_dnd.init_x) > (vakata_dnd.is_touch ? $.vakata.dnd.settings.threshold_touch : $.vakata.dnd.settings.threshold) || |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7117 Math.abs(e.pageY - vakata_dnd.init_y) > (vakata_dnd.is_touch ? $.vakata.dnd.settings.threshold_touch : $.vakata.dnd.settings.threshold) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7118 ) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7119 if(vakata_dnd.helper) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7120 vakata_dnd.helper.appendTo("body"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7121 vakata_dnd.helper_w = vakata_dnd.helper.outerWidth(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7122 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7123 vakata_dnd.is_drag = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7124 $(vakata_dnd.target).one('click.vakata', false); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7125 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7126 * triggered on the document when a drag starts |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7127 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7128 * @plugin dnd |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7129 * @name dnd_start.vakata |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7130 * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7131 * @param {DOM} element the DOM element being dragged |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7132 * @param {jQuery} helper the helper shown next to the mouse |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7133 * @param {Object} event the event that caused the start (probably mousemove) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7134 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7135 $.vakata.dnd._trigger("start", e); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7136 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7137 else { return; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7138 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7139 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7140 var d = false, w = false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7141 dh = false, wh = false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7142 dw = false, ww = false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7143 dt = false, dl = false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7144 ht = false, hl = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7145 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7146 vakata_dnd.scroll_t = 0; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7147 vakata_dnd.scroll_l = 0; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7148 vakata_dnd.scroll_e = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7149 $($(e.target).parentsUntil("body").addBack().get().reverse()) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7150 .filter(function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7151 return (/^auto|scroll$/).test($(this).css("overflow")) && |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7152 (this.scrollHeight > this.offsetHeight || this.scrollWidth > this.offsetWidth); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7153 }) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7154 .each(function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7155 var t = $(this), o = t.offset(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7156 if(this.scrollHeight > this.offsetHeight) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7157 if(o.top + t.height() - e.pageY < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_t = 1; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7158 if(e.pageY - o.top < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_t = -1; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7159 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7160 if(this.scrollWidth > this.offsetWidth) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7161 if(o.left + t.width() - e.pageX < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_l = 1; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7162 if(e.pageX - o.left < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_l = -1; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7163 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7164 if(vakata_dnd.scroll_t || vakata_dnd.scroll_l) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7165 vakata_dnd.scroll_e = $(this); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7166 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7167 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7168 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7169 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7170 if(!vakata_dnd.scroll_e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7171 d = $(document); w = $(window); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7172 dh = d.height(); wh = w.height(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7173 dw = d.width(); ww = w.width(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7174 dt = d.scrollTop(); dl = d.scrollLeft(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7175 if(dh > wh && e.pageY - dt < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_t = -1; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7176 if(dh > wh && wh - (e.pageY - dt) < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_t = 1; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7177 if(dw > ww && e.pageX - dl < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_l = -1; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7178 if(dw > ww && ww - (e.pageX - dl) < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_l = 1; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7179 if(vakata_dnd.scroll_t || vakata_dnd.scroll_l) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7180 vakata_dnd.scroll_e = d; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7181 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7182 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7183 if(vakata_dnd.scroll_e) { $.vakata.dnd._scroll(true); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7184 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7185 if(vakata_dnd.helper) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7186 ht = parseInt(e.pageY + $.vakata.dnd.settings.helper_top, 10); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7187 hl = parseInt(e.pageX + $.vakata.dnd.settings.helper_left, 10); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7188 if(dh && ht + 25 > dh) { ht = dh - 50; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7189 if(dw && hl + vakata_dnd.helper_w > dw) { hl = dw - (vakata_dnd.helper_w + 2); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7190 vakata_dnd.helper.css({ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7191 left : hl + "px", |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7192 top : ht + "px" |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7193 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7194 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7195 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7196 * triggered on the document when a drag is in progress |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7197 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7198 * @plugin dnd |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7199 * @name dnd_move.vakata |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7200 * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7201 * @param {DOM} element the DOM element being dragged |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7202 * @param {jQuery} helper the helper shown next to the mouse |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7203 * @param {Object} event the event that caused this to trigger (most likely mousemove) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7204 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7205 $.vakata.dnd._trigger("move", e); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7206 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7207 }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7208 stop : function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7209 if(e.type === "touchend" && e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7210 e.pageX = e.originalEvent.changedTouches[0].pageX; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7211 e.pageY = e.originalEvent.changedTouches[0].pageY; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7212 e.target = document.elementFromPoint(e.originalEvent.changedTouches[0].pageX - window.pageXOffset, e.originalEvent.changedTouches[0].pageY - window.pageYOffset); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7213 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7214 if(vakata_dnd.is_drag) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7215 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7216 * triggered on the document when a drag stops (the dragged element is dropped) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7217 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7218 * @plugin dnd |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7219 * @name dnd_stop.vakata |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7220 * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7221 * @param {DOM} element the DOM element being dragged |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7222 * @param {jQuery} helper the helper shown next to the mouse |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7223 * @param {Object} event the event that caused the stop |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7224 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7225 if (e.target !== vakata_dnd.target) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7226 $(vakata_dnd.target).off('click.vakata'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7227 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7228 $.vakata.dnd._trigger("stop", e); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7229 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7230 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7231 if(e.type === "touchend" && e.target === vakata_dnd.target) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7232 var to = setTimeout(function () { $(e.target).click(); }, 100); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7233 $(e.target).one('click', function() { if(to) { clearTimeout(to); } }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7234 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7235 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7236 $.vakata.dnd._clean(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7237 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7238 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7239 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7240 }($)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7241 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7242 // include the dnd plugin by default |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7243 // $.jstree.defaults.plugins.push("dnd"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7244 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7245 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7246 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7247 * ### Massload plugin |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7248 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7249 * Adds massload functionality to jsTree, so that multiple nodes can be loaded in a single request (only useful with lazy loading). |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7250 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7251 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7252 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7253 * massload configuration |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7254 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7255 * It is possible to set this to a standard jQuery-like AJAX config. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7256 * In addition to the standard jQuery ajax options here you can supply functions for `data` and `url`, the functions will be run in the current instance's scope and a param will be passed indicating which node IDs need to be loaded, the return value of those functions will be used. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7257 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7258 * You can also set this to a function, that function will receive the node IDs being loaded as argument and a second param which is a function (callback) which should be called with the result. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7259 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7260 * Both the AJAX and the function approach rely on the same return value - an object where the keys are the node IDs, and the value is the children of that node as an array. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7261 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7262 * { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7263 * "id1" : [{ "text" : "Child of ID1", "id" : "c1" }, { "text" : "Another child of ID1", "id" : "c2" }], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7264 * "id2" : [{ "text" : "Child of ID2", "id" : "c3" }] |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7265 * } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7266 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7267 * @name $.jstree.defaults.massload |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7268 * @plugin massload |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7269 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7270 $.jstree.defaults.massload = null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7271 $.jstree.plugins.massload = function (options, parent) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7272 this.init = function (el, options) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7273 this._data.massload = {}; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7274 parent.init.call(this, el, options); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7275 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7276 this._load_nodes = function (nodes, callback, is_callback, force_reload) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7277 var s = this.settings.massload, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7278 nodesString = JSON.stringify(nodes), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7279 toLoad = [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7280 m = this._model.data, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7281 i, j, dom; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7282 if (!is_callback) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7283 for(i = 0, j = nodes.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7284 if(!m[nodes[i]] || ( (!m[nodes[i]].state.loaded && !m[nodes[i]].state.failed) || force_reload) ) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7285 toLoad.push(nodes[i]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7286 dom = this.get_node(nodes[i], true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7287 if (dom && dom.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7288 dom.addClass("jstree-loading").attr('aria-busy',true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7289 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7290 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7291 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7292 this._data.massload = {}; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7293 if (toLoad.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7294 if($.isFunction(s)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7295 return s.call(this, toLoad, $.proxy(function (data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7296 var i, j; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7297 if(data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7298 for(i in data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7299 if(data.hasOwnProperty(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7300 this._data.massload[i] = data[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7301 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7302 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7303 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7304 for(i = 0, j = nodes.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7305 dom = this.get_node(nodes[i], true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7306 if (dom && dom.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7307 dom.removeClass("jstree-loading").attr('aria-busy',false); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7308 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7309 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7310 parent._load_nodes.call(this, nodes, callback, is_callback, force_reload); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7311 }, this)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7312 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7313 if(typeof s === 'object' && s && s.url) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7314 s = $.extend(true, {}, s); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7315 if($.isFunction(s.url)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7316 s.url = s.url.call(this, toLoad); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7317 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7318 if($.isFunction(s.data)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7319 s.data = s.data.call(this, toLoad); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7320 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7321 return $.ajax(s) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7322 .done($.proxy(function (data,t,x) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7323 var i, j; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7324 if(data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7325 for(i in data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7326 if(data.hasOwnProperty(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7327 this._data.massload[i] = data[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7328 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7329 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7330 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7331 for(i = 0, j = nodes.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7332 dom = this.get_node(nodes[i], true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7333 if (dom && dom.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7334 dom.removeClass("jstree-loading").attr('aria-busy',false); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7335 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7336 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7337 parent._load_nodes.call(this, nodes, callback, is_callback, force_reload); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7338 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7339 .fail($.proxy(function (f) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7340 parent._load_nodes.call(this, nodes, callback, is_callback, force_reload); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7341 }, this)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7342 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7343 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7344 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7345 return parent._load_nodes.call(this, nodes, callback, is_callback, force_reload); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7346 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7347 this._load_node = function (obj, callback) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7348 var data = this._data.massload[obj.id], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7349 rslt = null, dom; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7350 if(data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7351 rslt = this[typeof data === 'string' ? '_append_html_data' : '_append_json_data']( |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7352 obj, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7353 typeof data === 'string' ? $($.parseHTML(data)).filter(function () { return this.nodeType !== 3; }) : data, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7354 function (status) { callback.call(this, status); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7355 ); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7356 dom = this.get_node(obj.id, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7357 if (dom && dom.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7358 dom.removeClass("jstree-loading").attr('aria-busy',false); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7359 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7360 delete this._data.massload[obj.id]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7361 return rslt; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7362 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7363 return parent._load_node.call(this, obj, callback); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7364 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7365 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7366 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7367 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7368 * ### Search plugin |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7369 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7370 * Adds search functionality to jsTree. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7371 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7372 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7373 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7374 * stores all defaults for the search plugin |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7375 * @name $.jstree.defaults.search |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7376 * @plugin search |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7377 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7378 $.jstree.defaults.search = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7379 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7380 * a jQuery-like AJAX config, which jstree uses if a server should be queried for results. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7381 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7382 * A `str` (which is the search string) parameter will be added with the request, an optional `inside` parameter will be added if the search is limited to a node id. The expected result is a JSON array with nodes that need to be opened so that matching nodes will be revealed. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7383 * Leave this setting as `false` to not query the server. You can also set this to a function, which will be invoked in the instance's scope and receive 3 parameters - the search string, the callback to call with the array of nodes to load, and the optional node ID to limit the search to |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7384 * @name $.jstree.defaults.search.ajax |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7385 * @plugin search |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7386 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7387 ajax : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7388 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7389 * Indicates if the search should be fuzzy or not (should `chnd3` match `child node 3`). Default is `false`. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7390 * @name $.jstree.defaults.search.fuzzy |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7391 * @plugin search |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7392 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7393 fuzzy : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7394 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7395 * Indicates if the search should be case sensitive. Default is `false`. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7396 * @name $.jstree.defaults.search.case_sensitive |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7397 * @plugin search |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7398 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7399 case_sensitive : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7400 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7401 * Indicates if the tree should be filtered (by default) to show only matching nodes (keep in mind this can be a heavy on large trees in old browsers). |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7402 * This setting can be changed at runtime when calling the search method. Default is `false`. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7403 * @name $.jstree.defaults.search.show_only_matches |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7404 * @plugin search |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7405 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7406 show_only_matches : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7407 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7408 * Indicates if the children of matched element are shown (when show_only_matches is true) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7409 * This setting can be changed at runtime when calling the search method. Default is `false`. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7410 * @name $.jstree.defaults.search.show_only_matches_children |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7411 * @plugin search |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7412 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7413 show_only_matches_children : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7414 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7415 * Indicates if all nodes opened to reveal the search result, should be closed when the search is cleared or a new search is performed. Default is `true`. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7416 * @name $.jstree.defaults.search.close_opened_onclear |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7417 * @plugin search |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7418 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7419 close_opened_onclear : true, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7420 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7421 * Indicates if only leaf nodes should be included in search results. Default is `false`. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7422 * @name $.jstree.defaults.search.search_leaves_only |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7423 * @plugin search |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7424 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7425 search_leaves_only : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7426 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7427 * If set to a function it wil be called in the instance's scope with two arguments - search string and node (where node will be every node in the structure, so use with caution). |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7428 * If the function returns a truthy value the node will be considered a match (it might not be displayed if search_only_leaves is set to true and the node is not a leaf). Default is `false`. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7429 * @name $.jstree.defaults.search.search_callback |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7430 * @plugin search |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7431 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7432 search_callback : false |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7433 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7434 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7435 $.jstree.plugins.search = function (options, parent) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7436 this.bind = function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7437 parent.bind.call(this); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7438 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7439 this._data.search.str = ""; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7440 this._data.search.dom = $(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7441 this._data.search.res = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7442 this._data.search.opn = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7443 this._data.search.som = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7444 this._data.search.smc = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7445 this._data.search.hdn = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7446 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7447 this.element |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7448 .on("search.jstree", $.proxy(function (e, data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7449 if(this._data.search.som && data.res.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7450 var m = this._model.data, i, j, p = [], k, l; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7451 for(i = 0, j = data.res.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7452 if(m[data.res[i]] && !m[data.res[i]].state.hidden) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7453 p.push(data.res[i]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7454 p = p.concat(m[data.res[i]].parents); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7455 if(this._data.search.smc) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7456 for (k = 0, l = m[data.res[i]].children_d.length; k < l; k++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7457 if (m[m[data.res[i]].children_d[k]] && !m[m[data.res[i]].children_d[k]].state.hidden) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7458 p.push(m[data.res[i]].children_d[k]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7459 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7460 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7461 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7462 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7463 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7464 p = $.vakata.array_remove_item($.vakata.array_unique(p), $.jstree.root); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7465 this._data.search.hdn = this.hide_all(true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7466 this.show_node(p, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7467 this.redraw(true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7468 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7469 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7470 .on("clear_search.jstree", $.proxy(function (e, data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7471 if(this._data.search.som && data.res.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7472 this.show_node(this._data.search.hdn, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7473 this.redraw(true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7474 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7475 }, this)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7476 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7477 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7478 * used to search the tree nodes for a given string |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7479 * @name search(str [, skip_async]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7480 * @param {String} str the search string |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7481 * @param {Boolean} skip_async if set to true server will not be queried even if configured |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7482 * @param {Boolean} show_only_matches if set to true only matching nodes will be shown (keep in mind this can be very slow on large trees or old browsers) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7483 * @param {mixed} inside an optional node to whose children to limit the search |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7484 * @param {Boolean} append if set to true the results of this search are appended to the previous search |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7485 * @plugin search |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7486 * @trigger search.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7487 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7488 this.search = function (str, skip_async, show_only_matches, inside, append, show_only_matches_children) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7489 if(str === false || $.trim(str.toString()) === "") { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7490 return this.clear_search(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7491 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7492 inside = this.get_node(inside); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7493 inside = inside && inside.id ? inside.id : null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7494 str = str.toString(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7495 var s = this.settings.search, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7496 a = s.ajax ? s.ajax : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7497 m = this._model.data, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7498 f = null, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7499 r = [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7500 p = [], i, j; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7501 if(this._data.search.res.length && !append) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7502 this.clear_search(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7503 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7504 if(show_only_matches === undefined) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7505 show_only_matches = s.show_only_matches; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7506 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7507 if(show_only_matches_children === undefined) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7508 show_only_matches_children = s.show_only_matches_children; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7509 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7510 if(!skip_async && a !== false) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7511 if($.isFunction(a)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7512 return a.call(this, str, $.proxy(function (d) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7513 if(d && d.d) { d = d.d; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7514 this._load_nodes(!$.isArray(d) ? [] : $.vakata.array_unique(d), function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7515 this.search(str, true, show_only_matches, inside, append, show_only_matches_children); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7516 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7517 }, this), inside); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7518 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7519 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7520 a = $.extend({}, a); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7521 if(!a.data) { a.data = {}; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7522 a.data.str = str; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7523 if(inside) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7524 a.data.inside = inside; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7525 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7526 if (this._data.search.lastRequest) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7527 this._data.search.lastRequest.abort(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7528 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7529 this._data.search.lastRequest = $.ajax(a) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7530 .fail($.proxy(function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7531 this._data.core.last_error = { 'error' : 'ajax', 'plugin' : 'search', 'id' : 'search_01', 'reason' : 'Could not load search parents', 'data' : JSON.stringify(a) }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7532 this.settings.core.error.call(this, this._data.core.last_error); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7533 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7534 .done($.proxy(function (d) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7535 if(d && d.d) { d = d.d; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7536 this._load_nodes(!$.isArray(d) ? [] : $.vakata.array_unique(d), function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7537 this.search(str, true, show_only_matches, inside, append, show_only_matches_children); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7538 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7539 }, this)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7540 return this._data.search.lastRequest; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7541 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7542 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7543 if(!append) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7544 this._data.search.str = str; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7545 this._data.search.dom = $(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7546 this._data.search.res = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7547 this._data.search.opn = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7548 this._data.search.som = show_only_matches; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7549 this._data.search.smc = show_only_matches_children; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7550 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7551 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7552 f = new $.vakata.search(str, true, { caseSensitive : s.case_sensitive, fuzzy : s.fuzzy }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7553 $.each(m[inside ? inside : $.jstree.root].children_d, function (ii, i) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7554 var v = m[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7555 if(v.text && !v.state.hidden && (!s.search_leaves_only || (v.state.loaded && v.children.length === 0)) && ( (s.search_callback && s.search_callback.call(this, str, v)) || (!s.search_callback && f.search(v.text).isMatch) ) ) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7556 r.push(i); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7557 p = p.concat(v.parents); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7558 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7559 }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7560 if(r.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7561 p = $.vakata.array_unique(p); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7562 for(i = 0, j = p.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7563 if(p[i] !== $.jstree.root && m[p[i]] && this.open_node(p[i], null, 0) === true) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7564 this._data.search.opn.push(p[i]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7565 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7566 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7567 if(!append) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7568 this._data.search.dom = $(this.element[0].querySelectorAll('#' + $.map(r, function (v) { return "0123456789".indexOf(v[0]) !== -1 ? '\\3' + v[0] + ' ' + v.substr(1).replace($.jstree.idregex,'\\$&') : v.replace($.jstree.idregex,'\\$&'); }).join(', #'))); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7569 this._data.search.res = r; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7570 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7571 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7572 this._data.search.dom = this._data.search.dom.add($(this.element[0].querySelectorAll('#' + $.map(r, function (v) { return "0123456789".indexOf(v[0]) !== -1 ? '\\3' + v[0] + ' ' + v.substr(1).replace($.jstree.idregex,'\\$&') : v.replace($.jstree.idregex,'\\$&'); }).join(', #')))); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7573 this._data.search.res = $.vakata.array_unique(this._data.search.res.concat(r)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7574 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7575 this._data.search.dom.children(".jstree-anchor").addClass('jstree-search'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7576 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7577 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7578 * triggered after search is complete |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7579 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7580 * @name search.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7581 * @param {jQuery} nodes a jQuery collection of matching nodes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7582 * @param {String} str the search string |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7583 * @param {Array} res a collection of objects represeing the matching nodes |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7584 * @plugin search |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7585 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7586 this.trigger('search', { nodes : this._data.search.dom, str : str, res : this._data.search.res, show_only_matches : show_only_matches }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7587 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7588 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7589 * used to clear the last search (removes classes and shows all nodes if filtering is on) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7590 * @name clear_search() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7591 * @plugin search |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7592 * @trigger clear_search.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7593 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7594 this.clear_search = function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7595 if(this.settings.search.close_opened_onclear) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7596 this.close_node(this._data.search.opn, 0); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7597 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7598 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7599 * triggered after search is complete |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7600 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7601 * @name clear_search.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7602 * @param {jQuery} nodes a jQuery collection of matching nodes (the result from the last search) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7603 * @param {String} str the search string (the last search string) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7604 * @param {Array} res a collection of objects represeing the matching nodes (the result from the last search) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7605 * @plugin search |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7606 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7607 this.trigger('clear_search', { 'nodes' : this._data.search.dom, str : this._data.search.str, res : this._data.search.res }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7608 if(this._data.search.res.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7609 this._data.search.dom = $(this.element[0].querySelectorAll('#' + $.map(this._data.search.res, function (v) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7610 return "0123456789".indexOf(v[0]) !== -1 ? '\\3' + v[0] + ' ' + v.substr(1).replace($.jstree.idregex,'\\$&') : v.replace($.jstree.idregex,'\\$&'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7611 }).join(', #'))); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7612 this._data.search.dom.children(".jstree-anchor").removeClass("jstree-search"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7613 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7614 this._data.search.str = ""; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7615 this._data.search.res = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7616 this._data.search.opn = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7617 this._data.search.dom = $(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7618 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7619 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7620 this.redraw_node = function(obj, deep, callback, force_render) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7621 obj = parent.redraw_node.apply(this, arguments); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7622 if(obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7623 if($.inArray(obj.id, this._data.search.res) !== -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7624 var i, j, tmp = null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7625 for(i = 0, j = obj.childNodes.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7626 if(obj.childNodes[i] && obj.childNodes[i].className && obj.childNodes[i].className.indexOf("jstree-anchor") !== -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7627 tmp = obj.childNodes[i]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7628 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7629 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7630 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7631 if(tmp) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7632 tmp.className += ' jstree-search'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7633 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7634 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7635 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7636 return obj; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7637 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7638 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7639 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7640 // helpers |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7641 (function ($) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7642 // from http://kiro.me/projects/fuse.html |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7643 $.vakata.search = function(pattern, txt, options) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7644 options = options || {}; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7645 options = $.extend({}, $.vakata.search.defaults, options); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7646 if(options.fuzzy !== false) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7647 options.fuzzy = true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7648 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7649 pattern = options.caseSensitive ? pattern : pattern.toLowerCase(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7650 var MATCH_LOCATION = options.location, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7651 MATCH_DISTANCE = options.distance, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7652 MATCH_THRESHOLD = options.threshold, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7653 patternLen = pattern.length, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7654 matchmask, pattern_alphabet, match_bitapScore, search; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7655 if(patternLen > 32) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7656 options.fuzzy = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7657 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7658 if(options.fuzzy) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7659 matchmask = 1 << (patternLen - 1); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7660 pattern_alphabet = (function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7661 var mask = {}, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7662 i = 0; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7663 for (i = 0; i < patternLen; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7664 mask[pattern.charAt(i)] = 0; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7665 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7666 for (i = 0; i < patternLen; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7667 mask[pattern.charAt(i)] |= 1 << (patternLen - i - 1); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7668 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7669 return mask; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7670 }()); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7671 match_bitapScore = function (e, x) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7672 var accuracy = e / patternLen, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7673 proximity = Math.abs(MATCH_LOCATION - x); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7674 if(!MATCH_DISTANCE) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7675 return proximity ? 1.0 : accuracy; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7676 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7677 return accuracy + (proximity / MATCH_DISTANCE); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7678 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7679 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7680 search = function (text) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7681 text = options.caseSensitive ? text : text.toLowerCase(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7682 if(pattern === text || text.indexOf(pattern) !== -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7683 return { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7684 isMatch: true, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7685 score: 0 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7686 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7687 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7688 if(!options.fuzzy) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7689 return { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7690 isMatch: false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7691 score: 1 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7692 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7693 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7694 var i, j, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7695 textLen = text.length, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7696 scoreThreshold = MATCH_THRESHOLD, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7697 bestLoc = text.indexOf(pattern, MATCH_LOCATION), |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7698 binMin, binMid, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7699 binMax = patternLen + textLen, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7700 lastRd, start, finish, rd, charMatch, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7701 score = 1, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7702 locations = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7703 if (bestLoc !== -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7704 scoreThreshold = Math.min(match_bitapScore(0, bestLoc), scoreThreshold); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7705 bestLoc = text.lastIndexOf(pattern, MATCH_LOCATION + patternLen); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7706 if (bestLoc !== -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7707 scoreThreshold = Math.min(match_bitapScore(0, bestLoc), scoreThreshold); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7708 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7709 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7710 bestLoc = -1; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7711 for (i = 0; i < patternLen; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7712 binMin = 0; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7713 binMid = binMax; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7714 while (binMin < binMid) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7715 if (match_bitapScore(i, MATCH_LOCATION + binMid) <= scoreThreshold) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7716 binMin = binMid; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7717 } else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7718 binMax = binMid; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7719 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7720 binMid = Math.floor((binMax - binMin) / 2 + binMin); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7721 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7722 binMax = binMid; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7723 start = Math.max(1, MATCH_LOCATION - binMid + 1); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7724 finish = Math.min(MATCH_LOCATION + binMid, textLen) + patternLen; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7725 rd = new Array(finish + 2); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7726 rd[finish + 1] = (1 << i) - 1; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7727 for (j = finish; j >= start; j--) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7728 charMatch = pattern_alphabet[text.charAt(j - 1)]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7729 if (i === 0) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7730 rd[j] = ((rd[j + 1] << 1) | 1) & charMatch; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7731 } else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7732 rd[j] = ((rd[j + 1] << 1) | 1) & charMatch | (((lastRd[j + 1] | lastRd[j]) << 1) | 1) | lastRd[j + 1]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7733 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7734 if (rd[j] & matchmask) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7735 score = match_bitapScore(i, j - 1); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7736 if (score <= scoreThreshold) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7737 scoreThreshold = score; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7738 bestLoc = j - 1; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7739 locations.push(bestLoc); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7740 if (bestLoc > MATCH_LOCATION) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7741 start = Math.max(1, 2 * MATCH_LOCATION - bestLoc); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7742 } else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7743 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7744 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7745 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7746 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7747 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7748 if (match_bitapScore(i + 1, MATCH_LOCATION) > scoreThreshold) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7749 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7750 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7751 lastRd = rd; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7752 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7753 return { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7754 isMatch: bestLoc >= 0, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7755 score: score |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7756 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7757 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7758 return txt === true ? { 'search' : search } : search(txt); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7759 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7760 $.vakata.search.defaults = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7761 location : 0, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7762 distance : 100, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7763 threshold : 0.6, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7764 fuzzy : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7765 caseSensitive : false |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7766 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7767 }($)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7768 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7769 // include the search plugin by default |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7770 // $.jstree.defaults.plugins.push("search"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7771 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7772 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7773 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7774 * ### Sort plugin |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7775 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7776 * Automatically sorts all siblings in the tree according to a sorting function. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7777 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7778 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7779 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7780 * the settings function used to sort the nodes. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7781 * It is executed in the tree's context, accepts two nodes as arguments and should return `1` or `-1`. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7782 * @name $.jstree.defaults.sort |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7783 * @plugin sort |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7784 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7785 $.jstree.defaults.sort = function (a, b) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7786 //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); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7787 return this.get_text(a) > this.get_text(b) ? 1 : -1; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7788 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7789 $.jstree.plugins.sort = function (options, parent) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7790 this.bind = function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7791 parent.bind.call(this); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7792 this.element |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7793 .on("model.jstree", $.proxy(function (e, data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7794 this.sort(data.parent, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7795 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7796 .on("rename_node.jstree create_node.jstree", $.proxy(function (e, data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7797 this.sort(data.parent || data.node.parent, false); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7798 this.redraw_node(data.parent || data.node.parent, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7799 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7800 .on("move_node.jstree copy_node.jstree", $.proxy(function (e, data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7801 this.sort(data.parent, false); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7802 this.redraw_node(data.parent, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7803 }, this)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7804 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7805 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7806 * used to sort a node's children |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7807 * @private |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7808 * @name sort(obj [, deep]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7809 * @param {mixed} obj the node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7810 * @param {Boolean} deep if set to `true` nodes are sorted recursively. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7811 * @plugin sort |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7812 * @trigger search.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7813 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7814 this.sort = function (obj, deep) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7815 var i, j; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7816 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7817 if(obj && obj.children && obj.children.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7818 obj.children.sort($.proxy(this.settings.sort, this)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7819 if(deep) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7820 for(i = 0, j = obj.children_d.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7821 this.sort(obj.children_d[i], false); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7822 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7823 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7824 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7825 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7826 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7827 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7828 // include the sort plugin by default |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7829 // $.jstree.defaults.plugins.push("sort"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7830 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7831 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7832 * ### State plugin |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7833 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7834 * Saves the state of the tree (selected nodes, opened nodes) on the user's computer using available options (localStorage, cookies, etc) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7835 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7836 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7837 var to = false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7838 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7839 * stores all defaults for the state plugin |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7840 * @name $.jstree.defaults.state |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7841 * @plugin state |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7842 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7843 $.jstree.defaults.state = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7844 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7845 * A string for the key to use when saving the current tree (change if using multiple trees in your project). Defaults to `jstree`. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7846 * @name $.jstree.defaults.state.key |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7847 * @plugin state |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7848 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7849 key : 'jstree', |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7850 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7851 * A space separated list of events that trigger a state save. Defaults to `changed.jstree open_node.jstree close_node.jstree`. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7852 * @name $.jstree.defaults.state.events |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7853 * @plugin state |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7854 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7855 events : 'changed.jstree open_node.jstree close_node.jstree check_node.jstree uncheck_node.jstree', |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7856 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7857 * Time in milliseconds after which the state will expire. Defaults to 'false' meaning - no expire. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7858 * @name $.jstree.defaults.state.ttl |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7859 * @plugin state |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7860 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7861 ttl : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7862 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7863 * A function that will be executed prior to restoring state with one argument - the state object. Can be used to clear unwanted parts of the state. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7864 * @name $.jstree.defaults.state.filter |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7865 * @plugin state |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7866 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7867 filter : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7868 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7869 * Should loaded nodes be restored (setting this to true means that it is possible that the whole tree will be loaded for some users - use with caution). Defaults to `false` |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7870 * @name $.jstree.defaults.state.preserve_loaded |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7871 * @plugin state |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7872 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7873 preserve_loaded : false |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7874 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7875 $.jstree.plugins.state = function (options, parent) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7876 this.bind = function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7877 parent.bind.call(this); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7878 var bind = $.proxy(function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7879 this.element.on(this.settings.state.events, $.proxy(function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7880 if(to) { clearTimeout(to); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7881 to = setTimeout($.proxy(function () { this.save_state(); }, this), 100); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7882 }, this)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7883 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7884 * triggered when the state plugin is finished restoring the state (and immediately after ready if there is no state to restore). |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7885 * @event |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7886 * @name state_ready.jstree |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7887 * @plugin state |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7888 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7889 this.trigger('state_ready'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7890 }, this); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7891 this.element |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7892 .on("ready.jstree", $.proxy(function (e, data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7893 this.element.one("restore_state.jstree", bind); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7894 if(!this.restore_state()) { bind(); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7895 }, this)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7896 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7897 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7898 * save the state |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7899 * @name save_state() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7900 * @plugin state |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7901 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7902 this.save_state = function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7903 var tm = this.get_state(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7904 if (!this.settings.state.preserve_loaded) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7905 delete tm.core.loaded; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7906 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7907 var st = { 'state' : tm, 'ttl' : this.settings.state.ttl, 'sec' : +(new Date()) }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7908 $.vakata.storage.set(this.settings.state.key, JSON.stringify(st)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7909 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7910 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7911 * restore the state from the user's computer |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7912 * @name restore_state() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7913 * @plugin state |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7914 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7915 this.restore_state = function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7916 var k = $.vakata.storage.get(this.settings.state.key); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7917 if(!!k) { try { k = JSON.parse(k); } catch(ex) { return false; } } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7918 if(!!k && k.ttl && k.sec && +(new Date()) - k.sec > k.ttl) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7919 if(!!k && k.state) { k = k.state; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7920 if(!!k && $.isFunction(this.settings.state.filter)) { k = this.settings.state.filter.call(this, k); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7921 if(!!k) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7922 if (!this.settings.state.preserve_loaded) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7923 delete k.core.loaded; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7924 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7925 this.element.one("set_state.jstree", function (e, data) { data.instance.trigger('restore_state', { 'state' : $.extend(true, {}, k) }); }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7926 this.set_state(k); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7927 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7928 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7929 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7930 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7931 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7932 * clear the state on the user's computer |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7933 * @name clear_state() |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7934 * @plugin state |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7935 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7936 this.clear_state = function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7937 return $.vakata.storage.del(this.settings.state.key); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7938 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7939 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7940 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7941 (function ($, undefined) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7942 $.vakata.storage = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7943 // simply specifying the functions in FF throws an error |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7944 set : function (key, val) { return window.localStorage.setItem(key, val); }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7945 get : function (key) { return window.localStorage.getItem(key); }, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7946 del : function (key) { return window.localStorage.removeItem(key); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7947 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7948 }($)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7949 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7950 // include the state plugin by default |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7951 // $.jstree.defaults.plugins.push("state"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7952 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7953 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7954 * ### Types plugin |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7955 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7956 * Makes it possible to add predefined types for groups of nodes, which make it possible to easily control nesting rules and icon for each group. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7957 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7958 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7959 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7960 * An object storing all types as key value pairs, where the key is the type name and the value is an object that could contain following keys (all optional). |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7961 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7962 * * `max_children` the maximum number of immediate children this node type can have. Do not specify or set to `-1` for unlimited. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7963 * * `max_depth` the maximum number of nesting this node type can have. A value of `1` would mean that the node can have children, but no grandchildren. Do not specify or set to `-1` for unlimited. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7964 * * `valid_children` an array of node type strings, that nodes of this type can have as children. Do not specify or set to `-1` for no limits. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7965 * * `icon` a string - can be a path to an icon or a className, if using an image that is in the current directory use a `./` prefix, otherwise it will be detected as a class. Omit to use the default icon from your theme. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7966 * * `li_attr` an object of values which will be used to add HTML attributes on the resulting LI DOM node (merged with the node's own data) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7967 * * `a_attr` an object of values which will be used to add HTML attributes on the resulting A DOM node (merged with the node's own data) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7968 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7969 * There are two predefined types: |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7970 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7971 * * `#` represents the root of the tree, for example `max_children` would control the maximum number of root nodes. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7972 * * `default` represents the default node - any settings here will be applied to all nodes that do not have a type specified. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7973 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7974 * @name $.jstree.defaults.types |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7975 * @plugin types |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7976 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7977 $.jstree.defaults.types = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7978 'default' : {} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7979 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7980 $.jstree.defaults.types[$.jstree.root] = {}; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7981 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7982 $.jstree.plugins.types = function (options, parent) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7983 this.init = function (el, options) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7984 var i, j; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7985 if(options && options.types && options.types['default']) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7986 for(i in options.types) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7987 if(i !== "default" && i !== $.jstree.root && options.types.hasOwnProperty(i)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7988 for(j in options.types['default']) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7989 if(options.types['default'].hasOwnProperty(j) && options.types[i][j] === undefined) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7990 options.types[i][j] = options.types['default'][j]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7991 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7992 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7993 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7994 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7995 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7996 parent.init.call(this, el, options); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7997 this._model.data[$.jstree.root].type = $.jstree.root; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7998 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
7999 this.refresh = function (skip_loading, forget_state) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8000 parent.refresh.call(this, skip_loading, forget_state); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8001 this._model.data[$.jstree.root].type = $.jstree.root; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8002 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8003 this.bind = function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8004 this.element |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8005 .on('model.jstree', $.proxy(function (e, data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8006 var m = this._model.data, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8007 dpc = data.nodes, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8008 t = this.settings.types, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8009 i, j, c = 'default', k; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8010 for(i = 0, j = dpc.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8011 c = 'default'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8012 if(m[dpc[i]].original && m[dpc[i]].original.type && t[m[dpc[i]].original.type]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8013 c = m[dpc[i]].original.type; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8014 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8015 if(m[dpc[i]].data && m[dpc[i]].data.jstree && m[dpc[i]].data.jstree.type && t[m[dpc[i]].data.jstree.type]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8016 c = m[dpc[i]].data.jstree.type; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8017 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8018 m[dpc[i]].type = c; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8019 if(m[dpc[i]].icon === true && t[c].icon !== undefined) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8020 m[dpc[i]].icon = t[c].icon; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8021 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8022 if(t[c].li_attr !== undefined && typeof t[c].li_attr === 'object') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8023 for (k in t[c].li_attr) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8024 if (t[c].li_attr.hasOwnProperty(k)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8025 if (k === 'id') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8026 continue; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8027 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8028 else if (m[dpc[i]].li_attr[k] === undefined) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8029 m[dpc[i]].li_attr[k] = t[c].li_attr[k]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8030 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8031 else if (k === 'class') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8032 m[dpc[i]].li_attr['class'] = t[c].li_attr['class'] + ' ' + m[dpc[i]].li_attr['class']; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8033 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8034 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8035 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8036 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8037 if(t[c].a_attr !== undefined && typeof t[c].a_attr === 'object') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8038 for (k in t[c].a_attr) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8039 if (t[c].a_attr.hasOwnProperty(k)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8040 if (k === 'id') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8041 continue; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8042 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8043 else if (m[dpc[i]].a_attr[k] === undefined) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8044 m[dpc[i]].a_attr[k] = t[c].a_attr[k]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8045 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8046 else if (k === 'href' && m[dpc[i]].a_attr[k] === '#') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8047 m[dpc[i]].a_attr['href'] = t[c].a_attr['href']; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8048 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8049 else if (k === 'class') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8050 m[dpc[i]].a_attr['class'] = t[c].a_attr['class'] + ' ' + m[dpc[i]].a_attr['class']; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8051 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8052 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8053 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8054 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8055 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8056 m[$.jstree.root].type = $.jstree.root; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8057 }, this)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8058 parent.bind.call(this); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8059 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8060 this.get_json = function (obj, options, flat) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8061 var i, j, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8062 m = this._model.data, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8063 opt = options ? $.extend(true, {}, options, {no_id:false}) : {}, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8064 tmp = parent.get_json.call(this, obj, opt, flat); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8065 if(tmp === false) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8066 if($.isArray(tmp)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8067 for(i = 0, j = tmp.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8068 tmp[i].type = tmp[i].id && m[tmp[i].id] && m[tmp[i].id].type ? m[tmp[i].id].type : "default"; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8069 if(options && options.no_id) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8070 delete tmp[i].id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8071 if(tmp[i].li_attr && tmp[i].li_attr.id) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8072 delete tmp[i].li_attr.id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8073 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8074 if(tmp[i].a_attr && tmp[i].a_attr.id) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8075 delete tmp[i].a_attr.id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8076 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8077 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8078 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8079 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8080 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8081 tmp.type = tmp.id && m[tmp.id] && m[tmp.id].type ? m[tmp.id].type : "default"; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8082 if(options && options.no_id) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8083 tmp = this._delete_ids(tmp); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8084 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8085 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8086 return tmp; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8087 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8088 this._delete_ids = function (tmp) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8089 if($.isArray(tmp)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8090 for(var i = 0, j = tmp.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8091 tmp[i] = this._delete_ids(tmp[i]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8092 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8093 return tmp; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8094 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8095 delete tmp.id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8096 if(tmp.li_attr && tmp.li_attr.id) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8097 delete tmp.li_attr.id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8098 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8099 if(tmp.a_attr && tmp.a_attr.id) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8100 delete tmp.a_attr.id; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8101 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8102 if(tmp.children && $.isArray(tmp.children)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8103 tmp.children = this._delete_ids(tmp.children); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8104 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8105 return tmp; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8106 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8107 this.check = function (chk, obj, par, pos, more) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8108 if(parent.check.call(this, chk, obj, par, pos, more) === false) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8109 obj = obj && obj.id ? obj : this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8110 par = par && par.id ? par : this.get_node(par); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8111 var m = obj && obj.id ? (more && more.origin ? more.origin : $.jstree.reference(obj.id)) : null, tmp, d, i, j; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8112 m = m && m._model && m._model.data ? m._model.data : null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8113 switch(chk) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8114 case "create_node": |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8115 case "move_node": |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8116 case "copy_node": |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8117 if(chk !== 'move_node' || $.inArray(obj.id, par.children) === -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8118 tmp = this.get_rules(par); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8119 if(tmp.max_children !== undefined && tmp.max_children !== -1 && tmp.max_children === par.children.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8120 this._data.core.last_error = { 'error' : 'check', 'plugin' : 'types', 'id' : 'types_01', 'reason' : 'max_children prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8121 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8122 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8123 if(tmp.valid_children !== undefined && tmp.valid_children !== -1 && $.inArray((obj.type || 'default'), tmp.valid_children) === -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8124 this._data.core.last_error = { 'error' : 'check', 'plugin' : 'types', 'id' : 'types_02', 'reason' : 'valid_children prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8125 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8126 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8127 if(m && obj.children_d && obj.parents) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8128 d = 0; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8129 for(i = 0, j = obj.children_d.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8130 d = Math.max(d, m[obj.children_d[i]].parents.length); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8131 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8132 d = d - obj.parents.length + 1; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8133 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8134 if(d <= 0 || d === undefined) { d = 1; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8135 do { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8136 if(tmp.max_depth !== undefined && tmp.max_depth !== -1 && tmp.max_depth < d) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8137 this._data.core.last_error = { 'error' : 'check', 'plugin' : 'types', 'id' : 'types_03', 'reason' : 'max_depth prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8138 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8139 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8140 par = this.get_node(par.parent); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8141 tmp = this.get_rules(par); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8142 d++; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8143 } while(par); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8144 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8145 break; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8146 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8147 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8148 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8149 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8150 * used to retrieve the type settings object for a node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8151 * @name get_rules(obj) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8152 * @param {mixed} obj the node to find the rules for |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8153 * @return {Object} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8154 * @plugin types |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8155 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8156 this.get_rules = function (obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8157 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8158 if(!obj) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8159 var tmp = this.get_type(obj, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8160 if(tmp.max_depth === undefined) { tmp.max_depth = -1; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8161 if(tmp.max_children === undefined) { tmp.max_children = -1; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8162 if(tmp.valid_children === undefined) { tmp.valid_children = -1; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8163 return tmp; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8164 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8165 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8166 * used to retrieve the type string or settings object for a node |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8167 * @name get_type(obj [, rules]) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8168 * @param {mixed} obj the node to find the rules for |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8169 * @param {Boolean} rules if set to `true` instead of a string the settings object will be returned |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8170 * @return {String|Object} |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8171 * @plugin types |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8172 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8173 this.get_type = function (obj, rules) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8174 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8175 return (!obj) ? false : ( rules ? $.extend({ 'type' : obj.type }, this.settings.types[obj.type]) : obj.type); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8176 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8177 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8178 * used to change a node's type |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8179 * @name set_type(obj, type) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8180 * @param {mixed} obj the node to change |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8181 * @param {String} type the new type |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8182 * @plugin types |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8183 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8184 this.set_type = function (obj, type) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8185 var m = this._model.data, t, t1, t2, old_type, old_icon, k, d, a; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8186 if($.isArray(obj)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8187 obj = obj.slice(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8188 for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8189 this.set_type(obj[t1], type); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8190 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8191 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8192 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8193 t = this.settings.types; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8194 obj = this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8195 if(!t[type] || !obj) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8196 d = this.get_node(obj, true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8197 if (d && d.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8198 a = d.children('.jstree-anchor'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8199 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8200 old_type = obj.type; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8201 old_icon = this.get_icon(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8202 obj.type = type; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8203 if(old_icon === true || !t[old_type] || (t[old_type].icon !== undefined && old_icon === t[old_type].icon)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8204 this.set_icon(obj, t[type].icon !== undefined ? t[type].icon : true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8205 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8206 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8207 // remove old type props |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8208 if(t[old_type] && t[old_type].li_attr !== undefined && typeof t[old_type].li_attr === 'object') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8209 for (k in t[old_type].li_attr) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8210 if (t[old_type].li_attr.hasOwnProperty(k)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8211 if (k === 'id') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8212 continue; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8213 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8214 else if (k === 'class') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8215 m[obj.id].li_attr['class'] = (m[obj.id].li_attr['class'] || '').replace(t[old_type].li_attr[k], ''); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8216 if (d) { d.removeClass(t[old_type].li_attr[k]); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8217 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8218 else if (m[obj.id].li_attr[k] === t[old_type].li_attr[k]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8219 m[obj.id].li_attr[k] = null; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8220 if (d) { d.removeAttr(k); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8221 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8222 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8223 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8224 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8225 if(t[old_type] && t[old_type].a_attr !== undefined && typeof t[old_type].a_attr === 'object') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8226 for (k in t[old_type].a_attr) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8227 if (t[old_type].a_attr.hasOwnProperty(k)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8228 if (k === 'id') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8229 continue; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8230 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8231 else if (k === 'class') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8232 m[obj.id].a_attr['class'] = (m[obj.id].a_attr['class'] || '').replace(t[old_type].a_attr[k], ''); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8233 if (a) { a.removeClass(t[old_type].a_attr[k]); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8234 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8235 else if (m[obj.id].a_attr[k] === t[old_type].a_attr[k]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8236 if (k === 'href') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8237 m[obj.id].a_attr[k] = '#'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8238 if (a) { a.attr('href', '#'); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8239 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8240 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8241 delete m[obj.id].a_attr[k]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8242 if (a) { a.removeAttr(k); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8243 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8244 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8245 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8246 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8247 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8248 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8249 // add new props |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8250 if(t[type].li_attr !== undefined && typeof t[type].li_attr === 'object') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8251 for (k in t[type].li_attr) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8252 if (t[type].li_attr.hasOwnProperty(k)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8253 if (k === 'id') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8254 continue; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8255 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8256 else if (m[obj.id].li_attr[k] === undefined) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8257 m[obj.id].li_attr[k] = t[type].li_attr[k]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8258 if (d) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8259 if (k === 'class') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8260 d.addClass(t[type].li_attr[k]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8261 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8262 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8263 d.attr(k, t[type].li_attr[k]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8264 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8265 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8266 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8267 else if (k === 'class') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8268 m[obj.id].li_attr['class'] = t[type].li_attr[k] + ' ' + m[obj.id].li_attr['class']; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8269 if (d) { d.addClass(t[type].li_attr[k]); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8270 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8271 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8272 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8273 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8274 if(t[type].a_attr !== undefined && typeof t[type].a_attr === 'object') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8275 for (k in t[type].a_attr) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8276 if (t[type].a_attr.hasOwnProperty(k)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8277 if (k === 'id') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8278 continue; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8279 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8280 else if (m[obj.id].a_attr[k] === undefined) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8281 m[obj.id].a_attr[k] = t[type].a_attr[k]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8282 if (a) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8283 if (k === 'class') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8284 a.addClass(t[type].a_attr[k]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8285 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8286 else { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8287 a.attr(k, t[type].a_attr[k]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8288 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8289 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8290 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8291 else if (k === 'href' && m[obj.id].a_attr[k] === '#') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8292 m[obj.id].a_attr['href'] = t[type].a_attr['href']; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8293 if (a) { a.attr('href', t[type].a_attr['href']); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8294 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8295 else if (k === 'class') { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8296 m[obj.id].a_attr['class'] = t[type].a_attr['class'] + ' ' + m[obj.id].a_attr['class']; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8297 if (a) { a.addClass(t[type].a_attr[k]); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8298 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8299 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8300 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8301 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8302 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8303 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8304 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8305 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8306 // include the types plugin by default |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8307 // $.jstree.defaults.plugins.push("types"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8308 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8309 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8310 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8311 * ### Unique plugin |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8312 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8313 * Enforces that no nodes with the same name can coexist as siblings. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8314 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8315 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8316 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8317 * stores all defaults for the unique plugin |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8318 * @name $.jstree.defaults.unique |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8319 * @plugin unique |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8320 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8321 $.jstree.defaults.unique = { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8322 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8323 * Indicates if the comparison should be case sensitive. Default is `false`. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8324 * @name $.jstree.defaults.unique.case_sensitive |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8325 * @plugin unique |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8326 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8327 case_sensitive : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8328 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8329 * Indicates if white space should be trimmed before the comparison. Default is `false`. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8330 * @name $.jstree.defaults.unique.trim_whitespace |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8331 * @plugin unique |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8332 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8333 trim_whitespace : false, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8334 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8335 * A callback executed in the instance's scope when a new node is created and the name is already taken, the two arguments are the conflicting name and the counter. The default will produce results like `New node (2)`. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8336 * @name $.jstree.defaults.unique.duplicate |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8337 * @plugin unique |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8338 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8339 duplicate : function (name, counter) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8340 return name + ' (' + counter + ')'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8341 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8342 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8343 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8344 $.jstree.plugins.unique = function (options, parent) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8345 this.check = function (chk, obj, par, pos, more) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8346 if(parent.check.call(this, chk, obj, par, pos, more) === false) { return false; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8347 obj = obj && obj.id ? obj : this.get_node(obj); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8348 par = par && par.id ? par : this.get_node(par); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8349 if(!par || !par.children) { return true; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8350 var n = chk === "rename_node" ? pos : obj.text, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8351 c = [], |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8352 s = this.settings.unique.case_sensitive, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8353 w = this.settings.unique.trim_whitespace, |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8354 m = this._model.data, i, j, t; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8355 for(i = 0, j = par.children.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8356 t = m[par.children[i]].text; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8357 if (!s) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8358 t = t.toLowerCase(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8359 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8360 if (w) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8361 t = t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8362 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8363 c.push(t); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8364 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8365 if(!s) { n = n.toLowerCase(); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8366 if (w) { n = n.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8367 switch(chk) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8368 case "delete_node": |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8369 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8370 case "rename_node": |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8371 t = obj.text || ''; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8372 if (!s) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8373 t = t.toLowerCase(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8374 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8375 if (w) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8376 t = t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8377 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8378 i = ($.inArray(n, c) === -1 || (obj.text && t === n)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8379 if(!i) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8380 this._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_01', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8381 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8382 return i; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8383 case "create_node": |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8384 i = ($.inArray(n, c) === -1); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8385 if(!i) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8386 this._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_04', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8387 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8388 return i; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8389 case "copy_node": |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8390 i = ($.inArray(n, c) === -1); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8391 if(!i) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8392 this._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_02', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8393 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8394 return i; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8395 case "move_node": |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8396 i = ( (obj.parent === par.id && (!more || !more.is_multi)) || $.inArray(n, c) === -1); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8397 if(!i) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8398 this._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_03', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8399 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8400 return i; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8401 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8402 return true; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8403 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8404 this.create_node = function (par, node, pos, callback, is_loaded) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8405 if(!node || node.text === undefined) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8406 if(par === null) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8407 par = $.jstree.root; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8408 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8409 par = this.get_node(par); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8410 if(!par) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8411 return parent.create_node.call(this, par, node, pos, callback, is_loaded); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8412 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8413 pos = pos === undefined ? "last" : pos; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8414 if(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8415 return parent.create_node.call(this, par, node, pos, callback, is_loaded); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8416 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8417 if(!node) { node = {}; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8418 var tmp, n, dpc, i, j, m = this._model.data, s = this.settings.unique.case_sensitive, w = this.settings.unique.trim_whitespace, cb = this.settings.unique.duplicate, t; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8419 n = tmp = this.get_string('New node'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8420 dpc = []; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8421 for(i = 0, j = par.children.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8422 t = m[par.children[i]].text; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8423 if (!s) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8424 t = t.toLowerCase(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8425 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8426 if (w) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8427 t = t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8428 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8429 dpc.push(t); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8430 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8431 i = 1; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8432 t = n; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8433 if (!s) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8434 t = t.toLowerCase(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8435 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8436 if (w) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8437 t = t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8438 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8439 while($.inArray(t, dpc) !== -1) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8440 n = cb.call(this, tmp, (++i)).toString(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8441 t = n; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8442 if (!s) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8443 t = t.toLowerCase(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8444 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8445 if (w) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8446 t = t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8447 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8448 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8449 node.text = n; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8450 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8451 return parent.create_node.call(this, par, node, pos, callback, is_loaded); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8452 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8453 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8454 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8455 // include the unique plugin by default |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8456 // $.jstree.defaults.plugins.push("unique"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8457 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8458 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8459 /** |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8460 * ### Wholerow plugin |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8461 * |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8462 * Makes each node appear block level. Making selection easier. May cause slow down for large trees in old browsers. |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8463 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8464 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8465 var div = document.createElement('DIV'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8466 div.setAttribute('unselectable','on'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8467 div.setAttribute('role','presentation'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8468 div.className = 'jstree-wholerow'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8469 div.innerHTML = ' '; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8470 $.jstree.plugins.wholerow = function (options, parent) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8471 this.bind = function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8472 parent.bind.call(this); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8473 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8474 this.element |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8475 .on('ready.jstree set_state.jstree', $.proxy(function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8476 this.hide_dots(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8477 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8478 .on("init.jstree loading.jstree ready.jstree", $.proxy(function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8479 //div.style.height = this._data.core.li_height + 'px'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8480 this.get_container_ul().addClass('jstree-wholerow-ul'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8481 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8482 .on("deselect_all.jstree", $.proxy(function (e, data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8483 this.element.find('.jstree-wholerow-clicked').removeClass('jstree-wholerow-clicked'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8484 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8485 .on("changed.jstree", $.proxy(function (e, data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8486 this.element.find('.jstree-wholerow-clicked').removeClass('jstree-wholerow-clicked'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8487 var tmp = false, i, j; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8488 for(i = 0, j = data.selected.length; i < j; i++) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8489 tmp = this.get_node(data.selected[i], true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8490 if(tmp && tmp.length) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8491 tmp.children('.jstree-wholerow').addClass('jstree-wholerow-clicked'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8492 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8493 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8494 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8495 .on("open_node.jstree", $.proxy(function (e, data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8496 this.get_node(data.node, true).find('.jstree-clicked').parent().children('.jstree-wholerow').addClass('jstree-wholerow-clicked'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8497 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8498 .on("hover_node.jstree dehover_node.jstree", $.proxy(function (e, data) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8499 if(e.type === "hover_node" && this.is_disabled(data.node)) { return; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8500 this.get_node(data.node, true).children('.jstree-wholerow')[e.type === "hover_node"?"addClass":"removeClass"]('jstree-wholerow-hovered'); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8501 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8502 .on("contextmenu.jstree", ".jstree-wholerow", $.proxy(function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8503 if (this._data.contextmenu) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8504 e.preventDefault(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8505 var tmp = $.Event('contextmenu', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey, pageX : e.pageX, pageY : e.pageY }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8506 $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(tmp); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8507 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8508 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8509 /*! |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8510 .on("mousedown.jstree touchstart.jstree", ".jstree-wholerow", function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8511 if(e.target === e.currentTarget) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8512 var a = $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8513 e.target = a[0]; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8514 a.trigger(e); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8515 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8516 }) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8517 */ |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8518 .on("click.jstree", ".jstree-wholerow", function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8519 e.stopImmediatePropagation(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8520 var tmp = $.Event('click', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8521 $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(tmp).focus(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8522 }) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8523 .on("dblclick.jstree", ".jstree-wholerow", function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8524 e.stopImmediatePropagation(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8525 var tmp = $.Event('dblclick', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8526 $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(tmp).focus(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8527 }) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8528 .on("click.jstree", ".jstree-leaf > .jstree-ocl", $.proxy(function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8529 e.stopImmediatePropagation(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8530 var tmp = $.Event('click', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8531 $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(tmp).focus(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8532 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8533 .on("mouseover.jstree", ".jstree-wholerow, .jstree-icon", $.proxy(function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8534 e.stopImmediatePropagation(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8535 if(!this.is_disabled(e.currentTarget)) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8536 this.hover_node(e.currentTarget); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8537 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8538 return false; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8539 }, this)) |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8540 .on("mouseleave.jstree", ".jstree-node", $.proxy(function (e) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8541 this.dehover_node(e.currentTarget); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8542 }, this)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8543 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8544 this.teardown = function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8545 if(this.settings.wholerow) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8546 this.element.find(".jstree-wholerow").remove(); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8547 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8548 parent.teardown.call(this); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8549 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8550 this.redraw_node = function(obj, deep, callback, force_render) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8551 obj = parent.redraw_node.apply(this, arguments); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8552 if(obj) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8553 var tmp = div.cloneNode(true); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8554 //tmp.style.height = this._data.core.li_height + 'px'; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8555 if($.inArray(obj.id, this._data.core.selected) !== -1) { tmp.className += ' jstree-wholerow-clicked'; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8556 if(this._data.core.focused && this._data.core.focused === obj.id) { tmp.className += ' jstree-wholerow-hovered'; } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8557 obj.insertBefore(tmp, obj.childNodes[0]); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8558 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8559 return obj; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8560 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8561 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8562 // include the wholerow plugin by default |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8563 // $.jstree.defaults.plugins.push("wholerow"); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8564 if(document.registerElement && Object && Object.create) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8565 var proto = Object.create(HTMLElement.prototype); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8566 proto.createdCallback = function () { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8567 var c = { core : {}, plugins : [] }, i; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8568 for(i in $.jstree.plugins) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8569 if($.jstree.plugins.hasOwnProperty(i) && this.attributes[i]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8570 c.plugins.push(i); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8571 if(this.getAttribute(i) && JSON.parse(this.getAttribute(i))) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8572 c[i] = JSON.parse(this.getAttribute(i)); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8573 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8574 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8575 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8576 for(i in $.jstree.defaults.core) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8577 if($.jstree.defaults.core.hasOwnProperty(i) && this.attributes[i]) { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8578 c.core[i] = JSON.parse(this.getAttribute(i)) || this.getAttribute(i); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8579 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8580 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8581 $(this).jstree(c); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8582 }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8583 // proto.attributeChangedCallback = function (name, previous, value) { }; |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8584 try { |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8585 document.registerElement("vakata-jstree", { prototype: proto }); |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8586 } catch(ignore) { } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8587 } |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8588 |
803f4888f36a
planemo upload commit 004a320fc0619c234164b44c64ba5dce205734e1
mingchen0919
parents:
diff
changeset
|
8589 })); |