Editor annotazioni: al resize gli oggetti non vengono riscalati, il salvataggio sposta i marker #28
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
GRAVITÀ: media
FILE: src/frontend/flask_app/static/js/annotation-editor.js:476-509 (_fitCanvasToImage), 1099-1108, 1137
COSA: al resize canvas e sfondo si riscalano, gli oggetti no (solo
setCoords). Il salvataggio scriveimageScalenuovo con coordinate vecchie: posizioni sbagliate anche nel viewer dell'operatore.isDirtynon è usato come guardia (nessunbeforeunload).INPUT: disegno più largo del contenitore, marker messi, tablet ruotato, salvataggio.
VERIFICATO: lettura di _fitCanvasToImage: unica operazione sugli oggetti è
forEachObject(obj.setCoords()).ORIGINE: revisione fable del 21/09/2026 su ramo
V3.0.0, commit8cc5e82. Documento completo:_output/2026-09-21-TieMeasureFlow-revisione.mdsu Wasabi.⚡ jeeg — preso in carico 2026-09-21T20:23:12Z
ramo:
lavoro/jeeg· capacità: docker, gpu, systemdANALISI (passo 1) — ramo
lavoro/jeeg, worktree~/lavoro/TieMeasureFlowsu jeeg, lotto B2MODIFICHE: src/frontend/flask_app/static/js/annotation-editor.js
_fitCanvasToImage(476-509) — al resize, se la scala cambia daoldScaleanewScale, riscalare ogni oggetto del canvas (escluso lo sfondo) dif = newScale/oldScale:left*=f, top*=f, scaleX*=f, scaleY*=f, poisetCoords(); per linee/frecce costruite con x1,y1,x2,y2 verifica come sono serializzate ingetAnnotationsJsone mantieni coerenza conloadAnnotationsJson(1137), che è il riferimento giusto. Conservathis._currentScale. Aggiungi guardiabeforeunloadquandoisDirty.TEST: test node se l'editor è caricabile senza Fabric reale (probabilmente no): allora verifica a lettura e passi manuali nel rapporto.
NON TOCCARE: annotation-viewer.js salvo bug speculare dimostrato.
Soluzione
ESITO: fatto
COSA:
_fitCanvasToImageriscalare ogni oggetto del fattore newScale/oldScale (posizione, dimensioni, font, estremi delle frecce); guardiabeforeunloadcon modifiche non salvate. Test node con canvas fittizio; Fabric reale non caricabile in node. PROVA MANUALE: marker, rotazione tablet, salvataggio, riapertura.COMMIT (ramo lavoro/jeeg, unito su V3.0.0 a
d483fa1):c375331PROVA:
uv run --extra server --extra client --extra dev pytest -q→ 622 passed, 4 skipped (erano 391); visione su Python 3.13 → 16 passed (erano 8).