Add DBGate opener for scrape database

This commit is contained in:
2026-08-05 21:49:03 +02:00
parent 10672a6be3
commit 2106201f9c
11 changed files with 90 additions and 3 deletions
+26
View File
@@ -50,6 +50,7 @@ const localDbFields = document.querySelector("#localDbFields");
const localDbInputs = document.querySelectorAll("#localDbFields input");
const testLocalDbButton = document.querySelector("#testLocalDbButton");
const localDbTestResult = document.querySelector("#localDbTestResult");
const openDbGateButton = document.querySelector("#openDbGateButton");
const lightContrastSelect = document.querySelector("#lightContrastSelect");
const darkContrastSelect = document.querySelector("#darkContrastSelect");
const catalogScreen = document.querySelector(".catalog-screen");
@@ -237,6 +238,7 @@ for (const input of permissionInputs) input.addEventListener("change", saveSetti
for (const input of transactionModeInputs) input.addEventListener("change", saveSettings);
for (const input of localDbInputs) input.addEventListener("change", saveLocalDbSettings);
testLocalDbButton.addEventListener("click", testLocalDbConnection);
openDbGateButton.addEventListener("click", openDbGate);
lightContrastSelect.addEventListener("change", saveAppearance);
darkContrastSelect.addEventListener("change", saveAppearance);
@@ -1151,6 +1153,30 @@ async function testLocalDbConnection() {
}
}
async function openDbGate() {
openDbGateButton.disabled = true;
const previousNote = databaseModeNote.textContent;
databaseModeNote.textContent = "Opening DBGate...";
try {
const response = await fetch("/api/tools/open-dbgate");
const data = await response.json();
if (!response.ok || !data.opened) throw new Error(data.message || "DBGate could not be opened.");
databaseModeNote.textContent = `DBGate opened: ${data.url}`;
} catch (error) {
databaseModeNote.textContent = `DBGate error: ${error.message}`;
} finally {
openDbGateButton.disabled = false;
window.setTimeout(() => {
if (databaseModeNote.textContent.startsWith("DBGate")) {
renderDatabaseModeNote(localStorage.getItem("catalog-maker:database-mode") || "local");
} else if (databaseModeNote.textContent === "Opening DBGate...") {
databaseModeNote.textContent = previousNote;
}
}, 3500);
}
}
function syncLocalDbFields(mode) {
localDbFields.hidden = mode !== "local";
}