DigitalDoor.Reporting.Blazor
1.16.57
See the version list below for details.
dotnet add package DigitalDoor.Reporting.Blazor --version 1.16.57
NuGet\Install-Package DigitalDoor.Reporting.Blazor -Version 1.16.57
<PackageReference Include="DigitalDoor.Reporting.Blazor" Version="1.16.57" />
paket add DigitalDoor.Reporting.Blazor --version 1.16.57
#r "nuget: DigitalDoor.Reporting.Blazor, 1.16.57"
// Install DigitalDoor.Reporting.Blazor as a Cake Addin #addin nuget:?package=DigitalDoor.Reporting.Blazor&version=1.16.57 // Install DigitalDoor.Reporting.Blazor as a Cake Tool #tool nuget:?package=DigitalDoor.Reporting.Blazor&version=1.16.57
DigitalDoor.Reporting
Using DigitalDoor Reporting to create ViewModel and use to export in PDF or use in DigitalDoor.Reporting.Blazor to preview in HTML.
How to use:
Install nuget
dotnet add package DigitalDoor.Reporting.Blazor --version 1.16.57
Register the services
services.AddReportingBlazorServices();
Create a report ViewModel
Create object page setup
Setup reportSetUp = new(PageSize.A4, Orientation.Portrait);
Setup Header, Body and Footer (header and footer is not required, default all document it's a Body)
reportSetUp.Header = new Section(new Format(210, 70));
reportSetUp.Body = new Section()
{
Format = new Format()
{
Dimension = new Dimension(210, 222), //full body size
},
Row = new Row() //define size per each element to iterate
{
Dimension = new Dimension(89, 18)
}
};
reportSetUp.Footer = new Section(new Format(210, 7.3));
Add columns (elements) to each section
reportSetUp.Header.AddColumn(new ColumnSetup()
{
Format = new(165, 6) { FontDetails = new Font(new Shade(13)), Position = new(3, 7) },
DataColumn = Item.SetItem<Model>(p => p.Name)
});
reportSetUp.Body.AddColumn(new ColumnSetup()
{
Format = new(165, 6) { FontDetails = new Font(new Shade(13)), Position = new(3, 7) },
DataColumn = Item.SetItem<Model>(p => p.Name)
});
reportSetUp.Footer.AddColumn(new ColumnSetup()
{
Format = new(165, 6) { FontDetails = new Font(new Shade(13)), Position = new(3, 7) },
DataColumn = Item.SetItem<Model>(p => p.Name)
});
Add data to the collection. Data will be loop in a foreach to render the report
List<Model> content = new List<Model>(await Repository.GetModelData());
List<ColumnData> data = new List<ColumnData>();
int row = 1; //define first row in the section
if(content.Any())
{
//header data
data.Add(new ColumnData() { Section = SectionType.Header, Column = Item.SetItem<Model>(p => p.Name), Value = content.Name, Row = row });
// more row data then increment row++
//body data
row = 1; //reset row
foreach(PackByTrolley item in content)
{
data.Add(new ColumnData() { Section = SectionType.Body, Column = Item.SetItem<Model>(p => p.Name), Value = content.Name, Row = row });
row++;
}
//footer data
row = 1; //reset row
data.Add(new ColumnData() { Section = SectionType.Footer, Column = Item.SetItem<Model>(p => p.Name), Value = content.Name, Row = row });
}
Full class example
public class CreateReportHandler
{
readonly IReportsOutputPort Output; //from digitalDoor.Reporting.Entities, registered by services.AddReportsServices();
readonly IGetDataRepository Repository;
public GetReportHandler(IReportsOutputPort output, IGetDataRepository repository)
{
Output = output;
Repository = repository;
}
public async ValueTask Handle()
{
Setup reportSetUp = new(PageSize.A4, Orientation.Portrait);
reportSetUp.Header.AddColumn(new ColumnSetup()
{
Format = new(165, 6) { FontDetails = new Font(new Shade(13)), Position = new(3, 7) },
DataColumn = Item.SetItem<Model>(p => p.Name)
});
reportSetUp.Body.AddColumn(new ColumnSetup()
{
Format = new(165, 6) { FontDetails = new Font(new Shade(13)), Position = new(3, 7) },
DataColumn = Item.SetItem<Model>(p => p.Name)
});
reportSetUp.Footer.AddColumn(new ColumnSetup()
{
Format = new(165, 6) { FontDetails = new Font(new Shade(13)), Position = new(3, 7) },
DataColumn = Item.SetItem<Model>(p => p.Name)
});
List<Model> content = new List<Model>(await Repository.GetModelData());
List<ColumnData> data = new List<ColumnData>();
int row = 1; //define first row in the section
if(content.Any())
{
//header data
data.Add(new ColumnData() { Section = SectionType.Header, Column = Item.SetItem<Model>(p => p.Name), Value = content.Name, Row = row });
// more row data then increment row++
//body data
row = 1; //reset row
foreach(PackByTrolley item in content)
{
data.Add(new ColumnData() { Section = SectionType.Body, Column = Item.SetItem<Model>(p => p.Name), Value = content.Name, Row = row });
row++;
}
//footer data
row = 1; //reset row
data.Add(new ColumnData() { Section = SectionType.Footer, Column = Item.SetItem<Model>(p => p.Name), Value = content.Name, Row = row });
}
else
{
reportSetUp = new();
}
await Output.Handle(reportSetUp, data); //create ReportViewModel in a property IReportsOutputPort.Content
}
}
Using report component
<ReportView ReportModel=ReportModel ShowPreview=true />
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net6.0
- DigitalDoor.Reporting (>= 1.16.57)
- Microsoft.AspNetCore.Components.Web (>= 6.0.31)
-
net8.0
- DigitalDoor.Reporting (>= 1.16.57)
- Microsoft.AspNetCore.Components.Web (>= 8.0.6)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.16.60 | 83 | 11/2/2024 |
1.16.59 | 82 | 10/10/2024 |
1.16.57 | 105 | 6/7/2024 |
1.15.56 | 99 | 5/26/2024 |
1.15.54 | 99 | 5/11/2024 |
1.15.53 | 142 | 3/21/2024 |
1.14.52 | 116 | 3/19/2024 |
1.14.51 | 210 | 12/11/2023 |
1.14.50 | 160 | 11/22/2023 |
1.13.51 | 119 | 11/22/2023 |
1.13.50 | 105 | 11/7/2023 |
1.13.49 | 139 | 11/3/2023 |
1.13.48 | 144 | 10/24/2023 |
1.13.47 | 141 | 10/4/2023 |
1.13.46 | 150 | 9/8/2023 |
1.13.45 | 147 | 9/4/2023 |
1.13.44 | 149 | 8/27/2023 |
1.12.43 | 153 | 8/25/2023 |
0.11.42 | 153 | 5/23/2023 |
0.11.41 | 133 | 5/23/2023 |
0.11.40 | 139 | 5/22/2023 |
0.9.38 | 333 | 11/21/2022 |
0.8.36 | 308 | 11/9/2022 |
0.8.34 | 335 | 11/6/2022 |
0.8.33 | 403 | 9/13/2022 |
0.8.32 | 374 | 9/6/2022 |
0.8.31 | 379 | 9/5/2022 |
0.7.30 | 402 | 8/25/2022 |
0.7.29 | 398 | 8/21/2022 |
0.7.28 | 410 | 8/16/2022 |
0.7.27 | 404 | 7/30/2022 |
0.7.26 | 391 | 7/30/2022 |
0.7.25 | 381 | 7/30/2022 |
0.7.24 | 417 | 7/30/2022 |
0.7.23 | 409 | 7/29/2022 |
0.7.22 | 401 | 7/28/2022 |
0.7.21 | 401 | 7/28/2022 |
2024-07-06: Improve how to get HTML to avoid use JAVASCRIPT. Update version in all nugets.
2024-05-26: Update nugets.
2024-05-11: Update DigitalDoor.Reporting to version 1.16.54 and nugets.
2024-03-21: Add radius property for the borders. Fixed image dimensions. Fixed button report style. Update nugets.
2024-03-20: Removed double possible button in PrintReportComponent and change default colour button in Bulma CSS in the component PrintReport to is-primary
2023-12-12: Refactor to avoid duplicate code and create new service to manage create pdf. Add Dependency container to add reporting services and new service.
2023-12-11: Update DigitalDoor.Reporting to version 1.14.51.
2023-11-22: Update frameworks target to NET 6 and NET 8. Update DigitalDoor.Reporting to version 1.14.50.
2023-11-07: Update DigitalDoor.Reporting to version 1.13.51.
2023-11-03: Fixed image positions when has rotation.
2023-10-24: Update DigitalDoor.Reporting to version 1.13.49.
2023-10-04: Update DigitalDoor.Reporting to version 1.13.48.
2023-09-08: Update DigitalDoor.Reporting to version 1.13.47.
2023-09-01: Fixed in Blazor Server how to detect a image. Update DigitalDorr.Reporting to version 1.13.46.
2023-08-28: Using IReportAsBytes to generate the pdf direct. Changes in PrintReport component about how events are working. GetHtml return directly a HTML and fire OnGetHTML but also GeneratePDF fire OnGetHTML. Removed Showbutton because now can use directly the IReportAsBytes if don't like show a button.