From 18fcdd881ef693bdd8bf6020b9714f85af33da3d Mon Sep 17 00:00:00 2001 From: Fenris Wolf Date: Sun, 20 Oct 2024 17:26:35 +0200 Subject: [PATCH] [mod] widget:listview:bessere Darstellung und Bedienung --- source/data/localization/deu.loc.json | 1 + source/data/localization/eng.loc.json | 1 + source/style/widgets.css | 4 + source/widgets/listview/logic.ts | 93 ++++++++++++------- .../widgets/listview/templates/entry.html.tpl | 22 ++--- 5 files changed, 77 insertions(+), 44 deletions(-) diff --git a/source/data/localization/deu.loc.json b/source/data/localization/deu.loc.json index f6eb04e..5698e2b 100644 --- a/source/data/localization/deu.loc.json +++ b/source/data/localization/deu.loc.json @@ -13,6 +13,7 @@ "common.weekday.friday": "Fr", "common.weekday.saturday": "Sa", "common.weekday.sunday": "So", + "common.open": "öffnen", "access_level.none": "nichts", "access_level.view": "nur lesen", "access_level.edit": "lesen und bearbeiten", diff --git a/source/data/localization/eng.loc.json b/source/data/localization/eng.loc.json index 29a4063..a7ea3e7 100644 --- a/source/data/localization/eng.loc.json +++ b/source/data/localization/eng.loc.json @@ -13,6 +13,7 @@ "common.weekday.friday": "Fri", "common.weekday.saturday": "Sat", "common.weekday.sunday": "Sun", + "common.open": "open", "access_level.none": "none", "access_level.view": "read only", "access_level.edit": "read and write", diff --git a/source/style/widgets.css b/source/style/widgets.css index a067deb..5c45cfa 100644 --- a/source/style/widgets.css +++ b/source/style/widgets.css @@ -67,6 +67,10 @@ content: "] "; } +.listview-entry-field-empty { + display: none; +} + .listview-entry-field:not(:last-child) { margin-bottom: 16px; diff --git a/source/widgets/listview/logic.ts b/source/widgets/listview/logic.ts index 1458e57..02e514f 100644 --- a/source/widgets/listview/logic.ts +++ b/source/widgets/listview/logic.ts @@ -133,27 +133,49 @@ namespace _zeitbild.frontend_web.widgets.listview "widget-listview", "entry", { - "name": entry.event_object.name, - "calendar": entry.calendar_name, - "when": _zeitbild.frontend_web.helpers.timespan_format(entry.event_object.begin, entry.event_object.end), - "label_location": lib_plankton.translate.get("event.location"), - "location": ( + "name_value": entry.event_object.name, + "calendar_value": entry.calendar_name, + "when_value": _zeitbild.frontend_web.helpers.timespan_format(entry.event_object.begin, entry.event_object.end), + "location_label": lib_plankton.translate.get("event.location"), + "location_extra_classes": ( + (entry.event_object.location === null) + ? + "listview-entry-field-empty" + : + "" + ), + "location_value": ( (entry.event_object.location === null) ? "?" : entry.event_object.location ), - "label_link": lib_plankton.translate.get("event.link"), - "link": ( + "link_label": lib_plankton.translate.get("event.link"), + "link_extra_classes": ( + (entry.event_object.link === null) + ? + "listview-entry-field-empty" + : + "" + ), + "link_value": ( (entry.event_object.link === null) ? "?" : entry.event_object.link ), - "label_description": lib_plankton.translate.get("event.description"), - "description": ( + "link_action": lib_plankton.translate.get("common.open"), + "description_label": lib_plankton.translate.get("event.description"), + "description_extra_classes": ( + (entry.event_object.description === null) + ? + "listview-entry-field-empty" + : + "" + ), + "description_value": ( (entry.event_object.description === null) ? "?" @@ -208,30 +230,35 @@ namespace _zeitbild.frontend_web.widgets.listview (element) => { element.addEventListener( "click", - () => { - const rel : string = element.getAttribute("rel"); - const parts : Array = rel.split("/"); - const calendar_id : _zeitbild.frontend_web.type.calendar_id = parseInt(parts[0]); - const event_id : (null | _zeitbild.frontend_web.type.local_resource_event_id) = ( - parts[1] === "-" - ? - null - : - parseInt(parts[1]) - ); - const access_level : _zeitbild.frontend_web.type.enum_access_level = (() => { - switch (parts[2]) { - case "none": return _zeitbild.frontend_web.type.enum_access_level.none; - case "view": return _zeitbild.frontend_web.type.enum_access_level.view; - case "edit": return _zeitbild.frontend_web.type.enum_access_level.edit; - case "admin": return _zeitbild.frontend_web.type.enum_access_level.admin; - } - }) (); - this.action_select_event( - calendar_id, - access_level, - event_id, - ); + (event) => { + if (! (event.target === element)) { + // do nothing + } + else { + const rel : string = element.getAttribute("rel"); + const parts : Array = rel.split("/"); + const calendar_id : _zeitbild.frontend_web.type.calendar_id = parseInt(parts[0]); + const event_id : (null | _zeitbild.frontend_web.type.local_resource_event_id) = ( + parts[1] === "-" + ? + null + : + parseInt(parts[1]) + ); + const access_level : _zeitbild.frontend_web.type.enum_access_level = (() => { + switch (parts[2]) { + case "none": return _zeitbild.frontend_web.type.enum_access_level.none; + case "view": return _zeitbild.frontend_web.type.enum_access_level.view; + case "edit": return _zeitbild.frontend_web.type.enum_access_level.edit; + case "admin": return _zeitbild.frontend_web.type.enum_access_level.admin; + } + }) (); + this.action_select_event( + calendar_id, + access_level, + event_id, + ); + } } ); } diff --git a/source/widgets/listview/templates/entry.html.tpl b/source/widgets/listview/templates/entry.html.tpl index a1b2751..eea800b 100644 --- a/source/widgets/listview/templates/entry.html.tpl +++ b/source/widgets/listview/templates/entry.html.tpl @@ -1,20 +1,20 @@
  • - {{name}} ({{calendar}}) + {{name_value}} ({{calendar_value}})
    - {{when}} + {{when_value}}
    -
    - - {{location}} +
    + + {{location_value}}
    -
    - - {{link}} +
    + + {{link_action}}