X-Git-Url: http://git.cyclocoop.org/%7B%24admin_url%7Dmembres/cotisations/gestion/rappel_supprimer.php?a=blobdiff_plain;f=resources%2Fjquery%2Fjquery.tablesorter.js;h=405c600b767ab7944a1810ad5cadba03e70b5826;hb=7636bea2bf3ccc33389a97d968bdda64036f59c0;hp=a552237d3a1dd9db9ccf7d91143379191e376f66;hpb=fd03fc043c8a0e670b09526ebc0571dac0d582fb;p=lhc%2Fweb%2Fwiklou.git diff --git a/resources/jquery/jquery.tablesorter.js b/resources/jquery/jquery.tablesorter.js index a552237d3a..405c600b76 100644 --- a/resources/jquery/jquery.tablesorter.js +++ b/resources/jquery/jquery.tablesorter.js @@ -325,6 +325,40 @@ } + /** + * Sets the sort count of the columns that are not affected by the sorting to have them sorted + * in default (ascending) order when their header cell is clicked the next time. + * + * @param {jQuery} $headers + * @param {Number[][]} sortList + * @param {Number[][]} headerToColumns + */ + function setHeadersOrder( $headers, sortList, headerToColumns ) { + // Loop through all headers to retrieve the indices of the columns the header spans across: + $.each( headerToColumns, function( headerIndex, columns ) { + + $.each( columns, function( i, columnIndex ) { + var header = $headers[headerIndex]; + + if ( !isValueInArray( columnIndex, sortList ) ) { + // Column shall not be sorted: Reset header count and order. + header.order = 0; + header.count = 0; + } else { + // Column shall be sorted: Apply designated count and order. + $.each( sortList, function( j, sortColumn ) { + if ( sortColumn[0] === i ) { + header.order = sortColumn[1]; + header.count = sortColumn[1] + 1; + return false; + } + } ); + } + } ); + + } ); + } + function isValueInArray( v, a ) { var l = a.length; for ( var i = 0; i < l; i++ ) { @@ -572,7 +606,7 @@ $.each( sortObjects, function( i, sortObject ) { $.each ( sortObject, function( columnIndex, order ) { var orderIndex = ( order === 'desc' ) ? 1 : 0; - sortList.push( [columnIndex, orderIndex] ); + sortList.push( [parseInt( columnIndex, 10 ), orderIndex] ); } ); } ); return sortList; @@ -758,6 +792,9 @@ } } + // Reset order/counts of cells not affected by sorting + setHeadersOrder( $headers, config.sortList, headerToColumns ); + // Set CSS for headers setHeadersCss( $table[0], $headers, config.sortList, sortCSS, sortMsg, columnToHeader ); appendToTable( @@ -798,6 +835,10 @@ sortList = convertSortList( sortList ); } + // Set each column's sort count to be able to determine the correct sort + // order when clicking on a header cell the next time + setHeadersOrder( $headers, sortList, headerToColumns ); + // re-build the cache for the tbody cells cache = buildCache( table );