From 9f7621fd5b1a03d883ef03484f8e304eec32989d Mon Sep 17 00:00:00 2001 From: LeeWannacott Date: Tue, 9 May 2023 21:47:25 +1200 Subject: [PATCH] Updates --- asset-manifest.json | 6 +- index.html | 2 +- ...316d8e.chunk.js => main.acaa2315.chunk.js} | 4 +- static/js/main.acaa2315.chunk.js.map | 1 + static/js/main.b5316d8e.chunk.js.map | 1 - table-sort.js | 70 ++----------------- 6 files changed, 14 insertions(+), 70 deletions(-) rename static/js/{main.b5316d8e.chunk.js => main.acaa2315.chunk.js} (79%) create mode 100644 static/js/main.acaa2315.chunk.js.map delete mode 100644 static/js/main.b5316d8e.chunk.js.map diff --git a/asset-manifest.json b/asset-manifest.json index 59b9fe3..f0afb3a 100644 --- a/asset-manifest.json +++ b/asset-manifest.json @@ -1,8 +1,8 @@ { "files": { "main.css": "/table-sort-js/static/css/main.0f3f41ac.chunk.css", - "main.js": "/table-sort-js/static/js/main.b5316d8e.chunk.js", - "main.js.map": "/table-sort-js/static/js/main.b5316d8e.chunk.js.map", + "main.js": "/table-sort-js/static/js/main.acaa2315.chunk.js", + "main.js.map": "/table-sort-js/static/js/main.acaa2315.chunk.js.map", "runtime-main.js": "/table-sort-js/static/js/runtime-main.0ab85869.js", "runtime-main.js.map": "/table-sort-js/static/js/runtime-main.0ab85869.js.map", "static/js/2.fc7e1ff2.chunk.js": "/table-sort-js/static/js/2.fc7e1ff2.chunk.js", @@ -15,6 +15,6 @@ "static/js/runtime-main.0ab85869.js", "static/js/2.fc7e1ff2.chunk.js", "static/css/main.0f3f41ac.chunk.css", - "static/js/main.b5316d8e.chunk.js" + "static/js/main.acaa2315.chunk.js" ] } \ No newline at end of file diff --git a/index.html b/index.html index 3d14962..555ff40 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -

Testing table sort js

Last NameFirst NameBirth DateEmployee IDDepartmentRuntimeFile Size
Franklinbenjamin1706,1,17k-level1h 1m 17s10b
da VinciZarlo1452.4.151m 45s192038998987021b
Statham1967-7-26HR11m 40s134809b
Micheal1958/8/2154Marketing29s30980980b
Ben1994/9/23134Marketing41s902938402398b
\ No newline at end of file +

Testing table sort js

