From 8d6a12d117f77e4e028eea6b715d77ffd48be474 Mon Sep 17 00:00:00 2001 From: Niklas Kapelle Date: Tue, 27 Jan 2026 15:11:56 +0100 Subject: [PATCH] initial commit --- .gitignore | 1 + main.typ | 172 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 173 insertions(+) create mode 100644 .gitignore create mode 100644 main.typ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a136337 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.pdf diff --git a/main.typ b/main.typ new file mode 100644 index 0000000..c0d7b86 --- /dev/null +++ b/main.typ @@ -0,0 +1,172 @@ +#set page(margin: (x: 1cm, y: 0.3cm)) +#set text(font: "DejaVu Sans", size: 10pt, lang: "de") + +#let section_heading(name) = { + [ + #set par(spacing: 0em) + #text(size: 13pt, weight: "bold")[#name] + ] +} + +#let check_table(items) = { + [ + #table( + columns: (10em, 7em, 1fr), + align: (left + horizon, center + horizon, left + horizon), + stroke: 0.5pt, + inset: 3pt, + + [*Prüfung*], [*Ergebnis*], [*Bemerkungen*], + + ..items + .map(item => { + let item_name = if type(item) == dictionary { item.name } else { + item + } + let use_checkbox = if type(item) == dictionary { + item.at("checkbox", default: true) + } else { true } + + ( + [#item_name], + if use_checkbox { + [#box(width: 1em, height: 1em, stroke: 0.5pt)] + } else { + [#box(width: 100%, height: 1em)] + }, + [#box(width: 100%, height: 1em)], + ) + }) + .flatten(), + ) + ] +} + +#let maintance_table(items) = { + [ + #table( + columns: (10em, 10em, 9em, 12em, 1fr), + align: ( + left + horizon, + left + horizon, + center + horizon, + center + horizon, + left + horizon, + ), + stroke: 0.5pt, + inset: 3pt, + + [*Wartung*], + [*Betriebstunden*], + [*Druchgeführt*], + [*Letze Wartung bei*], + [*Bemerkungen*], + + ..items + .map(item => { + let name = item.at("name") + let hours = item.at("hours") + + ( + [#name], + [Alle #hours Stunden], + [#box(width: 1em, height: 1em, stroke: 0.5pt)], + [#box(width: 100%, height: 1em)], + [#box(width: 100%, height: 1em)], + ) + }) + .flatten(), + ) + ] +} + +#let funktionstest_footnote = footnote( + "Anschalten und normalen betrieb feststellen", +) + +#align(center)[ + #text(size: 18pt, weight: "bold")[Monatliches Prüfprotokoll CBRN-Erkunder] +] + +#v(0.5em) + +#grid( + columns: (1fr, 1fr), + gutter: 1em, + [ + *Datum:* #box(width: 100%, line(length: 100%, stroke: 0.5pt + black)) + ], + [ + *Prüfende:* #box(width: 100%, line(length: 100%, stroke: 0.5pt + black)) + ], +) + +#section_heading("Tiger PID") +#check_table( + ( + [Funktionsprüfung#footnote()], + "BUMP-Test", + (name: "Betriebsstunden", checkbox: false), + ), +) +#maintance_table( + ( + (name: "Filteraustausch", hours: 100), + (name: "Lampen reinigung", hours: 100), + ), +) + +#section_heading("RAID M 100 IMS") +#check_table( + ( + [Funktionsprüfung#footnote()], + "Prüfsubstanz G", + "Prüfsubstanz H", + (name: "RIN wert", checkbox: false), + (name: "RIP wert", checkbox: false), + (name: "Betriebsstunden", checkbox: false), + ), +) +#maintance_table( + ( + (name: "Filteraustausch", hours: 600), + ), +) + +#section_heading("CoMo") +#check_table( + ( + [Sichtprüfung#footnote("Keine schäden an der Folie")], + [Funktionsprüfung#funktionstest_footnote], + [Folientest#footnote("CoMo gegen die Sonne halten. Messwert darf sich nicht stark ändern")], + ), +) + +#section_heading("MX6 IBrid") +BUMP-Test durchführen und Alarme prüfen. +#check_table( + ( + "Visueller Alarm", + "Akustischer Alarm", + "Vibrations Alarm", + ), +) + +#section_heading("Dräger X-AM 8000") +#check_table( + ( + [Prüfstation#footnote("Im funkraum der HFW")], + ), +) + +#section_heading("FH 40 G") +#check_table( + ( + [Funktionsprüfung#footnote()], + ( + name: [Messwert#footnote("Messwert an einer festen stelle z. B. Tür Fahrzeughallen vom Erkunder")], + checkbox: false, + ), + ), +) +