forked from MapComplete/MapComplete
Merge master
This commit is contained in:
commit
dcea114c99
7 changed files with 152 additions and 155 deletions
|
@ -65,6 +65,7 @@
|
|||
}
|
||||
],
|
||||
"tagRenderings": [
|
||||
"images",
|
||||
{
|
||||
"id": "covered",
|
||||
"question": {
|
||||
|
|
|
@ -320,13 +320,20 @@
|
|||
"mappings": {
|
||||
"1": {
|
||||
"then": "Dette kunstværk fungerer ikke som en bænk"
|
||||
},
|
||||
"0": {
|
||||
"then": "Dette kunstværk fungerer også som en bænk"
|
||||
}
|
||||
}
|
||||
},
|
||||
"question": "Fungerer dette kunstværk som en bænk?"
|
||||
},
|
||||
"doubles_as_memorial": {
|
||||
"mappings": {
|
||||
"1": {
|
||||
"then": "Dette kunstværk fungerer ikke som et mindesmærke"
|
||||
},
|
||||
"0": {
|
||||
"then": "Dette kunstværk fungerer også som et mindesmærke"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -336,6 +343,9 @@
|
|||
"then": "Dette kunstværk fungerer ikke som en helligdom i vejkanten"
|
||||
}
|
||||
}
|
||||
},
|
||||
"artwork-artist-wikidata": {
|
||||
"question": "Hvem lavede dette kunstværk?"
|
||||
}
|
||||
},
|
||||
"title": {
|
||||
|
@ -703,7 +713,7 @@
|
|||
"presets": {
|
||||
"0": {
|
||||
"description": "En bemandet butik, der fokuserer på cykeludlejning",
|
||||
"title": "en cykeludlejningsforretning"
|
||||
"title": "en cykeludlejningsbutik"
|
||||
},
|
||||
"1": {
|
||||
"title": "cykeludlejning"
|
||||
|
@ -1888,7 +1898,30 @@
|
|||
}
|
||||
},
|
||||
"drinking_water": {
|
||||
"name": "Drikkevand"
|
||||
"name": "Drikkevand",
|
||||
"tagRenderings": {
|
||||
"Still in use?": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
"then": "Denne drikkevand fungerer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"fee": {
|
||||
"mappings": {
|
||||
"1": {
|
||||
"then": "Man skal betale for at bruge dette drikkevandssted"
|
||||
},
|
||||
"0": {
|
||||
"then": "Gratis at bruge"
|
||||
}
|
||||
},
|
||||
"question": "Er det gratis at benytte dette drikkevandssted?"
|
||||
},
|
||||
"render-closest-drinking-water": {
|
||||
"render": "<a href='#{_closest_other_drinking_water_id}'>Der er endnu en drikkevandsfontæne {_closest_other_drinking_water_distance} meter væk</a>"
|
||||
}
|
||||
}
|
||||
},
|
||||
"dumpstations": {
|
||||
"description": "Sanitære afleveringspladser",
|
||||
|
@ -2003,7 +2036,8 @@
|
|||
}
|
||||
},
|
||||
"question": "Hvad er dette objekt opkaldt efter?",
|
||||
"render": "Opkaldt efter {name:etymology}"
|
||||
"render": "Opkaldt efter {name:etymology}",
|
||||
"questionHint": "Dette kan være skrevet på et gadenavnskilt"
|
||||
},
|
||||
"streetsign-upload": {
|
||||
"render": {
|
||||
|
@ -2110,7 +2144,14 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"name": "Restauranter og fastfood"
|
||||
"name": "Restauranter og fastfood",
|
||||
"deletion": {
|
||||
"extraDeleteReasons": {
|
||||
"0": {
|
||||
"explanation": "{title()} er lukket permanent"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"ghostsign": {
|
||||
"presets": {
|
||||
|
@ -2879,7 +2920,30 @@
|
|||
"question": "Sælger denne butik cykler?"
|
||||
},
|
||||
"shops-name": {
|
||||
"render": "Denne butik hedder <i>{name}</i>"
|
||||
"render": "Denne butik hedder <i>{name}</i>",
|
||||
"question": "Hvad er navnet på denne butik?"
|
||||
},
|
||||
"id_presets.shop_types": {
|
||||
"override": {
|
||||
"question": "Hvilken slags butik er dette?",
|
||||
"+mappings": {
|
||||
"0": {
|
||||
"then": "Cykeludlejningsbutik"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"deletion": {
|
||||
"nonDeleteMappings": {
|
||||
"0": {
|
||||
"then": "{title()} er lukket permanent"
|
||||
}
|
||||
}
|
||||
},
|
||||
"presets": {
|
||||
"0": {
|
||||
"title": "en butik"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -25,7 +25,8 @@
|
|||
},
|
||||
"street": {
|
||||
"question": "In welke straat bevindt dit adres zich?",
|
||||
"render": "Dit adres bevindt zich in de straat <b>{addr:street}</b>"
|
||||
"render": "Dit adres bevindt zich in de straat <b>{addr:street}</b>",
|
||||
"questionHint": "Vermeld het huisnummer niet"
|
||||
},
|
||||
"unit": {
|
||||
"mappings": {
|
||||
|
@ -1720,7 +1721,7 @@
|
|||
},
|
||||
"Capacity": {
|
||||
"question": "Hoeveel fietsen kunnen in deze fietsparking?",
|
||||
"questionHint": "Dit is het totaal aantal gewone fietsen, bakfietsen, elektrische fietsen, ...",
|
||||
"questionHint": "Dit is het totaal aantal gewone fietsen, bakfietsen, elektrische fietsen, …",
|
||||
"render": "Plaats voor {capacity} fietsen"
|
||||
},
|
||||
"Cargo bike capacity?": {
|
||||
|
@ -2164,9 +2165,6 @@
|
|||
},
|
||||
"title": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
"then": "{name}"
|
||||
},
|
||||
"1": {
|
||||
"then": "Vogelkijkhut {name}"
|
||||
},
|
||||
|
@ -2368,6 +2366,20 @@
|
|||
"Name": {
|
||||
"question": "Wat is de naam van deze zaak?",
|
||||
"render": "De naam van deze zaak is {name}"
|
||||
},
|
||||
"pub_reusable_packaging": {
|
||||
"mappings": {
|
||||
"1": {
|
||||
"then": "Accepteert geen herbruikbare bekers"
|
||||
},
|
||||
"0": {
|
||||
"then": "Accepteert herbruikbare bekers"
|
||||
},
|
||||
"2": {
|
||||
"then": "Accepteert <b>alleen</b> mensen die een herbruikbare beker meenemen"
|
||||
}
|
||||
},
|
||||
"question": "Accepteert {title()} het meebrengen van eigen herbruikbare bekers?"
|
||||
}
|
||||
},
|
||||
"title": {
|
||||
|
@ -6925,11 +6937,6 @@
|
|||
}
|
||||
},
|
||||
"title": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
"then": "{name}"
|
||||
}
|
||||
},
|
||||
"render": "Natuurgebied"
|
||||
}
|
||||
},
|
||||
|
@ -7463,21 +7470,6 @@
|
|||
"render": "Picknicktafel"
|
||||
}
|
||||
},
|
||||
"play_forest": {
|
||||
"description": "Een speelbos is een vrij toegankelijke zone in een bos",
|
||||
"name": "Speelbossen",
|
||||
"title": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
"then": "{name}"
|
||||
},
|
||||
"1": {
|
||||
"then": "Speelbos {name}"
|
||||
}
|
||||
},
|
||||
"render": "Speelbos"
|
||||
}
|
||||
},
|
||||
"playground": {
|
||||
"deletion": {
|
||||
"nonDeleteMappings": {
|
||||
|
@ -9278,9 +9270,6 @@
|
|||
},
|
||||
"title": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
"then": "{name}"
|
||||
},
|
||||
"1": {
|
||||
"then": "Voetpad"
|
||||
},
|
||||
|
@ -11539,16 +11528,7 @@
|
|||
}
|
||||
},
|
||||
"village_green": {
|
||||
"description": "Een laag die dorpsgroen toont (gemeenschapsgroen, maar niet echt een park)",
|
||||
"name": "Speelweide",
|
||||
"title": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
"then": "{name}"
|
||||
}
|
||||
},
|
||||
"render": "Speelweide"
|
||||
}
|
||||
"description": "Een laag die dorpsgroen toont (gemeenschapsgroen, maar niet echt een park)"
|
||||
},
|
||||
"visitor_information_centre": {
|
||||
"description": "Een bezoekerscentrum biedt informatie over een specifieke attractie of bezienswaardigheid waar het is gevestigd.",
|
||||
|
@ -11759,5 +11739,29 @@
|
|||
},
|
||||
"render": "windturbine"
|
||||
}
|
||||
},
|
||||
"beehive": {
|
||||
"name": "Bijenkorven",
|
||||
"presets": {
|
||||
"0": {
|
||||
"title": "een bijenkorf"
|
||||
}
|
||||
},
|
||||
"tagRenderings": {
|
||||
"capacity": {
|
||||
"freeform": {
|
||||
"placeholder": "Aantal bijenkorven"
|
||||
},
|
||||
"mappings": {
|
||||
"0": {
|
||||
"then": "Er is 1 bijenkorf"
|
||||
}
|
||||
},
|
||||
"render": "Er zijn {capacity} bijenkorven",
|
||||
"question": "Hoeveel bijenkorven zijn er?"
|
||||
}
|
||||
},
|
||||
"title": "Bijenkorf",
|
||||
"description": "Laag met bijenkorven"
|
||||
}
|
||||
}
|
|
@ -666,7 +666,7 @@
|
|||
"loginToClose": "Login om deze kaartnota te sluiten",
|
||||
"noteLayerDoEnable": "Schakel de laag met kaartnota's in",
|
||||
"noteLayerHasFilters": "Sommige kaartnota's kunnen verborgen zijn door een filter",
|
||||
"noteLayerNotEnabled": "De laat met kaartnota's staat af. Zet deze aan om een nieuwe kaartnota toe te voegen",
|
||||
"noteLayerNotEnabled": "De laag met kaartnota's staat af. Zet deze aan om een nieuwe kaartnota toe te voegen",
|
||||
"reopenNote": "Heropen de kaartnota",
|
||||
"reopenNoteAndComment": "Heropen de kaartnota en voeg commentaar toe",
|
||||
"textNeeded": "Geef een beschrijvende tekst om een kaartnota te maken",
|
||||
|
|
|
@ -634,37 +634,8 @@
|
|||
"building type": {
|
||||
"question": "Wat voor soort gebouw is dit?"
|
||||
},
|
||||
"grb-fixme": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
"then": "Geen fixme"
|
||||
}
|
||||
},
|
||||
"question": "Wat zegt de fixme?",
|
||||
"render": "De fixme is <b>{fixme}</b>"
|
||||
},
|
||||
"grb-housenumber": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
"then": "Geen huisnummer"
|
||||
}
|
||||
},
|
||||
"question": "Wat is het huisnummer?",
|
||||
"render": "Het huisnummer is <b>{addr:housenumber}</b>"
|
||||
},
|
||||
"grb-min-level": {
|
||||
"question": "Hoeveel verdiepingen ontbreken?",
|
||||
"render": "Dit gebouw begint maar op de {building:min_level} verdieping"
|
||||
},
|
||||
"grb-reference": {
|
||||
"render": "Werd geïmporteerd vanuit GRB, het referentienummer is {source:geometry:ref}"
|
||||
},
|
||||
"grb-street": {
|
||||
"question": "Wat is de straat?",
|
||||
"render": "De straat is <b>{addr:street}</b>"
|
||||
},
|
||||
"grb-unit": {
|
||||
"render": "De wooneenheid-aanduiding is <b>{addr:unit}</b> "
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -706,9 +677,7 @@
|
|||
"render": "Link op profiel verplicht"
|
||||
}
|
||||
}
|
||||
},
|
||||
"shortDescription": "Grb import helper tool",
|
||||
"title": "GRB import helper"
|
||||
}
|
||||
},
|
||||
"guideposts": {
|
||||
"description": "Wegwijzers (ook wel handwijzer genoemd) zijn vaak te vinden langs officiële wandel-, fiets-, ski- of paardrijroutes om de richtingen naar verschillende bestemmingen aan te geven. Vaak zijn ze vernoemd naar een regio of plaats en geven ze de hoogte aan.\n\nDe positie van een wegwijzer kan door een wandelaar/fietser/renner/skiër worden gebruikt als bevestiging van de huidige positie, vooral als ze een gedrukte kaart zonder GPS-ontvanger gebruiken. ",
|
||||
|
@ -1107,11 +1076,6 @@
|
|||
},
|
||||
"title": "Dierenartsen, hondenloopzones en andere huisdiervriendelijke plaatsen"
|
||||
},
|
||||
"play_forests": {
|
||||
"description": "Een speelbos is een zone in een bos die vrij toegankelijk is voor spelende kinderen. Deze wordt in bossen van het Agentschap Natuur en bos altijd aangeduid met het overeenkomstige bord.",
|
||||
"shortDescription": "Deze kaart toont speelbossen",
|
||||
"title": "Speelbossen"
|
||||
},
|
||||
"playgrounds": {
|
||||
"description": "Op deze kaart vind je speeltuinen en kan je zelf meer informatie en foto's toevoegen",
|
||||
"shortDescription": "Een kaart met speeltuinen",
|
||||
|
@ -1185,47 +1149,6 @@
|
|||
"description": "Alles om te skiën",
|
||||
"title": "Skipistes en kabelbanen"
|
||||
},
|
||||
"speelplekken": {
|
||||
"description": "<h3>Welkom bij de Groendoener!</h3>De Zuidrand dat is spelen, ravotten, chillen, wandelen,… in het groen. Meer dan <b>200 grote en kleine speelplekken</b> liggen er in parken, in bossen en op pleintjes te wachten om ontdekt te worden. De verschillende speelplekken werden getest én goedgekeurd door kinder- en jongerenreporters uit de Zuidrand. Met leuke challenges dagen de reporters jou uit om ook op ontdekking te gaan. Klik op een speelplek op de kaart, bekijk het filmpje en ga op verkenning!<br/><br/>Het project groendoener kadert binnen het strategisch project <a href='https://www.provincieantwerpen.be/aanbod/dlm/samenwerkingsverbanden/zuidrand/projecten/strategisch-project-beleefbare-open-ruimte.html' target='_blank'>Beleefbare Open Ruimte in de Antwerpse Zuidrand</a> en is een samenwerking tussen het departement Leefmilieu van provincie Antwerpen, Sportpret vzw, een OpenStreetMap-België Consultent en Createlli vzw. Het project kwam tot stand met steun van Departement Omgeving van de Vlaamse Overheid.<br/><img class='h-32 w-fit' src='./assets/themes/speelplekken/provincie_antwerpen.jpg'/><img class='h-32 w-fit' src='./assets/themes/speelplekken/Departement_Omgeving_Vlaanderen.png'/>",
|
||||
"layers": {
|
||||
"6": {
|
||||
"name": "Wandelroutes van provincie Antwerpen",
|
||||
"tagRenderings": {
|
||||
"walk-description": {
|
||||
"render": "<h3>Korte beschrijving:</h3>{description}"
|
||||
},
|
||||
"walk-length": {
|
||||
"render": "Deze wandeling is <b>{_length:km}km</b> lang"
|
||||
},
|
||||
"walk-operator": {
|
||||
"question": "Wie beheert deze wandeling en plaatst dus de signalisatiebordjes?"
|
||||
},
|
||||
"walk-operator-email": {
|
||||
"question": "Naar wie kan men emailen bij problemen rond signalisatie?",
|
||||
"render": "Bij problemen met signalisatie kan men emailen naar <a href='mailto:{operator:email}'>{operator:email}</a>"
|
||||
},
|
||||
"walk-type": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
"then": "Dit is een internationale wandelroute"
|
||||
},
|
||||
"1": {
|
||||
"then": "Dit is een nationale wandelroute"
|
||||
},
|
||||
"2": {
|
||||
"then": "Dit is een regionale wandelroute"
|
||||
},
|
||||
"3": {
|
||||
"then": "Dit is een lokale wandelroute"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"shortDescription": "Speelplekken in de Antwerpse Zuidrand",
|
||||
"title": "Welkom bij de groendoener!"
|
||||
},
|
||||
"sport_pitches": {
|
||||
"description": "Een sportveld is een ingerichte plaats met infrastructuur om een sport te beoefenen",
|
||||
"shortDescription": "Deze kaart toont sportvelden",
|
||||
|
@ -1344,10 +1267,6 @@
|
|||
},
|
||||
"title": "Straatverlichting"
|
||||
},
|
||||
"street_lighting_assen": {
|
||||
"description": "Op deze kaart vind je alles over straatlantaarns + een dataset van Assen",
|
||||
"title": "Straatverlichting - Assen"
|
||||
},
|
||||
"surveillance": {
|
||||
"description": "Op deze open kaart kan je bewakingscamera's vinden.",
|
||||
"shortDescription": "Bewakingscameras en dergelijke",
|
||||
|
@ -1461,10 +1380,6 @@
|
|||
"description": "Kaart met afvalbakken en recyclingfaciliteiten.",
|
||||
"title": "Afval"
|
||||
},
|
||||
"waste_assen": {
|
||||
"description": "Kaart met afvalbakken en recyclingfaciliteiten + een dataset voor Assen.",
|
||||
"title": "Afval - Assen"
|
||||
},
|
||||
"waste_basket": {
|
||||
"description": "Op deze kaart vind je afvalbakken bij jou in de buurt. Als er een afvalbak ontbreekt op deze kaart, kun je deze zelf toevoegen",
|
||||
"shortDescription": "Een kaart met vuilnisbakken",
|
||||
|
|
|
@ -39,6 +39,8 @@ import { ExtractImages } from "../src/Models/ThemeConfig/Conversion/FixImages"
|
|||
import { TagRenderingConfigJson } from "../src/Models/ThemeConfig/Json/TagRenderingConfigJson"
|
||||
import { LayerConfigDependencyGraph, LevelInfo } from "../src/Models/ThemeConfig/LayerConfigDependencyGraph"
|
||||
import { Lists } from "../src/Utils/Lists"
|
||||
import { LayerConfigDependencyGraph, LevelInfo } from "../src/Models/ThemeConfig/LayerConfigDependencyGraph"
|
||||
import { AddContextToTranslations } from "../src/Models/ThemeConfig/Conversion/AddContextToTranslations"
|
||||
|
||||
// This scripts scans 'src/assets/layers/*.json' for layer definition files and 'src/assets/themes/*.json' for theme definition files.
|
||||
// It spits out an overview of those to be used to load them
|
||||
|
@ -220,9 +222,16 @@ class LayerBuilder extends Conversion<object, Map<string, LayerConfigJson>> {
|
|||
context.err("Invalid ID: expected", id, "but got", id)
|
||||
}
|
||||
const prepped = this.prepareLayer.convert(config, context)
|
||||
const withContext = new AddContextToTranslations<LayerConfigJson>("layers:").convertStrict(
|
||||
prepped,
|
||||
ConversionContext.construct(
|
||||
[prepped.id],
|
||||
["AddContextToTranslations"]
|
||||
)
|
||||
)
|
||||
this._loadedIds.add(id)
|
||||
this._desugaringState.sharedLayers.set(id, prepped)
|
||||
return prepped
|
||||
this._desugaringState.sharedLayers.set(id, withContext)
|
||||
return withContext
|
||||
}
|
||||
|
||||
private buildLooping(ids: string[], context: ConversionContext) {
|
||||
|
@ -686,8 +695,8 @@ class LayerOverviewUtils extends Script {
|
|||
)
|
||||
|
||||
const path = "assets/layers/questions/questions.json"
|
||||
const sharedQuestions = this.parseLayer(doesImageExist, prepareLayer, path).raw
|
||||
|
||||
const sharedQuestionsRaw = this.parseLayer(doesImageExist, prepareLayer, path).raw
|
||||
const sharedQuestions = new AddContextToTranslations("").convertStrict(sharedQuestionsRaw, ConversionContext.construct(["layers:questions"], []))
|
||||
const dict = new Map<string, QuestionableTagRenderingConfigJson>()
|
||||
|
||||
for (const tr of sharedQuestions.tagRenderings) {
|
||||
|
|
|
@ -128,24 +128,28 @@ export class AddContextToTranslations<T> extends DesugaringStep<T> {
|
|||
if (leaf === undefined || leaf === null) {
|
||||
return leaf
|
||||
}
|
||||
if (typeof leaf === "object") {
|
||||
// follow the path. If we encounter a number, check that there is no ID we can use instead
|
||||
let breadcrumb = json
|
||||
for (let i = 0; i < path.length; i++) {
|
||||
const pointer = path[i]
|
||||
breadcrumb = breadcrumb[pointer]
|
||||
if (pointer.match("[0-9]+") && breadcrumb["id"] !== undefined) {
|
||||
path[i] = breadcrumb["id"]
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
...leaf,
|
||||
_context: this._prefix + context.path.concat(path).join("."),
|
||||
}
|
||||
} else {
|
||||
if (typeof leaf !== "object") {
|
||||
return leaf
|
||||
}
|
||||
if(leaf["_context"] !== undefined){
|
||||
// Context is already set
|
||||
return leaf
|
||||
}
|
||||
// follow the path. If we encounter a number, check that there is no ID we can use instead
|
||||
let breadcrumb = json
|
||||
for (let i = 0; i < path.length; i++) {
|
||||
const pointer = path[i]
|
||||
breadcrumb = breadcrumb[pointer]
|
||||
if (pointer.match("[0-9]+") && breadcrumb["id"] !== undefined) {
|
||||
path[i] = breadcrumb["id"]
|
||||
}
|
||||
}
|
||||
const pth = this._prefix + Utils.NoEmpty(context.path.concat(path).map(x => "" + x)).join(".")
|
||||
console.log("Setting _context to: ",pth)
|
||||
return {
|
||||
...leaf,
|
||||
_context: pth,
|
||||
}
|
||||
},
|
||||
(obj) => obj === undefined || obj === null || Translations.isProbablyATranslation(obj)
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue