From 165084d4d501a7d6d414418e9825c2858f9cf8bd Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Sun, 20 Sep 2020 23:01:08 +0200 Subject: [PATCH] Finish of the cleanup of themes as json --- Customizations/AllKnownLayouts.ts | 13 +- Customizations/JSON/FromJSON.ts | 4 +- Customizations/Layers/InformationBoard.ts | 121 -------- Customizations/Layers/NatureReserves.ts | 95 ------ Customizations/Layouts/Natuurpunt.ts | 21 -- .../{Layouts => StreetWidth}/StreetWidth.ts | 2 +- .../{Layers => StreetWidth}/Widths.ts | 0 .../board.svg | 0 .../information_board/information_board.json | 46 +++ .../layers/nature_reserve/nature_reserve.json | 290 +++++++++++++++++- .../layers/tourism_information/guidepost.svg | 83 ----- assets/layers/tourism_information/info.png | Bin 24119 -> 0 bytes assets/themes/buurtnatuur/buurtnatuur.json | 1 + assets/themes/maps/maps.json | 8 +- assets/themes/nature/nature.json | 1 + 15 files changed, 352 insertions(+), 333 deletions(-) delete mode 100644 Customizations/Layers/InformationBoard.ts delete mode 100644 Customizations/Layers/NatureReserves.ts delete mode 100644 Customizations/Layouts/Natuurpunt.ts rename Customizations/{Layouts => StreetWidth}/StreetWidth.ts (99%) rename Customizations/{Layers => StreetWidth}/Widths.ts (100%) rename assets/layers/{tourism_information => information_board}/board.svg (100%) create mode 100644 assets/layers/information_board/information_board.json delete mode 100644 assets/layers/tourism_information/guidepost.svg delete mode 100644 assets/layers/tourism_information/info.png diff --git a/Customizations/AllKnownLayouts.ts b/Customizations/AllKnownLayouts.ts index 80fc4db..785fa1f 100644 --- a/Customizations/AllKnownLayouts.ts +++ b/Customizations/AllKnownLayouts.ts @@ -1,6 +1,5 @@ import {LayerDefinition} from "./LayerDefinition"; import {Layout} from "./Layout"; -import {StreetWidth} from "./Layouts/StreetWidth"; import {FromJSON} from "./JSON/FromJSON"; import * as bookcases from "../assets/themes/bookcases/Bookcases.json"; import * as aed from "../assets/themes/aed/aed.json"; @@ -13,6 +12,7 @@ import * as buurtnatuur from "../assets/themes/buurtnatuur/buurtnatuur.json" import * as nature from "../assets/themes/nature/nature.json" import * as maps from "../assets/themes/maps/maps.json" import {PersonalLayout} from "../Logic/PersonalLayout"; +import {StreetWidth} from "./StreetWidth/StreetWidth"; export class AllKnownLayouts { @@ -39,24 +39,25 @@ export class AllKnownLayouts { const layout = FromJSON.LayoutFromJSON(buurtnatuur); layout.enableMoreQuests = false; layout.enableShareScreen = false; + layout.hideFromOverview = true; return layout; } public static layoutsList: Layout[] = [ new PersonalLayout(), - // new Natuurpunt(), - AllKnownLayouts.GenerateCycloFix(), + FromJSON.LayoutFromJSON(bookcases), FromJSON.LayoutFromJSON(aed), FromJSON.LayoutFromJSON(toilets), FromJSON.LayoutFromJSON(artworks), - FromJSON.LayoutFromJSON(cyclestreets), + AllKnownLayouts.GenerateCycloFix(), FromJSON.LayoutFromJSON(ghostbikes), - AllKnownLayouts.GenerateBuurtNatuur(), FromJSON.LayoutFromJSON(nature), + FromJSON.LayoutFromJSON(cyclestreets), FromJSON.LayoutFromJSON(maps), + AllKnownLayouts.GenerateBuurtNatuur(), - new StreetWidth(), + new StreetWidth(), // The ugly duckling ]; diff --git a/Customizations/JSON/FromJSON.ts b/Customizations/JSON/FromJSON.ts index 03a427a..2c37b39 100644 --- a/Customizations/JSON/FromJSON.ts +++ b/Customizations/JSON/FromJSON.ts @@ -20,6 +20,7 @@ import * as bike_cafes from "../../assets/layers/bike_cafe/bike_cafes.json" import * as cycling_themed_objects from "../../assets/layers/cycling_themed_object/cycling_themed_objects.json" import * as bike_shops from "../../assets/layers/bike_shop/bike_shop.json" import * as maps from "../../assets/layers/maps/maps.json" +import * as information_boards from "../../assets/layers/information_board/information_board.json" import {Utils} from "../../Utils"; import ImageCarouselWithUploadConstructor from "../../UI/Image/ImageCarouselWithUpload"; import {ImageCarouselConstructor} from "../../UI/Image/ImageCarousel"; @@ -47,7 +48,8 @@ export class FromJSON { FromJSON.Layer(bike_cafes), FromJSON.Layer(cycling_themed_objects), FromJSON.Layer(bike_shops), - FromJSON.Layer(maps) + FromJSON.Layer(maps), + FromJSON.Layer(information_boards) ]; for (const layer of sharedLayersList) { diff --git a/Customizations/Layers/InformationBoard.ts b/Customizations/Layers/InformationBoard.ts deleted file mode 100644 index eebdf4c..0000000 --- a/Customizations/Layers/InformationBoard.ts +++ /dev/null @@ -1,121 +0,0 @@ -import {LayerDefinition} from "../LayerDefinition"; -import {And, Tag} from "../../Logic/Tags"; -import {TagRenderingOptions} from "../TagRenderingOptions"; -import ImageCarouselWithUploadConstructor from "../../UI/Image/ImageCarouselWithUpload"; - -export class InformationBoard extends LayerDefinition { - constructor() { - super("informationBoard",{ - name: "Informatiebord", - description: "Een informatiebord of kaart", - minzoom: 12, - overpassFilter: new Tag("tourism", "information"), - presets: [{ - title: "Informatiebord", - tags: [new Tag("tourism", "information")] - }, - { - title: "Kaart", - tags: [new Tag("tourism", "information"), new Tag("information", "map")] - }], - maxAllowedOverlapPercentage: 0, - icon: "assets/nature/info.png", - }); - - const isMap = new Tag("information", "map"); - const isOsmSource = new Tag("map_source", "OpenStreetMap"); - - this.title = new TagRenderingOptions({ - mappings: [ - {k: isMap, txt: "Kaart"}, - {k:null, txt: "Informatiebord"} - ] - }); - - this.style = (properties) => { - let icon = "assets/nature/info.png"; - if (isMap.matchesProperties(properties)) { - icon = "assets/map.svg"; - if (isOsmSource.matchesProperties(properties)) { - icon = "assets/osm-logo-white-bg.svg"; - - const attr = properties["map_source:attribution"]; - if (attr == "sticker") { - icon = "assets/map-stickered.svg" - } else if (attr == "no") { - icon = "assets/osm-logo-buggy-attr.svg" - } - } - } - - return { - color: "#000000", - icon: { - iconUrl: icon, - iconSize: [50, 50] - } - }; - } - - - this.elementsToShow = [ - - new ImageCarouselWithUploadConstructor(), - - new TagRenderingOptions({ - question: "Heeft dit informatiebord een kaart?", - mappings: [ - {k: new Tag("information","board"), txt: "Dit is een informatiebord"}, - {k: isMap, txt: "Dit is een kaart"} - ] - }), - - new TagRenderingOptions({ - question: "Is this map based on OpenStreetMap?", - mappings: [ - { - k: isOsmSource, - txt: "This map is based on OpenStreetMap" - }, - { - k: new And([new Tag("map_source:attribution", ""), new Tag("map_source","")]), - txt: "Unknown" - }, - ], - freeform: { - key: "map_source", - extraTags: new Tag("map_source:attribution", ""), - renderTemplate: "The map data is based on {map_source}", - template: "The map data is based on $$$" - } - }).OnlyShowIf(isMap), - new TagRenderingOptions({ - question: "Is the attribution present?", - mappings: [ - { - k: new Tag("map_source:attribution", "yes"), - txt: "OpenStreetMap is clearly attributed, including the ODBL-license" - }, - { - k: new Tag("map_source:attribution", "incomplete"), - txt: "OpenStreetMap is clearly attributed, but the license is not mentioned" - }, - { - k: new Tag("map_source:attribution", "sticker"), - txt: "OpenStreetMap wasn't mentioned, but someone put an OpenStreetMap-sticker on it" - }, - { - k: new Tag("map_source:attribution", "no"), - txt: "There is no attribution at all" - }, - { - k: new Tag("map_source:attribution", "none"), - txt: "There is no attribution at all" - } - ] - }).OnlyShowIf(new Tag("map_source", "OpenStreetMap")) - ] - - - } -} \ No newline at end of file diff --git a/Customizations/Layers/NatureReserves.ts b/Customizations/Layers/NatureReserves.ts deleted file mode 100644 index c502bde..0000000 --- a/Customizations/Layers/NatureReserves.ts +++ /dev/null @@ -1,95 +0,0 @@ -import {LayerDefinition} from "../LayerDefinition"; -import {Or, Tag} from "../../Logic/Tags"; -import {NameInline} from "../Questions/NameInline"; -import {TagRenderingOptions} from "../TagRenderingOptions"; - -export class NatureReserves extends LayerDefinition { - - constructor(moreQuests: boolean = false) { - super("natureReserve"); - this.name = "Natuurgebied"; - this.icon = ""; - this.overpassFilter = - new Or([new Tag("leisure", "nature_reserve"), new Tag("boundary", "protected_area")]); - this.maxAllowedOverlapPercentage = 10; - - this.presets = [{ - title: "Natuurreservaat", - description: "Voeg een ontbrekend, erkend natuurreservaat toe, bv. een gebied dat beheerd wordt door het ANB of natuurpunt", - tags: [new Tag("leisure", "nature_reserve"), - new Tag("fixme", "Toegevoegd met MapComplete, geometry nog uit te tekenen")] - } - ]; - this.minzoom = 13; - this.title = new NameInline("Natuurreservaat"); - this.style = function () { - return { - color: "#00bb00", - icon: undefined - }; - }; - this.elementsToShow = [ - ]; - - - const extraRenderings = [ - new TagRenderingOptions({ - question: "Mogen honden in dit natuurgebied?", - mappings: [ - {k: new Tag("dog", "leashed"), txt: "Honden moeten aan de leiband"}, - {k: new Tag("dog", "no"), txt: "Honden zijn niet toegestaan"}, - {k: new Tag("dog", "yes"), txt: "Honden zijn welkom"}, - ] - }).OnlyShowIf(new Tag("access", "yes")), - new TagRenderingOptions({ - question: "Op welke website kunnen we meer informatie vinden over dit natuurgebied?", - freeform: { - key:"website", - renderTemplate: "Meer informatie", - template: "$$$" - } - }), - new TagRenderingOptions({ - question: "Wie is de conservator van dit gebied?
" + - "Geef de naam van de conservator énkel als die duidelijk online staat gepubliceerd.", - freeform: { - renderTemplate: "De conservator van dit gebied is {curator}", - template: "$$$", - key: "curator" - } - }), - new TagRenderingOptions( - { - question: "Wat is het email-adres van de beheerder?
" + - "Geef bij voorkeur het emailadres van de Natuurpunt-afdeling; geef enkel een email-adres van de conservator als dit duidelijk is gepubliceerd", - freeform: { - renderTemplate: "Bij problemen of vragen, de conservator kan bereikt worden via " + - "{email}", - template: "$email$", - key: "email" - } - }), - new TagRenderingOptions( - { - question: "Wat is het telefoonnummer van de beheerder?
" + - "Geef bij voorkeur het telefoonnummer van de Natuurpunt-afdeling; geef enkel een email-adres van de conservator als dit duidelijk is gepubliceerd", - freeform: { - renderTemplate: "Bij problemen of vragen, de {conservator} kan bereikt worden via " + - "{phone}", - template: "$phone$", - key: "phone" - } - - }), - - - ]; - - if (moreQuests) { - this.elementsToShow = - this.elementsToShow.concat(extraRenderings); - } - - - } -} \ No newline at end of file diff --git a/Customizations/Layouts/Natuurpunt.ts b/Customizations/Layouts/Natuurpunt.ts deleted file mode 100644 index 1ff287e..0000000 --- a/Customizations/Layouts/Natuurpunt.ts +++ /dev/null @@ -1,21 +0,0 @@ -import {Layout} from "../Layout"; -import {InformationBoard} from "../Layers/InformationBoard"; -import {NatureReserves} from "../Layers/NatureReserves"; - -export class Natuurpunt extends Layout{ - constructor() { - super( - "natuurpunt", - ["nl"], - "De natuur in", - ["birdhides", new InformationBoard(), new NatureReserves(true), "drinking_water"], - 12, - 51.20875, - 3.22435, - "

Natuurstuff

Geef meer gegevens over natuurgebieden en hun infoborden", - "", - "" - ); - this.icon = "./assets/layers/bird_hide/birdhide.svg" - } -} \ No newline at end of file diff --git a/Customizations/Layouts/StreetWidth.ts b/Customizations/StreetWidth/StreetWidth.ts similarity index 99% rename from Customizations/Layouts/StreetWidth.ts rename to Customizations/StreetWidth/StreetWidth.ts index 8f3aeb7..eeacf9f 100644 --- a/Customizations/Layouts/StreetWidth.ts +++ b/Customizations/StreetWidth/StreetWidth.ts @@ -1,5 +1,5 @@ import {Layout} from "../Layout"; -import {Widths} from "../Layers/Widths"; +import {Widths} from "./Widths"; export class StreetWidth extends Layout{ diff --git a/Customizations/Layers/Widths.ts b/Customizations/StreetWidth/Widths.ts similarity index 100% rename from Customizations/Layers/Widths.ts rename to Customizations/StreetWidth/Widths.ts diff --git a/assets/layers/tourism_information/board.svg b/assets/layers/information_board/board.svg similarity index 100% rename from assets/layers/tourism_information/board.svg rename to assets/layers/information_board/board.svg diff --git a/assets/layers/information_board/information_board.json b/assets/layers/information_board/information_board.json new file mode 100644 index 0000000..c1299d3 --- /dev/null +++ b/assets/layers/information_board/information_board.json @@ -0,0 +1,46 @@ +{ + "id": "information_boards", + "name": { + "nl": "Informatieborden", + "en": "Information boards" + }, + "minzoom": 12, + "overpassTags": { + "and": [ + "information=board" + ] + }, + "title": { + "render": { + "nl": "Informatiebord", + "en": "Information board" + } + }, + "description": {}, + "tagRenderings": [], + "hideUnderlayingFeaturesMinPercentage": 0, + "icon": { + "render": "./assets/layers/information_board/board.svg" + }, + "width": { + "render": "8" + }, + "iconSize": { + "render": "40,40,center" + }, + "color": { + "render": "#00f" + }, + "presets": [ + { + "tags": [ + "tourism=information", + "information=board" + ], + "title": { + "nl": "Informatiebord", + "en": "Information board" + } + } + ] +} \ No newline at end of file diff --git a/assets/layers/nature_reserve/nature_reserve.json b/assets/layers/nature_reserve/nature_reserve.json index 62f72c7..444d646 100644 --- a/assets/layers/nature_reserve/nature_reserve.json +++ b/assets/layers/nature_reserve/nature_reserve.json @@ -40,7 +40,295 @@ "description": { "nl": "Een natuurgebied is een gebied waar actief ruimte gemaakt word voor de natuur. Typisch zijn deze in beheer van Natuurpunt of het Agentschap Natuur en Bos of zijn deze erkend door de overheid." }, - "tagRenderings": [], + "tagRenderings": [ + { + "#": "Access tag", + "render": { + "nl": "De toegankelijkheid van dit gebied is: {access:description}" + }, + "question": { + "nl": "Is dit gebied toegankelijk?" + }, + "freeform": { + "key": "access:description" + }, + "mappings": [ + { + "if": { + "and": [ + "access=yes", + "fee=" + ] + }, + "then": { + "nl": "Vrij toegankelijk" + } + }, + { + "if": { + "and": [ + "access=no", + "fee=" + ] + }, + "then": { + "nl": "Niet toegankelijk" + } + }, + { + "if": { + "and": [ + "access=private", + "fee=" + ] + }, + "then": { + "nl": "Niet toegankelijk, want privégebied" + } + }, + { + "if": { + "and": [ + "access=permissive", + "fee=" + ] + }, + "then": { + "nl": "Toegankelijk, ondanks dat het privegebied is" + } + }, + { + "if": { + "and": [ + "access=guided", + "fee=" + ] + }, + "then": { + "nl": "Enkel toegankelijk met een gids of tijdens een activiteit" + } + }, + { + "if": { + "and": [ + "access=yes", + "fee=yes" + ] + }, + "then": { + "nl": "Toegankelijk mits betaling" + } + } + ] + }, + { + "#": "Operator tag", + "render": { + "nl": "Beheer door {operator}" + }, + "question": { + "nl": "Wie beheert dit gebied?" + }, + "freeform": { + "key": "operator" + }, + "mappings": [ + { + "if": { + "and": [ + "operator=Natuurpunt" + ] + }, + "then": { + "nl": "Dit gebied wordt beheerd door Natuurpunt" + } + }, + { + "if": { + "and": [ + "operator~(n|N)atuurpunt.*" + ] + }, + "then": { + "nl": "Dit gebied wordt beheerd door {operator}" + }, + "hideInAnswer": true + }, + { + "if": { + "and": [ + "operator=Agentschap Natuur en Bos" + ] + }, + "then": { + "nl": "Dit gebied wordt beheerd door het Agentschap Natuur en Bos" + } + } + ] + }, + { + "#": "Name:nl-tag", + "render": { + "nl": "Dit gebied heet {name:nl}" + }, + "question": { + "nl": "Wat is de Nederlandstalige naam van dit gebied?" + }, + "freeform": { + "key": "name:nl" + }, + "condition": { + "and": [ + "name:nl~*" + ] + } + }, + { + "#": "Name tag", + "render": { + "nl": "Dit gebied heet {name}" + }, + "question": { + "nl": "Wat is de naam van dit gebied?" + }, + "freeform": { + "key": "name", + "addExtraTags": [ + "noname=" + ] + }, + "condition": { + "and": [ + "name:nl=" + ] + }, + "mappings": [ + { + "if": { + "and": [ + "noname=yes", + "name=" + ] + }, + "then": { + "nl": "Dit gebied heeft geen naam" + } + } + ] + }, + { + "#": "Dogs?", + "question": { + "nl": "Zijn honden toegelaten in dit gebied?", + "en": "Are dogs allowed in this nature reserve?" + }, + "condition": { + "or": [ + "access=yes", + "access=permissive", + "access=guided" + ] + }, + "mappings": [ + { + "if": "dog=leashed", + "then": { + "nl": "Honden moeten aan de leiband", + "en": "Dogs have to be leashed" + } + }, + { + "if": "dog=no", + "then": { + "nl": "Honden zijn niet toegestaan", + "en": "No dogs allowed" + } + }, + { + "if": "dog=yes", + "then": { + "nl": "Honden zijn welkom en mogen vrij rondlopen", + "en": "Dogs are allowed to roam freely" + } + } + ] + }, + { + "#": "Website", + "question": { + "en": "On which webpage can one find more information about this nature reserve?", + "nl": "Op welke webpagina kan men meer informatie vinden over dit natuurgebied?" + }, + "render": "{website}", + "freeform": { + "key": "website", + "type": "url" + } + }, + { + "#": "Curator", + "question": { + "nl": "Wie is de conservator van dit gebied?
Respecteer privacy - geef deze naam enkel als die duidelijk is gepubliceerd", + "en": "Whom is the curator of this nature reserve?
Respect privacy - only fill out a name if this is widely published" + }, + "render": { + "nl": "{curator} is de beheerder van dit gebied", + "en": "{curator} is the curator of this nature reserve" + }, + "freeform": { + "key": "curator" + } + }, + { + "#": "Email", + "question": { + "nl": "Waar kan men naartoe emailen voor vragen en meldingen van dit natuurgebied?
Respecteer privacy - geef enkel persoonlijke emailadressen als deze elders zijn gepubliceerd", + "en": "What email adress can one send to with questions and problems with this nature reserve?
Respect privacy - only fill out a personal email address if this is widely published" + }, + "render": { + "nl": "{email}", + "en": "{email}" + }, + "freeform": { + "key": "email", + "type": "email" + } + }, + { + "#": "phone", + "question": { + "nl": "Waar kan men naartoe bellen voor vragen en meldingen van dit natuurgebied?
Respecteer privacy - geef enkel persoonlijke telefoonnummers als deze elders zijn gepubliceerd", + "en": "What phone number can one call to with questions and problems with this nature reserve?
Respect privacy - only fill out a personal phone number address if this is widely published" + }, + "render": { + "nl": "{phone}", + "en": "{phone}" + }, + "freeform": { + "key": "phone", + "type": "phone" + } + }, + { + "#": "Non-editable description {description}", + "render": { + "nl": "Extra info: {description}" + }, + "freeform": { + "key": "description" + } + }, + { + "#": "Editable description {description:0}", + "question": "Is er extra info die je kwijt wil?", + "render": { + "nl": "Extra info: {description:0}" + }, + "freeform": { + "key": "description:0" + } + } + ], "hideUnderlayingFeaturesMinPercentage": 10, "icon": { "render": "./assets/themes/buurtnatuur/nature_reserve.svg" diff --git a/assets/layers/tourism_information/guidepost.svg b/assets/layers/tourism_information/guidepost.svg deleted file mode 100644 index a1c0b6b..0000000 --- a/assets/layers/tourism_information/guidepost.svg +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - diff --git a/assets/layers/tourism_information/info.png b/assets/layers/tourism_information/info.png deleted file mode 100644 index 35a2cc17ff7b362752574bc83dbb940f4ee174ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24119 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
If a map is missing, you can easily map this map on OpenStreetMap.", diff --git a/assets/themes/nature/nature.json b/assets/themes/nature/nature.json index 31169b1..e9b5177 100644 --- a/assets/themes/nature/nature.json +++ b/assets/themes/nature/nature.json @@ -24,6 +24,7 @@ "drinking_water", "birdhides", "maps", + "information_boards", "nature_reserves" ], "roamingRenderings": []