729 lines
16 KiB
JavaScript
729 lines
16 KiB
JavaScript
//>>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<l;i++){
|
|
if(this._arr[i]<_49._arr[i]){
|
|
return -1;
|
|
}
|
|
if(this._arr[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<cc&&_6c&&_6c.hidden===true){
|
|
col+=_6d;
|
|
_6c=this.grid.getCell(col);
|
|
}
|
|
if(!_6c||_6c.hidden===true){
|
|
col=i;
|
|
}
|
|
if(_69){
|
|
this.grid.updateRow(r);
|
|
}
|
|
this.setFocusIndex(_6b._str,col);
|
|
}});
|
|
var _6e=_3("dojox.grid.TreeGrid",_c,{defaultOpen:true,sortChildItems:false,openAtLevels:[],treeModel:null,expandoCell:0,aggregator:null,_layoutClass:_32,createSelection:function(){
|
|
this.selection=new _11(this);
|
|
},_childItemSorter:function(a,b,_6f,_70){
|
|
var av=this.store.getValue(a,_6f);
|
|
var bv=this.store.getValue(b,_6f);
|
|
if(av!=bv){
|
|
return av<bv==_70?1:-1;
|
|
}
|
|
return 0;
|
|
},_onNew:function(_71,_72){
|
|
if(!_72||!_72.item){
|
|
this.inherited(arguments);
|
|
}else{
|
|
var idx=this.getItemIndex(_72.item);
|
|
if(typeof idx=="string"){
|
|
this.updateRow(idx.split("/")[0]);
|
|
}else{
|
|
if(idx>-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<idx.length-1&&itm;i++){
|
|
if(cf[i]){
|
|
itm=(s.getValues(itm,cf[i])||[])[idx[i+1]];
|
|
}else{
|
|
itm=null;
|
|
}
|
|
}
|
|
}
|
|
}else{
|
|
if(this.treeModel){
|
|
cf=this.treeModel.childrenAttrs||[];
|
|
if(cf&&itm){
|
|
for(i=1,il=idx.length;(i<il)&&itm;i++){
|
|
for(j=0,jl=cf.length;j<jl;j++){
|
|
if(cf[j]){
|
|
itm=(s.getValues(itm,cf[j])||[])[idx[i]];
|
|
}else{
|
|
itm=null;
|
|
}
|
|
if(itm){
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return itm||null;
|
|
},_getItemIndex:function(_80,_81){
|
|
if(!_81&&!this.store.isItem(_80)){
|
|
return -1;
|
|
}
|
|
var idx=this.inherited(arguments);
|
|
if(idx==-1){
|
|
var _82=this.store.getIdentity(_80);
|
|
return this._by_idty_paths[_82]||-1;
|
|
}
|
|
return idx;
|
|
},postMixInProperties:function(){
|
|
if(this.treeModel&&!("defaultOpen" in this.params)){
|
|
this.defaultOpen=false;
|
|
}
|
|
var def=this.defaultOpen;
|
|
this.openAtLevels=_4.map(this.openAtLevels,function(l){
|
|
if(typeof l=="string"){
|
|
switch(l.toLowerCase()){
|
|
case "true":
|
|
return true;
|
|
break;
|
|
case "false":
|
|
return false;
|
|
break;
|
|
default:
|
|
var r=parseInt(l,10);
|
|
if(isNaN(r)){
|
|
return def;
|
|
}
|
|
return r;
|
|
break;
|
|
}
|
|
}
|
|
return l;
|
|
});
|
|
this._by_idty_paths={};
|
|
this.inherited(arguments);
|
|
},postCreate:function(){
|
|
this.inherited(arguments);
|
|
if(this.treeModel){
|
|
this._setModel(this.treeModel);
|
|
}
|
|
},setModel:function(_83){
|
|
this._setModel(_83);
|
|
this._refresh(true);
|
|
},_setModel:function(_84){
|
|
if(_84&&(!_b||!(_84 instanceof _b))){
|
|
throw new Error("dojox.grid.TreeGrid: treeModel must be an instance of dijit.tree.ForestStoreModel");
|
|
}
|
|
this.treeModel=_84;
|
|
_8.toggle(this.domNode,"dojoxGridTreeModel",this.treeModel?true:false);
|
|
this._setQuery(_84?_84.query:null);
|
|
this._setStore(_84?_84.store:null);
|
|
},createScroller:function(){
|
|
this.inherited(arguments);
|
|
this.scroller._origDefaultRowHeight=this.scroller.defaultRowHeight;
|
|
},createManagers:function(){
|
|
this.rows=new _f(this);
|
|
this.focus=new _5f(this);
|
|
this.edit=new _10(this);
|
|
},_setStore:function(_85){
|
|
this.inherited(arguments);
|
|
if(this.treeModel&&!this.treeModel.root.children){
|
|
this.treeModel.root.children=[];
|
|
}
|
|
if(this.aggregator){
|
|
this.aggregator.store=_85;
|
|
}
|
|
},getDefaultOpenState:function(_86,_87){
|
|
var cf;
|
|
var _88=this.store;
|
|
if(this.treeModel){
|
|
return this.defaultOpen;
|
|
}
|
|
if(!_86||!_88||!_88.isItem(_87)||!(cf=this.aggregator.childFields[_86.level])){
|
|
return this.defaultOpen;
|
|
}
|
|
if(this.openAtLevels.length>_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;
|
|
});
|