//Calendar implementation for the HTWK Leipzig timetable. Evaluation and display of the individual dates in iCal format. //Copyright (C) 2024 HTWKalender support@htwkalender.de //This program is free software: you can redistribute it and/or modify //it under the terms of the GNU Affero General Public License as published by //the Free Software Foundation, either version 3 of the License, or //(at your option) any later version. //This program is distributed in the hope that it will be useful, //but WITHOUT ANY WARRANTY; without even the implied warranty of //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //GNU Affero General Public License for more details. //You should have received a copy of the GNU Affero General Public License //along with this program. If not, see . package v2 import ( "github.com/pocketbase/pocketbase/tools/types" "golang.org/x/net/html" "htwkalender/model" "htwkalender/service/date" "htwkalender/service/functions" "strings" ) func toEvents(tables [][]*html.Node, days []string) []model.Event { var events []model.Event for table := range tables { for row := range tables[table] { tableData := findTableData(tables[table][row]) if len(tableData) > 0 { start, _ := types.ParseDateTime(date.CreateTimeFromHourAndMinuteString(getTextContent(tableData[1]))) end, _ := types.ParseDateTime(date.CreateTimeFromHourAndMinuteString(getTextContent(tableData[2]))) courses := getTextContent(tableData[7]) name := getTextContent(tableData[3]) if functions.OnlyWhitespace(name) { name = "Sonderveranstaltung" } if len(courses) > 0 { for _, course := range strings.Split(courses, " ") { events = append(events, model.Event{ Day: days[table], Week: getTextContent(tableData[0]), Start: start, End: end, Name: name, EventType: getTextContent(tableData[4]), Notes: getTextContent(tableData[5]), Prof: getTextContent(tableData[6]), Rooms: getTextContent(tableData[8]), BookedAt: getTextContent(tableData[10]), Course: strings.TrimSpace(course), }) } } } } } return events }