99 lines
1.9 KiB
JavaScript
99 lines
1.9 KiB
JavaScript
|
//>>built
|
||
|
define("dojox/grid/enhanced/plugins/Search",["dojo/_base/kernel","dojo/_base/lang","dojo/_base/declare","dojo/_base/array","dojo/data/util/filter","../../EnhancedGrid","../_Plugin"],function(_1,_2,_3,_4,_5,_6,_7){
|
||
|
var _8=_3("dojox.grid.enhanced.plugins.Search",_7,{name:"search",constructor:function(_9,_a){
|
||
|
this.grid=_9;
|
||
|
_a=(_a&&_2.isObject(_a))?_a:{};
|
||
|
this._cacheSize=_a.cacheSize||-1;
|
||
|
_9.searchRow=_2.hitch(this,"searchRow");
|
||
|
},searchRow:function(_b,_c){
|
||
|
if(!_2.isFunction(_c)){
|
||
|
return;
|
||
|
}
|
||
|
if(_2.isString(_b)){
|
||
|
_b=_5.patternToRegExp(_b);
|
||
|
}
|
||
|
var _d=false;
|
||
|
if(_b instanceof RegExp){
|
||
|
_d=true;
|
||
|
}else{
|
||
|
if(_2.isObject(_b)){
|
||
|
var _e=true;
|
||
|
for(var _f in _b){
|
||
|
if(_2.isString(_b[_f])){
|
||
|
_b[_f]=_5.patternToRegExp(_b[_f]);
|
||
|
}
|
||
|
_e=false;
|
||
|
}
|
||
|
if(_e){
|
||
|
return;
|
||
|
}
|
||
|
}else{
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
this._search(_b,0,_c,_d);
|
||
|
},_search:function(_10,_11,_12,_13){
|
||
|
var _14=this,cnt=this._cacheSize,_15={start:_11,query:this.grid.query,sort:this.grid.getSortProps(),queryOptions:this.grid.queryOptions,onBegin:function(_16){
|
||
|
_14._storeSize=_16;
|
||
|
},onComplete:function(_17){
|
||
|
if(!_4.some(_17,function(_18,i){
|
||
|
if(_14._checkRow(_18,_10,_13)){
|
||
|
_12(_11+i,_18);
|
||
|
return true;
|
||
|
}
|
||
|
return false;
|
||
|
})){
|
||
|
if(cnt>0&&_11+cnt<_14._storeSize){
|
||
|
_14._search(_10,_11+cnt,_12,_13);
|
||
|
}else{
|
||
|
_12(-1,null);
|
||
|
}
|
||
|
}
|
||
|
}};
|
||
|
if(cnt>0){
|
||
|
_15.count=cnt;
|
||
|
}
|
||
|
this.grid._storeLayerFetch(_15);
|
||
|
},_checkRow:function(_19,_1a,_1b){
|
||
|
var g=this.grid,s=g.store,i,_1c,_1d=_4.filter(g.layout.cells,function(_1e){
|
||
|
return !_1e.hidden;
|
||
|
});
|
||
|
if(_1b){
|
||
|
return _4.some(_1d,function(_1f){
|
||
|
try{
|
||
|
if(_1f.field){
|
||
|
return String(s.getValue(_19,_1f.field)).search(_1a)>=0;
|
||
|
}
|
||
|
}
|
||
|
catch(e){
|
||
|
}
|
||
|
return false;
|
||
|
});
|
||
|
}else{
|
||
|
for(_1c in _1a){
|
||
|
if(_1a[_1c] instanceof RegExp){
|
||
|
for(i=_1d.length-1;i>=0;--i){
|
||
|
if(_1d[i].field==_1c){
|
||
|
try{
|
||
|
if(String(s.getValue(_19,_1c)).search(_1a[_1c])<0){
|
||
|
return false;
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
catch(e){
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
if(i<0){
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
}});
|
||
|
_6.registerPlugin(_8);
|
||
|
return _8;
|
||
|
});
|