feat(pose_3d): Editor mode Apply + Cancel

This commit is contained in:
Adriano Dal Pastro committed 2026-05-21 16:00:15 +02:00
1 parent 64500944d6
commit 5b2239e307
1 file changed
+52
+52
View File
@@ -373,6 +373,57 @@ function bindSideControls() {
}
}
// ----- Editor mode actions -----
async function onApplyClick() {
if (state.mode !== 'editor') return; // in Jog non c'è Apply
const side = state.active_side;
const tgt = state.target[side];
if (!tgt) return;
try {
await jsonFetch('/api/pose_3d/apply', {
method: 'POST', headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
side, position: tgt.position, quaternion: tgt.quaternion,
dry_run: true, precise: state.precise,
}),
});
// commit locale: il target diventa il nuovo current (simulato)
state.current[side] = { position: tgt.position, quaternion: tgt.quaternion };
state.target[side] = null;
updateRealWrists();
syncGhostsToTargetOrReal();
updateReadout();
$('p3Status').textContent = '✓ Editor: target committato (simulato)';
$('p3Status').className = 'p3-status ok';
} catch (e) {
showError(e.message);
}
}
function onCancelClick() {
const side = state.active_side;
state.target[side] = null;
syncGhostsToTargetOrReal();
updateReadout();
}
function showError(msg) {
$('p3ErrorBox').style.display = 'block';
$('p3ErrorText').textContent = msg;
$('p3Status').textContent = '✗ errore';
$('p3Status').className = 'p3-status error';
}
function clearError() {
$('p3ErrorBox').style.display = 'none';
$('p3ErrorText').textContent = '';
}
function bindEditorButtons() {
$('p3ApplyBtn').addEventListener('click', onApplyClick);
$('p3CancelBtn').addEventListener('click', onCancelClick);
}
// ----- init triggered on first activation -----
let inited = false;
function ensureInit() {
@@ -384,6 +435,7 @@ function ensureInit() {
bindSideControls();
bindGizmoControls();
bindGizmoEvents();
bindEditorButtons();
pollState();
pollTimer = setInterval(pollState, POLL_MS);
}