//>>built
define("dojox/grid/_TreeView",["dijit/registry","../main","dojo/_base/declare","dojo/_base/array","dojo/_base/lang","dojo/_base/event","dojo/dom-attr","dojo/dom-class","dojo/dom-style","dojo/dom-construct","dojo/query","dojo/parser","dojo/text!./resources/Expando.html","dijit/_Widget","dijit/_TemplatedMixin","./_View","./_Builder","./util"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_a,_b,_c,_d,_e,_f,_10,_11,_12){
_3("dojox.grid._Expando",[_e,_f],{open:false,toggleClass:"",itemId:"",cellIdx:-1,view:null,rowNode:null,rowIdx:-1,expandoCell:null,level:0,templateString:_d,_toggleRows:function(_13,_14){
if(!_13||!this.rowNode){
return;
}
if(_b("table.dojoxGridRowTableNeedsRowUpdate").length){
if(this._initialized){
this.view.grid.updateRow(this.rowIdx);
}
return;
}
var _15=this;
var g=this.view.grid;
if(g.treeModel){
var p=this._tableRow?_7.get(this._tableRow,"dojoxTreeGridPath"):"";
if(p){
_b("tr[dojoxTreeGridPath^=\""+p+"/\"]",this.rowNode).forEach(function(n){
var en=_b(".dojoxGridExpando",n)[0];
if(en&&en.parentNode&&en.parentNode.parentNode&&!_8.contains(en.parentNode.parentNode,"dojoxGridNoChildren")){
var ew=_1.byNode(en);
if(ew){
ew._toggleRows(_13,ew.open&&_14);
}
}
n.style.display=_14?"":"none";
});
}
}else{
_b("tr."+_13,this.rowNode).forEach(function(n){
if(_8.contains(n,"dojoxGridExpandoRow")){
var en=_b(".dojoxGridExpando",n)[0];
if(en){
var ew=_1.byNode(en);
var _16=ew?ew.toggleClass:en.getAttribute("toggleClass");
var _17=ew?ew.open:_15.expandoCell.getOpenState(en.getAttribute("itemId"));
_15._toggleRows(_16,_17&&_14);
}
}
n.style.display=_14?"":"none";
});
}
},setOpen:function(_18){
if(_18&&_8.contains(this.domNode,"dojoxGridExpandoLoading")){
_18=false;
}
var _19=this.view;
var _1a=_19.grid;
var _1b=_1a.store;
var _1c=_1a.treeModel;
var d=this;
var idx=this.rowIdx;
var me=_1a._by_idx[idx];
if(!me){
return;
}
if(_1c&&!this._loadedChildren){
if(_18){
var itm=_1a.getItem(_7.get(this._tableRow,"dojoxTreeGridPath"));
if(itm){
this.expandoInner.innerHTML="o";
_8.add(this.domNode,"dojoxGridExpandoLoading");
_1c.getChildren(itm,function(_1d){
d._loadedChildren=true;
d._setOpen(_18);
});
}else{
this._setOpen(_18);
}
}else{
this._setOpen(_18);
}
}else{
if(!_1c&&_1b){
if(_18){
var _1e=_1a._by_idx[this.rowIdx];
if(_1e&&!_1b.isItemLoaded(_1e.item)){
this.expandoInner.innerHTML="o";
_8.add(this.domNode,"dojoxGridExpandoLoading");
_1b.loadItem({item:_1e.item,onItem:_5.hitch(this,function(i){
var _1f=_1b.getIdentity(i);
_1a._by_idty[_1f]=_1a._by_idx[this.rowIdx]={idty:_1f,item:i};
this._setOpen(_18);
})});
}else{
this._setOpen(_18);
}
}else{
this._setOpen(_18);
}
}else{
this._setOpen(_18);
}
}
},_setOpen:function(_20){
if(_20&&this._tableRow&&_8.contains(this._tableRow,"dojoxGridNoChildren")){
this._setOpen(false);
return;
}
this.expandoInner.innerHTML=_20?"-":"+";
_8.remove(this.domNode,"dojoxGridExpandoLoading");
_8.toggle(this.domNode,"dojoxGridExpandoOpened",_20);
if(this._tableRow){
_8.toggle(this._tableRow,"dojoxGridRowCollapsed",!_20);
var _21=_7.get(this._tableRow,"dojoxTreeGridBaseClasses");
var _22="";
if(_20){
_22=_5.trim((" "+_21+" ").replace(" dojoxGridRowCollapsed "," "));
}else{
if((" "+_21+" ").indexOf(" dojoxGridRowCollapsed ")<0){
_22=_21+(_21?" ":"")+"dojoxGridRowCollapsed";
}else{
_22=_21;
}
}
_7.set(this._tableRow,"dojoxTreeGridBaseClasses",_22);
}
var _23=(this.open!==_20);
this.open=_20;
if(this.expandoCell&&this.itemId){
this.expandoCell.openStates[this.itemId]=_20;
}
var v=this.view;
var g=v.grid;
if(this.toggleClass&&_23){
if(!this._tableRow||!this._tableRow.style.display){
this._toggleRows(this.toggleClass,_20);
}
}
if(v&&this._initialized&&this.rowIdx>=0){
g.rowHeightChanged(this.rowIdx);
g.postresize();
v.hasVScrollbar(true);
}
this._initialized=true;
},onToggle:function(e){
this.setOpen(!this.open);
_6.stop(e);
},setRowNode:function(_24,_25,_26){
if(this.cellIdx<0||!this.itemId){
return false;
}
this._initialized=false;
this.view=_26;
this.rowNode=_25;
this.rowIdx=_24;
this.expandoCell=_26.structure.cells[0][this.cellIdx];
var d=this.domNode;
if(d&&d.parentNode&&d.parentNode.parentNode){
this._tableRow=d.parentNode.parentNode;
}
this.open=this.expandoCell.getOpenState(this.itemId);
if(_26.grid.treeModel){
_9.set(this.domNode,"marginLeft",(this.level*18)+"px");
if(this.domNode.parentNode){
_9.set(this.domNode.parentNode,"backgroundPosition",((this.level*18)+(3))+"px");
}
}
this.setOpen(this.open);
return true;
}});
var _27=_3("dojox.grid._TreeContentBuilder",_11._ContentBuilder,{generateHtml:function(_28,_29){
var _2a=this.getTableArray(),v=this.view,row=v.structure.cells[0],_2b=this.grid.getItem(_29),_2c=this.grid,_2d=this.grid.store;
_12.fire(this.view,"onBeforeRow",[_29,[row]]);
var _2e=function(_2f,_30,_31,_32,_33,_34){
if(!_34){
if(_2a[0].indexOf("dojoxGridRowTableNeedsRowUpdate")==-1){
_2a[0]=_2a[0].replace("dojoxGridRowTable","dojoxGridRowTable dojoxGridRowTableNeedsRowUpdate");
}
return;
}
var _35=_2a.length;
_32=_32||[];
var _36=_32.join("|");
var _37=_32[_32.length-1];
var _38=_37+(_31?" dojoxGridSummaryRow":"");
var _39="";
if(_2c.treeModel&&_30&&!_2c.treeModel.mayHaveChildren(_30)){
_38+=" dojoxGridNoChildren";
}
_2a.push("<tr style=\""+_39+"\" class=\""+_38+"\" dojoxTreeGridPath=\""+_33.join("/")+"\" dojoxTreeGridBaseClasses=\""+_38+"\">");
var _3a=_2f+1;
var _3b=null;
for(var i=0,_3c;(_3c=row[i]);i++){
var m=_3c.markup,cc=_3c.customClasses=[],cs=_3c.customStyles=[];
m[5]=_3c.formatAtLevel(_33,_30,_2f,_31,_37,cc);
m[1]=cc.join(" ");
m[3]=cs.join(";");
_2a.push.apply(_2a,m);
if(!_3b&&_3c.level===_3a&&_3c.parentCell){
_3b=_3c.parentCell;
}
}
_2a.push("</tr>");
if(_30&&_2d&&_2d.isItem(_30)){
var _3d=_2d.getIdentity(_30);
if(typeof _2c._by_idty_paths[_3d]=="undefined"){
_2c._by_idty_paths[_3d]=_33.join("/");
}
}
var _3e;
var _3f;
var _40;
var _41;
var _42=_33.concat([]);
if(_2c.treeModel&&_30){
if(_2c.treeModel.mayHaveChildren(_30)){
_3e=v.structure.cells[0][_2c.expandoCell||0];
_3f=_3e.getOpenState(_30)&&_34;
_40=new _2.grid.TreePath(_33.join("/"),_2c);
_41=_40.children(true)||[];
_4.forEach(_41,function(_43,idx){
var _44=_36.split("|");
_44.push(_44[_44.length-1]+"-"+idx);
_42.push(idx);
_2e(_3a,_43,false,_44,_42,_3f);
_42.pop();
});
}
}else{
if(_30&&_3b&&!_31){
_3e=v.structure.cells[0][_3b.level];
_3f=_3e.getOpenState(_30)&&_34;
if(_2d.hasAttribute(_30,_3b.field)){
var _45=_36.split("|");
_45.pop();
_40=new _2.grid.TreePath(_33.join("/"),_2c);
_41=_40.children(true)||[];
if(_41.length){
_2a[_35]="<tr class=\""+_45.join(" ")+" dojoxGridExpandoRow\" dojoxTreeGridPath=\""+_33.join("/")+"\">";
_4.forEach(_41,function(_46,idx){
var _47=_36.split("|");
_47.push(_47[_47.length-1]+"-"+idx);
_42.push(idx);
_2e(_3a,_46,false,_47,_42,_3f);
_42.pop();
});
_42.push(_41.length);
_2e(_2f,_30,true,_32,_42,_3f);
}else{
_2a[_35]="<tr class=\""+_37+" dojoxGridNoChildren\" dojoxTreeGridPath=\""+_33.join("/")+"\">";
}
}else{
if(!_2d.isItemLoaded(_30)){
_2a[0]=_2a[0].replace("dojoxGridRowTable","dojoxGridRowTable dojoxGridRowTableNeedsRowUpdate");
}else{
_2a[_35]="<tr class=\""+_37+" dojoxGridNoChildren\" dojoxTreeGridPath=\""+_33.join("/")+"\">";
}
}
}else{
if(_30&&!_31&&_32.length>1){
_2a[_35]="<tr class=\""+_32[_32.length-2]+"\" dojoxTreeGridPath=\""+_33.join("/")+"\">";
}
}
}
};
_2e(0,_2b,false,["dojoxGridRowToggle-"+_29],[_29],true);
_2a.push("</table>");
return _2a.join("");
},findTarget:function(_48,_49){
var n=_48;
while(n&&(n!=this.domNode)){
if(n.tagName&&n.tagName.toLowerCase()=="tr"){
break;
}
n=n.parentNode;
}
return (n!=this.domNode)?n:null;
},getCellNode:function(_4a,_4b){
var _4c=_b("td[idx='"+_4b+"']",_4a)[0];
if(_4c&&_4c.parentNode&&!_8.contains(_4c.parentNode,"dojoxGridSummaryRow")){
return _4c;
}
},decorateEvent:function(e){
e.rowNode=this.findRowTarget(e.target);
if(!e.rowNode){
return false;
}
e.rowIndex=_7.get(e.rowNode,"dojoxTreeGridPath");
this.baseDecorateEvent(e);
e.cell=this.grid.getCell(e.cellIndex);
return true;
}});
return _3("dojox.grid._TreeView",_10,{_contentBuilderClass:_27,_onDndDrop:function(_4d,_4e,_4f){
if(this.grid&&this.grid.aggregator){
this.grid.aggregator.clearSubtotalCache();
}
this.inherited(arguments);
},postCreate:function(){
this.inherited(arguments);
this.connect(this.grid,"_cleanupExpandoCache","_cleanupExpandoCache");
},_cleanupExpandoCache:function(_50,_51,_52){
if(_50==-1){
return;
}
_4.forEach(this.grid.layout.cells,function(_53){
if(typeof _53["openStates"]!="undefined"){
if(_51 in _53.openStates){
delete _53.openStates[_51];
}
}
});
if(typeof _50=="string"&&_50.indexOf("/")>-1){
var _54=new _2.grid.TreePath(_50,this.grid);
var _55=_54.parent();
while(_55){
_54=_55;
_55=_54.parent();
}
var _56=_54.item();
if(!_56){
return;
}
var _57=this.grid.store.getIdentity(_56);
if(typeof this._expandos[_57]!="undefined"){
for(var i in this._expandos[_57]){
var exp=this._expandos[_57][i];
if(exp){
exp.destroy();
}
delete this._expandos[_57][i];
}
delete this._expandos[_57];
}
}else{
for(var i in this._expandos){
if(typeof this._expandos[i]!="undefined"){
for(var j in this._expandos[i]){
var exp=this._expandos[i][j];
if(exp){
exp.destroy();
}
}
}
}
this._expandos={};
}
},postMixInProperties:function(){
this.inherited(arguments);
this._expandos={};
},onBeforeRow:function(_58,_59){
var g=this.grid;
if(g._by_idx&&g._by_idx[_58]&&g._by_idx[_58].idty){
var _5a=g._by_idx[_58].idty;
this._expandos[_5a]=this._expandos[_5a]||{};
}
this.inherited(arguments);
},onAfterRow:function(_5b,_5c,_5d){
_4.forEach(_b("span.dojoxGridExpando",_5d),function(n){
if(n&&n.parentNode){
var tc=n.getAttribute("toggleClass");
var _5e;
var _5f;
var g=this.grid;
if(g._by_idx&&g._by_idx[_5b]&&g._by_idx[_5b].idty){
_5e=g._by_idx[_5b].idty;
_5f=this._expandos[_5e][tc];
}
if(_5f){
_a.place(_5f.domNode,n,"replace");
_5f.itemId=n.getAttribute("itemId");
_5f.cellIdx=parseInt(n.getAttribute("cellIdx"),10);
if(isNaN(_5f.cellIdx)){
_5f.cellIdx=-1;
}
}else{
if(_5e){
_5f=_c.parse(n.parentNode)[0];
this._expandos[_5e][tc]=_5f;
}
}
if(_5f&&!_5f.setRowNode(_5b,_5d,this)){
_5f.domNode.parentNode.removeChild(_5f.domNode);
}
}
},this);
var alt=false;
var _60=this;
_b("tr[dojoxTreeGridPath]",_5d).forEach(function(n){
_8.toggle(n,"dojoxGridSubRowAlt",alt);
_7.set(n,"dojoxTreeGridBaseClasses",n.className);
alt=!alt;
_60.grid.rows.styleRowNode(_7.get(n,"dojoxTreeGridPath"),n);
});
this.inherited(arguments);
},updateRowStyles:function(_61){
var _62=_b("tr[dojoxTreeGridPath='"+_61+"']",this.domNode);
if(_62.length){
this.styleRowNode(_61,_62[0]);
}
},getCellNode:function(_63,_64){
var row=_b("tr[dojoxTreeGridPath='"+_63+"']",this.domNode)[0];
if(row){
return this.content.getCellNode(row,_64);
}
},destroy:function(){
this._cleanupExpandoCache();
this.inherited(arguments);
}});
});
require({cache:{"url:dojox/grid/resources/Expando.html":"<div class=\"dojoxGridExpando\"\n\t><div class=\"dojoxGridExpandoNode\" dojoAttachEvent=\"onclick:onToggle\"\n\t\t><div class=\"dojoxGridExpandoNodeInner\" dojoAttachPoint=\"expandoInner\"></div\n\t></div\n></div>\n"}});
