From a4964836e482906eb9c147a2398c6ba51482526a Mon Sep 17 00:00:00 2001 From: imperosol Date: Wed, 30 Sep 2026 17:02:02 +0200 Subject: [PATCH] User timetable save --- .../bundled/timetable/generator-index.ts | 39 ++++++++++++++++-- timetable/templates/timetable/generator.jinja | 41 +++++++++++++++---- 2 files changed, 69 insertions(+), 11 deletions(-) diff --git a/timetable/static/bundled/timetable/generator-index.ts b/timetable/static/bundled/timetable/generator-index.ts index 54c48e07..3ead147a 100644 --- a/timetable/static/bundled/timetable/generator-index.ts +++ b/timetable/static/bundled/timetable/generator-index.ts @@ -154,10 +154,10 @@ document.addEventListener("alpine:init", () => { courses: [] as TimetableSlot[], startSlot: 0, endSlot: 0, - table: { - height: 0, - width: 0, - }, + table: { height: 0, width: 0 }, + edtPublic: false, + saving: false, + timetableSavedMessage: new AlertMessage(), colors: {} as Record, colorPalette: [ @@ -252,5 +252,36 @@ document.addEventListener("alpine:init", () => { downloadLink.click(); downloadLink.remove(); }, + + async saveSith() { + this.saving = true; + const res = await timetableSaveTimetable({ + body: { + // biome-ignore lint/style/useNamingConvention: api is snake case + is_viewable: this.edtPublic, + slots: this.courses.map((c) => + Object.assign({}, c, { + // biome-ignore lint/style/useNamingConvention: api is snake case + start_at: c.startSlot, + // biome-ignore lint/style/useNamingConvention: api is snake case + end_at: c.endSlot, + weekday: WEEKDAYS.indexOf(c.weekday) + 1, + }), + ), + }, + }); + if (res.response?.ok) { + this.timetableSavedMessage.display( + gettext("This timetable has been saved in your profile"), + { success: true }, + ); + } else { + this.timetableSavedMessage.display( + interpolate(gettext("Error %d: timetable save failed"), res.response?.status), + { success: false }, + ); + } + this.saving = false; + }, })); }); diff --git a/timetable/templates/timetable/generator.jinja b/timetable/templates/timetable/generator.jinja index 27bd83a2..0769181f 100644 --- a/timetable/templates/timetable/generator.jinja +++ b/timetable/templates/timetable/generator.jinja @@ -92,12 +92,39 @@ - + {% endblock content %}