Import the supplied management frontend, including request encryption, withdrawal updates, and vendored dependencies. Use incoming versions for overlapping source files and retain existing environment configuration absent from the supplied directory.
106 lines
4.3 KiB
HTML
106 lines
4.3 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<script src="naturalSort.js" type="text/javascript"></script>
|
|
|
|
<script>
|
|
|
|
/* Mike Grier's fixes on v0.2 http://mgrier.com/code/natsort.optimized.txt */
|
|
function naturalSort2(a,b){
|
|
// setup temp-scope variables for comparison evauluation
|
|
var x = a.toString().toLowerCase() || '',
|
|
re=/(-?[0-9.]+)/g,
|
|
y = b.toString().toLowerCase() || '',
|
|
nC = String.fromCharCode(0),
|
|
xN = x.replace( re, nC + '$1' + nC ).split(nC),
|
|
yN = y.replace( re, nC + '$1' + nC ).split(nC),
|
|
xD = (new Date(x)).getTime(),yD;
|
|
|
|
if(xD) yD = (new Date(y)).getTime(); //no point in getting yD if xD is not a date
|
|
|
|
// natural sorting of dates
|
|
if(yD){ // we already checked if(xD), so if(yD), it's a date, too
|
|
if( xD < yD ) return -1;
|
|
else if( xD > yD ) return 1;
|
|
}
|
|
|
|
// natural sorting through split numeric strings and default strings
|
|
var cLoc, numS=Math.max(xN.length,yN.length);
|
|
for(cLoc=0; cLoc<numS; cLoc++){
|
|
// instead of performing these next 6 operations in the if
|
|
// and the same 6 operations in the else if, just do them once
|
|
// so we can reuse results instead of computing twice
|
|
xNcL = xN[cLoc]; // only look up values
|
|
yNcL = yN[cLoc]; // in arrays once
|
|
FxNcL = parseFloat(xNcL);
|
|
FyNcL = parseFloat(yNcL);
|
|
oFxNcL = FxNcL || xNcL;
|
|
oFyNcL = FyNcL || yNcL;
|
|
|
|
if(oFxNcL < oFyNcL)return -1;
|
|
else if(oFxNcL > oFyNcL)return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
/*
|
|
* Natural Sort algorithm for Javascript
|
|
* Version 0.3
|
|
* Author: Jim Palmer (based on chunking idea from Dave Koelle)
|
|
* optimizations and safari fix by Mike Grier (mgrier.com)
|
|
* Released under MIT license.
|
|
*/
|
|
function naturalSort3(a, b){
|
|
// setup temp-scope variables for comparison evauluation
|
|
var re = /(-?[0-9\.]+)/g,
|
|
x = a.toString().toLowerCase() || '',
|
|
y = b.toString().toLowerCase() || '',
|
|
nC = String.fromCharCode(0),
|
|
xN = x.replace( re, nC + '$1' + nC ).split(nC),
|
|
yN = y.replace( re, nC + '$1' + nC ).split(nC),
|
|
xD = (new Date(x)).getTime(),
|
|
yD = xD ? (new Date(y)).getTime() : null;
|
|
// natural sorting of dates
|
|
if ( yD )
|
|
if ( xD < yD ) return -1;
|
|
else if ( xD > yD ) return 1;
|
|
// natural sorting through split numeric strings and default strings
|
|
for( var cLoc = 0, numS = Math.max(xN.length, yN.length); cLoc < numS; cLoc++ ) {
|
|
oFxNcL = parseFloat(xN[cLoc]) || xN[cLoc];
|
|
oFyNcL = parseFloat(yN[cLoc]) || yN[cLoc];
|
|
if (oFxNcL < oFyNcL) return -1;
|
|
else if (oFxNcL > oFyNcL) return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
var a = [], b = [], c = [];
|
|
for ( var i = 0; i < 1000; i++ ) {
|
|
a.push(String.fromCharCode( Math.floor(Math.random() * (90-66)) + 65, Math.floor(Math.random() * (90-66)) + 65, Math.floor(Math.random() * (90-66)) + 65 ));
|
|
b.push(String.fromCharCode( Math.floor(Math.random() * (90-66)) + 65, Math.floor(Math.random() * (90-66)) + 65, Math.floor(Math.random() * (90-66)) + 65 ));
|
|
c.push(String.fromCharCode( Math.floor(Math.random() * (90-66)) + 65, Math.floor(Math.random() * (90-66)) + 65, Math.floor(Math.random() * (90-66)) + 65 ));
|
|
}
|
|
for ( i = 0; i < 1000; i++ ) {
|
|
a.push(Math.floor(Math.random() * 9).toString() + Math.floor(Math.random() * 9).toString() + Math.floor(Math.random() * 9).toString() );
|
|
b.push(Math.floor(Math.random() * 9).toString() + Math.floor(Math.random() * 9).toString() + Math.floor(Math.random() * 9).toString() );
|
|
c.push(Math.floor(Math.random() * 9).toString() + Math.floor(Math.random() * 9).toString() + Math.floor(Math.random() * 9).toString() );
|
|
}
|
|
for ( i = 0; i < 1000; i++ ) {
|
|
a.push( (Math.floor(Math.random() * 12) + 1).toString() + '/' + (Math.floor(Math.random() * 28) + 1).toString() + '/' + ( 2009 - Math.floor(Math.random() * 2)) );
|
|
b.push( (Math.floor(Math.random() * 12) + 1).toString() + '/' + (Math.floor(Math.random() * 28) + 1).toString() + '/' + ( 2009 - Math.floor(Math.random() * 2)) );
|
|
c.push( (Math.floor(Math.random() * 12) + 1).toString() + '/' + (Math.floor(Math.random() * 28) + 1).toString() + '/' + ( 2009 - Math.floor(Math.random() * 2)) );
|
|
}
|
|
|
|
var d = new Date();
|
|
document.write(a.sort(naturalSort)[0] + ' <BR>[' + ((new Date()).getTime() - d.getTime()) + 'ms]<BR><BR>');
|
|
//d = new Date();
|
|
//document.write(b.sort(naturalSort2)[0] + ' <BR>[' + ((new Date()).getTime() - d.getTime()) + 'ms]<BR><BR>');
|
|
//d = new Date();
|
|
//document.write(c.sort(naturalSort3)[0] + ' <BR>[' + ((new Date()).getTime() - d.getTime()) + 'ms]');
|
|
|
|
</script>
|
|
<style>*{font-family:tahoma;font-size:9px;}</style>
|
|
</head>
|
|
<body></body>
|
|
</html>
|