@@ -961,62 +961,52 @@ function nosqlinlinesorter(item, builder, doc) {
961961 if ( length < builder . $limit ) {
962962 item . response . push ( doc ) ;
963963 length + 1 >= builder . $limit && item . response . quicksort ( builder . $sort . name , builder . $sort . asc ) ;
964- } else {
965- if ( builder . $sort . asc )
966- nosqlresort_asc ( item . response , builder , doc ) ; // inline sorter
967- else
968- nosqlresort_desc ( item . response , builder , doc ) ; // inline sorter
969- }
964+ } else
965+ nosqlresort ( item . response , builder , doc ) ;
970966}
971967
972968function nosqlsortvalue ( a , b , sorter ) {
973969 var type = typeof ( a ) ;
974970 if ( type === 'number' )
975- return sorter . asc ? a < b : a > b ;
971+ return sorter . asc ? a > b : a < b ;
976972 else if ( type === 'string' ) {
977973 a = ( a . length > 5 ? a . substring ( 0 , 5 ) : a ) . toLowerCase ( ) . removeDiacritics ( ) ;
978974 var c = a . localeCompare ( b ) ;
979- return sorter . asc ? c === - 1 : c === 1 ;
975+ return sorter . asc ? c === 1 : c === - 1 ;
980976 } else if ( a instanceof Date )
981- return sorter . asc ? a < b : a > b ;
982-
977+ return sorter . asc ? a > b : a < b ;
983978 return false ;
984979}
985980
986- function nosqlresort_asc ( arr , builder , doc ) {
981+ function nosqlresort ( arr , builder , doc ) {
987982 var b = doc [ builder . $sort . name ] ;
988983 if ( typeof ( b ) === 'string' )
989984 b = ( b . length > 5 ? b . substring ( 0 , 5 ) : b ) . toLowerCase ( ) . removeDiacritics ( ) ;
985+
986+ var beg = 0 ;
990987 var length = arr . length ;
991- for ( var i = 0 , length = arr . length ; i < length ; i ++ ) {
992- // for (var i = length - 1; i > -1; i--) {
993- var item = arr [ i ] ;
994- var sort = nosqlsortvalue ( item [ builder . $sort . name ] , b , builder . $sort ) ;
995- console . log ( 'CYCLES' , JSON . stringify ( arr ) , item [ builder . $sort . name ] , b , sort ) ;
996- if ( sort )
997- continue ;
998- for ( var j = length - 1 ; j > i ; j -- )
999- arr [ j ] = arr [ j - 1 ] ;
1000- arr [ i ] = doc ;
988+ var tmp = length - 1 ;
989+
990+ var sort = nosqlsortvalue ( arr [ tmp ] [ builder . $sort . name ] , b , builder . $sort ) ;
991+ if ( ! sort )
1001992 return ;
1002- }
1003- }
1004993
1005- function nosqlresort_desc ( arr , builder , doc ) {
1006- var b = doc [ builder . $sort . name ] ;
1007- if ( typeof ( b ) === 'string' )
1008- b = ( b . length > 5 ? b . substring ( 0 , 5 ) : b ) . toLowerCase ( ) . removeDiacritics ( ) ;
1009- for ( var i = 0 , length = arr . length ; i < length ; i ++ ) {
1010- console . log ( 'CYCLES' ) ;
994+ tmp = arr . length / 2 >> 0 ;
995+ sort = nosqlsortvalue ( arr [ tmp ] [ builder . $sort . name ] , b , builder . $sort ) ;
996+ if ( ! sort )
997+ beg = tmp + 1 ;
998+
999+ for ( var i = beg ; i < length ; i ++ ) {
10111000 var item = arr [ i ] ;
10121001 var sort = nosqlsortvalue ( item [ builder . $sort . name ] , b , builder . $sort ) ;
1013- if ( sort )
1002+ if ( ! sort )
10141003 continue ;
10151004 for ( var j = length - 1 ; j > i ; j -- )
10161005 arr [ j ] = arr [ j - 1 ] ;
10171006 arr [ i ] = doc ;
10181007 return ;
10191008 }
1009+
10201010}
10211011
10221012Database . prototype . $reader2_inmemory = function ( name , items , callback ) {
0 commit comments