107 lines
3.9 KiB
TypeScript
107 lines
3.9 KiB
TypeScript
// file: kb-app-demo-desktop/frontend/ts/main.ts
|
|
// version: 4
|
|
|
|
import * as bootstrap from "bootstrap";
|
|
import MarkdownIt from "markdown-it";
|
|
import ResizeObserver from "resize-observer-polyfill";
|
|
import "simplebar";
|
|
import { invoke } from "@tauri-apps/api/core";
|
|
import { frontendDebug, frontendError, installFrontendConsoleBridge } from "./frontend_log.ts";
|
|
|
|
(window as Window & typeof globalThis & { bootstrap?: typeof bootstrap }).bootstrap = bootstrap;
|
|
(window as Window & typeof globalThis & { ResizeObserver?: typeof ResizeObserver }).ResizeObserver = ResizeObserver;
|
|
|
|
const markdownRenderer = new MarkdownIt({
|
|
html: false,
|
|
linkify: true,
|
|
typographer: true,
|
|
});
|
|
|
|
async function loadReadme(readmeContent: HTMLElement): Promise<void> {
|
|
try {
|
|
const readme = await invoke<string>("load_project_readme");
|
|
readmeContent.innerHTML = markdownRenderer.render(readme);
|
|
} catch (caughtError) {
|
|
const message = caughtError instanceof Error ? caughtError.message : String(caughtError);
|
|
readmeContent.textContent = `Erreur pendant le chargement du README : ${message}`;
|
|
frontendError("kb-app-demo-desktop.frontend.main", `README loading failed: ${message}`);
|
|
}
|
|
}
|
|
|
|
async function openDemoConfigWindow(): Promise<void> {
|
|
try {
|
|
await invoke("open_demo_config_window");
|
|
} catch (caughtError) {
|
|
const message = caughtError instanceof Error ? caughtError.message : String(caughtError);
|
|
frontendError("kb-app-demo-desktop.frontend.main", `Cannot open configuration window: ${message}`);
|
|
}
|
|
}
|
|
|
|
document.addEventListener("DOMContentLoaded", async () => {
|
|
installFrontendConsoleBridge("kb-app-demo-desktop.frontend.main");
|
|
|
|
document.querySelector<HTMLAnchorElement>("#openDemoConfigLink")?.addEventListener("click", event => {
|
|
event.preventDefault();
|
|
void openDemoConfigWindow();
|
|
});
|
|
frontendDebug("kb-app-demo-desktop.frontend.main", "main window loaded");
|
|
const readmeContent = document.querySelector<HTMLElement>("#readmeContent");
|
|
if (readmeContent) {
|
|
await loadReadme(readmeContent);
|
|
}
|
|
});
|
|
|
|
const openDemoWsLink = document.querySelector<HTMLAnchorElement>("#openDemoWsLink");
|
|
if (openDemoWsLink) {
|
|
openDemoWsLink.addEventListener("click", event => {
|
|
event.preventDefault();
|
|
void invoke("open_demo_ws_window");
|
|
});
|
|
}
|
|
|
|
const openDemoHttpLink = document.querySelector<HTMLAnchorElement>("#openDemoHttpLink");
|
|
if (openDemoHttpLink) {
|
|
openDemoHttpLink.addEventListener("click", event => {
|
|
event.preventDefault();
|
|
void invoke("open_demo_http_window");
|
|
});
|
|
}
|
|
|
|
const openDemoBackfillLink = document.querySelector<HTMLAnchorElement>("#openDemoBackfillLink");
|
|
if (openDemoBackfillLink) {
|
|
openDemoBackfillLink.addEventListener("click", event => {
|
|
event.preventDefault();
|
|
void invoke("open_demo_backfill_window");
|
|
});
|
|
}
|
|
|
|
const pipelineDemoLinks: ReadonlyArray<readonly [string, string]> = [
|
|
["openDemoCoreExtractionLink", "open_demo_core_extraction_window"],
|
|
["openDemoDecodeReplayLink", "open_demo_decode_replay_window"],
|
|
];
|
|
for (const [elementId, command] of pipelineDemoLinks) {
|
|
const link = document.querySelector<HTMLAnchorElement>(`#${elementId}`);
|
|
if (link) {
|
|
link.addEventListener("click", event => {
|
|
event.preventDefault();
|
|
void invoke(command);
|
|
});
|
|
}
|
|
}
|
|
|
|
const sqlDemoLinks: ReadonlyArray<readonly [string, string]> = [
|
|
["openDemoSqlDiagLink", "open_demo_sql_diag_window"],
|
|
["openDemoSqlPgRawLink", "open_demo_sql_pg_raw_window"],
|
|
["openDemoSqlPgCoreLink", "open_demo_sql_pg_core_window"],
|
|
["openDemoSqlReplayCandidatesLink", "open_demo_sql_replay_candidates_window"],
|
|
];
|
|
for (const [elementId, command] of sqlDemoLinks) {
|
|
const link = document.querySelector<HTMLAnchorElement>(`#${elementId}`);
|
|
if (link) {
|
|
link.addEventListener("click", event => {
|
|
event.preventDefault();
|
|
void invoke(command);
|
|
});
|
|
}
|
|
}
|