x-axis justierung: visualize
This commit is contained in:
@@ -18,8 +18,9 @@ async function loadPanel(tab, src) {
|
||||
});
|
||||
|
||||
// Tab-spezifische Initialisierung
|
||||
if (tab === 'camera-npz') initCameraNpz();
|
||||
else if (tab === 'board') initBoard();
|
||||
if (tab === 'camera-npz') initCameraNpz();
|
||||
else if (tab === 'board') initBoard();
|
||||
else if (tab === 'robot-x-axis') initXAxis();
|
||||
|
||||
} catch (err) {
|
||||
document.getElementById('tab-' + tab).innerHTML =
|
||||
@@ -354,6 +355,75 @@ async function loadBoardTable() {
|
||||
|
||||
// ── Board ─────────────────────────────────────────────────────────────────────
|
||||
|
||||
// ── Tab: Robot X Axis ─────────────────────────────────────────────────────────
|
||||
|
||||
async function populateXAxisSetDropdowns() {
|
||||
let sets = [];
|
||||
try {
|
||||
const r = await fetch('/api/robot/board-sets');
|
||||
if (r.ok) sets = (await r.json()).sets ?? [];
|
||||
} catch {}
|
||||
const sel = document.getElementById('xaxis-ref-set');
|
||||
if (sel) {
|
||||
sel.innerHTML = '<option value="">alle</option>' +
|
||||
sets.map(s => `<option value="${s}">${s}</option>`).join('');
|
||||
}
|
||||
}
|
||||
|
||||
function initXAxis() {
|
||||
const logEl = document.getElementById('log-xaxis');
|
||||
|
||||
function logX(msg) {
|
||||
const ts = new Date().toLocaleTimeString('de-CH');
|
||||
logEl.value += `[${ts}] ${msg}\n`;
|
||||
logEl.scrollTop = logEl.scrollHeight;
|
||||
}
|
||||
|
||||
populateXAxisSetDropdowns();
|
||||
|
||||
document.getElementById('btn-xaxis-run').addEventListener('click', async () => {
|
||||
const refSet = document.getElementById('xaxis-ref-set')?.value ?? '';
|
||||
logX(`Board-Erkennung … Referenz: ${refSet || 'alle'}`);
|
||||
const btn = document.getElementById('btn-xaxis-run');
|
||||
btn.disabled = true;
|
||||
try {
|
||||
const response = await fetch('/api/board/run', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ refSet: refSet || undefined }),
|
||||
});
|
||||
if (!response.ok) {
|
||||
const raw = await response.text().catch(() => '');
|
||||
let msg;
|
||||
try { msg = JSON.parse(raw).error || raw; }
|
||||
catch { msg = raw.slice(0, 300) || `HTTP ${response.status}`; }
|
||||
logX(`❌ HTTP ${response.status}: ${msg}`);
|
||||
return;
|
||||
}
|
||||
await readSseStream(response, logX, (evt) => {
|
||||
if (evt.exitCode === 0) {
|
||||
logX('✅ Board-Run abgeschlossen.');
|
||||
if (evt.runDir) {
|
||||
document.getElementById('xaxis-last-run').textContent = evt.runDir;
|
||||
const frame = document.getElementById('xaxis-viewer-frame');
|
||||
if (frame?.contentWindow) {
|
||||
frame.contentWindow.postMessage({ type: 'reload' }, '*');
|
||||
}
|
||||
}
|
||||
} else {
|
||||
logX(`❌ Beendet mit Exit-Code ${evt.exitCode}`);
|
||||
}
|
||||
});
|
||||
} catch (err) {
|
||||
logX(`❌ Fehler: ${err}`);
|
||||
} finally {
|
||||
btn.disabled = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// ── Tab: Board (shared helpers) ───────────────────────────────────────────────
|
||||
|
||||
/** Befüllt alle Set-Dropdowns aus /api/robot/board-sets */
|
||||
async function populateBoardSetDropdowns() {
|
||||
let sets = [];
|
||||
|
||||
Reference in New Issue
Block a user