PA_Vorlage/Content/01_content.tex
2025-08-31 13:44:05 +02:00

366 lines
20 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

% !TEX root = ../Main.tex
% Input Validation: Summe
\newcommand{\validateCurrency}{\detokenize{
var amount = String(event.value ?? "0").replaceAll(".", "").replaceAll(",", ".");
if (amount && (isNaN(amount) || parseFloat(amount) < 0)) {
app.alert("Ungueltiger Betrag: " + event.value + ". Bitte geben Sie eine gueltige Zahl ein.");
event.rc = false;
} else {
event.value = parseFloat(amount).toLocaleString("de-DE", { minimumFractionDigits: 2, maximumFractionDigits: 2 });
}
}}
\begin{Form}[]
\paPage{VSM Allgemeiner Teil}{
% Abschnitt 1: Antragsteller : entweder Institution oder Person
% -> aktiviert/deaktiviert zugehörige Felder (über radio buttons) mit JavaScript
\FormSection{Antragsteller}{%
% Radio buttons : horizontal oben
\begin{tabular}{@{}p{0.3\textwidth}p{0.35\textwidth}p{0.35\textwidth}@{}}
\textbf{Art des Antragstellers} & \raisebox{-1pt}{\ChoiceMenu[
radio,
name=pa-applicant-type,
width=1em,
height=1em,
radiosymbol=\ding{108}
]{}{=person}} Person & \raisebox{-1pt}{\ChoiceMenu[
radio,
name=pa-applicant-type,
width=1em,
height=1em,
radiosymbol=\ding{108}
]{}{=institution}} Institution
\end{tabular}\vspace{-1em}
}
\FormSection{Institution (sofern vorhanden)}{%
% Radio buttons : horizontal oben
\begin{tabular}{@{}p{0.3\textwidth}p{0.35\textwidth}p{0.35\textwidth}@{}}
\textbf{Art der Institution} & \multicolumn{2}{p{0.73\textwidth}}{
\CustomChoiceMenuDefault{pa-institution-type}{}{width=\linewidth,default=-,value=-}{-,Fachschaft=stud-fs,STUPA-Referat=stud-rf,Studentische Hochschulgruppe=stud-hg,Fakultät=faculty,Hochschuleinrichtung=hs-institution}
} \\
\textbf{Name der Institution} & \multicolumn{2}{p{0.73\textwidth}}{
\CustomTextFieldDefault{pa-institution}{}{Institution}{width=\linewidth}
} \\
\end{tabular}
}
% Validate: E-Mail-Adresse
\newcommand{\validateEmail}{\detokenize{
var email = event.value;
if (email && !/^[a-zA-Z0-9._\%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/.test(email)) { /*$*/
app.alert("Ungueltige E-Mail-Adresse: " + email + ". Bitte geben Sie eine gueltige E-Mail-Adresse ein.");
event.rc = false;
}
}}
% Validate: Telefonnummer
\newcommand{\validatePhone}{\detokenize{
var phone = event.value;
if (phone && !/^\+?[0-9]{1,3}[-\s]?[0-9]{1,4}[-\s]?[0-9]{1,4}[-\s]?[0-9]{1,9}$/.test(phone)) { /*$*/
app.alert("Ungueltige Telefonnummer: " + phone + ". Bitte geben Sie eine gueltige Telefonnummer ein.");
event.rc = false;
}
}}
% Abschnitt 2: Ansprechperson
\FormSection{Ansprechperson}{%
\begin{tabular}{@{}p{0.3\textwidth}p{0.35\textwidth}p{0.35\textwidth}@{}}
\textbf{Vorname, Name} & \CustomTextFieldDefault{pa-first-name}{}{Vorname}{width=\linewidth} & \CustomTextFieldDefault{pa-last-name}{}{Nachname}{width=\linewidth} \\
\textbf{Fakultät} & \multicolumn{2}{p{0.73\textwidth}}{
\CustomChoiceMenuDefault{pa-course}{}{width=\linewidth,default=-}{-,INF,ESB,LS,TEC,TEX,NXT}
} \\
\textbf{Rolle} & \multicolumn{2}{p{0.73\textwidth}}{
\CustomChoiceMenuDefault{pa-role}{}{width=\linewidth,default=-}{-,Student,Professor,Mitarbeiter,ASTA,Referatsleitung,Fachschaftsvorstand}
} \\
\textbf{E-Mail-Adresse} & \multicolumn{2}{p{0.73\textwidth}}{
\CustomTextFieldDefault{pa-email}{}{E-Mail-Addresse}{width=\linewidth,validate=\validateEmail}
} \\
\textbf{Telefonnummer} & \multicolumn{2}{p{0.73\textwidth}}{
\CustomTextFieldDefault{pa-phone}{}{Telefonnummer}{width=\linewidth,validate=\validatePhone}
} \\
\end{tabular}
}
% Abschnitt 3: Allgmeine Informationen zum Projekt
\FormSection{Allgemeine Informationen zum Projekt}{%
% Validate: Teilnehmerzahl >= 0 und integer
\newcommand{\validateParticipants}{\detokenize{
if (isNaN(event.value) || parseInt(event.value) != parseFloat(event.value) || parseInt(event.value) < 0) {
app.alert("Ungueltige Teilnehmerzahl: " + event.value + ". Bitte geben Sie eine positive ganze Zahl ein.");
event.rc = false;
}
}}
\begin{tabular}{@{}p{0.3\textwidth}p{0.35\textwidth}p{0.35\textwidth}@{}}
\textbf{Projektname} & \multicolumn{2}{p{0.73\textwidth}}{
\CustomTextFieldDefault{pa-project-name}{}{Projektname}{width=\linewidth}
} \\
% Sofern zutreffend: Bekannte Anzahl der Teilnehmer
\multicolumn{2}{p{0.667\textwidth}}{\hspace{-6pt}\textbf{Anzahl der stud. Teilnehmer (sofern bekannt)}} & {
\CustomTextFieldDefault{pa-participants}{}{Anzahl der Teilnehmer}{width=\linewidth,align=2,default=0,validate=\validateParticipants}
} \\
\textbf{Teilnehmende Fakultäten} & \multicolumn{2}{p{0.73\textwidth}}{
%\CustomChoiceMenuDefault{pa-participing-faculties}{}{width=\linewidth,default=-}{-,Hochschulöffentlich=ALL,INF,ESB,LS,TEC,TEX,NXT}
\raisebox{-1pt}{\CheckBox[
radio,
name=pa-participating-faculties-inf,
width=1em,
height=1em
]{}} INF\quad
\raisebox{-1pt}{\CheckBox[
radio,
name=pa-participating-faculties-esb,
width=1em,
height=1em
]{}} ESB\quad
\raisebox{-1pt}{\CheckBox[
radio,
name=pa-participating-faculties-ls,
width=1em,
height=1em
]{}} LS\quad
\raisebox{-1pt}{\CheckBox[
radio,
name=pa-participating-faculties-tec,
width=1em,
height=1em
]{}} TEC\quad
\raisebox{-1pt}{\CheckBox[
radio,
name=pa-participating-faculties-tex,
width=1em,
height=1em
]{}} TEX\quad
\raisebox{-1pt}{\CheckBox[
radio,
name=pa-participating-faculties-nxt,
width=1em,
height=1em
]{}} NXT\quad
\raisebox{-1pt}{\CheckBox[
radio,
name=pa-participating-faculties-open,
width=1em,
height=1em
]{}} Öffentlich
} \\
\end{tabular}
% Input Validation: Date
\newcommand{\validateStartDate}{\detokenize{
if (event.value != "JJJJ-MM") {
var date = new Date(event.value);
if (date == "Invalid Date") {
app.alert("Ungueltiges Datum: " + event.value + ". Bitte geben Sie ein gueltiges Datum im Format JJJJ-MM ein.");
event.rc = false;
} else {
event.value = date.toISOString().slice(0, 7);
}
if (this.getField("pa-end-date").value != "JJJJ-MM") {
var endDate = new Date(this.getField("pa-end-date").value);
if (date > endDate) {
app.alert("Das Startdatum muss vor dem Enddatum liegen.");
event.rc = false;
}
}
}
}}
% Input Validation: End Date
\newcommand{\validateEndDate}{\detokenize{
if (event.value != "JJJJ-MM") {
var date = new Date(event.value);
if (date == "Invalid Date") {
app.alert("Ungueltiges Datum: " + event.value + ". Bitte geben Sie ein gueltiges Datum im Format JJJJ-MM ein.");
event.rc = false;
} else {
event.value = date.toISOString().slice(0, 7);
}
if (this.getField("pa-start-date").value != "JJJJ-MM") {
var startDate = new Date(this.getField("pa-start-date").value);
if (startDate > date) {
app.alert("Das Enddatum muss nach dem Startdatum liegen.");
event.rc = false;
}
}
}
}}
\begin{tabular}{@{}p{0.3\textwidth}p{0.35\textwidth}p{0.35\textwidth}@{}}
\textbf{Antragssumme (insg.)} & & \hspace{\fill} \CustomTextFieldDefault{pa-requested-amount-euro-sum}{}{Antragssumme (\euro)}{width=6em,align=2,default={0,00},validate=\validateCurrency}~\euro \\
\textbf{Projektzeitraum (von, bis)} & & \hspace{\fill} \CustomTextFieldDefault{pa-start-date}{}{von}{width=0.4\linewidth,default=JJJJ-MM,align=1,validate=\validateStartDate} \CustomTextFieldDefault{pa-end-date}{}{bis}{width=0.4\linewidth,default=JJJJ-MM,align=1,validate=\validateEndDate}{\BeginAccSupp{ActualText=}\color{white}~\euro\EndAccSupp{}} \\
\end{tabular}
}
\FormSection{Erfüllte Aufgabe der VS nach §65 des Landeshochschulgesetzes}{
\vspace{0.5em}
\begin{minipage}{1.05\textwidth}
\setstretch{1.0}\color{black}\dinfont
Welche Erfüllte Aufgabe der VS nach §65 des Landeshochschulgesetzes trifft auf das Projekt am ehesten zu?
Im Zweifelsfall bitte leer lassen.
\vspace{1em}
\end{minipage}
\CustomChoiceMenuDefault{pa-vsm-financing}{}{width=1.05\textwidth,default=-}{
{-=-},
{Hochschulpolitische, fachliche, soziale, wirtschaftliche und kulturelle Belange=lhg-01},
{Mitwirkung an den Aufgaben der Hochschulen nach den §§ 2 bis 7=lhg-02},
{Politische Bildung=lhg-03},
{Förderung der Chancengleichheit und Abbau von Benachteiligungen=lhg-04},
{Förderung der Integration ausländischer Studierender=lhg-05},
{Förderung der sportlichen Aktivitäten=lhg-06},
{Pflege der überregionalen Studierendenbeziehungen=lhg-07}
}\vspace{-1em}
}
% \Submit{Absenden}
}
\paPage{VSM Projektbeschreibung}{
\FormSection{Projektbeschreibung}{%
\vspace{0.5em}
\begin{minipage}{1.05\textwidth}
\setstretch{1.0}\color{black}\dinfont
Bitte beschreiben Sie hier das Projekt, die Ziele und die geplanten Maßnahmen.
\vspace{1em}
\end{minipage}
% Textfeld für die Projektbeschreibung
\TextField[
name=pa-project-description,
multiline,
width=1.055\textwidth,
height=26\baselineskip,
bordercolor=black,
backgroundcolor=white,
charsize=12pt,
align=0,
readonly=\isReadOnlyVariant
]{}\vspace{-1.5em}
}
}
% Seite für Kostenaufstellung
\iffalse
Tabelle mit:
- Index (hardcoded)
- Bezeichnung
- Kosten (Euro)
Hinweis, dass pro Position ein Beiblatt Vergleichsangebote eingereicht werden muss.
\fi
\paPage{VSM Kostenaufstellung}{
\FormSection{Kostenaufstellung}{%
\vspace{0.5em}
\begin{minipage}{1.05\textwidth}
\setstretch{1.0}\color{black}\dinfont\small
Hier bitte alle Kosten im Rahmen des Projektes eintragen. Pro Position ist ein Beiblatt "Vergleichsangebote" anzuhängen.
\vspace{1em}
\end{minipage}
% JS-Code to update cell on blur of any number field
\newcommand{\updateSum}{\detokenize{
var total = 0;
for (var i = 1; i <= 24; i++) {
var amountField = this.getField("pa-cost-" + i + "-amount-euro");
if (amountField) {
var amount = String(amountField.value ?? "0").replaceAll(".", "").replaceAll(",", ".");
var value = parseFloat(amount) || 0;
total += value;
amountField.value = value.toLocaleString("de-DE", { minimumFractionDigits: 2, maximumFractionDigits: 2 });
}
}
this.getField("pa-requested-amount-euro-sum").value = total.toLocaleString("de-DE", { minimumFractionDigits: 2, maximumFractionDigits: 2 });
}}
\newcommand{\validateAndUpdateSum}{
\validateCurrency
\updateSum
}
% Tabelle für die Kostenaufstellung
\begin{tabular}{@{}p{0.02\textwidth}p{0.82\textwidth}p{0.16\textwidth}@{}}
% Index
\textbf{\#} & \multicolumn{1}{c}{\textbf{Bezeichnung}} & \multicolumn{1}{c}{\textbf{Kosten (\euro)}} \\
% Insg. 24 Positionen
1 & \CustomTextFieldDefault{pa-cost-1-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-1-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
2 & \CustomTextFieldDefault{pa-cost-2-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-2-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
3 & \CustomTextFieldDefault{pa-cost-3-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-3-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
4 & \CustomTextFieldDefault{pa-cost-4-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-4-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
5 & \CustomTextFieldDefault{pa-cost-5-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-5-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
6 & \CustomTextFieldDefault{pa-cost-6-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-6-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
7 & \CustomTextFieldDefault{pa-cost-7-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-7-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
8 & \CustomTextFieldDefault{pa-cost-8-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-8-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
9 & \CustomTextFieldDefault{pa-cost-9-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-9-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
10 & \CustomTextFieldDefault{pa-cost-10-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-10-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
11 & \CustomTextFieldDefault{pa-cost-11-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-11-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
12 & \CustomTextFieldDefault{pa-cost-12-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-12-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
13 & \CustomTextFieldDefault{pa-cost-13-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-13-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
14 & \CustomTextFieldDefault{pa-cost-14-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-14-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
15 & \CustomTextFieldDefault{pa-cost-15-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-15-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
16 & \CustomTextFieldDefault{pa-cost-16-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-16-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
17 & \CustomTextFieldDefault{pa-cost-17-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-17-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
18 & \CustomTextFieldDefault{pa-cost-18-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-18-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
19 & \CustomTextFieldDefault{pa-cost-19-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-19-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
20 & \CustomTextFieldDefault{pa-cost-20-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-20-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
21 & \CustomTextFieldDefault{pa-cost-21-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-21-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
22 & \CustomTextFieldDefault{pa-cost-22-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-22-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
23 & \CustomTextFieldDefault{pa-cost-23-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-23-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
24 & \CustomTextFieldDefault{pa-cost-24-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-24-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
\textbf{$\Sigma$} & & \CustomTextFieldDefault{pa-requested-amount-euro-sum}{}{Summe}{width=6em,align=2,default={0,00},validate=\validateCurrency} \\
\end{tabular}
}
}
\paPage{VSM Checklisten}{
\FormSection{Checkliste: VS-Mittel}{
\vspace{0.5em}
\begin{minipage}{1.05\textwidth}
\setstretch{1.0}\color{black}\dinfont
Durch VS-Mittel finanzierte Projekte müssen die Anforderungen des §65 f. des Landeshochschulgesetzes (LHG) erfüllen.
Dieses Beiblatt dient der Sicherstellung, dass die Anforderungen erfüllt werden.
\vspace{1em}
\end{minipage}
%% Tabelle; Checkboxen auf rechter Seite, Text links
\begin{tabular}{@{}p{\textwidth}p{0.05\textwidth}@{}}
% Die Maßnahme erfüllt die Aufgaben der VS gem. §65 Abs. 2 LHG
\textbf{Die Maßnahme erfüllt die Aufgaben der VS gem. §65 Abs. 2 LHG} & \raisebox{-1pt}{\CheckBox[
name=pa-vsm-aufgaben,
width=1em,
height=1em
]{}} \\
% Es findet keine individuelle Förderung von Studierenden statt
\textbf{Es findet keine individuelle Förderung von Studierenden statt} & \raisebox{-1pt}{\CheckBox[
name=pa-vsm-individuell,
width=1em,
height=1em
]{}} \\
\end{tabular}
}
\FormSection{Checkliste: Anhänge}{
\vspace{0.5em}
\begin{minipage}{1.05\textwidth}
\setstretch{1.0}\color{black}\dinfont
Hier bitte alle mit dem Dokument eingereichten Dokumente ankreuzen:
\vspace{1em}
\end{minipage}
\begin{tabular}{@{}p{\textwidth}p{0.05\textwidth}@{}}
\textbf{Beiblatt Vergleichsangebote} & \raisebox{-1pt}{\CheckBox[
name=pa-anh-vergleichsangebote,
width=1em,
height=1em
]{}} \\
Jeweils ein Formular pro Position siehe Kostenaufstellung & \\
\end{tabular}
}
% \Submit{Absenden}
}
\end{Form}