Add database connection status indicator

This commit is contained in:
2026-08-05 18:53:11 +02:00
parent f2fa405008
commit f97d00ab7f
5 changed files with 16 additions and 2 deletions
+3
View File
@@ -44,6 +44,7 @@ const databaseModeInputs = document.querySelectorAll('input[name="databaseMode"]
const permissionInputs = document.querySelectorAll("#allowInsertToggle, #allowUpdateToggle, #allowDeleteToggle");
const transactionModeInputs = document.querySelectorAll('input[name="transactionMode"]');
const databaseStatus = document.querySelector("#databaseStatus");
const databaseStateDot = document.querySelector("#databaseStateDot");
const localDbFields = document.querySelector("#localDbFields");
const localDbInputs = document.querySelectorAll("#localDbFields input");
const testLocalDbButton = document.querySelector("#testLocalDbButton");
@@ -1036,6 +1037,8 @@ function refreshDatabaseStatusLabel() {
: (transactionMode === "dry-run" ? "dry-run" : "transaction");
databaseStatus.textContent = `${dbLabel} / ${connectionLabel} / ${accessLabel} / ${executionLabel}`;
databaseStatus.classList.toggle("database-error", connectionError);
databaseStateDot.className = `database-state-dot ${databaseConnectionState === "unknown" ? "is-pending" : connectionError ? "is-error" : "is-ready"}`;
databaseStateDot.setAttribute("aria-label", connectionError ? "Database disconnected" : databaseConnectionState === "unknown" ? "Database connection pending" : "Database connected");
}
function renderDatabaseModeNote(mode) {
databaseModeNote.textContent = mode === "live"
+3
View File
@@ -44,6 +44,7 @@ const databaseModeInputs = document.querySelectorAll('input[name="databaseMode"]
const permissionInputs = document.querySelectorAll("#allowInsertToggle, #allowUpdateToggle, #allowDeleteToggle");
const transactionModeInputs = document.querySelectorAll('input[name="transactionMode"]');
const databaseStatus = document.querySelector("#databaseStatus");
const databaseStateDot = document.querySelector("#databaseStateDot");
const localDbFields = document.querySelector("#localDbFields");
const localDbInputs = document.querySelectorAll("#localDbFields input");
const testLocalDbButton = document.querySelector("#testLocalDbButton");
@@ -1134,6 +1135,8 @@ function refreshDatabaseStatusLabel() {
: (transactionMode === "dry-run" ? "dry-run" : "transaction");
databaseStatus.textContent = `${dbLabel} / ${connectionLabel} / ${accessLabel} / ${executionLabel}`;
databaseStatus.classList.toggle("database-error", connectionError);
databaseStateDot.className = `database-state-dot ${databaseConnectionState === "unknown" ? "is-pending" : connectionError ? "is-error" : "is-ready"}`;
databaseStateDot.setAttribute("aria-label", connectionError ? "Database disconnected" : databaseConnectionState === "unknown" ? "Database connection pending" : "Database connected");
}
function renderDatabaseModeNote(mode) {
+4 -1
View File
@@ -98,7 +98,10 @@
<div class="sidebar-footer">
<button class="action-button primary" type="button"><svg class="sidebar-icon" aria-hidden="true"><use href="/icons.svg#menu"></use></svg><span>Show menu (20)</span></button>
<div class="app-status">
<span class="safe-mode" id="databaseStatus">DB read-only</span>
<span class="database-status-content">
<span class="database-state-dot is-pending" id="databaseStateDot" aria-hidden="true"></span>
<span class="safe-mode" id="databaseStatus">DB read-only</span>
</span>
</div>
<button class="action-button" id="themeToggle" type="button" aria-pressed="false"><svg class="sidebar-icon" aria-hidden="true"><use href="/icons.svg#moon"></use></svg><span>Dark theme</span></button>
<button class="action-button" id="settingsButton" type="button"><svg class="sidebar-icon" aria-hidden="true"><use href="/icons.svg#settings"></use></svg><span>Settings</span></button>
+1 -1
View File
File diff suppressed because one or more lines are too long