PageRenderTime 50ms CodeModel.GetById 22ms RepoModel.GetById 1ms app.codeStats 0ms

/zTreeAPI/WebContent/js/jquery.ztree.exhide-3.5.js

http://jquerytree.googlecode.com/
JavaScript | 362 lines | 333 code | 11 blank | 18 comment | 101 complexity | fb4ddc5b516bae941ca3577f72ccad3d MD5 | raw file
  1. /*
  2. * JQuery zTree exHideNodes 3.5
  3. * http://zTree.me/
  4. *
  5. * Copyright (c) 2010 Hunter.z
  6. *
  7. * Licensed same as jquery - MIT License
  8. * http://www.opensource.org/licenses/mit-license.php
  9. *
  10. * email: hunter.z@263.net
  11. * Date: 2012-11-20
  12. */
  13. (function($){
  14. //default init node of exLib
  15. var _initNode = function(setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) {
  16. if (typeof n.isHidden == "string") n.isHidden = tools.eqs(n.isHidden, "true");
  17. n.isHidden = !!n.isHidden;
  18. data.initHideForExCheck(setting, n);
  19. },
  20. //add dom for check
  21. _beforeA = function(setting, node, html) {},
  22. //update zTreeObj, add method of exLib
  23. _zTreeTools = function(setting, zTreeTools) {
  24. zTreeTools.showNodes = function(nodes, options) {
  25. view.showNodes(setting, nodes, options);
  26. }
  27. zTreeTools.showNode = function(node, options) {
  28. if (!node) {
  29. return;
  30. }
  31. view.showNodes(setting, [node], options);
  32. }
  33. zTreeTools.hideNodes = function(nodes, options) {
  34. view.hideNodes(setting, nodes, options);
  35. }
  36. zTreeTools.hideNode = function(node, options) {
  37. if (!node) {
  38. return;
  39. }
  40. view.hideNodes(setting, [node], options);
  41. }
  42. var _checkNode = zTreeTools.checkNode;
  43. if (_checkNode) {
  44. zTreeTools.checkNode = function(node, checked, checkTypeFlag, callbackFlag) {
  45. if (!!node && !!node.isHidden) {
  46. return;
  47. }
  48. _checkNode.apply(zTreeTools, arguments);
  49. }
  50. }
  51. },
  52. //method of operate data
  53. _data = {
  54. initHideForExCheck: function(setting, n) {
  55. if (n.isHidden && setting.check && setting.check.enable) {
  56. n._nocheck = !!n.nocheck
  57. n.nocheck = true;
  58. n.check_Child_State = -1;
  59. if (view.repairParentChkClassWithSelf) {
  60. view.repairParentChkClassWithSelf(setting, n);
  61. }
  62. }
  63. },
  64. initShowForExCheck: function(setting, n) {
  65. if (!n.isHidden && setting.check && setting.check.enable) {
  66. n.nocheck = n._nocheck;
  67. delete n._nocheck;
  68. if (view.setChkClass) {
  69. var checkObj = $("#" + n.tId + consts.id.CHECK);
  70. view.setChkClass(setting, checkObj, n);
  71. }
  72. if (view.repairParentChkClassWithSelf) {
  73. view.repairParentChkClassWithSelf(setting, n);
  74. }
  75. }
  76. }
  77. },
  78. //method of operate ztree dom
  79. _view = {
  80. clearOldFirstNode: function(setting, node) {
  81. var n = node.getNextNode();
  82. while(!!n){
  83. if (n.isFirstNode) {
  84. n.isFirstNode = false;
  85. view.setNodeLineIcos(setting, n);
  86. break;
  87. }
  88. if (n.isLastNode) {
  89. break;
  90. }
  91. n = n.getNextNode();
  92. }
  93. },
  94. clearOldLastNode: function(setting, node) {
  95. var n = node.getPreNode();
  96. while(!!n){
  97. if (n.isLastNode) {
  98. n.isLastNode = false;
  99. view.setNodeLineIcos(setting, n);
  100. break;
  101. }
  102. if (n.isFirstNode) {
  103. break;
  104. }
  105. n = n.getPreNode();
  106. }
  107. },
  108. makeDOMNodeMainBefore: function(html, setting, node) {
  109. html.push("<li ", (node.isHidden ? "style='display:none;' " : ""), "id='", node.tId, "' class='level", node.level,"' tabindex='0' hidefocus='true' treenode>");
  110. },
  111. showNode: function(setting, node, options) {
  112. node.isHidden = false;
  113. data.initShowForExCheck(setting, node);
  114. $("#" + node.tId).show();
  115. },
  116. showNodes: function(setting, nodes, options) {
  117. if (!nodes || nodes.length == 0) {
  118. return;
  119. }
  120. var pList = {}, i, j;
  121. for (i=0, j=nodes.length; i<j; i++) {
  122. var n = nodes[i];
  123. if (!pList[n.parentTId]) {
  124. var pn = n.getParentNode();
  125. pList[n.parentTId] = (pn === null) ? data.getRoot(setting) : n.getParentNode();
  126. }
  127. view.showNode(setting, n, options);
  128. }
  129. for (var tId in pList) {
  130. var children = pList[tId][setting.data.key.children];
  131. view.setFirstNodeForShow(setting, children);
  132. view.setLastNodeForShow(setting, children);
  133. }
  134. },
  135. hideNode: function(setting, node, options) {
  136. node.isHidden = true;
  137. node.isFirstNode = false;
  138. node.isLastNode = false;
  139. data.initHideForExCheck(setting, node);
  140. view.cancelPreSelectedNode(setting, node);
  141. $("#" + node.tId).hide();
  142. },
  143. hideNodes: function(setting, nodes, options) {
  144. if (!nodes || nodes.length == 0) {
  145. return;
  146. }
  147. var pList = {}, i, j;
  148. for (i=0, j=nodes.length; i<j; i++) {
  149. var n = nodes[i];
  150. if ((n.isFirstNode || n.isLastNode) && !pList[n.parentTId]) {
  151. var pn = n.getParentNode();
  152. pList[n.parentTId] = (pn === null) ? data.getRoot(setting) : n.getParentNode();
  153. }
  154. view.hideNode(setting, n, options);
  155. }
  156. for (var tId in pList) {
  157. var children = pList[tId][setting.data.key.children];
  158. view.setFirstNodeForHide(setting, children);
  159. view.setLastNodeForHide(setting, children);
  160. }
  161. },
  162. setFirstNode: function(setting, parentNode) {
  163. var childKey = setting.data.key.children, childLength = parentNode[childKey].length;
  164. if (childLength > 0 && !parentNode[childKey][0].isHidden) {
  165. parentNode[childKey][0].isFirstNode = true;
  166. } else if (childLength > 0) {
  167. view.setFirstNodeForHide(setting, parentNode[childKey]);
  168. }
  169. },
  170. setLastNode: function(setting, parentNode) {
  171. var childKey = setting.data.key.children, childLength = parentNode[childKey].length;
  172. if (childLength > 0 && !parentNode[childKey][0].isHidden) {
  173. parentNode[childKey][childLength - 1].isLastNode = true;
  174. } else if (childLength > 0) {
  175. view.setLastNodeForHide(setting, parentNode[childKey]);
  176. }
  177. },
  178. setFirstNodeForHide: function(setting, nodes) {
  179. var n,i,j;
  180. for (i=0, j=nodes.length; i<j; i++) {
  181. n = nodes[i];
  182. if (n.isFirstNode) {
  183. break;
  184. }
  185. if (!n.isHidden && !n.isFirstNode) {
  186. n.isFirstNode = true;
  187. view.setNodeLineIcos(setting, n);
  188. break;
  189. } else {
  190. n = null;
  191. }
  192. }
  193. return n;
  194. },
  195. setFirstNodeForShow: function(setting, nodes) {
  196. var n,i,j, first, old;
  197. for(i=0, j=nodes.length; i<j; i++) {
  198. n = nodes[i];
  199. if (!first && !n.isHidden && n.isFirstNode) {
  200. first = n;
  201. break;
  202. } else if (!first && !n.isHidden && !n.isFirstNode) {
  203. n.isFirstNode = true;
  204. first = n;
  205. view.setNodeLineIcos(setting, n);
  206. } else if (first && n.isFirstNode) {
  207. n.isFirstNode = false;
  208. old = n;
  209. view.setNodeLineIcos(setting, n);
  210. break;
  211. } else {
  212. n = null;
  213. }
  214. }
  215. return {"new":first, "old":old};
  216. },
  217. setLastNodeForHide: function(setting, nodes) {
  218. var n,i;
  219. for (i=nodes.length-1; i>=0; i--) {
  220. n = nodes[i];
  221. if (n.isLastNode) {
  222. break;
  223. }
  224. if (!n.isHidden && !n.isLastNode) {
  225. n.isLastNode = true;
  226. view.setNodeLineIcos(setting, n);
  227. break;
  228. } else {
  229. n = null;
  230. }
  231. }
  232. return n;
  233. },
  234. setLastNodeForShow: function(setting, nodes) {
  235. var n,i,j, last, old;
  236. for (i=nodes.length-1; i>=0; i--) {
  237. n = nodes[i];
  238. if (!last && !n.isHidden && n.isLastNode) {
  239. last = n;
  240. break;
  241. } else if (!last && !n.isHidden && !n.isLastNode) {
  242. n.isLastNode = true;
  243. last = n;
  244. view.setNodeLineIcos(setting, n);
  245. } else if (last && n.isLastNode) {
  246. n.isLastNode = false;
  247. old = n;
  248. view.setNodeLineIcos(setting, n);
  249. break;
  250. } else {
  251. n = null;
  252. }
  253. }
  254. return {"new":last, "old":old};
  255. }
  256. },
  257. _z = {
  258. view: _view,
  259. data: _data
  260. };
  261. $.extend(true, $.fn.zTree._z, _z);
  262. var zt = $.fn.zTree,
  263. tools = zt._z.tools,
  264. consts = zt.consts,
  265. view = zt._z.view,
  266. data = zt._z.data,
  267. event = zt._z.event;
  268. data.addInitNode(_initNode);
  269. data.addBeforeA(_beforeA);
  270. data.addZTreeTools(_zTreeTools);
  271. // Override method in core
  272. var _dInitNode = data.initNode;
  273. data.tmpHideParent = -1;
  274. data.initNode = function(setting, level, node, parentNode, isFirstNode, isLastNode, openFlag) {
  275. if (data.tmpHideParent !== parentNode) {
  276. data.tmpHideParent = parentNode;
  277. var tmpPNode = (parentNode) ? parentNode: data.getRoot(setting),
  278. children = tmpPNode[setting.data.key.children];
  279. data.tmpHideFirstNode = view.setFirstNodeForHide(setting, children);
  280. data.tmpHideLastNode = view.setLastNodeForHide(setting, children);
  281. view.setNodeLineIcos(setting, data.tmpHideFirstNode);
  282. view.setNodeLineIcos(setting, data.tmpHideLastNode);
  283. }
  284. isFirstNode = (data.tmpHideFirstNode === node);
  285. isLastNode = (data.tmpHideLastNode === node);
  286. if (_dInitNode) _dInitNode.apply(data, arguments);
  287. if (isLastNode) {
  288. view.clearOldLastNode(setting, node);
  289. }
  290. }
  291. var _makeChkFlag = data.makeChkFlag;
  292. if (!!_makeChkFlag) {
  293. data.makeChkFlag = function(setting, node) {
  294. if (!!node && !!node.isHidden) {
  295. return;
  296. }
  297. _makeChkFlag.apply(data, arguments);
  298. }
  299. }
  300. var _getTreeCheckedNodes = data.getTreeCheckedNodes;
  301. if (!!_getTreeCheckedNodes) {
  302. data.getTreeCheckedNodes = function(setting, nodes, checked, results) {
  303. if (!!nodes && nodes.length > 0) {
  304. var p = nodes[0].getParentNode();
  305. if (!!p && !!p.isHidden) {
  306. return [];
  307. }
  308. }
  309. return _getTreeCheckedNodes.apply(data, arguments);
  310. }
  311. }
  312. var _getTreeChangeCheckedNodes = data.getTreeChangeCheckedNodes;
  313. if (!!_getTreeChangeCheckedNodes) {
  314. data.getTreeChangeCheckedNodes = function(setting, nodes, results) {
  315. if (!!nodes && nodes.length > 0) {
  316. var p = nodes[0].getParentNode();
  317. if (!!p && !!p.isHidden) {
  318. return [];
  319. }
  320. }
  321. return _getTreeChangeCheckedNodes.apply(data, arguments);
  322. }
  323. }
  324. var _expandCollapseSonNode = view.expandCollapseSonNode;
  325. if (!!_expandCollapseSonNode) {
  326. view.expandCollapseSonNode = function(setting, node, expandFlag, animateFlag, callback) {
  327. if (!!node && !!node.isHidden) {
  328. return;
  329. }
  330. _expandCollapseSonNode.apply(view, arguments);
  331. }
  332. }
  333. var _setSonNodeCheckBox = view.setSonNodeCheckBox;
  334. if (!!_setSonNodeCheckBox) {
  335. view.setSonNodeCheckBox = function(setting, node, value, srcNode) {
  336. if (!!node && !!node.isHidden) {
  337. return;
  338. }
  339. _setSonNodeCheckBox.apply(view, arguments);
  340. }
  341. }
  342. var _repairParentChkClassWithSelf = view.repairParentChkClassWithSelf;
  343. if (!!_repairParentChkClassWithSelf) {
  344. view.repairParentChkClassWithSelf = function(setting, node) {
  345. if (!!node && !!node.isHidden) {
  346. return;
  347. }
  348. _repairParentChkClassWithSelf.apply(view, arguments);
  349. }
  350. }
  351. })(jQuery);