// file: kb-app-demo-desktop/frontend/ts/demo_store_diag.ts // version: 6 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_store_tables"; import type { DemoStoreDiagPayload } from "./bindings/kb_app_demo_desktop/demo_store_diag/DemoStoreDiagPayload"; (window as Window & typeof globalThis & { bootstrap?: typeof bootstrap }).bootstrap = bootstrap; (window as Window & typeof globalThis & { ResizeObserver?: typeof ResizeObserver }).ResizeObserver = ResizeObserver; let latestPayload: DemoStoreDiagPayload | null = null; async function refreshDiagnostics(): Promise { setText("#storeDiagStatus", "Chargement..."); try { const payload = await invoke("load_demo_store_diag"); setText("#storeDiagConfigPath", payload.configPath); setText("#storeDiagProfile", payload.activeProfileName); setText("#storeDiagBackend", payload.backend); setText("#storeDiagConnection", payload.connectionDescriptor); setText("#storeDiagSchema", payload.namespace ?? "—"); setText("#storeDiagHealth", payload.healthStatus); setText("#storeDiagMigration", payload.migrationStatus); setText("#storeDiagStatus", "OK"); renderTables("#storeDiagTable", "#storeDiagTableBody", payload.resources); latestPayload = payload; renderJsonViewer("#storeDiagJson", payload); frontendDebug("kb_app_demo_desktop.frontend.demo_store_diag", "Store diagnostics refreshed"); } catch (caughtError) { const message = caughtError instanceof Error ? caughtError.message : String(caughtError); setText("#storeDiagStatus", `Erreur : ${message}`); latestPayload = null; renderJsonViewer("#storeDiagJson", { error: message }); frontendError("kb_app_demo_desktop.frontend.demo_store_diag", `Store diagnostics loading failed: ${message}`); } } async function copyDiagnostics(): Promise { if (latestPayload) { await navigator.clipboard.writeText(jsonText(latestPayload)); } } document.addEventListener("DOMContentLoaded", () => { installFrontendConsoleBridge("kb_app_demo_desktop.frontend.demo_store_diag"); frontendDebug("kb_app_demo_desktop.frontend.demo_store_diag", "Store diagnostics demo window loaded"); const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]'); Array.from(tooltipTriggerList).map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl)); document.querySelector("#refreshStoreDiagButton")?.addEventListener("click", () => { void refreshDiagnostics(); }); document.querySelector("#copyStoreDiagButton")?.addEventListener("click", () => { void copyDiagnostics(); }); void refreshDiagnostics(); });