From 01fbd72310db683f3a4d21f0abd53fec20fc73fc Mon Sep 17 00:00:00 2001 From: Eduard Wisch Date: Thu, 9 Apr 2026 14:42:06 +0200 Subject: [PATCH] fix: alte Berichte ohne bgImage im JSON laden Quellbild nach MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Wenn ein Bericht vor Phase 6 gespeichert wurde, enthält fabric_json nur Shapes (Pfeile, Text etc.) — das Quellbild war damals noch pdfCanvas-Hintergrund. Beim Restore war jsonHasObjects=true und rerenderCurrent wurde nicht aufgerufen → Canvas weiß. Fix: Zusätzlicher Check jsonHasBgImage. Wenn kein Image im JSON (weder bgImage=true noch type=image), wird zusätzlich zu den geladenen Shapes rerenderCurrent() aufgerufen, das das Quellbild als fabric.Image hinter die Shapes legt. Co-Authored-By: Claude Opus 4.6 (1M context) [deploy] --- js/editor.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/js/editor.js b/js/editor.js index 99cc1be..24c89be 100644 --- a/js/editor.js +++ b/js/editor.js @@ -173,30 +173,29 @@ resizeFabricToCanvas(); let jsonHasObjects = false; + let jsonHasBgImage = false; if (loadedFabricJson) { try { const parsed = (typeof loadedFabricJson === 'string') ? JSON.parse(loadedFabricJson) : loadedFabricJson; jsonHasObjects = parsed && Array.isArray(parsed.objects) && parsed.objects.length > 0; + jsonHasBgImage = jsonHasObjects && parsed.objects.some(o => o.bgImage === true || (o.type === 'image')); if (jsonHasObjects) { - // WICHTIG: loadFromJSON ist für fabric.Image async — Bilder kommen erst - // im Callback ins Canvas. Wir warten auf den Callback. await new Promise((res) => { fabricCanvas.loadFromJSON(parsed, () => { fabricCanvas.renderAll(); res(); }); }); - // Re-apply tool state: wenn aktuelles Tool nicht select ist, Objekte sperren applyTool(); } } catch (e) { console.warn('Fabric-JSON restore fehlgeschlagen:', e); - jsonHasObjects = false; } } - if (!jsonHasObjects) { - // Kein gespeicherter State → Quellbild frisch als Fabric-Image laden + // Wenn kein Bild im JSON (alter Bericht vor Phase 6) ODER nie gespeichert: + // Quellbild frisch als Fabric-Image laden und hinter die existierenden Shapes legen + if (!jsonHasBgImage) { await rerenderCurrent(); } }