Commit d7b3c4e
Replace MiKTeX/LaTeX reporting with Markdown + QuestPDF (#325)
* Replace MiKTeX/LaTeX reporting with Markdown + QuestPDF
Removes the dependency on OSPSuite.TeXReporting and MiKTeX, replacing
it with a simpler, pure .NET solution:
- Markdown reports with embedded SVG charts (viewable in VS Code, GitHub)
- PDF reports via QuestPDF (no external tools required)
- Custom SVG chart generator for 2D line charts with log/linear scale
- Report format switchable via ReportFormat enum
New files:
- Reporting/Charts/SvgChartGenerator.cs - SVG line chart generation
- Reporting/Markdown/* - Markdown builder pattern implementation
- Reporting/Pdf/PdfReportDocument.cs - QuestPDF document
- Services/MarkdownReportingTask.cs, PdfReportingTask.cs
Removed:
- All *TeXBuilder.cs files
- *Reporter.cs files
- OSPSuite.TeXReporting dependency from all projects
Closes #183
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Restore fixProductNameForWindows11 method for tests
The method was removed during cross-platform refactoring but is
needed by OperatingSystemInfoSpecs tests that use reflection to
call it.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Revert OperatingSystemInfo to original Windows-specific implementation
Keep the original Windows-specific OperatingSystemInfo that uses
Registry, WMI, and SystemInformation APIs. Update Core and Tests
projects to target net8.0-windows.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Trigger update
* Address PR comments
* Refactor test to use real MarkdownBuilderRepository
Replace TestMarkdownBuilderRepository with the real MarkdownBuilderRepository
and all production builders. This improves test coverage by exercising the
actual builder implementations rather than duplicating their logic.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Add MissingFileComparisonResult handling in Markdown and PDF reports
- Create MissingFileComparisonResultMarkdownBuilder to properly report
missing file details including which folder contains the file and
which folder is missing it
- Add ComposeMissingFileResult in PdfReportDocument to display the
missing file validation message in PDF reports
- Register the new builder in ValidatorRegister
- Add builder to test setup
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Fix PR review findings: table escaping, null checks, and test refactoring
- Escape pipe characters in MarkdownReportContext.AppendTable to prevent
broken markdown tables when cell values contain '|'
- Add null validation for installationValidationResult and RunSummary in
both MarkdownReportingTask and PdfReportingTask before accessing StartTime
- Refactor MarkdownReportingSpecs to use ContextForIntegration, resolving
IMarkdownReportingTask from the DI container instead of manually
constructing all builders
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Refactor ValidationReportingTask to use ReportOptions parameter
Replace DefaultFormat property with ReportOptions parameter that includes:
- ReportFormat as flags enum (None, Markdown, Pdf, All)
- OpenReport boolean
- Convenience properties ExportToMarkdown and ExportToPdf
This allows generating both Markdown and PDF reports in a single call
by using ReportFormat.All.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Bump to version 13. ALso use correct builder
* Fix Markdown bold formatting by removing trailing space from ValidationResult caption
The trailing space in the caption prevented proper bold formatting in Markdown
output (**Result of the validation: ** instead of **Result of the validation:**).
* Only generate charts for invalid outputs in Markdown and PDF reports
Valid outputs with matching curves don't need charts. Removing the
valid-outputs-with-data loop prevents generating thousands of
unnecessary pages when a file has many outputs but only a few are invalid.
* Ensures that we export the expected format
* Add all valid curves back
* Use report-specific filenames for PDF output
Pass reportName parameter to reportOutputPath so PDF filenames reflect
the actual report type (FolderComparison vs InstallationValidation).
* Extract shared helpers, disable start without report format, add tests
- Extract ChartDataFactory.CreateFor() to eliminate duplicate
createChartData methods in OutputComparisonResultMarkdownBuilder
and PdfReportDocument
- Extract ColorExtensions.ToHexString() to replace colorToHex in
SvgChartGenerator, toQuestColor in PdfReportDocument, and inline
hex formatting in MarkdownReportContext
- Fix PDF run summary labels: start/end time now have their own
labels instead of reusing BatchRunDuration for the start time
- Disable start button in MainView and SimulationComparisonView
when neither PDF nor Markdown report format is selected
- Replace Enumerable.Select allocation with Enumerable.Repeat in
MarkdownReportContext.AppendTable separator row
- Add MarkdownReportContextSpecs unit tests covering headings,
tables, colored status, bold formatting, and content accumulation
- Add observations to MarkdownReportingSpecs for SVG chart,
validation state, and deviation section
* Replace hardcoded strings with resources and add null guards
- Add localized resource keys to Assets.Reporting: StartTime, EndTime,
Yes, No, OSLabel, FileWasContainedInFolder, ButWasMissingInFolder,
ValidationPerformedIn
- Replace all hardcoded English strings in PdfReportDocument with
Assets.Reporting resources for consistent localization
- Add constructor null guards in PdfReportDocument for validationResult,
comparisonResult, and svgChartGenerator
- Add null guard for comparisonResult in both PdfReportingTask and
MarkdownReportingTask CreateReport overloads
* Ensure enable state is reset
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: msevestre <msevestre@users.noreply.github.com>1 parent ab2e4c5 commit d7b3c4e
62 files changed
Lines changed: 2465 additions & 817 deletions
File tree
- src
- InstallationValidator.Core
- Assets
- Domain
- Presentation
- DTO
- Views
- Reporting
- Charts
- Markdown
- Pdf
- Services
- InstallationValidator
- Views
- SimulationOutputComparer
- Views
- tests/InstallationValidator.Tests
- IntegrationTests
- Presentation
- Reporting
- Services
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
246 | 246 | | |
247 | 247 | | |
248 | 248 | | |
| 249 | + | |
| 250 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
52 | 52 | | |
53 | 53 | | |
54 | 54 | | |
| 55 | + | |
| 56 | + | |
55 | 57 | | |
56 | 58 | | |
57 | 59 | | |
| |||
187 | 189 | | |
188 | 190 | | |
189 | 191 | | |
| 192 | + | |
| 193 | + | |
190 | 194 | | |
191 | | - | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
192 | 199 | | |
193 | 200 | | |
194 | 201 | | |
| |||
213 | 220 | | |
214 | 221 | | |
215 | 222 | | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
216 | 227 | | |
217 | 228 | | |
218 | 229 | | |
| |||
Lines changed: 1 addition & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
13 | | - | |
14 | 13 | | |
15 | 14 | | |
16 | 15 | | |
| |||
103 | 102 | | |
104 | 103 | | |
105 | 104 | | |
106 | | - | |
| 105 | + | |
Lines changed: 17 additions & 15 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
5 | 7 | | |
6 | 8 | | |
7 | 9 | | |
| |||
10 | 12 | | |
11 | 13 | | |
12 | 14 | | |
13 | | - | |
| 15 | + | |
14 | 16 | | |
15 | 17 | | |
16 | 18 | | |
| |||
24 | 26 | | |
25 | 27 | | |
26 | 28 | | |
27 | | - | |
28 | | - | |
29 | | - | |
30 | | - | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
36 | 42 | | |
37 | 43 | | |
38 | 44 | | |
| |||
42 | 48 | | |
43 | 49 | | |
44 | 50 | | |
45 | | - | |
46 | | - | |
47 | | - | |
48 | | - | |
49 | 51 | | |
50 | 52 | | |
Lines changed: 8 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
Lines changed: 11 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
| 31 | + | |
31 | 32 | | |
32 | 33 | | |
33 | 34 | | |
| |||
40 | 41 | | |
41 | 42 | | |
42 | 43 | | |
| 44 | + | |
43 | 45 | | |
44 | 46 | | |
45 | 47 | | |
| |||
86 | 88 | | |
87 | 89 | | |
88 | 90 | | |
89 | | - | |
| 91 | + | |
90 | 92 | | |
91 | 93 | | |
92 | 94 | | |
| |||
109 | 111 | | |
110 | 112 | | |
111 | 113 | | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
112 | 122 | | |
113 | 123 | | |
114 | 124 | | |
| |||
Lines changed: 11 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
35 | 35 | | |
36 | 36 | | |
37 | 37 | | |
| 38 | + | |
38 | 39 | | |
39 | 40 | | |
40 | 41 | | |
| |||
45 | 46 | | |
46 | 47 | | |
47 | 48 | | |
| 49 | + | |
48 | 50 | | |
49 | 51 | | |
50 | 52 | | |
| |||
70 | 72 | | |
71 | 73 | | |
72 | 74 | | |
73 | | - | |
| 75 | + | |
74 | 76 | | |
75 | 77 | | |
76 | 78 | | |
| |||
102 | 104 | | |
103 | 105 | | |
104 | 106 | | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
105 | 115 | | |
106 | 116 | | |
107 | 117 | | |
| |||
Lines changed: 1 addition & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
| 9 | + | |
9 | 10 | | |
10 | 11 | | |
11 | 12 | | |
Lines changed: 1 addition & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| 10 | + | |
10 | 11 | | |
11 | 12 | | |
Lines changed: 0 additions & 21 deletions
This file was deleted.
0 commit comments