x-axis justierung: visualize

This commit is contained in:
chk
2026-06-10 18:30:16 +02:00
parent b1950ffa5a
commit 3084324f4a
4 changed files with 255 additions and 31 deletions

View File

@@ -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 = [];