Wizard DXF: Adatta misura l'area senza barre di scorrimento (offset meno bordi). Refs #113
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019A9CSrh9rfM5WwqKtg8BSE
This commit is contained in:
@@ -515,8 +515,15 @@ function dxfRecipeWizard(taskId, csrf, msgs) {
|
|||||||
const vp = this._vpEl(k), v = this.views[k];
|
const vp = this._vpEl(k), v = this.views[k];
|
||||||
if (!vp || !v.w || !v.h || !vp.clientWidth) return; // nascosto o vuoto: niente
|
if (!vp || !v.w || !v.h || !vp.clientWidth) return; // nascosto o vuoto: niente
|
||||||
// altezza utile del viewport (senza bordo), ripiego 240; con 240 secco il contenuto sborda e compare lo scroll
|
// altezza utile del viewport (senza bordo), ripiego 240; con 240 secco il contenuto sborda e compare lo scroll
|
||||||
const ch = vp.clientHeight || 240;
|
let cw = vp.clientWidth, ch = vp.clientHeight || 240;
|
||||||
let z = Math.min(vp.clientWidth / v.w, ch / v.h);
|
// #113: Adatta premuto da ingrandito: client* escludono le barre di scorrimento che spariranno dopo il fit;
|
||||||
|
// l'area vera e' offset* meno i bordi (nei test senza DOM offsetWidth manca e restano client*)
|
||||||
|
if (vp.offsetWidth && typeof getComputedStyle === 'function') {
|
||||||
|
const cs = getComputedStyle(vp);
|
||||||
|
cw = vp.offsetWidth - (parseFloat(cs.borderLeftWidth) + parseFloat(cs.borderRightWidth) || 0);
|
||||||
|
ch = vp.offsetHeight - (parseFloat(cs.borderTopWidth) + parseFloat(cs.borderBottomWidth) || 0) || 240;
|
||||||
|
}
|
||||||
|
let z = Math.min(cw / v.w, ch / v.h);
|
||||||
if (k === 'img') z = Math.min(8, Math.max(0.05, z));
|
if (k === 'img') z = Math.min(8, Math.max(0.05, z));
|
||||||
v.zoom = z;
|
v.zoom = z;
|
||||||
v.fit = z;
|
v.fit = z;
|
||||||
|
|||||||
@@ -113,6 +113,13 @@ check('#113 pan: cursore grabbing', w.vCursor('dxf') === 'grabbing');
|
|||||||
w.vPanEnd();
|
w.vPanEnd();
|
||||||
check('#113 pan finito', w.viewPanKey === '' && w._viewPan === null);
|
check('#113 pan finito', w.viewPanKey === '' && w._viewPan === null);
|
||||||
|
|
||||||
|
// #113: Adatta da ingrandito, con barre di scorrimento presenti: area = offset* meno i bordi, non client*
|
||||||
|
global.getComputedStyle = () => ({ borderLeftWidth: '1px', borderRightWidth: '1px', borderTopWidth: '1px', borderBottomWidth: '1px' });
|
||||||
|
w = make(432); w.$refs.vpImg.clientHeight = 228; w.$refs.vpImg.offsetWidth = 444; w.$refs.vpImg.offsetHeight = 240;
|
||||||
|
w.vSetContent('img', 2464, 2056);
|
||||||
|
check('#113 Adatta con barre: area senza barre (238/2056)', near(w.views.img.fit, 238 / 2056), String(w.views.img.fit));
|
||||||
|
delete global.getComputedStyle;
|
||||||
|
|
||||||
// Integrazione DXF: loadDxfPreview imposta la misura del viewBox e fa Adatta; file tolto azzera
|
// Integrazione DXF: loadDxfPreview imposta la misura del viewBox e fa Adatta; file tolto azzera
|
||||||
(async () => {
|
(async () => {
|
||||||
const PREVIEW = {
|
const PREVIEW = {
|
||||||
|
|||||||
Reference in New Issue
Block a user