From c031fec27ef2b0b90bc0be1b0a1f6e45d424a6c7 Mon Sep 17 00:00:00 2001 From: Claude Dev Date: Mon, 16 Mar 2026 14:36:17 +0100 Subject: [PATCH] Fix Tutorial-Hinweis im Chat: sessionStorage statt localStorage, Close-Button - Hinweis erscheint beim ersten Chat-Oeffnen jeder Browser-Session - X-Button zum Wegklicken (setzt sessionStorage, nicht localStorage) - Klick auf Hinweis-Text startet Tutorial und schliesst Chat - Naechste Session zeigt den Hinweis erneut an Co-Authored-By: Claude Opus 4.6 (1M context) --- src/static/css/style.css | 25 +++++++++++++++++++++++++ src/static/dashboard.html | 4 ++-- src/static/js/chat.js | 24 ++++++++++++++++++++---- 3 files changed, 47 insertions(+), 6 deletions(-) diff --git a/src/static/css/style.css b/src/static/css/style.css index dc2e9ef..8c56442 100644 --- a/src/static/css/style.css +++ b/src/static/css/style.css @@ -5203,3 +5203,28 @@ a.map-popup-article:hover { 0%, 100% { outline-color: var(--accent); } 50% { outline-color: rgba(150, 121, 26, 0.4); } } + +/* Chat Tutorial-Hint Layout */ +.chat-tutorial-hint { + display: flex; + align-items: flex-start; + gap: var(--sp-md); +} +.chat-tutorial-hint-text { + flex: 1; + cursor: pointer; +} +.chat-tutorial-hint-close { + flex-shrink: 0; + background: none; + border: none; + color: var(--text-secondary); + font-size: 18px; + cursor: pointer; + padding: 0 2px; + line-height: 1; + transition: color 0.15s; +} +.chat-tutorial-hint-close:hover { + color: var(--text-primary); +} diff --git a/src/static/dashboard.html b/src/static/dashboard.html index 6f37e4e..05266f5 100644 --- a/src/static/dashboard.html +++ b/src/static/dashboard.html @@ -17,7 +17,7 @@ - + @@ -765,7 +765,7 @@ - + diff --git a/src/static/js/chat.js b/src/static/js/chat.js index 041075b..73cf1f9 100644 --- a/src/static/js/chat.js +++ b/src/static/js/chat.js @@ -64,8 +64,8 @@ const Chat = { if (!this._hasGreeted) { this._hasGreeted = true; this.addMessage('assistant', 'Hallo! Ich bin der AegisSight Assistent und helfe dir bei der Bedienung des Monitors.\n\nFrag mich zum Beispiel:\n\n"Wie erstelle ich eine neue Lage?"\n"Was bedeuten die Faktencheck-Status?"\n"Wie funktioniert der automatische Refresh?"\n"Wie nutze ich die Kartenansicht?"\n"Wie exportiere ich einen Lagebericht?"\n\nFür alle weiteren Anliegen erreichst du den Support unter support@aegis-sight.de.'); - // Tutorial-Hinweis beim ersten Oeffnen - if (typeof Tutorial !== "undefined" && !Tutorial._hasSeen()) { + // Tutorial-Hinweis beim ersten Chat-Oeffnen der Session + if (typeof Tutorial !== 'undefined' && !sessionStorage.getItem('osint_tutorial_hint_dismissed')) { this._showTutorialHint(); } } @@ -293,11 +293,27 @@ const Chat = { if (!container) return; var hint = document.createElement('div'); hint.className = 'chat-tutorial-hint'; - hint.innerHTML = 'Tipp: Kennen Sie schon den interaktiven Rundgang? Er zeigt Ihnen Schritt für Schritt alle Funktionen des Monitors. Klicken Sie hier, um den Rundgang zu starten.'; - hint.addEventListener('click', function() { + hint.id = 'chat-tutorial-hint'; + var textDiv = document.createElement('div'); + textDiv.className = 'chat-tutorial-hint-text'; + textDiv.innerHTML = 'Tipp: Kennen Sie schon den interaktiven Rundgang? Er zeigt Ihnen Schritt f\u00fcr Schritt alle Funktionen des Monitors. Klicken Sie hier, um ihn zu starten.'; + textDiv.style.cursor = 'pointer'; + textDiv.addEventListener('click', function() { Chat.close(); + sessionStorage.setItem('osint_tutorial_hint_dismissed', '1'); if (typeof Tutorial !== 'undefined') Tutorial.start(); }); + var closeBtn = document.createElement('button'); + closeBtn.className = 'chat-tutorial-hint-close'; + closeBtn.title = 'Schlie\u00dfen'; + closeBtn.innerHTML = '×'; + closeBtn.addEventListener('click', function(e) { + e.stopPropagation(); + hint.remove(); + sessionStorage.setItem('osint_tutorial_hint_dismissed', '1'); + }); + hint.appendChild(textDiv); + hint.appendChild(closeBtn); container.appendChild(hint); },