#let timetable = state("6467cc7b-cfda-4f4d-a2fe-2e5e696dff91", (:)) #let format_int(x) = ( if x == 0 [0] else if x > 0 [$+$#str(x)] else [#str(x)] ) #let addTimetable(times) = { timetable.update(tt => { for (date, tasks) in times.pairs() { tt.insert(date, tasks.filter(t => t.name != "Total")) } return tt }) } #let dayNr = state("345de571-1c11-4fba-9ebf-61c2088e286a", 0) #let entry( day: datetime, defaultPerson: str, supplementaryPersons: (:), tagesablauf, hilfestellungen, gut, schlecht, erkenntnisse, ) = { dayNr.update(i => i + 1) context { if dayNr.get() > 1 { pagebreak(weak: true) } heading(level: 2, [Tag #dayNr.get() | #day.display("[day].[month].[year]")]) show heading.where(level: 3): set heading(numbering: none, outlined: false) show heading.where(level: 3): set heading(numbering: none, outlined: false) let taetigkeiten = timetable.get().at(day.display("[day padding:none]-[month padding:none]-[year]")) let total_soll = ( taetigkeiten.fold( 0, (acc, t) => if t.keys().contains("should") { acc + t.should } else { acc }, ) / 60 ) // total should hours let total_ist = ( taetigkeiten.fold( 0, (acc, t) => if t.keys().contains("is") { acc + t.is } else { acc }, ) / 60 ) // total should hours figure( table( columns: (3fr, 1fr, 1fr, 1fr, 1fr), align: (left, center, center, center, center), table.header([Tätigkeiten], [Beteiligte Personen], [Aufwand SOLL [h]], [Aufwand IST [h]], [Differenz [h]]), ..taetigkeiten .map(t => ( t.at("name"), if supplementaryPersons.keys().contains(t.at("name")) { (defaultPerson, ..supplementaryPersons.at(t.at("name"))).join(", ") } else { defaultPerson }, str(t.at("should", default: "") / 60), str(t.at("is", default: "") / 60), if t.keys().contains("is") and t.keys().contains("should") { format_int((t.is / 60) - (t.should / 60)) } else { "" }, )) .flatten(), [*Totaler Zeitaufwand*], [], str(total_soll), str(total_ist), format_int(total_ist - total_soll), ), caption: [Tätigkeiten Tag #dayNr.get()], ) [ === Tagesablauf #tagesablauf === Hilfestellungen #hilfestellungen === Reflexion _Was lief gut?_ #gut _Was lief weniger gut?_ #schlecht _Erkenntnisse_ #erkenntnisse ] } }