summaryrefslogtreecommitdiff
path: root/public/sort.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/sort.js')
-rw-r--r--public/sort.js82
1 files changed, 0 insertions, 82 deletions
diff --git a/public/sort.js b/public/sort.js
deleted file mode 100644
index ed243c2..0000000
--- a/public/sort.js
+++ /dev/null
@@ -1,82 +0,0 @@
-"use strict"
-
-function sort_table_column(table, column) {
- const minute = 60000
- const hour = 60 * minute
- const day = 24 * hour
- const week = 7 * day
-
- function is_date(s) {
- if (s.match(/^\d{4}-\d{2}-\d{2}$/))
- return true
- if (s.match(/^\d+ (minutes?|hours?|days|weeks) ago$/))
- return true
- if (s.match(/^(Yesterday|now)$/))
- return true
- return false
- }
-
- function parse_date(s) {
- if (s.match(/^\d{4}-\d{2}-\d{2}$/))
- return new Date(s).valueOf()
- if (s === "now")
- return Date.now()
- if (s === "Yesterday")
- return Date.now() - day
- let [ _, value, unit ] = s.match(/^(\d+) (minutes?|hours?|days|weeks) ago$/)
- switch (unit) {
- default:
- unit = 0
- break
- case "minute":
- case "minutes":
- unit = minute
- break
- case "hours":
- case "hours":
- unit = hour
- break
- case "days":
- unit = day
- break
- case "weeks":
- unit = week
- break
- }
- return Date.now() - Number(value) * unit
- }
-
- let tbody = table.querySelector("tbody")
- let rows = Array.from(tbody.querySelectorAll("tr"))
- rows.sort((row_a, row_b) => {
- let cell_a = row_a.querySelectorAll("td")[column].textContent
- let cell_b = row_b.querySelectorAll("td")[column].textContent
- if (is_date(cell_a) && is_date(cell_b)) {
- let age_a = parse_date(cell_a)
- let age_b = parse_date(cell_b)
- if (age_a > age_b) return -1
- if (age_a < age_b) return 1
- return 0
- } else if (cell_a.match(/^\d+$/) && cell_b.match(/^\d+$/)) {
- cell_a = Number(cell_a)
- cell_b = Number(cell_b)
- if (cell_a > cell_b) return -1
- if (cell_a < cell_b) return 1
- return 0
- } else {
- if (cell_a > cell_b) return 1
- if (cell_a < cell_b) return -1
- return 0
- }
- })
- rows.forEach((row) => tbody.appendChild(row))
-}
-
-document.querySelectorAll("table.sort").forEach((table) => {
- table.querySelectorAll("th").forEach((th, column) => {
- if (th.textContent !== "") {
- th.addEventListener("click", (evt) => sort_table_column(table, column))
- th.style.cursor = "pointer"
- }
- })
-})