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');