board rotation
This commit is contained in:
@@ -481,4 +481,75 @@ function initBoard() {
|
||||
result.innerHTML = `<span style="color:#f87171">❌ ${err}</span>`;
|
||||
}
|
||||
});
|
||||
|
||||
// ── 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 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:#555b6e">Justierung läuft …</span>';
|
||||
try {
|
||||
const r = await fetch('/api/robot/align-sets', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ setToMove }),
|
||||
});
|
||||
const data = await r.json();
|
||||
if (!r.ok || data.error) {
|
||||
result.innerHTML = `<span style="color:#f87171">❌ ${data.error ?? `HTTP ${r.status}`}</span>`; return;
|
||||
}
|
||||
const t = data.transform;
|
||||
result.innerHTML =
|
||||
`<span style="color:#22c55e">✅ Set "${setToMove}": ${data.numChanged} Marker verschoben` +
|
||||
` (${data.numMatchingPts} Messpunkte)</span>` +
|
||||
`  Δx=${t.tx} mm Δy=${t.ty} mm Δz=${t.tz} mm` +
|
||||
` θ=${t.thetaDeg}°`;
|
||||
loadBoardTable();
|
||||
} catch (err) {
|
||||
result.innerHTML = `<span style="color:#f87171">❌ ${err}</span>`;
|
||||
}
|
||||
});
|
||||
|
||||
// ── Aktion 4: Zuordnung hinzufügen ─────────────────────────────────────────
|
||||
document.getElementById('btn-act-add').addEventListener('click', async () => {
|
||||
const markerId = document.getElementById('act-add-id').value.trim();
|
||||
const set = document.getElementById('act-add-set').value.trim();
|
||||
const link = document.getElementById('act-add-link').value.trim();
|
||||
const result = document.getElementById('act-result');
|
||||
|
||||
if (!markerId) {
|
||||
result.innerHTML = '<span style="color:#f87171">⚠ Bitte Marker-ID eingeben.</span>'; return;
|
||||
}
|
||||
if (!set && !link) {
|
||||
result.innerHTML = '<span style="color:#f87171">⚠ Bitte mindestens Set oder Link angeben.</span>'; return;
|
||||
}
|
||||
|
||||
result.innerHTML = '<span style="color:#555b6e">Hinzufügen …</span>';
|
||||
try {
|
||||
const r = await fetch('/api/robot/assign-id', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ markerId: parseInt(markerId, 10), set, link }),
|
||||
});
|
||||
const data = await r.json();
|
||||
if (!r.ok) {
|
||||
result.innerHTML = `<span style="color:#f87171">❌ ${data.error ?? `HTTP ${r.status}`}</span>`; return;
|
||||
}
|
||||
if (!data.changed) {
|
||||
result.innerHTML = `<span style="color:#f87171">❌ ${data.error}</span>`; return;
|
||||
}
|
||||
const c = data.change;
|
||||
const info = c.action === 'added'
|
||||
? `neu in Link "${c.newLink}"${c.newSet ? ` Set "${c.newSet}"` : ''}`
|
||||
: `aktualisiert → Link "${c.newLink}"${c.newSet ? ` Set "${c.newSet}"` : ''}`;
|
||||
result.innerHTML = `<span style="color:#22c55e">✅ Marker ${markerId}: ${info}</span>`;
|
||||
loadBoardTable();
|
||||
} catch (err) {
|
||||
result.innerHTML = `<span style="color:#f87171">❌ ${err}</span>`;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user