nnnjjj123
2020-11-17 1b2c1edb61190eeb19f465ff031eaa3b2a1b8dbc
1
2
3
4
5
6
//>>built
define(["dojo/_base/array"],function(n){var p={group:function(c,g,e){var b={children:[]},l=function(d,a){d.__treeValue||(d.__treeValue=0);d.__treeValue+=e(a);return d};n.forEach(c,function(d){var a=b;n.forEach(g,function(f,c){var b=f(d);(f=p.find(a.children,function(a){return a.__treeName==b}))||a.children.push(f={__treeName:b,__treeID:b+Math.random(),children:[]});f=l(f,d);c!=g.length-1?a=f:f.children.push(d)});a=l(a,d)});return b},find:function(c,g){for(var e=c.length,b=0;b<e;++b)if(g.call(null,
c[b]))return c[b];return null},solve:function(c,g,e,b,l){var d=p.initElements(c,b);b=d.total;var d=d.elements,a=b;if(0==b){if(0==d.length)return{items:c,rects:[],total:0};n.forEach(d,function(a){a.size=a.sizeTmp=100});b=100*d.length}d.sort(function(a,b){return b.size-a.size});p._compute(g,e,d,b);d.sort(function(a,b){return a.index-b.index});c={};c.elements=d;c.size=a;rects=n.map(d,function(a){return{x:l?g-a.x-a.width:a.x,y:a.y,w:a.width,h:a.height}});c.rectangles=rects;return c},initElements:function(c,
g){var e=0;return{elements:n.map(c,function(b,c){b=null!=g?g(b):0;if(0>b)throw Error("item size dimension must be positive");e+=b;return{index:c,size:b,sizeTmp:b}}),total:e}},_compute:function(c,g,e,b){var l=c*g/b/100;n.forEach(e,function(a){a.sizeTmp*=l});for(var d=b=0,a=2147483647,f,k=0,h=0,m=c,r=g,q=m>r;d!=e.length;)if(f=p._trySolution(e,b,d,q,m,r),f>a||1>f){m=f=0;for(a=b;a<d;a++)e[a].x=k+f,e[a].y=h+m,q?m+=e[a].height:f+=e[a].width;q?k+=e[b].width:h+=e[b].height;m=c-k;r=g-h;q=m>r;d=b=d;a=2147483647}else{for(a=
b;a<=d;a++)e[a].width=e[a].widthTmp,e[a].height=e[a].heightTmp;a=f;d++}g=c=0;for(a=b;a<d;a++)e[a].x=k+c,e[a].y=h+g,q?g+=e[a].height:c+=e[a].width},_trySolution:function(c,g,e,b,l,d){for(var a=0,f=0,k=f=0,h=g;h<=e;h++)a+=c[h].sizeTmp;b?0==d?f=k=0:(f=a/d*100,k=d):0==l?f=k=0:(k=a/l*100,f=l);for(h=g;h<=e;h++)b?(c[h].widthTmp=f,c[h].heightTmp=0==a?0:k*c[h].sizeTmp/a):(c[h].widthTmp=0==a?0:f*c[h].sizeTmp/a,c[h].heightTmp=k);f=Math.max(c[e].heightTmp/c[e].widthTmp,c[e].widthTmp/c[e].heightTmp);return void 0==
f?1:f}};return p});