|
|
| Line 90: |
Line 90: |
| | </div> | | </div> |
| | | | |
| − | ::The databinding can be found in <b>ReportSection.xaml</b>. | + | ::For quick reference, the databinding can be found in <b>ReportSection.xaml</b>. |
| | | | |
| | <div style="display:flex;justify-content:center;"> | | <div style="display:flex;justify-content:center;"> |
Revision as of 15:43, 12 November 2021
This page documents how the Reports in Truxton are displayed, or how the View of the report is created.
-
- Entry Point
- Navigation and Routing
- Databinding
- Dependency Injection
- Task Bar Icon
- Truxton CLI options
- How Reports are Displayed
Overview
- Most of the UI app is in C# and WPF. Typically, when you load a page, a View is made and rendered on screen using C# and WPF magic. This is not the case for Reports. The report is generated using HTML. Eventually, that HTML-report is loaded into an existing view.
- I assume this is the case for multi-platform report generation as well as ease of printing. I'll update this as it's discovered.
Main Files
| File
|
Summary
|
Path
|
| ReportSection.xaml
|
This view has a WebBrowser element that displays the HTML. It's loaded using the Binding HTMLReport.Stream
|
\Truxton\Client\TruxtonClient\TruxtonClient\Templates\ReportSection.xaml
|
| ReportSectionViewModel.cs
|
This is the ViewModel for the ReportSection
|
\Truxton\Client\TruxtonClient\TruxtonClient\ViewModels\Reports\ReportSectionViewModel.cs
|
| HTMLReportViewModel.cs
|
This is where the report-generating functions are called in loadReportContent
|
\Truxton\Client\TruxtonClient\TruxtonClient\ViewModels\Reports\HTMLReportViewModel.cs
|
HTMLReportViewModel.cs
- In the loadReportContent function,
- the relevant reportFactory is selected.
| loadReportContent
|
var reportFactory = _ctx.ReportService.GetReportFactory(req.ReporterID);
|
- Then, the report is generated resulting in a ITruxtonReport.
| loadReportContent
|
var report = await reportFactory.GenerateAsync(req.ReportConfig, req.CTS.Token);
|
- Next, the reportContent(HTML) is generated resulting in a string that contains the HTML.
| loadReportContent
|
string reportContent = await report.GetReportContentAsync(req.CTS.Token);
|
- Eventually, the string is converted into a stream then assigned so that it's available for dataBinding.
| loadReportContent
|
Stream = req.Stream;
|
- For quick reference, the databinding can be found in ReportSection.xaml.
| ReportSection.xaml
|
<controls:WebBrowser x:Name="WebBrowser" Stream="{Binding HTMLReport.Stream}" />
|