diff --git a/js/Canvas.js b/js/Canvas.js index 91908bc..55cde9f 100644 --- a/js/Canvas.js +++ b/js/Canvas.js @@ -469,11 +469,11 @@ export class Canvas { * - this.canvasInteractions dla obsługi interakcji * - this.canvasIO dla operacji I/O * - this.canvasState dla zarządzania stanem + * + * UWAGA: Metody delegujące do CanvasState zostały usunięte. + * Używaj: canvas.canvasState.saveStateToDB(), canvas.canvasState.undo(), etc. */ - // Delegacje do CanvasState - async saveStateToDB(immediate = false) { return this.canvasState.saveStateToDB(immediate); } - // Delegacje do CanvasLayers async copySelectedLayers() { return this.canvasLayers.copySelectedLayers(); } async handlePaste(addMode) { return this.canvasLayers.handlePaste(addMode); } diff --git a/js/CanvasIO.js b/js/CanvasIO.js index d457037..52e3a5d 100644 --- a/js/CanvasIO.js +++ b/js/CanvasIO.js @@ -46,7 +46,7 @@ export class CanvasIO { log.warn(`Node ${this.canvas.node.id} has no layers, creating empty canvas`); return Promise.resolve(true); } - await this.canvas.saveStateToDB(true); + await this.canvas.canvasState.saveStateToDB(true); const nodeId = this.canvas.node.id; const delay = (nodeId % 10) * 50; if (delay > 0) { diff --git a/js/CanvasInteractions.js b/js/CanvasInteractions.js index 0e8066b..206b395 100644 --- a/js/CanvasInteractions.js +++ b/js/CanvasInteractions.js @@ -176,7 +176,7 @@ export class CanvasInteractions { if (interactionEnded) { this.canvas.saveState(); - this.canvas.saveStateToDB(true); + this.canvas.canvasState.saveStateToDB(true); } } @@ -297,16 +297,16 @@ export class CanvasInteractions { e.preventDefault(); e.stopPropagation(); if (e.shiftKey) { - this.canvas.redo(); + this.canvas.canvasState.redo(); } else { - this.canvas.undo(); + this.canvas.canvasState.undo(); } return; } if (e.key.toLowerCase() === 'y') { e.preventDefault(); e.stopPropagation(); - this.canvas.redo(); + this.canvas.canvasState.redo(); return; } } @@ -324,30 +324,30 @@ export class CanvasInteractions { e.preventDefault(); e.stopPropagation(); if (e.shiftKey) { - this.canvas.redo(); + this.canvas.canvasState.redo(); } else { - this.canvas.undo(); + this.canvas.canvasState.undo(); } return; } if (e.key.toLowerCase() === 'y') { e.preventDefault(); e.stopPropagation(); - this.canvas.redo(); + this.canvas.canvasState.redo(); return; } if (e.key.toLowerCase() === 'c') { if (this.canvas.selectedLayers.length > 0) { e.preventDefault(); e.stopPropagation(); - this.canvas.copySelectedLayers(); + this.canvas.canvasLayers.copySelectedLayers(); } return; } if (e.key.toLowerCase() === 'v') { e.preventDefault(); e.stopPropagation(); - this.canvas.handlePaste('mouse'); + this.canvas.canvasLayers.handlePaste('mouse'); return; } } diff --git a/js/CanvasLayers.js b/js/CanvasLayers.js index ae21057..785bcc0 100644 --- a/js/CanvasLayers.js +++ b/js/CanvasLayers.js @@ -359,7 +359,7 @@ export class CanvasLayers { this.canvas.render(); if (saveHistory) { - this.canvas.saveStateToDB(); + this.canvas.canvasState.saveStateToDB(); } } diff --git a/js/CanvasView.js b/js/CanvasView.js index 22a2ab6..6f77708 100644 --- a/js/CanvasView.js +++ b/js/CanvasView.js @@ -749,14 +749,14 @@ async function createCanvasWidget(node, widget, app) { textContent: "Undo", title: "Undo last action", disabled: true, - onclick: () => canvas.undo() + onclick: () => canvas.canvasState.undo() }), $el("button.painter-button", { id: `redo-button-${node.id}`, textContent: "Redo", title: "Redo last undone action", disabled: true, - onclick: () => canvas.redo() + onclick: () => canvas.canvasState.redo() }), ]), $el("div.painter-separator"), diff --git a/js/REFACTORING_GUIDE.md b/js/REFACTORING_GUIDE.md index 1b0691f..ef8bd22 100644 --- a/js/REFACTORING_GUIDE.md +++ b/js/REFACTORING_GUIDE.md @@ -146,7 +146,7 @@ canvas.imageReferenceManager.manualGarbageCollection() ### 🎯 Kolejne kroki 1. **Monitorowanie działania** - sprawdzenie czy wszystkie funkcje działają poprawnie ✅ -2. **Usunięcie metod delegujących** - w przyszłych wersjach (po okresie przejściowym) +2. **Usunięcie metod delegujących do CanvasState** - zakończone ✅ 3. **Rozszerzenie dokumentacji** - dla poszczególnych modułów ✅ 4. **Dodanie testów jednostkowych** - dla modułów @@ -168,6 +168,13 @@ canvas.imageReferenceManager.manualGarbageCollection() - Poprawiono wywołania w CanvasView.js - `canvas.rotateLayer()` → `canvas.canvasLayers.rotateLayer()` - Wszystkie moduły używają teraz spójnej konwencji nazewnictwa +4. **Usunięcie metod delegujących do CanvasState** ✅ + - Usunięto metodę delegującą `saveStateToDB()` z Canvas.js + - Zaktualizowano wszystkie wywołania w CanvasView.js: `canvas.undo()` → `canvas.canvasState.undo()` + - Zaktualizowano wszystkie wywołania w CanvasInteractions.js dla operacji undo/redo i copy/paste + - Zaktualizowano wywołania w CanvasLayers.js i CanvasIO.js + - Wszystkie operacje na stanie używają teraz bezpośrednio modułu `canvasState` + ## Uwagi dla deweloperów - ✅ **Refaktoryzacja zakończona** - wszystkie pliki zostały zaktualizowane