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