mirror of
https://gitlab.dit.htwk-leipzig.de/htwk-software/htwkalender.git
synced 2025-07-16 09:38:49 +02:00
126 lines
3.5 KiB
TypeScript
126 lines
3.5 KiB
TypeScript
//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 <https://www.gnu.org/licenses/>.
|
|
|
|
// function to fetch course data from the API
|
|
|
|
import { Module } from "../model/module.ts";
|
|
|
|
export async function fetchCourse(): Promise<string[]> {
|
|
if (import.meta.env.SSR) {
|
|
return [];
|
|
}
|
|
const courses: string[] = [];
|
|
await fetch("/api/courses")
|
|
.then((response) => {
|
|
//check if response type is json
|
|
const contentType = response.headers.get("content-type");
|
|
if (contentType && contentType.indexOf("application/json") !== -1) {
|
|
return response.json();
|
|
} else {
|
|
return [];
|
|
}
|
|
})
|
|
.then((coursesResponse) => {
|
|
coursesResponse.forEach((course: string) => courses.push(course));
|
|
});
|
|
return courses;
|
|
}
|
|
|
|
export async function fetchCourseBySemester(
|
|
semester: string,
|
|
): Promise<string[]> {
|
|
if (import.meta.env.SSR) {
|
|
return [];
|
|
}
|
|
const courses: string[] = [];
|
|
await fetch("/api/courses/events?semester=" + semester)
|
|
.then((response) => {
|
|
//check if response type is json
|
|
const contentType = response.headers.get("content-type");
|
|
if (contentType && contentType.indexOf("application/json") !== -1) {
|
|
return response.json();
|
|
} else {
|
|
return [];
|
|
}
|
|
})
|
|
.then((coursesResponse) => {
|
|
coursesResponse?.forEach((course: string) => courses.push(course));
|
|
});
|
|
return courses;
|
|
}
|
|
|
|
export async function fetchModulesByCourseAndSemester(
|
|
course: string,
|
|
semester: string,
|
|
): Promise<Module[]> {
|
|
if (import.meta.env.SSR) {
|
|
return [];
|
|
}
|
|
const modules: Module[] = [];
|
|
await fetch("/api/course/modules?course=" + course + "&semester=" + semester)
|
|
.then((response) => {
|
|
return response.json();
|
|
})
|
|
.then((modulesResponse) => {
|
|
modulesResponse.forEach((module: Module) =>
|
|
modules.push(
|
|
new Module(
|
|
module.uuid,
|
|
module.name,
|
|
course,
|
|
module.eventType,
|
|
module.name,
|
|
module.prof,
|
|
semester,
|
|
false,
|
|
module.events,
|
|
),
|
|
),
|
|
);
|
|
});
|
|
return modules;
|
|
}
|
|
|
|
export async function fetchAllModules(): Promise<Module[]> {
|
|
if (import.meta.env.SSR) {
|
|
return [];
|
|
}
|
|
const modules: Module[] = [];
|
|
await fetch("/api/modules")
|
|
.then((response) => {
|
|
return response.json() as Promise<Module[]>;
|
|
})
|
|
.then((responseModules: Module[]) => {
|
|
responseModules.forEach((module: Module) => {
|
|
modules.push(
|
|
new Module(
|
|
module.uuid,
|
|
module.name,
|
|
module.course,
|
|
module.eventType,
|
|
module.name,
|
|
module.prof,
|
|
module.semester,
|
|
false,
|
|
module.events,
|
|
),
|
|
);
|
|
});
|
|
});
|
|
|
|
return modules;
|
|
}
|