Consolidate VG-Observe information architecture and workspace navigation

Dieser Commit ist enthalten in:
2026-06-10 19:48:28 +02:00
Ursprung a3ca8019a1
Commit b89addf362
10 geänderte Dateien mit 169 neuen und 115 gelöschten Zeilen
@@ -3,19 +3,18 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title>VG-Observe Analyse-Dashboard</title> <title>VG-Observe Analyse-Vorbereitung</title>
<link rel="stylesheet" href="analysis-dashboard.css"> <link rel="stylesheet" href="analysis-dashboard.css">
</head> </head>
<body> <body>
<main class="analysis-dashboard"> <main class="analysis-dashboard">
<header class="analysis-header"> <header class="analysis-header">
<a class="back-link" href="../dashboard/dashboard.html">Zurück zum Dashboard</a> <a class="back-link" href="../dashboard/dashboard.html">Zurück zum Observe-Dashboard</a>
<h1>Analyse-Dashboard</h1> <h1>Analyse-Vorbereitung</h1>
<p> <p>
Diese Ansicht bereitet technische Prüfungen zwischen Diese Ansicht ist noch keine Analyse-Engine. Sie zeigt vorhandene
Consent-Zuständen, Vendorlisten und beobachteten Requests vor. Datenbestände und vorbereitet strukturierte Prüffelder für spätere
Aktuell werden nur vorhandene Datenbestände und vorbereitete Auswertung, ohne Bewertung oder Zuordnung zu berechnen.
Analysebereiche angezeigt.
</p> </p>
<div id="analysis-status" class="analysis-status" aria-live="polite"> <div id="analysis-status" class="analysis-status" aria-live="polite">
Lade Datenbestände Lade Datenbestände
@@ -34,11 +33,11 @@
<dd id="summary-observed-requests">-</dd> <dd id="summary-observed-requests">-</dd>
</div> </div>
<div> <div>
<dt>Lokal gespeicherte Vendorlisten</dt> <dt>Lokal gespeicherte GVL-Referenzen</dt>
<dd id="summary-gvl-snapshots">-</dd> <dd id="summary-gvl-snapshots">-</dd>
</div> </div>
<div> <div>
<dt>Lokal aktuelle Vendorlisten-Version</dt> <dt>Lokal aktuelle GVL-Referenzversion</dt>
<dd id="summary-current-gvl-version">-</dd> <dd id="summary-current-gvl-version">-</dd>
</div> </div>
<div> <div>
@@ -49,23 +48,23 @@
</section> </section>
<section class="panel" aria-labelledby="areas-title"> <section class="panel" aria-labelledby="areas-title">
<h2 id="areas-title">Vorbereitete Analysebereiche</h2> <h2 id="areas-title">Vorbereitete Prüffelder</h2>
<div class="area-grid"> <div class="area-grid">
<article> <article>
<h3>Consent ↔ Vendorliste</h3> <h3>Consent ↔ Vendorliste</h3>
<p>Analyse noch nicht ausgeführt.</p> <p>Vorbereitung vorhanden, keine Analyse ausgeführt.</p>
</article> </article>
<article> <article>
<h3>Consent ↔ beobachtete Requests</h3> <h3>Consent ↔ beobachtete Requests</h3>
<p>Analyse noch nicht ausgeführt.</p> <p>Vorbereitung vorhanden, keine Analyse ausgeführt.</p>
</article> </article>
<article> <article>
<h3>Request-Hosts ↔ bekannte Vendoren</h3> <h3>Request-Hosts ↔ bekannte Vendoren</h3>
<p>Keine erkennbare Zuordnung berechnet. Analyse noch nicht ausgeführt.</p> <p>Keine Zuordnung berechnet. Vorbereitung vorhanden, keine Analyse ausgeführt.</p>
</article> </article>
<article> <article>
<h3>Potenziell erklärungsbedürftige technische Diskrepanzen</h3> <h3>Potenziell erklärungsbedürftige technische Diskrepanzen</h3>
<p>Keine Bewertung vorgenommen. Analyse noch nicht ausgeführt.</p> <p>Keine Bewertung vorgenommen. Vorbereitung vorhanden, keine Analyse ausgeführt.</p>
</article> </article>
</div> </div>
</section> </section>
+7 -7
Datei anzeigen
@@ -3,23 +3,23 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title>VG-Observe Consent-Explorer</title> <title>VG-Observe Consent untersuchen</title>
<link rel="stylesheet" href="consent-explorer.css"> <link rel="stylesheet" href="consent-explorer.css">
</head> </head>
<body> <body>
<main class="explorer"> <main class="explorer">
<header class="explorer-header"> <header class="explorer-header">
<a class="back-link" href="../dashboard/dashboard.html">Zurück zum Dashboard</a> <a class="back-link" href="../dashboard/dashboard.html">Zurück zum Observe-Dashboard</a>
<h1>Dokumentierte Consent-Zustände</h1> <h1>Consent untersuchen</h1>
<p class="section-help"> <p class="section-help">
Diese Ansicht zeigt gespeicherte Consent-Zustände aus der lokalen Consent ist das zentrale Untersuchungsobjekt von VG-Observe. Diese
Beobachtungsdatenbank. Jeder Eintrag ist ein dokumentierter Zustand, Ansicht zeigt lokal beobachtete Consent-Zustände und ihre technischen
den VG-Observe während der Browser-Laufzeit beobachtet hat. Belege, ohne daraus eine Bewertung abzuleiten.
</p> </p>
</header> </header>
<section class="panel" aria-labelledby="documented-consent-title"> <section class="panel" aria-labelledby="documented-consent-title">
<h2 id="documented-consent-title">Historische Consent-Zustände</h2> <h2 id="documented-consent-title">Lokal beobachtete Consent-Zustände</h2>
<p id="documented-consent-empty" class="empty-state" hidden> <p id="documented-consent-empty" class="empty-state" hidden>
Keine dokumentierten Consent-Zustände vorhanden. Keine dokumentierten Consent-Zustände vorhanden.
</p> </p>
+24 -8
Datei anzeigen
@@ -127,14 +127,14 @@ th:last-child {
text-align: right; text-align: right;
} }
.explorer-actions { .workspace-actions {
display: flex; display: grid;
flex-wrap: wrap; grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 10px; gap: 10px;
margin-top: 14px; margin-top: 14px;
} }
.button-link, .workspace-link,
button { button {
padding: 8px 10px; padding: 8px 10px;
border: 1px solid #475569; border: 1px solid #475569;
@@ -145,12 +145,27 @@ button {
background: #1f2937; background: #1f2937;
} }
.button-link { .workspace-link {
display: inline-flex; display: grid;
align-items: center; gap: 5px;
text-decoration: none; text-decoration: none;
} }
.workspace-link strong {
font-size: 13px;
}
.workspace-link span {
font-size: 12px;
line-height: 1.35;
color: #cbd5e1;
}
.workspace-placeholder {
color: #cbd5e1;
background: #172033;
}
button:disabled { button:disabled {
cursor: default; cursor: default;
opacity: 0.65; opacity: 0.65;
@@ -165,7 +180,8 @@ button:disabled {
grid-template-columns: 1fr; grid-template-columns: 1fr;
} }
.explorer-actions { .workspace-actions {
display: grid; display: grid;
grid-template-columns: 1fr;
} }
} }
+51 -34
Datei anzeigen
@@ -1,26 +1,30 @@
<!doctype html> <!doctype html>
<html lang="en"> <html lang="de">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title>VendorGet-IV Evidence Dashboard</title> <title>VG-Observe Dashboard</title>
<link rel="stylesheet" href="dashboard.css"> <link rel="stylesheet" href="dashboard.css">
</head> </head>
<body> <body>
<main class="dashboard"> <main class="dashboard">
<header class="dashboard-header"> <header class="dashboard-header">
<h1>VendorGet-IV Evidence Dashboard</h1> <h1>VG-Observe Dashboard</h1>
<div id="dashboard-status" class="dashboard-status" aria-live="polite"> <div id="dashboard-status" class="dashboard-status" aria-live="polite">
Loading evidence status Lade lokalen Beobachtungsstatus
</div> </div>
<p class="dashboard-notice"> <p class="dashboard-notice">
Übersicht und Einstieg für VG-Observe. Detailansichten liegen in Was wurde lokal beobachtet? Diese Übersicht zeigt den Workspace-
eigenen Explorern. Bestand und führt zu den fachlichen Arbeitsansichten.
</p> </p>
</header> </header>
<section class="panel" aria-labelledby="stores-title"> <section class="panel" aria-labelledby="stores-title">
<h2 id="stores-title">Evidence Stores</h2> <h2 id="stores-title">Lokaler Evidence-Bestand</h2>
<p class="section-help">
Bestandsübersicht der lokal gespeicherten Beobachtungen und
Referenzdaten. Die Zahlen sind Inventar, keine Bewertung.
</p>
<table> <table>
<thead> <thead>
<tr> <tr>
@@ -53,13 +57,47 @@
</table> </table>
</section> </section>
<section class="panel" aria-labelledby="official-gvl-title"> <section class="panel" aria-labelledby="workspaces-title">
<h2 id="official-gvl-title">Offizielle Vendorliste</h2> <h2 id="workspaces-title">Arbeitsbereiche</h2>
<p class="section-help"> <p class="section-help">
Die aktuell offiziell abgerufene IAB-Europe-Vendorliste ist die Oben verstehen, in der Mitte arbeiten, unten beweisen: Die
Version, die VG-Observe direkt von der offiziellen IAB-Europe-Quelle Detailansichten trennen Untersuchung, technische Beobachtung,
geladen hat. Sie ist getrennt von der Vendorliste, die in einem Referenz/Vault und Analyse-Vorbereitung.
konkreten Consent-Kontext gemeldet wurde. </p>
<div class="workspace-actions">
<a class="workspace-link" href="../consent-explorer/consent-explorer.html">
<strong>Consent untersuchen</strong>
<span>Zentrale Ansicht für dokumentierte Consent-Zustände.</span>
</a>
<a class="workspace-link" href="../request-explorer/request-explorer.html">
<strong>Requests prüfen</strong>
<span>Technisch beobachtete Browser-Requests ohne Bewertung.</span>
</a>
<a class="workspace-link" href="../gvl-explorer/gvl-explorer.html">
<strong>GVL-Referenz/Vault</strong>
<span>Vendorlisten, Revision-Evidence und Vault-Transport.</span>
</a>
<a class="workspace-link" href="../analysis-dashboard/analysis-dashboard.html">
<strong>Analyse-Vorbereitung</strong>
<span>Datenbestände und vorbereitete Prüffelder, keine Engine.</span>
</a>
<article class="workspace-link workspace-placeholder">
<strong>Datenpflege</strong>
<span>
Gezielte Verwaltung lokaler Datenbestände. Löschen,
Wiederherstellen und Exportieren erfolgen künftig segmentbezogen.
Vorgesehene Segmente sind GVL-Referenzdaten der Browser-DB,
Consent-Daten, Analyse-Daten und weitere künftige Datenbereiche.
</span>
</article>
</div>
</section>
<section class="panel" aria-labelledby="official-gvl-title">
<h2 id="official-gvl-title">GVL-Referenzstatus</h2>
<p class="section-help">
Die GVL ist Referenzbasis für spätere Rekonstruktion. Dieser Status
zeigt nur den lokalen Referenzbestand und letzte Update-Hinweise.
</p> </p>
<dl class="gvl-status-grid"> <dl class="gvl-status-grid">
<div> <div>
@@ -89,27 +127,6 @@
</dl> </dl>
</section> </section>
<section class="panel" aria-labelledby="explorers-title">
<h2 id="explorers-title">Explorer</h2>
<p class="section-help">
Historische Consent-Zustände und technische Belege werden in einer
eigenen Ansicht geöffnet.
</p>
<div class="explorer-actions">
<a class="button-link" href="../consent-explorer/consent-explorer.html">
Consent-Explorer öffnen
</a>
<a class="button-link" href="../gvl-explorer/gvl-explorer.html">
GVL-Explorer öffnen
</a>
<a class="button-link" href="../request-explorer/request-explorer.html">
Request-Explorer öffnen
</a>
<a class="button-link" href="../analysis-dashboard/analysis-dashboard.html">
Request-/Empfänger-Analyse öffnen
</a>
</div>
</section>
</main> </main>
<script src="dashboard.js"></script> <script src="dashboard.js"></script>
+2 -2
Datei anzeigen
@@ -40,9 +40,9 @@ async function renderEvidenceStatus() {
} }
renderStoreCounts(status.storeCounts ?? {}); renderStoreCounts(status.storeCounts ?? {});
renderStatusMessage("Evidence status loaded"); renderStatusMessage("Lokaler Beobachtungsstatus geladen");
} catch (error) { } catch (error) {
renderStatusMessage("Evidence status could not be loaded"); renderStatusMessage("Lokaler Beobachtungsstatus konnte nicht geladen werden");
console.warn("VendorGet-IV dashboard status failed", error); console.warn("VendorGet-IV dashboard status failed", error);
} }
} }
+17 -17
Datei anzeigen
@@ -3,32 +3,32 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title>VG-Observe GVL-Explorer</title> <title>VG-Observe GVL-Referenz/Vault</title>
<link rel="stylesheet" href="gvl-explorer.css"> <link rel="stylesheet" href="gvl-explorer.css">
</head> </head>
<body> <body>
<main class="explorer"> <main class="explorer">
<header class="explorer-header"> <header class="explorer-header">
<a class="back-link" href="../dashboard/dashboard.html">Zurück zum Dashboard</a> <a class="back-link" href="../dashboard/dashboard.html">Zurück zum Observe-Dashboard</a>
<h1>GVL-Explorer</h1> <h1>GVL-Referenz/Vault</h1>
<p class="section-help"> <p class="section-help">
Diese Ansicht zeigt lokal gespeicherte offizielle Die GVL ist Referenzbasis und Evidence-Quelle für reproduzierbare
IAB-Europe-Vendorlisten. Sie dient dazu, historische Rekonstruktion. Sie ist nicht das untersuchte Consent-Ereignis
Vendorlisten-Versionen nachvollziehbar zu machen. selbst; Import, Export und Verifikation sichern den Referenzbestand.
</p> </p>
</header> </header>
<section class="panel" aria-labelledby="snapshot-list-title"> <section class="panel" aria-labelledby="snapshot-list-title">
<h2 id="snapshot-list-title">Gespeicherte Vendorlisten</h2> <h2 id="snapshot-list-title">GVL-Revisionen im Workspace</h2>
<div class="fetch-actions"> <div class="fetch-actions">
<button id="gvl-fetch-official-button" type="button"> <button id="gvl-fetch-official-button" type="button">
GVL aus Web laden GVL-Referenz aus Web laden
</button> </button>
<button id="gvl-revision-evidence-export-button" type="button"> <button id="gvl-revision-evidence-export-button" type="button">
Ausgewählte GVL-Revision exportieren Ausgewählte Revision in den Vault exportieren
</button> </button>
<label class="file-action" for="gvl-revision-evidence-verify-input"> <label class="file-action" for="gvl-revision-evidence-verify-input">
GVL-Revision-Export verifizieren Vault-Paket verifizieren
</label> </label>
<input <input
id="gvl-revision-evidence-verify-input" id="gvl-revision-evidence-verify-input"
@@ -37,7 +37,7 @@
accept="application/json,.json" accept="application/json,.json"
> >
<label class="file-action" for="gvl-revision-evidence-import-input"> <label class="file-action" for="gvl-revision-evidence-import-input">
GVL-Revision-Evidence importieren Revision aus Vault importieren
</label> </label>
<input <input
id="gvl-revision-evidence-import-input" id="gvl-revision-evidence-import-input"
@@ -55,7 +55,7 @@
aria-live="polite" aria-live="polite"
></div> ></div>
<p id="gvl-snapshot-empty" class="empty-state" hidden> <p id="gvl-snapshot-empty" class="empty-state" hidden>
Keine gespeicherten offiziellen Vendorlisten vorhanden. Keine gespeicherten GVL-Referenzrevisionen vorhanden.
</p> </p>
<div id="gvl-snapshot-content" hidden> <div id="gvl-snapshot-content" hidden>
<div class="snapshot-list-wrap"> <div class="snapshot-list-wrap">
@@ -76,10 +76,10 @@
</div> </div>
<section class="snapshot-summary" aria-labelledby="snapshot-summary-title"> <section class="snapshot-summary" aria-labelledby="snapshot-summary-title">
<h2 id="snapshot-summary-title">Ausgewählte Vendorliste</h2> <h2 id="snapshot-summary-title">Ausgewählte GVL-Revision</h2>
<div class="rebuild-actions"> <div class="rebuild-actions">
<button id="gvl-rebuild-normalized-button" type="button" disabled> <button id="gvl-rebuild-normalized-button" type="button" disabled>
Lokale GVL-Daten neu aufbauen (Reparatur) Lokale Referenzdaten neu aufbauen (Reparatur)
</button> </button>
<span <span
id="gvl-rebuild-normalized-status" id="gvl-rebuild-normalized-status"
@@ -92,7 +92,7 @@
<details id="gvl-vendor-overview-details" class="vendor-overview"> <details id="gvl-vendor-overview-details" class="vendor-overview">
<summary id="gvl-vendor-overview-summary"> <summary id="gvl-vendor-overview-summary">
Vendoren-Übersicht anzeigen Vendoren-Referenz anzeigen
</summary> </summary>
<p id="gvl-vendor-overview-empty" class="empty-state" hidden> <p id="gvl-vendor-overview-empty" class="empty-state" hidden>
Keine normalisierten Vendoren für diese Vendorliste vorhanden. Keine normalisierten Vendoren für diese Vendorliste vorhanden.
@@ -123,7 +123,7 @@
</section> </section>
<section class="panel" aria-labelledby="vendor-detail-title"> <section class="panel" aria-labelledby="vendor-detail-title">
<h2 id="vendor-detail-title">Lokaler Vendor-Nachweis</h2> <h2 id="vendor-detail-title">Lokaler Vendor-Referenznachweis</h2>
<form id="gvl-vendor-detail-form" class="vendor-detail-form"> <form id="gvl-vendor-detail-form" class="vendor-detail-form">
<label for="gvl-vendor-id-input">Vendor-ID</label> <label for="gvl-vendor-id-input">Vendor-ID</label>
<input <input
@@ -135,7 +135,7 @@
placeholder="977" placeholder="977"
> >
<button id="gvl-vendor-detail-button" type="submit"> <button id="gvl-vendor-detail-button" type="submit">
Vendor anzeigen Vendor-Referenz anzeigen
</button> </button>
</form> </form>
<div <div
+18 -18
Datei anzeigen
@@ -112,7 +112,7 @@ async function fetchOfficialGvl() {
await renderGvlSnapshots(); await renderGvlSnapshots();
await renderSelectedGvlSnapshotSummary(); await renderSelectedGvlSnapshotSummary();
} catch (error) { } catch (error) {
renderFetchStatus("GVL aus Web konnte nicht geladen werden."); renderFetchStatus("GVL-Referenz aus Web konnte nicht geladen werden.");
console.warn("VG-Observe manual official GVL fetch failed", error); console.warn("VG-Observe manual official GVL fetch failed", error);
} finally { } finally {
gvlFetchOfficialButton.disabled = false; gvlFetchOfficialButton.disabled = false;
@@ -134,20 +134,20 @@ function buildGvlEvidenceConflictMessage(result) {
function buildGvlSyncStatusMessage(result) { function buildGvlSyncStatusMessage(result) {
if (result?.syncStatus === "new_gvl_revision_stored_and_normalized") { if (result?.syncStatus === "new_gvl_revision_stored_and_normalized") {
return "GVL aus Web geladen, neue Revision gespeichert und normalisiert."; return "GVL-Referenz aus Web geladen, neue Revision gespeichert und normalisiert.";
} }
if (result?.syncStatus === "known_gvl_rebuilt_from_local_evidence") { if (result?.syncStatus === "known_gvl_rebuilt_from_local_evidence") {
return "GVL aus Web geprüft; bekannte Revision aus lokaler Evidence neu aufgebaut."; return "GVL-Referenz aus Web geprüft; bekannte Revision aus lokaler Evidence neu aufgebaut.";
} }
if (result?.syncStatus === "current_and_locally_available") { if (result?.syncStatus === "current_and_locally_available") {
return "GVL aus Web geprüft; aktuelle Revision ist lokal vollständig verfügbar."; return "GVL-Referenz aus Web geprüft; aktuelle Revision ist lokal vollständig verfügbar.";
} }
return result?.alreadyKnown return result?.alreadyKnown
? "GVL aus Web geprüft; Revision ist lokal verfügbar." ? "GVL-Referenz aus Web geprüft; Revision ist lokal verfügbar."
: "GVL aus Web geladen."; : "GVL-Referenz aus Web geladen.";
} }
function renderFetchStatus(message) { function renderFetchStatus(message) {
@@ -505,7 +505,7 @@ async function rebuildSelectedGvlSnapshotNormalizedData() {
} }
gvlRebuildNormalizedButton.disabled = true; gvlRebuildNormalizedButton.disabled = true;
renderRebuildStatus("Lokale Evidence wird neu normalisiert..."); renderRebuildStatus("Lokale Referenzdaten werden neu normalisiert...");
try { try {
const result = await browser.runtime.sendMessage({ const result = await browser.runtime.sendMessage({
@@ -528,7 +528,7 @@ async function rebuildSelectedGvlSnapshotNormalizedData() {
await renderGvlVendorDetail(); await renderGvlVendorDetail();
} }
} catch (error) { } catch (error) {
renderRebuildStatus("Lokaler Neuaufbau fehlgeschlagen."); renderRebuildStatus("Lokaler Referenz-Neuaufbau fehlgeschlagen.");
console.warn("VG-Observe GVL normalized rebuild failed", error); console.warn("VG-Observe GVL normalized rebuild failed", error);
} finally { } finally {
gvlRebuildNormalizedButton.disabled = gvlRebuildNormalizedButton.disabled =
@@ -540,7 +540,7 @@ function buildRebuildSuccessMessage(result) {
const counts = result.counts ?? {}; const counts = result.counts ?? {};
return [ return [
"Lokale GVL-Daten neu aufgebaut.", "Lokale Referenzdaten neu aufgebaut.",
`Vendoren: ${formatCount(counts.vendorCount)}`, `Vendoren: ${formatCount(counts.vendorCount)}`,
`Beziehungen: ${formatCount(counts.vendorRelationshipCount)}` `Beziehungen: ${formatCount(counts.vendorRelationshipCount)}`
].join(" "); ].join(" ");
@@ -1025,7 +1025,7 @@ async function renderGvlSnapshots() {
gvlSnapshotEmpty.hidden = false; gvlSnapshotEmpty.hidden = false;
gvlSnapshotContent.hidden = true; gvlSnapshotContent.hidden = true;
gvlSnapshotEmpty.textContent = gvlSnapshotEmpty.textContent =
"Gespeicherte Vendorlisten konnten nicht geladen werden."; "Gespeicherte GVL-Referenzen konnten nicht geladen werden.";
console.warn("VG-Observe GVL snapshot list failed", error); console.warn("VG-Observe GVL snapshot list failed", error);
} }
} }
@@ -1037,7 +1037,7 @@ function renderNoGvlSnapshots() {
gvlSnapshotEmpty.hidden = false; gvlSnapshotEmpty.hidden = false;
gvlSnapshotContent.hidden = true; gvlSnapshotContent.hidden = true;
gvlSnapshotEmpty.textContent = gvlSnapshotEmpty.textContent =
"Keine gespeicherten offiziellen Vendorlisten vorhanden."; "Keine gespeicherten GVL-Referenzrevisionen vorhanden.";
} }
function renderGvlSnapshotList() { function renderGvlSnapshotList() {
@@ -1124,7 +1124,7 @@ async function renderSelectedGvlSnapshotSummary() {
selectedSnapshotSummary = null; selectedSnapshotSummary = null;
updateRebuildActionState(null); updateRebuildActionState(null);
gvlSnapshotSummary.textContent = gvlSnapshotSummary.textContent =
"Zusammenfassung dieser Vendorliste konnte nicht geladen werden."; "Zusammenfassung dieser GVL-Revision konnte nicht geladen werden.";
console.warn("VG-Observe GVL snapshot summary failed", error); console.warn("VG-Observe GVL snapshot summary failed", error);
} }
} }
@@ -1156,7 +1156,7 @@ async function renderVendorOverviewForSelectedSnapshot() {
} catch (error) { } catch (error) {
gvlVendorOverviewEmpty.hidden = false; gvlVendorOverviewEmpty.hidden = false;
gvlVendorOverviewEmpty.textContent = gvlVendorOverviewEmpty.textContent =
"Vendoren-Übersicht konnte nicht geladen werden."; "Vendoren-Referenz konnte nicht geladen werden.";
console.warn("VG-Observe GVL vendor overview failed", error); console.warn("VG-Observe GVL vendor overview failed", error);
} }
} }
@@ -1168,7 +1168,7 @@ function renderVendorOverview() {
gvlVendorOverviewEmpty.hidden = false; gvlVendorOverviewEmpty.hidden = false;
gvlVendorOverviewContent.hidden = true; gvlVendorOverviewContent.hidden = true;
gvlVendorOverviewEmpty.textContent = gvlVendorOverviewEmpty.textContent =
"Keine normalisierten Vendoren für diese Vendorliste vorhanden."; "Keine normalisierten Vendor-Referenzen für diese GVL-Revision vorhanden.";
return; return;
} }
@@ -1219,8 +1219,8 @@ function updateVendorOverviewSummary() {
const count = selectedSnapshotVendors.length; const count = selectedSnapshotVendors.length;
gvlVendorOverviewSummary.textContent = count gvlVendorOverviewSummary.textContent = count
? `Vendoren-Übersicht anzeigen (${count})` ? `Vendoren-Referenz anzeigen (${count})`
: "Vendoren-Übersicht anzeigen"; : "Vendoren-Referenz anzeigen";
} }
function updateRebuildActionState(summary) { function updateRebuildActionState(summary) {
@@ -1234,11 +1234,11 @@ function updateRebuildActionState(summary) {
} }
if (needsRebuild) { if (needsRebuild) {
renderRebuildStatus("Reparatur möglich: normalisierte lokale Daten fehlen."); renderRebuildStatus("Reparatur möglich: normalisierte Referenzdaten fehlen.");
return; return;
} }
renderRebuildStatus("Normalisierte lokale GVL-Daten sind verfügbar."); renderRebuildStatus("Normalisierte lokale Referenzdaten sind verfügbar.");
} }
function doesSnapshotNeedNormalizedRebuild(summary) { function doesSnapshotNeedNormalizedRebuild(summary) {
+5
Datei anzeigen
@@ -176,6 +176,11 @@ button:disabled {
opacity: 0.65; opacity: 0.65;
} }
.secondary-workflow {
color: #cbd5e1;
background: #172033;
}
.confirm-modal { .confirm-modal {
position: fixed; position: fixed;
inset: 0; inset: 0;
+24 -9
Datei anzeigen
@@ -3,12 +3,12 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title>VendorGet-IV</title> <title>VG-Observe Laufzeitsteuerung</title>
<link rel="stylesheet" href="popup.css"> <link rel="stylesheet" href="popup.css">
</head> </head>
<body> <body>
<main class="popup"> <main class="popup">
<h1>VendorGet-IV</h1> <h1>VG-Observe</h1>
<section class="status" aria-label="Status"> <section class="status" aria-label="Status">
<div class="status-row"> <div class="status-row">
@@ -29,10 +29,10 @@
</div> </div>
</section> </section>
<section class="evidence-retention" aria-label="Evidenzdaten"> <section class="evidence-retention" aria-label="Kurzstatus">
<h2>Evidenzdaten</h2> <h2>Workspace-Kurzstatus</h2>
<div id="maintenance-warning" class="maintenance-warning" hidden> <div id="maintenance-warning" class="maintenance-warning" hidden>
Aufzeichnung pausiert: Dashboard geöffnet Aufzeichnung pausiert: Observe-Dashboard geöffnet
</div> </div>
<dl class="evidence-counts"> <dl class="evidence-counts">
<div> <div>
@@ -61,15 +61,30 @@
</div> </div>
</dl> </dl>
<button id="evidence-dashboard-button" type="button"> <button id="evidence-dashboard-button" type="button">
Evidence Dashboard öffnen Observe-Dashboard öffnen
</button> </button>
<button id="evidence-export-json-button" type="button"> <button
id="evidence-export-json-button"
class="secondary-workflow"
type="button"
hidden
>
Export Evidence JSON Export Evidence JSON
</button> </button>
<button id="evidence-purge-unlocked-button" type="button"> <button
id="evidence-purge-unlocked-button"
class="secondary-workflow"
type="button"
hidden
>
Ungesperrte Evidence-Daten löschen Ungesperrte Evidence-Daten löschen
</button> </button>
<div id="evidence-export-json-status" class="retention-status" aria-live="polite"></div> <div
id="evidence-export-json-status"
class="retention-status"
aria-live="polite"
hidden
></div>
<div id="evidence-retention-status" class="retention-status" aria-live="polite"> <div id="evidence-retention-status" class="retention-status" aria-live="polite">
Status wird geladen Status wird geladen
</div> </div>
+8 -6
Datei anzeigen
@@ -3,16 +3,18 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title>VG-Observe Request-Explorer</title> <title>VG-Observe Requests prüfen</title>
<link rel="stylesheet" href="request-explorer.css"> <link rel="stylesheet" href="request-explorer.css">
</head> </head>
<body> <body>
<main class="explorer"> <main class="explorer">
<header class="explorer-header"> <header class="explorer-header">
<a class="back-link" href="../dashboard/dashboard.html">Zur&uuml;ck zum Dashboard</a> <a class="back-link" href="../dashboard/dashboard.html">Zur&uuml;ck zum Observe-Dashboard</a>
<h1>Request-Explorer</h1> <h1>Requests prüfen</h1>
<p class="section-help"> <p class="section-help">
Diese Ansicht zeigt zuletzt technisch beobachtete Requests. Diese Ansicht zeigt sichtbar beobachtete Browser-Requests aus der
Laufzeitbeobachtung. Sie dokumentiert technische Vorgänge und nimmt
keine rechtliche Bewertung vor.
</p> </p>
<dl class="request-overview" aria-label="Geladene Request-Uebersicht"> <dl class="request-overview" aria-label="Geladene Request-Uebersicht">
<div> <div>
@@ -27,7 +29,7 @@
</header> </header>
<section class="panel" aria-labelledby="request-list-title"> <section class="panel" aria-labelledby="request-list-title">
<h2 id="request-list-title">Zuletzt beobachtete Requests</h2> <h2 id="request-list-title">Technisch beobachtete Requests</h2>
<p id="request-empty" class="empty-state" hidden> <p id="request-empty" class="empty-state" hidden>
Keine beobachteten Requests vorhanden. Keine beobachteten Requests vorhanden.
</p> </p>
@@ -35,7 +37,7 @@
<div id="request-groups" class="request-groups"></div> <div id="request-groups" class="request-groups"></div>
<section class="request-detail" aria-labelledby="request-detail-title"> <section class="request-detail" aria-labelledby="request-detail-title">
<h2 id="request-detail-title">Ausgew&auml;hlter Request</h2> <h2 id="request-detail-title">Ausgew&auml;hlter beobachteter Request</h2>
<div id="request-detail-summary"></div> <div id="request-detail-summary"></div>
</section> </section>