diff --git a/source/data/localization/deu.loc.json b/source/data/localization/deu.loc.json index ff10470..5245331 100644 --- a/source/data/localization/deu.loc.json +++ b/source/data/localization/deu.loc.json @@ -4,6 +4,7 @@ }, "tree": { "common.timezone_shift": "Zeitzonen-Verschiebung", + "common.timezone_indicator": "ZZ:", "common.date": "Datum", "common.time": "Uhrzeit", "common.weekday.monday": "Mo", @@ -23,6 +24,7 @@ "access_level.admin": "voll", "event.event": "Termin", "event.name": "Name", + "event.when": "Zeit", "event.begin": "Anfang", "event.end": "Ende", "event.location": "Ort", diff --git a/source/data/localization/eng.loc.json b/source/data/localization/eng.loc.json index 8977a02..87012f1 100644 --- a/source/data/localization/eng.loc.json +++ b/source/data/localization/eng.loc.json @@ -4,6 +4,7 @@ }, "tree": { "common.timezone_shift": "Timezone shift", + "common.timezone_indicator": "TZ:", "common.date": "date", "common.time": "time", "common.weekday.monday": "Mon", @@ -23,6 +24,7 @@ "access_level.admin": "full", "event.event": "event", "event.name": "name", + "event.when": "time", "event.begin": "begin", "event.end": "end", "event.location": "location", diff --git a/source/logic/helpers.ts b/source/logic/helpers.ts index 612da3d..dd6d418 100644 --- a/source/logic/helpers.ts +++ b/source/logic/helpers.ts @@ -75,106 +75,6 @@ namespace _zeitbild.frontend_web.helpers } - /** - * @todo timezone - */ - export function date_format( - date : lib_plankton.pit.type_date - ) : string - { - return lib_plankton.string.coin( - "{{year}}-{{month}}-{{day}}", - { - "year": date.year.toFixed(0).padStart(4, "0"), - "month": date.month.toFixed(0).padStart(2, "0"), - "day": date.day.toFixed(0).padStart(2, "0"), - } - ); - } - - - /** - * @todo timezone - */ - export function time_format( - time : lib_plankton.pit.type_time - ) : string - { - return lib_plankton.string.coin( - "{{hour}}:{{minute}}", - { - "hour": time.hour.toFixed(0).padStart(2, "0"), - "minute": time.minute.toFixed(0).padStart(2, "0"), - "second": time.second.toFixed(0).padStart(2, "0"), - } - ); - } - - - /** - * @todo timezone - */ - export function datetime_format( - datetime : (null | lib_plankton.pit.type_datetime) - ) : string - { - if (datetime === null) { - return "-"; - } - else { - return lib_plankton.string.coin( - "{{date}}{{macro_time}}", - { - "date": date_format(datetime.date), - "macro_time": ( - (datetime.time === null) - ? - "" - : - lib_plankton.string.coin( - ",{{time}}", - { - "time": time_format(datetime.time), - } - ) - ), - } - ); - } - } - - - /** - */ - export function timespan_format( - from : lib_plankton.pit.type_datetime, - to : (null | lib_plankton.pit.type_datetime) - ) : string - { - let result : string = ""; - result += datetime_format(from); - if (to === null) { - // do nothing - } - else { - result += " - "; - if ( - (from.date.year === to.date.year) - && - (from.date.month === to.date.month) - && - (from.date.day === to.date.day) - ) { - // only time - result += time_format(to.time); - } - else { - result += datetime_format(to); - } - } - return result; - } - /** */ export function input_access_level( diff --git a/source/widgets/listview/logic.ts b/source/widgets/listview/logic.ts index bb8a945..9ede8ec 100644 --- a/source/widgets/listview/logic.ts +++ b/source/widgets/listview/logic.ts @@ -144,7 +144,15 @@ namespace _zeitbild.frontend_web.widgets.listview { "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), + "when_value": lib_plankton.pit.timespan_format( + entry.event_object.begin, + entry.event_object.end, + { + "timezone_indicator": lib_plankton.translate.get("common.timezone_indicator"), + "adjust_to_ce": true, + "show_timezone": false, + } + ), "location_label": lib_plankton.translate.get("event.location"), "location_extra_classes": ( (entry.event_object.location === null) diff --git a/source/widgets/weekview/logic.ts b/source/widgets/weekview/logic.ts index f309f48..ae60a10 100644 --- a/source/widgets/weekview/logic.ts +++ b/source/widgets/weekview/logic.ts @@ -127,65 +127,16 @@ namespace _zeitbild.frontend_web.widgets.weekview lib_plankton.string.coin( "{{label}}: {{value}}\n", { - "label": lib_plankton.translate.get("event.begin"), - "value": lib_plankton.string.coin( - "{{hour}}:{{minute}}", + "label": lib_plankton.translate.get("event.when"), + "value": lib_plankton.pit.timespan_format( + event_object.begin, + event_object.end, { - "hour": event_object.begin.time.hour.toFixed(0).padStart(2, "0"), - "minute": event_object.begin.time.minute.toFixed(0).padStart(2, "0"), + "timezone_indicator": lib_plankton.translate.get("common.timezone_indicator"), + "adjust_to_ce": true, + "show_timezone": true, + "omit_date": true, } - ), // TODO: outsource - } - ) - : - "" - ) - + - ( - (event_object.end !== null) - ? - lib_plankton.string.coin( - "{{label}}: {{value}}\n", - { - "label": lib_plankton.translate.get("event.end"), - "value": ( - [ - ( - ( - (event_object.end.date.year !== event_object.begin.date.year) - || - (event_object.end.date.month !== event_object.begin.date.month) - || - (event_object.end.date.day !== event_object.begin.date.day) - ) - ? - lib_plankton.string.coin( - "{{year}}-{{month}}-{{day}}", - { - "year": event_object.end.date.year.toFixed(0).padStart(4, "0"), - "month": event_object.end.date.month.toFixed(0).padStart(2, "0"), - "day": event_object.end.date.day.toFixed(0).padStart(2, "0"), - } - ) - : - null - ), - ( - (event_object.end.time !== null) - ? - lib_plankton.string.coin( - "{{hour}}:{{minute}}", - { - "hour": event_object.end.time.hour.toFixed(0).padStart(2, "0"), - "minute": event_object.end.time.minute.toFixed(0).padStart(2, "0"), - } - ) - : - null - ), - ] - .filter(x => (x !== null)) - .join(",") ), } ) @@ -438,7 +389,24 @@ namespace _zeitbild.frontend_web.widgets.weekview .forEach( (entry) => { const distance_seconds : int = ( - lib_plankton.pit.from_datetime(entry.event_object.begin) + lib_plankton.pit.from_datetime( + /** + * so that events without a start time will be put in the correct box + */ + { + "timezone_shift": entry.event_object.begin.timezone_shift, + "date": entry.event_object.begin.date, + "time": ( + entry.event_object.begin.time + ?? + { + "hour": 12, + "minute": 0, + "second": 0 + } + ), + } + ) - from_pit ); @@ -626,7 +594,7 @@ namespace _zeitbild.frontend_web.widgets.weekview "title": lib_plankton.call.convey( cell.pit, [ - lib_plankton.pit.to_datetime, + lib_plankton.pit.to_datetime_ce, (x : lib_plankton.pit.type_datetime) => lib_plankton.string.coin( "{{year}}-{{month}}-{{day}}", { @@ -640,7 +608,7 @@ namespace _zeitbild.frontend_web.widgets.weekview "day": lib_plankton.call.convey( cell.pit, [ - lib_plankton.pit.to_datetime, + lib_plankton.pit.to_datetime_ce, (x : lib_plankton.pit.type_datetime) => lib_plankton.string.coin( "{{day}}", { @@ -654,7 +622,7 @@ namespace _zeitbild.frontend_web.widgets.weekview "rel": lib_plankton.call.convey( cell.pit, [ - lib_plankton.pit.to_datetime, + lib_plankton.pit.to_datetime_ce, (x : lib_plankton.pit.type_datetime) => lib_plankton.string.coin( "{{year}}-{{month}}-{{day}}", {