diff --git a/EnvelopeGenerator.WebUI/EnvelopeGenerator.WebUI.Client/Program.cs b/EnvelopeGenerator.WebUI/EnvelopeGenerator.WebUI.Client/Program.cs index 519269f2..496f0f1a 100644 --- a/EnvelopeGenerator.WebUI/EnvelopeGenerator.WebUI.Client/Program.cs +++ b/EnvelopeGenerator.WebUI/EnvelopeGenerator.WebUI.Client/Program.cs @@ -1,5 +1,55 @@ using Microsoft.AspNetCore.Components.WebAssembly.Hosting; +using EnvelopeGenerator.WebUI.Client.Services; +using EnvelopeGenerator.WebUI.Client.Options; +using DevExpress.Blazor.Reporting; +using DevExpress.XtraReports.Web.Extensions; +using DevExpress.DataAccess.Web; +using DevExpress.XtraReports.Services; var builder = WebAssemblyHostBuilder.CreateDefault(args); -await builder.Build().RunAsync(); +// HTTP Client (uses WebUI's YARP proxy) +builder.Services.AddScoped(sp => new HttpClient { + BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) +}); + +// Configuration Options +builder.Services.Configure(opts => + builder.Configuration.GetSection(ApiOptions.SectionName).Bind(opts)); +builder.Services.Configure(opts => + builder.Configuration.GetSection(PdfViewerOptions.SectionName).Bind(opts)); + +// Business Services +builder.Services.AddScoped(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); +builder.Services.AddSingleton(); + +// DevExpress WASM +builder.Services.AddDevExpressWebAssemblyBlazorPdfViewer(); +builder.Services.AddDevExpressWebAssemblyBlazorReportViewer(); + +builder.Services.AddDevExpressBlazorReportingWebAssembly(configure => { + configure.UseDevelopmentMode(); +}); + +// Reporting Services +builder.Services.AddScoped(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); + +DevExpress.Utils.DeserializationSettings.RegisterTrustedClass(typeof(EnvelopeGenerator.WebUI.Client.Data.DataItemList)); +DevExpress.Utils.DeserializationSettings.RegisterTrustedClass(typeof(EnvelopeGenerator.WebUI.Client.PredefinedReports.Report)); + +builder.Services.AddSingleton(); +builder.Services.AddSingleton(sp => sp.GetRequiredService()); +builder.Services.AddScoped(); + +ReportStorageWebExtension.RegisterExtensionGlobal(new InMemoryReportStorageWebExtension()); + +var host = builder.Build(); +await FontLoader.LoadFonts(host.Services.GetRequiredService(), new List { "opensans.ttf" }); +await host.RunAsync(); diff --git a/EnvelopeGenerator.WebUI/EnvelopeGenerator.WebUI.Client/_Imports.razor b/EnvelopeGenerator.WebUI/EnvelopeGenerator.WebUI.Client/_Imports.razor index 9b33eab0..287f87f1 100644 --- a/EnvelopeGenerator.WebUI/EnvelopeGenerator.WebUI.Client/_Imports.razor +++ b/EnvelopeGenerator.WebUI/EnvelopeGenerator.WebUI.Client/_Imports.razor @@ -5,5 +5,12 @@ @using Microsoft.AspNetCore.Components.Web @using static Microsoft.AspNetCore.Components.Web.RenderMode @using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.AspNetCore.Components.WebAssembly.Http @using Microsoft.JSInterop @using EnvelopeGenerator.WebUI.Client +@using EnvelopeGenerator.WebUI.Client.Services +@using EnvelopeGenerator.WebUI.Client.Models +@using EnvelopeGenerator.WebUI.Client.Options +@using DevExpress.Blazor +@using DevExpress.Blazor.PdfViewer +@using DevExpress.Blazor.Reporting diff --git a/EnvelopeGenerator.WebUI/EnvelopeGenerator.WebUI/Program.cs b/EnvelopeGenerator.WebUI/EnvelopeGenerator.WebUI/Program.cs index 19799648..d96b7f29 100644 --- a/EnvelopeGenerator.WebUI/EnvelopeGenerator.WebUI/Program.cs +++ b/EnvelopeGenerator.WebUI/EnvelopeGenerator.WebUI/Program.cs @@ -18,13 +18,12 @@ builder.Services.AddReverseProxy() // DevExpress Server-Side Services (CRITICAL for DxPdfViewer) builder.Services.AddDevExpressBlazor(configure => configure.BootstrapVersion = BootstrapVersion.v5); builder.Services.AddDevExpressServerSideBlazorPdfViewer(); -// builder.Services.AddDevExpressBlazorReportViewer(); // Will be enabled after Options migration -// Configuration Options (will be enabled in Phase 5 after Options migration) -// builder.Services.Configure( -// builder.Configuration.GetSection("ApiOptions")); -// builder.Services.Configure( -// builder.Configuration.GetSection("PdfViewerOptions")); +// Configuration Options +builder.Services.Configure( + builder.Configuration.GetSection("ApiOptions")); +builder.Services.Configure( + builder.Configuration.GetSection("PdfViewerOptions")); var app = builder.Build();