Acquisizione: zoom +/−, Adatta e pan sull'immagine visualizzata, come nel wizard DXF #111
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?
RICHIESTA: Adriano 28/10 (fiera A&T): «metti sull'acquisizione la possibilità di fare zoom+- e fit dell'immagine visualizzata (come dentro in TMF)». Riferimento TMF: wizard DXF #104, src/frontend/flask_app/static/js/dxf_recipe_wizard.js:414-478 (zoomBy che tiene fermo il centro visibile, fit, Ctrl+rotella, pan col puntatore con preventDefault), barra in sovrimpressione 776-794.
RAMO: lavoro/daitarn-tmf-zoom da lavoro/daitarn-tmf-flip-unione
b46a703(codice ora sul PC fiera, con la specchiatura #110).FILE: scripts/calibrazione_pagina.py (solo HTML/CSS/JS della PAGINA), scripts/tests/test_pagina_acquisizione.py (solo aggiunte).
COSA: un visore generico (funzione JS, stile del file: var/function,
$, commenti brevi «#111») applicato ai TRE riquadri immagine: Acquisizionecornice/immagine, AcquisizionecorniceCal/immagineCal, tab CalibrazionecorniceCalTab/immagineCalTab. Ogni visore ha il suo zoom.MODIFICHE:
.palco(position:absolute; il palco diventa position:relative): pulsanti «−», «Adatta», «+» e la percentuale. Id: zoomMeno/zoomAdatta/zoomPiu/zoomPct, con suffisso Cal e CalTab per gli altri due visori. Barra nascosta finché la cornice è nascosta.zoomatasul palco → palco con altezza fissa uguale all'altezza massima, overflow:auto, niente centratura flex; cornice con width/height espliciti = W·z × H·z px; img width/height 100 %, senza max-width/max-height/min-height. Il mirino (inset:0 nella cornice) segue da solo.zoomata, pointerdown/move/up/cancel sul palco spostano scrollLeft/scrollTop; cursor grab/grabbing; preventDefault su pointerdown (Chromium altrimenti manda pointercancel). Niente pan sui pulsanti della barra.unaAnteprima(1280)), troppo poco per ingrandire. Sostituire conlatoAnteprima(): nessun visore dell'Acquisizione zoomato → 1280 (come oggi); altrimenti min(4096, max(1280, ceil(max(W, H) · zMax · devicePixelRatio))), zMax = zoom più alto fra i due visori dell'Acquisizione. Scatta resta 4096. Nient'altro nel ciclo cambia.TEST:
zoomata; i test esistenti (id usati da $("...") esistono, niente alert/confirm/http) restano verdi.NON TOCCARE: scripts/camera_service.py, le rotte, i blob URL e la loro revoca (mostraImmagine/mostraCalibrata/mostraInTabCal: solo aggiunta di una chiamata al visore se serve), la logica di blocca/calibrata (#92 #94), la specchiatura (#110).
FATTO QUANDO: sul PC fiera, anteprima attiva: «+» ingrandisce intorno al centro, trascinando si sposta, i frame continuano ad arrivare più definiti, «Adatta» torna alla vista di oggi; cambio sorgente → Adatta.
Soluzione
ESITO: fatto
COSA: zoom +/−, Adatta e percentuale in overlay (alto a destra) sui tre visori di Acquisizione/Calibrazione; Ctrl+rotella, trascinamento per spostarsi; lato anteprima cresce con lo zoom (latoAnteprima, 1280..4096).
FILE: scripts/calibrazione_pagina.py — .visore/.barraZoom, V{}, zFit/applica/zoomBy/adattaVisore/tornaAdatta/latoAnteprima (
b3c56ef); rinomina adatta→adattaVisore, collisione con adatta(d,v) dei parametri camera (c70d29d)FILE: scripts/tests/test_pagina_acquisizione.py — test_zoom_visori, test_nessuna_funzione_dichiarata_due_volte; scripts/tests/test_blocca_immagine.py:154 — asserzione su unaAnteprima(latoAnteprima()) (
34c251a, Opus)RAMO: lavoro/daitarn-tmf-dxfcal @
34c251a(pushato)PROVA: pytest scripts/tests (file camera) → 90 passed; browser locale porta 8799 camera:folder → zoom a passi, barra ferma allo scorrimento, pan, Adatta ripristina, latoAnteprima 1360 a 55 % e 4096 al massimo, nessun errore console
DEPLOY: DESKTOP-RABEHJJ (PC fiera A&T) 28/10/2026, pagina contiene adattaVisore e specchiaO, /health engine 06b549a