From 48364d4c59e3ebd22eb04e9d970b6f9959ba5dc0 Mon Sep 17 00:00:00 2001 From: minie4 Date: Sun, 18 Jun 2023 14:30:36 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Add=20support=20for=20multiple=20re?= =?UTF-8?q?mote=20timetables?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add timetable "title" column to db - Make API return array of timetables - Add settings page for selecting a timetable - Add InfoCard if no timetable is selected --- server/api/index.js | 16 +---- server/prisma/schema.prisma | 1 + src/components/settings/timetable-card.vue | 73 ++++++++++++++++++++++ src/components/timetable-list.vue | 15 +++-- src/router/index.js | 6 ++ src/store.js | 24 +++++-- src/strings.js | 12 ++++ src/views/SettingsView.vue | 6 ++ src/views/TimetableView.vue | 20 ++++-- src/views/settings/TimetableSettings.vue | 33 ++++++++++ 10 files changed, 176 insertions(+), 30 deletions(-) create mode 100644 src/components/settings/timetable-card.vue create mode 100644 src/views/settings/TimetableSettings.vue diff --git a/server/api/index.js b/server/api/index.js index 3b3947a..c483dec 100644 --- a/server/api/index.js +++ b/server/api/index.js @@ -13,7 +13,7 @@ export async function getTimetable(req, res) { return; } const requestedClass = req.query.class.toLowerCase(); - const timetable = await prisma.timetable.findFirst({ + const timetables = await prisma.timetable.findMany({ where: { class: requestedClass, }, @@ -22,19 +22,9 @@ export async function getTimetable(req, res) { }, }); const times = await prisma.time.findMany(); - if (!timetable) { - res.status(404).send({ - success: false, - error: "no_timetable", - message: "No timetable was found for this class", - }); - return; - } res.send({ - trusted: timetable.trusted, - source: timetable.source, - data: timetable.data, - times: times, + timetables, + times, }); } diff --git a/server/prisma/schema.prisma b/server/prisma/schema.prisma index 36ec17d..26e3a9e 100644 --- a/server/prisma/schema.prisma +++ b/server/prisma/schema.prisma @@ -9,6 +9,7 @@ datasource db { model Timetable { id Int @id @unique @default(autoincrement()) + title String @default("Default") createdAt DateTime @default(now()) updatedAt DateTime @updatedAt class String diff --git a/src/components/settings/timetable-card.vue b/src/components/settings/timetable-card.vue new file mode 100644 index 0000000..7fca0b2 --- /dev/null +++ b/src/components/settings/timetable-card.vue @@ -0,0 +1,73 @@ + + + + + diff --git a/src/components/timetable-list.vue b/src/components/timetable-list.vue index 05f0a7f..19ebf64 100644 --- a/src/components/timetable-list.vue +++ b/src/components/timetable-list.vue @@ -1,5 +1,5 @@