From fc78c714aa2724aeadba824a64464f20536a165e Mon Sep 17 00:00:00 2001 From: LE THANH TUNG Date: Fri, 19 Jul 2024 14:05:01 +0200 Subject: [PATCH] Refactor variable declarations and enhance row grouping logic to account for shown child rows --- dataTables.rowsGroup.js | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/dataTables.rowsGroup.js b/dataTables.rowsGroup.js index d82a2ed..60ae23a 100644 --- a/dataTables.rowsGroup.js +++ b/dataTables.rowsGroup.js @@ -40,13 +40,13 @@ (function($){ -ShowedDataSelectorModifier = { +var ShowedDataSelectorModifier = { order: 'current', page: 'current', search: 'applied', } -GroupedColumnsOrderDir = 'asc'; +var GroupedColumnsOrderDir = 'asc'; /* @@ -197,24 +197,35 @@ RowsGroup.prototype = { var columnValues = currentColumn.data() var newSequenceRow = iStartRow, - iRow; + iRow, + childRowCount = 0; + + if( this.table.row( iStartRow ).child.isShown() ) + childRowCount++; + for (iRow = iStartRow + 1; iRow <= iFinishRow; ++iRow) { - + + if( this.table.row( iRow ).child.isShown() ) + childRowCount++; + if (columnValues[iRow] === columnValues[newSequenceRow]) { $(columnNodes[iRow]).hide() } else { + $(columnNodes[newSequenceRow]).show() - $(columnNodes[newSequenceRow]).attr('rowspan', (iRow-1) - newSequenceRow + 1) + $(columnNodes[newSequenceRow]).attr('rowspan', (iRow-1) - newSequenceRow + 1 + childRowCount) if (columnsIndexesCopy.length > 0) this._mergeColumn(newSequenceRow, (iRow-1), columnsIndexesCopy) newSequenceRow = iRow; + childRowCount = 0; } } + $(columnNodes[newSequenceRow]).show() - $(columnNodes[newSequenceRow]).attr('rowspan', (iRow-1)- newSequenceRow + 1) + $(columnNodes[newSequenceRow]).attr('rowspan', (iRow-1)- newSequenceRow + 1 + childRowCount ) if (columnsIndexesCopy.length > 0) this._mergeColumn(newSequenceRow, (iRow-1), columnsIndexesCopy) }, @@ -251,7 +262,7 @@ $(document).on( 'init.dt', function ( e, settings ) { if ( settings.oInit.rowsGroup || $.fn.dataTable.defaults.rowsGroup ) { - options = settings.oInit.rowsGroup? + var options = settings.oInit.rowsGroup? settings.oInit.rowsGroup: $.fn.dataTable.defaults.rowsGroup; var rowsGroup = new RowsGroup( api, options );