board rotation - fix 0
This commit is contained in:
@@ -354,6 +354,27 @@ async function loadBoardTable() {
|
||||
|
||||
// ── Board ─────────────────────────────────────────────────────────────────────
|
||||
|
||||
/** Befüllt alle Set-Dropdowns aus /api/robot/board-sets */
|
||||
async function populateBoardSetDropdowns() {
|
||||
let sets = [];
|
||||
try {
|
||||
const r = await fetch('/api/robot/board-sets');
|
||||
if (r.ok) sets = (await r.json()).sets ?? [];
|
||||
} catch { /* kein Server / noch keine Sets → leere Dropdowns */ }
|
||||
|
||||
// Hilfsfunktion: <select> mit Optionen füllen
|
||||
function fill(selId, placeholder, selected = '') {
|
||||
const sel = document.getElementById(selId);
|
||||
if (!sel) return;
|
||||
sel.innerHTML = `<option value="">${placeholder}</option>` +
|
||||
sets.map(s => `<option value="${s}"${s === selected ? ' selected' : ''}>${s}</option>`).join('');
|
||||
}
|
||||
|
||||
fill('board-ref-set', 'alle');
|
||||
fill('act-align-fixed', '– bleibt –');
|
||||
fill('act-align-move', '– verschoben –');
|
||||
}
|
||||
|
||||
function initBoard() {
|
||||
const logBoard = document.getElementById('log-board');
|
||||
|
||||
@@ -363,15 +384,23 @@ function initBoard() {
|
||||
logBoard.scrollTop = logBoard.scrollHeight;
|
||||
}
|
||||
|
||||
// Dropdowns mit Sets aus robot.json befüllen
|
||||
populateBoardSetDropdowns();
|
||||
|
||||
// Tabelle beim ersten Öffnen des Tabs befüllen
|
||||
loadBoardTable();
|
||||
|
||||
document.getElementById('btn-board-run').addEventListener('click', async () => {
|
||||
logB('Board-Erkennung wird gestartet …');
|
||||
const refSet = document.getElementById('board-ref-set')?.value ?? '';
|
||||
logB(`Board-Erkennung wird gestartet … Referenz: ${refSet || 'alle'}`);
|
||||
const btn = document.getElementById('btn-board-run');
|
||||
btn.disabled = true;
|
||||
try {
|
||||
const response = await fetch('/api/board/run', { method: 'POST' });
|
||||
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;
|
||||
@@ -390,8 +419,9 @@ function initBoard() {
|
||||
if (frame?.contentWindow) {
|
||||
frame.contentWindow.postMessage({ type: 'reload' }, '*');
|
||||
}
|
||||
// Marker-Tabelle aktualisieren
|
||||
// Marker-Tabelle + Set-Dropdowns aktualisieren
|
||||
loadBoardTable();
|
||||
populateBoardSetDropdowns();
|
||||
}
|
||||
} else {
|
||||
logB(`❌ Beendet mit Exit-Code ${evt.exitCode}`);
|
||||
@@ -484,11 +514,15 @@ function initBoard() {
|
||||
|
||||
// ── Aktion 3: Sets justieren (Kabsch 2D+Z) ─────────────────────────────────
|
||||
document.getElementById('btn-act-align').addEventListener('click', async () => {
|
||||
const setToMove = document.getElementById('act-align-set').value.trim();
|
||||
const setFixed = document.getElementById('act-align-fixed').value;
|
||||
const setToMove = document.getElementById('act-align-move').value;
|
||||
const result = document.getElementById('act-result');
|
||||
|
||||
if (!setToMove) {
|
||||
result.innerHTML = '<span style="color:#f87171">⚠ Bitte Set-Name eingeben (z.B. "rail").</span>'; return;
|
||||
result.innerHTML = '<span style="color:#f87171">⚠ Bitte Set auswählen, das verschoben werden soll.</span>'; return;
|
||||
}
|
||||
if (setFixed && setFixed === setToMove) {
|
||||
result.innerHTML = '<span style="color:#f87171">⚠ "Bleibt" und "verschoben" dürfen nicht dasselbe Set sein.</span>'; return;
|
||||
}
|
||||
|
||||
result.innerHTML = '<span style="color:#555b6e">Justierung läuft …</span>';
|
||||
@@ -496,7 +530,7 @@ function initBoard() {
|
||||
const r = await fetch('/api/robot/align-sets', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ setToMove }),
|
||||
body: JSON.stringify({ setFixed: setFixed || undefined, setToMove }),
|
||||
});
|
||||
const data = await r.json();
|
||||
if (!r.ok || data.error) {
|
||||
@@ -505,7 +539,7 @@ function initBoard() {
|
||||
const t = data.transform;
|
||||
result.innerHTML =
|
||||
`<span style="color:#22c55e">✅ Set "${setToMove}": ${data.numChanged} Marker verschoben` +
|
||||
` (${data.numMatchingPts} Messpunkte)</span>` +
|
||||
` (${data.numMatchingPts} Messpunkte)${setFixed ? ` – "${setFixed}" bleibt` : ''}</span>` +
|
||||
`  Δx=${t.tx} mm Δy=${t.ty} mm Δz=${t.tz} mm` +
|
||||
` θ=${t.thetaDeg}°`;
|
||||
loadBoardTable();
|
||||
|
||||
Reference in New Issue
Block a user