Last NameFirst NameBirth DateEmployee IDDepartment
Franklinbenjamin1706,1,17k-level
da VinciZarlo1452.4.15
Statham1967-7-26HR
Micheal1958/8/2154Marketing
Ben1994/9/23134Marketing
\ No newline at end of file diff --git a/static/js/main.b5316d8e.chunk.js b/static/js/main.acaa2315.chunk.js similarity index 79% rename from static/js/main.b5316d8e.chunk.js rename to static/js/main.acaa2315.chunk.js index dd1fa7d..5a0c334 100644 --- a/static/js/main.b5316d8e.chunk.js +++ b/static/js/main.acaa2315.chunk.js @@ -1,2 +1,2 @@ -(this["webpackJsonptable-sort-js"]=this["webpackJsonptable-sort-js"]||[]).push([[0],{52:function(t,e,s){},62:function(t,e,s){"use strict";s.r(e);var c=s(0),a=s(23),r=s.n(a),i=s(24),o=s(25),n=s(29),l=s(28),d=s(10),j=s.n(d),b=(s(52),s(1)),h=function(t){Object(n.a)(s,t);var e=Object(l.a)(s);function s(){var t;Object(i.a)(this,s);for(var c=arguments.length,a=new Array(c),r=0;r {\n const repos = res.data;\n this.setState({ repos });\n });\n axios\n .get(\n `https://api.github.com/users/leewannacott?client_id=${process.env.REACT_APP_GITHUB_CLIENT_ID}&client_secret${process.env.REACT_APP_GITHUB_CLIENT_SECRET}`\n )\n .then((res) => {\n const user = res.data;\n this.setState({ user });\n });\n axios\n .get(\n `https://api.github.com/users/leewannacott/starred?client_id=${process.env.REACT_APP_GITHUB_CLIENT_ID}&client_secret${process.env.REACT_APP_GITHUB_CLIENT_SECRET}`\n )\n .then((res) => {\n const stars = res.data;\n this.setState({ stars });\n });\n }\n\n render() {\n return (\n
\n
\n
\n
\n \n \n \n\n
\n \n

\n {\"Following: \" + this.state.user.following + \" \"}\n
\n {\"Followers: \" + this.state.user.followers + \" \"}\n
\n {\"Repositories: \" + this.state.user.public_repos}\n
\n {\"Stars: \" + this.state.stars.length + \" \"}\n

\n
\n
\n \n
\n
\n
\n Statistics on public repositories pulled from the GitHub API v3:\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {this.state.repos.map((repo) => (\n \n \n \n \n \n \n \n \n \n \n \n ))}\n \n
Repository NameLanguageCreatedDescriptionForksOpen issuesWatchersStarsSize (MB)
\n {repo.name}\n {repo.language}\n {\" \"}\n {repo.created_at.split(\"-\")[0] +\n \"-\" +\n repo.created_at.split(\"-\")[1]}\n {repo.description} {repo.forks} {repo.open_issues} {repo.watchers} {repo.stargazers_count} {Math.round(repo.size / 1000)}
\n
\n
\n
\n );\n }\n}\n\nexport default App;\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport TestTable from \"./test-table\";\nimport { BrowserRouter, Route } from \"react-router-dom\";\n\nReactDOM.render(\n \n \n \n ,\n\n document.getElementById(\"display\")\n);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/main.b5316d8e.chunk.js.map b/static/js/main.b5316d8e.chunk.js.map deleted file mode 100644 index 72437b7..0000000 --- a/static/js/main.b5316d8e.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["test-table.js","index.js"],"names":["App","state","repos","loading","data","user","stars","script","document","createElement","src","async","body","appendChild","this","setState","axios","get","process","REACT_APP_GITHUB_CLIENT_ID","REACT_APP_GITHUB_CLIENT_SECRET","then","res","className","href","html_url","avatar_url","alt","following","followers","public_repos","length","style","textAlign","marginTop","map","repo","name","language","created_at","split","description","forks","open_issues","watchers","stargazers_count","size","Component","ReactDOM","render","exact","path","component","TestTable","getElementById"],"mappings":"6OAgIeA,EA5Hf,4MACEC,MAAQ,CACNC,MAAO,GACPC,SAAS,EACTC,MAAM,EACNC,KAAM,GACNC,MAAO,IANX,uDASE,WAAqB,IAAD,OACZC,EAASC,SAASC,cAAc,UACtCF,EAAOG,IAAM,oDACbH,EAAOI,OAAQ,EACfH,SAASI,KAAKC,YAAYN,GAE1BO,KAAKC,SAAS,CAAEZ,SAAS,IACzBa,IACGC,IADH,oEAEiEC,iJAAYC,2BAF7E,yBAEwHD,iJAAYE,iCAEjIC,MAAK,SAACC,GACL,IAAMpB,EAAQoB,EAAIlB,KAClB,EAAKW,SAAS,CAAEb,aAEpBc,IACGC,IADH,8DAE2DC,iJAAYC,2BAFvE,yBAEkHD,iJAAYE,iCAE3HC,MAAK,SAACC,GACL,IAAMjB,EAAOiB,EAAIlB,KACjB,EAAKW,SAAS,CAAEV,YAEpBW,IACGC,IADH,sEAEmEC,iJAAYC,2BAF/E,yBAE0HD,iJAAYE,iCAEnIC,MAAK,SAACC,GACL,IAAMhB,EAAQgB,EAAIlB,KAClB,EAAKW,SAAS,CAAET,eAtCxB,oBA0CE,WACE,OACE,qBAAKiB,UAAU,cAAf,SACE,sBAAKA,UAAU,YAAf,UACE,uBACA,sBAAKA,UAAU,UAAf,UACE,mBAAGC,KAAMV,KAAKb,MAAMI,KAAKoB,SAAUF,UAAU,aAA7C,SACE,qBACEb,IAAKI,KAAKb,MAAMI,KAAKqB,WACrBH,UAAU,aACVI,IAAI,oBAIR,qBAAKJ,UAAU,mBAAf,SACE,+BACE,oBAAGA,UAAU,mBAAb,UACG,cAAgBT,KAAKb,MAAMI,KAAKuB,UAAY,IAC7C,uBACC,cAAgBd,KAAKb,MAAMI,KAAKwB,UAAY,IAC7C,uBACC,iBAAmBf,KAAKb,MAAMI,KAAKyB,aACpC,uBACC,UAAYhB,KAAKb,MAAMK,MAAMyB,OAAS,WAI7C,qBACErB,IAAI,yFACJa,UAAU,aACVI,IAAI,mBAGR,uBACA,oBAAIK,MAAO,CAAEC,UAAW,OAAQC,UAAW,UAA3C,8EAGA,8BACE,wBAAOX,UAAU,+DAAjB,UACE,uBAAOA,UAAU,WAAjB,SACE,+BACE,iDACA,0CACA,oBAAIA,UAAU,gBAAd,qBACA,6CACA,oBAAIA,UAAU,gBAAd,mBACA,oBAAIA,UAAU,gBAAd,yBACA,oBAAIA,UAAU,gBAAd,sBACA,oBAAIA,UAAU,gBAAd,oBACA,oBAAIA,UAAU,cAAd,4BAGJ,uBAAOA,UAAU,cAAjB,SACGT,KAAKb,MAAMC,MAAMiC,KAAI,SAACC,GAAD,OACpB,+BACE,6BACE,mBAAGZ,KAAMY,EAAKX,SAAd,SAAyBW,EAAKC,SAEhC,mCAAMD,EAAKE,YACX,+BACG,IACAF,EAAKG,WAAWC,MAAM,KAAK,GAC1B,IACAJ,EAAKG,WAAWC,MAAM,KAAK,MAE/B,mCAAMJ,EAAKK,eACX,mCAAML,EAAKM,SACX,mCAAMN,EAAKO,eACX,mCAAMP,EAAKQ,YACX,mCAAMR,EAAKS,oBACX,mCAAkB,IAAZT,EAAKU,KAAc,6BAhH7C,GAAyBC,a,eCCzBC,IAASC,OACP,eAAC,IAAD,WACE,cAAC,IAAD,CAAOC,OAAK,EAACC,KAAK,IAAIC,UAAWC,IACjC,cAAC,EAAD,OAGF7C,SAAS8C,eAAe,c","file":"static/js/main.b5316d8e.chunk.js","sourcesContent":["import axios from \"axios\";\nimport React, { Component } from \"react\";\nimport \"./test-table.css\";\n\nexport class App extends Component {\n state = {\n repos: [],\n loading: false,\n data: false,\n user: [],\n stars: [],\n };\n\n componentDidMount() {\n const script = document.createElement(\"script\");\n script.src = \"http://localhost:3000/table-sort-js/table-sort.js\";\n script.async = true;\n document.body.appendChild(script);\n\n this.setState({ loading: true });\n axios\n .get(\n `https://api.github.com/users/leewannacott/repos?client_id=${process.env.REACT_APP_GITHUB_CLIENT_ID}&client_secret${process.env.REACT_APP_GITHUB_CLIENT_SECRET}`\n )\n .then((res) => {\n const repos = res.data;\n this.setState({ repos });\n });\n axios\n .get(\n `https://api.github.com/users/leewannacott?client_id=${process.env.REACT_APP_GITHUB_CLIENT_ID}&client_secret${process.env.REACT_APP_GITHUB_CLIENT_SECRET}`\n )\n .then((res) => {\n const user = res.data;\n this.setState({ user });\n });\n axios\n .get(\n `https://api.github.com/users/leewannacott/starred?client_id=${process.env.REACT_APP_GITHUB_CLIENT_ID}&client_secret${process.env.REACT_APP_GITHUB_CLIENT_SECRET}`\n )\n .then((res) => {\n const stars = res.data;\n this.setState({ stars });\n });\n }\n\n render() {\n return (\n
\n
\n
\n
\n \n \n \n\n
\n \n

\n {\"Following: \" + this.state.user.following + \" \"}\n
\n {\"Followers: \" + this.state.user.followers + \" \"}\n
\n {\"Repositories: \" + this.state.user.public_repos}\n
\n {\"Stars: \" + this.state.stars.length + \" \"}\n

\n
\n
\n \n
\n
\n
\n Statistics on public repositories pulled from the GitHub API v3:\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {this.state.repos.map((repo) => (\n \n \n \n \n \n \n \n \n \n \n \n ))}\n \n
Repository NameLanguageCreatedDescriptionForksOpen issuesWatchersSktarsSize (MB)
\n {repo.name}\n {repo.language}\n {\" \"}\n {repo.created_at.split(\"-\")[0] +\n \"-\" +\n repo.created_at.split(\"-\")[1]}\n {repo.description} {repo.forks} {repo.open_issues} {repo.watchers} {repo.stargazers_count} {repo.size * 1000 + \"B\"}
\n
\n
\n
\n );\n }\n}\n\nexport default App;\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport TestTable from \"./test-table\";\nimport { BrowserRouter, Route } from \"react-router-dom\";\n\nReactDOM.render(\n \n \n \n ,\n\n document.getElementById(\"display\")\n);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/table-sort.js b/table-sort.js index fecf815..274eebd 100644 --- a/table-sort.js +++ b/table-sort.js @@ -59,64 +59,10 @@ function tableSortJs(testingTableSortJS = false, domDocumentWindow = document) { } } - function addInferredClass(th, columnLength, currentCount, classToAdd) { - const threshold = columnLength / 2; - if (currentCount >= threshold) { - th.classList.add(classToAdd); - } - } - - function inferSortClasses(tableRows, tableHeadHeaders) { - for (let [columnIndex, th] of tableHeadHeaders.entries()) { - const regexMinutesAndSeconds = /^(\d+h)?\s?(\d+m)?\s?(\d+s)?$/i; - const regexFileSizeSort = /^([.0-9]+)\s?(B|KB|KiB|MB|MiB|GB|GiB|TB|TiB)/i; - let runtimeSortCounter = 0, - fileSizeSortCounter = 0; - - let tableColumnLength = th.parentElement.childElementCount; - for (let tr of tableRows) { - let runtimeSortMatch, fileSizeSortMatch; - const tableColumn = tr.querySelectorAll("td").item(columnIndex); - if (tableColumn.innerText) { - runtimeSortMatch = tableColumn.innerText.match( - regexMinutesAndSeconds - ); - fileSizeSortMatch = tableColumn.innerText.match(regexFileSizeSort); - } - if (runtimeSortMatch) { - runtimeSortCounter++; - } - if (fileSizeSortMatch) { - fileSizeSortCounter++; - } - } - // TODO: refactor this into one function called addInferredClasses that loops over sort classes and counters - addInferredClass( - th, - tableColumnLength, - runtimeSortCounter, - "runtime-sort" - ); - addInferredClass( - th, - tableColumnLength, - fileSizeSortCounter, - "file-size-sort" - ); - } - } - function makeTableSortable(sortableTable) { const tableBody = getTableBody(sortableTable); const tableHead = sortableTable.querySelector("thead"); const tableHeadHeaders = tableHead.querySelectorAll("th"); - const tableRows = tableBody.querySelectorAll("tr"); - - const isNoSortClassInference = - sortableTable.classList.contains("no-class-infer"); - if (!isNoSortClassInference) { - inferSortClasses(tableRows, tableHeadHeaders); - } for (let [columnIndex, th] of tableHeadHeaders.entries()) { if (!th.classList.contains("disable-sort")) { @@ -178,26 +124,24 @@ function tableSortJs(testingTableSortJS = false, domDocumentWindow = document) { function sortByRuntime(tableRows, columnData) { for (let [i, tr] of tableRows.entries()) { - const regexMinutesAndSeconds = /^(\d+h)?\s?(\d+m)?\s?(\d+s)?$/i; + const regexMinutesAndSeconds = /^(\d+m)\s?(\d+s)$/i; let columnOfTd = tr .querySelectorAll("td") .item(columnIndex).textContent; let match = columnOfTd.match(regexMinutesAndSeconds); - let [minutesInSeconds, hours, seconds, timeinSeconds] = [0, 0, 0, 0]; + let minutesInSeconds, + seconds, + timeinSeconds = [0, 0, 0]; if (match) { - const regexHours = match[1]; - if (regexHours) { - hours = Number(regexHours.replace("h", "")) * 60 * 60; - } - const regexMinutes = match[2]; + const regexMinutes = match[1]; if (regexMinutes) { minutesInSeconds = Number(regexMinutes.replace("m", "")) * 60; } - const regexSeconds = match[3]; + const regexSeconds = match[2]; if (regexSeconds) { seconds = Number(regexSeconds.replace("s", "")); } - timeinSeconds = hours + minutesInSeconds + seconds; + timeinSeconds = minutesInSeconds + seconds; } columnData.push(`${timeinSeconds}#${i}`); columnIndexAndTableRow[columnData[i]] = tr.innerHTML;