//>>built define("dojox/grid/TreeGrid",["dojo/_base/kernel","../main","dojo/_base/declare","dojo/_base/array","dojo/_base/lang","dojo/_base/event","dojo/dom-attr","dojo/dom-class","dojo/query","dojo/keys","dijit/tree/ForestStoreModel","./DataGrid","./_Layout","./_FocusManager","./_RowManager","./_EditManager","./TreeSelection","./cells/tree","./_TreeView"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_a,_b,_c,_d,_e,_f,_10,_11,_12){ _1.experimental("dojox.grid.TreeGrid"); var _13=_3("dojox.grid._TreeAggregator",null,{cells:[],grid:null,childFields:[],constructor:function(_14){ this.cells=_14.cells||[]; this.childFields=_14.childFields||[]; this.grid=_14.grid; this.store=this.grid.store; },_cacheValue:function(_15,id,_16){ _15[id]=_16; return _16; },clearSubtotalCache:function(){ if(this.store){ delete this.store._cachedAggregates; } },cnt:function(_17,_18,_19){ var _1a=0; var _1b=this.store; var _1c=this.childFields; if(_1c[_18]){ var _1d=_1b.getValues(_19,_1c[_18]); if(_17.index<=_18+1){ _1a=_1d.length; }else{ _4.forEach(_1d,function(c){ _1a+=this.getForCell(_17,_18+1,c,"cnt"); },this); } }else{ _1a=1; } return _1a; },sum:function(_1e,_1f,_20){ var _21=0; var _22=this.store; var _23=this.childFields; if(_23[_1f]){ _4.forEach(_22.getValues(_20,_23[_1f]),function(c){ _21+=this.getForCell(_1e,_1f+1,c,"sum"); },this); }else{ _21+=_22.getValue(_20,_1e.field); } return _21; },value:function(_24,_25,_26){ },getForCell:function(_27,_28,_29,_2a){ var _2b=this.store; if(!_2b||!_29||!_2b.isItem(_29)){ return ""; } var _2c=_2b._cachedAggregates=_2b._cachedAggregates||{}; var id=_2b.getIdentity(_29); var _2d=_2c[id]=_2c[id]||[]; if(!_27.getOpenState){ _27=this.grid.getCell(_27.layoutIndex+_28+1); } var idx=_27.index; var _2e=_2d[idx]=_2d[idx]||{}; _2a=(_2a||(_27.parentCell?_27.parentCell.aggregate:"sum"))||"sum"; var _2f=_27.field; if(_2f==_2b.getLabelAttributes()[0]){ _2a="cnt"; } var _30=_2e[_2a]=_2e[_2a]||[]; if(_30[_28]!=undefined){ return _30[_28]; } var _31=((_27.parentCell&&_27.parentCell.itemAggregates)?_27.parentCell.itemAggregates[_27.idxInParent]:"")||""; if(_31&&_2b.hasAttribute(_29,_31)){ return this._cacheValue(_30,_28,_2b.getValue(_29,_31)); }else{ if(_31){ return this._cacheValue(_30,_28,0); } } return this._cacheValue(_30,_28,this[_2a](_27,_28,_29)); }}); var _32=_3("dojox.grid._TreeLayout",_d,{_isCollapsable:false,_getInternalStructure:function(_33){ var g=this.grid; var s=_33; var _34=s[0].cells[0]; var _35={type:"dojox.grid._TreeView",cells:[[]]}; var _36=[]; var _37=0; var _38=function(_39,_3a){ var _3b=_39.children; var _3c=function(_3d,idx){ var k,n={}; for(k in _3d){ n[k]=_3d[k]; } n=_5.mixin(n,{level:_3a,idxInParent:_3a>0?idx:-1,parentCell:_3a>0?_39:null}); return n; }; var ret=[]; _4.forEach(_3b,function(c,idx){ if("children" in c){ _36.push(c.field); var _3e=ret[ret.length-1]; _3e.isCollapsable=true; c.level=_3a; ret=ret.concat(_38(c,_3a+1)); }else{ ret.push(_3c(c,idx)); } }); _37=Math.max(_37,_3a); return ret; }; var _3f={children:_34,itemAggregates:[]}; _35.cells[0]=_38(_3f,0); g.aggregator=new _13({cells:_35.cells[0],grid:g,childFields:_36}); if(g.scroller&&g.defaultOpen){ g.scroller.defaultRowHeight=g.scroller._origDefaultRowHeight*(2*_37+1); } return [_35]; },setStructure:function(_40){ var s=_40; var g=this.grid; if(g&&g.treeModel&&!_4.every(s,function(i){ return ("cells" in i); })){ s=arguments[0]=[{cells:[s]}]; } if(s.length==1&&s[0].cells.length==1){ if(g&&g.treeModel){ s[0].type="dojox.grid._TreeView"; this._isCollapsable=true; s[0].cells[0][(this.grid.treeModel?this.grid.expandoCell:0)].isCollapsable=true; }else{ var _41=_4.filter(s[0].cells[0],function(c){ return ("children" in c); }); if(_41.length===1){ this._isCollapsable=true; } } } if(this._isCollapsable&&(!g||!g.treeModel)){ arguments[0]=this._getInternalStructure(s); } this.inherited(arguments); },addCellDef:function(_42,_43,_44){ var obj=this.inherited(arguments); return _5.mixin(obj,_12); }}); var _45=_3("dojox.grid.TreePath",null,{level:0,_str:"",_arr:null,grid:null,store:null,cell:null,item:null,constructor:function(_46,_47){ if(_5.isString(_46)){ this._str=_46; this._arr=_4.map(_46.split("/"),function(_48){ return parseInt(_48,10); }); }else{ if(_5.isArray(_46)){ this._str=_46.join("/"); this._arr=_46.slice(0); }else{ if(typeof _46=="number"){ this._str=String(_46); this._arr=[_46]; }else{ this._str=_46._str; this._arr=_46._arr.slice(0); } } } this.level=this._arr.length-1; this.grid=_47; this.store=this.grid.store; if(_47.treeModel){ this.cell=_47.layout.cells[_47.expandoCell]; }else{ this.cell=_47.layout.cells[this.level]; } },item:function(){ if(!this._item){ this._item=this.grid.getItem(this._arr); } return this._item; },compare:function(_49){ if(_5.isString(_49)||_5.isArray(_49)){ if(this._str==_49){ return 0; } if(_49.join&&this._str==_49.join("/")){ return 0; } _49=new _45(_49,this.grid); }else{ if(_49 instanceof _45){ if(this._str==_49._str){ return 0; } } } for(var i=0,l=(this._arr.length<_49._arr.length?this._arr.length:_49._arr.length);i_49._arr[i]){ return 1; } } if(this._arr.length<_49._arr.length){ return -1; } if(this._arr.length>_49._arr.length){ return 1; } return 0; },isOpen:function(){ return this.cell.openStates&&this.cell.getOpenState(this.item()); },previous:function(){ var _4a=this._arr.slice(0); if(this._str=="0"){ return null; } var _4b=_4a.length-1; if(_4a[_4b]===0){ _4a.pop(); return new _45(_4a,this.grid); } _4a[_4b]--; var _4c=new _45(_4a,this.grid); return _4c.lastChild(true); },next:function(){ var _4d=this._arr.slice(0); if(this.isOpen()){ _4d.push(0); }else{ _4d[_4d.length-1]++; for(var i=this.level;i>=0;i--){ var _4e=this.grid.getItem(_4d.slice(0,i+1)); if(i>0){ if(!_4e){ _4d.pop(); _4d[i-1]++; } }else{ if(!_4e){ return null; } } } } return new _45(_4d,this.grid); },children:function(_4f){ if(!this.isOpen()&&!_4f){ return null; } var _50=[]; var _51=this.grid.treeModel; if(_51){ var _52=this.item(); var _53=_51.store; if(!_51.mayHaveChildren(_52)){ return null; } _4.forEach(_51.childrenAttrs,function(_54){ _50=_50.concat(_53.getValues(_52,_54)); }); }else{ _50=this.store.getValues(this.item(),this.grid.layout.cells[this.cell.level+1].parentCell.field); if(_50.length>1&&this.grid.sortChildItems){ var _55=this.grid.getSortProps(); if(_55&&_55.length){ var _56=_55[0].attribute,_57=this.grid; if(_56&&_50[0][_56]){ var _58=!!_55[0].descending; _50=_50.slice(0); _50.sort(function(a,b){ return _57._childItemSorter(a,b,_56,_58); }); } } } } return _50; },childPaths:function(){ var _59=this.children(); if(!_59){ return []; } return _4.map(_59,function(_5a,_5b){ return new _45(this._str+"/"+_5b,this.grid); },this); },parent:function(){ if(this.level===0){ return null; } return new _45(this._arr.slice(0,this.level),this.grid); },lastChild:function(_5c){ var _5d=this.children(); if(!_5d||!_5d.length){ return this; } var _5e=new _45(this._str+"/"+String(_5d.length-1),this.grid); if(!_5c){ return _5e; } return _5e.lastChild(true); },toString:function(){ return this._str; }}); var _5f=_3("dojox.grid._TreeFocusManager",_e,{setFocusCell:function(_60,_61){ if(_60&&_60.getNode(_61)){ this.inherited(arguments); } },isLastFocusCell:function(){ if(this.cell&&this.cell.index==this.grid.layout.cellCount-1){ var _62=new _45(this.grid.rowCount-1,this.grid); _62=_62.lastChild(true); return this.rowIndex==_62._str; } return false; },next:function(){ if(this.cell){ var row=this.rowIndex,col=this.cell.index+1,cc=this.grid.layout.cellCount-1; var _63=new _45(this.rowIndex,this.grid); if(col>cc){ var _64=_63.next(); if(!_64){ col--; }else{ col=0; _63=_64; } } if(this.grid.edit.isEditing()){ var _65=this.grid.getCell(col); if(!this.isLastFocusCell()&&!_65.editable){ this._focusifyCellNode(false); this.cell=_65; this.rowIndex=_63._str; this.next(); return; } } this.setFocusIndex(_63._str,col); } },previous:function(){ if(this.cell){ var row=(this.rowIndex||0),col=(this.cell.index||0)-1; var _66=new _45(row,this.grid); if(col<0){ var _67=_66.previous(); if(!_67){ col=0; }else{ col=this.grid.layout.cellCount-1; _66=_67; } } if(this.grid.edit.isEditing()){ var _68=this.grid.getCell(col); if(!this.isFirstFocusCell()&&!_68.editable){ this._focusifyCellNode(false); this.cell=_68; this.rowIndex=_66._str; this.previous(); return; } } this.setFocusIndex(_66._str,col); } },move:function(_69,_6a){ if(this.isNavHeader()){ this.inherited(arguments); return; } if(!this.cell){ return; } var sc=this.grid.scroller,r=this.rowIndex,rc=this.grid.rowCount-1,_6b=new _45(this.rowIndex,this.grid); if(_69){ var row; if(_69>0){ _6b=_6b.next(); row=_6b._arr[0]; if(row>sc.getLastPageRow(sc.page)){ this.grid.setScrollTop(this.grid.scrollTop+sc.findScrollTop(row)-sc.findScrollTop(r)); } }else{ if(_69<0){ _6b=_6b.previous(); row=_6b._arr[0]; if(row<=sc.getPageRow(sc.page)){ this.grid.setScrollTop(this.grid.scrollTop-sc.findScrollTop(r)-sc.findScrollTop(row)); } } } } var cc=this.grid.layout.cellCount-1,i=this.cell.index,col=Math.min(cc,Math.max(0,i+_6a)); var _6c=this.grid.getCell(col); var _6d=_6a<0?-1:1; while(col>=0&&col-1){ this.updateRow(idx); } } } },_onSet:function(_73,_74,_75,_76){ this._checkUpdateStatus(); if(this.aggregator){ this.aggregator.clearSubtotalCache(); } var idx=this.getItemIndex(_73); if(typeof idx=="string"){ this.updateRow(idx.split("/")[0]); }else{ if(idx>-1){ this.updateRow(idx); } } },_onDelete:function(_77){ this._cleanupExpandoCache(this._getItemIndex(_77,true),this.store.getIdentity(_77),_77); this.inherited(arguments); },_cleanupExpandoCache:function(_78,_79,_7a){ },_addItem:function(_7b,_7c,_7d,_7e){ if(!_7e&&this.model&&_4.indexOf(this.model.root.children,_7b)==-1){ this.model.root.children[_7c]=_7b; } this.inherited(arguments); },getItem:function(idx){ var _7f=_5.isArray(idx); if(_5.isString(idx)&&idx.indexOf("/")){ idx=idx.split("/"); _7f=true; } if(_7f&&idx.length==1){ idx=idx[0]; _7f=false; } if(!_7f){ return _c.prototype.getItem.call(this,idx); } var s=this.store; var itm=_c.prototype.getItem.call(this,idx[0]); var cf,i,j; if(this.aggregator){ cf=this.aggregator.childFields||[]; if(cf){ for(i=0;i_86.level){ var _89=this.openAtLevels[_86.level]; if(typeof _89=="boolean"){ return _89; }else{ if(typeof _89=="number"){ return (_88.getValues(_87,cf).length<=_89); } } } return this.defaultOpen; },onStyleRow:function(row){ if(!this.layout._isCollapsable){ this.inherited(arguments); return; } var _8a=_7.get(row.node,"dojoxTreeGridBaseClasses"); if(_8a){ row.customClasses=_8a; } var i=row; var _8b=i.node.tagName.toLowerCase(); i.customClasses+=(i.odd?" dojoxGridRowOdd":"")+(i.selected&&_8b=="tr"?" dojoxGridRowSelected":"")+(i.over&&_8b=="tr"?" dojoxGridRowOver":""); this.focus.styleRow(i); this.edit.styleRow(i); },styleRowNode:function(_8c,_8d){ if(_8d){ if(_8d.tagName.toLowerCase()=="div"&&this.aggregator){ _9("tr[dojoxTreeGridPath]",_8d).forEach(function(_8e){ this.rows.styleRowNode(_7.get(_8e,"dojoxTreeGridPath"),_8e); },this); } this.rows.styleRowNode(_8c,_8d); } },onCanSelect:function(_8f){ var _90=_9("tr[dojoxTreeGridPath='"+_8f+"']",this.domNode); if(_90.length){ if(_8.contains(_90[0],"dojoxGridSummaryRow")){ return false; } } return this.inherited(arguments); },onKeyDown:function(e){ if(e.altKey||e.metaKey){ return; } switch(e.keyCode){ case _a.UP_ARROW: if(!this.edit.isEditing()&&this.focus.rowIndex!="0"){ _6.stop(e); this.focus.move(-1,0); } break; case _a.DOWN_ARROW: var _91=new _45(this.focus.rowIndex,this); var _92=new _45(this.rowCount-1,this); _92=_92.lastChild(true); if(!this.edit.isEditing()&&_91.toString()!=_92.toString()){ _6.stop(e); this.focus.move(1,0); } break; default: this.inherited(arguments); break; } },canEdit:function(_93,_94){ var _95=_93.getNode(_94); return _95&&this._canEdit; },doApplyCellEdit:function(_96,_97,_98){ var _99=this.getItem(_97); var _9a=this.store.getValue(_99,_98); if(typeof _9a=="number"){ _96=isNaN(_96)?_96:parseFloat(_96); }else{ if(typeof _9a=="boolean"){ _96=_96=="true"?true:_96=="false"?false:_96; }else{ if(_9a instanceof Date){ var _9b=new Date(_96); _96=isNaN(_9b.getTime())?_96:_9b; } } } this.store.setValue(_99,_98,_96); this.onApplyCellEdit(_96,_97,_98); }}); _6e.markupFactory=function(_9c,_9d,_9e,_9f){ var _a0=function(n){ var w=_7.get(n,"width")||"auto"; if((w!="auto")&&(w.slice(-2)!="em")&&(w.slice(-1)!="%")){ w=parseInt(w,10)+"px"; } return w; }; var _a1=function(_a2){ var _a3; if(_a2.nodeName.toLowerCase()=="table"&&_9("> colgroup",_a2).length===0&&(_a3=_9("> thead > tr",_a2)).length==1){ var tr=_a3[0]; return _9("> th",_a3[0]).map(function(th){ var _a4={type:_5.trim(_7.get(th,"cellType")||""),field:_5.trim(_7.get(th,"field")||"")}; if(_a4.type){ _a4.type=_5.getObject(_a4.type); } var _a5=_9("> table",th)[0]; if(_a5){ _a4.name=""; _a4.children=_a1(_a5); if(_7.has(th,"itemAggregates")){ _a4.itemAggregates=_4.map(_7.get(th,"itemAggregates").split(","),function(v){ return _5.trim(v); }); }else{ _a4.itemAggregates=[]; } if(_7.has(th,"aggregate")){ _a4.aggregate=_7.get(th,"aggregate"); } _a4.type=_a4.type||_2.grid.cells.SubtableCell; }else{ _a4.name=_5.trim(_7.get(th,"name")||th.innerHTML); if(_7.has(th,"width")){ _a4.width=_a0(th); } if(_7.has(th,"relWidth")){ _a4.relWidth=window.parseInt(_7.get(th,"relWidth"),10); } if(_7.has(th,"hidden")){ _a4.hidden=_7.get(th,"hidden")=="true"; } _a4.field=_a4.field||_a4.name; _c.cell_markupFactory(_9f,th,_a4); _a4.type=_a4.type||_2.grid.cells.Cell; } if(_a4.type&&_a4.type.markupFactory){ _a4.type.markupFactory(th,_a4); } return _a4; }); } return []; }; var _a6; if(!_9c.structure){ var row=_a1(_9d); if(row.length){ _9c.structure=[{__span:Infinity,cells:[row]}]; } } return _c.markupFactory(_9c,_9d,_9e,_9f); }; return _6e; });