1
0
mirror of https://github.com/vladmandic/sdnext.git synced 2026-01-27 15:02:48 +03:00
Files
sdnext/javascript/monitor.js
vladmandic d0b3d9e600 add ovis reference
Signed-off-by: vladmandic <mandic00@live.com>
2025-12-26 08:24:13 +01:00

45 lines
1.6 KiB
JavaScript

const getModel = () => {
const cp = opts?.sd_model_checkpoint || '';
if (!cp) return 'unknown model';
const noBracket = cp.replace(/\s*\[.*\]\s*$/, ''); // remove trailing [hash]
const parts = noBracket.split(/[\\/]/); // split on / or \
return parts[parts.length - 1].trim() || 'unknown model';
};
async function updateIndicator(online, data, msg) {
const el = document.getElementById('logo_nav');
if (!el || !data) return;
const status = online ? '<b style="color:lime">online</b>' : '<b style="color:darkred">offline</b>';
const date = new Date();
const template = `
Version: <b>${data.updated}</b><br>
Commit: <b>${data.commit}</b><br>
Branch: <b>${data.branch}</b><br>
Status: ${status}<br>
Model: <b>${getModel()}</b><br>
Since: ${date.toLocaleString()}<br>
`;
if (online) {
el.dataset.hint = template;
el.style.backgroundColor = 'var(--sd-main-accent-color)';
log('monitorConnection: online', data);
} else {
el.dataset.hint = template;
el.style.backgroundColor = 'var(--color-error)';
log('monitorConnection: offline', msg);
}
}
async function monitorConnection() {
try {
const res = await authFetch(`${window.api}/version`);
const data = await res.json();
const url = res.url.split('/sdapi')[0].replace('http', 'ws'); // update global url as ws need fqdn
const ws = new WebSocket(`${url}/queue/join`);
ws.onopen = () => updateIndicator(true, data, '');
ws.onclose = () => updateIndicator(false, data, '');
ws.onerror = (e) => updateIndicator(false, data, e.message);
ws.onmessage = (evt) => log('monitorConnection: message', evt.data);
} catch { /**/ }
}