@@ -30,6 +30,7 @@ export class TableDataStore {
3030 this . remote = props . remote ;
3131 this . multiColumnSearch = props . multiColumnSearch ;
3232 this . multiColumnSort = props . multiColumnSort ;
33+ this . hasFooter = props . hasFooter ;
3334 }
3435
3536 clean ( ) {
@@ -155,7 +156,7 @@ export class TableDataStore {
155156 let currentDisplayData = this . getCurrentDisplayData ( ) ;
156157
157158 currentDisplayData = this . _sort ( currentDisplayData ) ;
158-
159+ this . data = currentDisplayData ;
159160 return this ;
160161 }
161162
@@ -570,44 +571,84 @@ export class TableDataStore {
570571 if ( this . sortList . length === 0 || typeof ( this . sortList [ 0 ] ) === 'undefined' ) {
571572 return arr ;
572573 }
573-
574- arr . sort ( ( a , b ) => {
575- let result = 0 ;
576-
577- for ( let i = 0 ; i < this . sortList . length ; i ++ ) {
578- const sortDetails = this . sortList [ i ] ;
579- const isDesc = sortDetails . order . toLowerCase ( ) === Const . SORT_DESC ;
580-
581- const { sortFunc, sortFuncExtraData } = this . colInfos [ sortDetails . sortField ] ;
582-
583- if ( sortFunc ) {
584- result = sortFunc ( a , b , sortDetails . order , sortDetails . sortField , sortFuncExtraData ) ;
585- } else {
586- const valueA = a [ sortDetails . sortField ] === null ? '' : a [ sortDetails . sortField ] ;
587- const valueB = b [ sortDetails . sortField ] === null ? '' : b [ sortDetails . sortField ] ;
588- if ( isDesc ) {
589- if ( typeof valueB === 'string' ) {
590- result = valueB . localeCompare ( valueA ) ;
591- } else {
592- result = valueA > valueB ? - 1 : ( ( valueA < valueB ) ? 1 : 0 ) ;
593- }
574+ if ( this . hasFooter ) {
575+ /* if it has hasFooter propery enabled*/
576+ const lastElem = arr [ arr . length - 1 ] ;
577+ /* sort all elements except the last one */
578+ const subAr = arr . slice ( 0 , arr . length - 1 ) ;
579+ console . log ( 'log:' , lastElem , ' :' , subAr ) ;
580+ console . log ( 'sorting subar' ) ;
581+ /* subAr.sort(this.compare);*/
582+ subAr . sort ( ( a , b ) => {
583+ let result = 0 ;
584+
585+ for ( let i = 0 ; i < this . sortList . length ; i ++ ) {
586+ const sortDetails = this . sortList [ i ] ;
587+ const isDesc = sortDetails . order . toLowerCase ( ) === Const . SORT_DESC ;
588+
589+ const { sortFunc, sortFuncExtraData } = this . colInfos [ sortDetails . sortField ] ;
590+ if ( sortFunc ) {
591+ result = sortFunc ( a , b , sortDetails . order , sortDetails . sortField , sortFuncExtraData ) ;
594592 } else {
595- if ( typeof valueA === 'string' ) {
596- result = valueA . localeCompare ( valueB ) ;
593+ const valueA = a [ sortDetails . sortField ] === null ? '' : a [ sortDetails . sortField ] ;
594+ const valueB = b [ sortDetails . sortField ] === null ? '' : b [ sortDetails . sortField ] ;
595+ if ( isDesc ) {
596+ if ( typeof valueB === 'string' ) {
597+ result = valueB . localeCompare ( valueA ) ;
598+ } else {
599+ result = valueA > valueB ? - 1 : ( ( valueA < valueB ) ? 1 : 0 ) ;
600+ }
597601 } else {
598- result = valueA < valueB ? - 1 : ( ( valueA > valueB ) ? 1 : 0 ) ;
602+ if ( typeof valueA === 'string' ) {
603+ result = valueA . localeCompare ( valueB ) ;
604+ } else {
605+ result = valueA < valueB ? - 1 : ( ( valueA > valueB ) ? 1 : 0 ) ;
606+ }
599607 }
600608 }
609+ if ( result !== 0 ) {
610+ return result ;
611+ }
601612 }
602613
603- if ( result !== 0 ) {
604- return result ;
614+ return result ;
615+ } ) ;
616+ subAr . push ( lastElem ) ;
617+ arr = subAr ;
618+ } else {
619+ arr . sort ( ( a , b ) => {
620+ let result = 0 ;
621+ for ( let i = 0 ; i < this . sortList . length ; i ++ ) {
622+ const sortDetails = this . sortList [ i ] ;
623+ const isDesc = sortDetails . order . toLowerCase ( ) === Const . SORT_DESC ;
624+
625+ const { sortFunc, sortFuncExtraData } = this . colInfos [ sortDetails . sortField ] ;
626+ if ( sortFunc ) {
627+ result = sortFunc ( a , b , sortDetails . order , sortDetails . sortField , sortFuncExtraData ) ;
628+ } else {
629+ const valueA = a [ sortDetails . sortField ] === null ? '' : a [ sortDetails . sortField ] ;
630+ const valueB = b [ sortDetails . sortField ] === null ? '' : b [ sortDetails . sortField ] ;
631+ if ( isDesc ) {
632+ if ( typeof valueB === 'string' ) {
633+ result = valueB . localeCompare ( valueA ) ;
634+ } else {
635+ result = valueA > valueB ? - 1 : ( ( valueA < valueB ) ? 1 : 0 ) ;
636+ }
637+ } else {
638+ if ( typeof valueA === 'string' ) {
639+ result = valueA . localeCompare ( valueB ) ;
640+ } else {
641+ result = valueA < valueB ? - 1 : ( ( valueA > valueB ) ? 1 : 0 ) ;
642+ }
643+ }
644+ }
645+ if ( result !== 0 ) {
646+ return result ;
647+ }
605648 }
606- }
607-
608- return result ;
609- } ) ;
610-
649+ return result ;
650+ } ) ;
651+ }
611652 return arr ;
612653 }
613654
0 commit comments