Difference between revisions of "How Reports are Displayed"
Jump to navigation
Jump to search
| Line 36: | Line 36: | ||
|- | |- | ||
|} | |} | ||
| + | |||
| + | |||
| + | === HTMLReportViewModel.cs === | ||
| + | |||
| + | ::In the <b>loadReportContent</b> function, | ||
| + | |||
| + | ::the relevant reportFactory is selected. | ||
| + | |||
| + | <div style="display:flex;justify-content:center;"> | ||
| + | {| class="wikitable" | ||
| + | ! loadReportContent | ||
| + | |- | ||
| + | | | ||
| + | var reportFactory = _ctx.ReportService.GetReportFactory(req.ReporterID); | ||
| + | |- | ||
| + | |} | ||
| + | </div> | ||
| + | |||
| + | ::Then, the report is generated resulting in a ITruxtonReport. | ||
| + | |||
| + | <div style="display:flex;justify-content:center;"> | ||
| + | {| class="wikitable" | ||
| + | ! loadReportContent | ||
| + | |- | ||
| + | | | ||
| + | var report = await reportFactory.GenerateAsync(req.ReportConfig, req.CTS.Token); | ||
| + | |- | ||
| + | |} | ||
| + | </div> | ||
| + | |||
| + | ::Next, the reportContent(HTML) is generated resulting in a string that contains the HTML. | ||
| + | |||
| + | <div style="display:flex;justify-content:center;"> | ||
| + | {| class="wikitable" | ||
| + | ! loadReportContent | ||
| + | |- | ||
| + | | | ||
| + | string reportContent = await report.GetReportContentAsync(req.CTS.Token); | ||
| + | |- | ||
| + | |} | ||
| + | </div> | ||
| + | |||
| + | ::Eventually, the string is converted into a stream then assigned so that it's available for dataBinding. | ||
| + | |||
| + | <div style="display:flex;justify-content:center;"> | ||
| + | {| class="wikitable" | ||
| + | ! loadReportContent | ||
| + | |- | ||
| + | | | ||
| + | Stream = req.Stream; | ||
| + | |- | ||
| + | |} | ||
| + | </div> | ||
| + | |||
| + | ::The databinding can be found in <b>ReportSection.xaml</b>. | ||
| + | |||
| + | <div style="display:flex;justify-content:center;"> | ||
| + | {| class="wikitable" | ||
| + | ! ReportSection.xaml | ||
| + | |- | ||
| + | | | ||
| + | <controls:WebBrowser x:Name="WebBrowser" Stream="{Binding <b>HTMLReport.Stream</b>}" /> | ||
| + | |- | ||
| + | |} | ||
| + | </div> | ||
Revision as of 15:42, 12 November 2021
This page documents how the Reports in Truxton are displayed, or how the View of the report is created.
UI Guide Menu
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; |
- The databinding can be found in ReportSection.xaml.
| ReportSection.xaml |
|---|
<controls:WebBrowser x:Name="WebBrowser" Stream="{Binding HTMLReport.Stream}" />
|