125 lines
2.9 KiB
Typst
125 lines
2.9 KiB
Typst
#import "./persons.typ"
|
|
#import "../pallete.typ": palette
|
|
// helpers for title
|
|
#let getWhere(person) = {
|
|
let function = person.function
|
|
if function == "Validierungsexperte" {
|
|
return "In der Genehmigung"
|
|
}
|
|
if function == "Hauptexperte" or function == "Nebenexperte" or function == "Verantwortliche Fachkraft" {
|
|
return "In der Durchführung"
|
|
}
|
|
if function == "Berufsbildner" {
|
|
return "Zur Information, Kenntnis"
|
|
}
|
|
return ""
|
|
}
|
|
|
|
#let beteiligtePersonen() = {
|
|
return (
|
|
persons.byFunction("Validierungsexperte"),
|
|
persons.byFunction("Hauptexperte"),
|
|
persons.byFunction("Nebenexperte"),
|
|
persons.byFunction("Verantwortliche Fachkraft"),
|
|
persons.byFunction("Berufsbildner"),
|
|
)
|
|
}
|
|
#let title(
|
|
title: content,
|
|
author: content,
|
|
company: content,
|
|
departement: content,
|
|
tradeschool: "Gewerblich-industrielle Berufsschule Bern GIBB",
|
|
metadata: (
|
|
specialisation: "Applikationsentwicklung",
|
|
managementMethod: "HERMES",
|
|
// year as in "Jahrgang"
|
|
year: "IPA 2025",
|
|
place: "Kanton Bern",
|
|
dateOfSubmission: datetime,
|
|
currentversion: version,
|
|
),
|
|
) = {
|
|
// set text(font: "Helvetica Neue")
|
|
|
|
place(
|
|
top + left,
|
|
image("../assets/Logo_RGB_farbig_positiv.svg", height: 2cm),
|
|
)
|
|
place(
|
|
top + right,
|
|
[
|
|
#set text(size: 8pt, font: "Helvetica Neue")
|
|
#v(4pt)
|
|
Eidgenössisches Finanzdepartement EFD
|
|
|
|
*#company* \
|
|
#departement \
|
|
Individuelle praktische Arbeit
|
|
],
|
|
)
|
|
|
|
v(4cm)
|
|
|
|
text(
|
|
size: 21pt,
|
|
font: "Helvetica Neue",
|
|
fill: palette.secondary.at("500"),
|
|
title,
|
|
)
|
|
|
|
align(
|
|
right,
|
|
text(
|
|
size: 17pt,
|
|
font: "Helvetica Neue",
|
|
fill: gray,
|
|
[
|
|
Individuelle praktische Arbeit \
|
|
#author
|
|
],
|
|
),
|
|
)
|
|
|
|
set table(stroke: 0.1pt + palette.ui.border)
|
|
|
|
v(.5cm)
|
|
[
|
|
#set text(font: "Helvetica Neue")
|
|
#table(
|
|
columns: (.5fr, 1fr),
|
|
inset: 8pt,
|
|
align: horizon,
|
|
[*Autor*], author,
|
|
[*Firma*], company,
|
|
[*Abteilung*], departement,
|
|
[*Berufsschule*], [gibb Berufsfachschule Bern],
|
|
)
|
|
|
|
#heading(level: 3, [Beteiligte Personen], outlined: false)
|
|
|
|
#context table(
|
|
columns: (.5fr, .5fr, .5fr),
|
|
inset: 8pt,
|
|
..beteiligtePersonen()
|
|
.map(p => (
|
|
par([*#p.at("function-name", default: p.function)*], justify: false),
|
|
link("mailto:" + p.email)[#p.name],
|
|
context getWhere(p),
|
|
))
|
|
.flatten()
|
|
)
|
|
|
|
#table(
|
|
columns: (.5fr, 1fr),
|
|
inset: 8pt,
|
|
align: horizon,
|
|
[*Fachrichtung*], [#metadata.specialisation],
|
|
[*Projektvorgehensmodell*], [#metadata.managementMethod],
|
|
[*Jahrgang, Kanton*], [#metadata.dateOfSubmission.year(), #metadata.place],
|
|
[*Abgabedatum*], metadata.dateOfSubmission.display("[day].[month].[year]"),
|
|
[*Version*], [Version v#metadata.currentversion],
|
|
)
|
|
]
|
|
}
|