123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- <!DOCTYPE html>
- <HTML>
- <HEAD>
- <TITLE> ZTREE DEMO - big data common</TITLE>
- <meta http-equiv="content-type" content="text/html; charset=UTF-8">
- <link rel="stylesheet" href="../../../css/demo.css" type="text/css">
- <link rel="stylesheet" href="../../../css/zTreeStyle/zTreeStyle.css" type="text/css">
- <script type="text/javascript" src="../../../js/jquery-1.4.4.min.js"></script>
- <script type="text/javascript" src="../../../js/jquery.ztree.core-3.5.js"></script>
- <script type="text/javascript" src="../../../js/jquery.ztree.excheck-3.5.js"></script>
- <script type="text/javascript" src="../../../js/jquery.ztree.exedit-3.5.js"></script>
- <SCRIPT type="text/javascript">
- <!--
- var setting = {
- check: {
- enable: true
- },
- data: {
- simpleData: {
- enable: true
- }
- },
- callback: {
- onNodeCreated: onNodeCreated
- }
- };
- var dataMaker = function(count) {
- var nodes = [], pId = -1,
- min = 10, max = 90, level = 0, curLevel = [], prevLevel = [], levelCount,
- i = 0,j,k,l,m;
- while (i<count) {
- if (level == 0) {
- pId = -1;
- levelCount = Math.round(Math.random() * max) + min;
- for (j=0; j<levelCount && i<count; j++, i++) {
- var n = {id:i, pId:pId, name:"Big-" +i};
- nodes.push(n);
- curLevel.push(n);
- }
- } else {
- for (l=0, m=prevLevel.length; l<m && i<count; l++) {
- pId = prevLevel[l].id;
- levelCount = Math.round(Math.random() * max) + min;
- for (j=0; j<levelCount && i<count; j++, i++) {
- var n = {id:i, pId:pId, name:"Big-" +i};
- nodes.push(n);
- curLevel.push(n);
- }
- }
- }
- prevLevel = curLevel;
- curLevel = [];
- level++;
- }
- return nodes;
- }
- var ruler = {
- doc: null,
- ruler: null,
- cursor: null,
- minCount: 5000,
- count: 5000,
- stepCount:500,
- minWidth: 30,
- maxWidth: 215,
- init: function() {
- ruler.doc = $(document);
- ruler.ruler = $("#ruler");
- ruler.cursor = $("#cursor");
- if (ruler.ruler) {
- ruler.ruler.bind("mousedown", ruler.onMouseDown);
-
- }
- },
- onMouseDown: function(e) {
- ruler.drawRuler(e, true);
- ruler.doc.bind("mousemove", ruler.onMouseMove);
- ruler.doc.bind("mouseup", ruler.onMouseUp);
- ruler.doc.bind("selectstart", ruler.onSelect);
- $("body").css("cursor", "pointer");
- },
- onMouseMove: function(e) {
- ruler.drawRuler(e);
- return false;
- },
- onMouseUp: function(e) {
- $("body").css("cursor", "auto");
- ruler.doc.unbind("mousemove", ruler.onMouseMove);
- ruler.doc.unbind("mouseup", ruler.onMouseUp);
- ruler.doc.unbind("selectstart", ruler.onSelect);
- ruler.drawRuler(e);
- },
- onSelect: function (e) {
- return false;
- },
- getCount: function(end) {
- var start = ruler.ruler.offset().left+1;
- var c = Math.max((end - start), ruler.minWidth);
- c = Math.min(c, ruler.maxWidth);
- return {width:c, count:(c - ruler.minWidth)*ruler.stepCount + ruler.minCount};
- },
- drawRuler: function(e, animate) {
- var c = ruler.getCount(e.clientX);
- ruler.cursor.stop();
- if ($.browser.msie || !animate) {
- ruler.cursor.css({width:c.width});
- } else {
- ruler.cursor.animate({width:c.width}, {duration: "fast",easing: "swing", complete:null});
- }
- ruler.count = c.count;
- ruler.cursor.text(c.count);
- }
- }
- var showNodeCount = 0;
- function onNodeCreated(event, treeId, treeNode) {
- showNodeCount++;
- }
- function createTree () {
- var zNodes = dataMaker(ruler.count);
- showNodeCount = 0;
- $("#treeDemo").empty();
- setting.check.enable = $("#showChk").attr("checked");
- var time1 = new Date();
- $.fn.zTree.init($("#treeDemo"), setting, zNodes);
- var time2 = new Date();
- alert(" " + zNodes.length + " nodes are initialized, " + showNodeCount + " nodes generate the DOM object."
- + "\n\n Initialization zTree total time: " + (time2.getTime() - time1.getTime()) + " ms");
- }
- $(document).ready(function(){
- ruler.init("ruler");
- $("#createTree").bind("click", createTree);
- });
- //-->
- </SCRIPT>
- </HEAD>
- <BODY>
- <h1>One-time Large Data Loading</h1>
- <h6>[ File Path: bigdata/common.html ]</h6>
- <div class="content_wrap">
- <div class="zTreeDemoBackground left">
- <ul>
- <li><span>Adjust the total number of nodes to the test load speed: </span>
- <div id="ruler" class="ruler" title="can drag to adjust the number of nodes">
- <div id="cursor" class="cursor">5000</div>
- </div>
- <div style="width:220px; text-align: center;">
- <span>checkbox</span><input type="checkbox" id="showChk" title="whether to display checkbox" class="checkbox first" />
- [ <a id="createTree" href="#" title="Initialize zTree" onclick="return false;">Initialize zTree</a> ]
- </div>
- </li>
- </ul>
- <ul id="treeDemo" class="ztree"></ul>
- </div>
- <div class="right">
- <ul class="info">
- <li class="title"><h2>1, Explanation of large data load</h2>
- <ul class="list">
- <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>
- <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>
- <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>
- <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>
- <li>5) set the display checkbox / radio will affect some of the performance.</li>
- <li>6) DOM generated using addDiyDom function will affect the speed, the number of nodes determines the number of impact situations.</li>
- <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>
- </ul>
- </li>
- <li class="title"><h2>2, Explanation of setting</h2>
- <ul class="list">
- <li>No special configuration.</li>
- </ul>
- </li>
- <li class="title"><h2>3, Explanation of treeNode</h2>
- <ul class="list">
- <li>No special requirements on the node data, the user can add custom attributes.</li>
- </ul>
- </li>
- </ul>
- </div>
- </div>
- </BODY>
- </HTML>
|