zingchart
Version:
Our JavaScript charting library is a commercial product. But the full branded version is free to try, forever.
8 lines (7 loc) • 42.4 kB
JavaScript
/*
All of the code within the ZingChart software is developed and copyrighted by ZingChart, Inc., and may not be copied,
replicated, or used in any other software or application without prior permission from ZingChart. All usage must coincide with the
ZingChart End User License Agreement which can be requested by email at support@zingchart.com.
Build 2.9.11
*/
zingchart.setModule("tree"),function(){if(!ZC.ZCVector){ZC.ZCVector=function(e,i){this.fMagnitude=e,this.fDirection=i,this.fMagnitude<0&&(this.fMagnitude=-this.fMagnitude,this.fDirection=(180+this.fDirection)%360),this.fDirection<0&&(this.fDirection=360+this.fDirection)},ZC.ZCVector.add=function(e,i){var t=e.fMagnitude*Math.cos(Math.PI/180*e.fDirection),r=e.fMagnitude*Math.sin(Math.PI/180*e.fDirection);t+=i.fMagnitude*Math.cos(Math.PI/180*i.fDirection),r+=i.fMagnitude*Math.sin(Math.PI/180*i.fDirection);var n,a=Math.sqrt(Math.pow(t,2)+Math.pow(r,2));return n=0===a?0:180/Math.PI*Math.atan2(r,t),new ZC.ZCVector(a,n)},ZC.ZCVector.sub=function(e,i){var t=e.fMagnitude*Math.cos(Math.PI/180*e.fDirection),r=e.fMagnitude*Math.sin(Math.PI/180*e.fDirection);t-=i.fMagnitude*Math.cos(Math.PI/180*i.fDirection),r-=i.fMagnitude*Math.sin(Math.PI/180*i.fDirection);var n,a=Math.sqrt(Math.pow(t,2)+Math.pow(r,2));return n=0===a?0:180/Math.PI*Math.atan2(r,t),new ZC.ZCVector(a,n)},ZC.ZCVector.multiply=function(e,i){return new ZC.ZCVector(e.fMagnitude*i,e.fDirection)},ZC.ZCVector.prototype.toXY=function(){return[this.fMagnitude*Math.cos(Math.PI/180*this.fDirection),this.fMagnitude*Math.sin(Math.PI/180*this.fDirection)]};var e=function(e,i){var t=e.x-i.x,r=e.y-i.y;return Math.sqrt(Math.pow(t,2)+Math.pow(r,2))},i=function(e,i){var t=e.x+(i.x-e.x)/2,r=e.y+(i.y-e.y)/2,n=t-e.x,a=r-e.y;return 0===n&&0===a?0:0===n?a>=0?90:270:0===a?n>=0?0:180:Math.atan2(a,n)*(180/Math.PI)},t=function(t,r,n,a,l){var s=Math.max(e(r,n),1),c=Math.min(.99,t*(l||1))*(s-a);c=Math.max(c,-a),c=Math.min(c,a);var o=i(r,n);return new ZC.ZCVector(c,o)},r=function(t,r,n,a,l,s,c,o){var d=Math.max(e(r,n),1),h=r.size||1,g=n.size||1;if(c||(h=g=1),o&&(s=1),d>s*a)return new ZC.ZCVector(0,0);var p=-t*h*g/(d*d*l);p=Math.max(p,-a),p=Math.min(p,a);var u=i(r,n);return new ZC.ZCVector(p,u)},n=function(e){for(var i=zingchart.plugins.tree[e].data,t=Number.MAX_VALUE,r=-Number.MAX_VALUE,n=Number.MAX_VALUE,a=-Number.MAX_VALUE,l=0;l<i.length;l++)"link"===i[l].type?(n=Math.min(n,i[l].value),a=Math.max(a,i[l].value)):(t=Math.min(t,i[l].value),r=Math.max(r,i[l].value));zingchart.plugins.tree[e].minValue=t,zingchart.plugins.tree[e].maxValue=r,zingchart.plugins.tree[e].minLinkValue=n,zingchart.plugins.tree[e].maxLinkValue=a};zingchart.plugins.tree=zingchart.plugins.tree||{},zingchart.plugins.tree.graph_defaults={plotarea:{margin:5},container:{padding:5},node:{type:"circle","border-width":1,"border-color":"#fff",tooltip:{text:"%text"},label:{"font-size":10,padding:1,color:"#000",text:"%text"}},link:{flat:!0,"line-color":"#999",alpha:.5,type:"line"}},zingchart.plugins.tree.orgchart_defaults={plotarea:{margin:10},container:{"tree-right":{padding:"20 60 20 60"},"tree-left":{padding:"20 60 20 60"},"tree-down":{padding:"20 60 20 60"},"tree-up":{padding:"20 60 20 60"}},node:{type:"rectangle",width:80,height:30,"border-width":1,"border-color":"#333","background-color":"#fff",label:{color:"#000",width:80,"font-size":10,align:"center",anchor:"c",text:"%text"}},link:{aspect:"split","line-color":"#999","line-width":1}},zingchart.plugins.tree.tree_defaults={plotarea:{margin:10},container:{"tree-radial":{padding:"120 120 120 120"},"tree-right":{padding:"20 120 20 40"},"tree-left":{padding:"20 40 20 120"},"tree-down":{padding:"40 20 120 20"},"tree-up":{padding:"120 20 40 20"}},link:{aspect:"arc","line-color":"#999","line-width":1},"node[collapsed]":{"border-width":1,"border-color":"#666"},node:{type:"circle",tooltip:{text:"%text:%value"},label:{"font-size":10,padding:1,width:100,color:"#000","clip-text":!0,text:"%text"},label_jsRule:function(e,i,t){var r={},n=ZC._i_(i.label.width)/2,a=null!==ZC._n_(i.width)?ZC._i_(i.width)/2:i.size,l=null!==ZC._n_(i.height)?ZC._i_(i.height)/2:i.size,s=Math.max(a,l);switch(t){case"tree-right":0===e.level?r["offset-y"]=-i.size-l:(r.anchor=e.children&&e.children.length?"r":"l",r["offset-x"]=e.children&&e.children.length?-5-a:5+a,r.align=e.children&&e.children.length?"right":"left");break;case"tree-left":0===e.level?r["offset-y"]=-i.size-l:(r.anchor=e.children&&e.children.length?"l":"r",r["offset-x"]=e.children&&e.children.length?5+a:-5-a,r.align=e.children&&e.children.length?"left":"right");break;case"tree-down":r.anchor="c",0===e.level?r["offset-y"]=-i.size-l:(r["offset-y"]=e.children&&e.children.length?-5-n-l:5+n+l,r.angle=91,r.align=e.children&&e.children.length?"right":"left",r["offset-x"]=e.children&&e.children.length?1:0);break;case"tree-up":r.anchor="c",0===e.level?r["offset-y"]=i.size+l:(r["offset-y"]=e.children&&e.children.length?5+n+l:-5-n-l,r.angle=271,r.align=e.children&&e.children.length?"right":"left",r["offset-x"]=e.children&&e.children.length?-1:0);break;case"tree-radial":var c,o;0===e.level?r["offset-y"]=-i.size-l:(e.children&&e.children.length?(e.angle>90&&e.angle<270?(r.angle=e.angle+180,r.align="left"):(r.angle=e.angle,r.align="right"),c=ZC.AO.BN(e.cx,e.cy,e.radius,e.angle),o=ZC.AO.BN(e.cx,e.cy,e.radius-(5+n+s),e.angle)):(e.angle>90&&e.angle<270?(r.angle=e.angle+180,r.align="right"):(r.angle=e.angle,r.align="left"),c=ZC.AO.BN(e.cx,e.cy,e.radius,e.angle),o=ZC.AO.BN(e.cx,e.cy,e.radius+(5+n+s),e.angle)),r["offset-x"]=o[0]-c[0],r["offset-y"]=o[1]-c[1])}for(var d in r)null!==ZC._n_(i.label[d])&&delete r[d];return r}}},zingchart.bind(null,"dataparse",function(e,i){for(var t,r,n,a,l=0,s=i.graphset.length;l<s;l++)if(i.graphset[l].type&&"tree"===i.graphset[l].type){var c=i.graphset[l].type;i.graphset[l]["plugin-type"]=c;var o=i.graphset[l];zingchart.normalize(o),o.type="null";var d={};o.options&&(d=o.options[c]||o.options),ZC._todash_(d),o.series=o.series||[];var h=d["text-attr"]||"text",g=d["value-attr"]||"value",p=d["source-attr"]||"source",u=d["target-attr"]||"target",_=d.aspect||"tree-right",f=ZC._b_(ZC._c_(d["org-chart"],0));if(o.plotarea=o.plotarea||{},f?ZC._inj_(o.plotarea,zingchart.plugins.tree.orgchart_defaults.plotarea||{}):"graph"===_?ZC._inj_(o.plotarea,zingchart.plugins.tree.graph_defaults.plotarea||{}):ZC._inj_(o.plotarea,zingchart.plugins.tree.tree_defaults.plotarea||{}),!(o.series instanceof Array)){var v=[],x={},Z=function(e,i){var t=(e.text||e.name||e[h]).toLowerCase().replace(/[^a-z0-9_]+/gi,"");x[t]?t+=x[t]++:x[t]=1;var r={id:t,text:e.text||e.name||e[h]||t,value:e.value||e.size||e[g],parent:i||""};if(v.push(r),e.children)for(var n=0;n<e.children.length;n++)Z(e.children[n],t)};Z(o.series),o.series=v}for(t=0;t<o.series.length;t++)o.series[t].text=o.series[t].text||o.series[t].name||o.series[t][h]||"Node "+t,o.series[t].value=o.series[t].value||o.series[t].size||o.series[t][g],o.series[t]["node-value"]=o.series[t].value,o.series[t].id||(o.series[t].text?o.series[t].id=o.series[t].text.toLowerCase().replace(/[^a-z0-9_]+/gi,""):o.series[t].id="node"+t),o.series[t].group=o.series[t].group||-1,"graph"!==_?(o.series[t].collapsed=!1,o.series[t].visible=!0):(o.series[t].text=o.series[t].text||o.series[t].name||o.series[t][h]||"Node "+t,(o.series[t].source||o.series[t].from||o.series[t][p])&&(o.series[t].target||o.series[t].to||o.series[t][u])?(o.series[t].source=o.series[t].source||o.series[t].from||o.series[t][p],o.series[t].target=o.series[t].target||o.series[t].to||o.series[t][u],o.series[t].type="link"):o.series[t].type="node"),"graph"===_&&o.series[t].parent&&""!==o.series[t].parent&&o.series.push({type:"link",source:o.series[t].id,target:o.series[t].parent,value:1});for(zingchart.plugins.tree[e.id]=zingchart.plugins.tree[e.id]||{},zingchart.plugins.tree[e.id].size=o.series.length,t=0;t<o.series.length;t++)if(o.series[t].idx=t,null!==ZC._n_(o.series[t].parent))for(r=0;r<o.series.length;r++)o.series[r].id===o.series[t].parent&&(o.series[t].pidx=r,o.series[r].children=o.series[r].children||[],o.series[r].children.push(t));else o.series[t].parent="";for(var C=!0,z=[];C;)for(C=!1,t=0;t<o.series.length;t++)if(null!==ZC._n_(o.series[t].parent)&&(n=o.series[t].parent,-1===ZC.AV(z,n))){var m=0,b=!0;for(a=-1,r=0;r<o.series.length;r++)o.series[r].id===n&&(a=r,o.series[t].pidx=r),null!==ZC._n_(o.series[r].parent)&&o.series[r].parent===n&&(null!==ZC._n_(o.series[r].value)&&ZC._f_(o.series[r].value)+""==o.series[r].value+""?m+=ZC._f_(o.series[r].value):b=!1);if(b&&-1!==a){null!==ZC._n_(o.series[a].value)&&(o.series[a]["node-value"]=o.series[a].value),o.series[a].value=m,z.push(n),C=!0;continue}}for(t=0;t<o.series.length;t++)o.series[t].value=o.series[t].value||1,"graph"===_&&(o.series[t].container=o.series[t].container||0);for(var y=!0,M=Number.MAX_VALUE,w=-Number.MAX_VALUE,k=0;y;)for(y=!1,t=0;t<o.series.length;t++)"graph"===_&&"node"!==o.series[t].type||(M=Math.min(M,o.series[t].value),w=Math.max(w,o.series[t].value)),null===ZC._n_(o.series[t].level)?o.series[t].sibling||null!==ZC._n_(o.series[t].parent)&&""!==o.series[t].parent?(a=o.series[t].pidx,null!==ZC._n_(a)?null===ZC._n_(o.series[a].level)?y=!0:(o.series[t].level=ZC._i_(o.series[a].level)+1,"graph"!==_&&(o.series[t].container=o.series[a].container)):o.series[t].container=o.series[t].level=0):(o.series[t].level=0,"graph"!==_&&(o.series[t].container=k),k++):(a=o.series[t].pidx,null!==ZC._n_(a)?o.series[t].container=o.series[a].container||0:o.series[t].container=0);if(zingchart.plugins.tree[e.id].minValue=M,zingchart.plugins.tree[e.id].maxValue=w,"graph"===_){var V=Number.MAX_VALUE,A=-Number.MAX_VALUE;for(t=0;t<o.series.length;t++)"link"===o.series[t].type&&(V=Math.min(V,o.series[t].value),A=Math.max(A,o.series[t].value));zingchart.plugins.tree[e.id].minLinkValue=V,zingchart.plugins.tree[e.id].maxLinkValue=A}o.plotarea=o.plotarea||{},ZC._inj_(o.plotarea,{margin:"10 10 10 10","mask-tolerance":[0,0]})}return i});var a=function(n){var a=zingchart.getLoader(n.loader.id),s=zingchart.getGraph(a,n.graphid),c=s.o;if("tree"===c["plugin-type"]){var o,g,p,u=zingchart.getGraphInfo(a,c,s.L).plotarea,_={};c.options&&(_=c.options.tree||c.options),ZC._todash_(_);var f=_.palette||["#a7da47","#00b0e1","#ef4810","#f9c332","#84680a","#4d62b1","#00BAF2","#E80C60","#E2D51A","#9B26AF","#FB301E","#00AE4D","#20398B"],v=_.aspect||"tree-right",x=ZC._b_(ZC._c_(_["org-chart"],0)),Z=_.layout||"x",C=ZC._i_(ZC._c_(_.progression,"0")),z=ZC._i_(ZC._c_(_.aperture,"360")),m=ZC._i_(ZC._c_(_["ref-angle"],"0")),b=ZC._i_(ZC._c_(_["min-size"],4)),y=ZC._i_(ZC._c_(_["max-size"],4)),M=ZC._i_(ZC._c_(_["min-link-width"],1)),w=ZC._i_(ZC._c_(_["max-link-width"],5)),k=ZC._f_(ZC._c_(_["attraction-constant"],.99)),V=ZC._i_(ZC._c_(_["repulsion-constant"],1e3)),A=ZC._i_(ZC._c_(_["repulsion-distance-factor"],20)),N=ZC._f_(ZC._c_(_["spring-length"],40)),L=ZC._i_(ZC._c_(_["max-iterations"],1e3)),X=ZC._f_(ZC._c_(_["damping-step"],.005)),E=ZC._b_(ZC._c_(_["weighted-nodes"],0)),I=ZC._b_(ZC._c_(_["weighted-links"],0)),j=Math.max(1,ZC._i_(ZC._c_(_["packing-factor"],1))),R=Math.max(.1,ZC._f_(ZC._c_(_["depth-ratio"],2))),D=ZC._b_(ZC._c_(_["weighted-links"],0));x&&(D=!0),zingchart.plugins.tree[n.id].data=[].concat(c.series||[]),zingchart.plugins.tree[n.id].attractionConstant=k,zingchart.plugins.tree[n.id].repulsionConstant=V,zingchart.plugins.tree[n.id].springLength=N;var P,S,Y=function(e,i){var t=zingchart.plugins.tree[n.id].data;if(t[e].children)for(var r=0;r<t[e].children.length;r++)t[t[e].children[r]].coord+=i,Y(t[e].children[r],i)},U=function(e){var i=zingchart.plugins.tree[n.id].data,t=!1,r=-1,a=-1;if(null===ZC._n_(i[e].pidx))t=!0;else{var l=ZC.AV(i[i[e].pidx].children,e);0===l?t=!0:(t=!1,r=l-1,a=i[i[e].pidx].children[r])}return{first:t,prevSiblingIndex:r,prevIndex:a}},F=function(e,i){var t=zingchart.plugins.tree[n.id].data,r=[];if(r.push(e),t[e].children&&t[e].children.length&&(i||!t[e].collapsed))for(var a=0;a<t[e].children.length;a++)r=r.concat(F(t[e].children[a]));return r},O=function(e){for(var i=zingchart.plugins.tree[n.id].data,t=Number.MAX_VALUE,r=0;r<e.length;r++)t=Math.min(t,i[e[r]].coord);return t},B=function(e){for(var i=zingchart.plugins.tree[n.id].data,t=-Number.MAX_VALUE,r=0;r<e.length;r++)t=Math.max(t,i[e[r]].coord);return t},q=null,T=function(){var e,i=zingchart.plugins.tree[n.id].data;if(!q)for(q={},e=0;e<i.length;e++)q[i[e].id]=i[e].idx;var t={};for(e=0;e<i.length;e++){if(i[e].reference){var r=i[q[i[e].reference]];t[i[e].reference]=t[i[e].reference]||1,i[e].coord=r.coord,i[e].level=r.level+t[i[e].reference],t[i[e].reference]+=1}if(i[e].sibling&&0===i[e].level){var a=i[q[i[e].sibling]];i[e].idx<a.idx?i[e].coord=a.coord-j:i[e].coord=a.coord+j}}J()},W=0,J=function(){for(var e=zingchart.plugins.tree[n.id].data,i=0;i<e.length;i++)e[i].visible&&(W=Math.max(W,c.series[i].level))},Q=function(e,i){var t=zingchart.plugins.tree[n.id].data;if(t[e].visible&&(t[e].reference?t[e].coord=0:t[e].coord=i*j,t[e].children))for(var r=0;r<t[e].children.length;r++)Q(t[e].children[r],r*j)},G=function(e){var i=zingchart.plugins.tree[n.id].data;if(i[e].visible&&!i[e].reference&&i[e].children&&!i[e].collapsed){var t=i[e].children.length,r=i[e].children[0],a=i[e].children[t-1],l=(i[r].coord+i[a].coord)/2,s=U(e),c=s.first,o=s.prevSiblingIndex;if(c)i[e].coord=l;else{var d=i[i[e].pidx].children[o];i[e].coord=i[d].coord+j;var h=i[e].coord-l;0!==h&&Y(e,h)}}},H=function(e){var i=zingchart.plugins.tree[n.id].data;if(i[e].visible&&!i[e].reference){var t=U(e),r=t.first,a=t.prevIndex;if(!r){var l=function(e,i,t){var r=zingchart.plugins.tree[n.id].data,a=[];if(i){for(;r[e].children&&r[e].children.length&&!r[e].collapsed&&!r[e].fake;)e=r[e].children[r[e].children.length-1];for(;null!==ZC._n_(r[e].pidx);)(-1===t||r[e].level<=t)&&a.push(e),e=r[e].pidx}if(a.push(e),!i)for(;r[e].children&&r[e].children.length&&!r[e].collapsed&&!r[e].fake;)e=r[e].children[r[e].children.length-1],(-1===t||r[e].level<=t)&&a.push(e);return a}(a,!1,-1),s=function(e,i,t){var r=zingchart.plugins.tree[n.id].data,a=[];if(i){for(;r[e].children&&r[e].children.length&&!r[e].collapsed&&!r[e].fake;)e=r[e].children[0];for(;null!==ZC._n_(r[e].pidx);)(-1===t||r[e].level<=t)&&a.push(e),e=r[e].pidx}if(a.push(e),!i)for(;r[e].children&&r[e].children.length&&!r[e].collapsed&&!r[e].fake;)e=r[e].children[0],(-1===t||r[e].level<=t)&&a.push(e);return a}(e,!1,-1),c=B(l),o=O(s),d=0;o<=c&&(d=c-o+j,i[e].coord+=d,Y(e,d))}if(i[e].children&&i[e].children.length&&!i[e].collapsed)for(var h=0;h<i[e].children.length;h++)H(i[e].children[h])}},K=function(e){var i=zingchart.plugins.tree[n.id].data;if(i[e].visible&&i[e].children&&!i[e].collapsed){for(var t=i[e].children.length,r=i[e].children[0],a=i[e].children[t-1],l=(i[r].coord+i[a].coord)/2,s=i[e].coord-l,c=0;c<i.length;c++)i[c].sibling===i[e].id&&(i[c].coord-=s);i[e].coord=l}},$=function(e){var i=zingchart.plugins.tree[n.id].data,t=0;if(!i[e].visible)return t;if(i[e].children&&i[e].children.length>1&&!i[e].collapsed)for(var r=1;r<i[e].children.length;r++){var a=i[i[e].children[r]],l=i[i[e].children[r-1]];t+=ee(l,a)}return t},ee=function(e,i){var t=0,r="r";return e.children&&e.children.length?i.children&&i.children.length||(r="l",i.coord-e.coord>j&&(i.coord=e.coord+j,t++)):i.children&&i.children.length?(r="r",i.coord-e.coord>j&&(e.coord=i.coord-j,t++)):i.coord-e.coord>j&&("r"===r?(e.coord=i.coord-j,t++):(i.coord=e.coord+j,t++)),t},ie=function(e){var i=zingchart.plugins.tree[n.id].data,t=U(e),r=t.first,a=t.prevIndex;if(!r){var l=F(a),s=F(e),c=B(l),o=O(s),d=0;o>c+j&&(d=o-c-j,i[e].coord+=-d,Y(e,-d))}},te=[],re=[],ne=[],ae=[],le=[],se=[],ce={},oe={},de={},he=1,ge=0,pe="",ue=[0,0],_e=!1,fe={},ve=!0,xe=!0,Ze=zingchart.getInstance(s,"textbox");x?Ze.append(zingchart.plugins.tree.orgchart_defaults.container[v]):"graph"===v?Ze.append(zingchart.plugins.tree.graph_defaults.container):Ze.append(zingchart.plugins.tree.tree_defaults.container[v]),Ze.append(_.container),Ze.parse();var Ce=Ze.FM,ze=Ze.FN,me=Ze.FW,be=Ze.EQ,ye=function(e){if(te=[],e>1){var i=-1,t=-1;if("h"===Z)i=1,t=e;else if("v"===Z)i=e,t=1;else if(-1!==Z.indexOf("x")){var r=Z.split("x");""!==r[0]&&(i=ZC._i_(r[0])),""!==r[1]&&(t=ZC._i_(r[1])),-1===i&&-1===t?i=t=Math.ceil(Math.sqrt(e)):-1===i&&-1!==t?i=Math.ceil(e/t):-1!==i&&-1===t&&(t=Math.ceil(e/i))}for(var n=u.width/t,a=u.height/i,l=0;l<i;l++)for(var s=0;s<t;s++)te[l*t+s]={x:u.x+s*n,y:u.y+l*a,width:n,height:a}}else te[0]={x:u.x,y:u.y,width:u.width,height:u.height}};zingchart.plugins.tree[n.id].bFirstRender=!0;var Me={},we=function(s){if(a.ST=[],k=zingchart.plugins.tree[n.id].attractionConstant,V=zingchart.plugins.tree[n.id].repulsionConstant,N=zingchart.plugins.tree[n.id].springLength,!s||(he=1,ge=0,!_e)){_e=!0;var c,d,g=zingchart.plugins.tree[n.id].data,p=le.length,u=se.length,f=0,v=0,x=[];""!==pe&&(g[ce[pe]].x=ue[0],g[ce[pe]].y=ue[1]);var Z,C=[];for(o=0;o<p;o++)if((c=g[le[o]])&&(Z=te[c.container],C[c.container]||(C[c.container]={minX:Number.MAX_VALUE,minY:Number.MAX_VALUE,maxX:-Number.MAX_VALUE,maxY:-Number.MAX_VALUE}),c.id!==pe)){var z,m={x:Z.x+Z.width/2,y:Z.y+Z.height/2},b={x:Z.x+Z.width/2,y:Z.y+Z.height/2},y=N,j=1,R="";null!==ZC._n_(c.level)&&c.level>0&&y>20&&(y=Math.round(Math.max(20,y-5*c.level)));var D=new ZC.ZCVector(e(m,c),i(m,c)),P=new ZC.ZCVector(0,0),S=new ZC.ZCVector(0,0);for(d=0;d<p;d++)if(o!==d&&c.container===g[le[d]].container){j=1,z=y,R=c.id+"-"+g[le[d]].id,ke[R]&&(z=ke[R]),I&&g[de[R]]&&zingchart.plugins.tree[n.id].maxLinkValue!==zingchart.plugins.tree[n.id].minLinkValue&&(j+=Math.round((w-M)*(g[de[R]].value-zingchart.plugins.tree[n.id].minLinkValue)/(zingchart.plugins.tree[n.id].maxLinkValue-zingchart.plugins.tree[n.id].minLinkValue)));var Y=r(V,c,g[le[d]],z,j,A,E,g[de[R]]?1:0);S=ZC.ZCVector.add(S,Y)}if(c.level){var U=r(V,c,b,y,j,10*A,E,0);S=ZC.ZCVector.add(S,U)}P=ZC.ZCVector.add(P,S);var F=!1,O=new ZC.ZCVector(0,0);if(oe[c.id])for(d=0;d<oe[c.id].length;d++){j=1,z=y,R=c.id+"-"+g[ce[oe[c.id][d]]].id,ke[R]&&(z=ke[R]),I&&(j=M,zingchart.plugins.tree[n.id].maxLinkValue!==zingchart.plugins.tree[n.id].minLinkValue&&(j+=Math.round((w-M)*(g[de[R]].value-zingchart.plugins.tree[n.id].minLinkValue)/(zingchart.plugins.tree[n.id].maxLinkValue-zingchart.plugins.tree[n.id].minLinkValue))));var B=t(k,c,g[ce[oe[c.id][d]]],z,j);B.fMagnitude/=2,O=ZC.ZCVector.add(O,B),g[ce[oe[c.id][d]]].id===pe&&(F=!0)}else{var q=t(k,c,b,y,1);O=ZC.ZCVector.add(O,q)}if(oe[c.id]?(O.fMagnitude>y/10||oe[c.id].length>1)&&(O=ZC.ZCVector.multiply(O,Math.min(1,(F?2.5:1)/oe[c.id].length))):O.fMagnitude=Math.min(5*(F?2.5:1),O.fMagnitude),c.cg){var T=t(999*k,c,c.cg,5,1);O=ZC.ZCVector.add(O,T)}P=ZC.ZCVector.add(P,O),P=ZC.ZCVector.multiply(P,he);var W=(D=ZC.ZCVector.add(D,P)).toXY(),J=e(c,{x:Z.x+Z.width/2+W[0],y:Z.y+Z.height/2+W[1]});f+=J,v=Math.max(v,J),c.__x=Z.x+Z.width/2+W[0],c.__y=Z.y+Z.height/2+W[1]}for(o=0;o<p;o++)(c=g[le[o]]).id!==pe&&(c.x=c.__x,c.y=c.__y),C[c.container].minX=Math.min(C[c.container].minX,c.x),C[c.container].maxX=Math.max(C[c.container].maxX,c.x),C[c.container].minY=Math.min(C[c.container].minY,c.y),C[c.container].maxY=Math.max(C[c.container].maxY,c.y);var Q=0,G=[];for(o=0;o<C.length;o++)G[o]=1,C[o].maxX-C[o].minX>te[o].width&&(G[o]=Math.min(G[o],te[o].width/(C[o].maxX-C[o].minX))),C[o].maxY-C[o].minY>te[o].height&&(G[o]=Math.min(G[o],te[o].height/(C[o].maxY-C[o].minY))),C[o].diffX=te[o].x+te[o].width/2-(C[o].maxX+C[o].minX)/2,C[o].diffY=te[o].y+te[o].height/2-(C[o].maxY+C[o].minY)/2,Q+=e({x:te[o].x+te[o].width/2,y:te[o].y+te[o].height/2},{x:(C[o].maxX+C[o].minX)/2,y:(C[o].maxY+C[o].minY)/2});var H={};for(o=0;o<p;o++)(c=g[le[o]]).cg||(""===pe?(c.x+=C[c.container].diffX/N,c.y+=C[c.container].diffY/N):g[ce[pe]].container!==c.container&&(c.x+=C[c.container].diffX/N,c.y+=C[c.container].diffY/N)),Me[c.id]&&(c.x=Me[c.id][0]||c.x,c.y=Me[c.id][1]||c.y),1!==G[c.container]?(c._x_=te[c.container].x+te[c.container].width/2+(c.x-te[c.container].x-te[c.container].width/2)*G[c.container],c._y_=te[c.container].y+te[c.container].height/2+(c.y-te[c.container].y-te[c.container].height/2)*G[c.container]):(c._x_=c.x,c._y_=c.y),c._x_=Math.max(te[c.container].x,Math.min(te[c.container].x+te[c.container].width,c._x_)),c._y_=Math.max(te[c.container].y,Math.min(te[c.container].y+te[c.container].height,c._y_)),c._x_>0&&c._x_<1&&(c._x_=1.1),c._y_>0&&c._y_<1&&(c._y_=1.1),fe[c.id]=[c._x_,c._y_],H={id:"node_"+c.id,x:c._x_,y:c._y_},ge>=15&&(H.visible=ve),x.push(H);for(o=0;o<u;o++)if(c=g[se[o]]){var K=g[ce[c.source]],$=g[ce[c.target]];H={id:"link_"+K.id+"_"+$.id,points:[[K._x_,K._y_],[$._x_,$._y_]]},ZC._cp_(_.link,H),ge>=15&&(H.visible=xe),h(H,K.cls?_["node[cls-"+K.cls+"]"]:_.node,$.cls?_["node[cls-"+$.cls+"]"]:_.node),x.push(H)}zingchart.exec(n.id,"updateobject",{type:"shape",data:x.concat(l(x))}),++ge<15||ge<L&&(f>1&&v>.1||Q>2)?(he=Math.max(.001,he-X),window.setTimeout(we,1)):_e=!1}},ke={},Ve=zingchart.plugins.tree[n.id]._render_graph_=function(){zingchart.exec(n.id,"removeobject",{type:"shape",cls:"zctreeshape"}),ne=[],ae=[],le=[],se=[],ce={},oe={},de={};var e,i=zingchart.plugins.tree[n.id].data,t=!1,r=[],a=0;for(o=0;o<i.length;o++)((e=i[o]).parent||e.children)&&(t=!0),"node"===e.type?(le.push(o),ce[e.id]=o,r[e.container]||(r[e.container]=[],a++),r[e.container].push(o)):(se.push(o),oe[e.source]=oe[e.source]||[],oe[e.source].push(e.target),oe[e.target]=oe[e.target]||[],oe[e.target].push(e.source),de[e.source+"-"+e.target]=o,de[e.target+"-"+e.source]=o);ye(a);for(var s={},c=0;c<te.length;c++){var d=te[c];if(r[c]=r[c]||[],r[c].length){var g=[d.x+d.width/2,d.y+d.height/2];if(t)for(var p={},u=0;u<r[c].length;u++)if((e=i[r[c][u]]).parent){var v=i[ce[e.parent]];if(v){var x=s[v.id],Z=ZC.AO.BN(x[0],x[1],Math.max(25,60-5*v.level),p[e.parent]);s[e.id]=[Z[0],Z[1]];var C=15;e.level<=1&&(C=360/Math.max(1,(v.children||[]).length)),p[e.id]||(p[e.id]=p[v.id],e.children&&v.children.length>1&&(p[e.id]-=15*(e.children.length-1)/2)),p[v.id]+=C}}else s[e.id]=[g[0],g[1]],p[e.id]=1;else for(var z=Math.ceil(Math.sqrt(r[c].length)),m=Math.min(10,Math.round(d.width/z)),k=m*z,V=Math.min(10,Math.round(d.height/z)),A=V*z,N=0;N<z;N++)for(var L=0;L<z;L++){var X=N*z+L;X<r[c].length&&(s[i[r[c][X]].id]=[g[0]-k/2+L*m,g[1]-A/2+N*V])}}}for(o=0;o<le.length;o++){e=i[le[o]],fe[e.id]?(e.x=fe[e.id][0],e.y=fe[e.id][1]):(e.x=s[e.id][0],e.y=s[e.id][1]);var E=b;zingchart.plugins.tree[n.id].maxValue!==zingchart.plugins.tree[n.id].minValue&&(E+=Math.round((y-b)*(e.value-zingchart.plugins.tree[n.id].minValue)/(zingchart.plugins.tree[n.id].maxValue-zingchart.plugins.tree[n.id].minValue))),e.size=1+.5*E/y;var I,j=ZC._i_(-1!==e.group?e.group:e.level||"0"),R={};if(ZC._cp_(zingchart.plugins.tree.graph_defaults.node,R),ZC._cp_({id:"node_"+e.id,cls:"zctreeshape","background-color":f[j%f.length],size:E},R),ZC._cp_(_.node||{},R),ZC._cp_(_["node[group-"+e.group+"]"],R),ZC._cp_(_["node[container-"+e.container+"]"],R),e.cls)for(var D=e.cls.split(/\s/),P=0;P<D.length;P++)ZC._cp_(_["node[cls-"+D[P]+"]"],R);if(_.nodes&&_.nodes[e.id]&&ZC._cp_(_.nodes[e.id],R),R["js-rule"])try{var S=ZC.execFn(R["js-rule"].replace("javascript:","").replace("()",""),window,n.id,e,R);S&&ZC._cp_(S,R)}catch(T){}e.style&&ZC._cp_(e.style,R);var Y={decimals:null,short:!1,"thousands-separator":",","decimals-separator":"."};if(ZC._cp_(R,Y),R.label&&R.label.text){for(I in R.label.text=R.label.text.replace(/%text/gi,e.text).replace(/%node-value/gi,zingchart.formatNumber(e["node-value"],Y)).replace(/%value/gi,zingchart.formatNumber(e.value,Y)),e)"data-"===I.substring(0,5)&&(R.label.text=R.label.text.replace(new RegExp("%"+I,"g"),e[I]));R.label.text=R.label.text.replace(new RegExp("%data-([a-zA-Z0-9]+)","g"),"")}if(R.tooltip&&R.tooltip.text){for(I in ZC._cp_(R.tooltip,Y),R.tooltip.text=R.tooltip.text.replace(/%text/gi,e.text).replace(/%node-value/gi,zingchart.formatNumber(e["node-value"],Y)).replace(/%value/gi,zingchart.formatNumber(e.value,Y)),e)"data-"===I.substring(0,5)&&(R.tooltip.text=R.tooltip.text.replace(new RegExp("%"+I,"g"),e[I]));R.tooltip.text=R.tooltip.text.replace(new RegExp("%data-([a-zA-Z0-9]+)","g"),"")}zingchart.plugins.tree[n.id].bFirstRender&&(null===ZC._n_(R.visible)||R.visible||(ve=!1),R.visible=!1),null!==ZC._n_(R.x)||null!==ZC._n_(R.y)?(Me[e.id]=[0,0],null!==ZC._n_(R.x)?(R.x=ZC._i_(R.x),Me[e.id][0]=R.x):R.x=e.x,null!==ZC._n_(R.y)?(R.y=ZC._i_(R.y),Me[e.id][1]=R.y):R.y=e.y):(R.x=e.x,R.y=e.y),ne.push(R)}for(o=0;o<se.length;o++){e=i[se[o]];var U=i[ce[e.source]],F=i[ce[e.target]],O=M;zingchart.plugins.tree[n.id].maxLinkValue!==zingchart.plugins.tree[n.id].minLinkValue&&(O+=Math.round((w-M)*(e.value-zingchart.plugins.tree[n.id].minLinkValue)/(zingchart.plugins.tree[n.id].maxLinkValue-zingchart.plugins.tree[n.id].minLinkValue)));var B={};if(ZC._cp_(zingchart.plugins.tree.graph_defaults.link,B),ZC._cp_({id:"link_"+U.id+"_"+F.id,cls:"zctreeshape","fast-vector-path":!0,"line-width":O,points:[[U.x,U.y],[F.x,F.y]]},B),ZC._cp_(_.link||{},B),ZC._cp_(_["link[group-"+U.group+"]"],B),ZC._cp_(_["link[container-"+U.container+"]"],B),ZC._cp_(_["link[source-"+U.id+"]"],B),ZC._cp_(_["link[target-"+F.id+"]"],B),e.cls&&ZC._cp_(_["link[cls-"+e.cls+"]"],B),B["js-rule"])try{var q=ZC.execFn(B["js-rule"].replace("javascript:","").replace("()",""),window,n.id,e,U,F,B);q&&ZC._cp_(q,B)}catch(T){}_.links&&_.links[U.id+"-"+F.id]&&ZC._cp_(_.links[U.id+"_"+F.id],B),zingchart.plugins.tree[n.id].bFirstRender&&(null===ZC._n_(B.visible)||B.visible||(xe=!1),B.visible=!1),B.length&&(ke[U.id+"-"+F.id]=ke[F.id+"-"+U.id]=B.length),h(B,U.cls?_["node[cls-"+U.cls+"]"]:_.node,F.cls?_["node[cls-"+F.cls+"]"]:_.node),ae.push(B)}zingchart.exec(n.id,"addobject",{type:"shape",data:ae.concat(l(ae)).concat(ne)}),zingchart.plugins.tree[n.id].bFirstRender=!1,window.setTimeout(function(){we(!0)},1)},Ae=function(){a.ST=[],te=[],re=[],ne=[],ae=[];var e=zingchart.plugins.tree[n.id].data,i=[],t=[];for(o=0;o<e.length;o++)0!==e[o].level||e[o].sibling||(i.push(e[o]),t.push(o));J();var r,s,c,h={};for(o=0;o<e.length;o++)h[e[o].container+"-"+e[o].level]=h[e[o].container+"-"+e[o].level]||[],h[e[o].container+"-"+e[o].level].push(e[o].idx);ye(i.length);for(var u=0;u<te.length;u++)if(i[u]){for(o=0;o<t.length;o++)o===u&&Q(t[o],o);for(T(),g=W;g>=0;g--)if(h[u+"-"+g])for(o=0;o<h[u+"-"+g].length;o++)G(h[u+"-"+g][o]);for(T(),o=0;o<t.length;o++)H(t[o]);for(T(),g=W-1;g>=0;g--)if(h[u+"-"+g])for(o=0;o<h[u+"-"+g].length;o++)K(h[u+"-"+g][o]);if(T(),x){for(g=W-1;g>=0;g--)if(h[u+"-"+g])for(var Z=1,M=0;Z>0&&M<128;){for(Z=0,o=0;o<h[u+"-"+g].length;o++)Z+=$(h[u+"-"+g][o]);M++}T()}for(o=0;o<e.length;o++)if(e[o].container===u&&e[o].children)for(p=1;p<e[o].children.length;p++)ie(e[o].children[p]);for(T(),g=W-1;g>=0;g--)if(h[u+"-"+g])for(o=0;o<h[u+"-"+g].length;o++)K(h[u+"-"+g][o]);T();var w=Number.MAX_VALUE,k=-Number.MAX_VALUE;for(o=0;o<e.length;o++)e[o].container===u&&(""!==e[o].parent?e[o].visible&&e[e[o].pidx].visible&&re.push([e[o].pidx,e[o].idx]):e[o].sibling&&null===ZC._n_(e[o].pidx)&&null!==ZC._n_(q[e[o].sibling])&&re.push([q[e[o].sibling],e[o].idx]),e[o].visible&&(w=Math.min(w,e[o].coord),k=Math.max(k,e[o].coord)));w===k&&(k=w+j);var V,A=te[u],N=function(e){for(var i=0,t=e;t>=0;t--)i+=Math.pow(2,t);return i};switch(v){case"tree-radial":r=Math.min(A.width-ze-be,A.height-Ce-me)/(2*Math.max(W,1)),0!==C&&(r=Math.pow(2,W-1)*Math.min(A.width-ze-be,A.height-Ce-me)/N(W-1));break;case"tree-down":case"tree-up":r=(A.height-Ce-me)/Math.max(W,1),0!==C&&(r=Math.pow(2,W-1)*(A.height-Ce-me)/N(W-1));break;case"tree-left":case"tree-right":r=(A.width-ze-be)/Math.max(W,1),0!==C&&(r=Math.pow(2,W-1)*(A.width-be-ze)/N(W-1))}for(o=0;o<e.length;o++)if(e[o].visible&&e[o].container===u)switch(v){case"tree-right":if(V=(A.height-Ce-me)/(k-w),e[o].y=A.y+Ce+(e[o].coord-w)*V,0===W&&(e[o].y+=A.height/2),e[o].x=A.x+be,0===C)e[o].x+=e[o].level*r;else if(-1===C)for(g=0;g<e[o].level;g++)e[o].x+=r*Math.pow(2,-g);else if(1===C)for(g=0;g<e[o].level;g++)e[o].x+=r*Math.pow(2,-W+g+1);break;case"tree-left":if(V=(A.height-Ce-me)/(k-w),e[o].y=A.y+Ce+(e[o].coord-w)*V,0===W&&(e[o].y+=A.height/2),e[o].x=A.x+A.width-ze,0===C)e[o].x-=e[o].level*r;else if(-1===C)for(g=0;g<e[o].level;g++)e[o].x-=r*Math.pow(2,-g);else if(1===C)for(g=0;g<e[o].level;g++)e[o].x-=r*Math.pow(2,-W+g+1);break;case"tree-down":if(V=(A.width-ze-be)/(k-w),e[o].x=A.x+be+(e[o].coord-w)*V,0===W&&(e[o].x+=A.width/2),e[o].y=A.y+Ce,0===C)e[o].y+=e[o].level*r;else if(-1===C)for(g=0;g<e[o].level;g++)e[o].y+=r*Math.pow(2,-g);else if(1===C)for(g=0;g<e[o].level;g++)e[o].y+=r*Math.pow(2,-W+g+1);break;case"tree-up":if(V=(A.width-ze-be)/(k-w),e[o].x=A.x+be+(e[o].coord-w)*V,0===W&&(e[o].x+=A.width/2),e[o].y=A.y+A.height-me,0===C)e[o].y-=e[o].level*r;else if(-1===C)for(g=0;g<e[o].level;g++)e[o].y-=r*Math.pow(2,-g);else if(1===C)for(g=0;g<e[o].level;g++)e[o].y-=r*Math.pow(2,-W+g+1);break;case"tree-radial":if(V=z/(k-w+1),e[o].angle=m+(e[o].coord-w)*V,e[o].radius=0,0===C)e[o].radius+=e[o].level*r;else if(-1===C)for(g=0;g<e[o].level;g++)e[o].radius+=r*Math.pow(2,-g-1);else if(1===C)for(g=0;g<e[o].level;g++)e[o].radius+=r*Math.pow(2,-W+g);e[o].cx=A.x+be+(A.width-be-ze)/2,e[o].cy=A.y+Ce+(A.height-Ce-me)/2,P=ZC.AO.BN(e[o].cx,e[o].cy,e[o].radius,e[o].angle),e[o].x=P[0],e[o].y=P[1]}}var L={},X={},E=x?zingchart.plugins.tree.orgchart_defaults:zingchart.plugins.tree.tree_defaults;for(o=0;o<e.length;o++)if(e[o].visible&&!e[o].fake){s=e[o];var I,D=Math.round(b+(y-b)*(s.value-zingchart.plugins.tree[n.id].minValue)/(zingchart.plugins.tree[n.id].maxValue-zingchart.plugins.tree[n.id].minValue)),Y={};if(ZC._cp_(E.node,Y),ZC._cp_({id:"node_"+s.id,cls:"zctreeshape","background-color":f[s.level%f.length],"hover-state":{"background-color":ZC.AQ.JO(f[s.level%f.length],20)},x:s.x,y:s.y,size:D,dataTreeIndex:s.idx},Y),s.children&&s.children.length?ZC._cp_(E["node[parent]"],Y):ZC._cp_(E["node[leaf]"],Y),s.collapsed&&ZC._cp_(E["node[collapsed]"],Y),ZC._cp_(_.node||{},Y),s.children&&s.children.length?ZC._cp_(_["node[parent]"],Y):ZC._cp_(_["node[leaf]"],Y),s.collapsed&&ZC._cp_(_["node[collapsed]"],Y),ZC._cp_(_["node[container-"+s.container+"]"],Y),ZC._cp_(_["node[level-"+s.level+"]"],Y),s.parent&&ZC._cp_(_["node[parent-"+e[s.pidx].id+"]"],Y),s.cls)for(var U=s.cls.split(/\s/),F=0;F<U.length;F++)ZC._cp_(_["node[cls-"+U[F]+"]"],Y);if(_.nodes&&_.nodes[s.id]&&ZC._cp_(_.nodes[s.id],Y),_.nodes&&_.nodes[ZC.UN(s.id)]&&ZC._cp_(_.nodes[ZC.UN(s.id)],Y),Y.label&&(Y.label.x=s.x,Y.label.y=s.y,E.node.label_jsRule&&ZC._cp_(E.node.label_jsRule(s,Y,v),Y.label)),Y["js-rule"])try{var O=ZC.execFn(Y["js-rule"].replace("javascript:","").replace("()",""),window,n.id,s,Y);O&&ZC._cp_(O,Y)}catch(xe){}s.style&&ZC._cp_(s.style,Y);var B={decimals:null,short:!1,"thousands-separator":",","decimals-separator":"."};if(ZC._cp_(Y,B),Y.label&&Y.label.text){for(I in Y.label.text=Y.label.text.replace(/%text/gi,s.text).replace(/%node-value/gi,zingchart.formatNumber(s["node-value"],B)).replace(/%value/gi,zingchart.formatNumber(s.value,B)),s)"data-"===I.substring(0,5)&&(Y.label.text=Y.label.text.replace(new RegExp("%"+I,"g"),s[I]));Y.label.text=Y.label.text.replace(new RegExp("%data-([a-zA-Z0-9]+)","g"),"")}if(Y.tooltip&&Y.tooltip.text){for(I in ZC._cp_(Y.tooltip,B),Y.tooltip.text=Y.tooltip.text.replace(/%text/gi,s.text).replace(/%node-value/gi,zingchart.formatNumber(s["node-value"],B)).replace(/%value/gi,zingchart.formatNumber(s.value,B)),s)"data-"===I.substring(0,5)&&(Y.tooltip.text=Y.tooltip.text.replace(new RegExp("%"+I,"g"),s[I]));Y.tooltip.text=Y.tooltip.text.replace(new RegExp("%data-([a-zA-Z0-9]+)","g"),"")}ne.push(Y),L[s.id]=[],L[s.id][0]=ZC._i_(Y.width||Y.size||"0"),L[s.id][1]=ZC._i_(Y.height||Y.size2||Y.size||"0"),L[s.id][2]=ZC._i_(Y["offset-x"]||"0"),L[s.id][3]=ZC._i_(Y["offset-y"]||"0"),X[s.id]={size:ZC._i_(Y.size),type:Y.type}}for(o=0;o<re.length;o++){c=e[re[o][0]],s=e[re[o][1]];var ee={};if(ZC._cp_(E.link,ee),ZC._cp_({id:"link_"+s.idx+"_"+c.idx,cls:"zctreeshape",type:"line",flat:!0},ee),ZC._cp_(_.link||{},ee),ZC._cp_(_["link[level-"+c.level+"]"],ee),ZC._cp_(_["link[container-"+c.container+"]"],ee),ZC._cp_(_["link[parent-"+c.id+"]"],ee),!(s.sibling&&(c=e[q[s.sibling]],ee.aspect="sibling",ZC._cp_(_["link[sibling]"],ee),c.fake&&s.fake||s.fake&&!s.children))){if(ee["js-rule"])try{var le=ZC.execFn(ee["js-rule"].replace("javascript:","").replace("()",""),window,n.id,s,c,ee);le&&ZC._cp_(le,ee)}catch(xe){}_.links&&_.links[c.id+"_"+s.id]&&ZC._cp_(_.links[c.id+"_"+s.id],ee);var se,ce,oe=[],de=s.x,he=s.y;L[s.id]&&(de+=L[s.id][2],he+=L[s.id][3]);var ge=c.x,pe=c.y;L[c.id]&&(ge+=L[c.id][2],pe+=L[c.id][3]);var ue=!0,_e=r;switch(ee.aspect){case"sibling":oe=[[de,he],[ge,pe]],ue=!0;break;case"side-before":case"side-after":"tree-down"===v||"tree-up"===v?(x||(_e=ZC._a_(pe-he)),oe=[[de,he],[ge+("side-after"===ee.aspect?1:-1)*L[c.id][0]/3,he],[ge+("side-after"===ee.aspect?1:-1)*L[c.id][0]/3,pe+("tree-down"===v?1:-1)*_e/R],[ge+("side-after"===ee.aspect?1:-1)*L[c.id][0]/3,pe+("tree-down"===v?1:-1)*_e/R],[ge+("side-after"===ee.aspect?1:-1)*L[c.id][0]/3,pe]]):(x||(_e=ZC._a_(ge-de)),oe=[[de,he],[de,pe+("side-after"===ee.aspect?-1:1)*L[c.id][1]/3],[ge+("tree-right"===v?1:-1)*_e/R,pe+("side-after"===ee.aspect?-1:1)*L[c.id][1]/3],[ge+("tree-right"===v?1:-1)*_e/R,pe+("side-after"===ee.aspect?-1:1)*L[c.id][1]/3],[ge,pe+("side-after"===ee.aspect?-1:1)*L[c.id][1]/3]]),ue=!0;break;case"side-between":oe=[[de,he],[ge,he],[ge,pe]],ue=!0;break;case"arc":if(S=ZC.AO.JW(ge,pe,de,he),oe.push([ge,pe]),"tree-up"===v||"tree-down"===v)ce=pe-S[1],oe.push([ge,S[1]+ce/R,S[0],S[1]]),oe.push([de,S[1]-ce/R,de,he]);else if("tree-left"===v||"tree-right"===v)se=ge-S[0],oe.push([S[0]+se/R,pe,S[0],S[1]]),oe.push([S[0]-se/R,he,de,he]);else if("tree-radial"===v&&c.level>0){var fe=ZC.AO.BN(te[s.container].x+te[s.container].width/2,te[s.container].y+te[s.container].height/2,c.radius+(s.radius-c.radius)/5,c.angle),ve=ZC.AO.BN(te[s.container].x+te[s.container].width/2,te[s.container].y+te[s.container].height/2,c.radius+4*(s.radius-c.radius)/5,s.angle);oe.push([fe[0],fe[1],S[0],S[1]]),oe.push([ve[0],ve[1],de,he])}oe.push([de,he]),ue=!1;break;case"split":oe.push([ge,pe]),"tree-up"===v||"tree-down"===v?(x||(_e=ZC._a_(pe-he)),oe.push([ge,pe+_e/R*("tree-down"===v?1:-1)]),oe.push([de,pe+_e/R*("tree-down"===v?1:-1)])):"tree-left"===v||"tree-right"===v?(x||(_e=ZC._a_(ge-de)),oe.push([ge+_e/R*("tree-right"===v?1:-1),pe]),oe.push([ge+_e/R*("tree-right"===v?1:-1),he])):"tree-radial"===v&&(P=ZC.AO.BN(te[s.container].x+te[s.container].width/2,te[s.container].y+te[s.container].height/2,c.radius+(s.radius-c.radius)/2,c.angle),oe.push([P[0],P[1]]),oe.push([te[s.container].x+te[s.container].width/2,te[s.container].y+te[s.container].height/2,c.radius+(s.radius-c.radius)/2,c.angle,s.angle,c.angle>s.angle?1:0])),oe.push([de,he]),ue=!1;break;case"line":oe=[[de,he],[ge,pe]],ue=!0}ee.points=oe,ee.visible=!0,ue?d(ee,L[s.id],X[s.id],L[c.id],X[c.id]):d(ee,L[c.id],X[c.id],L[s.id],X[s.id]),ae.push(ee)}}zingchart.exec(n.id,"removeobject",{type:"shape",cls:"zctreeshape"}),zingchart.exec(n.id,"addobject",{type:"shape",data:ae.concat(l(ae)).concat(ne)})};if("graph"===v){if(Ve(),!zingchart.plugins.tree[n.id].navSetup){var Ne=function(){pe=""};zingchart.bind(n.id,"shape_mousedown",function(e){if(0===e.ev.button&&0===e.shape.id.indexOf("node_")){var i=ZC.Q.MH(e.ev),t=ZC.A5("#"+n.id+"-top").offset();ue=[i[0]-t.left,i[1]-t.top],zingchart.bind(n.id,"mouseup",Ne),pe=e.shape.id.replace("node_","")}}),zingchart.bind(n.id,"shape_mouseup",Ne),zingchart.bind(n.id,"mousemove",function(e){""!==pe?(e.ev.preventDefault(),ue=[e.x,e.y],we(!0),(ue[0]<10||ue[0]>a.I-10||ue[1]<10||ue[1]>a.F-10)&&Ne(e)):"none"===e.target&&(s.LJ(),s.A7&&s.A.A7&&s.A7.AN&&a.A7.onmouseout(e.ev))}),zingchart.bind(n.id,"beforedestroy",function(e){zingchart.plugins.tree[e.id]._render_graph_=null,zingchart.plugins.tree[e.id].navSetup=!1}),zingchart.plugins.tree[n.id].navSetup=!0}}else Ae(),D||zingchart.plugins.tree[n.id].navSetup||(zingchart.bind(n.id,"shape_click",function(e){0===e.shape.id.indexOf("node_")&&window.setTimeout(function(){!function(e){for(var i=zingchart.plugins.tree[n.id].data,t=F(e,!0),r=0;r<t.length;r++)0===r?i[t[r]].collapsed=!i[t[r]].collapsed:i[t[r]].visible=!i[t[r]].visible}(e["data-tree-index"]),Ae()},33)}),zingchart.plugins.tree[n.id].navSetup=!0)}};zingchart.bind(null,"gcomplete",function(e){a(e)}),zingchart.extendAPI("tree.addnode",function(e,i){if(zingchart.plugins.tree[e]&&i.data){var t=!0;null!==ZC._n_(i.update)&&(t=ZC._b_(i.update));var r=i.data;r.id=r.id||"N"+ZC._r_(1e4,99999),r.text=r.text||r.id,r.type="node",r.value=r.value||1,r.container=r.container||0,r.group=r.group||0,zingchart.plugins.tree[e].data.push(r),t&&(n(e),zingchart.plugins.tree[e]._render_graph_())}}),zingchart.extendAPI("tree.removenode",function(e,i){if(zingchart.plugins.tree[e]&&i.id){var t=!0;if(null!==ZC._n_(i.update)&&(t=ZC._b_(i.update)),!i.id)return;for(var r=zingchart.plugins.tree[e].data.length-1;r>=0;r--)"node"===zingchart.plugins.tree[e].data[r].type&&zingchart.plugins.tree[e].data[r].id===i.id?zingchart.plugins.tree[e].data.splice(r,1):("link"===zingchart.plugins.tree[e].data[r].type&&zingchart.plugins.tree[e].data[r].source===i.id||zingchart.plugins.tree[e].data[r].target===i.id)&&zingchart.plugins.tree[e].data.splice(r,1);t&&(n(e),zingchart.plugins.tree[e]._render_graph_())}}),zingchart.extendAPI("tree.getdata",function(e){return zingchart.plugins.tree[e]?zingchart.plugins.tree[e].data:null}),zingchart.extendAPI("tree.set",function(e,i){if(zingchart.plugins.tree[e]&&i.data){var t=!0;null!==ZC._n_(i.update)&&(t=ZC._b_(i.update));var r=i.data;null!==ZC._n_(r["attraction-constant"])&&(zingchart.plugins.tree[e].attractionConstant=ZC._f_(r["attraction-constant"])),null!==ZC._n_(r["repulsion-constant"])&&(zingchart.plugins.tree[e].repulsionConstant=ZC._i_(r["repulsion-constant"])),null!==ZC._n_(r["spring-length"])&&(zingchart.plugins.tree[e].springLength=ZC._f_(r["spring-length"])),t&&(n(e),zingchart.plugins.tree[e]._render_graph_())}return null}),zingchart.extendAPI("tree.addlink",function(e,i){if(zingchart.plugins.tree[e]&&i.data){var t=!0;null!==ZC._n_(i.update)&&(t=ZC._b_(i.update));var r=i.data;if(!r.source||!r.target)return;for(var a=0,l=0;l<zingchart.plugins.tree[e].data.length;l++)"node"===zingchart.plugins.tree[e].data[l].type&&(zingchart.plugins.tree[e].data[l].id!==r.source&&zingchart.plugins.tree[e].data[l].id!==r.target||a++);if(2!==a)return;r.type="link",r.value=r.value||1,zingchart.plugins.tree[e].data.push(r),t&&(n(e),zingchart.plugins.tree[e]._render_graph_())}}),zingchart.extendAPI("tree.removelink",function(e,i){if(zingchart.plugins.tree[e]&&i.data){var t=!0;null!==ZC._n_(i.update)&&(t=ZC._b_(i.update));var r=i.data;if(!r.source||!r.target)return;for(var a=zingchart.plugins.tree[e].data.length-1;a>=0;a--)(zingchart.plugins.tree[e].data[a].source===r.source&&zingchart.plugins.tree[e].data[a].target===r.target||zingchart.plugins.tree[e].data[a].source===r.target&&zingchart.plugins.tree[e].data[a].target===r.source)&&zingchart.plugins.tree[e].data.splice(a,1);t&&(n(e),zingchart.plugins.tree[e]._render_graph_())}})}function l(e){for(var i=[],t={},r=0;r<e.length;r++){var n=e[r],a=!0===n.visible;if(n["start-point"]||n["end-point"]){var l=o(n.points),d=l[0],h=l[1],g=l[2],p=l[3],u={specs:n["start-point"],id:n.id+"_startpoint",color:n["line-color"],lineWidth:n["line-width"],tip:d,tail:h},_={specs:n["end-point"],id:n.id+"_endpoint",color:n["line-color"],lineWidth:n["line-width"],tip:g,tail:p};n["start-point"]&&(!1===n.startSizeZero||n["start-point"]["allow-zero-nodes"])&&s(t,u),n["end-point"]&&(!1===n.endSizeZero||n["end-point"]["allow-zero-nodes"])&&s(t,_)}}for(var f in t)i.push(c(t[f],a));return i}function s(e,i){var t=i.tip[0].toString()+"_"+i.tip[1].toString()+"_"+i.tail[0].toString()+"_"+i.tail[1].toString();e[t]===undefined&&(e[t]=i)}function c(e,i){var t,r,n=[],a=(e.specs.width||10)/2,l=e.specs.length||15;e.specs["allow-zero-nodes"];switch(e.specs.type){case"linearrow":r=!1,t=0;break;case"diamond":r=!0,l=(t=l)/2;break;case"triangle":r=!0,t=l;break;case"arrow":default:r=!0,t=.8*l}n.push([l,a]),n.push([0,0]),n.push([l,-a]),r&&(n.push([t,0]),n.push([l,a]));for(var s=Math.atan2(e.tail[1]-e.tip[1],e.tail[0]-e.tip[0]),c=Math.cos(-1*s),o=Math.sin(-1*s),d=0;d<n.length;d++){var h=n[d],g=c*h[0]+o*h[1],p=c*h[1]-o*h[0];h[0]=g+e.tip[0],h[1]=p+e.tip[1]}var u=e.specs["border-color"]||e.color,_=e.specs["background-color"]||e.color,f=e.specs["border-width"]||e.lineWidth,v={id:e.id,cls:"zctreeshape",flat:!0,points:n,visible:i};return r?(v.type="poly",v["background-color"]=_,v["border-color"]=u,v["border-width"]=f):(v.type="line",v["line-color"]=u,v["line-width"]=f),v}function o(e){var i=e.length;return[e[0],e[1],e[i-1],e[i-2]]}function d(e,i,t,r,n){var a=o(e.points);e.startSizeZero=!i||!u(a[0],a[1],p(i,t),t.type),e.endSizeZero=!r||!u(a[2],a[3],p(r,n),n.type)}function h(e,i,t){var r=o(e.points),n=g(i),a=g(t);e.startSizeZero=!u(r[0],r[1],[n.horzRadius,n.vertRadius],n.type),e.endSizeZero=!u(r[2],r[3],[a.horzRadius,a.vertRadius],a.type)}function g(e){var i,t;if(!e)return{horzRadius:10,vertRadius:10,type:"circle"};var r=e.type||"circle";switch(r){case"circle":case"square":i=ZC._i_(e.size),t=ZC._i_(e.size);break;case"rectangle":i=ZC._i_(e.width)/2,t=ZC._i_(e.height)/2;break;default:e.size?(i=ZC._i_(e.size),t=ZC._i_(e.size)):(i=(ZC._i_(e.width)||0)/2,t=(ZC._i_(e.height)||0)/2)}return{horzRadius:i,vertRadius:t,type:r}}function p(e,i){var t,r;switch(i.type){case"circle":case"square":t=i.size,r=i.size;break;case"rectangle":t=e[0]/2,r=e[1]/2;break;default:i.size?(t=i.size,r=i.size):(t=e[0]/2,r=e[1]/2)}return[t,r,e[2],e[3]]}function u(e,i,t,r){var n=t[0],a=t[1];t[2],t[3];if(e[1]==i[1]&&e[0]<=i[0])e[0]+=n;else if(e[1]==i[1]&&e[0]>i[0])e[0]-=n;else if(e[0]==i[0]&&e[1]<=i[1])e[1]+=a;else if(e[0]==i[0]&&e[1]>i[1])e[1]-=a;else switch(r){case"circle":var l=Math.atan2(i[1]-e[1],i[0]-e[0]);e[0]+=Math.cos(-1*l)*n,e[1]-=Math.sin(-1*l)*n;break;case"rectangle":default:var s,c=[e[0]-n,e[1]-a],o=[e[0]+n,e[1]-a],d=[e[0]-n,e[1]+a],h=[e[0]+n,e[1]+a];function g(e){return!isNaN(e[0])&&!isNaN(e[1])}g(s=_(c,o,e,i))?(e[0]=s[0],e[1]=s[1]):g(s=_(o,h,e,i))?(e[0]=s[0],e[1]=s[1]):g(s=_(h,d,e,i))?(e[0]=s[0],e[1]=s[1]):g(s=_(d,c,e,i))&&(e[0]=s[0],e[1]=s[1])}return 0!=n}function _(e,i,t,r){var n=ZC.AO.A5J(e,i,t,r),a=[NaN,NaN];return isNaN(n[0])||isNaN(n[1])?a:n[0]>Math.max(e[0],i[0])||n[0]<Math.min(e[0],i[0])?a:n[1]>Math.max(e[1],i[1])||n[1]<Math.min(e[1],i[1])?a:r[0]>t[0]&&n[0]<t[0]?a:r[0]<t[0]&&n[0]>t[0]?a:r[1]>t[1]&&n[1]<t[1]?a:r[1]<t[1]&&n[1]>t[1]?a:n}}();