@@ -167,12 +167,29 @@ function tableSortJs(testingTableSortJS = false, domDocumentWindow = document) {
167167 }
168168 }
169169
170- function getTableData ( tableRows , columnData , isFileSize , isDataAttribute ) {
170+ function getColSpanData ( sortableTable , colSpanData , colSpanSum ) {
171+ sortableTable . querySelectorAll ( "th" ) . forEach (
172+ ( th , index ) => {
173+ colSpanData [ index ] = th . colSpan
174+ if ( index === 0 )
175+ colSpanSum [ index ] = th . colSpan
176+ else
177+ colSpanSum [ index ] = colSpanSum [ index - 1 ] + th . colSpan
178+ } )
179+ }
180+
181+
182+ function getTableData ( tableRows , columnData , isFileSize , isDataAttribute , colSpanData , colSpanSum ) {
171183 for ( let [ i , tr ] of tableRows . entries ( ) ) {
172184 // inner text for column we click on
173185 let tdTextContent = tr
174186 . querySelectorAll ( "td" )
175- . item ( columnIndex ) . textContent ;
187+ . item (
188+ colSpanData [ columnIndex ] === 1 ?
189+ colSpanSum [ columnIndex ] - 1 :
190+ colSpanSum [ columnIndex ] - colSpanData [ columnIndex ] )
191+ . textContent ;
192+
176193 if ( tdTextContent . length === 0 ) {
177194 tdTextContent = "" ;
178195 }
@@ -330,6 +347,9 @@ function tableSortJs(testingTableSortJS = false, domDocumentWindow = document) {
330347
331348 th . addEventListener ( "click" , function ( ) {
332349 const columnData = [ ] ;
350+ const colSpanData = { } ;
351+ const colSpanSum = { } ;
352+
333353 // To make it work even if there is a tr with display: none; in the table, only the tr that is currently displayed is subject to sorting.
334354 const visibleTableRows = Array . prototype . filter . call (
335355 tableBody . querySelectorAll ( "tr" ) ,
@@ -360,7 +380,8 @@ function tableSortJs(testingTableSortJS = false, domDocumentWindow = document) {
360380
361381 timesClickedColumn += 1 ;
362382
363- getTableData ( visibleTableRows , columnData , isFileSize , isDataAttribute ) ;
383+ getColSpanData ( sortableTable , colSpanData , colSpanSum )
384+ getTableData ( visibleTableRows , columnData , isFileSize , isDataAttribute , colSpanData , colSpanSum ) ;
364385 updateTable ( visibleTableRows , columnData , isFileSize ) ;
365386 } ) ;
366387 }
0 commit comments