frontend-dali/source/pages/overview/logic.ts
2024-10-01 22:11:08 +02:00

132 lines
3.4 KiB
TypeScript

namespace _zeitbild.frontend_web.pages.overview
{
/**
*/
lib_plankton.zoo_page.register(
"overview",
async (parameters, target_element) => {
target_element.innerHTML = await _zeitbild.frontend_web.helpers.template_coin(
"overview",
"default",
{
}
);
// sources
{
const data : Array<
{
id : _zeitbild.frontend_web.type.calendar_id;
name : string;
access_level : _zeitbild.frontend_web.type.enum_access_level;
}
> = await _zeitbild.frontend_web.backend.calendar_list(
);
const widget_sources = new _zeitbild.frontend_web.widgets.sources.class_widget_sources(
data,
{
"action_select": (entry) => {
switch (entry.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.edit:
case _zeitbild.frontend_web.type.enum_access_level.view: {
lib_plankton.zoo_page.set(
{
"name": "calendar_edit",
"parameters": {
"read_only": "yes",
"calendar_id": entry.id,
}
}
);
break;
}
case _zeitbild.frontend_web.type.enum_access_level.admin: {
lib_plankton.zoo_page.set(
{
"name": "calendar_edit",
"parameters": {
"read_only": "no",
"calendar_id": entry.id,
}
}
);
break;
}
}
},
}
);
await widget_sources.load(target_element.querySelector("#overview-pane-left"));
}
// weekview
{
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,
}
),
{
"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,
}
}
);
},
"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_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"));
}
return Promise.resolve<void>(undefined);
},
);
}