diff --git a/.github/workflows/deploy_pietervdvn.yml b/.github/workflows/deploy_pietervdvn.yml index f787b077d..36d4ebc26 100644 --- a/.github/workflows/deploy_pietervdvn.yml +++ b/.github/workflows/deploy_pietervdvn.yml @@ -3,7 +3,8 @@ on: push: branches: - develop - - feature/svelte + - feature/* + - theme/* jobs: build: runs-on: ubuntu-latest diff --git a/.gitpod.yml b/.gitpod.yml index d7253fb46..964b5c27f 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -1,6 +1,9 @@ tasks: - init: npm run init command: npm run start + name: Initialize and start MapComplete + - name: Generate Layeroverview + command: npm run generate:layeroverview ports: - name: MapComplete Website @@ -11,4 +14,7 @@ vscode: extensions: - "esbenp.prettier-vscode" - "eamodio.gitlens" - - "GitHub.vscode-pull-request-github" + - "github.vscode-pull-request-github" + - "svelte.svelte-vscode" + - "bradlc.vscode-tailwindcss" + - "editorconfig.editorconfig" diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 8ca85028f..f2dca9d05 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -2,8 +2,9 @@ "recommendations": [ "esbenp.prettier-vscode", "eamodio.gitlens", - "GitHub.vscode-pull-request-github", + "github.vscode-pull-request-github", "svelte.svelte-vscode", - "bradlc.vscode-tailwindcss" + "bradlc.vscode-tailwindcss", + "editorconfig.editorconfig" ] -} \ No newline at end of file +} diff --git a/Docs/Layers/clock.md b/Docs/Layers/clock.md index b32f0dda2..cb92006af 100644 --- a/Docs/Layers/clock.md +++ b/Docs/Layers/clock.md @@ -133,7 +133,7 @@ The question is *How visible is this clock?* - *This clock is visible from about 5 meters away (small wall-mounted clock)* corresponds with `visibility=house` - *This clock is visible from about 20 meters away (medium size billboard clock)* corresponds with `visibility=street` - - *This clock is visible from more than 20 meters away (church clock)* corresponds with `visibility=area` + - *This clock is visible from more than 20 meters away (e.g. a church clock or station clock)* corresponds with `visibility=area` diff --git a/Docs/Layers/hydrant.md b/Docs/Layers/hydrant.md index 4ff5fe382..2429fda6c 100644 --- a/Docs/Layers/hydrant.md +++ b/Docs/Layers/hydrant.md @@ -85,8 +85,6 @@ This is rendered with `The hydrant color is {colour}` - - *The hydrant color is unknown.* corresponds with `` - - This option cannot be chosen as answer - *The hydrant color is yellow.* corresponds with `colour=yellow` - *The hydrant color is red.* corresponds with `colour=red` @@ -107,8 +105,6 @@ This is rendered with ` Hydrant type: {fire_hydrant:type}` - - *The hydrant type is unknown.* corresponds with `` - - This option cannot be chosen as answer - *Pillar type.* corresponds with `fire_hydrant:type=pillar` - *Pipe type.* corresponds with `fire_hydrant:type=pipe` - *Wall type.* corresponds with `fire_hydrant:type=wall` diff --git a/Docs/TagInfo/mapcomplete_clock.json b/Docs/TagInfo/mapcomplete_clock.json index 3db6a3ad2..ea84da5d8 100644 --- a/Docs/TagInfo/mapcomplete_clock.json +++ b/Docs/TagInfo/mapcomplete_clock.json @@ -83,7 +83,7 @@ }, { "key": "visibility", - "description": "Layer 'Clocks' shows visibility=area with a fixed text, namely 'This clock is visible from more than 20 meters away (church clock)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Clocks')", + "description": "Layer 'Clocks' shows visibility=area with a fixed text, namely 'This clock is visible from more than 20 meters away (e.g. a church clock or station clock)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Clocks')", "value": "area" }, { diff --git a/Docs/TagInfo/mapcomplete_hailhydrant.json b/Docs/TagInfo/mapcomplete_hailhydrant.json index 10e51b65f..4785c5fdf 100644 --- a/Docs/TagInfo/mapcomplete_hailhydrant.json +++ b/Docs/TagInfo/mapcomplete_hailhydrant.json @@ -19,11 +19,6 @@ "key": "colour", "description": "Layer 'Map of hydrants' shows and asks freeform values for key 'colour' (in the MapComplete.osm.be theme 'Hydrants, Extinguishers, Fire stations, and Ambulance stations')" }, - { - "key": "colour", - "description": "Layer 'Map of hydrants' shows with a fixed text, namely 'The hydrant color is unknown.' (in the MapComplete.osm.be theme 'Hydrants, Extinguishers, Fire stations, and Ambulance stations') Picking this answer will delete the key colour.", - "value": "" - }, { "key": "colour", "description": "Layer 'Map of hydrants' shows colour=yellow with a fixed text, namely 'The hydrant color is yellow.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Hydrants, Extinguishers, Fire stations, and Ambulance stations')", @@ -38,11 +33,6 @@ "key": "fire_hydrant:type", "description": "Layer 'Map of hydrants' shows and asks freeform values for key 'fire_hydrant:type' (in the MapComplete.osm.be theme 'Hydrants, Extinguishers, Fire stations, and Ambulance stations')" }, - { - "key": "fire_hydrant:type", - "description": "Layer 'Map of hydrants' shows with a fixed text, namely 'The hydrant type is unknown.' (in the MapComplete.osm.be theme 'Hydrants, Extinguishers, Fire stations, and Ambulance stations') Picking this answer will delete the key fire_hydrant:type.", - "value": "" - }, { "key": "fire_hydrant:type", "description": "Layer 'Map of hydrants' shows fire_hydrant:type=pillar with a fixed text, namely 'Pillar type.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Hydrants, Extinguishers, Fire stations, and Ambulance stations')", diff --git a/Docs/TagInfo/mapcomplete_personal.json b/Docs/TagInfo/mapcomplete_personal.json index 7d0bf6691..48b5b5031 100644 --- a/Docs/TagInfo/mapcomplete_personal.json +++ b/Docs/TagInfo/mapcomplete_personal.json @@ -4326,7 +4326,7 @@ }, { "key": "visibility", - "description": "Layer 'Clocks' shows visibility=area with a fixed text, namely 'This clock is visible from more than 20 meters away (church clock)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "description": "Layer 'Clocks' shows visibility=area with a fixed text, namely 'This clock is visible from more than 20 meters away (e.g. a church clock or station clock)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", "value": "area" }, { @@ -7189,11 +7189,6 @@ "key": "colour", "description": "Layer 'Map of hydrants' shows and asks freeform values for key 'colour' (in the MapComplete.osm.be theme 'Personal theme')" }, - { - "key": "colour", - "description": "Layer 'Map of hydrants' shows with a fixed text, namely 'The hydrant color is unknown.' (in the MapComplete.osm.be theme 'Personal theme') Picking this answer will delete the key colour.", - "value": "" - }, { "key": "colour", "description": "Layer 'Map of hydrants' shows colour=yellow with a fixed text, namely 'The hydrant color is yellow.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", @@ -7208,11 +7203,6 @@ "key": "fire_hydrant:type", "description": "Layer 'Map of hydrants' shows and asks freeform values for key 'fire_hydrant:type' (in the MapComplete.osm.be theme 'Personal theme')" }, - { - "key": "fire_hydrant:type", - "description": "Layer 'Map of hydrants' shows with a fixed text, namely 'The hydrant type is unknown.' (in the MapComplete.osm.be theme 'Personal theme') Picking this answer will delete the key fire_hydrant:type.", - "value": "" - }, { "key": "fire_hydrant:type", "description": "Layer 'Map of hydrants' shows fire_hydrant:type=pillar with a fixed text, namely 'Pillar type.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", diff --git a/Docs/Themes/atm.md b/Docs/Themes/atm.md index 4e3f1f9de..2b8701626 100644 --- a/Docs/Themes/atm.md +++ b/Docs/Themes/atm.md @@ -34,6 +34,7 @@ Available languages: - cs - nb_NO - zgh + - id This document is autogenerated from [assets/themes/atm/atm.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/atm/atm.json) diff --git a/Docs/Themes/bag.md b/Docs/Themes/bag.md index 374af00ff..f64655199 100644 --- a/Docs/Themes/bag.md +++ b/Docs/Themes/bag.md @@ -34,6 +34,7 @@ Available languages: - nb_NO - ca - es + - cs This document is autogenerated from [assets/themes/bag/bag.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/bag/bag.json) diff --git a/Docs/Themes/clock.md b/Docs/Themes/clock.md index 227c9bad4..b267d1552 100644 --- a/Docs/Themes/clock.md +++ b/Docs/Themes/clock.md @@ -29,6 +29,7 @@ Available languages: - de - es - ca + - cs This document is autogenerated from [assets/themes/clock/clock.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/clock/clock.json) diff --git a/Docs/Themes/cyclenodes.md b/Docs/Themes/cyclenodes.md index 9a32def24..91ecf714e 100644 --- a/Docs/Themes/cyclenodes.md +++ b/Docs/Themes/cyclenodes.md @@ -31,6 +31,7 @@ Available languages: - nl - fr - ca + - cs This document is autogenerated from [assets/themes/cyclenodes/cyclenodes.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/cyclenodes/cyclenodes.json) diff --git a/Docs/Themes/kerbs_and_crossings.md b/Docs/Themes/kerbs_and_crossings.md index 2fb2d34de..4dbcf7ca3 100644 --- a/Docs/Themes/kerbs_and_crossings.md +++ b/Docs/Themes/kerbs_and_crossings.md @@ -34,6 +34,7 @@ Available languages: - nb_NO - ru - es + - ca This document is autogenerated from [assets/themes/kerbs_and_crossings/kerbs_and_crossings.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/kerbs_and_crossings/kerbs_and_crossings.json) diff --git a/Docs/Themes/maproulette.md b/Docs/Themes/maproulette.md index f814dbacb..5d43c32c3 100644 --- a/Docs/Themes/maproulette.md +++ b/Docs/Themes/maproulette.md @@ -31,6 +31,7 @@ Available languages: - pa_PK - nl - es + - cs This document is autogenerated from [assets/themes/maproulette/maproulette.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/maproulette/maproulette.json) diff --git a/Docs/Themes/onwheels.md b/Docs/Themes/onwheels.md index 2e71fd289..58ff97bdc 100644 --- a/Docs/Themes/onwheels.md +++ b/Docs/Themes/onwheels.md @@ -51,6 +51,7 @@ Available languages: - ca - pa_PK - es + - cs This document is autogenerated from [assets/themes/onwheels/onwheels.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/onwheels/onwheels.json) diff --git a/Docs/Themes/openwindpowermap.md b/Docs/Themes/openwindpowermap.md index 5456c11f9..dc9370507 100644 --- a/Docs/Themes/openwindpowermap.md +++ b/Docs/Themes/openwindpowermap.md @@ -36,6 +36,7 @@ Available languages: - nb_NO - pa_PK - es + - cs This document is autogenerated from [assets/themes/openwindpowermap/openwindpowermap.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/openwindpowermap/openwindpowermap.json) diff --git a/Docs/Themes/osm_community_index.md b/Docs/Themes/osm_community_index.md index 42c89cb9b..fbccf84f5 100644 --- a/Docs/Themes/osm_community_index.md +++ b/Docs/Themes/osm_community_index.md @@ -29,6 +29,7 @@ Available languages: - fr - es - ca + - cs This document is autogenerated from [assets/themes/osm_community_index/osm_community_index.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/osm_community_index/osm_community_index.json) diff --git a/Docs/Themes/parkings.md b/Docs/Themes/parkings.md index b945ba1ed..3e3600700 100644 --- a/Docs/Themes/parkings.md +++ b/Docs/Themes/parkings.md @@ -39,6 +39,7 @@ Available languages: - da - pa_PK - ca + - cs This document is autogenerated from [assets/themes/parkings/parkings.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/parkings/parkings.json) diff --git a/Docs/Themes/personal.md b/Docs/Themes/personal.md index 9407925ea..611d61820 100644 --- a/Docs/Themes/personal.md +++ b/Docs/Themes/personal.md @@ -129,6 +129,7 @@ Available languages: - id - da - pa_PK + - cs This document is autogenerated from [assets/themes/personal/personal.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/personal/personal.json) diff --git a/Docs/Themes/pets.md b/Docs/Themes/pets.md index e14e46ad1..c626724be 100644 --- a/Docs/Themes/pets.md +++ b/Docs/Themes/pets.md @@ -36,6 +36,7 @@ Available languages: - fr - ca - es + - cs This document is autogenerated from [assets/themes/pets/pets.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/pets/pets.json) diff --git a/Docs/Themes/playgrounds.md b/Docs/Themes/playgrounds.md index d39756488..54da48de6 100644 --- a/Docs/Themes/playgrounds.md +++ b/Docs/Themes/playgrounds.md @@ -37,6 +37,7 @@ Available languages: - ca - es - da + - cs This document is autogenerated from [assets/themes/playgrounds/playgrounds.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/playgrounds/playgrounds.json) diff --git a/Docs/Themes/postal_codes.md b/Docs/Themes/postal_codes.md index 98d8e96f6..95db8d2e4 100644 --- a/Docs/Themes/postal_codes.md +++ b/Docs/Themes/postal_codes.md @@ -36,6 +36,7 @@ Available languages: - fr - da - pa_PK + - cs This document is autogenerated from [assets/themes/postal_codes/postal_codes.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/postal_codes/postal_codes.json) diff --git a/Docs/Themes/postboxes.md b/Docs/Themes/postboxes.md index 0eaf345da..ab61d0ba8 100644 --- a/Docs/Themes/postboxes.md +++ b/Docs/Themes/postboxes.md @@ -36,6 +36,7 @@ Available languages: - da - ca - es + - cs This document is autogenerated from [assets/themes/postboxes/postboxes.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/postboxes/postboxes.json) diff --git a/Docs/Themes/rainbow_crossings.md b/Docs/Themes/rainbow_crossings.md index 60cf1aab4..33a4a84c0 100644 --- a/Docs/Themes/rainbow_crossings.md +++ b/Docs/Themes/rainbow_crossings.md @@ -33,6 +33,7 @@ Available languages: - ru - ca - es + - cs This document is autogenerated from [assets/themes/rainbow_crossings/rainbow_crossings.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/rainbow_crossings/rainbow_crossings.json) diff --git a/Docs/Themes/shops.md b/Docs/Themes/shops.md index 2bb4cb58a..aa91e6e32 100644 --- a/Docs/Themes/shops.md +++ b/Docs/Themes/shops.md @@ -37,6 +37,7 @@ Available languages: - ca - da - es + - cs This document is autogenerated from [assets/themes/shops/shops.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/shops/shops.json) diff --git a/Docs/Themes/sidewalks.md b/Docs/Themes/sidewalks.md index 8ce8ce06d..bded59a2a 100644 --- a/Docs/Themes/sidewalks.md +++ b/Docs/Themes/sidewalks.md @@ -34,6 +34,7 @@ Available languages: - it - da - pa_PK + - cs This document is autogenerated from [assets/themes/sidewalks/sidewalks.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/sidewalks/sidewalks.json) diff --git a/Docs/Themes/sport_pitches.md b/Docs/Themes/sport_pitches.md index e69944b30..116814d3f 100644 --- a/Docs/Themes/sport_pitches.md +++ b/Docs/Themes/sport_pitches.md @@ -35,6 +35,7 @@ Available languages: - ca - es - da + - cs This document is autogenerated from [assets/themes/sport_pitches/sport_pitches.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/sport_pitches/sport_pitches.json) diff --git a/Docs/Themes/sports.md b/Docs/Themes/sports.md index 8a741aa8e..cbe9933ba 100644 --- a/Docs/Themes/sports.md +++ b/Docs/Themes/sports.md @@ -34,6 +34,7 @@ Available languages: - fr - ca - es + - cs This document is autogenerated from [assets/themes/sports/sports.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/sports/sports.json) diff --git a/Docs/Themes/stations.md b/Docs/Themes/stations.md index 146c2ad2d..977f96a22 100644 --- a/Docs/Themes/stations.md +++ b/Docs/Themes/stations.md @@ -50,6 +50,7 @@ Available languages: - fr - ca - es + - cs This document is autogenerated from [assets/themes/stations/stations.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/stations/stations.json) diff --git a/Docs/Themes/street_lighting.md b/Docs/Themes/street_lighting.md index fbafef1b6..3b57edfd7 100644 --- a/Docs/Themes/street_lighting.md +++ b/Docs/Themes/street_lighting.md @@ -37,6 +37,7 @@ Available languages: - da - pa_PK - es + - cs This document is autogenerated from [assets/themes/street_lighting/street_lighting.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/street_lighting/street_lighting.json) diff --git a/Docs/Themes/surveillance.md b/Docs/Themes/surveillance.md index 93f4b7b41..1ef6a8b03 100644 --- a/Docs/Themes/surveillance.md +++ b/Docs/Themes/surveillance.md @@ -37,6 +37,7 @@ Available languages: - nb_NO - da - es + - cs This document is autogenerated from [assets/themes/surveillance/surveillance.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/surveillance/surveillance.json) diff --git a/Docs/Themes/toilets.md b/Docs/Themes/toilets.md index 9970d876a..5cd93e089 100644 --- a/Docs/Themes/toilets.md +++ b/Docs/Themes/toilets.md @@ -38,6 +38,7 @@ Available languages: - ca - da - es + - cs This document is autogenerated from [assets/themes/toilets/toilets.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/toilets/toilets.json) diff --git a/Docs/Themes/transit.md b/Docs/Themes/transit.md index d9af2bc3c..f8d0b2606 100644 --- a/Docs/Themes/transit.md +++ b/Docs/Themes/transit.md @@ -36,6 +36,7 @@ Available languages: - pa_PK - nl - es + - cs This document is autogenerated from [assets/themes/transit/transit.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/transit/transit.json) diff --git a/Docs/Themes/trees.md b/Docs/Themes/trees.md index 702c5ec67..803745347 100644 --- a/Docs/Themes/trees.md +++ b/Docs/Themes/trees.md @@ -39,6 +39,7 @@ Available languages: - es - da - pa_PK + - cs This document is autogenerated from [assets/themes/trees/trees.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/trees/trees.json) diff --git a/Docs/Themes/walls_and_buildings.md b/Docs/Themes/walls_and_buildings.md index 60de1627d..5bafc44fd 100644 --- a/Docs/Themes/walls_and_buildings.md +++ b/Docs/Themes/walls_and_buildings.md @@ -34,6 +34,7 @@ Available languages: - nl - ca - es + - cs This document is autogenerated from [assets/themes/walls_and_buildings/walls_and_buildings.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/walls_and_buildings/walls_and_buildings.json) diff --git a/Docs/Themes/waste.md b/Docs/Themes/waste.md index 16a14d187..5551ccedd 100644 --- a/Docs/Themes/waste.md +++ b/Docs/Themes/waste.md @@ -35,6 +35,7 @@ Available languages: - da - es - ru + - cs This document is autogenerated from [assets/themes/waste/waste.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/waste/waste.json) diff --git a/Docs/Themes/waste_basket.md b/Docs/Themes/waste_basket.md index ceb4e0cc3..f60723696 100644 --- a/Docs/Themes/waste_basket.md +++ b/Docs/Themes/waste_basket.md @@ -36,6 +36,7 @@ Available languages: - da - pa_PK - es + - cs This document is autogenerated from [assets/themes/waste_basket/waste_basket.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/waste_basket/waste_basket.json) diff --git a/Docs/wikiIndex.txt b/Docs/wikiIndex.txt index d91c894f0..6637e95c0 100644 --- a/Docs/wikiIndex.txt +++ b/Docs/wikiIndex.txt @@ -4,7 +4,7 @@ {{service_item |name= [https://mapcomplete.osm.be/personal personal] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:gl|en}}, {{#language:fr|en}}, {{#language:de|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:ru|en}}, {{#language:it|en}}, {{#language:da|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:gl|en}}, {{#language:fr|en}}, {{#language:de|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:ru|en}}, {{#language:it|en}}, {{#language:da|en}}, {{#language:cs|en}} |descr= A MapComplete theme: Create a personal theme based on all the available layers of all themes |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -13,7 +13,7 @@ {{service_item |name= [https://mapcomplete.osm.be/cyclofix cyclofix] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:gl|en}}, {{#language:de|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:da|en}}, {{#language:cs|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:gl|en}}, {{#language:de|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:ca|en}} |descr= A MapComplete theme: The goal of this map is to present cyclists with an easy-to-use solution to find the appropriate infrastructure for their needs |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -22,7 +22,7 @@ {{service_item |name= [https://mapcomplete.osm.be/waste waste] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:it|en}}, {{#language:ca|en}}, {{#language:da|en}}, {{#language:es|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:it|en}}, {{#language:ca|en}}, {{#language:da|en}}, {{#language:es|en}}, {{#language:cs|en}} |descr= A MapComplete theme: Map showing waste baskets and recycling facilities |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -58,7 +58,7 @@ {{service_item |name= [https://mapcomplete.osm.be/playgrounds playgrounds] |region= Worldwide -|lang= {{#language:nl|en}}, {{#language:en|en}}, {{#language:fr|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:ru|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:nb_NO|en}}, {{#language:id|en}}, {{#language:hu|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:da|en}} +|lang= {{#language:nl|en}}, {{#language:en|en}}, {{#language:fr|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:ru|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:nb_NO|en}}, {{#language:id|en}}, {{#language:hu|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:da|en}}, {{#language:cs|en}} |descr= A MapComplete theme: A map with playgrounds |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -76,7 +76,7 @@ {{service_item |name= [https://mapcomplete.osm.be/toilets toilets] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:nl|en}}, {{#language:ru|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:pl|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:nb_NO|en}}, {{#language:da|en}}, {{#language:ca|en}}, {{#language:es|en}} +|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:nl|en}}, {{#language:ru|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:pl|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:nb_NO|en}}, {{#language:da|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:cs|en}} |descr= A MapComplete theme: A map of public toilets |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -112,7 +112,7 @@ {{service_item |name= [https://mapcomplete.osm.be/atm atm] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:nl|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:nb_NO|en}}, {{#language:es|en}} +|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:nl|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:nb_NO|en}}, {{#language:es|en}}, {{#language:id|en}} |descr= A MapComplete theme: This map shows ATMs to withdraw or deposit money |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -193,7 +193,7 @@ {{service_item |name= [https://mapcomplete.osm.be/clock clock] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:ca|en}}, {{#language:de|en}}, {{#language:es|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:ca|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:cs|en}} |descr= A MapComplete theme: Map showing all public clocks |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -256,7 +256,7 @@ {{service_item |name= [https://mapcomplete.osm.be/ghostbikes ghostbikes] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:fr|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:es|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:fr|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:es|en}}, {{#language:ca|en}} |descr= A MapComplete theme: A ghost bike is a memorial for a cyclist who died in a traffic accident, in the form of a white bicycle placed permanently near the accident location |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -265,7 +265,7 @@ {{service_item |name= [https://mapcomplete.osm.be/hackerspaces hackerspaces] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:zh_Hant|en}}, {{#language:hu|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:es|en}} +|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:zh_Hant|en}}, {{#language:hu|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:es|en}}, {{#language:ca|en}} |descr= A MapComplete theme: A map of hackerspaces |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -283,7 +283,7 @@ {{service_item |name= [https://mapcomplete.osm.be/hotels hotels] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:da|en}}, {{#language:nb_NO|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:cs|en}}, {{#language:es|en}} +|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:da|en}}, {{#language:nb_NO|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:cs|en}}, {{#language:es|en}}, {{#language:ca|en}} |descr= A MapComplete theme: On this map, you'll find hotels in your area |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -292,7 +292,7 @@ {{service_item |name= [https://mapcomplete.osm.be/indoors indoors] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:nl|en}}, {{#language:cs|en}}, {{#language:nb_NO|en}}, {{#language:es|en}} +|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:nl|en}}, {{#language:cs|en}}, {{#language:nb_NO|en}}, {{#language:es|en}}, {{#language:ca|en}} |descr= A MapComplete theme: On this map, publicly accessible indoor places are shown |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -301,7 +301,7 @@ {{service_item |name= [https://mapcomplete.osm.be/kerbs_and_crossings kerbs_and_crossings] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:nb_NO|en}}, {{#language:es|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:nb_NO|en}}, {{#language:es|en}}, {{#language:ca|en}} |descr= A MapComplete theme: A map showing kerbs and crossings |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -310,7 +310,7 @@ {{service_item |name= [https://mapcomplete.osm.be/maps maps] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:es|en}}, {{#language:da|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:es|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:ca|en}} |descr= A MapComplete theme: This theme shows all (touristic) maps that OpenStreetMap knows of |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -319,7 +319,7 @@ {{service_item |name= [https://mapcomplete.osm.be/maxspeed maxspeed] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:nl|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:es|en}} +|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:nl|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:es|en}}, {{#language:ca|en}} |descr= A MapComplete theme: This map shows the legally allowed maximum speed on every road. |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -328,7 +328,7 @@ {{service_item |name= [https://mapcomplete.osm.be/nature nature] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:cs|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:ca|en}} |descr= A MapComplete theme: A map for nature lovers, with interesting POI's |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -337,7 +337,7 @@ {{service_item |name= [https://mapcomplete.osm.be/notes notes] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:hu|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:cs|en}} +|lang= {{#language:en|en}}, {{#language:hu|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:ca|en}} |descr= A MapComplete theme: A note is a pin on the map with some text to indicate something wrong |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -355,7 +355,7 @@ {{service_item |name= [https://mapcomplete.osm.be/onwheels onwheels] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:nl|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:es|en}} +|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:nl|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:es|en}}, {{#language:ca|en}} |descr= A MapComplete theme: On this map, publicly weelchair accessible places are shown and can be easily added |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -373,7 +373,7 @@ {{service_item |name= [https://mapcomplete.osm.be/osm_community_index osm_community_index] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:es|en}}, {{#language:ca|en}} +|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:cs|en}} |descr= A MapComplete theme: An index of community resources for OpenStreetMap. |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -382,7 +382,7 @@ {{service_item |name= [https://mapcomplete.osm.be/parkings parkings] |region= Worldwide -|lang= {{#language:nl|en}}, {{#language:en|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:nb_NO|en}}, {{#language:zh_Hant|en}}, {{#language:id|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:ca|en}} +|lang= {{#language:nl|en}}, {{#language:en|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:nb_NO|en}}, {{#language:zh_Hant|en}}, {{#language:id|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:ca|en}}, {{#language:cs|en}} |descr= A MapComplete theme: This map shows different parking spots |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -391,7 +391,7 @@ {{service_item |name= [https://mapcomplete.osm.be/pets pets] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:da|en}}, {{#language:de|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:ca|en}}, {{#language:es|en}} +|lang= {{#language:en|en}}, {{#language:da|en}}, {{#language:de|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:cs|en}} |descr= A MapComplete theme: On this map, you'll find various interesting places for you pets: veterinarians, dog parks, pet shops, dog-friendly restaurants, |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -400,7 +400,7 @@ {{service_item |name= [https://mapcomplete.osm.be/postboxes postboxes] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:zh_Hant|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:nb_NO|en}}, {{#language:da|en}}, {{#language:ca|en}} +|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:zh_Hant|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:nb_NO|en}}, {{#language:da|en}}, {{#language:ca|en}}, {{#language:cs|en}} |descr= A MapComplete theme: A map showing postboxes and post offices |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -409,7 +409,7 @@ {{service_item |name= [https://mapcomplete.osm.be/rainbow_crossings rainbow_crossings] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:nl|en}}, {{#language:ca|en}}, {{#language:es|en}} +|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:nl|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:cs|en}} |descr= A MapComplete theme: On this map, rainbow-painted pedestrian crossings are shown and can be easily added |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -418,7 +418,7 @@ {{service_item |name= [https://mapcomplete.osm.be/shops shops] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:fr|en}}, {{#language:ja|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:nl|en}}, {{#language:da|en}}, {{#language:ca|en}} +|lang= {{#language:en|en}}, {{#language:fr|en}}, {{#language:ja|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:nl|en}}, {{#language:da|en}}, {{#language:ca|en}}, {{#language:cs|en}} |descr= A MapComplete theme: An editable map with basic shop information |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -427,7 +427,7 @@ {{service_item |name= [https://mapcomplete.osm.be/sport_pitches sport_pitches] |region= Worldwide -|lang= {{#language:nl|en}}, {{#language:fr|en}}, {{#language:en|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:ru|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:da|en}}, {{#language:ca|en}} +|lang= {{#language:nl|en}}, {{#language:fr|en}}, {{#language:en|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:ru|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:da|en}}, {{#language:ca|en}}, {{#language:cs|en}} |descr= A MapComplete theme: A map showing sport pitches |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -436,7 +436,7 @@ {{service_item |name= [https://mapcomplete.osm.be/sports sports] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:ca|en}}, {{#language:es|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:cs|en}} |descr= A MapComplete theme: Map showing sport facilities. |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -445,7 +445,7 @@ {{service_item |name= [https://mapcomplete.osm.be/street_lighting street_lighting] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:zh_Hant|en}}, {{#language:hu|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:ca|en}}, {{#language:nb_NO|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:zh_Hant|en}}, {{#language:hu|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:ca|en}}, {{#language:nb_NO|en}}, {{#language:cs|en}} |descr= A MapComplete theme: On this map you can find everything about street lighting |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -454,7 +454,7 @@ {{service_item |name= [https://mapcomplete.osm.be/surveillance surveillance] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:fr|en}}, {{#language:pl|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:da|en}}, {{#language:nb_NO|en}}, {{#language:ca|en}}, {{#language:es|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:fr|en}}, {{#language:pl|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:da|en}}, {{#language:nb_NO|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:cs|en}} |descr= A MapComplete theme: Surveillance cameras and other means of surveillance |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -463,7 +463,7 @@ {{service_item |name= [https://mapcomplete.osm.be/transit transit] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:nl|en}}, {{#language:nb_NO|en}}, {{#language:ca|en}}, {{#language:es|en}} +|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:nl|en}}, {{#language:nb_NO|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:cs|en}} |descr= A MapComplete theme: Plan your trip with the help of the public transport system |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -472,7 +472,7 @@ {{service_item |name= [https://mapcomplete.osm.be/trees trees] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:it|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:ru|en}}, {{#language:pl|en}}, {{#language:de|en}}, {{#language:nb_NO|en}}, {{#language:hu|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:da|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:it|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:ru|en}}, {{#language:pl|en}}, {{#language:de|en}}, {{#language:nb_NO|en}}, {{#language:hu|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:da|en}}, {{#language:cs|en}} |descr= A MapComplete theme: Map all the trees |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -481,7 +481,7 @@ {{service_item |name= [https://mapcomplete.osm.be/waste_basket waste_basket] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:zh_Hant|en}}, {{#language:hu|en}}, {{#language:fr|en}}, {{#language:nb_NO|en}}, {{#language:da|en}}, {{#language:ca|en}}, {{#language:es|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:zh_Hant|en}}, {{#language:hu|en}}, {{#language:fr|en}}, {{#language:nb_NO|en}}, {{#language:da|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:cs|en}} |descr= A MapComplete theme: A map with waste baskets |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png diff --git a/Logic/Actors/GeoLocationHandler.ts b/Logic/Actors/GeoLocationHandler.ts index e5bb9ff7f..b754d6f60 100644 --- a/Logic/Actors/GeoLocationHandler.ts +++ b/Logic/Actors/GeoLocationHandler.ts @@ -139,10 +139,14 @@ export default class GeoLocationHandler { private CopyGeolocationIntoMapstate() { const features: UIEventSource = new UIEventSource([]) this.currentUserLocation = new StaticFeatureSource(features) + // For some weird reason, the 'Object.keys' method doesn't work for the 'location: GeolocationCoordinates'-object and will thus not copy all the properties when using {...location} + // As such, they are copied here + const keysToCopy = ["speed", "accuracy", "altitude", "altitudeAccuracy", "heading"] this.geolocationState.currentGPSLocation.addCallbackAndRun((location) => { if (location === undefined) { return } + const feature = { type: "Feature", properties: { @@ -156,6 +160,11 @@ export default class GeoLocationHandler { coordinates: [location.longitude, location.latitude], }, } + for (const key of keysToCopy) { + if (location[key] !== null) { + feature.properties[key] = location[key] + } + } features.setData([feature]) }) diff --git a/Logic/Osm/OsmObject.ts b/Logic/Osm/OsmObject.ts index fe279f890..11996a92c 100644 --- a/Logic/Osm/OsmObject.ts +++ b/Logic/Osm/OsmObject.ts @@ -164,6 +164,11 @@ export abstract class OsmObject { }) } + public static DownloadHistory(id: NodeId): UIEventSource + public static DownloadHistory(id: WayId): UIEventSource + public static DownloadHistory(id: RelationId): UIEventSource + + public static DownloadHistory(id: OsmId): UIEventSource public static DownloadHistory(id: string): UIEventSource { if (OsmObject.historyCache.has(id)) { return OsmObject.historyCache.get(id) @@ -181,6 +186,7 @@ export abstract class OsmObject { const osmObjects: OsmObject[] = [] for (const element of elements) { let osmObject: OsmObject = null + element.nodes = [] switch (type) { case "node": osmObject = new OsmNode(idN) diff --git a/Logic/SimpleMetaTagger.ts b/Logic/SimpleMetaTagger.ts index c68040a1a..ae8f9c8df 100644 --- a/Logic/SimpleMetaTagger.ts +++ b/Logic/SimpleMetaTagger.ts @@ -324,16 +324,9 @@ export default class SimpleMetaTaggers { }, }) - Object.defineProperty(feature.properties, "_surface:ha", { - enumerable: false, - configurable: true, - get: () => { - const sqMeters = GeoOperations.surfaceAreaInSqMeters(feature) - const sqMetersHa = "" + Math.floor(sqMeters / 1000) / 10 - delete feature.properties["_surface:ha"] - feature.properties["_surface:ha"] = sqMetersHa - return sqMetersHa - }, + Utils.AddLazyProperty(feature.properties, "_surface:ha", () => { + const sqMeters = GeoOperations.surfaceAreaInSqMeters(feature) + return "" + Math.floor(sqMeters / 1000) / 10 }) return true diff --git a/Logic/Tags/RegexTag.ts b/Logic/Tags/RegexTag.ts index c9693212e..0e1f4c658 100644 --- a/Logic/Tags/RegexTag.ts +++ b/Logic/Tags/RegexTag.ts @@ -25,6 +25,10 @@ export class RegexTag extends TagsFilter { if (typeof possibleRegex === "string") { return fromTag === possibleRegex } + if (typeof fromTag.match !== "function") { + console.error("Error: fromTag is not a regex: ", fromTag, possibleRegex) + throw "Error: fromTag is not a regex: " + fromTag + possibleRegex + } return fromTag.match(possibleRegex) !== null } diff --git a/Models/ThemeConfig/Json/LayerConfigJson.ts b/Models/ThemeConfig/Json/LayerConfigJson.ts index feb5ea88c..2d6744967 100644 --- a/Models/ThemeConfig/Json/LayerConfigJson.ts +++ b/Models/ThemeConfig/Json/LayerConfigJson.ts @@ -290,8 +290,11 @@ export interface LayerConfigJson { */ tagRenderings?: ( | string - | { builtin: string | string[]; override: Partial } - | { id: string; builtin: string[]; override: Partial } + | { + id?: string + builtin: string | string[] + override: Partial + } | QuestionableTagRenderingConfigJson | (RewritableConfigJson< ( diff --git a/Models/ThemeConfig/PointRenderingConfig.ts b/Models/ThemeConfig/PointRenderingConfig.ts index 11d0e0953..bb6c5cce8 100644 --- a/Models/ThemeConfig/PointRenderingConfig.ts +++ b/Models/ThemeConfig/PointRenderingConfig.ts @@ -11,7 +11,6 @@ import { FixedUiElement } from "../../UI/Base/FixedUiElement" import Img from "../../UI/Base/Img" import Combine from "../../UI/Base/Combine" import { VariableUiElement } from "../../UI/Base/VariableUIElement" -import { html } from "svelte/types/compiler/utils/namespaces" export default class PointRenderingConfig extends WithContextLoader { private static readonly allowed_location_codes = new Set([ diff --git a/Models/ThemeConfig/TagRenderingConfig.ts b/Models/ThemeConfig/TagRenderingConfig.ts index a3a388d92..7105d021f 100644 --- a/Models/ThemeConfig/TagRenderingConfig.ts +++ b/Models/ThemeConfig/TagRenderingConfig.ts @@ -301,6 +301,10 @@ export default class TagRenderingConfig { if (allKeys.length > 1 && !allHaveIfNot) { throw `${context}: A multi-answer is defined, which generates values over multiple keys. Please define ifnot-tags too on every mapping` } + + if (allKeys.length > 1 && this.freeform?.key !== undefined) { + throw `${context}: A multi-answer is defined, which generates values over multiple keys. This is incompatible with having a freeform key` + } } } diff --git a/UI/Base/SubtleButton.svelte b/UI/Base/SubtleButton.svelte index 98cf35ad0..88d6b233b 100644 --- a/UI/Base/SubtleButton.svelte +++ b/UI/Base/SubtleButton.svelte @@ -6,44 +6,45 @@ import Translations from "../i18n/Translations"; import { ImmutableStore } from "../../Logic/UIEventSource.js"; - export let imageUrl: string | BaseUIElement = undefined; - export let message: string | BaseUIElement = undefined; + export let imageUrl: string | BaseUIElement = undefined + export let message: string | BaseUIElement = undefined export let options: { url?: string | Store newTab?: boolean imgSize?: string extraClasses?: string - } = {}; + } = {} // Website to open when clicked - let href : Store = undefined - if(options?.url){ - href = typeof options?.url == "string" ? new ImmutableStore(options.url) : options.url; + let href: Store = undefined + if (options?.url) { + href = typeof options?.url == "string" ? new ImmutableStore(options.url) : options.url } let imgElem: HTMLElement; let msgElem: HTMLElement; let imgClasses = "block justify-center shrink-0 mr-4 " + (options?.imgSize ?? "h-11 w-11"); const dispatch = createEventDispatcher<{click}>() + onMount(() => { // Image if (imgElem && imageUrl) { - let img: BaseUIElement; + let img: BaseUIElement if ((imageUrl ?? "") === "") { - img = undefined; + img = undefined } else if (typeof imageUrl !== "string") { - img = imageUrl?.SetClass(imgClasses); + img = imageUrl?.SetClass(imgClasses) } - if (img) imgElem.replaceWith(img.ConstructElement()); + if (img) imgElem.replaceWith(img.ConstructElement()) } // Message if (msgElem && message) { - let msg = Translations.W(message)?.SetClass("block text-ellipsis no-images flex-shrink"); - msgElem.replaceWith(msg.ConstructElement()); + let msg = Translations.W(message)?.SetClass("block text-ellipsis no-images flex-shrink") + msgElem.replaceWith(msg.ConstructElement()) } - }); + })