[mod] page:overview:option to use listview widget instead of weekview widget

This commit is contained in:
Fenris Wolf 2024-10-01 22:53:12 +02:00
parent a8d05d1dbf
commit 9f292aee88

View file

@ -6,6 +6,10 @@ namespace _zeitbild.frontend_web.pages.overview
lib_plankton.zoo_page.register( lib_plankton.zoo_page.register(
"overview", "overview",
async (parameters, target_element) => { async (parameters, target_element) => {
// params
const mode : ("list" | "week") = (parameters["mode"] ?? "week");
// exec
target_element.innerHTML = await _zeitbild.frontend_web.helpers.template_coin( target_element.innerHTML = await _zeitbild.frontend_web.helpers.template_coin(
"overview", "overview",
"default", "default",
@ -62,68 +66,98 @@ namespace _zeitbild.frontend_web.pages.overview
); );
await widget_sources.load(target_element.querySelector("#overview-pane-left")); await widget_sources.load(target_element.querySelector("#overview-pane-left"));
} }
// weekview // view
{ {
const widget_weekview = new _zeitbild.frontend_web.widgets.weekview.class_widget_weekview( const get_entries = (from_pit, to_pit, calendar_ids) => _zeitbild.frontend_web.backend.events(
(from_pit, to_pit, calendar_ids) => _zeitbild.frontend_web.backend.events( from_pit,
from_pit, to_pit,
to_pit,
{
"calendar_ids": calendar_ids,
}
),
{ {
"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( lib_plankton.zoo_page.set(
{ {
"name": "event_add", "name": "event_edit",
"parameters": { "parameters": {
"calendar_id": null, "read_only": "yes",
"year": date.year, "calendar_id": calendar_id,
"month": date.month, "event_id": event_id,
"day": date.day,
} }
} }
); );
}, break;
"action_select_event": (calendar_id, access_level, event_id) => { }
switch (access_level) { case _zeitbild.frontend_web.type.enum_access_level.edit:
case _zeitbild.frontend_web.type.enum_access_level.none: { case _zeitbild.frontend_web.type.enum_access_level.admin: {
throw (new Error("this event should not be visible")); lib_plankton.zoo_page.set(
break; {
"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( break;
{
"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;
}
}
} }
} }
); };
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<void>(undefined); return Promise.resolve<void>(undefined);
}, },