2 * JQuery zTree exHideNodes v3.5.16
\r
5 * Copyright (c) 2010 Hunter.z
\r
7 * Licensed same as jquery - MIT License
\r
8 * http://www.opensource.org/licenses/mit-license.php
\r
10 * email: hunter.z@263.net
\r
14 //default init node of exLib
\r
15 var _initNode = function(setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) {
\r
16 if (typeof n.isHidden == "string") n.isHidden = tools.eqs(n.isHidden, "true");
\r
17 n.isHidden = !!n.isHidden;
\r
18 data.initHideForExCheck(setting, n);
\r
21 _beforeA = function(setting, node, html) {},
\r
22 //update zTreeObj, add method of exLib
\r
23 _zTreeTools = function(setting, zTreeTools) {
\r
24 zTreeTools.showNodes = function(nodes, options) {
\r
25 view.showNodes(setting, nodes, options);
\r
27 zTreeTools.showNode = function(node, options) {
\r
31 view.showNodes(setting, [node], options);
\r
33 zTreeTools.hideNodes = function(nodes, options) {
\r
34 view.hideNodes(setting, nodes, options);
\r
36 zTreeTools.hideNode = function(node, options) {
\r
40 view.hideNodes(setting, [node], options);
\r
43 var _checkNode = zTreeTools.checkNode;
\r
45 zTreeTools.checkNode = function(node, checked, checkTypeFlag, callbackFlag) {
\r
46 if (!!node && !!node.isHidden) {
\r
49 _checkNode.apply(zTreeTools, arguments);
\r
53 //method of operate data
\r
55 initHideForExCheck: function(setting, n) {
\r
56 if (n.isHidden && setting.check && setting.check.enable) {
\r
57 if(typeof n._nocheck == "undefined") {
\r
58 n._nocheck = !!n.nocheck
\r
61 n.check_Child_State = -1;
\r
62 if (view.repairParentChkClassWithSelf) {
\r
63 view.repairParentChkClassWithSelf(setting, n);
\r
67 initShowForExCheck: function(setting, n) {
\r
68 if (!n.isHidden && setting.check && setting.check.enable) {
\r
69 if(typeof n._nocheck != "undefined") {
\r
70 n.nocheck = n._nocheck;
\r
73 if (view.setChkClass) {
\r
74 var checkObj = $$(n, consts.id.CHECK, setting);
\r
75 view.setChkClass(setting, checkObj, n);
\r
77 if (view.repairParentChkClassWithSelf) {
\r
78 view.repairParentChkClassWithSelf(setting, n);
\r
83 //method of operate ztree dom
\r
85 clearOldFirstNode: function(setting, node) {
\r
86 var n = node.getNextNode();
\r
88 if (n.isFirstNode) {
\r
89 n.isFirstNode = false;
\r
90 view.setNodeLineIcos(setting, n);
\r
96 n = n.getNextNode();
\r
99 clearOldLastNode: function(setting, node) {
\r
100 var n = node.getPreNode();
\r
102 if (n.isLastNode) {
\r
103 n.isLastNode = false;
\r
104 view.setNodeLineIcos(setting, n);
\r
107 if (n.isFirstNode) {
\r
110 n = n.getPreNode();
\r
113 makeDOMNodeMainBefore: function(html, setting, node) {
\r
114 html.push("<li ", (node.isHidden ? "style='display:none;' " : ""), "id='", node.tId, "' class='", consts.className.LEVEL, node.level,"' tabindex='0' hidefocus='true' treenode>");
\r
116 showNode: function(setting, node, options) {
\r
117 node.isHidden = false;
\r
118 data.initShowForExCheck(setting, node);
\r
119 $$(node, setting).show();
\r
121 showNodes: function(setting, nodes, options) {
\r
122 if (!nodes || nodes.length == 0) {
\r
125 var pList = {}, i, j;
\r
126 for (i=0, j=nodes.length; i<j; i++) {
\r
128 if (!pList[n.parentTId]) {
\r
129 var pn = n.getParentNode();
\r
130 pList[n.parentTId] = (pn === null) ? data.getRoot(setting) : n.getParentNode();
\r
132 view.showNode(setting, n, options);
\r
134 for (var tId in pList) {
\r
135 var children = pList[tId][setting.data.key.children];
\r
136 view.setFirstNodeForShow(setting, children);
\r
137 view.setLastNodeForShow(setting, children);
\r
140 hideNode: function(setting, node, options) {
\r
141 node.isHidden = true;
\r
142 node.isFirstNode = false;
\r
143 node.isLastNode = false;
\r
144 data.initHideForExCheck(setting, node);
\r
145 view.cancelPreSelectedNode(setting, node);
\r
146 $$(node, setting).hide();
\r
148 hideNodes: function(setting, nodes, options) {
\r
149 if (!nodes || nodes.length == 0) {
\r
152 var pList = {}, i, j;
\r
153 for (i=0, j=nodes.length; i<j; i++) {
\r
155 if ((n.isFirstNode || n.isLastNode) && !pList[n.parentTId]) {
\r
156 var pn = n.getParentNode();
\r
157 pList[n.parentTId] = (pn === null) ? data.getRoot(setting) : n.getParentNode();
\r
159 view.hideNode(setting, n, options);
\r
161 for (var tId in pList) {
\r
162 var children = pList[tId][setting.data.key.children];
\r
163 view.setFirstNodeForHide(setting, children);
\r
164 view.setLastNodeForHide(setting, children);
\r
167 setFirstNode: function(setting, parentNode) {
\r
168 var childKey = setting.data.key.children, childLength = parentNode[childKey].length;
\r
169 if (childLength > 0 && !parentNode[childKey][0].isHidden) {
\r
170 parentNode[childKey][0].isFirstNode = true;
\r
171 } else if (childLength > 0) {
\r
172 view.setFirstNodeForHide(setting, parentNode[childKey]);
\r
175 setLastNode: function(setting, parentNode) {
\r
176 var childKey = setting.data.key.children, childLength = parentNode[childKey].length;
\r
177 if (childLength > 0 && !parentNode[childKey][0].isHidden) {
\r
178 parentNode[childKey][childLength - 1].isLastNode = true;
\r
179 } else if (childLength > 0) {
\r
180 view.setLastNodeForHide(setting, parentNode[childKey]);
\r
183 setFirstNodeForHide: function(setting, nodes) {
\r
185 for (i=0, j=nodes.length; i<j; i++) {
\r
187 if (n.isFirstNode) {
\r
190 if (!n.isHidden && !n.isFirstNode) {
\r
191 n.isFirstNode = true;
\r
192 view.setNodeLineIcos(setting, n);
\r
200 setFirstNodeForShow: function(setting, nodes) {
\r
201 var n,i,j, first, old;
\r
202 for(i=0, j=nodes.length; i<j; i++) {
\r
204 if (!first && !n.isHidden && n.isFirstNode) {
\r
207 } else if (!first && !n.isHidden && !n.isFirstNode) {
\r
208 n.isFirstNode = true;
\r
210 view.setNodeLineIcos(setting, n);
\r
211 } else if (first && n.isFirstNode) {
\r
212 n.isFirstNode = false;
\r
214 view.setNodeLineIcos(setting, n);
\r
220 return {"new":first, "old":old};
\r
222 setLastNodeForHide: function(setting, nodes) {
\r
224 for (i=nodes.length-1; i>=0; i--) {
\r
226 if (n.isLastNode) {
\r
229 if (!n.isHidden && !n.isLastNode) {
\r
230 n.isLastNode = true;
\r
231 view.setNodeLineIcos(setting, n);
\r
239 setLastNodeForShow: function(setting, nodes) {
\r
240 var n,i,j, last, old;
\r
241 for (i=nodes.length-1; i>=0; i--) {
\r
243 if (!last && !n.isHidden && n.isLastNode) {
\r
246 } else if (!last && !n.isHidden && !n.isLastNode) {
\r
247 n.isLastNode = true;
\r
249 view.setNodeLineIcos(setting, n);
\r
250 } else if (last && n.isLastNode) {
\r
251 n.isLastNode = false;
\r
253 view.setNodeLineIcos(setting, n);
\r
259 return {"new":last, "old":old};
\r
267 $.extend(true, $.fn.zTree._z, _z);
\r
269 var zt = $.fn.zTree,
\r
270 tools = zt._z.tools,
\r
271 consts = zt.consts,
\r
274 event = zt._z.event,
\r
277 data.addInitNode(_initNode);
\r
278 data.addBeforeA(_beforeA);
\r
279 data.addZTreeTools(_zTreeTools);
\r
281 // Override method in core
\r
282 var _dInitNode = data.initNode;
\r
283 data.initNode = function(setting, level, node, parentNode, isFirstNode, isLastNode, openFlag) {
\r
284 var tmpPNode = (parentNode) ? parentNode: data.getRoot(setting),
\r
285 children = tmpPNode[setting.data.key.children];
\r
286 data.tmpHideFirstNode = view.setFirstNodeForHide(setting, children);
\r
287 data.tmpHideLastNode = view.setLastNodeForHide(setting, children);
\r
288 view.setNodeLineIcos(setting, data.tmpHideFirstNode);
\r
289 view.setNodeLineIcos(setting, data.tmpHideLastNode);
\r
290 isFirstNode = (data.tmpHideFirstNode === node);
\r
291 isLastNode = (data.tmpHideLastNode === node);
\r
292 if (_dInitNode) _dInitNode.apply(data, arguments);
\r
294 view.clearOldLastNode(setting, node);
\r
298 var _makeChkFlag = data.makeChkFlag;
\r
299 if (!!_makeChkFlag) {
\r
300 data.makeChkFlag = function(setting, node) {
\r
301 if (!!node && !!node.isHidden) {
\r
304 _makeChkFlag.apply(data, arguments);
\r
308 var _getTreeCheckedNodes = data.getTreeCheckedNodes;
\r
309 if (!!_getTreeCheckedNodes) {
\r
310 data.getTreeCheckedNodes = function(setting, nodes, checked, results) {
\r
311 if (!!nodes && nodes.length > 0) {
\r
312 var p = nodes[0].getParentNode();
\r
313 if (!!p && !!p.isHidden) {
\r
317 return _getTreeCheckedNodes.apply(data, arguments);
\r
321 var _getTreeChangeCheckedNodes = data.getTreeChangeCheckedNodes;
\r
322 if (!!_getTreeChangeCheckedNodes) {
\r
323 data.getTreeChangeCheckedNodes = function(setting, nodes, results) {
\r
324 if (!!nodes && nodes.length > 0) {
\r
325 var p = nodes[0].getParentNode();
\r
326 if (!!p && !!p.isHidden) {
\r
330 return _getTreeChangeCheckedNodes.apply(data, arguments);
\r
334 var _expandCollapseSonNode = view.expandCollapseSonNode;
\r
335 if (!!_expandCollapseSonNode) {
\r
336 view.expandCollapseSonNode = function(setting, node, expandFlag, animateFlag, callback) {
\r
337 if (!!node && !!node.isHidden) {
\r
340 _expandCollapseSonNode.apply(view, arguments);
\r
344 var _setSonNodeCheckBox = view.setSonNodeCheckBox;
\r
345 if (!!_setSonNodeCheckBox) {
\r
346 view.setSonNodeCheckBox = function(setting, node, value, srcNode) {
\r
347 if (!!node && !!node.isHidden) {
\r
350 _setSonNodeCheckBox.apply(view, arguments);
\r
354 var _repairParentChkClassWithSelf = view.repairParentChkClassWithSelf;
\r
355 if (!!_repairParentChkClassWithSelf) {
\r
356 view.repairParentChkClassWithSelf = function(setting, node) {
\r
357 if (!!node && !!node.isHidden) {
\r
360 _repairParentChkClassWithSelf.apply(view, arguments);
\r