//>>built
define("dojox/treemap/TreeMap",["dojo/_base/array","dojo/_base/lang","dojo/_base/declare","dojo/_base/event","dojo/_base/Color","dojo/touch","dojo/when","dojo/on","dojo/query","dojo/dom-construct","dojo/dom-geometry","dojo/dom-class","dojo/dom-style","./_utils","dijit/_WidgetBase","dojox/widget/_Invalidating","dojox/widget/Selection","dojo/_base/sniff","dojo/uacss"],function(_1,_2,_3,_4,_5,_6,_7,on,_8,_9,_a,_b,_c,_d,_e,_f,_10,has){
return _3("dojox.treemap.TreeMap",[_e,_f,_10],{baseClass:"dojoxTreeMap",store:null,query:{},queryOptions:null,itemToRenderer:null,_dataChanged:false,rootItem:null,_rootItemChanged:false,tooltipAttr:"",areaAttr:"",_areaChanged:false,labelAttr:"label",labelThreshold:NaN,colorAttr:"",colorModel:null,_coloringChanged:false,groupAttrs:[],groupFuncs:null,_groupFuncs:null,_groupingChanged:false,constructor:function(){
this.itemToRenderer={};
this.invalidatingProperties=["colorModel","groupAttrs","groupFuncs","areaAttr","areaFunc","labelAttr","labelFunc","labelThreshold","tooltipAttr","tooltipFunc","colorAttr","colorFunc","rootItem"];
},getIdentity:function(_11){
return _11.__treeID?_11.__treeID:this.store.getIdentity(_11);
},resize:function(box){
if(box){
_a.setMarginBox(this.domNode,box);
this.invalidateRendering();
}
},postCreate:function(){
this.inherited(arguments);
this.own(on(this.domNode,"mouseover",_2.hitch(this,this._onMouseOver)));
this.own(on(this.domNode,"mouseout",_2.hitch(this,this._onMouseOut)));
this.own(on(this.domNode,_6.release,_2.hitch(this,this._onMouseUp)));
this.domNode.setAttribute("role","presentation");
this.domNode.setAttribute("aria-label","treemap");
},buildRendering:function(){
this.inherited(arguments);
this.refreshRendering();
},refreshRendering:function(){
var _12=false;
if(this._dataChanged){
this._dataChanged=false;
this._groupingChanged=true;
this._coloringChanged=true;
}
if(this._groupingChanged){
this._groupingChanged=false;
this._set("rootItem",null);
this._updateTreeMapHierarchy();
_12=true;
}
if(this._rootItemChanged){
this._rootItemChanged=false;
_12=true;
}
if(this._coloringChanged){
this._coloringChanged=false;
if(this.colorModel!=null&&this._data!=null&&this.colorModel.initialize){
this.colorModel.initialize(this._data,_2.hitch(this,function(_13){
return this.colorFunc(_13,this.store);
}));
}
}
if(this._areaChanged){
this._areaChanged=false;
this._removeAreaForGroup();
}
if(this.domNode==undefined||this._items==null){
return;
}
if(_12){
_9.empty(this.domNode);
}
var _14=this.rootItem;
if(_14!=null){
if(this._isLeaf(_14)){
_14=this._getRenderer(_14).parentItem;
}
}
var box=_a.getMarginBox(this.domNode);
if(_14!=null){
this._buildRenderer(this.domNode,null,_14,{x:box.l,y:box.t,w:box.w,h:box.h},0,_12);
}else{
this._buildChildrenRenderers(this.domNode,_14?_14:{__treeRoot:true,children:this._items},0,_12,box);
}
},_setRootItemAttr:function(_15){
this._rootItemChanged=true;
this._set("rootItem",_15);
},_setStoreAttr:function(_16){
var r;
if(this._observeHandler){
this._observeHandler.remove();
this._observeHandler=null;
}
if(_16!=null){
var _17=_16.query(this.query,this.queryOptions);
if(_17.observe){
this._observeHandler=_17.observe(_2.hitch(this,this._updateItem),true);
}
r=_7(_17,_2.hitch(this,this._initItems));
}else{
r=this._initItems([]);
}
this._set("store",_16);
return r;
},_initItems:function(_18){
this._dataChanged=true;
this._data=_18;
this.invalidateRendering();
return _18;
},_updateItem:function(_19,_1a,_1b){
if(_1a!=-1){
if(_1b!=_1a){
this._data.splice(_1a,1);
}else{
this._data[_1b]=_19;
}
}else{
if(_1b!=-1){
this._data.splice(_1b,0,_19);
}
}
this._dataChanged=true;
this.invalidateRendering();
},_setGroupAttrsAttr:function(_1c){
this._groupingChanged=true;
if(this.groupFuncs==null){
if(_1c!=null){
this._groupFuncs=_1.map(_1c,function(_1d){
return function(_1e){
return _1e[_1d];
};
});
}else{
this._groupFuncs=null;
}
}
this._set("groupAttrs",_1c);
},_setGroupFuncsAttr:function(_1f){
this._groupingChanged=true;
this._set("groupFuncs",this._groupFuncs=_1f);
if(_1f==null&&this.groupAttrs!=null){
this._groupFuncs=_1.map(this.groupAttrs,function(_20){
return function(_21){
return _21[_20];
};
});
}
},_setAreaAttrAttr:function(_22){
this._areaChanged=true;
this._set("areaAttr",_22);
},areaFunc:function(_23,_24){
return (this.areaAttr&&this.areaAttr.length>0)?parseFloat(_23[this.areaAttr]):1;
},_setAreaFuncAttr:function(_25){
this._areaChanged=true;
this._set("areaFunc",_25);
},labelFunc:function(_26,_27){
var _28=(this.labelAttr&&this.labelAttr.length>0)?_26[this.labelAttr]:null;
return _28?_28.toString():null;
},tooltipFunc:function(_29,_2a){
var _2b=(this.tooltipAttr&&this.tooltipAttr.length>0)?_29[this.tooltipAttr]:null;
return _2b?_2b.toString():null;
},_setColorModelAttr:function(_2c){
this._coloringChanged=true;
this._set("colorModel",_2c);
},_setColorAttrAttr:function(_2d){
this._coloringChanged=true;
this._set("colorAttr",_2d);
},colorFunc:function(_2e,_2f){
var _30=(this.colorAttr&&this.colorAttr.length>0)?_2e[this.colorAttr]:0;
if(_30==null){
_30=0;
}
return parseFloat(_30);
},_setColorFuncAttr:function(_31){
this._coloringChanged=true;
this._set("colorFunc",_31);
},createRenderer:function(_32,_33,_34){
var div=_9.create("div");
if(_34!="header"){
_c.set(div,"overflow","hidden");
_c.set(div,"position","absolute");
}
return div;
},styleRenderer:function(_35,_36,_37,_38){
switch(_38){
case "leaf":
_c.set(_35,"background",this.getColorForItem(_36).toHex());
case "header":
var _39=this.getLabelForItem(_36);
if(_39&&(isNaN(this.labelThreshold)||_37<this.labelThreshold)){
_35.innerHTML=_39;
}else{
_9.empty(_35);
}
break;
default:
}
},_updateTreeMapHierarchy:function(){
if(this._data==null){
return;
}
if(this._groupFuncs!=null&&this._groupFuncs.length>0){
this._items=_d.group(this._data,this._groupFuncs,_2.hitch(this,this._getAreaForItem)).children;
}else{
this._items=this._data;
}
},_removeAreaForGroup:function(_3a){
var _3b;
if(_3a!=null){
if(_3a.__treeValue){
delete _3a.__treeValue;
_3b=_3a.children;
}else{
return;
}
}else{
_3b=this._items;
}
if(_3b){
for(var i=0;i<_3b.length;++i){
this._removeAreaForGroup(_3b[i]);
}
}
},_getAreaForItem:function(_3c){
var _3d=this.areaFunc(_3c,this.store);
return isNaN(_3d)?0:_3d;
},_computeAreaForItem:function(_3e){
var _3f;
if(_3e.__treeID){
_3f=_3e.__treeValue;
if(!_3f){
_3f=0;
var _40=_3e.children;
for(var i=0;i<_40.length;++i){
_3f+=this._computeAreaForItem(_40[i]);
}
_3e.__treeValue=_3f;
}
}else{
_3f=this._getAreaForItem(_3e);
}
return _3f;
},getColorForItem:function(_41){
var _42=this.colorFunc(_41,this.store);
if(this.colorModel!=null){
return this.colorModel.getColor(_42);
}else{
return new _5(_42);
}
},getLabelForItem:function(_43){
return _43.__treeName?_43.__treeName:this.labelFunc(_43,this.store);
},_buildChildrenRenderers:function(_44,_45,_46,_47,_48,_49){
var _4a=_45.children;
var box=_a.getMarginBox(_44);
var _4b=_d.solve(_4a,box.w,box.h,_2.hitch(this,this._computeAreaForItem),!this.isLeftToRight());
var _4c=_4b.rectangles;
if(_48){
_4c=_1.map(_4c,function(_4d){
_4d.x+=_48.l;
_4d.y+=_48.t;
return _4d;
});
}
var _4e;
for(var j=0;j<_4a.length;++j){
_4e=_4c[j];
this._buildRenderer(_44,_45,_4a[j],_4e,_46,_47,_49);
}
},_isLeaf:function(_4f){
return !_4f.children;
},_isRoot:function(_50){
return _50.__treeRoot;
},_getRenderer:function(_51,_52,_53){
if(_52){
for(var i=0;i<_53.children.length;++i){
if(_53.children[i].item==_51){
return _53.children[i];
}
}
}
return this.itemToRenderer[this.getIdentity(_51)];
},_buildRenderer:function(_54,_55,_56,_57,_58,_59,_5a){
var _5b=this._isLeaf(_56);
var _5c=!_59?this._getRenderer(_56,_5a,_54):null;
_5c=_5b?this._updateLeafRenderer(_5c,_56,_58):this._updateGroupRenderer(_5c,_56,_58);
if(_59){
_5c.level=_58;
_5c.item=_56;
_5c.parentItem=_55;
this.itemToRenderer[this.getIdentity(_56)]=_5c;
this.updateRenderers(_56);
}
var x=Math.floor(_57.x);
var y=Math.floor(_57.y);
var w=Math.floor(_57.x+_57.w+1e-11)-x;
var h=Math.floor(_57.y+_57.h+1e-11)-y;
if(_59){
_9.place(_5c,_54);
}
_a.setMarginBox(_5c,{l:x,t:y,w:w,h:h});
if(!_5b){
var box=_a.getContentBox(_5c);
this._layoutGroupContent(_5c,box.w,box.h,_58+1,_59,_5a);
}
this.onRendererUpdated({renderer:_5c,item:_56,kind:_5b?"leaf":"group",level:_58});
},_layoutGroupContent:function(_5d,_5e,_5f,_60,_61,_62){
var _63=_8(".dojoxTreeMapHeader",_5d)[0];
var _64=_8(".dojoxTreeMapGroupContent",_5d)[0];
if(_63==null||_64==null){
return;
}
var box=_a.getMarginBox(_63);
if(box.h>_5f){
box.h=_5f;
_c.set(_64,"display","none");
}else{
_c.set(_64,"display","block");
_a.setMarginBox(_64,{l:0,t:box.h,w:_5e,h:(_5f-box.h)});
this._buildChildrenRenderers(_64,_5d.item,_60,_61,null,_62);
}
_a.setMarginBox(_63,{l:0,t:0,w:_5e,h:box.h});
},_updateGroupRenderer:function(_65,_66,_67){
var _68=_65==null;
if(_65==null){
_65=this.createRenderer("div",_67,"group");
_b.add(_65,"dojoxTreeMapGroup");
}
this.styleRenderer(_65,_66,_67,"group");
var _69=_8(".dojoxTreeMapHeader",_65)[0];
_69=this._updateHeaderRenderer(_69,_66,_67);
if(_68){
_9.place(_69,_65);
}
var _6a=_8(".dojoxTreeMapGroupContent",_65)[0];
_6a=this._updateGroupContentRenderer(_6a,_66,_67);
if(_68){
_9.place(_6a,_65);
}
return _65;
},_updateHeaderRenderer:function(_6b,_6c,_6d){
if(_6b==null){
_6b=this.createRenderer(_6c,_6d,"header");
_b.add(_6b,"dojoxTreeMapHeader");
_b.add(_6b,"dojoxTreeMapHeader_"+_6d);
}
this.styleRenderer(_6b,_6c,_6d,"header");
return _6b;
},_updateLeafRenderer:function(_6e,_6f,_70){
if(_6e==null){
_6e=this.createRenderer(_6f,_70,"leaf");
_b.add(_6e,"dojoxTreeMapLeaf");
_b.add(_6e,"dojoxTreeMapLeaf_"+_70);
}
this.styleRenderer(_6e,_6f,_70,"leaf");
var _71=this.tooltipFunc(_6f,this.store);
if(_71){
_6e.title=_71;
}
return _6e;
},_updateGroupContentRenderer:function(_72,_73,_74){
if(_72==null){
_72=this.createRenderer(_73,_74,"content");
_b.add(_72,"dojoxTreeMapGroupContent");
_b.add(_72,"dojoxTreeMapGroupContent_"+_74);
}
this.styleRenderer(_72,_73,_74,"content");
return _72;
},_getRendererFromTarget:function(_75){
var _76=_75;
while(_76!=this.domNode&&!_76.item){
_76=_76.parentNode;
}
return _76;
},_onMouseOver:function(e){
var _77=this._getRendererFromTarget(e.target);
if(_77.item){
var _78=_77.item;
this._hoveredItem=_78;
this.updateRenderers(_78);
this.onItemRollOver({renderer:_77,item:_78,triggerEvent:e});
}
},_onMouseOut:function(e){
var _79=this._getRendererFromTarget(e.target);
if(_79.item){
var _7a=_79.item;
this._hoveredItem=null;
this.updateRenderers(_7a);
this.onItemRollOut({renderer:_79,item:_7a,triggerEvent:e});
}
},_onMouseUp:function(e){
var _7b=this._getRendererFromTarget(e.target);
if(_7b.item){
this.selectFromEvent(e,_7b.item,e.currentTarget,true);
}
},onRendererUpdated:function(){
},onItemRollOver:function(){
},onItemRollOut:function(){
},updateRenderers:function(_7c){
if(!_7c){
return;
}
if(!_2.isArray(_7c)){
_7c=[_7c];
}
for(var i=0;i<_7c.length;i++){
var _7d=_7c[i];
var _7e=this._getRenderer(_7d);
if(!_7e){
continue;
}
var _7f=this.isItemSelected(_7d);
var ie=has("ie");
var div;
if(_7f){
_b.add(_7e,"dojoxTreeMapSelected");
if(ie&&(has("quirks")||ie<9)){
div=_7e.previousSibling;
var _80=_c.get(_7e);
if(!div||!_b.contains(div,"dojoxTreeMapIEHack")){
div=this.createRenderer(_7d,-10,"group");
_b.add(div,"dojoxTreeMapIEHack");
_b.add(div,"dojoxTreeMapSelected");
_c.set(div,{position:"absolute",overflow:"hidden"});
_9.place(div,_7e,"before");
}
var _81=2*parseInt(_c.get(div,"border-width"));
if(this._isLeaf(_7d)){
_81-=1;
}else{
_81+=1;
}
if(_80["left"]!="auto"){
_c.set(div,{left:(parseInt(_80["left"])+1)+"px",top:(parseInt(_80["top"])+1)+"px",width:(parseInt(_80["width"])-_81)+"px",height:(parseInt(_80["height"])-_81)+"px"});
}
}
}else{
if(ie&&(has("quirks")||ie<9)){
div=_7e.previousSibling;
if(div&&_b.contains(div,"dojoxTreeMapIEHack")){
div.parentNode.removeChild(div);
}
}
_b.remove(_7e,"dojoxTreeMapSelected");
}
if(this._hoveredItem==_7d){
_b.add(_7e,"dojoxTreeMapHovered");
}else{
_b.remove(_7e,"dojoxTreeMapHovered");
}
if(_7f||this._hoveredItem==_7d){
_c.set(_7e,"zIndex",20);
}else{
_c.set(_7e,"zIndex",(has("ie")<=7)?0:"auto");
}
}
}});
});
