forked from MapComplete/MapComplete
Fix public holiday picker, add some tests, see #902
This commit is contained in:
parent
1773f851d1
commit
f99685c47d
2 changed files with 29 additions and 3 deletions
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -26,6 +26,20 @@ export default class PublicHolidayInput extends InputElement<string> {
|
|||
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<string> {
|
|||
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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue