From 92d52f34ada6b13a4b695c7785f8d9e5abf6094f Mon Sep 17 00:00:00 2001 From: Jukka Lampikoski Date: Tue, 10 Mar 2026 11:37:31 +0200 Subject: [PATCH] Add ticket sorting by status priority, updated, or created date MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Default sort: status priority (käsittelyssä → uusi → odottaa → suljettu) then by updated date within same status. Co-Authored-By: Claude Opus 4.6 --- index.html | 7 ++++++- script.js | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index 7f112ec..22dbf54 100644 --- a/index.html +++ b/index.html @@ -263,7 +263,12 @@ - + + diff --git a/script.js b/script.js index 8dff590..ea2092f 100644 --- a/script.js +++ b/script.js @@ -1083,6 +1083,23 @@ function renderTickets() { ); } + // Sorttaus: tila-prioriteetti + päivämäärä + const ticketSortField = document.getElementById('ticket-sort')?.value || 'status'; + const statusPriority = { kasittelyssa: 0, uusi: 1, odottaa: 2, suljettu: 3 }; + filtered.sort((a, b) => { + if (ticketSortField === 'status') { + const pa = statusPriority[a.status] ?? 9; + const pb = statusPriority[b.status] ?? 9; + if (pa !== pb) return pa - pb; + return (b.updated || '').localeCompare(a.updated || ''); + } else if (ticketSortField === 'updated') { + return (b.updated || '').localeCompare(a.updated || ''); + } else if (ticketSortField === 'created') { + return (b.created || '').localeCompare(a.created || ''); + } + return 0; + }); + const ttbody = document.getElementById('tickets-tbody'); const noTickets = document.getElementById('no-tickets'); if (filtered.length === 0) { @@ -1137,6 +1154,7 @@ document.getElementById('ticket-search-input').addEventListener('input', () => r document.getElementById('ticket-status-filter').addEventListener('change', () => renderTickets()); document.getElementById('ticket-type-filter').addEventListener('change', () => renderTickets()); document.getElementById('ticket-tag-filter').addEventListener('input', () => renderTickets()); +document.getElementById('ticket-sort').addEventListener('change', () => renderTickets()); document.getElementById('ticket-show-closed').addEventListener('change', () => renderTickets()); document.getElementById('bulk-select-all').addEventListener('change', function() { const checkboxes = document.querySelectorAll('.ticket-checkbox');