// file: kb-app-demo-desktop/frontend/ts/demo_sql_diag.ts // version: 2 import * as bootstrap from "bootstrap"; import "simplebar"; import ResizeObserver from "resize-observer-polyfill"; import { invoke } from "@tauri-apps/api/core"; import { frontendDebug, frontendError, installFrontendConsoleBridge } from "./frontend_log"; import { jsonText, renderJsonViewer, renderTables, setText } from "./demo_sql_tables"; import type { DemoSqlDiagPayload } from "./bindings/kb_app_demo_desktop/demo_sql_diag/DemoSqlDiagPayload"; (window as Window & typeof globalThis & { bootstrap?: typeof bootstrap }).bootstrap = bootstrap; (window as Window & typeof globalThis & { ResizeObserver?: typeof ResizeObserver }).ResizeObserver = ResizeObserver; let latestPayload: DemoSqlDiagPayload | null = null; async function refreshDiagnostics(): Promise { setText("#sqlDiagStatus", "Chargement..."); try { const payload = await invoke("load_demo_sql_diag"); setText("#sqlDiagConfigPath", payload.configPath); setText("#sqlDiagProfile", payload.activeProfileName); setText("#sqlDiagBackend", payload.backend); setText("#sqlDiagDsn", payload.maskedDsn); setText("#sqlDiagSchema", payload.currentSchema ?? "—"); setText("#sqlDiagHealth", payload.healthStatus); setText("#sqlDiagMigration", payload.migrationStatus); setText("#sqlDiagStatus", "OK"); renderTables("#sqlDiagTable", "#sqlDiagTableBody", payload.tables); latestPayload = payload; renderJsonViewer("#sqlDiagJson", payload); frontendDebug("kb_app_demo.frontend.demo_sql_diag", "SQL diagnostics refreshed"); } catch (caughtError) { const message = caughtError instanceof Error ? caughtError.message : String(caughtError); setText("#sqlDiagStatus", `Erreur : ${message}`); latestPayload = null; renderJsonViewer("#sqlDiagJson", { error: message }); frontendError("kb_app_demo.frontend.demo_sql_diag", `SQL diagnostics loading failed: ${message}`); } } async function copyDiagnostics(): Promise { if (latestPayload) { await navigator.clipboard.writeText(jsonText(latestPayload)); } } document.addEventListener("DOMContentLoaded", () => { installFrontendConsoleBridge("kb_app_demo.frontend.demo_sql_diag"); frontendDebug("kb_app_demo.frontend.demo_sql_diag", "SQL diagnostics demo window loaded"); const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]'); Array.from(tooltipTriggerList).map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl)); document.querySelector("#refreshSqlDiagButton")?.addEventListener("click", () => { void refreshDiagnostics(); }); document.querySelector("#copySqlDiagButton")?.addEventListener("click", () => { void copyDiagnostics(); }); void refreshDiagnostics(); });