-
This commit is contained in:
35
CLAUDE.md
35
CLAUDE.md
@@ -46,12 +46,25 @@ XX. **Nome Problema (FIX/IMPLEMENTATO DATA):** - **Problema:** Descrizione breve
|
||||
|
||||
## Quick Start - Session Recovery
|
||||
|
||||
**Ultima sessione:** 28 Novembre 2025 (notte)
|
||||
**Ultima sessione:** 29 Novembre 2025
|
||||
|
||||
**Stato progetto:** Migrazione Oracle APEX → .NET + React TypeScript in corso
|
||||
|
||||
**Lavoro completato nell'ultima sessione:**
|
||||
|
||||
- **NUOVA FEATURE: Selezione Multipla nel Report Editor** - COMPLETATO
|
||||
- Implementato sistema di selezione multipla personalizzato (senza usare ActiveSelection di Fabric.js che causava riposizionamento oggetti)
|
||||
- **Selezione con rettangolo di trascinamento**: trascinando sul canvas vuoto appare rettangolo blu tratteggiato, al rilascio seleziona tutti gli oggetti che intersecano
|
||||
- **Shift+click**: aggiunge/rimuove oggetti dalla selezione
|
||||
- **Spostamento multiplo**: quando più oggetti sono selezionati, trascinandone uno si spostano tutti insieme
|
||||
- **Feedback visivo**: oggetti selezionati mostrano bordo blu (#1976d2) e ombra
|
||||
- **Gestione corretta degli eventi**: i ref (`selectedElementIdsRef`, `onSelectElementRef`, etc.) evitano stale closures negli event handler
|
||||
- **File modificati:**
|
||||
- `EditorCanvas.tsx` - Nuovi handler `handleMouseDown`, `handleMouseUp`, logica selezione multipla, refs per valori correnti
|
||||
- `ReportEditorPage.tsx` - Cambiato `selectedElementId: string | null` → `selectedElementIds: string[]`, aggiornati tutti i riferimenti
|
||||
|
||||
**Lavoro completato nelle sessioni precedenti (28 Novembre 2025 notte):**
|
||||
|
||||
- **NUOVA FEATURE: Sincronizzazione Real-Time Efficiente** - COMPLETATO
|
||||
- **Prima:** Al salvataggio veniva inviata solo una notifica `DataSaved`, l'altra sessione ricaricava il template dal server (lento)
|
||||
- **Dopo:** Al salvataggio viene inviato l'intero template via SignalR (`BroadcastTemplateSync`), l'altra sessione lo applica direttamente (istantaneo)
|
||||
@@ -1141,6 +1154,26 @@ frontend/src/
|
||||
- Check `isPending` spostato dentro il callback del setTimeout
|
||||
- **File:** `ReportEditorPage.tsx`
|
||||
|
||||
26. **Selezione Multipla Fabric.js - Riposizionamento Oggetti (FIX 29/11/2025):**
|
||||
- **Problema:** Usando `ActiveSelection` di Fabric.js per la selezione multipla, gli oggetti venivano riposizionati/spostati quando selezionati
|
||||
- **Causa:** `ActiveSelection` raggruppa gli oggetti e le loro coordinate diventano relative al centro del gruppo. Inoltre, ricreando l'`ActiveSelection` nell'effect quando cambiava `selectedElementIds`, gli oggetti venivano spostati
|
||||
- **Soluzione:** Sistema di selezione multipla completamente personalizzato:
|
||||
- Disabilitata selezione nativa di Fabric.js (`selection: false` nel canvas)
|
||||
- Implementato `handleMouseDown` per:
|
||||
- Click su oggetto → selezione singola
|
||||
- Shift+click → aggiunge/rimuove dalla selezione
|
||||
- Click su canvas vuoto → inizio rettangolo di selezione
|
||||
- Click su oggetto già selezionato (multi) → inizio drag multiplo
|
||||
- Implementato `handleMouseMove` per:
|
||||
- Disegno rettangolo di selezione (Rect blu tratteggiato)
|
||||
- Spostamento multiplo oggetti (aggiorna `left`/`top` di ogni oggetto)
|
||||
- Implementato `handleMouseUp` per:
|
||||
- Fine rettangolo → calcola intersezione e seleziona oggetti
|
||||
- Fine drag multiplo → aggiorna template con nuove posizioni
|
||||
- Feedback visivo: bordo blu e ombra sugli oggetti selezionati (invece di ActiveSelection)
|
||||
- Usati refs (`selectedElementIdsRef`, `onSelectElementRef`, etc.) per evitare stale closures negli event handler registrati una sola volta
|
||||
- **File:** `EditorCanvas.tsx`, `ReportEditorPage.tsx`
|
||||
|
||||
### Schema Database Report System
|
||||
|
||||
Le tabelle sono già nel DbContext (`AppollinareDbContext.cs`):
|
||||
|
||||
Reference in New Issue
Block a user