diff --git a/assets/css/dashboard.css b/assets/css/dashboard.css index 739d0d9..b9981bd 100644 --- a/assets/css/dashboard.css +++ b/assets/css/dashboard.css @@ -4642,6 +4642,32 @@ table td:nth-child(4) { border-top: 1px solid var(--terminal-green); } +/* ===== DUPLICATE DETECTION LIST ===== */ + +.duplicate-list { + margin: 0; + padding-left: 1.5rem; + color: var(--terminal-green); +} + +.duplicate-list li { + margin-bottom: 0.5rem; +} + +.duplicate-list a { + color: var(--terminal-green); +} + +.duplicate-meta { + color: var(--terminal-amber); +} + +.duplicate-hint { + margin-top: 0.5rem; + font-size: 0.85rem; + color: var(--terminal-green-dim); +} + /* ===== INLINE ALERT BOXES ===== */ .inline-error { diff --git a/assets/js/dashboard.js b/assets/js/dashboard.js index 1ad290e..a7acea3 100644 --- a/assets/js/dashboard.js +++ b/assets/js/dashboard.js @@ -1819,6 +1819,30 @@ function hideLoadingOverlay(element) { } } +// ======================================== +// AUTO-REFRESH (lt.autoRefresh integration) +// ======================================== + +/** + * Reload the dashboard, but skip if a modal is open or user is typing. + * Registered with lt.autoRefresh so it runs every 5 minutes automatically. + */ +function dashboardAutoRefresh() { + // Don't interrupt the user if a modal is open + if (document.querySelector('.lt-modal-overlay[aria-hidden="false"]')) return; + // Don't interrupt if focus is in a text input + const tag = document.activeElement?.tagName; + if (tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT') return; + window.location.reload(); +} + +document.addEventListener('DOMContentLoaded', function() { + // Only run auto-refresh on the dashboard, not on ticket pages + if (!window.location.pathname.includes('/ticket/')) { + lt.autoRefresh.start(dashboardAutoRefresh, 5 * 60 * 1000); + } +}); + // ======================================== // RELATIVE TIMESTAMPS // ======================================== diff --git a/views/CreateTicketView.php b/views/CreateTicketView.php index d0cf543..3387256 100644 --- a/views/CreateTicketView.php +++ b/views/CreateTicketView.php @@ -295,18 +295,18 @@ $nonce = SecurityHeadersMiddleware::getNonce(); const listDiv = document.getElementById('duplicatesList'); if (data.success && data.duplicates && data.duplicates.length > 0) { - let html = '