2.2 KiB
2.2 KiB
Live Data Alignment for Report Designer
Obiettivo
Garantire che i dataset utilizzati nel report designer siano sempre automaticamente allineati con le strutture dati vive del gestionale, leggendo le strutture live invece di affidarsi a dati pre-configurati.
Modifiche Apportate
Backend
-
Nuovo Servizio
SchemaDiscoveryService:- Creato un servizio che scansiona
ZentralDbContextper trovare tutti iDbSetdisponibili. - Genera dinamicamente gli schemi dei dati basandosi sulle proprietà delle entità.
- Supporta il caricamento dinamico delle entità con eager loading delle proprietà di navigazione.
- Include un dizionario di metadati per mantenere descrizioni e icone curate per i dataset principali (Evento, Cliente, ecc.), pur supportando nuovi dataset automaticamente.
- Creato un servizio che scansiona
-
Refactoring
ReportsController:- Rimossi i metodi statici hardcoded per la generazione degli schemi (
GetEventoSchema, ecc.). - Rimossa la lista hardcoded dei dataset disponibili.
- Integrato
SchemaDiscoveryServiceper ottenere la lista dei dataset, gli schemi e i dati. - Aggiornato
GetVirtualDatasetEntitiesper usare il servizio di discovery.
- Rimossi i metodi statici hardcoded per la generazione degli schemi (
Miglioramenti UX
-
Etichette Leggibili:
- Aggiornato
SchemaDiscoveryServiceper rilevare automaticamente la proprietà migliore da usare come etichetta (RagioneSociale, Nome, Descrizione, ecc.). - Implementato ordinamento alfabetico automatico basato sull'etichetta rilevata.
- Aggiornato
-
Refactoring
VirtualDatasetsController:- Rimosso il metodo hardcoded
GetBaseDatasetSchema. - Integrato
SchemaDiscoveryServiceper la validazione e la generazione degli schemi dei dataset virtuali. - Risolto un TODO per la determinazione automatica del tipo di campo negli schemi virtuali.
- Rimosso il metodo hardcoded
-
Registrazione Servizio:
- Registrato
SchemaDiscoveryServiceinProgram.cs.
- Registrato
Risultato
Il Report Designer ora riflette automaticamente qualsiasi modifica al modello dati (nuove entità, nuovi campi) senza richiedere modifiche manuali al codice del controller. I dataset "core" mantengono le loro descrizioni user-friendly, mentre i nuovi dataset vengono esposti con nomi e descrizioni generati automaticamente.