From 59b700299f860f0854c37906eaa5a5850cc45f59 Mon Sep 17 00:00:00 2001 From: davidpkj Date: Sat, 13 Apr 2024 12:28:41 +0200 Subject: univis stuff & docs --- src/files.js | 20 ++++++++ src/main.js | 49 ++++++++++--------- src/univis.js | 41 ++++++++++++++++ src/variables.js | 143 ------------------------------------------------------- 4 files changed, 87 insertions(+), 166 deletions(-) create mode 100644 src/files.js create mode 100644 src/univis.js delete mode 100644 src/variables.js (limited to 'src') diff --git a/src/files.js b/src/files.js new file mode 100644 index 0000000..970d28d --- /dev/null +++ b/src/files.js @@ -0,0 +1,20 @@ +import * as yml from "js-yaml" +import * as fs from "fs" + +const dir = "./public"; + +function readConfig() { + return yml.load(fs.readFileSync(`${dir}/config.yaml`, 'utf8')); +} + +function readStyle() { + return fs.readFileSync(`${dir}/style.css`, 'utf8'); +} + +export function readXML() { + return fs.readFileSync(`${dir}/data.xml`, 'utf8'); +} + +export const c = readConfig(); + +c.style = ``; \ No newline at end of file diff --git a/src/main.js b/src/main.js index 5b326d7..c3cbec9 100644 --- a/src/main.js +++ b/src/main.js @@ -1,10 +1,10 @@ import * as fs from "fs" import * as html_to_pdf from "html-pdf-node" -import * as v from './variables.js' +import { c } from './files.js' let hinweise = "`; @@ -133,14 +133,19 @@ function main() { let tage = structuredClone(ctage); let tage_runtimes = structuredClone(ctage); - for (let eintrag of v.eintraege) { - for (let termin of eintrag.termine) { - tage[termin.wochentag].push({ - "name": eintrag.name, - "raum": termin.raum, - "von": termin.von, - "bis": termin.bis, - }) + for (let eintrag of c.eintraege) { + let eintragName = Object.keys(eintrag)[0]; + eintrag = eintrag[eintragName] + + for (let veranstaltung in eintrag) { + for (let termin of eintrag[veranstaltung]) { + tage[termin[0]].push({ + "name": `${eintragName.toString()} / ${veranstaltung.toString()}`, + "raum": termin[3], + "von": termin[1].replace("h", ":"), + "bis": termin[2].replace("h", ":"), + }) + } } } @@ -167,7 +172,7 @@ function main() { let el = tage_runtimes[day][0]; - if (el.name == "BLOCKED" && el.raum == "BLOCKED") { + if (el.name.includes("BLOCKED") && el.raum == "BLOCKED") { res += ``; } else { let name = el.name == "BUFFER" ? "" : `
${el.name}`; @@ -183,31 +188,29 @@ function main() { res += "" } - // console.log(res) - return res } let html = ` -${v.style} -

Persönlicher Stundenplan von ${v.student} für das ${v.semester}. Stand: ${date}.

+${c.style} +

Persönlicher Stundenplan von ${c.student} für das ${c.semester}. Stand: ${date}.

- - - - - - + + + + + + ${main()}
Uhrzeit Montag Dienstag Mittwoch Donnerstag Freitag UhrzeitMontagDienstagMittwochDonnerstagFreitag

