DigitalDoor.Reporting.Helpers
1.14.52
See the version list below for details.
dotnet add package DigitalDoor.Reporting.Helpers --version 1.14.52
NuGet\Install-Package DigitalDoor.Reporting.Helpers -Version 1.14.52
<PackageReference Include="DigitalDoor.Reporting.Helpers" Version="1.14.52" />
paket add DigitalDoor.Reporting.Helpers --version 1.14.52
#r "nuget: DigitalDoor.Reporting.Helpers, 1.14.52"
// Install DigitalDoor.Reporting.Helpers as a Cake Addin #addin nuget:?package=DigitalDoor.Reporting.Helpers&version=1.14.52 // Install DigitalDoor.Reporting.Helpers as a Cake Tool #tool nuget:?package=DigitalDoor.Reporting.Helpers&version=1.14.52
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
reporting services (backend and/or frond end)
dotnet add package DigitalDoor.Reporting.Extensions --version 1.14.52
front end
dotnet add package DigitalDoor.Reporting.Blazor --version 1.14.52
Register the services
services.AddReportingPdfServices();
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
- System.Drawing.Common (>= 6.0.0)
-
net8.0
- System.Drawing.Common (>= 8.0.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on DigitalDoor.Reporting.Helpers:
Package | Downloads |
---|---|
DigitalDoor.Reporting
Generate reports from code using clean architecture. Can be used in backend API, in Blazor Server, Blazor Web Assembly, MVC and any .NET Core application. |
GitHub repositories
This package is not used by any popular GitHub repositories.
[2023-12-12] Change version to keep same versin in all nugets.
[2023-11-22] Update frameworks target to NET 6 and NET 8.