Update event management system by adding Uhrzeit to Termine; enhance data handling in API and CSV exports to accommodate new fields. Refactor Termine component for improved date and time formatting, ensuring accurate display of events. Clean up unused code in MannschaftenUebersicht and streamline layout in Mannschaften index page for better user experience.

This commit is contained in:
Torsten Schulz (local)
2025-11-05 13:22:57 +01:00
parent d6d9a31669
commit bc2f59bd1a
35 changed files with 653 additions and 929 deletions

View File

@@ -37,9 +37,10 @@ async function readTermine() {
id: randomUUID(),
// Generate ID on-the-fly for editing
datum: values[0],
titel: values[1],
beschreibung: values[2],
kategorie: values[3]
uhrzeit: values[1] || "",
titel: values[2] || "",
beschreibung: values[3] || "",
kategorie: values[4] || "Sonstiges"
});
}
}
@@ -54,17 +55,19 @@ async function readTermine() {
}
async function writeTermine(termine) {
try {
let csv = '"datum","titel","beschreibung","kategorie"\n';
let csv = '"datum","uhrzeit","titel","beschreibung","kategorie"\n';
for (const termin of termine) {
const datum = termin.datum || "";
const uhrzeit = termin.uhrzeit || "";
const titel = termin.titel || "";
const beschreibung = termin.beschreibung || "";
const kategorie = termin.kategorie || "";
const escapedDatum = datum.replace(/"/g, '""');
const escapedUhrzeit = uhrzeit.replace(/"/g, '""');
const escapedTitel = titel.replace(/"/g, '""');
const escapedBeschreibung = beschreibung.replace(/"/g, '""');
const escapedKategorie = kategorie.replace(/"/g, '""');
csv += `"${escapedDatum}","${escapedTitel}","${escapedBeschreibung}","${escapedKategorie}"
csv += `"${escapedDatum}","${escapedUhrzeit}","${escapedTitel}","${escapedBeschreibung}","${escapedKategorie}"
`;
}
await promises.writeFile(TERMINE_FILE, csv, "utf-8");
@@ -78,6 +81,7 @@ async function saveTermin(terminData) {
const termine = await readTermine();
const newTermin = {
datum: terminData.datum,
uhrzeit: terminData.uhrzeit || "",
titel: terminData.titel,
beschreibung: terminData.beschreibung || "",
kategorie: terminData.kategorie || "Sonstiges"
@@ -90,7 +94,7 @@ async function saveTermin(terminData) {
async function deleteTermin(terminData) {
let termine = await readTermine();
termine = termine.filter(
(t) => !(t.datum === terminData.datum && t.titel === terminData.titel && t.beschreibung === terminData.beschreibung && t.kategorie === terminData.kategorie)
(t) => !(t.datum === terminData.datum && (t.uhrzeit || "") === (terminData.uhrzeit || "") && t.titel === terminData.titel && t.beschreibung === terminData.beschreibung && t.kategorie === terminData.kategorie)
);
await writeTermine(termine);
return true;

View File

@@ -1 +1 @@
{"version":3,"file":"termine.mjs","sources":["../../../../server/utils/termine.js"],"sourcesContent":null,"names":["fs"],"mappings":";;;;AAKA,MAAM,WAAA,GAAc,CAAC,QAAA,KAAa;AAChC,EAAA,MAAM,GAAA,GAAM,QAAQ,GAAA,EAAI;AAGxB,EAAA,IAAI,GAAA,CAAI,QAAA,CAAS,SAAS,CAAA,EAAG;AAC3B,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,GAAA,EAAK,gBAAA,EAAkB,QAAQ,CAAA;AAAA,EAClD;AAGA,EAAA,OAAO,IAAA,CAAK,IAAA,CAAK,GAAA,EAAK,aAAA,EAAe,QAAQ,CAAA;AAC/C,CAAA;AAEA,MAAM,YAAA,GAAe,YAAY,aAAa,CAAA;AAG9C,eAAsB,WAAA,GAAc;AAClC,EAAA,IAAI;AACF,IAAA,MAAM,IAAA,GAAO,MAAMA,QAAA,CAAG,QAAA,CAAS,cAAc,OAAO,CAAA;AACpD,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,CAAE,OAAO,CAAA,IAAA,KAAQ,IAAA,CAAK,IAAA,EAAK,KAAM,EAAE,CAAA;AAEhE,IAAA,IAAI,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG,OAAO,EAAC;AAG9B,IAAA,MAAM,UAAU,EAAC;AACjB,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,MAAA,MAAM,SAAS,EAAC;AAChB,MAAA,IAAI,OAAA,GAAU,EAAA;AACd,MAAA,IAAI,QAAA,GAAW,KAAA;AAEf,MAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,MAAM,CAAC,CAAA,CAAE,QAAQ,CAAA,EAAA,EAAK;AACxC,QAAA,MAAM,IAAA,GAAO,KAAA,CAAM,CAAC,CAAA,CAAE,CAAC,CAAA;AAEvB,QAAA,IAAI,SAAS,GAAA,EAAK;AAChB,UAAA,QAAA,GAAW,CAAC,QAAA;AAAA,QACd,CAAA,MAAA,IAAW,IAAA,KAAS,GAAA,IAAO,CAAC,QAAA,EAAU;AACpC,UAAA,MAAA,CAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,EAAM,CAAA;AAC1B,UAAA,OAAA,GAAU,EAAA;AAAA,QACZ,CAAA,MAAO;AACL,UAAA,OAAA,IAAW,IAAA;AAAA,QACb;AAAA,MACF;AACA,MAAA,MAAA,CAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,EAAM,CAAA;AAE1B,MAAA,IAAI,MAAA,CAAO,UAAU,CAAA,EAAG;AACtB,QAAA,OAAA,CAAQ,IAAA,CAAK;AAAA,UACX,IAAI,UAAA,EAAW;AAAA;AAAA,UACf,KAAA,EAAO,OAAO,CAAC,CAAA;AAAA,UACf,KAAA,EAAO,OAAO,CAAC,CAAA;AAAA,UACf,YAAA,EAAc,OAAO,CAAC,CAAA;AAAA,UACtB,SAAA,EAAW,OAAO,CAAC;AAAA,SACpB,CAAA;AAAA,MACH;AAAA,IACF;AAEA,IAAA,OAAO,OAAA;AAAA,EACT,SAAS,KAAA,EAAO;AACd,IAAA,IAAI,KAAA,CAAM,SAAS,QAAA,EAAU;AAC3B,MAAA,OAAO,EAAC;AAAA,IACV;AACA,IAAA,OAAA,CAAQ,KAAA,CAAM,kCAAkC,KAAK,CAAA;AACrD,IAAA,OAAO,EAAC;AAAA,EACV;AACF;AAGA,eAAsB,aAAa,OAAA,EAAS;AAC1C,EAAA,IAAI;AACF,IAAA,IAAI,GAAA,GAAM,8CAAA;AAEV,IAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,MAAA,MAAM,KAAA,GAAQ,OAAO,KAAA,IAAS,EAAA;AAC9B,MAAA,MAAM,KAAA,GAAQ,OAAO,KAAA,IAAS,EAAA;AAC9B,MAAA,MAAM,YAAA,GAAe,OAAO,YAAA,IAAgB,EAAA;AAC5C,MAAA,MAAM,SAAA,GAAY,OAAO,SAAA,IAAa,EAAA;AAGtC,MAAA,MAAM,YAAA,GAAe,KAAA,CAAM,OAAA,CAAQ,IAAA,EAAM,IAAI,CAAA;AAC7C,MAAA,MAAM,YAAA,GAAe,KAAA,CAAM,OAAA,CAAQ,IAAA,EAAM,IAAI,CAAA;AAC7C,MAAA,MAAM,mBAAA,GAAsB,YAAA,CAAa,OAAA,CAAQ,IAAA,EAAM,IAAI,CAAA;AAC3D,MAAA,MAAM,gBAAA,GAAmB,SAAA,CAAU,OAAA,CAAQ,IAAA,EAAM,IAAI,CAAA;AAErD,MAAA,GAAA,IAAO,IAAI,YAAY,CAAA,GAAA,EAAM,YAAY,CAAA,GAAA,EAAM,mBAAmB,MAAM,gBAAgB,CAAA;AAAA,CAAA;AAAA,IAC1F;AAEA,IAAA,MAAMA,QAAA,CAAG,SAAA,CAAU,YAAA,EAAc,GAAA,EAAK,OAAO,CAAA;AAC7C,IAAA,OAAO,IAAA;AAAA,EACT,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,sCAAsC,KAAK,CAAA;AACzD,IAAA,OAAO,KAAA;AAAA,EACT;AACF;AAGA,eAAsB,WAAW,UAAA,EAAY;AAC3C,EAAA,MAAM,OAAA,GAAU,MAAM,WAAA,EAAY;AAGlC,EAAA,MAAM,SAAA,GAAY;AAAA,IAChB,OAAO,UAAA,CAAW,KAAA;AAAA,IAClB,OAAO,UAAA,CAAW,KAAA;AAAA,IAClB,YAAA,EAAc,WAAW,YAAA,IAAgB,EAAA;AAAA,IACzC,SAAA,EAAW,WAAW,SAAA,IAAa;AAAA,GACrC;AAEA,EAAA,OAAA,CAAQ,KAAK,SAAS,CAAA;AAGtB,EAAA,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,IAAI,IAAA,CAAK,CAAA,CAAE,KAAK,CAAA,GAAI,IAAI,IAAA,CAAK,CAAA,CAAE,KAAK,CAAC,CAAA;AAE5D,EAAA,MAAM,aAAa,OAAO,CAAA;AAC1B,EAAA,OAAO,IAAA;AACT;AAGA,eAAsB,aAAa,UAAA,EAAY;AAC7C,EAAA,IAAI,OAAA,GAAU,MAAM,WAAA,EAAY;AAEhC,EAAA,OAAA,GAAU,OAAA,CAAQ,MAAA;AAAA,IAAO,OACvB,EAAE,CAAA,CAAE,KAAA,KAAU,UAAA,CAAW,SACvB,CAAA,CAAE,KAAA,KAAU,UAAA,CAAW,KAAA,IACvB,EAAE,YAAA,KAAiB,UAAA,CAAW,YAAA,IAC9B,CAAA,CAAE,cAAc,UAAA,CAAW,SAAA;AAAA,GAC/B;AAEA,EAAA,MAAM,aAAa,OAAO,CAAA;AAC1B,EAAA,OAAO,IAAA;AACT;;;;"}
{"version":3,"file":"termine.mjs","sources":["../../../../server/utils/termine.js"],"sourcesContent":null,"names":["fs"],"mappings":";;;;AAKA,MAAM,WAAA,GAAc,CAAC,QAAA,KAAa;AAChC,EAAA,MAAM,GAAA,GAAM,QAAQ,GAAA,EAAI;AAGxB,EAAA,IAAI,GAAA,CAAI,QAAA,CAAS,SAAS,CAAA,EAAG;AAC3B,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,GAAA,EAAK,gBAAA,EAAkB,QAAQ,CAAA;AAAA,EAClD;AAGA,EAAA,OAAO,IAAA,CAAK,IAAA,CAAK,GAAA,EAAK,aAAA,EAAe,QAAQ,CAAA;AAC/C,CAAA;AAEA,MAAM,YAAA,GAAe,YAAY,aAAa,CAAA;AAG9C,eAAsB,WAAA,GAAc;AAClC,EAAA,IAAI;AACF,IAAA,MAAM,IAAA,GAAO,MAAMA,QAAA,CAAG,QAAA,CAAS,cAAc,OAAO,CAAA;AACpD,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,CAAE,OAAO,CAAA,IAAA,KAAQ,IAAA,CAAK,IAAA,EAAK,KAAM,EAAE,CAAA;AAEhE,IAAA,IAAI,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG,OAAO,EAAC;AAG9B,IAAA,MAAM,UAAU,EAAC;AACjB,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,MAAA,MAAM,SAAS,EAAC;AAChB,MAAA,IAAI,OAAA,GAAU,EAAA;AACd,MAAA,IAAI,QAAA,GAAW,KAAA;AAEf,MAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,MAAM,CAAC,CAAA,CAAE,QAAQ,CAAA,EAAA,EAAK;AACxC,QAAA,MAAM,IAAA,GAAO,KAAA,CAAM,CAAC,CAAA,CAAE,CAAC,CAAA;AAEvB,QAAA,IAAI,SAAS,GAAA,EAAK;AAChB,UAAA,QAAA,GAAW,CAAC,QAAA;AAAA,QACd,CAAA,MAAA,IAAW,IAAA,KAAS,GAAA,IAAO,CAAC,QAAA,EAAU;AACpC,UAAA,MAAA,CAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,EAAM,CAAA;AAC1B,UAAA,OAAA,GAAU,EAAA;AAAA,QACZ,CAAA,MAAO;AACL,UAAA,OAAA,IAAW,IAAA;AAAA,QACb;AAAA,MACF;AACA,MAAA,MAAA,CAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,EAAM,CAAA;AAE1B,MAAA,IAAI,MAAA,CAAO,UAAU,CAAA,EAAG;AACtB,QAAA,OAAA,CAAQ,IAAA,CAAK;AAAA,UACX,IAAI,UAAA,EAAW;AAAA;AAAA,UACf,KAAA,EAAO,OAAO,CAAC,CAAA;AAAA,UACf,OAAA,EAAS,MAAA,CAAO,CAAC,CAAA,IAAK,EAAA;AAAA,UACtB,KAAA,EAAO,MAAA,CAAO,CAAC,CAAA,IAAK,EAAA;AAAA,UACpB,YAAA,EAAc,MAAA,CAAO,CAAC,CAAA,IAAK,EAAA;AAAA,UAC3B,SAAA,EAAW,MAAA,CAAO,CAAC,CAAA,IAAK;AAAA,SACzB,CAAA;AAAA,MACH;AAAA,IACF;AAEA,IAAA,OAAO,OAAA;AAAA,EACT,SAAS,KAAA,EAAO;AACd,IAAA,IAAI,KAAA,CAAM,SAAS,QAAA,EAAU;AAC3B,MAAA,OAAO,EAAC;AAAA,IACV;AACA,IAAA,OAAA,CAAQ,KAAA,CAAM,kCAAkC,KAAK,CAAA;AACrD,IAAA,OAAO,EAAC;AAAA,EACV;AACF;AAGA,eAAsB,aAAa,OAAA,EAAS;AAC1C,EAAA,IAAI;AACF,IAAA,IAAI,GAAA,GAAM,wDAAA;AAEV,IAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,MAAA,MAAM,KAAA,GAAQ,OAAO,KAAA,IAAS,EAAA;AAC9B,MAAA,MAAM,OAAA,GAAU,OAAO,OAAA,IAAW,EAAA;AAClC,MAAA,MAAM,KAAA,GAAQ,OAAO,KAAA,IAAS,EAAA;AAC9B,MAAA,MAAM,YAAA,GAAe,OAAO,YAAA,IAAgB,EAAA;AAC5C,MAAA,MAAM,SAAA,GAAY,OAAO,SAAA,IAAa,EAAA;AAGtC,MAAA,MAAM,YAAA,GAAe,KAAA,CAAM,OAAA,CAAQ,IAAA,EAAM,IAAI,CAAA;AAC7C,MAAA,MAAM,cAAA,GAAiB,OAAA,CAAQ,OAAA,CAAQ,IAAA,EAAM,IAAI,CAAA;AACjD,MAAA,MAAM,YAAA,GAAe,KAAA,CAAM,OAAA,CAAQ,IAAA,EAAM,IAAI,CAAA;AAC7C,MAAA,MAAM,mBAAA,GAAsB,YAAA,CAAa,OAAA,CAAQ,IAAA,EAAM,IAAI,CAAA;AAC3D,MAAA,MAAM,gBAAA,GAAmB,SAAA,CAAU,OAAA,CAAQ,IAAA,EAAM,IAAI,CAAA;AAErD,MAAA,GAAA,IAAO,CAAA,CAAA,EAAI,YAAY,CAAA,GAAA,EAAM,cAAc,MAAM,YAAY,CAAA,GAAA,EAAM,mBAAmB,CAAA,GAAA,EAAM,gBAAgB,CAAA;AAAA,CAAA;AAAA,IAC9G;AAEA,IAAA,MAAMA,QAAA,CAAG,SAAA,CAAU,YAAA,EAAc,GAAA,EAAK,OAAO,CAAA;AAC7C,IAAA,OAAO,IAAA;AAAA,EACT,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,sCAAsC,KAAK,CAAA;AACzD,IAAA,OAAO,KAAA;AAAA,EACT;AACF;AAGA,eAAsB,WAAW,UAAA,EAAY;AAC3C,EAAA,MAAM,OAAA,GAAU,MAAM,WAAA,EAAY;AAGlC,EAAA,MAAM,SAAA,GAAY;AAAA,IAChB,OAAO,UAAA,CAAW,KAAA;AAAA,IAClB,OAAA,EAAS,WAAW,OAAA,IAAW,EAAA;AAAA,IAC/B,OAAO,UAAA,CAAW,KAAA;AAAA,IAClB,YAAA,EAAc,WAAW,YAAA,IAAgB,EAAA;AAAA,IACzC,SAAA,EAAW,WAAW,SAAA,IAAa;AAAA,GACrC;AAEA,EAAA,OAAA,CAAQ,KAAK,SAAS,CAAA;AAGtB,EAAA,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,IAAI,IAAA,CAAK,CAAA,CAAE,KAAK,CAAA,GAAI,IAAI,IAAA,CAAK,CAAA,CAAE,KAAK,CAAC,CAAA;AAE5D,EAAA,MAAM,aAAa,OAAO,CAAA;AAC1B,EAAA,OAAO,IAAA;AACT;AAGA,eAAsB,aAAa,UAAA,EAAY;AAC7C,EAAA,IAAI,OAAA,GAAU,MAAM,WAAA,EAAY;AAEhC,EAAA,OAAA,GAAU,OAAA,CAAQ,MAAA;AAAA,IAAO,CAAA,CAAA,KACvB,EAAE,CAAA,CAAE,KAAA,KAAU,WAAW,KAAA,IAAA,CACtB,CAAA,CAAE,OAAA,IAAW,EAAA,OAAS,UAAA,CAAW,OAAA,IAAW,OAC7C,CAAA,CAAE,KAAA,KAAU,WAAW,KAAA,IACvB,CAAA,CAAE,iBAAiB,UAAA,CAAW,YAAA,IAC9B,CAAA,CAAE,SAAA,KAAc,UAAA,CAAW,SAAA;AAAA,GAC/B;AAEA,EAAA,MAAM,aAAa,OAAO,CAAA;AAC1B,EAAA,OAAO,IAAA;AACT;;;;"}