| New file |
| | |
| | | <!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.js"></script> |
| | | <script type="text/javascript" src="../../../js/jquery.ztree.excheck.js"></script> |
| | | <script type="text/javascript" src="../../../js/jquery.ztree.exedit.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 + " 个, 初始化生成 DOM 的节点共 " + showNodeCount + " 个" |
| | | + "\n\n 初始化 zTree 共耗时: " + (time2.getTime() - time1.getTime()) + " ms"); |
| | | } |
| | | |
| | | |
| | | $(document).ready(function(){ |
| | | ruler.init("ruler"); |
| | | $("#createTree").bind("click", createTree); |
| | | |
| | | }); |
| | | //--> |
| | | </SCRIPT> |
| | | </HEAD> |
| | | |
| | | <BODY> |
| | | <h1>一次性加载大数据量</h1> |
| | | <h6>[ 文件路径: bigdata/common.html ]</h6> |
| | | <div class="content_wrap"> |
| | | <div class="zTreeDemoBackground left"> |
| | | <ul> |
| | | <li><span>调整总节点数,测试加载速度:</span> |
| | | <div id="ruler" class="ruler" title="拖拽可调整节点数"> |
| | | <div id="cursor" class="cursor">5000</div> |
| | | </div> |
| | | <div style="width:220px; text-align: center;"> |
| | | <span>checkbox</span><input type="checkbox" id="showChk" title="是否显示 checkbox" class="checkbox first" /> |
| | | [ <a id="createTree" href="#" title="初始化 zTree" onclick="return false;">初始化 zTree</a> ] |
| | | </div> |
| | | </li> |
| | | </ul> |
| | | <ul id="treeDemo" class="ztree"></ul> |
| | | </div> |
| | | <div class="right"> |
| | | <ul class="info"> |
| | | <li class="title"><h2>1、大数据量加载说明</h2> |
| | | <ul class="list"> |
| | | <li>1)、zTree v3.x 针对大数据量一次性加载进行了更深入的优化,实现了延迟加载功能,即不展开的节点不创建子节点的 DOM。</li> |
| | | <li class="highlight_red">2)、对于每级节点最多一百左右,但总节点数几千甚至几万,且不是全部展开的数据,一次性加载的效果最明显,速度非常快。</li> |
| | | <li class="highlight_red">3)、对于某一级节点数就多达几千的情况 延迟加载无效,这种情况建议考虑分页异步加载。</li> |
| | | <li class="highlight_red">4)、对于全部节点都展开显示的情况,延迟加载无效,这种情况建议不要全部展开。</li> |
| | | <li>5)、显示 checkbox / radio 会造成一定程度的性能下降。</li> |
| | | <li>6)、利用 addDiyDom 功能增加自定义控件会影响速度,影响程度受节点数量而定。</li> |
| | | <li>7)、利用 onNodeCreated 事件回调函数对节点 DOM 进行操作会影响速度,影响程度受节点数量而定。</li> |
| | | </ul> |
| | | </li> |
| | | <li class="title"><h2>2、setting 配置信息说明</h2> |
| | | <ul class="list"> |
| | | <li>不需要进行特殊的配置</li> |
| | | </ul> |
| | | </li> |
| | | <li class="title"><h2>3、treeNode 节点数据说明</h2> |
| | | <ul class="list"> |
| | | <li>对 节点数据 没有特殊要求,用户可以根据自己的需求添加自定义属性</li> |
| | | </ul> |
| | | </li> |
| | | </ul> |
| | | </div> |
| | | </div> |
| | | </BODY> |
| | | </HTML> |