diff --git a/UI/OpeningHours/OpeningHours.ts b/UI/OpeningHours/OpeningHours.ts index 51a7d697b4..a37e831d8e 100644 --- a/UI/OpeningHours/OpeningHours.ts +++ b/UI/OpeningHours/OpeningHours.ts @@ -316,12 +316,21 @@ export class OH { } } + /** + * + * OH.ParsePHRule("PH Off") // => {mode: "off"} + * OH.ParsePHRule("PH OPEN") // => {mode: "open"} + * OH.ParsePHRule("PH 10:00-12:00") // => {mode: " ", start: "10:00", end: "12:00"} + * OH.ParsePHRule(undefined) // => null + * OH.ParsePHRule(null) // => null + * OH.ParsePHRule("some random string") // => null + */ public static ParsePHRule(str: string): { mode: string, start?: string, end?: string } { - if (str === undefined) { + if (str === undefined || str === null) { return null } str = str.trim(); @@ -330,13 +339,13 @@ export class OH { } str = str.trim(); - if (str === "PH off") { + if (str.toLowerCase() === "ph off") { return { mode: "off" } } - if (str === "PH open") { + if (str.toLowerCase() === "ph open") { return { mode: "open" } diff --git a/UI/OpeningHours/PublicHolidayInput.ts b/UI/OpeningHours/PublicHolidayInput.ts index 6e4e621e8f..05274552bf 100644 --- a/UI/OpeningHours/PublicHolidayInput.ts +++ b/UI/OpeningHours/PublicHolidayInput.ts @@ -26,6 +26,20 @@ export default class PublicHolidayInput extends InputElement { return true; } + /** + * + * // should construct an element + * const html = new PublicHolidayInput().InnerConstructElement() + * html !== undefined // => true + * + * // should construct an element despite having an invalid input + * const html = new PublicHolidayInput(new UIEventSource("invalid")).InnerConstructElement() + * html !== undefined // => true + * + * // should construct an element despite having null as input + * const html = new PublicHolidayInput(new UIEventSource(null)).InnerConstructElement() + * html !== undefined // => true + */ protected InnerConstructElement(): HTMLElement { const dropdown = new DropDown( Translations.t.general.opening_hours.open_during_ph.Clone(), @@ -75,6 +89,9 @@ export default class PublicHolidayInput extends InputElement { const value = this._value; value.map(ph => OH.ParsePHRule(ph)) .addCallbackAndRunD(parsed => { + if(parsed === null){ + return + } mode.setData(parsed.mode) startTime.setData(parsed.start) endTime.setData(parsed.end)