common.html 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. <!DOCTYPE html>
  2. <HTML>
  3. <HEAD>
  4. <TITLE> ZTREE DEMO - big data common</TITLE>
  5. <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  6. <link rel="stylesheet" href="../../../css/demo.css" type="text/css">
  7. <link rel="stylesheet" href="../../../css/zTreeStyle/zTreeStyle.css" type="text/css">
  8. <script type="text/javascript" src="../../../js/jquery.min.js"></script>
  9. <!-- <script type="text/javascript" src="../../../js/jquery-1.4.4.min.js"></script>-->
  10. <script type="text/javascript" src="../../../js/jquery.ztree.core.js"></script>
  11. <script type="text/javascript" src="../../../js/jquery.ztree.excheck.js"></script>
  12. <script type="text/javascript" src="../../../js/jquery.ztree.exedit.js"></script>
  13. <SCRIPT type="text/javascript">
  14. <!--
  15. var setting = {
  16. check: {
  17. enable: true
  18. },
  19. data: {
  20. simpleData: {
  21. enable: true
  22. }
  23. },
  24. callback: {
  25. onNodeCreated: onNodeCreated
  26. }
  27. };
  28. var dataMaker = function(count) {
  29. var nodes = [], pId = -1,
  30. min = 10, max = 90, level = 0, curLevel = [], prevLevel = [], levelCount,
  31. i = 0,j,k,l,m;
  32. while (i<count) {
  33. if (level == 0) {
  34. pId = -1;
  35. levelCount = Math.round(Math.random() * max) + min;
  36. for (j=0; j<levelCount && i<count; j++, i++) {
  37. var n = {id:i, pId:pId, name:"Big-" +i};
  38. nodes.push(n);
  39. curLevel.push(n);
  40. }
  41. } else {
  42. for (l=0, m=prevLevel.length; l<m && i<count; l++) {
  43. pId = prevLevel[l].id;
  44. levelCount = Math.round(Math.random() * max) + min;
  45. for (j=0; j<levelCount && i<count; j++, i++) {
  46. var n = {id:i, pId:pId, name:"Big-" +i};
  47. nodes.push(n);
  48. curLevel.push(n);
  49. }
  50. }
  51. }
  52. prevLevel = curLevel;
  53. curLevel = [];
  54. level++;
  55. }
  56. return nodes;
  57. }
  58. var ruler = {
  59. doc: null,
  60. ruler: null,
  61. cursor: null,
  62. minCount: 5000,
  63. count: 5000,
  64. stepCount:500,
  65. minWidth: 30,
  66. maxWidth: 215,
  67. init: function() {
  68. ruler.doc = $(document);
  69. ruler.ruler = $("#ruler");
  70. ruler.cursor = $("#cursor");
  71. if (ruler.ruler) {
  72. ruler.ruler.bind("mousedown", ruler.onMouseDown);
  73. }
  74. },
  75. onMouseDown: function(e) {
  76. ruler.drawRuler(e, true);
  77. ruler.doc.bind("mousemove", ruler.onMouseMove);
  78. ruler.doc.bind("mouseup", ruler.onMouseUp);
  79. ruler.doc.bind("selectstart", ruler.onSelect);
  80. $("body").css("cursor", "pointer");
  81. },
  82. onMouseMove: function(e) {
  83. ruler.drawRuler(e);
  84. return false;
  85. },
  86. onMouseUp: function(e) {
  87. $("body").css("cursor", "auto");
  88. ruler.doc.unbind("mousemove", ruler.onMouseMove);
  89. ruler.doc.unbind("mouseup", ruler.onMouseUp);
  90. ruler.doc.unbind("selectstart", ruler.onSelect);
  91. ruler.drawRuler(e);
  92. },
  93. onSelect: function (e) {
  94. return false;
  95. },
  96. getCount: function(end) {
  97. var start = ruler.ruler.offset().left+1;
  98. var c = Math.max((end - start), ruler.minWidth);
  99. c = Math.min(c, ruler.maxWidth);
  100. return {width:c, count:(c - ruler.minWidth)*ruler.stepCount + ruler.minCount};
  101. },
  102. drawRuler: function(e, animate) {
  103. var c = ruler.getCount(e.clientX);
  104. ruler.cursor.stop();
  105. if ($.browser.msie || !animate) {
  106. ruler.cursor.css({width:c.width});
  107. } else {
  108. ruler.cursor.animate({width:c.width}, {duration: "fast",easing: "swing", complete:null});
  109. }
  110. ruler.count = c.count;
  111. ruler.cursor.text(c.count);
  112. }
  113. }
  114. var showNodeCount = 0;
  115. function onNodeCreated(event, treeId, treeNode) {
  116. showNodeCount++;
  117. }
  118. function createTree () {
  119. var zNodes = dataMaker(ruler.count);
  120. showNodeCount = 0;
  121. $("#treeDemo").empty();
  122. setting.check.enable = $("#showChk").attr("checked");
  123. var time1 = new Date();
  124. $.fn.zTree.init($("#treeDemo"), setting, zNodes);
  125. var time2 = new Date();
  126. alert(" " + zNodes.length + " nodes are initialized, " + showNodeCount + " nodes generate the DOM object."
  127. + "\n\n Initialization zTree total time: " + (time2.getTime() - time1.getTime()) + " ms");
  128. }
  129. $(document).ready(function(){
  130. ruler.init("ruler");
  131. $("#createTree").bind("click", createTree);
  132. });
  133. //-->
  134. </SCRIPT>
  135. </HEAD>
  136. <BODY>
  137. <h1>One-time Large Data Loading</h1>
  138. <h6>[ File Path: bigdata/common.html ]</h6>
  139. <div class="content_wrap">
  140. <div class="zTreeDemoBackground left">
  141. <ul>
  142. <li><span>Adjust the total number of nodes to the test load speed: </span>
  143. <div id="ruler" class="ruler" title="can drag to adjust the number of nodes">
  144. <div id="cursor" class="cursor">5000</div>
  145. </div>
  146. <div style="width:220px; text-align: center;">
  147. <span>checkbox</span><input type="checkbox" id="showChk" title="whether to display checkbox" class="checkbox first" />&nbsp;&nbsp;&nbsp;&nbsp;
  148. [ <a id="createTree" href="#" title="Initialize zTree" onclick="return false;">Initialize zTree</a> ]
  149. </div>
  150. </li>
  151. </ul>
  152. <ul id="treeDemo" class="ztree"></ul>
  153. </div>
  154. <div class="right">
  155. <ul class="info">
  156. <li class="title"><h2>1, Explanation of large data load</h2>
  157. <ul class="list">
  158. <li>1) zTree v3.x optimized for one-time large data loading capacity, using a lazy loading technique, which does not expand the node does not create child nodes of the DOM.</li>
  159. <li class="highlight_red">2) If a maximum of 100 nodes each, but a total number of several thousand or even tens of thousands of nodes, and the parent node is collapsed by default to optimize the most obvious effect, very fast.</li>
  160. <li class="highlight_red">3) For the next level there are thousands of sub-node case, the optimization of lazy loading is invalid, proposal to consider asynchronous page loading.</li>
  161. <li class="highlight_red">4) if you set the data to all the parent nodes are expanded, the optimization of lazy loading is invalid, proposal to not expand all parent node when you initialize zTree.</li>
  162. <li>5) set the display checkbox / radio will affect some of the performance.</li>
  163. <li>6) DOM generated using addDiyDom function will affect the speed, the number of nodes determines the number of impact situations.</li>
  164. <li>7) Using 'onNodeCreated' callback function to manipulate nodes object will affect the speed, the degree of influence determined by the number of nodes.</li>
  165. </ul>
  166. </li>
  167. <li class="title"><h2>2, Explanation of setting</h2>
  168. <ul class="list">
  169. <li>No special configuration.</li>
  170. </ul>
  171. </li>
  172. <li class="title"><h2>3, Explanation of treeNode</h2>
  173. <ul class="list">
  174. <li>No special requirements on the node data, the user can add custom attributes.</li>
  175. </ul>
  176. </li>
  177. </ul>
  178. </div>
  179. </div>
  180. </BODY>
  181. </HTML>