From 877d57f6a9dbf48dd99f0896a20f32fb316169b9 Mon Sep 17 00:00:00 2001 From: LeeWannacott Date: Sun, 7 May 2023 22:59:54 +1200 Subject: [PATCH] npm release 1.10.2; added onload-sort class for . --- browser-extension/manifest.json | 8 ++--- browser-extension/popup/table-options.html | 2 +- browser-extension/setButtons.js | 5 ++-- npm/README.md | 3 +- npm/package.json | 2 +- npm/table-sort.js | 34 ++++++++++++++-------- public/table-sort.js | 18 ++++++------ test/order-by-desc.test.js | 6 ++-- 8 files changed, 44 insertions(+), 34 deletions(-) diff --git a/browser-extension/manifest.json b/browser-extension/manifest.json index 57c7d09..adbbb61 100644 --- a/browser-extension/manifest.json +++ b/browser-extension/manifest.json @@ -1,12 +1,10 @@ { "manifest_version": 2, - "author":"Lee Wannacott", + "author": "Lee Wannacott", "name": "table-sort-js", "version": "0.0", "description": "Makes tables sortable using https://github.com/LeeWannacott/table-sort-js", - "icons": - { "48": "icons/t.png" } - , + "icons": { "48": "icons/t.png" }, "browser_action": { "default_icon": "./icons/t.png", "default_title": "table-sort", @@ -19,7 +17,7 @@ "*://*.mozilla.org/*", "https://github.com/*/*/actions/runs/*/usage" ], - "js": ["addTableSortClass.js","getTableHeaders.js","table-sort.js"] + "js": ["addTableSortClass.js", "getTableHeaders.js", "table-sort.js"] } ] } diff --git a/browser-extension/popup/table-options.html b/browser-extension/popup/table-options.html index 73ea23f..035a745 100644 --- a/browser-extension/popup/table-options.html +++ b/browser-extension/popup/table-options.html @@ -12,6 +12,6 @@ - + diff --git a/browser-extension/setButtons.js b/browser-extension/setButtons.js index 577d7af..e35db9e 100644 --- a/browser-extension/setButtons.js +++ b/browser-extension/setButtons.js @@ -1,11 +1,10 @@ // let tables = window.document.querySelectorAll("table"); // console.log(getTableHeaders()) let headers = document.querySelectorAll("table th"); -console.log(headers) +console.log(headers); let headerNames = Array.from(headers).map((header) => header.innerText); console.log("nnnn"); - headerNames.forEach((name) => { const btn = document.createElement("button"); console.log(name); @@ -14,4 +13,4 @@ headerNames.forEach((name) => { document.querySelector("#popup-content").appendChild(btn); let test = document.querySelector("#popup-content"); console.log(test); -}) +}); diff --git a/npm/README.md b/npm/README.md index 7afc04f..5857fd2 100644 --- a/npm/README.md +++ b/npm/README.md @@ -51,10 +51,11 @@ Refer to the documenation for examples on how to use table-sort-js with [HTML](h | ------------------ | --------------------------------------------------------------------------------------------------------------------------------------- | | "order-by-desc" | Order by descending on first click. (default is aescending) | | "data-sort" | Sort by [data attributes](https://developer.mozilla.org/en-US/docs/Learn/HTML/Howto/Use_data_attributes), e.g <td data-sort="42"> | +| "onload-sort" | Sort column on loading of the page. Simulates a click from the user. (can only sort onload for one column) | | "file-size-sort" | Sort file sizes(B->TiB) uses the binary prefix. (e.g KiB) | +| "disable-sort" | Disallow sorting the table by this specific column. | | "alpha-sort" | Sort alphabetically (z11,z2); default is [natural sort](https://en.wikipedia.org/wiki/Natural_sort_order) (z2,z11). | | "punct-sort" | Sort punctuation; default ignores punctuation. | -| "disable-sort" | Disallow sorting the table by this specific column. | #### Development: diff --git a/npm/package.json b/npm/package.json index 2b0cc33..afa220a 100644 --- a/npm/package.json +++ b/npm/package.json @@ -1,6 +1,6 @@ { "name": "table-sort-js", - "version": "1.9.2", + "version": "1.10.2", "description": "A JavaScript client-side HTML table sorting library with no dependencies required.", "license": "MIT", "repository": "LeeWannacott/table-sort-js", diff --git a/npm/table-sort.js b/npm/table-sort.js index 960538d..afff574 100644 --- a/npm/table-sort.js +++ b/npm/table-sort.js @@ -35,26 +35,32 @@ function tableSortJs(testingTableSortJS = false, domDocumentWindow = document) { } } - function makeTableSortable(sortableTable) { + function createMissingTableHead(sortableTable) { let createTableHead; - let tableBody; + if (testingTableSortJS === true) { + createTableHead = domDocumentWindow.createElement("thead"); + } else { + createTableHead = document.createElement("thead"); + } + createTableHead.appendChild(sortableTable.rows[0]); + sortableTable.insertBefore(createTableHead, sortableTable.firstChild); + } + + function getTableBody(sortableTable) { if (sortableTable.getElementsByTagName("thead").length === 0) { - if (testingTableSortJS === true) { - createTableHead = domDocumentWindow.createElement("thead"); - } else { - createTableHead = document.createElement("thead"); - } - createTableHead.appendChild(sortableTable.rows[0]); - sortableTable.insertBefore(createTableHead, sortableTable.firstChild); + createMissingTableHead(sortableTable); if (sortableTable.querySelectorAll("tbody").length > 1) { - tableBody = sortableTable.querySelectorAll("tbody")[1]; + return sortableTable.querySelectorAll("tbody")[1]; } else { - tableBody = sortableTable.querySelector("tbody"); + return sortableTable.querySelector("tbody"); } } else { - tableBody = sortableTable.querySelector("tbody"); + return sortableTable.querySelector("tbody"); } + } + function makeTableSortable(sortableTable) { + const tableBody = getTableBody(sortableTable); const tableHead = sortableTable.querySelector("thead"); const tableHeadHeaders = tableHead.querySelectorAll("th"); @@ -320,6 +326,10 @@ function tableSortJs(testingTableSortJS = false, domDocumentWindow = document) { getTableData(tableProperties); updateTable(tableProperties); }); + let isOnloadSort = th.classList.contains("onload-sort"); + if (isOnloadSort) { + th.click(); + } } } diff --git a/public/table-sort.js b/public/table-sort.js index bcaa6e4..afff574 100644 --- a/public/table-sort.js +++ b/public/table-sort.js @@ -37,18 +37,18 @@ function tableSortJs(testingTableSortJS = false, domDocumentWindow = document) { function createMissingTableHead(sortableTable) { let createTableHead; - if (testingTableSortJS === true) { - createTableHead = domDocumentWindow.createElement("thead"); - } else { - createTableHead = document.createElement("thead"); - } - createTableHead.appendChild(sortableTable.rows[0]); - sortableTable.insertBefore(createTableHead, sortableTable.firstChild); + if (testingTableSortJS === true) { + createTableHead = domDocumentWindow.createElement("thead"); + } else { + createTableHead = document.createElement("thead"); + } + createTableHead.appendChild(sortableTable.rows[0]); + sortableTable.insertBefore(createTableHead, sortableTable.firstChild); } function getTableBody(sortableTable) { if (sortableTable.getElementsByTagName("thead").length === 0) { - createMissingTableHead(sortableTable) + createMissingTableHead(sortableTable); if (sortableTable.querySelectorAll("tbody").length > 1) { return sortableTable.querySelectorAll("tbody")[1]; } else { @@ -326,7 +326,7 @@ function tableSortJs(testingTableSortJS = false, domDocumentWindow = document) { getTableData(tableProperties); updateTable(tableProperties); }); - let isOnloadSort = th.classList.contains("onload-sort"); + let isOnloadSort = th.classList.contains("onload-sort"); if (isOnloadSort) { th.click(); } diff --git a/test/order-by-desc.test.js b/test/order-by-desc.test.js index 67d8664..2b42bfe 100644 --- a/test/order-by-desc.test.js +++ b/test/order-by-desc.test.js @@ -176,9 +176,11 @@ test("visible-tr-sort: example sort only visible trs", () => { ).toStrictEqual({ col0: ["row5", "row4", "row2"] }); }); - test("onload-sort: testing that it sorts without a click from user", () => { expect( - createTestTable({ col0: [5, 3, 4, 1, 2] }, { classTags: "order-by-desc onload-sort" }) + createTestTable( + { col0: [5, 3, 4, 1, 2] }, + { classTags: "order-by-desc onload-sort" } + ) ).toStrictEqual({ col0: ["5", "4", "3", "2", "1"] }); });