1023 lines
26 KiB
JavaScript
1023 lines
26 KiB
JavaScript
//>>built
|
|
define("dojox/grid/enhanced/plugins/Selector",["dojo/_base/kernel","dojo/_base/lang","dojo/_base/declare","dojo/_base/array","dojo/_base/event","dojo/keys","dojo/query","dojo/_base/html","dojo/_base/window","dijit/focus","../../_RowSelector","../_Plugin","../../EnhancedGrid","../../cells/_base","./AutoScroll"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_a,_b,_c,_d){
|
|
var _e=0,_f=1,_10=2,_11={col:"row",row:"col"},_12=function(_13,_14,_15,end,_16){
|
|
if(_13!=="cell"){
|
|
_14=_14[_13];
|
|
_15=_15[_13];
|
|
end=end[_13];
|
|
if(typeof _14!=="number"||typeof _15!=="number"||typeof end!=="number"){
|
|
return false;
|
|
}
|
|
return _16?((_14>=_15&&_14<end)||(_14>end&&_14<=_15)):((_14>=_15&&_14<=end)||(_14>=end&&_14<=_15));
|
|
}else{
|
|
return _12("col",_14,_15,end,_16)&&_12("row",_14,_15,end,_16);
|
|
}
|
|
},_17=function(_18,v1,v2){
|
|
try{
|
|
if(v1&&v2){
|
|
switch(_18){
|
|
case "col":
|
|
case "row":
|
|
return v1[_18]==v2[_18]&&typeof v1[_18]=="number"&&!(_11[_18] in v1)&&!(_11[_18] in v2);
|
|
case "cell":
|
|
return v1.col==v2.col&&v1.row==v2.row&&typeof v1.col=="number"&&typeof v1.row=="number";
|
|
}
|
|
}
|
|
}
|
|
catch(e){
|
|
}
|
|
return false;
|
|
},_19=function(evt){
|
|
try{
|
|
if(evt&&evt.preventDefault){
|
|
_5.stop(evt);
|
|
}
|
|
}
|
|
catch(e){
|
|
}
|
|
},_1a=function(_1b,_1c,_1d){
|
|
switch(_1b){
|
|
case "col":
|
|
return {"col":typeof _1d=="undefined"?_1c:_1d,"except":[]};
|
|
case "row":
|
|
return {"row":_1c,"except":[]};
|
|
case "cell":
|
|
return {"row":_1c,"col":_1d};
|
|
}
|
|
return null;
|
|
};
|
|
var _1e=_3("dojox.grid.enhanced.plugins.Selector",_c,{name:"selector",constructor:function(_1f,_20){
|
|
this.grid=_1f;
|
|
this._config={row:_10,col:_10,cell:_10};
|
|
this.noClear=_20&&_20.noClear;
|
|
this.setupConfig(_20);
|
|
if(_1f.selectionMode==="single"){
|
|
this._config.row=_f;
|
|
}
|
|
this._enabled=true;
|
|
this._selecting={};
|
|
this._selected={"col":[],"row":[],"cell":[]};
|
|
this._startPoint={};
|
|
this._currentPoint={};
|
|
this._lastAnchorPoint={};
|
|
this._lastEndPoint={};
|
|
this._lastSelectedAnchorPoint={};
|
|
this._lastSelectedEndPoint={};
|
|
this._keyboardSelect={};
|
|
this._lastType=null;
|
|
this._selectedRowModified={};
|
|
this._hacks();
|
|
this._initEvents();
|
|
this._initAreas();
|
|
this._mixinGrid();
|
|
},destroy:function(){
|
|
this.inherited(arguments);
|
|
},setupConfig:function(_21){
|
|
if(!_21||!_2.isObject(_21)){
|
|
return;
|
|
}
|
|
var _22=["row","col","cell"];
|
|
for(var _23 in _21){
|
|
if(_4.indexOf(_22,_23)>=0){
|
|
if(!_21[_23]||_21[_23]=="disabled"){
|
|
this._config[_23]=_e;
|
|
}else{
|
|
if(_21[_23]=="single"){
|
|
this._config[_23]=_f;
|
|
}else{
|
|
this._config[_23]=_10;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
var _24=["none","single","extended"][this._config.row];
|
|
this.grid.selection.setMode(_24);
|
|
},isSelected:function(_25,_26,_27){
|
|
return this._isSelected(_25,_1a(_25,_26,_27));
|
|
},toggleSelect:function(_28,_29,_2a){
|
|
this._startSelect(_28,_1a(_28,_29,_2a),this._config[_28]===_10,false,false,!this.isSelected(_28,_29,_2a));
|
|
this._endSelect(_28);
|
|
},select:function(_2b,_2c,_2d){
|
|
if(!this.isSelected(_2b,_2c,_2d)){
|
|
this.toggleSelect(_2b,_2c,_2d);
|
|
}
|
|
},deselect:function(_2e,_2f,_30){
|
|
if(this.isSelected(_2e,_2f,_30)){
|
|
this.toggleSelect(_2e,_2f,_30);
|
|
}
|
|
},selectRange:function(_31,_32,end,_33){
|
|
this.grid._selectingRange=true;
|
|
var _34=_31=="cell"?_1a(_31,_32.row,_32.col):_1a(_31,_32),_35=_31=="cell"?_1a(_31,end.row,end.col):_1a(_31,end);
|
|
this._startSelect(_31,_34,false,false,false,_33);
|
|
this._highlight(_31,_35,_33===undefined?true:_33);
|
|
this._endSelect(_31);
|
|
this.grid._selectingRange=false;
|
|
},clear:function(_36){
|
|
this._clearSelection(_36||"all");
|
|
},isSelecting:function(_37){
|
|
if(typeof _37=="undefined"){
|
|
return this._selecting.col||this._selecting.row||this._selecting.cell;
|
|
}
|
|
return this._selecting[_37];
|
|
},selectEnabled:function(_38){
|
|
if(typeof _38!="undefined"&&!this.isSelecting()){
|
|
this._enabled=!!_38;
|
|
}
|
|
return this._enabled;
|
|
},getSelected:function(_39,_3a){
|
|
switch(_39){
|
|
case "cell":
|
|
return _4.map(this._selected[_39],function(_3b){
|
|
return _3b;
|
|
});
|
|
case "col":
|
|
case "row":
|
|
return _4.map(_3a?this._selected[_39]:_4.filter(this._selected[_39],function(_3c){
|
|
return _3c.except.length===0;
|
|
}),function(_3d){
|
|
return _3a?_3d:_3d[_39];
|
|
});
|
|
}
|
|
return [];
|
|
},getSelectedCount:function(_3e,_3f){
|
|
switch(_3e){
|
|
case "cell":
|
|
return this._selected[_3e].length;
|
|
case "col":
|
|
case "row":
|
|
return (_3f?this._selected[_3e]:_4.filter(this._selected[_3e],function(_40){
|
|
return _40.except.length===0;
|
|
})).length;
|
|
}
|
|
return 0;
|
|
},getSelectedType:function(){
|
|
var s=this._selected;
|
|
return ["","cell","row","row|cell","col","col|cell","col|row","col|row|cell"][(!!s.cell.length)|(!!s.row.length<<1)|(!!s.col.length<<2)];
|
|
},getLastSelectedRange:function(_41){
|
|
return this._lastAnchorPoint[_41]?{"start":this._lastAnchorPoint[_41],"end":this._lastEndPoint[_41]}:null;
|
|
},_hacks:function(){
|
|
var g=this.grid;
|
|
var _42=function(e){
|
|
if(e.cellNode){
|
|
g.onMouseUp(e);
|
|
}
|
|
g.onMouseUpRow(e);
|
|
};
|
|
var _43=_2.hitch(g,"onMouseUp");
|
|
var _44=_2.hitch(g,"onMouseDown");
|
|
var _45=function(e){
|
|
e.cellNode.style.border="solid 1px";
|
|
};
|
|
_4.forEach(g.views.views,function(_46){
|
|
_46.content.domouseup=_42;
|
|
_46.header.domouseup=_43;
|
|
if(_46.declaredClass=="dojox.grid._RowSelector"){
|
|
_46.domousedown=_44;
|
|
_46.domouseup=_43;
|
|
_46.dofocus=_45;
|
|
}
|
|
});
|
|
g.selection.clickSelect=function(){
|
|
};
|
|
this._oldDeselectAll=g.selection.deselectAll;
|
|
var _47=this;
|
|
g.selection.selectRange=function(_48,to){
|
|
_47.selectRange("row",_48,to,true);
|
|
if(g.selection.preserver){
|
|
g.selection.preserver._updateMapping(true,true,false,_48,to);
|
|
}
|
|
g.selection.onChanged();
|
|
};
|
|
g.selection.deselectRange=function(_49,to){
|
|
_47.selectRange("row",_49,to,false);
|
|
if(g.selection.preserver){
|
|
g.selection.preserver._updateMapping(true,false,false,_49,to);
|
|
}
|
|
g.selection.onChanged();
|
|
};
|
|
g.selection.deselectAll=function(){
|
|
g._selectingRange=true;
|
|
_47._oldDeselectAll.apply(g.selection,arguments);
|
|
_47._clearSelection("all");
|
|
g._selectingRange=false;
|
|
if(g.selection.preserver){
|
|
g.selection.preserver._updateMapping(true,false,true);
|
|
}
|
|
g.selection.onChanged();
|
|
};
|
|
var _4a=g.views.views[0];
|
|
if(_4a instanceof _b){
|
|
_4a.doStyleRowNode=function(_4b,_4c){
|
|
_8.removeClass(_4c,"dojoxGridRow");
|
|
_8.addClass(_4c,"dojoxGridRowbar");
|
|
_8.addClass(_4c,"dojoxGridNonNormalizedCell");
|
|
_8.toggleClass(_4c,"dojoxGridRowbarOver",g.rows.isOver(_4b));
|
|
_8.toggleClass(_4c,"dojoxGridRowbarSelected",!!g.selection.isSelected(_4b));
|
|
};
|
|
}
|
|
this.connect(g,"updateRow",function(_4d){
|
|
_4.forEach(g.layout.cells,function(_4e){
|
|
if(this.isSelected("cell",_4d,_4e.index)){
|
|
this._highlightNode(_4e.getNode(_4d),true);
|
|
}
|
|
},this);
|
|
});
|
|
},_mixinGrid:function(){
|
|
var g=this.grid;
|
|
g.setupSelectorConfig=_2.hitch(this,this.setupConfig);
|
|
g.onStartSelect=function(){
|
|
};
|
|
g.onEndSelect=function(){
|
|
};
|
|
g.onStartDeselect=function(){
|
|
};
|
|
g.onEndDeselect=function(){
|
|
};
|
|
g.onSelectCleared=function(){
|
|
};
|
|
},_initEvents:function(){
|
|
var g=this.grid,_4f=this,dp=_2.partial,_50=function(_51,e){
|
|
if(_51==="row"){
|
|
_4f._isUsingRowSelector=true;
|
|
}
|
|
if(_4f.selectEnabled()&&_4f._config[_51]&&e.button!=2){
|
|
if(_4f._keyboardSelect.col||_4f._keyboardSelect.row||_4f._keyboardSelect.cell){
|
|
_4f._endSelect("all");
|
|
_4f._keyboardSelect.col=_4f._keyboardSelect.row=_4f._keyboardSelect.cell=0;
|
|
}
|
|
if(_4f._usingKeyboard){
|
|
_4f._usingKeyboard=false;
|
|
}
|
|
var _52=_1a(_51,e.rowIndex,e.cell&&e.cell.index);
|
|
_4f._startSelect(_51,_52,e.ctrlKey,e.shiftKey);
|
|
}
|
|
},_53=_2.hitch(this,"_endSelect");
|
|
this.connect(g,"onHeaderCellMouseDown",dp(_50,"col"));
|
|
this.connect(g,"onHeaderCellMouseUp",dp(_53,"col"));
|
|
this.connect(g,"onRowSelectorMouseDown",dp(_50,"row"));
|
|
this.connect(g,"onRowSelectorMouseUp",dp(_53,"row"));
|
|
this.connect(g,"onCellMouseDown",function(e){
|
|
if(e.cell&&e.cell.isRowSelector){
|
|
return;
|
|
}
|
|
if(g.singleClickEdit){
|
|
_4f._singleClickEdit=true;
|
|
g.singleClickEdit=false;
|
|
}
|
|
_50(_4f._config["cell"]==_e?"row":"cell",e);
|
|
});
|
|
this.connect(g,"onCellMouseUp",function(e){
|
|
if(_4f._singleClickEdit){
|
|
delete _4f._singleClickEdit;
|
|
g.singleClickEdit=true;
|
|
}
|
|
_53("all",e);
|
|
});
|
|
this.connect(g,"onCellMouseOver",function(e){
|
|
if(_4f._curType!="row"&&_4f._selecting[_4f._curType]&&_4f._config[_4f._curType]==_10){
|
|
_4f._highlight("col",_1a("col",e.cell.index),_4f._toSelect);
|
|
if(!_4f._keyboardSelect.cell){
|
|
_4f._highlight("cell",_1a("cell",e.rowIndex,e.cell.index),_4f._toSelect);
|
|
}
|
|
}
|
|
});
|
|
this.connect(g,"onHeaderCellMouseOver",function(e){
|
|
if(_4f._selecting.col&&_4f._config.col==_10){
|
|
_4f._highlight("col",_1a("col",e.cell.index),_4f._toSelect);
|
|
}
|
|
});
|
|
this.connect(g,"onRowMouseOver",function(e){
|
|
if(_4f._selecting.row&&_4f._config.row==_10){
|
|
_4f._highlight("row",_1a("row",e.rowIndex),_4f._toSelect);
|
|
}
|
|
});
|
|
this.connect(g,"onSelectedById","_onSelectedById");
|
|
this.connect(g,"_onFetchComplete",function(){
|
|
if(!g._notRefreshSelection){
|
|
this._refreshSelected(true);
|
|
}
|
|
});
|
|
this.connect(g.scroller,"buildPage",function(){
|
|
if(!g._notRefreshSelection){
|
|
this._refreshSelected(true);
|
|
}
|
|
});
|
|
this.connect(_9.doc,"onmouseup",dp(_53,"all"));
|
|
this.connect(g,"onEndAutoScroll",function(_54,_55,_56,_57){
|
|
var _58=_4f._selecting.cell,_59,_5a,dir=_55?1:-1;
|
|
if(_54&&(_58||_4f._selecting.row)){
|
|
_59=_58?"cell":"row";
|
|
_5a=_4f._currentPoint[_59];
|
|
_4f._highlight(_59,_1a(_59,_5a.row+dir,_5a.col),_4f._toSelect);
|
|
}else{
|
|
if(!_54&&(_58||_4f._selecting.col)){
|
|
_59=_58?"cell":"col";
|
|
_5a=_4f._currentPoint[_59];
|
|
_4f._highlight(_59,_1a(_59,_5a.row,_57),_4f._toSelect);
|
|
}
|
|
}
|
|
});
|
|
this.subscribe("dojox/grid/rearrange/move/"+g.id,"_onInternalRearrange");
|
|
this.subscribe("dojox/grid/rearrange/copy/"+g.id,"_onInternalRearrange");
|
|
this.subscribe("dojox/grid/rearrange/change/"+g.id,"_onExternalChange");
|
|
this.subscribe("dojox/grid/rearrange/insert/"+g.id,"_onExternalChange");
|
|
this.subscribe("dojox/grid/rearrange/remove/"+g.id,"clear");
|
|
this.connect(g,"onSelected",function(_5b){
|
|
if(this._selectedRowModified&&this._isUsingRowSelector){
|
|
delete this._selectedRowModified;
|
|
}else{
|
|
if(!this.grid._selectingRange){
|
|
this.select("row",_5b);
|
|
}
|
|
}
|
|
});
|
|
this.connect(g,"onDeselected",function(_5c){
|
|
if(this._selectedRowModified&&this._isUsingRowSelector){
|
|
delete this._selectedRowModified;
|
|
}else{
|
|
if(!this.grid._selectingRange){
|
|
this.deselect("row",_5c);
|
|
}
|
|
}
|
|
});
|
|
},_onSelectedById:function(id,_5d,_5e){
|
|
if(this.grid._noInternalMapping){
|
|
return;
|
|
}
|
|
var _5f=[this._lastAnchorPoint.row,this._lastEndPoint.row,this._lastSelectedAnchorPoint.row,this._lastSelectedEndPoint.row];
|
|
_5f=_5f.concat(this._selected.row);
|
|
var _60=false;
|
|
_4.forEach(_5f,function(_61){
|
|
if(_61){
|
|
if(_61.id===id){
|
|
_60=true;
|
|
_61.row=_5d;
|
|
}else{
|
|
if(_61.row===_5d&&_61.id){
|
|
_61.row=-1;
|
|
}
|
|
}
|
|
}
|
|
});
|
|
if(!_60&&_5e){
|
|
_4.some(this._selected.row,function(_62){
|
|
if(_62&&!_62.id&&!_62.except.length){
|
|
_62.id=id;
|
|
_62.row=_5d;
|
|
return true;
|
|
}
|
|
return false;
|
|
});
|
|
}
|
|
_60=false;
|
|
_5f=[this._lastAnchorPoint.cell,this._lastEndPoint.cell,this._lastSelectedAnchorPoint.cell,this._lastSelectedEndPoint.cell];
|
|
_5f=_5f.concat(this._selected.cell);
|
|
_4.forEach(_5f,function(_63){
|
|
if(_63){
|
|
if(_63.id===id){
|
|
_60=true;
|
|
_63.row=_5d;
|
|
}else{
|
|
if(_63.row===_5d&&_63.id){
|
|
_63.row=-1;
|
|
}
|
|
}
|
|
}
|
|
});
|
|
},onSetStore:function(){
|
|
this._clearSelection("all");
|
|
},_onInternalRearrange:function(_64,_65){
|
|
try{
|
|
this._refresh("col",false);
|
|
_4.forEach(this._selected.row,function(_66){
|
|
_4.forEach(this.grid.layout.cells,function(_67){
|
|
this._highlightNode(_67.getNode(_66.row),false);
|
|
},this);
|
|
},this);
|
|
_7(".dojoxGridRowSelectorSelected").forEach(function(_68){
|
|
_8.removeClass(_68,"dojoxGridRowSelectorSelected");
|
|
_8.removeClass(_68,"dojoxGridRowSelectorSelectedUp");
|
|
_8.removeClass(_68,"dojoxGridRowSelectorSelectedDown");
|
|
});
|
|
var _69=function(_6a){
|
|
if(_6a){
|
|
delete _6a.converted;
|
|
}
|
|
},_6b=[this._lastAnchorPoint[_64],this._lastEndPoint[_64],this._lastSelectedAnchorPoint[_64],this._lastSelectedEndPoint[_64]];
|
|
if(_64==="cell"){
|
|
this.selectRange("cell",_65.to.min,_65.to.max);
|
|
var _6c=this.grid.layout.cells;
|
|
_4.forEach(_6b,function(_6d){
|
|
if(_6d.converted){
|
|
return;
|
|
}
|
|
for(var r=_65.from.min.row,tr=_65.to.min.row;r<=_65.from.max.row;++r,++tr){
|
|
for(var c=_65.from.min.col,tc=_65.to.min.col;c<=_65.from.max.col;++c,++tc){
|
|
while(_6c[c].hidden){
|
|
++c;
|
|
}
|
|
while(_6c[tc].hidden){
|
|
++tc;
|
|
}
|
|
if(_6d.row==r&&_6d.col==c){
|
|
_6d.row=tr;
|
|
_6d.col=tc;
|
|
_6d.converted=true;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}else{
|
|
_6b=this._selected.cell.concat(this._selected[_64]).concat(_6b).concat([this._lastAnchorPoint.cell,this._lastEndPoint.cell,this._lastSelectedAnchorPoint.cell,this._lastSelectedEndPoint.cell]);
|
|
_4.forEach(_6b,function(_6e){
|
|
if(_6e&&!_6e.converted){
|
|
var _6f=_6e[_64];
|
|
if(_6f in _65){
|
|
_6e[_64]=_65[_6f];
|
|
}
|
|
_6e.converted=true;
|
|
}
|
|
});
|
|
_4.forEach(this._selected[_11[_64]],function(_70){
|
|
for(var i=0,len=_70.except.length;i<len;++i){
|
|
var _71=_70.except[i];
|
|
if(_71 in _65){
|
|
_70.except[i]=_65[_71];
|
|
}
|
|
}
|
|
});
|
|
}
|
|
_4.forEach(_6b,_69);
|
|
this._refreshSelected(true);
|
|
this._focusPoint(_64,this._lastEndPoint);
|
|
}
|
|
catch(e){
|
|
console.warn("Selector._onInternalRearrange() error",e);
|
|
}
|
|
},_onExternalChange:function(_72,_73){
|
|
var _74=_72=="cell"?_73.min:_73[0],end=_72=="cell"?_73.max:_73[_73.length-1];
|
|
this.selectRange(_72,_74,end);
|
|
},_refresh:function(_75,_76){
|
|
if(!this._keyboardSelect[_75]){
|
|
_4.forEach(this._selected[_75],function(_77){
|
|
this._highlightSingle(_75,_76,_77,undefined,true);
|
|
},this);
|
|
}
|
|
},_refreshSelected:function(){
|
|
this._refresh("col",true);
|
|
this._refresh("row",true);
|
|
this._refresh("cell",true);
|
|
},_initAreas:function(){
|
|
var g=this.grid,f=g.focus,_78=this,_79=1,_7a=2,_7b=function(_7c,_7d,_7e,_7f,evt){
|
|
var ks=_78._keyboardSelect;
|
|
if(evt.shiftKey&&ks[_7c]){
|
|
if(ks[_7c]===_79){
|
|
if(_7c==="cell"){
|
|
var _80=_78._lastEndPoint[_7c];
|
|
if(f.cell!=g.layout.cells[_80.col+_7f]||f.rowIndex!=_80.row+_7e){
|
|
ks[_7c]=0;
|
|
return;
|
|
}
|
|
}
|
|
_78._startSelect(_7c,_78._lastAnchorPoint[_7c],true,false,true);
|
|
_78._highlight(_7c,_78._lastEndPoint[_7c],_78._toSelect);
|
|
ks[_7c]=_7a;
|
|
}
|
|
var _81=_7d(_7c,_7e,_7f,evt);
|
|
if(_78._isValid(_7c,_81,g)){
|
|
_78._highlight(_7c,_81,_78._toSelect);
|
|
}
|
|
_19(evt);
|
|
}
|
|
},_82=function(_83,_84,evt,_85){
|
|
if(_85&&_78.selectEnabled()&&_78._config[_83]!=_e){
|
|
switch(evt.keyCode){
|
|
case _6.SPACE:
|
|
_78._startSelect(_83,_84(),evt.ctrlKey,evt.shiftKey);
|
|
_78._endSelect(_83);
|
|
break;
|
|
case _6.SHIFT:
|
|
if(_78._config[_83]==_10&&_78._isValid(_83,_78._lastAnchorPoint[_83],g)){
|
|
_78._endSelect(_83);
|
|
_78._keyboardSelect[_83]=_79;
|
|
_78._usingKeyboard=true;
|
|
}
|
|
}
|
|
}
|
|
},_86=function(_87,evt,_88){
|
|
if(_88&&evt.keyCode==_6.SHIFT&&_78._keyboardSelect[_87]){
|
|
_78._endSelect(_87);
|
|
_78._keyboardSelect[_87]=0;
|
|
}
|
|
};
|
|
if(g.views.views[0] instanceof _b){
|
|
this._lastFocusedRowBarIdx=0;
|
|
f.addArea({name:"rowHeader",onFocus:function(evt,_89){
|
|
var _8a=g.views.views[0];
|
|
if(_8a instanceof _b){
|
|
var _8b=_8a.getCellNode(_78._lastFocusedRowBarIdx,0);
|
|
if(_8b){
|
|
_8.toggleClass(_8b,f.focusClass,false);
|
|
}
|
|
if(evt&&"rowIndex" in evt){
|
|
if(evt.rowIndex>=0){
|
|
_78._lastFocusedRowBarIdx=evt.rowIndex;
|
|
}else{
|
|
if(!_78._lastFocusedRowBarIdx){
|
|
_78._lastFocusedRowBarIdx=0;
|
|
}
|
|
}
|
|
}
|
|
_8b=_8a.getCellNode(_78._lastFocusedRowBarIdx,0);
|
|
if(_8b){
|
|
_a.focus(_8b);
|
|
_8.toggleClass(_8b,f.focusClass,true);
|
|
}
|
|
f.rowIndex=_78._lastFocusedRowBarIdx;
|
|
_19(evt);
|
|
return true;
|
|
}
|
|
return false;
|
|
},onBlur:function(evt,_8c){
|
|
var _8d=g.views.views[0];
|
|
if(_8d instanceof _b){
|
|
var _8e=_8d.getCellNode(_78._lastFocusedRowBarIdx,0);
|
|
if(_8e){
|
|
_8.toggleClass(_8e,f.focusClass,false);
|
|
}
|
|
_19(evt);
|
|
}
|
|
return true;
|
|
},onMove:function(_8f,_90,evt){
|
|
var _91=g.views.views[0];
|
|
if(_8f&&_91 instanceof _b){
|
|
var _92=_78._lastFocusedRowBarIdx+_8f;
|
|
if(_92>=0&&_92<g.rowCount){
|
|
_19(evt);
|
|
var _93=_91.getCellNode(_78._lastFocusedRowBarIdx,0);
|
|
_8.toggleClass(_93,f.focusClass,false);
|
|
var sc=g.scroller;
|
|
var _94=sc.getLastPageRow(sc.page);
|
|
var rc=g.rowCount-1,row=Math.min(rc,_92);
|
|
if(_92>_94){
|
|
g.setScrollTop(g.scrollTop+sc.findScrollTop(row)-sc.findScrollTop(_78._lastFocusedRowBarIdx));
|
|
}
|
|
_93=_91.getCellNode(_92,0);
|
|
_a.focus(_93);
|
|
_8.toggleClass(_93,f.focusClass,true);
|
|
_78._lastFocusedRowBarIdx=_92;
|
|
f.cell=_93;
|
|
f.cell.view=_91;
|
|
f.cell.getNode=function(_95){
|
|
return f.cell;
|
|
};
|
|
f.rowIndex=_78._lastFocusedRowBarIdx;
|
|
f.scrollIntoView();
|
|
f.cell=null;
|
|
}
|
|
}
|
|
}});
|
|
f.placeArea("rowHeader","before","content");
|
|
}
|
|
f.addArea({name:"cellselect",onMove:_2.partial(_7b,"cell",function(_96,_97,_98,evt){
|
|
var _99=_78._currentPoint[_96];
|
|
return _1a("cell",_99.row+_97,_99.col+_98);
|
|
}),onKeyDown:_2.partial(_82,"cell",function(){
|
|
return _1a("cell",f.rowIndex,f.cell.index);
|
|
}),onKeyUp:_2.partial(_86,"cell")});
|
|
f.placeArea("cellselect","below","content");
|
|
f.addArea({name:"colselect",onMove:_2.partial(_7b,"col",function(_9a,_9b,_9c,evt){
|
|
var _9d=_78._currentPoint[_9a];
|
|
return _1a("col",_9d.col+_9c);
|
|
}),onKeyDown:_2.partial(_82,"col",function(){
|
|
return _1a("col",f.getHeaderIndex());
|
|
}),onKeyUp:_2.partial(_86,"col")});
|
|
f.placeArea("colselect","below","header");
|
|
f.addArea({name:"rowselect",onMove:_2.partial(_7b,"row",function(_9e,_9f,_a0,evt){
|
|
return _1a("row",f.rowIndex);
|
|
}),onKeyDown:_2.partial(_82,"row",function(){
|
|
return _1a("row",f.rowIndex);
|
|
}),onKeyUp:_2.partial(_86,"row")});
|
|
f.placeArea("rowselect","below","rowHeader");
|
|
},_clearSelection:function(_a1,_a2){
|
|
if(_a1=="all"){
|
|
this._clearSelection("cell",_a2);
|
|
this._clearSelection("col",_a2);
|
|
this._clearSelection("row",_a2);
|
|
return;
|
|
}
|
|
this._isUsingRowSelector=true;
|
|
_4.forEach(this._selected[_a1],function(_a3){
|
|
if(!_17(_a1,_a2,_a3)){
|
|
this._highlightSingle(_a1,false,_a3);
|
|
}
|
|
},this);
|
|
this._blurPoint(_a1,this._currentPoint);
|
|
this._selecting[_a1]=false;
|
|
this._startPoint[_a1]=this._currentPoint[_a1]=null;
|
|
this._selected[_a1]=[];
|
|
if(_a1=="row"&&!this.grid._selectingRange){
|
|
this._oldDeselectAll.call(this.grid.selection);
|
|
this.grid.selection._selectedById={};
|
|
}
|
|
this.grid.onEndDeselect(_a1,null,null,this._selected);
|
|
this.grid.onSelectCleared(_a1);
|
|
},_startSelect:function(_a4,_a5,_a6,_a7,_a8,_a9){
|
|
if(!this._isValid(_a4,_a5)){
|
|
return;
|
|
}
|
|
var _aa=this._isSelected(_a4,this._lastEndPoint[_a4]),_ab=this._isSelected(_a4,_a5);
|
|
if(this.noClear&&!_a6){
|
|
this._toSelect=_a9===undefined?true:_a9;
|
|
}else{
|
|
this._toSelect=_a8?_ab:!_ab;
|
|
}
|
|
if(!_a6||(!_ab&&this._config[_a4]==_f)){
|
|
this._clearSelection("col",_a5);
|
|
this._clearSelection("cell",_a5);
|
|
if(!this.noClear||(_a4==="row"&&this._config[_a4]==_f)){
|
|
this._clearSelection("row",_a5);
|
|
}
|
|
this._toSelect=_a9===undefined?true:_a9;
|
|
}
|
|
this._selecting[_a4]=true;
|
|
this._currentPoint[_a4]=null;
|
|
if(_a7&&this._lastType==_a4&&_aa==this._toSelect&&this._config[_a4]==_10){
|
|
if(_a4==="row"){
|
|
this._isUsingRowSelector=true;
|
|
}
|
|
this._startPoint[_a4]=this._lastEndPoint[_a4];
|
|
this._highlight(_a4,this._startPoint[_a4]);
|
|
this._isUsingRowSelector=false;
|
|
}else{
|
|
this._startPoint[_a4]=_a5;
|
|
}
|
|
this._curType=_a4;
|
|
this._fireEvent("start",_a4);
|
|
this._isStartFocus=true;
|
|
this._isUsingRowSelector=true;
|
|
this._highlight(_a4,_a5,this._toSelect);
|
|
this._isStartFocus=false;
|
|
},_endSelect:function(_ac){
|
|
if(_ac==="row"){
|
|
delete this._isUsingRowSelector;
|
|
}
|
|
if(_ac=="all"){
|
|
this._endSelect("col");
|
|
this._endSelect("row");
|
|
this._endSelect("cell");
|
|
}else{
|
|
if(this._selecting[_ac]){
|
|
this._addToSelected(_ac);
|
|
this._lastAnchorPoint[_ac]=this._startPoint[_ac];
|
|
this._lastEndPoint[_ac]=this._currentPoint[_ac];
|
|
if(this._toSelect){
|
|
this._lastSelectedAnchorPoint[_ac]=this._lastAnchorPoint[_ac];
|
|
this._lastSelectedEndPoint[_ac]=this._lastEndPoint[_ac];
|
|
}
|
|
this._startPoint[_ac]=this._currentPoint[_ac]=null;
|
|
this._selecting[_ac]=false;
|
|
this._lastType=_ac;
|
|
this._fireEvent("end",_ac);
|
|
}
|
|
}
|
|
},_fireEvent:function(_ad,_ae){
|
|
switch(_ad){
|
|
case "start":
|
|
this.grid[this._toSelect?"onStartSelect":"onStartDeselect"](_ae,this._startPoint[_ae],this._selected);
|
|
break;
|
|
case "end":
|
|
this.grid[this._toSelect?"onEndSelect":"onEndDeselect"](_ae,this._lastAnchorPoint[_ae],this._lastEndPoint[_ae],this._selected);
|
|
break;
|
|
}
|
|
},_calcToHighlight:function(_af,_b0,_b1,_b2){
|
|
if(_b2!==undefined){
|
|
var _b3;
|
|
if(this._usingKeyboard&&!_b1){
|
|
var _b4=this._isInLastRange(this._lastType,_b0);
|
|
if(_b4){
|
|
_b3=this._isSelected(_af,_b0);
|
|
if(_b2&&_b3){
|
|
return false;
|
|
}
|
|
if(!_b2&&!_b3&&this._isInLastRange(this._lastType,_b0,true)){
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
return _b1?_b2:(_b3||this._isSelected(_af,_b0));
|
|
}
|
|
return _b1;
|
|
},_highlightNode:function(_b5,_b6){
|
|
if(_b5){
|
|
var _b7="dojoxGridRowSelected";
|
|
var _b8="dojoxGridCellSelected";
|
|
_8.toggleClass(_b5,_b7,_b6);
|
|
_8.toggleClass(_b5,_b8,_b6);
|
|
}
|
|
},_highlightHeader:function(_b9,_ba){
|
|
var _bb=this.grid.layout.cells;
|
|
var _bc=_bb[_b9].getHeaderNode();
|
|
var _bd="dojoxGridHeaderSelected";
|
|
_8.toggleClass(_bc,_bd,_ba);
|
|
},_highlightRowSelector:function(_be,_bf){
|
|
var _c0=this.grid.views.views[0];
|
|
if(_c0 instanceof _b){
|
|
var _c1=_c0.getRowNode(_be);
|
|
if(_c1){
|
|
var _c2="dojoxGridRowSelectorSelected";
|
|
_8.toggleClass(_c1,_c2,_bf);
|
|
}
|
|
}
|
|
},_highlightSingle:function(_c3,_c4,_c5,_c6,_c7){
|
|
var _c8=this,_c9,g=_c8.grid,_ca=g.layout.cells;
|
|
switch(_c3){
|
|
case "cell":
|
|
_c9=this._calcToHighlight(_c3,_c5,_c4,_c6);
|
|
var c=_ca[_c5.col];
|
|
if(!c.hidden&&!c.notselectable){
|
|
this._highlightNode(_c5.node||c.getNode(_c5.row),_c9);
|
|
}
|
|
break;
|
|
case "col":
|
|
_c9=this._calcToHighlight(_c3,_c5,_c4,_c6);
|
|
this._highlightHeader(_c5.col,_c9);
|
|
_7("td[idx='"+_c5.col+"']",g.domNode).forEach(function(_cb){
|
|
var _cc=_ca[_c5.col].view.content.findRowTarget(_cb);
|
|
if(_cc){
|
|
var _cd=_cc[dojox.grid.util.rowIndexTag];
|
|
_c8._highlightSingle("cell",_c9,{"row":_cd,"col":_c5.col,"node":_cb});
|
|
}
|
|
});
|
|
break;
|
|
case "row":
|
|
_c9=this._calcToHighlight(_c3,_c5,_c4,_c6);
|
|
this._highlightRowSelector(_c5.row,_c9);
|
|
if(this._config.cell){
|
|
_4.forEach(_ca,function(_ce){
|
|
_c8._highlightSingle("cell",_c9,{"row":_c5.row,"col":_ce.index,"node":_ce.getNode(_c5.row)});
|
|
});
|
|
}
|
|
this._selectedRowModified=true;
|
|
if(!_c7){
|
|
g.selection.setSelected(_c5.row,_c9);
|
|
}
|
|
}
|
|
},_highlight:function(_cf,_d0,_d1){
|
|
if(this._selecting[_cf]&&_d0!==null){
|
|
var _d2=this._startPoint[_cf],_d3=this._currentPoint[_cf],_d4=this,_d5=function(_d6,to,_d7){
|
|
_d4._forEach(_cf,_d6,to,function(_d8){
|
|
_d4._highlightSingle(_cf,_d7,_d8,_d1);
|
|
},true);
|
|
};
|
|
switch(_cf){
|
|
case "col":
|
|
case "row":
|
|
if(_d3!==null){
|
|
if(_12(_cf,_d0,_d2,_d3,true)){
|
|
_d5(_d3,_d0,false);
|
|
}else{
|
|
if(_12(_cf,_d2,_d0,_d3,true)){
|
|
_d5(_d3,_d2,false);
|
|
_d3=_d2;
|
|
}
|
|
_d5(_d0,_d3,true);
|
|
}
|
|
}else{
|
|
this._highlightSingle(_cf,true,_d0,_d1);
|
|
}
|
|
break;
|
|
case "cell":
|
|
if(_d3!==null){
|
|
if(_12("row",_d0,_d2,_d3,true)||_12("col",_d0,_d2,_d3,true)||_12("row",_d2,_d0,_d3,true)||_12("col",_d2,_d0,_d3,true)){
|
|
_d5(_d2,_d3,false);
|
|
}
|
|
}
|
|
_d5(_d2,_d0,true);
|
|
}
|
|
this._currentPoint[_cf]=_d0;
|
|
this._focusPoint(_cf,this._currentPoint);
|
|
}
|
|
},_focusPoint:function(_d9,_da){
|
|
if(!this._isStartFocus){
|
|
var _db=_da[_d9],f=this.grid.focus;
|
|
if(_d9=="col"){
|
|
f._colHeadFocusIdx=_db.col;
|
|
f.focusArea("header");
|
|
}else{
|
|
if(_d9=="row"){
|
|
f.focusArea("rowHeader",{"rowIndex":_db.row});
|
|
}else{
|
|
if(_d9=="cell"){
|
|
f.setFocusIndex(_db.row,_db.col);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},_blurPoint:function(_dc,_dd){
|
|
var f=this.grid.focus;
|
|
if(_dc=="col"){
|
|
f._blurHeader();
|
|
}else{
|
|
if(_dc=="cell"){
|
|
f._blurContent();
|
|
}
|
|
}
|
|
},_addToSelected:function(_de){
|
|
var _df=this._toSelect,_e0=this,_e1=[],_e2=[],_e3=this._startPoint[_de],end=this._currentPoint[_de];
|
|
if(this._usingKeyboard){
|
|
this._forEach(_de,this._lastAnchorPoint[_de],this._lastEndPoint[_de],function(_e4){
|
|
if(!_12(_de,_e4,_e3,end)){
|
|
(_df?_e2:_e1).push(_e4);
|
|
}
|
|
});
|
|
}
|
|
this._forEach(_de,_e3,end,function(_e5){
|
|
var _e6=_e0._isSelected(_de,_e5);
|
|
if(_df&&!_e6){
|
|
_e1.push(_e5);
|
|
}else{
|
|
if(!_df){
|
|
_e2.push(_e5);
|
|
}
|
|
}
|
|
});
|
|
this._add(_de,_e1);
|
|
this._remove(_de,_e2);
|
|
_4.forEach(this._selected.row,function(_e7){
|
|
if(_e7.except.length>0){
|
|
this._selectedRowModified=true;
|
|
this.grid.selection.setSelected(_e7.row,false);
|
|
}
|
|
},this);
|
|
},_forEach:function(_e8,_e9,end,_ea,_eb){
|
|
if(!this._isValid(_e8,_e9,true)||!this._isValid(_e8,end,true)){
|
|
return;
|
|
}
|
|
switch(_e8){
|
|
case "col":
|
|
case "row":
|
|
_e9=_e9[_e8];
|
|
end=end[_e8];
|
|
var dir=end>_e9?1:-1;
|
|
if(!_eb){
|
|
end+=dir;
|
|
}
|
|
for(;_e9!=end;_e9+=dir){
|
|
_ea(_1a(_e8,_e9));
|
|
}
|
|
break;
|
|
case "cell":
|
|
var _ec=end.col>_e9.col?1:-1,_ed=end.row>_e9.row?1:-1;
|
|
for(var i=_e9.row,p=end.row+_ed;i!=p;i+=_ed){
|
|
for(var j=_e9.col,q=end.col+_ec;j!=q;j+=_ec){
|
|
_ea(_1a(_e8,i,j));
|
|
}
|
|
}
|
|
}
|
|
},_makeupForExceptions:function(_ee,_ef){
|
|
var _f0=[];
|
|
_4.forEach(this._selected[_ee],function(v1){
|
|
_4.forEach(_ef,function(v2){
|
|
if(v1[_ee]==v2[_ee]){
|
|
var pos=_4.indexOf(v1.except,v2[_11[_ee]]);
|
|
if(pos>=0){
|
|
v1.except.splice(pos,1);
|
|
}
|
|
_f0.push(v2);
|
|
}
|
|
});
|
|
});
|
|
return _f0;
|
|
},_makeupForCells:function(_f1,_f2){
|
|
var _f3=[];
|
|
_4.forEach(this._selected.cell,function(v1){
|
|
_4.some(_f2,function(v2){
|
|
if(v1[_f1]==v2[_f1]){
|
|
_f3.push(v1);
|
|
return true;
|
|
}
|
|
return false;
|
|
});
|
|
});
|
|
this._remove("cell",_f3);
|
|
_4.forEach(this._selected[_11[_f1]],function(v1){
|
|
_4.forEach(_f2,function(v2){
|
|
var pos=_4.indexOf(v1.except,v2[_f1]);
|
|
if(pos>=0){
|
|
v1.except.splice(pos,1);
|
|
}
|
|
});
|
|
});
|
|
},_addException:function(_f4,_f5){
|
|
_4.forEach(this._selected[_f4],function(v1){
|
|
_4.forEach(_f5,function(v2){
|
|
v1.except.push(v2[_11[_f4]]);
|
|
});
|
|
});
|
|
},_addCellException:function(_f6,_f7){
|
|
_4.forEach(this._selected[_f6],function(v1){
|
|
_4.forEach(_f7,function(v2){
|
|
if(v1[_f6]==v2[_f6]){
|
|
v1.except.push(v2[_11[_f6]]);
|
|
}
|
|
});
|
|
});
|
|
},_add:function(_f8,_f9){
|
|
var _fa=this.grid.layout.cells;
|
|
if(_f8=="cell"){
|
|
var _fb=this._makeupForExceptions("col",_f9);
|
|
var _fc=this._makeupForExceptions("row",_f9);
|
|
_f9=_4.filter(_f9,function(_fd){
|
|
return _4.indexOf(_fb,_fd)<0&&_4.indexOf(_fc,_fd)<0&&!_fa[_fd.col].hidden&&!_fa[_fd.col].notselectable;
|
|
});
|
|
}else{
|
|
if(_f8=="col"){
|
|
_f9=_4.filter(_f9,function(_fe){
|
|
return !_fa[_fe.col].hidden&&!_fa[_fe.col].notselectable;
|
|
});
|
|
}
|
|
this._makeupForCells(_f8,_f9);
|
|
this._selected[_f8]=_4.filter(this._selected[_f8],function(v){
|
|
return _4.every(_f9,function(_ff){
|
|
return v[_f8]!==_ff[_f8];
|
|
});
|
|
});
|
|
}
|
|
if(_f8!="col"&&this.grid._hasIdentity){
|
|
_4.forEach(_f9,function(item){
|
|
var _100=this.grid._by_idx[item.row];
|
|
if(_100){
|
|
item.id=_100.idty;
|
|
}
|
|
},this);
|
|
}
|
|
this._selected[_f8]=this._selected[_f8].concat(_f9);
|
|
},_remove:function(type,_101){
|
|
var comp=_2.partial(_17,type);
|
|
this._selected[type]=_4.filter(this._selected[type],function(v1){
|
|
return !_4.some(_101,function(v2){
|
|
return comp(v1,v2);
|
|
});
|
|
});
|
|
if(type=="cell"){
|
|
this._addCellException("col",_101);
|
|
this._addCellException("row",_101);
|
|
}else{
|
|
if(this._config.cell){
|
|
this._addException(_11[type],_101);
|
|
}
|
|
}
|
|
},_isCellNotInExcept:function(type,item){
|
|
var attr=item[type],_102=item[_11[type]];
|
|
return _4.some(this._selected[type],function(v){
|
|
return v[type]==attr&&_4.indexOf(v.except,_102)<0;
|
|
});
|
|
},_isSelected:function(type,item){
|
|
if(!item){
|
|
return false;
|
|
}
|
|
var res=_4.some(this._selected[type],function(v){
|
|
var ret=_17(type,item,v);
|
|
if(ret&&type!=="cell"){
|
|
return v.except.length===0;
|
|
}
|
|
return ret;
|
|
});
|
|
if(!res&&type==="cell"){
|
|
res=(this._isCellNotInExcept("col",item)||this._isCellNotInExcept("row",item));
|
|
if(type==="cell"){
|
|
res=res&&!this.grid.layout.cells[item.col].notselectable;
|
|
}
|
|
}
|
|
return res;
|
|
},_isInLastRange:function(type,item,_103){
|
|
var _104=this[_103?"_lastSelectedAnchorPoint":"_lastAnchorPoint"][type],end=this[_103?"_lastSelectedEndPoint":"_lastEndPoint"][type];
|
|
if(!item||!_104||!end){
|
|
return false;
|
|
}
|
|
return _12(type,item,_104,end);
|
|
},_isValid:function(type,item,_105){
|
|
if(!item){
|
|
return false;
|
|
}
|
|
try{
|
|
var g=this.grid,_106=item[type];
|
|
switch(type){
|
|
case "col":
|
|
return _106>=0&&_106<g.layout.cells.length&&_2.isArray(item.except)&&(_105||!g.layout.cells[_106].notselectable);
|
|
case "row":
|
|
return _106>=0&&_106<g.rowCount&&_2.isArray(item.except);
|
|
case "cell":
|
|
return item.col>=0&&item.col<g.layout.cells.length&&item.row>=0&&item.row<g.rowCount&&(_105||!g.layout.cells[item.col].notselectable);
|
|
}
|
|
}
|
|
catch(e){
|
|
}
|
|
return false;
|
|
}});
|
|
_d.registerPlugin(_1e,{"dependency":["autoScroll"]});
|
|
return _1e;
|
|
});
|