feat(orion): extend report layout settings to version 1.1
This commit is contained in:
parent
12e1761a5b
commit
613ffdc8b7
591 changed files with 3601 additions and 999 deletions
Binary file not shown.
|
|
@ -14,6 +14,30 @@
|
|||
@bottom-left { content: element(report-footer); }
|
||||
}
|
||||
|
||||
@page cover-narrow {
|
||||
margin: 16mm 14mm 16mm 14mm;
|
||||
@top-left { content: ""; }
|
||||
@bottom-left { content: ""; }
|
||||
}
|
||||
|
||||
@page cover-wide {
|
||||
margin: 24mm 22mm 24mm 22mm;
|
||||
@top-left { content: ""; }
|
||||
@bottom-left { content: ""; }
|
||||
}
|
||||
|
||||
@page report-narrow {
|
||||
margin: 30mm 14mm 20mm 14mm;
|
||||
@top-left { content: element(report-header); }
|
||||
@bottom-left { content: element(report-footer); }
|
||||
}
|
||||
|
||||
@page report-wide {
|
||||
margin: 38mm 22mm 28mm 22mm;
|
||||
@top-left { content: element(report-header); }
|
||||
@bottom-left { content: element(report-footer); }
|
||||
}
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
|
@ -145,6 +169,22 @@ body {
|
|||
page: report;
|
||||
}
|
||||
|
||||
.page-margin-narrow .cover-page {
|
||||
page: cover-narrow;
|
||||
}
|
||||
|
||||
.page-margin-wide .cover-page {
|
||||
page: cover-wide;
|
||||
}
|
||||
|
||||
.page-margin-narrow .report-content {
|
||||
page: report-narrow;
|
||||
}
|
||||
|
||||
.page-margin-wide .report-content {
|
||||
page: report-wide;
|
||||
}
|
||||
|
||||
.cover-top {
|
||||
align-items: flex-start;
|
||||
display: grid;
|
||||
|
|
@ -159,6 +199,14 @@ body {
|
|||
width: auto;
|
||||
}
|
||||
|
||||
.logo-size-small .cover-logo {
|
||||
height: 12mm;
|
||||
}
|
||||
|
||||
.logo-size-large .cover-logo {
|
||||
height: 22mm;
|
||||
}
|
||||
|
||||
.company-address {
|
||||
color: #6B7C85;
|
||||
font-size: 8.5pt;
|
||||
|
|
@ -198,6 +246,29 @@ h1 {
|
|||
line-height: 1.25;
|
||||
}
|
||||
|
||||
.cover-compact .cover-top {
|
||||
margin-bottom: 5mm;
|
||||
}
|
||||
|
||||
.cover-compact h1 {
|
||||
font-size: 24pt;
|
||||
margin-bottom: 2mm;
|
||||
}
|
||||
|
||||
.cover-compact .cover-subtitle {
|
||||
font-size: 11.2pt;
|
||||
margin-bottom: 2mm;
|
||||
}
|
||||
|
||||
.cover-compact .cover-page .definition-row {
|
||||
padding: .35mm 0;
|
||||
}
|
||||
|
||||
.cover-compact .cover-page .definition-list {
|
||||
font-size: 8.8pt;
|
||||
line-height: 1.18;
|
||||
}
|
||||
|
||||
.cover-closing {
|
||||
break-inside: avoid;
|
||||
margin-top: 1.5mm;
|
||||
|
|
@ -299,11 +370,18 @@ h1 {
|
|||
.signature-block {
|
||||
break-inside: avoid;
|
||||
color: #6B7C85;
|
||||
margin-top: 9mm;
|
||||
page-break-inside: avoid;
|
||||
width: 82mm;
|
||||
}
|
||||
|
||||
.signature-grid {
|
||||
break-inside: avoid;
|
||||
display: flex;
|
||||
gap: 14mm;
|
||||
margin-top: 9mm;
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
|
||||
.signature-line {
|
||||
border-top: 1px solid #6B7C85;
|
||||
height: 0;
|
||||
|
|
@ -320,6 +398,46 @@ h1 {
|
|||
margin-top: 9mm;
|
||||
}
|
||||
|
||||
.main-chapter-breaks .report-content .chapter {
|
||||
break-before: page;
|
||||
}
|
||||
|
||||
.main-chapter-breaks .report-content .chapter:first-of-type {
|
||||
break-before: auto;
|
||||
}
|
||||
|
||||
.main-chapter-flow .report-content .chapter {
|
||||
break-before: auto;
|
||||
}
|
||||
|
||||
.section-spacing-compact h2 {
|
||||
margin-bottom: 4mm;
|
||||
padding-bottom: 2.5mm;
|
||||
}
|
||||
|
||||
.section-spacing-compact h3 {
|
||||
margin: 5mm 0 2mm 0;
|
||||
}
|
||||
|
||||
.section-spacing-compact p {
|
||||
margin-top: 2mm;
|
||||
margin-bottom: 2mm;
|
||||
}
|
||||
|
||||
.section-spacing-compact .chapter,
|
||||
.section-spacing-compact .chapter + .chapter {
|
||||
margin-top: 6mm;
|
||||
}
|
||||
|
||||
.section-spacing-compact .data-table {
|
||||
margin-top: 2.5mm;
|
||||
}
|
||||
|
||||
.section-spacing-compact .figure-grid {
|
||||
gap: 5mm;
|
||||
margin-top: 5mm;
|
||||
}
|
||||
|
||||
h2 {
|
||||
border-bottom: .25mm solid #DCE3E3;
|
||||
color: #2E3B40;
|
||||
|
|
@ -400,6 +518,19 @@ dd {
|
|||
font-size: 8.5pt;
|
||||
}
|
||||
|
||||
.table-layout-compact .data-table {
|
||||
margin-top: 2.5mm;
|
||||
}
|
||||
|
||||
.table-layout-compact .data-table th,
|
||||
.table-layout-compact .data-table td {
|
||||
padding: 1.5mm;
|
||||
}
|
||||
|
||||
.table-font-small .data-table {
|
||||
font-size: 8.4pt;
|
||||
}
|
||||
|
||||
.toc-list {
|
||||
counter-reset: toc;
|
||||
list-style: none;
|
||||
|
|
@ -441,6 +572,26 @@ dd {
|
|||
margin-top: 8mm;
|
||||
}
|
||||
|
||||
.image-position-stacked .figure-grid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.image-position-side-by-side .figure-grid {
|
||||
grid-template-columns: 1fr 1fr;
|
||||
}
|
||||
|
||||
.image-page-max-1 .report-figure {
|
||||
break-after: page;
|
||||
}
|
||||
|
||||
.image-page-max-2 .report-figure:nth-child(2n) {
|
||||
break-after: page;
|
||||
}
|
||||
|
||||
.image-page-max-4 .report-figure:nth-child(4n) {
|
||||
break-after: page;
|
||||
}
|
||||
|
||||
.report-figure {
|
||||
break-inside: avoid;
|
||||
margin: 0;
|
||||
|
|
@ -454,6 +605,64 @@ dd {
|
|||
width: 100%;
|
||||
}
|
||||
|
||||
.image-size-small .report-image {
|
||||
max-height: 55mm;
|
||||
}
|
||||
|
||||
.image-size-medium .report-image {
|
||||
max-height: 90mm;
|
||||
}
|
||||
|
||||
.image-size-large .report-image {
|
||||
max-height: 125mm;
|
||||
}
|
||||
|
||||
.image-captions-off .image-caption {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.logo-size-small .report-header-brand img {
|
||||
height: 14mm;
|
||||
}
|
||||
|
||||
.logo-size-large .report-header-brand img {
|
||||
height: 24mm;
|
||||
}
|
||||
|
||||
.layout-compact html,
|
||||
.layout-compact {
|
||||
line-height: 1.32;
|
||||
}
|
||||
|
||||
.layout-compact h2 {
|
||||
font-size: 18pt;
|
||||
margin-bottom: 4mm;
|
||||
padding-bottom: 2.5mm;
|
||||
}
|
||||
|
||||
.layout-compact h3 {
|
||||
margin: 5mm 0 2mm 0;
|
||||
}
|
||||
|
||||
.layout-compact .chapter,
|
||||
.layout-compact .chapter + .chapter {
|
||||
margin-top: 6mm;
|
||||
}
|
||||
|
||||
.layout-compact .definition-row {
|
||||
padding: 1.4mm 0;
|
||||
}
|
||||
|
||||
.layout-compact .data-table th,
|
||||
.layout-compact .data-table td {
|
||||
padding: 1.6mm;
|
||||
}
|
||||
|
||||
.layout-compact .result-box {
|
||||
margin: 2.5mm 0;
|
||||
padding: 2.4mm 5mm;
|
||||
}
|
||||
|
||||
figcaption {
|
||||
color: #6B7C85;
|
||||
font-size: 8.5pt;
|
||||
|
|
|
|||
|
|
@ -8,30 +8,38 @@ from app.modules.orion.html import text
|
|||
|
||||
|
||||
def render_report_chrome(context: ReportContext, logo_uri: str) -> str:
|
||||
settings = context.report_settings
|
||||
report_number = text(context.validation.report_number)
|
||||
version = text(context.validation.version)
|
||||
report_date = text(context.validation.updated_at)
|
||||
return f"""
|
||||
<header class="report-header" aria-label="Berichtskopf">
|
||||
<div class="report-header-brand">
|
||||
<img src="{logo_uri}" alt="SCHUBAMED">
|
||||
<div>
|
||||
<strong>SCHUBAMED®</strong>
|
||||
<span>Aufbereitung mit System</span>
|
||||
</div>
|
||||
</div>
|
||||
<dl class="report-header-meta">
|
||||
<div><dt>Berichtsnummer</dt><dd>{report_number}</dd></div>
|
||||
<div><dt>Version</dt><dd>{version}</dd></div>
|
||||
<div><dt>Datum</dt><dd>{report_date}</dd></div>
|
||||
</dl>
|
||||
</header>
|
||||
<footer class="report-footer" aria-label="Berichtsfuß">
|
||||
<span>Validation Suite</span>
|
||||
<span>Seite <span class="page-number"></span> von <span class="page-count"></span></span>
|
||||
<span>Version {version}</span>
|
||||
</footer>
|
||||
"""
|
||||
header = ""
|
||||
footer = ""
|
||||
if settings.show_header:
|
||||
header = f"""
|
||||
<header class="report-header" aria-label="Berichtskopf">
|
||||
<div class="report-header-brand">
|
||||
<img src="{logo_uri}" alt="SCHUBAMED">
|
||||
<div>
|
||||
<strong>SCHUBAMED®</strong>
|
||||
<span>Aufbereitung mit System</span>
|
||||
</div>
|
||||
</div>
|
||||
<dl class="report-header-meta">
|
||||
<div><dt>Berichtsnummer</dt><dd>{report_number}</dd></div>
|
||||
<div><dt>Version</dt><dd>{version}</dd></div>
|
||||
<div><dt>Datum</dt><dd>{report_date}</dd></div>
|
||||
</dl>
|
||||
</header>
|
||||
"""
|
||||
if settings.show_footer:
|
||||
footer = f"""
|
||||
<footer class="report-footer" aria-label="Berichtsfuß">
|
||||
<span>Validation Suite</span>
|
||||
<span>Seite <span class="page-number"></span> von <span class="page-count"></span></span>
|
||||
<span>Version {version}</span>
|
||||
</footer>
|
||||
"""
|
||||
return header + footer
|
||||
|
||||
|
||||
def render_document(context: ReportContext, chapters: list[str]) -> str:
|
||||
|
|
@ -40,6 +48,24 @@ def render_document(context: ReportContext, chapters: list[str]) -> str:
|
|||
title = f"Validierungsbericht {context.validation.report_number}"
|
||||
cover_markup = chapters[0] if chapters else ""
|
||||
content_markup = "\n".join(chapters[1:])
|
||||
settings = context.report_settings
|
||||
body_classes = " ".join(
|
||||
[
|
||||
"orion-report",
|
||||
f"layout-{settings.layout_profile.lower()}",
|
||||
f"page-margin-{settings.page_margin.lower()}",
|
||||
f"section-spacing-{settings.section_spacing.lower()}",
|
||||
f"table-layout-{settings.table_layout.lower()}",
|
||||
f"table-font-{settings.table_font_size.lower()}",
|
||||
f"image-size-{settings.image_size.lower()}",
|
||||
f"image-position-{settings.image_position.lower().replace('_', '-')}",
|
||||
f"image-page-max-{settings.max_images_per_page}",
|
||||
f"logo-size-{settings.logo_size.lower()}",
|
||||
"image-captions-on" if settings.show_image_captions else "image-captions-off",
|
||||
"cover-compact" if settings.compact_cover else "cover-standard",
|
||||
"main-chapter-breaks" if settings.page_break_before_main_chapters else "main-chapter-flow",
|
||||
]
|
||||
)
|
||||
return f"""<!doctype html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
|
|
@ -48,7 +74,7 @@ def render_document(context: ReportContext, chapters: list[str]) -> str:
|
|||
<title>{text(title)}</title>
|
||||
<style>{css}</style>
|
||||
</head>
|
||||
<body>
|
||||
<body class="{body_classes}">
|
||||
<article class="report-document">
|
||||
{cover_markup}
|
||||
<section class="report-content">
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue