You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.1 KiB
JavaScript
67 lines
1.1 KiB
JavaScript
/*
|
|
Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
|
|
Available via Academic Free License >= 2.1 OR the modified BSD license.
|
|
see: http://dojotoolkit.org/license for details
|
|
*/
|
|
|
|
|
|
if(!dojo._hasResource["dojo.data.util.sorter"]){
|
|
dojo._hasResource["dojo.data.util.sorter"]=true;
|
|
dojo.provide("dojo.data.util.sorter");
|
|
dojo.data.util.sorter.basicComparator=function(a,b){
|
|
var r=-1;
|
|
if(a===null){
|
|
a=undefined;
|
|
}
|
|
if(b===null){
|
|
b=undefined;
|
|
}
|
|
if(a==b){
|
|
r=0;
|
|
}else{
|
|
if(a>b||a==null){
|
|
r=1;
|
|
}
|
|
}
|
|
return r;
|
|
};
|
|
dojo.data.util.sorter.createSortFunction=function(_1,_2){
|
|
var _3=[];
|
|
function _4(_5,_6,_7,s){
|
|
return function(_8,_9){
|
|
var a=s.getValue(_8,_5);
|
|
var b=s.getValue(_9,_5);
|
|
return _6*_7(a,b);
|
|
};
|
|
};
|
|
var _a;
|
|
var _b=_2.comparatorMap;
|
|
var bc=dojo.data.util.sorter.basicComparator;
|
|
for(var i=0;i<_1.length;i++){
|
|
_a=_1[i];
|
|
var _c=_a.attribute;
|
|
if(_c){
|
|
var _d=(_a.descending)?-1:1;
|
|
var _e=bc;
|
|
if(_b){
|
|
if(typeof _c!=="string"&&("toString" in _c)){
|
|
_c=_c.toString();
|
|
}
|
|
_e=_b[_c]||bc;
|
|
}
|
|
_3.push(_4(_c,_d,_e,_2));
|
|
}
|
|
}
|
|
return function(_f,_10){
|
|
var i=0;
|
|
while(i<_3.length){
|
|
var ret=_3[i++](_f,_10);
|
|
if(ret!==0){
|
|
return ret;
|
|
}
|
|
}
|
|
return 0;
|
|
};
|
|
};
|
|
}
|