1
0
mirror of git://f0xx.org/android_cast synced 2026-07-29 05:37:52 +03:00
This commit is contained in:
Anton Afanasyeu
2026-06-02 15:24:11 +02:00
parent 9f9d617730
commit 5e940690e9
35 changed files with 896 additions and 41 deletions

View File

@@ -1,5 +1,5 @@
#!/usr/bin/env python3
"""Build tmp/GRAFANA_vs_others_graphvis_pivot.pdf decision memo."""
"""Build docs/GRAFANA_vs_others_graphvis_pivot.pdf decision memo."""
from __future__ import annotations
@@ -13,16 +13,26 @@ from reportlab.lib.units import cm
from reportlab.platypus import Paragraph, SimpleDocTemplate, Spacer, Table, TableStyle
ROOT = Path(__file__).resolve().parents[2]
OUT_PDF = ROOT / "tmp" / "GRAFANA_vs_others_graphvis_pivot.pdf"
SOURCE_MD = ROOT / "tmp" / "GRAFANA_vs_others_graphvis_pivot.md"
OUT_PDF = ROOT / "docs" / "GRAFANA_vs_others_graphvis_pivot.pdf"
SOURCE_MD = ROOT / "docs" / "GRAFANA_vs_others_graphvis_pivot.md"
def p(text: str, style) -> Paragraph:
return Paragraph(text.replace("\n", "<br/>"), style)
def _cell(text: str, style: ParagraphStyle) -> Paragraph:
safe = (text or "").replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;")
return Paragraph(safe.replace("\n", "<br/>"), style)
def add_table(story, headers: list[str], rows: list[list[str]], col_widths) -> None:
data = [headers] + rows
styles = getSampleStyleSheet()
head = ParagraphStyle("TblHead", parent=styles["Normal"], fontName="Helvetica-Bold", fontSize=9, leading=11)
body = ParagraphStyle("TblBody", parent=styles["Normal"], fontSize=9, leading=11)
data = [[_cell(h, head) for h in headers]]
for row in rows:
data.append([_cell(c, body) for c in row])
t = Table(data, colWidths=col_widths)
t.setStyle(
TableStyle(
@@ -33,6 +43,7 @@ def add_table(story, headers: list[str], rows: list[list[str]], col_widths) -> N
("FONTSIZE", (0, 0), (-1, -1), 9),
("VALIGN", (0, 0), (-1, -1), "TOP"),
("GRID", (0, 0), (-1, -1), 0.5, colors.lightgrey),
("WORDWRAP", (0, 0), (-1, -1), "CJK"),
("ROWBACKGROUNDS", (0, 1), (-1, -1), [colors.white, colors.HexColor("#F5F5F5")]),
("LEFTPADDING", (0, 0), (-1, -1), 6),
("RIGHTPADDING", (0, 0), (-1, -1), 6),
@@ -71,7 +82,7 @@ def build_pdf() -> None:
["Context", "apps.f0xx.org + BE Alpine (nginx + php-fpm + MariaDB)"],
["Constraint", "No cron ETL/data copy/pipeline complexity"],
["Output", "Decision memo: Grafana vs custom PHP dashboards"],
["Markdown source", str(SOURCE_MD.relative_to(ROOT))],
["Markdown source", "docs/GRAFANA_vs_others_graphvis_pivot.md"],
],
[4.2 * cm, 12.2 * cm],
)