From 9f292aee887a20bc634531f5f8f61596c74f81c4 Mon Sep 17 00:00:00 2001 From: Fenris Wolf Date: Tue, 1 Oct 2024 22:53:12 +0200 Subject: [PATCH] [mod] page:overview:option to use listview widget instead of weekview widget --- source/pages/overview/logic.ts | 136 ++++++++++++++++++++------------- 1 file changed, 85 insertions(+), 51 deletions(-) diff --git a/source/pages/overview/logic.ts b/source/pages/overview/logic.ts index 58b8d54..e1f4863 100644 --- a/source/pages/overview/logic.ts +++ b/source/pages/overview/logic.ts @@ -6,6 +6,10 @@ namespace _zeitbild.frontend_web.pages.overview lib_plankton.zoo_page.register( "overview", async (parameters, target_element) => { + // params + const mode : ("list" | "week") = (parameters["mode"] ?? "week"); + + // exec target_element.innerHTML = await _zeitbild.frontend_web.helpers.template_coin( "overview", "default", @@ -62,68 +66,98 @@ namespace _zeitbild.frontend_web.pages.overview ); await widget_sources.load(target_element.querySelector("#overview-pane-left")); } - // weekview + // view { - const widget_weekview = new _zeitbild.frontend_web.widgets.weekview.class_widget_weekview( - (from_pit, to_pit, calendar_ids) => _zeitbild.frontend_web.backend.events( - from_pit, - to_pit, - { - "calendar_ids": calendar_ids, - } - ), + const get_entries = (from_pit, to_pit, calendar_ids) => _zeitbild.frontend_web.backend.events( + from_pit, + to_pit, { - "action_select_day": (date) => { + "calendar_ids": calendar_ids, + } + ); + const action_select_event = (calendar_id, access_level, event_id) => { + switch (access_level) { + case _zeitbild.frontend_web.type.enum_access_level.none: { + throw (new Error("this event should not be visible")); + break; + } + case _zeitbild.frontend_web.type.enum_access_level.view: { lib_plankton.zoo_page.set( { - "name": "event_add", + "name": "event_edit", "parameters": { - "calendar_id": null, - "year": date.year, - "month": date.month, - "day": date.day, + "read_only": "yes", + "calendar_id": calendar_id, + "event_id": event_id, } } ); - }, - "action_select_event": (calendar_id, access_level, event_id) => { - switch (access_level) { - case _zeitbild.frontend_web.type.enum_access_level.none: { - throw (new Error("this event should not be visible")); - break; + break; + } + case _zeitbild.frontend_web.type.enum_access_level.edit: + case _zeitbild.frontend_web.type.enum_access_level.admin: { + lib_plankton.zoo_page.set( + { + "name": "event_edit", + "parameters": { + "read_only": "no", + "calendar_id": calendar_id, + "event_id": event_id, + } } - case _zeitbild.frontend_web.type.enum_access_level.view: { - lib_plankton.zoo_page.set( - { - "name": "event_edit", - "parameters": { - "read_only": "yes", - "calendar_id": calendar_id, - "event_id": event_id, - } - } - ); - break; - } - case _zeitbild.frontend_web.type.enum_access_level.edit: - case _zeitbild.frontend_web.type.enum_access_level.admin: { - lib_plankton.zoo_page.set( - { - "name": "event_edit", - "parameters": { - "read_only": "no", - "calendar_id": calendar_id, - "event_id": event_id, - } - } - ); - break; - } - } + ); + break; } } - ); - await widget_weekview.load(target_element.querySelector("#overview-pane-right")); + }; + switch (mode) { + case "list": { + const widget_listview = new _zeitbild.frontend_web.widgets.listview.class_widget_listview( + get_entries, + { + "action_select_event": action_select_event, + "action_add": () => { + lib_plankton.zoo_page.set( + { + "name": "event_add", + "parameters": { + "calendar_id": null, + "year": null, + "month": null, + "day": null, + } + } + ); + }, + } + ); + await widget_listview.load(target_element.querySelector("#overview-pane-right")); + break; + } + case "week": { + const widget_weekview = new _zeitbild.frontend_web.widgets.weekview.class_widget_weekview( + get_entries, + { + "action_select_event": action_select_event, + "action_select_day": (date) => { + lib_plankton.zoo_page.set( + { + "name": "event_add", + "parameters": { + "calendar_id": null, + "year": date.year, + "month": date.month, + "day": date.day, + } + } + ); + }, + } + ); + await widget_weekview.load(target_element.querySelector("#overview-pane-right")); + break; + } + } } return Promise.resolve(undefined); },