Wizard DXF: anteprima dell'immagine del pezzo #102
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 25/10: oltre all'anteprima DXF, anteprima dell'immagine (file o camera) con W×H px e campo in mm se c'è la scala.
ESITO: richiesta
COSA: anteprima dell'immagine nel wizard «Crea ricetta da DXF» (editor task, tipo dxf_compare), accanto all'anteprima DXF di #101.
Richiesta di Adriano 25/10/2026: «oltre a anteprima dxf metti anteprima immagine».
STATO OGGI (base
4791c34, ramo lavoro/daitarn-tmf-dxfcal):src/frontend/flask_app/templates/maker/task_editor.html~righe 700-712, blocco «Immagine del pezzo»: bottoni «Acquisisci dalla camera» (grab()) e «Carica immagine» (onImage($event)), poi solo<p x-text="imageName">. Instatic/js/dxf_recipe_wizard.jsl'immagine scelta finisce inthis.imageFiletramite_setImage(file)(sia da file sia da camera, riga ~106). Sotto «Disegno (.dxf)» c'è già l'anteprima SVG di #101 (stile da imitare: riquadro bordato, max-height 240 px, riga di testo sotto).MODIFICHE (solo frontend):
imagePreviewUrl: '',imagePx: null({w, h}). In_setImage(file): revoca l'URL precedente (URL.revokeObjectURL), creaURL.createObjectURL(file); con file null azzera.imagePxsi legge dall'evento@loaddell'<img>(naturalWidth/naturalHeight).Getter
imagePreviewSummary: «W × H px»; se c'è una scala (mm/px a mano valido →manualPxMm, altrimenti la calibrazione della stazione già nota al wizard, vedi comecalibratedla ricava) aggiunge « · campo ≈ L × H mm» con 2 decimali e virgola secondo la lingua pagina (stessa funzione di formato didxfPreviewSummary).imageName,<img x-show="imagePreviewUrl" :src="imagePreviewUrl" @load="...">conclass="block w-full rounded border ..." style="max-height: 240px; object-fit: contain; background: var(--bg-primary);"e sotto la rigaimagePreviewSummary. BMP: i browser lo mostrano; se l'<img>va in errore (@error) mostrare «Anteprima non disponibile per questo formato» e lasciare il file valido per l'invio.grid sm:grid-cols-2): le due anteprime stanno ciascuna nella sua colonna, stessa altezza massima._()e voci intranslations/en/LC_MESSAGES/messages.poetranslations/it/LC_MESSAGES/messages.po(come ha fatto #101), niente .mo nel commit.TEST: test JS con node sullo schema di
src/frontend/flask_app/tests/js/test_dxf_preview.js(+ il runner pytesttests/test_dxf_preview_js.py):imagePreviewSummarycon e senza scala;_setImage(null)azzera. Asserzione intests/test_dxf_recipe_routes.pyche la pagina contengaimagePreviewUrl. Suite dasrc/frontend/flask_app:C:/Users/Adriano/lavoro/TieMeasureFlow-dxfcal-frontend/.venv/Scripts/python.exe -m pytest tests -q -p no:cacheprovider; base 9 fallimenti noti, nessuno nuovo.NON TOCCARE: src/backend/, src/vision/, src/vision_worker/, blocco anteprima DXF di #101 (solo affiancarlo), templates/statistics/.
PROVA (Opus): headless Edge, task 8 ricetta 3: carica
C:/Users/Adriano/Desktop/Sider foto e DXF/Foto/sider_2_1.bmpcon mm/px 0,01406 → immagine visibile, «W × H px · campo ≈ … mm».Soluzione
ESITO: fatto. Ramo lavoro/daitarn-tmf-dxfcal (push
08616aa). FILE: src/frontend/flask_app/static/js/dxf_recipe_wizard.js (imagePx, imageBroken, calPxMm, imagePreviewSummary, onImagePreviewLoad/Error), templates/maker/task_editor.html (anteprima img 240px sotto la scelta), messages.po it/en. Commit20f3323, merged5db5f3. PROVA: headless Edge task 8 ricetta 3, sider_2_1.bmp + mm/px 0,014 → anteprima visibile, «2464 × 2056 px · campo ≈ 34,50 × 28,78 mm»; node test_dxf_preview.js ok; suite frontend senza fallimenti nuovi.