From ad0ea0c7f8e5bf440fc4bfcf7f77aed9aa515f73 Mon Sep 17 00:00:00 2001 From: dnviti Date: Thu, 4 Dec 2025 23:53:52 +0100 Subject: [PATCH] refactor: modularize report designer components and controllers into a new `report-designer` module. --- docs/development/ZENTRAL.md | 4 ++ ...2-04-212500_fix_report_designer_imports.md | 31 +++++++++ ...025-12-04-215121_report_designer_module.md | 32 +++++++++ .../Controllers/VirtualDatasetsController.cs | 1 + .../Controllers/ReportResourcesController.cs | 4 +- .../Controllers/ReportTemplatesController.cs | 4 +- .../Controllers/ReportsController.cs | 67 +------------------ .../Zentral.API/Services/ModuleService.cs | 14 ++++ .../Services/Reports/AprtModels.cs | 63 +++++++++++++++++ src/frontend/src/App.tsx | 20 +++--- src/frontend/src/components/Sidebar.tsx | 2 +- .../components/reportEditor/ContextMenu.tsx | 2 +- .../reportEditor/DataBindingPanel.tsx | 2 +- .../reportEditor/DatasetManagerDialog.tsx | 6 +- .../reportEditor/DatasetSelector.tsx | 2 +- .../components/reportEditor/EditorCanvas.tsx | 4 +- .../components/reportEditor/EditorToolbar.tsx | 2 +- .../components/reportEditor/FilterBuilder.tsx | 6 +- .../reportEditor/ImageUploadDialog.tsx | 0 .../reportEditor/OutputFieldsEditor.tsx | 4 +- .../components/reportEditor/PageNavigator.tsx | 2 +- .../components/reportEditor/PreviewDialog.tsx | 4 +- .../reportEditor/PropertiesPanel.tsx | 4 +- .../reportEditor/RelationshipEditor.tsx | 4 +- .../reportEditor/ResizablePanel.tsx | 0 .../reportEditor/SidebarDropZone.tsx | 0 .../pages/ReportEditorPage.tsx | 16 ++--- .../pages/ReportTemplatesPage.tsx | 14 ++-- .../src/modules/report-designer/routes.tsx | 13 ++++ src/frontend/src/services/reportService.ts | 52 +++++++------- 30 files changed, 236 insertions(+), 143 deletions(-) create mode 100644 docs/development/devlog/2025-12-04-212500_fix_report_designer_imports.md create mode 100644 docs/development/devlog/2025-12-04-215121_report_designer_module.md rename src/backend/Zentral.API/{ => Modules/ReportDesigner}/Controllers/ReportResourcesController.cs (99%) rename src/backend/Zentral.API/{ => Modules/ReportDesigner}/Controllers/ReportTemplatesController.cs (98%) rename src/backend/Zentral.API/{ => Modules/ReportDesigner}/Controllers/ReportsController.cs (96%) rename src/frontend/src/{ => modules/report-designer}/components/reportEditor/ContextMenu.tsx (99%) rename src/frontend/src/{ => modules/report-designer}/components/reportEditor/DataBindingPanel.tsx (99%) rename src/frontend/src/{ => modules/report-designer}/components/reportEditor/DatasetManagerDialog.tsx (99%) rename src/frontend/src/{ => modules/report-designer}/components/reportEditor/DatasetSelector.tsx (99%) rename src/frontend/src/{ => modules/report-designer}/components/reportEditor/EditorCanvas.tsx (99%) rename src/frontend/src/{ => modules/report-designer}/components/reportEditor/EditorToolbar.tsx (99%) rename src/frontend/src/{ => modules/report-designer}/components/reportEditor/FilterBuilder.tsx (98%) rename src/frontend/src/{ => modules/report-designer}/components/reportEditor/ImageUploadDialog.tsx (100%) rename src/frontend/src/{ => modules/report-designer}/components/reportEditor/OutputFieldsEditor.tsx (99%) rename src/frontend/src/{ => modules/report-designer}/components/reportEditor/PageNavigator.tsx (99%) rename src/frontend/src/{ => modules/report-designer}/components/reportEditor/PreviewDialog.tsx (99%) rename src/frontend/src/{ => modules/report-designer}/components/reportEditor/PropertiesPanel.tsx (99%) rename src/frontend/src/{ => modules/report-designer}/components/reportEditor/RelationshipEditor.tsx (98%) rename src/frontend/src/{ => modules/report-designer}/components/reportEditor/ResizablePanel.tsx (100%) rename src/frontend/src/{ => modules/report-designer}/components/reportEditor/SidebarDropZone.tsx (100%) rename src/frontend/src/{ => modules/report-designer}/pages/ReportEditorPage.tsx (99%) rename src/frontend/src/{ => modules/report-designer}/pages/ReportTemplatesPage.tsx (97%) create mode 100644 src/frontend/src/modules/report-designer/routes.tsx diff --git a/docs/development/ZENTRAL.md b/docs/development/ZENTRAL.md index 5cb8b20..40f7cd1 100644 --- a/docs/development/ZENTRAL.md +++ b/docs/development/ZENTRAL.md @@ -26,3 +26,7 @@ File riassuntivo dello stato di sviluppo di Zentral. - Pulizia menu Zentral (rimozione voci ridondanti) e creazione nuova Dashboard principale con riepilogo moduli attivi. - [2025-12-04 Dashboard Widgets](./devlog/2025-12-04-030000_dashboard_widgets.md) - **Completato** - Implementazione sistema widget personalizzabili (drag & drop), salvataggio preferenze utente, widget "Active Modules" e "Warehouse Stats". +- [2025-12-04 Report Designer Module](./devlog/2025-12-04-215121_report_designer_module.md) - **Completato** + - Refactoring Report Designer in modulo autonomo e abilitazione stampa PDF condizionale. +- [2025-12-04 Fix Report Designer Imports](./devlog/2025-12-04-212500_fix_report_designer_imports.md) - **Completato** + - Correzione import path nel modulo Report Designer e registrazione modulo nel backend. diff --git a/docs/development/devlog/2025-12-04-212500_fix_report_designer_imports.md b/docs/development/devlog/2025-12-04-212500_fix_report_designer_imports.md new file mode 100644 index 0000000..2d68df0 --- /dev/null +++ b/docs/development/devlog/2025-12-04-212500_fix_report_designer_imports.md @@ -0,0 +1,31 @@ +# Fix Report Designer Imports and Activation + +## Problema +Il modulo Report Designer non si caricava a causa di percorsi di importazione errati nei componenti frontend e mancava la registrazione del modulo nel backend. + +## Modifiche Apportate + +### Frontend +Corretti i percorsi di importazione in: +- `DatasetManagerDialog.tsx` +- `PreviewDialog.tsx` +- `OutputFieldsEditor.tsx` +- `FilterBuilder.tsx` +- `RelationshipEditor.tsx` +- `PropertiesPanel.tsx` +- `PageNavigator.tsx` +- `ContextMenu.tsx` +- `EditorCanvas.tsx` +- `DataBindingPanel.tsx` +- `DatasetSelector.tsx` +- `EditorToolbar.tsx` + +I percorsi `../../services/reportService` e `../../types/report` sono stati aggiornati a `../../../../services/reportService` e `../../../../types/report`. + +### Backend +- Aggiornato `ModuleService.cs` per includere il modulo `report-designer` nel metodo `SeedDefaultModulesAsync`. +- Riavviato il backend per applicare il seeding del nuovo modulo. + +## Verifica +- Attivato il modulo `report-designer` tramite l'interfaccia `/modules`. +- Verificato il caricamento corretto della pagina `/report-designer`. diff --git a/docs/development/devlog/2025-12-04-215121_report_designer_module.md b/docs/development/devlog/2025-12-04-215121_report_designer_module.md new file mode 100644 index 0000000..628e0e5 --- /dev/null +++ b/docs/development/devlog/2025-12-04-215121_report_designer_module.md @@ -0,0 +1,32 @@ +# Refactoring Report Designer into a Module + +## Obiettivo +Trasformare la parte del report designer in un modulo a sé stante (`report-designer`). +Una volta attivato, questo modulo abilita nelle altre applicazioni la possibilità di stampare PDF. + +## Stato Attuale +Il codice del report designer è sparso in `src/frontend/src/pages` e `src/backend/Zentral.API/Controllers`. + +## Piano di Lavoro +1. **Frontend**: + - [x] Creare struttura modulo: `src/frontend/src/modules/report-designer/` + - [x] Spostare pagine e componenti. + - [x] Creare `routes.tsx`. + - [x] Aggiornare i riferimenti e le rotte in `App.tsx`. + - [x] Aggiornare `reportService.ts` con le nuove rotte API. +2. **Backend**: + - [x] Creare struttura modulo: `src/backend/Zentral.API/Modules/ReportDesigner/` + - [x] Spostare Controller (`ReportTemplatesController`, `ReportResourcesController`, `ReportsController`). + - [x] Aggiornare namespace e rotte API. + - [x] Spostare DTO condivisi in `AprtModels.cs` per risolvere dipendenze circolari/mancanti. +3. **Integrazione**: + - [x] Verificare build Frontend e Backend. + +## Log +- 2025-12-04: Iniziato refactoring. +- 2025-12-04: Spostati file frontend e creati routes. +- 2025-12-04: Aggiornato App.tsx con ModuleGuard. +- 2025-12-04: Spostati controller backend e aggiornati namespace. +- 2025-12-04: Risolti problemi di compilazione backend spostando DTO. +- 2025-12-04: Aggiornato reportService.ts frontend. +- 2025-12-04: Completato. diff --git a/src/backend/Zentral.API/Controllers/VirtualDatasetsController.cs b/src/backend/Zentral.API/Controllers/VirtualDatasetsController.cs index 09ff614..1c076ce 100644 --- a/src/backend/Zentral.API/Controllers/VirtualDatasetsController.cs +++ b/src/backend/Zentral.API/Controllers/VirtualDatasetsController.cs @@ -1,4 +1,5 @@ using System.Text.Json; +using Zentral.API.Services.Reports; using Zentral.Domain.Entities; using Zentral.Infrastructure.Data; using Microsoft.AspNetCore.Mvc; diff --git a/src/backend/Zentral.API/Controllers/ReportResourcesController.cs b/src/backend/Zentral.API/Modules/ReportDesigner/Controllers/ReportResourcesController.cs similarity index 99% rename from src/backend/Zentral.API/Controllers/ReportResourcesController.cs rename to src/backend/Zentral.API/Modules/ReportDesigner/Controllers/ReportResourcesController.cs index 352878c..87a2003 100644 --- a/src/backend/Zentral.API/Controllers/ReportResourcesController.cs +++ b/src/backend/Zentral.API/Modules/ReportDesigner/Controllers/ReportResourcesController.cs @@ -4,10 +4,10 @@ using Zentral.Infrastructure.Data; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; -namespace Zentral.API.Controllers; +namespace Zentral.API.Modules.ReportDesigner.Controllers; [ApiController] -[Route("api/report-resources")] +[Route("api/report-designer/resources")] public class ReportResourcesController : ControllerBase { private readonly ZentralDbContext _context; diff --git a/src/backend/Zentral.API/Controllers/ReportTemplatesController.cs b/src/backend/Zentral.API/Modules/ReportDesigner/Controllers/ReportTemplatesController.cs similarity index 98% rename from src/backend/Zentral.API/Controllers/ReportTemplatesController.cs rename to src/backend/Zentral.API/Modules/ReportDesigner/Controllers/ReportTemplatesController.cs index 22f4780..1862dda 100644 --- a/src/backend/Zentral.API/Controllers/ReportTemplatesController.cs +++ b/src/backend/Zentral.API/Modules/ReportDesigner/Controllers/ReportTemplatesController.cs @@ -4,10 +4,10 @@ using Zentral.Infrastructure.Data; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; -namespace Zentral.API.Controllers; +namespace Zentral.API.Modules.ReportDesigner.Controllers; [ApiController] -[Route("api/report-templates")] +[Route("api/report-designer/templates")] public class ReportTemplatesController : ControllerBase { private readonly ZentralDbContext _context; diff --git a/src/backend/Zentral.API/Controllers/ReportsController.cs b/src/backend/Zentral.API/Modules/ReportDesigner/Controllers/ReportsController.cs similarity index 96% rename from src/backend/Zentral.API/Controllers/ReportsController.cs rename to src/backend/Zentral.API/Modules/ReportDesigner/Controllers/ReportsController.cs index 5d40a58..9cbbcee 100644 --- a/src/backend/Zentral.API/Controllers/ReportsController.cs +++ b/src/backend/Zentral.API/Modules/ReportDesigner/Controllers/ReportsController.cs @@ -4,10 +4,10 @@ using Zentral.Infrastructure.Data; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; -namespace Zentral.API.Controllers; +namespace Zentral.API.Modules.ReportDesigner.Controllers; [ApiController] -[Route("api/reports")] +[Route("api/report-designer/reports")] public class ReportsController : ControllerBase { private readonly ReportGeneratorService _reportGenerator; @@ -1226,65 +1226,4 @@ public class ReportsController : ControllerBase #endregion } -// DTOs -public class DebugBindingRequest -{ - public List DataSources { get; set; } = new(); - public string? PropertyName { get; set; } -} - -public class PreviewReportRequest -{ - public int TemplateId { get; set; } - public List DataSources { get; set; } = new(); -} - -public class DataSourceSelection -{ - public string DatasetId { get; set; } = string.Empty; - public int EntityId { get; set; } - public string? Alias { get; set; } -} - -public class DatasetTypeDto -{ - public string Id { get; set; } = string.Empty; - public string Name { get; set; } = string.Empty; - public string Description { get; set; } = string.Empty; - public string Icon { get; set; } = string.Empty; - public string Category { get; set; } = "Principale"; - public bool IsVirtual { get; set; } = false; -} - -public class EntityListItemDto -{ - public int Id { get; set; } - public string Label { get; set; } = string.Empty; - public string Description { get; set; } = string.Empty; - public string? SecondaryInfo { get; set; } - public string? Status { get; set; } -} - -public class DataSchemaDto -{ - public string EntityType { get; set; } = string.Empty; - public string DatasetId { get; set; } = string.Empty; - public List Fields { get; set; } = new(); - public List ChildCollections { get; set; } = new(); -} - -public class DataFieldDto -{ - public string Name { get; set; } = string.Empty; - public string Type { get; set; } = "string"; - public string Label { get; set; } = string.Empty; - public string? Group { get; set; } -} - -public class DataCollectionDto -{ - public string Name { get; set; } = string.Empty; - public string Label { get; set; } = string.Empty; - public string? Description { get; set; } - public List Fields { get; set; } = new(); -} +// DTOs moved to AprtModels.cs diff --git a/src/backend/Zentral.API/Services/ModuleService.cs b/src/backend/Zentral.API/Services/ModuleService.cs index 355a477..a014844 100644 --- a/src/backend/Zentral.API/Services/ModuleService.cs +++ b/src/backend/Zentral.API/Services/ModuleService.cs @@ -507,6 +507,20 @@ public class ModuleService RoutePath = "/hr", IsAvailable = true, CreatedAt = DateTime.UtcNow + }, + new AppModule + { + Code = "report-designer", + Name = "Report Designer", + Description = "Creazione e personalizzazione di report e stampe", + Icon = "Print", + BasePrice = 1000m, + MonthlyMultiplier = 1.2m, + SortOrder = 80, + IsCore = false, + RoutePath = "/report-designer", + IsAvailable = true, + CreatedAt = DateTime.UtcNow } }; diff --git a/src/backend/Zentral.API/Services/Reports/AprtModels.cs b/src/backend/Zentral.API/Services/Reports/AprtModels.cs index 3c5a84b..7c3d7c7 100644 --- a/src/backend/Zentral.API/Services/Reports/AprtModels.cs +++ b/src/backend/Zentral.API/Services/Reports/AprtModels.cs @@ -398,3 +398,66 @@ public class ReportImageDto public long FileSize { get; set; } public bool Attivo { get; set; } = true; } + +// DTOs moved from ReportsController +public class DebugBindingRequest +{ + public List DataSources { get; set; } = new(); + public string? PropertyName { get; set; } +} + +public class PreviewReportRequest +{ + public int TemplateId { get; set; } + public List DataSources { get; set; } = new(); +} + +public class DataSourceSelection +{ + public string DatasetId { get; set; } = string.Empty; + public int EntityId { get; set; } + public string? Alias { get; set; } +} + +public class DatasetTypeDto +{ + public string Id { get; set; } = string.Empty; + public string Name { get; set; } = string.Empty; + public string Description { get; set; } = string.Empty; + public string Icon { get; set; } = string.Empty; + public string Category { get; set; } = "Principale"; + public bool IsVirtual { get; set; } = false; +} + +public class EntityListItemDto +{ + public int Id { get; set; } + public string Label { get; set; } = string.Empty; + public string Description { get; set; } = string.Empty; + public string? SecondaryInfo { get; set; } + public string? Status { get; set; } +} + +public class DataSchemaDto +{ + public string EntityType { get; set; } = string.Empty; + public string DatasetId { get; set; } = string.Empty; + public List Fields { get; set; } = new(); + public List ChildCollections { get; set; } = new(); +} + +public class DataFieldDto +{ + public string Name { get; set; } = string.Empty; + public string Type { get; set; } = "string"; + public string Label { get; set; } = string.Empty; + public string? Group { get; set; } +} + +public class DataCollectionDto +{ + public string Name { get; set; } = string.Empty; + public string Label { get; set; } = string.Empty; + public string? Description { get; set; } + public List Fields { get; set; } = new(); +} diff --git a/src/frontend/src/App.tsx b/src/frontend/src/App.tsx index 4a00db0..9866358 100644 --- a/src/frontend/src/App.tsx +++ b/src/frontend/src/App.tsx @@ -8,8 +8,7 @@ import { AppLanguageProvider } from "./contexts/LanguageContext"; import Layout from "./components/Layout"; import Dashboard from "./pages/Dashboard"; -import ReportTemplatesPage from "./pages/ReportTemplatesPage"; -import ReportEditorPage from "./pages/ReportEditorPage"; +import ReportDesignerRoutes from "./modules/report-designer/routes"; import ModulesAdminPage from "./pages/ModulesAdminPage"; import ModulePurchasePage from "./pages/ModulePurchasePage"; import AutoCodesAdminPage from "./pages/AutoCodesAdminPage"; @@ -59,17 +58,14 @@ function App() { }> } /> + {/* Report Designer Module */} } - /> - } - /> - } + path="report-designer/*" + element={ + + + + } /> {/* Admin */} } /> diff --git a/src/frontend/src/components/Sidebar.tsx b/src/frontend/src/components/Sidebar.tsx index 43cb166..fb057c2 100644 --- a/src/frontend/src/components/Sidebar.tsx +++ b/src/frontend/src/components/Sidebar.tsx @@ -166,7 +166,7 @@ export default function Sidebar({ onClose }: { onClose?: () => void }) { { id: 'modules', label: t('menu.modules'), icon: , path: '/modules' }, { id: 'autocodes', label: t('menu.autoCodes'), icon: , path: '/admin/auto-codes' }, { id: 'customfields', label: t('menu.customFields'), icon: , path: '/admin/custom-fields' }, - { id: 'reports', label: t('menu.reports'), icon: , path: '/report-templates' }, + { id: 'reports', label: t('menu.reports'), icon: , path: '/report-designer', moduleCode: 'report-designer' }, ], }, ]; diff --git a/src/frontend/src/components/reportEditor/ContextMenu.tsx b/src/frontend/src/modules/report-designer/components/reportEditor/ContextMenu.tsx similarity index 99% rename from src/frontend/src/components/reportEditor/ContextMenu.tsx rename to src/frontend/src/modules/report-designer/components/reportEditor/ContextMenu.tsx index 1f379af..89fc08d 100644 --- a/src/frontend/src/components/reportEditor/ContextMenu.tsx +++ b/src/frontend/src/modules/report-designer/components/reportEditor/ContextMenu.tsx @@ -41,7 +41,7 @@ import { TextFields as EditTextIcon, Image as ReplaceImageIcon, } from "@mui/icons-material"; -import type { ZrtElement } from "../../types/report"; +import type { ZrtElement } from "../../../../types/report"; export interface ContextMenuPosition { x: number; diff --git a/src/frontend/src/components/reportEditor/DataBindingPanel.tsx b/src/frontend/src/modules/report-designer/components/reportEditor/DataBindingPanel.tsx similarity index 99% rename from src/frontend/src/components/reportEditor/DataBindingPanel.tsx rename to src/frontend/src/modules/report-designer/components/reportEditor/DataBindingPanel.tsx index 09fb415..aeed375 100644 --- a/src/frontend/src/components/reportEditor/DataBindingPanel.tsx +++ b/src/frontend/src/modules/report-designer/components/reportEditor/DataBindingPanel.tsx @@ -46,7 +46,7 @@ import type { DataSchemaDto, DataFieldDto, DatasetTypeDto, -} from "../../types/report"; +} from "../../../../types/report"; interface DataBindingPanelProps { schemas: DataSchemaDto[]; diff --git a/src/frontend/src/components/reportEditor/DatasetManagerDialog.tsx b/src/frontend/src/modules/report-designer/components/reportEditor/DatasetManagerDialog.tsx similarity index 99% rename from src/frontend/src/components/reportEditor/DatasetManagerDialog.tsx rename to src/frontend/src/modules/report-designer/components/reportEditor/DatasetManagerDialog.tsx index dd86d17..d6ffc23 100644 --- a/src/frontend/src/components/reportEditor/DatasetManagerDialog.tsx +++ b/src/frontend/src/modules/report-designer/components/reportEditor/DatasetManagerDialog.tsx @@ -49,15 +49,15 @@ import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query"; import { virtualDatasetService, reportGeneratorService, -} from "../../services/reportService"; +} from "../../../../services/reportService"; import type { VirtualDatasetDto, VirtualDatasetConfiguration, VirtualDatasetSource, DatasetTypeDto, VirtualDatasetValidationResult, -} from "../../types/report"; -import { defaultVirtualDatasetConfiguration } from "../../types/report"; +} from "../../../../types/report"; +import { defaultVirtualDatasetConfiguration } from "../../../../types/report"; import RelationshipEditor from "./RelationshipEditor"; import FilterBuilder from "./FilterBuilder"; import OutputFieldsEditor from "./OutputFieldsEditor"; diff --git a/src/frontend/src/components/reportEditor/DatasetSelector.tsx b/src/frontend/src/modules/report-designer/components/reportEditor/DatasetSelector.tsx similarity index 99% rename from src/frontend/src/components/reportEditor/DatasetSelector.tsx rename to src/frontend/src/modules/report-designer/components/reportEditor/DatasetSelector.tsx index 3127c87..273015f 100644 --- a/src/frontend/src/components/reportEditor/DatasetSelector.tsx +++ b/src/frontend/src/modules/report-designer/components/reportEditor/DatasetSelector.tsx @@ -36,7 +36,7 @@ import { ExpandMore as ExpandMoreIcon, ExpandLess as ExpandLessIcon, } from "@mui/icons-material"; -import type { DatasetTypeDto } from "../../types/report"; +import type { DatasetTypeDto } from "../../../../types/report"; interface DatasetSelectorProps { availableDatasets: DatasetTypeDto[]; diff --git a/src/frontend/src/components/reportEditor/EditorCanvas.tsx b/src/frontend/src/modules/report-designer/components/reportEditor/EditorCanvas.tsx similarity index 99% rename from src/frontend/src/components/reportEditor/EditorCanvas.tsx rename to src/frontend/src/modules/report-designer/components/reportEditor/EditorCanvas.tsx index 4270e1d..93c3dcb 100644 --- a/src/frontend/src/components/reportEditor/EditorCanvas.tsx +++ b/src/frontend/src/modules/report-designer/components/reportEditor/EditorCanvas.tsx @@ -13,13 +13,13 @@ import type { ZrtElement, PageSize, PageOrientation, -} from "../../types/report"; +} from "../../../../types/report"; import { getPageDimensions, mmToPx, pxToMm, defaultStyle, -} from "../../types/report"; +} from "../../../../types/report"; import type { SnapOptions } from "./EditorToolbar"; // Extend fabric types to include data property diff --git a/src/frontend/src/components/reportEditor/EditorToolbar.tsx b/src/frontend/src/modules/report-designer/components/reportEditor/EditorToolbar.tsx similarity index 99% rename from src/frontend/src/components/reportEditor/EditorToolbar.tsx rename to src/frontend/src/modules/report-designer/components/reportEditor/EditorToolbar.tsx index 7974634..a847348 100644 --- a/src/frontend/src/components/reportEditor/EditorToolbar.tsx +++ b/src/frontend/src/modules/report-designer/components/reportEditor/EditorToolbar.tsx @@ -66,7 +66,7 @@ import { History as HistoryIcon, AutoMode as AutoSaveIcon, } from "@mui/icons-material"; -import type { ElementType } from "../../types/report"; +import type { ElementType } from "../../../../types/report"; // Snap options type export interface SnapOptions { diff --git a/src/frontend/src/components/reportEditor/FilterBuilder.tsx b/src/frontend/src/modules/report-designer/components/reportEditor/FilterBuilder.tsx similarity index 98% rename from src/frontend/src/components/reportEditor/FilterBuilder.tsx rename to src/frontend/src/modules/report-designer/components/reportEditor/FilterBuilder.tsx index 5f6d53e..fdfae2f 100644 --- a/src/frontend/src/components/reportEditor/FilterBuilder.tsx +++ b/src/frontend/src/modules/report-designer/components/reportEditor/FilterBuilder.tsx @@ -22,12 +22,12 @@ import { FilterList as FilterIcon, } from "@mui/icons-material"; import { useQueries } from "@tanstack/react-query"; -import { reportGeneratorService } from "../../services/reportService"; +import { reportGeneratorService } from "../../../../services/reportService"; import type { VirtualDatasetSource, VirtualDatasetFilter, DatasetTypeDto, -} from "../../types/report"; +} from "../../../../types/report"; interface FilterBuilderProps { sources: VirtualDatasetSource[]; @@ -348,7 +348,7 @@ export default function FilterBuilder({ selectedField?.type === "date" ? "YYYY-MM-DD" : selectedField?.type === "number" || - selectedField?.type === "currency" + selectedField?.type === "currency" ? "0" : "Testo" } diff --git a/src/frontend/src/components/reportEditor/ImageUploadDialog.tsx b/src/frontend/src/modules/report-designer/components/reportEditor/ImageUploadDialog.tsx similarity index 100% rename from src/frontend/src/components/reportEditor/ImageUploadDialog.tsx rename to src/frontend/src/modules/report-designer/components/reportEditor/ImageUploadDialog.tsx diff --git a/src/frontend/src/components/reportEditor/OutputFieldsEditor.tsx b/src/frontend/src/modules/report-designer/components/reportEditor/OutputFieldsEditor.tsx similarity index 99% rename from src/frontend/src/components/reportEditor/OutputFieldsEditor.tsx rename to src/frontend/src/modules/report-designer/components/reportEditor/OutputFieldsEditor.tsx index 0592474..f13a906 100644 --- a/src/frontend/src/components/reportEditor/OutputFieldsEditor.tsx +++ b/src/frontend/src/modules/report-designer/components/reportEditor/OutputFieldsEditor.tsx @@ -30,13 +30,13 @@ import { AttachMoney as CurrencyIcon, } from "@mui/icons-material"; import { useQueries } from "@tanstack/react-query"; -import { reportGeneratorService } from "../../services/reportService"; +import { reportGeneratorService } from "../../../../services/reportService"; import type { VirtualDatasetSource, VirtualDatasetOutputField, DatasetTypeDto, DataFieldDto, -} from "../../types/report"; +} from "../../../../types/report"; interface OutputFieldsEditorProps { sources: VirtualDatasetSource[]; diff --git a/src/frontend/src/components/reportEditor/PageNavigator.tsx b/src/frontend/src/modules/report-designer/components/reportEditor/PageNavigator.tsx similarity index 99% rename from src/frontend/src/components/reportEditor/PageNavigator.tsx rename to src/frontend/src/modules/report-designer/components/reportEditor/PageNavigator.tsx index 78f8c08..17082dc 100644 --- a/src/frontend/src/components/reportEditor/PageNavigator.tsx +++ b/src/frontend/src/modules/report-designer/components/reportEditor/PageNavigator.tsx @@ -31,7 +31,7 @@ import { KeyboardArrowUp as MoveUpIcon, KeyboardArrowDown as MoveDownIcon, } from "@mui/icons-material"; -import type { ZrtPage, ZrtElement } from "../../types/report"; +import type { ZrtPage, ZrtElement } from "../../../../types/report"; interface PageNavigatorProps { pages: ZrtPage[]; diff --git a/src/frontend/src/components/reportEditor/PreviewDialog.tsx b/src/frontend/src/modules/report-designer/components/reportEditor/PreviewDialog.tsx similarity index 99% rename from src/frontend/src/components/reportEditor/PreviewDialog.tsx rename to src/frontend/src/modules/report-designer/components/reportEditor/PreviewDialog.tsx index ca370a5..cb78917 100644 --- a/src/frontend/src/components/reportEditor/PreviewDialog.tsx +++ b/src/frontend/src/modules/report-designer/components/reportEditor/PreviewDialog.tsx @@ -44,12 +44,12 @@ import { ArrowBack as BackIcon, } from "@mui/icons-material"; import { useQueries } from "@tanstack/react-query"; -import { reportGeneratorService } from "../../services/reportService"; +import { reportGeneratorService } from "../../../../services/reportService"; import type { DatasetTypeDto, DataSourceSelection, EntityListItemDto, -} from "../../types/report"; +} from "../../../../types/report"; interface PreviewDialogProps { open: boolean; diff --git a/src/frontend/src/components/reportEditor/PropertiesPanel.tsx b/src/frontend/src/modules/report-designer/components/reportEditor/PropertiesPanel.tsx similarity index 99% rename from src/frontend/src/components/reportEditor/PropertiesPanel.tsx rename to src/frontend/src/modules/report-designer/components/reportEditor/PropertiesPanel.tsx index b38f33b..58f6b87 100644 --- a/src/frontend/src/components/reportEditor/PropertiesPanel.tsx +++ b/src/frontend/src/modules/report-designer/components/reportEditor/PropertiesPanel.tsx @@ -54,8 +54,8 @@ import type { ZrtTableColumn, DataSchemaDto, DatasetTypeDto, -} from "../../types/report"; -import { defaultImageSettings } from "../../types/report"; +} from "../../../../types/report"; +import { defaultImageSettings } from "../../../../types/report"; interface PropertiesPanelProps { element: ZrtElement | null; diff --git a/src/frontend/src/components/reportEditor/RelationshipEditor.tsx b/src/frontend/src/modules/report-designer/components/reportEditor/RelationshipEditor.tsx similarity index 98% rename from src/frontend/src/components/reportEditor/RelationshipEditor.tsx rename to src/frontend/src/modules/report-designer/components/reportEditor/RelationshipEditor.tsx index bde903e..7236c8d 100644 --- a/src/frontend/src/components/reportEditor/RelationshipEditor.tsx +++ b/src/frontend/src/modules/report-designer/components/reportEditor/RelationshipEditor.tsx @@ -21,13 +21,13 @@ import { ArrowForward as ArrowIcon, } from "@mui/icons-material"; import { useQueries } from "@tanstack/react-query"; -import { reportGeneratorService } from "../../services/reportService"; +import { reportGeneratorService } from "../../../../services/reportService"; import type { VirtualDatasetSource, VirtualDatasetRelationship, DatasetTypeDto, DataSchemaDto, -} from "../../types/report"; +} from "../../../../types/report"; interface RelationshipEditorProps { sources: VirtualDatasetSource[]; diff --git a/src/frontend/src/components/reportEditor/ResizablePanel.tsx b/src/frontend/src/modules/report-designer/components/reportEditor/ResizablePanel.tsx similarity index 100% rename from src/frontend/src/components/reportEditor/ResizablePanel.tsx rename to src/frontend/src/modules/report-designer/components/reportEditor/ResizablePanel.tsx diff --git a/src/frontend/src/components/reportEditor/SidebarDropZone.tsx b/src/frontend/src/modules/report-designer/components/reportEditor/SidebarDropZone.tsx similarity index 100% rename from src/frontend/src/components/reportEditor/SidebarDropZone.tsx rename to src/frontend/src/modules/report-designer/components/reportEditor/SidebarDropZone.tsx diff --git a/src/frontend/src/pages/ReportEditorPage.tsx b/src/frontend/src/modules/report-designer/pages/ReportEditorPage.tsx similarity index 99% rename from src/frontend/src/pages/ReportEditorPage.tsx rename to src/frontend/src/modules/report-designer/pages/ReportEditorPage.tsx index ae157bd..c497e3d 100644 --- a/src/frontend/src/pages/ReportEditorPage.tsx +++ b/src/frontend/src/modules/report-designer/pages/ReportEditorPage.tsx @@ -7,14 +7,14 @@ import { useQueryClient, } from "@tanstack/react-query"; import { v4 as uuidv4 } from "uuid"; -import { useHistory } from "../hooks/useHistory"; -import { usePanelLayout } from "../hooks/usePanelLayout"; -import { useCollaborationRoom } from "../contexts/CollaborationContext"; +import { useHistory } from "../../../hooks/useHistory"; +import { usePanelLayout } from "../../../hooks/usePanelLayout"; +import { useCollaborationRoom } from "../../../contexts/CollaborationContext"; import type { DataChangeMessage, ItemCreatedMessage, ItemDeletedMessage, -} from "../services/collaboration"; +} from "../../../services/collaboration"; import { Box, CircularProgress, @@ -72,7 +72,7 @@ import { reportGeneratorService, virtualDatasetService, openBlobInNewTab, -} from "../services/reportService"; +} from "../../../services/reportService"; import type { ZrtTemplate, ZrtElement, @@ -85,13 +85,13 @@ import type { DatasetTypeDto, DataSourceSelection, ReportTemplateDto, -} from "../types/report"; +} from "../../../types/report"; import { defaultTemplate, defaultStyle, defaultImageSettings, defaultPage, -} from "../types/report"; +} from "../../../types/report"; // Panel types for mobile navigation type MobilePanel = "pages" | "data" | "properties" | null; @@ -632,7 +632,7 @@ export default function ReportEditorPage() { } if (isNew) { - navigate(`/report-editor/${result.id}`, { replace: true }); + navigate(`/report-designer/editor/${result.id}`, { replace: true }); } }, onError: (error) => { diff --git a/src/frontend/src/pages/ReportTemplatesPage.tsx b/src/frontend/src/modules/report-designer/pages/ReportTemplatesPage.tsx similarity index 97% rename from src/frontend/src/pages/ReportTemplatesPage.tsx rename to src/frontend/src/modules/report-designer/pages/ReportTemplatesPage.tsx index 292a72b..dfa744f 100644 --- a/src/frontend/src/pages/ReportTemplatesPage.tsx +++ b/src/frontend/src/modules/report-designer/pages/ReportTemplatesPage.tsx @@ -38,8 +38,8 @@ import { Description as DescriptionIcon, } from "@mui/icons-material"; import { useTranslation } from "react-i18next"; -import { reportTemplateService, downloadBlob } from "../services/reportService"; -import type { ReportTemplateDto } from "../types/report"; +import { reportTemplateService, downloadBlob } from "../../../services/reportService"; +import type { ReportTemplateDto } from "../../../types/report"; export default function ReportTemplatesPage() { const navigate = useNavigate(); @@ -92,7 +92,7 @@ export default function ReportTemplatesPage() { queryClient.invalidateQueries({ queryKey: ["report-templates"] }); setImportDialog(false); setImportFile(null); - navigate(`/report-editor/${newTemplate.id}`); + navigate(`/report-designer/editor/${newTemplate.id}`); }, }); @@ -179,7 +179,7 @@ export default function ReportTemplatesPage() { @@ -265,7 +265,7 @@ export default function ReportTemplatesPage() {