Skip to content

Commit ce690aa

Browse files
authored
Fix: colspan messing with other column sorting (#58)
1 parent fa1ef26 commit ce690aa

File tree

1 file changed

+24
-3
lines changed

1 file changed

+24
-3
lines changed

public/table-sort.js

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)