Refactored the `Report` property to `_report` with nullable support and updated `EnvelopeKey` to use `init` for immutability. Made `CreateReport` asynchronous, returning `Task<XtraReport>`, and removed redundant `BasePdfBytes` property. Simplified predefined report fetching by removing `ReportStorage.TryGetReport`. Improved error handling for missing or invalid `pdfBytes` in `CreateReport`. Made minor formatting and structural improvements for clarity.
49 lines
1.7 KiB
Plaintext
49 lines
1.7 KiB
Plaintext
@page "/envelope/{EnvelopeKey}/DxReportViewer"
|
|
@using XtraReport = DevExpress.XtraReports.UI.XtraReport
|
|
@using DevExpress.Blazor.Reporting
|
|
@using Microsoft.Extensions.Options
|
|
@using EnvelopeGenerator.ReceiverUI.Options
|
|
@using EnvelopeGenerator.ReceiverUI.Services
|
|
@inject InMemoryReportStorageWebExtension ReportStorage
|
|
@inject DocumentService DocumentService
|
|
@inject IOptions<ApiOptions> AppOptions
|
|
|
|
<link href="_content/DevExpress.Blazor.Themes/blazing-berry.bs5.min.css" rel="stylesheet" />
|
|
<link href="_content/DevExpress.Blazor.Reporting.Viewer/css/dx-blazor-reporting-components.bs5.css" rel="stylesheet" />
|
|
|
|
|
|
@if (_report is not null) {
|
|
<DxReportViewer Report="_report" RootCssClasses="w-100 h-100" Zoom="1.3" />
|
|
}
|
|
|
|
@code {
|
|
[Parameter] public string EnvelopeKey { get; init; } = null!;
|
|
|
|
XtraReport? _report = null;
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
_report = await CreateReport();
|
|
}
|
|
|
|
async Task<XtraReport> CreateReport()
|
|
{
|
|
if (AppOptions.Value.UsePredefinedReports)
|
|
{
|
|
return PredefinedReports.ReportsFactory.GetReport("LargeDatasetReport");
|
|
}
|
|
else
|
|
{
|
|
|
|
var pdfBytes = await DocumentService.GetDocumentAsync(EnvelopeKey);
|
|
if (pdfBytes is null || pdfBytes.Length == 0)
|
|
throw new InvalidOperationException($"No PDF bytes found for EnvelopeKey: {EnvelopeKey}");
|
|
|
|
var report = new XtraReport();
|
|
var detail = new DevExpress.XtraReports.UI.DetailBand();
|
|
report.Bands.Add(detail);
|
|
detail.Controls.Add(new DevExpress.XtraReports.UI.XRPdfContent { Source = pdfBytes, GenerateOwnPages = true });
|
|
return report;
|
|
}
|
|
}
|
|
} |