- Hinweise: +Hinweise: ${hinweise} `; html_to_pdf.generatePdf({content: html}, options).then(pdfBuffer => { // fs.writeFileSync("test.html", html) - fs.writeFileSync(v.filename, pdfBuffer); + fs.writeFileSync(c.filename, pdfBuffer); }); diff --git a/src/univis.js b/src/univis.js new file mode 100644 index 0000000..f770bd7 --- /dev/null +++ b/src/univis.js @@ -0,0 +1,41 @@ +import * as xml from "xml-js" + +import { readXML } from "./files.js" + +function getRoomName(key) { + for (let room of res.Room) { + if (room._attributes.key == key) { + return room.short._text; + } + } + + return "?"; +} + +function serializeLecture(lecture) { + let name = lecture.short?._text ?? lecture.name._text + + for (let term in lecture.terms) { + let t = lecture.terms[term]; + + if (!t.starttime) continue; + + let von = t.starttime._text.replace(":", "h"); + let bis = t.endtime._text.replace(":", "h"); + + let raum = getRoomName(t.room.UnivISRef._attributes.key); + + console.log(`${name}, ${von}, ${bis}, ${raum}`); + } +} + +let data = readXML(); +let res = (xml.xml2js(data, {compact: true})).UnivIS; + +let semester = res._attributes.semester; + +console.log("semester: " + semester) + +for (let lecture of res.Lecture) { + serializeLecture(lecture) +} \ No newline at end of file diff --git a/src/variables.js b/src/variables.js deleted file mode 100644 index bf98ca1..0000000 --- a/src/variables.js +++ /dev/null @@ -1,143 +0,0 @@ -// Dont touch this -class Eintrag { - constructor(name, termine) { - this.name = name; - this.termine = termine; - } -} - -class Termin { - constructor(wochentag, raum, von, bis) { - this.wochentag = wochentag; - this.raum = raum; - this.von = von; - this.bis = bis; - } -} - -// You may touch this -export const student = "David Penkowoj"; -export const semester = "Sommersemester 2024"; -export const filename = `Stundenplan-${semester.replace(" ", "-")}.pdf`; - -export const hinweise = [ - "Mensabetrieb: 11:15 - 14:15 Uhr + 00:15 min", - "GET 2 / V am 23.05. & 04.07. im V1", - "GET 2 / Ü am 24.05. im T S2", - "FuQ / V am 24.05. im T S1", -]; - -export const eintraege = [ - new Eintrag("GET 2 / Ü", [ - new Termin("Mo", "AM S4", "12:00", "13:00"), - new Termin("Fr", "AM S4", "11:30", "13:00") - ]), - new Eintrag("GET 2 / V", [ - new Termin("Di", "H1", "08:30", "10:00"), - new Termin("Do", "Z 1/2", "08:30", "10:00") - ]), - new Eintrag("TGI 1 / V", [ - new Termin("Mi", "AM 1", "08:15", "09:45"), - ]), - new Eintrag("TGI 1 / Ü", [ - new Termin("Do", "AM 1", "15:00", "16:00"), - ]), - new Eintrag("TGI 1 / Prak. Gr. 2", [ - new Termin("Di", "ITI 131", "14:30", "17:30"), - ]), - new Eintrag("Pho / V", [ - new Termin("Fr", "T 1", "08:30", "10:00"), - ]), - new Eintrag("Pho / Ü", [ - new Termin("Mi", "AM 1", "12:00", "13:00"), - ]), - new Eintrag("Ana 2 / V", [ - new Termin("Di", "AM 1", "12:30", "14:00"), - ]), - new Eintrag("Ana 2 / Ü", [ - new Termin("Do", "H 1", "16:15", "17:15"), - ]), - new Eintrag("Ana 2 / Helpdesk", [ - new Termin("Di", "O-Sync", "18:00", "19:00"), - new Termin("Mi", "O-Sync", "18:00", "19:00") - ]), - new Eintrag("EiBMO / V", [ - new Termin("Mi", "H 1", "14:00", "16:00"), - ]), - new Eintrag("EiBMO / Ü", [ - new Termin("Mi", "H 1", "16:00", "17:00"), - ]), - new Eintrag("FuQ / V", [ - new Termin("Fr", "AM 4", "10:00", "11:30"), - ]), - new Eintrag("FuQ / Ü", [ - new Termin("Di", "SI 4 (Minsky)", "11:00", "12:00"), - ]), - new Eintrag("BLOCKED", [ - new Termin("Mo", "BLOCKED", "13:00", "19:00"), - new Termin("Do", "BLOCKED", "10:00", "15:00") - ]) -]; - -// You may touch this, if you know what you are doing -export const style = ` - -`; -- cgit v1.2.3