robot.json editieren - board
This commit is contained in:
@@ -403,4 +403,77 @@ function initBoard() {
|
||||
btn.disabled = false;
|
||||
}
|
||||
});
|
||||
|
||||
// ── Aktion 1: Z-Bereich Zuordnung ───────────────────────────────────────────
|
||||
document.getElementById('btn-act-assign').addEventListener('click', async () => {
|
||||
const zMin = document.getElementById('act-z-min').value;
|
||||
const zMax = document.getElementById('act-z-max').value;
|
||||
const set = document.getElementById('act-set').value.trim();
|
||||
const link = document.getElementById('act-link').value.trim();
|
||||
const result = document.getElementById('act-result');
|
||||
|
||||
if (zMin === '' || zMax === '') {
|
||||
result.innerHTML = '<span style="color:#f87171">⚠ Bitte z-Bereich 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">Zuordnung läuft …</span>';
|
||||
try {
|
||||
const r = await fetch('/api/robot/assign-by-z', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ zMin: parseFloat(zMin), zMax: parseFloat(zMax), set, link }),
|
||||
});
|
||||
const data = await r.json();
|
||||
if (!r.ok || data.error) {
|
||||
result.innerHTML = `<span style="color:#f87171">❌ ${data.error ?? `HTTP ${r.status}`}</span>`; return;
|
||||
}
|
||||
if (data.numChanged === 0) {
|
||||
result.innerHTML = '<span style="color:#555b6e">Keine Marker im Z-Bereich gefunden.</span>'; return;
|
||||
}
|
||||
const moved = data.changes.filter(c => c.oldLink !== c.newLink).length;
|
||||
result.innerHTML = `<span style="color:#22c55e">✅ ${data.numChanged} Marker geändert` +
|
||||
(moved ? `, ${moved} verschoben` : '') + `.</span>` +
|
||||
` IDs: ${data.changes.map(c => c.markerId).join(', ')}`;
|
||||
loadBoardTable();
|
||||
} catch (err) {
|
||||
result.innerHTML = `<span style="color:#f87171">❌ ${err}</span>`;
|
||||
}
|
||||
});
|
||||
|
||||
// ── Aktion 2: Zuordnung entfernen ───────────────────────────────────────────
|
||||
document.getElementById('btn-act-remove').addEventListener('click', async () => {
|
||||
const markerId = document.getElementById('act-rm-id').value.trim();
|
||||
const removeFrom = document.querySelector('input[name="act-rm-from"]:checked')?.value;
|
||||
const result = document.getElementById('act-result');
|
||||
|
||||
if (!markerId) {
|
||||
result.innerHTML = '<span style="color:#f87171">⚠ Bitte Marker-ID eingeben.</span>'; return;
|
||||
}
|
||||
|
||||
result.innerHTML = '<span style="color:#555b6e">Verarbeite …</span>';
|
||||
try {
|
||||
const r = await fetch('/api/robot/remove-marker', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ markerId: parseInt(markerId, 10), removeFrom }),
|
||||
});
|
||||
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 info = data.action === 'set-removed'
|
||||
? `Set "${data.oldSet}" entfernt (bleibt in Link "${data.link}")`
|
||||
: `Aus Link "${data.link}" entfernt`;
|
||||
result.innerHTML = `<span style="color:#22c55e">✅ Marker ${markerId}: ${info}</span>`;
|
||||
loadBoardTable();
|
||||
} catch (err) {
|
||||
result.innerHTML = `<span style="color:#f87171">❌ ${err}</span>`;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -20,6 +20,62 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ── Aktionen ─────────────────────────────────────────────────────────── -->
|
||||
<div class="section full">
|
||||
<h2>Aktionen</h2>
|
||||
|
||||
<!-- Aktion 1: Z-Bereich Zuordnung -->
|
||||
<div style="margin-top:14px">
|
||||
<p style="font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px">
|
||||
Z-Bereich Zuordnung
|
||||
</p>
|
||||
<div style="display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:12px;color:var(--text)">
|
||||
z von
|
||||
<input id="act-z-min" type="number" step="0.5" placeholder="-30"
|
||||
style="width:72px;background:#1e293b;border:1px solid #334155;color:#c8cdd8;border-radius:3px;padding:3px 7px;font:inherit;font-size:12px">
|
||||
bis
|
||||
<input id="act-z-max" type="number" step="0.5" placeholder="-24"
|
||||
style="width:72px;background:#1e293b;border:1px solid #334155;color:#c8cdd8;border-radius:3px;padding:3px 7px;font:inherit;font-size:12px">
|
||||
mm  →  Set
|
||||
<input id="act-set" type="text" placeholder="A0"
|
||||
style="width:72px;background:#1e293b;border:1px solid #334155;color:#c8cdd8;border-radius:3px;padding:3px 7px;font:inherit;font-size:12px">
|
||||
Link
|
||||
<input id="act-link" type="text" placeholder="Board"
|
||||
style="width:90px;background:#1e293b;border:1px solid #334155;color:#c8cdd8;border-radius:3px;padding:3px 7px;font:inherit;font-size:12px">
|
||||
<button id="btn-act-assign"
|
||||
style="background:#1e293b;color:#c8cdd8;border:1px solid #4a9eff;border-radius:3px;padding:4px 14px;cursor:pointer;font:inherit;font-size:12px">
|
||||
Zuordnen
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Aktion 2: Zuordnung entfernen -->
|
||||
<div style="margin-top:14px">
|
||||
<p style="font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px">
|
||||
Zuordnung entfernen
|
||||
</p>
|
||||
<div style="display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:12px;color:var(--text)">
|
||||
ID
|
||||
<input id="act-rm-id" type="number" placeholder="z.B. 46"
|
||||
style="width:90px;background:#1e293b;border:1px solid #334155;color:#c8cdd8;border-radius:3px;padding:3px 7px;font:inherit;font-size:12px">
|
||||
aus
|
||||
<label style="cursor:pointer;display:flex;align-items:center;gap:4px">
|
||||
<input type="radio" name="act-rm-from" value="set" checked> Set
|
||||
</label>
|
||||
<label style="cursor:pointer;display:flex;align-items:center;gap:4px">
|
||||
<input type="radio" name="act-rm-from" value="link"> Link <span style="color:var(--muted);font-size:10px">(nur falls Set leer)</span>
|
||||
</label>
|
||||
<button id="btn-act-remove"
|
||||
style="background:#1e293b;color:#c8cdd8;border:1px solid #ef4444;border-radius:3px;padding:4px 14px;cursor:pointer;font:inherit;font-size:12px">
|
||||
Entfernen
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Ergebnis-Zeile -->
|
||||
<div id="act-result" style="margin-top:10px;font-size:11px;min-height:18px;color:var(--muted)"></div>
|
||||
</div>
|
||||
|
||||
<div class="section full">
|
||||
<h2>Ausgabe / Log</h2>
|
||||
<textarea id="log-board" readonly placeholder="(Ausgabe erscheint hier)"></textarea>
|
||||
|
||||
Reference in New Issue
Block a user