forked from MapComplete/MapComplete
Themes: add label support to questions.json; add opening hours for hospitals
This commit is contained in:
parent
151e648616
commit
41fdeb9cb5
4 changed files with 93 additions and 68 deletions
|
@ -1,14 +1,4 @@
|
|||
import {
|
||||
Concat,
|
||||
Conversion,
|
||||
DesugaringContext,
|
||||
DesugaringStep,
|
||||
Each,
|
||||
FirstOf,
|
||||
Fuse,
|
||||
On,
|
||||
SetDefault,
|
||||
} from "./Conversion"
|
||||
import {Concat, Conversion, DesugaringContext, DesugaringStep, Each, FirstOf, Fuse, On, SetDefault,} from "./Conversion"
|
||||
import {LayerConfigJson} from "../Json/LayerConfigJson"
|
||||
import {TagRenderingConfigJson} from "../Json/TagRenderingConfigJson"
|
||||
import {Utils} from "../../../Utils"
|
||||
|
@ -23,8 +13,6 @@ import predifined_filters from "../../../assets/layers/filters/filters.json"
|
|||
import {TagConfigJson} from "../Json/TagConfigJson"
|
||||
import PointRenderingConfigJson from "../Json/PointRenderingConfigJson"
|
||||
import LineRenderingConfigJson from "../Json/LineRenderingConfigJson"
|
||||
import { type } from "os"
|
||||
import exp from "constants"
|
||||
|
||||
class ExpandFilter extends DesugaringStep<LayerConfigJson> {
|
||||
private static readonly predefinedFilters = ExpandFilter.load_filters()
|
||||
|
@ -124,6 +112,7 @@ class ExpandTagRendering extends Conversion<
|
|||
TagRenderingConfigJson[]
|
||||
> {
|
||||
private readonly _state: DesugaringContext
|
||||
private readonly _tagRenderingsByLabel: Map<string, TagRenderingConfigJson[]>
|
||||
private readonly _self: LayerConfigJson
|
||||
private readonly _options: {
|
||||
/* If true, will copy the 'osmSource'-tags into the condition */
|
||||
|
@ -144,6 +133,17 @@ class ExpandTagRendering extends Conversion<
|
|||
this._state = state
|
||||
this._self = self
|
||||
this._options = options
|
||||
this._tagRenderingsByLabel = new Map<string, TagRenderingConfigJson[]>()
|
||||
for (const trconfig of state.tagRenderings.values()) {
|
||||
for (const label of trconfig.labels ?? []) {
|
||||
let withLabel = this._tagRenderingsByLabel.get(label)
|
||||
if (withLabel === undefined) {
|
||||
withLabel = []
|
||||
this._tagRenderingsByLabel.set(label, withLabel)
|
||||
}
|
||||
withLabel.push(trconfig)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
convert(
|
||||
|
@ -161,14 +161,16 @@ class ExpandTagRendering extends Conversion<
|
|||
}
|
||||
|
||||
private lookup(name: string): TagRenderingConfigJson[] | undefined {
|
||||
|
||||
const direct = this.directLookup(name)
|
||||
|
||||
if (direct === undefined) {
|
||||
return undefined
|
||||
}
|
||||
const result: TagRenderingConfigJson[] = []
|
||||
for (const tagRenderingConfigJson of direct) {
|
||||
if (tagRenderingConfigJson["builtin"] !== undefined) {
|
||||
let nm: string | string[] = tagRenderingConfigJson["builtin"]
|
||||
let nm: string | string[] | undefined = tagRenderingConfigJson["builtin"]
|
||||
if (nm !== undefined) {
|
||||
let indirect: TagRenderingConfigJson[]
|
||||
if (typeof nm === "string") {
|
||||
indirect = this.lookup(nm)
|
||||
|
@ -196,6 +198,10 @@ class ExpandTagRendering extends Conversion<
|
|||
if (state.tagRenderings.has(name)) {
|
||||
return [state.tagRenderings.get(name)]
|
||||
}
|
||||
if(this._tagRenderingsByLabel.has(name)){
|
||||
return this._tagRenderingsByLabel.get(name)
|
||||
}
|
||||
|
||||
if (name.indexOf(".") < 0) {
|
||||
return undefined
|
||||
}
|
||||
|
|
|
@ -16,6 +16,8 @@ export interface TagRenderingConfigJson {
|
|||
/**
|
||||
* If 'group' is defined on many tagRenderings, these are grouped together when shown. The questions are grouped together as well.
|
||||
* The first tagRendering of a group will always be a sticky element.
|
||||
*
|
||||
* @deprecated
|
||||
*/
|
||||
group?: string
|
||||
|
||||
|
|
|
@ -83,9 +83,23 @@
|
|||
"ca": "Un pacient hospitalitzat és un pacient que roman diversos dies a la instal·lació"
|
||||
}
|
||||
},
|
||||
"phone",
|
||||
"email",
|
||||
"website"
|
||||
"contact",
|
||||
{
|
||||
"id": "oh-visitor",
|
||||
"question": {
|
||||
"en": "When are visitors allowed to visit?"
|
||||
},
|
||||
"questionHint": {
|
||||
"en": "These are the regular visitor hours. Some wands have different visitor hours or might allow visitors in emergencies"
|
||||
},
|
||||
"freeform": {
|
||||
"key": "opening_hours:visitors",
|
||||
"type": "opening_hours"
|
||||
},
|
||||
"render": {
|
||||
"en": "<h3>Opening hours for visitors</h3>Regular visitors are allowed at the following moments: {opening_hours_table(opening_hours:visitors)}<p class='subtle'>Some wands might have different opening hours. Many hospitals allow visits during emergencies too.</p>"
|
||||
}
|
||||
}
|
||||
],
|
||||
"mapRendering": [
|
||||
{
|
||||
|
|
|
@ -113,6 +113,7 @@
|
|||
"render": "{minimap(18, id): width:100%; height:8rem; border-radius:2rem; overflow: hidden; pointer-events: none;}"
|
||||
},
|
||||
"phone": {
|
||||
"labels": ["contact"],
|
||||
"question": {
|
||||
"en": "What is the phone number of {title()}?",
|
||||
"nl": "Wat is het telefoonnummer van {title()}?",
|
||||
|
@ -164,6 +165,7 @@
|
|||
]
|
||||
},
|
||||
"email": {
|
||||
"labels": ["contact"],
|
||||
"render": "<a href='mailto:{email}' target='_blank'>{email}</a>",
|
||||
"question": {
|
||||
"nl": "Wat is het e-mailadres van {title()}?",
|
||||
|
@ -206,6 +208,7 @@
|
|||
}
|
||||
},
|
||||
"website": {
|
||||
"labels": ["contact"],
|
||||
"question": {
|
||||
"en": "What is the website of {title()}?",
|
||||
"nl": "Wat is de website van {title()}?",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue