Add static/js/pages/irr_tools.js
This commit is contained in:
parent
ea528f8b33
commit
1cb310e3df
1 changed files with 122 additions and 0 deletions
122
static/js/pages/irr_tools.js
Normal file
122
static/js/pages/irr_tools.js
Normal file
|
|
@ -0,0 +1,122 @@
|
||||||
|
document.addEventListener('DOMContentLoaded', function () {
|
||||||
|
const saveBtn = document.getElementById('saveBtn');
|
||||||
|
const runBtn = document.getElementById('runBtn');
|
||||||
|
const logBtn = document.getElementById('logBtn');
|
||||||
|
const asnsContent = document.getElementById('asnsContent');
|
||||||
|
const logOutput = document.getElementById('logOutput');
|
||||||
|
const statusMessage = document.getElementById('statusMessage');
|
||||||
|
|
||||||
|
let logPollInterval = null;
|
||||||
|
let runBtnOriginalHtml = runBtn.innerHTML;
|
||||||
|
|
||||||
|
function showLoading(button) {
|
||||||
|
button.disabled = true;
|
||||||
|
button.innerHTML = '<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span> Loading...';
|
||||||
|
}
|
||||||
|
|
||||||
|
function hideLoading(button, originalHtml) {
|
||||||
|
button.disabled = false;
|
||||||
|
button.innerHTML = originalHtml;
|
||||||
|
}
|
||||||
|
|
||||||
|
function showStatus(message, isError = false) {
|
||||||
|
statusMessage.textContent = message;
|
||||||
|
statusMessage.className = isError ? 'alert alert-danger' : 'alert alert-success';
|
||||||
|
statusMessage.style.display = 'block';
|
||||||
|
}
|
||||||
|
|
||||||
|
function showLog(message) {
|
||||||
|
logOutput.textContent = message;
|
||||||
|
logOutput.scrollTop = logOutput.scrollHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function fetchLog() {
|
||||||
|
try {
|
||||||
|
const response = await fetch('/irr-tools/log');
|
||||||
|
const result = await response.json();
|
||||||
|
|
||||||
|
if (result.log || result.log === "") {
|
||||||
|
showLog(result.log || "[Log file is empty. Waiting for data...]");
|
||||||
|
|
||||||
|
if (result.log.includes("IRR filter update process finished.")) {
|
||||||
|
stopLogPoller();
|
||||||
|
showStatus('IRR Update Complete.', false);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
showStatus(`Error retrieving log: ${result.error || 'Unknown error'}`, true);
|
||||||
|
stopLogPoller();
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
showStatus(`Client-side error: ${e.message}`, true);
|
||||||
|
stopLogPoller();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function stopLogPoller() {
|
||||||
|
if (logPollInterval) {
|
||||||
|
clearInterval(logPollInterval);
|
||||||
|
logPollInterval = null;
|
||||||
|
}
|
||||||
|
hideLoading(runBtn, runBtnOriginalHtml);
|
||||||
|
}
|
||||||
|
|
||||||
|
saveBtn.addEventListener('click', async () => {
|
||||||
|
const originalHtml = showLoading(saveBtn);
|
||||||
|
showLog('Saving asns.txt...');
|
||||||
|
|
||||||
|
try {
|
||||||
|
const response = await fetch('/irr-tools/save', {
|
||||||
|
method: 'POST',
|
||||||
|
headers: { 'Content-Type': 'application/json' },
|
||||||
|
body: JSON.stringify({ content: asnsContent.value })
|
||||||
|
});
|
||||||
|
const result = await response.json();
|
||||||
|
|
||||||
|
if (result.success) {
|
||||||
|
showStatus(`Success: ${result.message}`);
|
||||||
|
showLog(`asns.txt saved.\n\n${asnsContent.value}`);
|
||||||
|
} else {
|
||||||
|
showStatus(`Error saving: ${result.error || 'Unknown error'}`, true);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
showStatus(`Client-side fout: ${e.message}`, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
hideLoading(saveBtn, originalHtml);
|
||||||
|
});
|
||||||
|
|
||||||
|
runBtn.addEventListener('click', async () => {
|
||||||
|
showLoading(runBtn);
|
||||||
|
stopLogPoller();
|
||||||
|
showStatus('Starting IRR update script...');
|
||||||
|
showLog('Log is being cleared and script is starting...');
|
||||||
|
|
||||||
|
try {
|
||||||
|
const response = await fetch('/irr-tools/run', { method: 'POST' });
|
||||||
|
const result = await response.json();
|
||||||
|
|
||||||
|
if (result.success) {
|
||||||
|
showStatus(result.message + " Log is updated live.");
|
||||||
|
logPollInterval = setInterval(fetchLog, 2000);
|
||||||
|
} else {
|
||||||
|
showStatus(`Error during startup: ${result.error || 'Unknown error'}`, true);
|
||||||
|
hideLoading(runBtn, runBtnOriginalHtml);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
showStatus(`Client-side fout: ${e.message}`, true);
|
||||||
|
hideLoading(runBtn, runBtnOriginalHtml);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
logBtn.addEventListener('click', async () => {
|
||||||
|
stopLogPoller();
|
||||||
|
showStatus('Manually retrieve log...');
|
||||||
|
showLog('Retrieving log...');
|
||||||
|
|
||||||
|
await fetchLog();
|
||||||
|
|
||||||
|
if (!logPollInterval) {
|
||||||
|
showStatus('Log from last run retrieved.');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
Loading…
Add table
Add a link
Reference in a new issue