Add DBGate opener for scrape database
This commit is contained in:
@@ -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");
|
||||
@@ -239,6 +240,7 @@ for (const input of transactionModeInputs)
|
||||
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);
|
||||
loadDatabaseMode();
|
||||
@@ -1057,6 +1059,32 @@ async function testLocalDbConnection() {
|
||||
testLocalDbButton.disabled = false;
|
||||
}
|
||||
}
|
||||
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";
|
||||
}
|
||||
|
||||
@@ -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";
|
||||
}
|
||||
|
||||
@@ -16,4 +16,5 @@
|
||||
<symbol id="tag" viewBox="0 0 24 24"><path d="m4 5 8.5-.5L20 12l-8 8-7.5-7.5L4 5Z" fill="none" stroke="currentColor" stroke-linejoin="round" stroke-width="1.8"/><circle cx="8" cy="8" r="1.2" fill="currentColor"/></symbol>
|
||||
<symbol id="close" viewBox="0 0 24 24"><path d="m6 6 12 12M18 6 6 18" fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="1.8"/></symbol>
|
||||
<symbol id="refresh" viewBox="0 0 24 24"><path d="M20 11a8 8 0 0 0-14.8-3L3 11m0 0V5m0 6h6M4 13a8 8 0 0 0 14.8 3L21 13m0 0v6m0-6h-6" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.8"/></symbol>
|
||||
<symbol id="external" viewBox="0 0 24 24"><path d="M14 4h6v6M13 11l7-7M20 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h5" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.8"/></symbol>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 4.1 KiB |
@@ -175,6 +175,10 @@
|
||||
<label class="settings-option">
|
||||
<input type="radio" name="databaseMode" value="scrape" />
|
||||
<span>Local scrape DB</span>
|
||||
<button class="settings-inline-button" id="openDbGateButton" type="button">
|
||||
<svg class="sidebar-icon" aria-hidden="true"><use href="/icons.svg#external"></use></svg>
|
||||
<span>Open DBGate</span>
|
||||
</button>
|
||||
</label>
|
||||
<div class="local-db-fields" id="localDbFields">
|
||||
<label class="settings-field">
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user