From f9e68f5710493a8defeb7cbe28f3c35e6530443f Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Wed, 6 Apr 2022 21:36:46 +0200 Subject: [PATCH 1/6] Ignore VScode settings --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index f3b0016740..5c20f95021 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ Folder.DotSettings.user index_*.ts .~lock.* *.doctest.ts +.vscode \ No newline at end of file From b4052b8f6355a2c6c8f5cbdce803d81e606807d3 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Wed, 6 Apr 2022 21:37:31 +0200 Subject: [PATCH 2/6] First version of transit/bus theme --- assets/layers/shelter/license_info.json | 12 + assets/layers/shelter/shelter.json | 88 ++++++ assets/layers/shelter/shelter.svg | 1 + assets/layers/shops/shops.json | 44 +-- .../layers/transit_routes/transit_routes.json | 141 ++++++++++ assets/layers/transit_stops/bus_stop.svg | 3 + assets/layers/transit_stops/license_info.json | 15 + .../layers/transit_stops/transit_stops.json | 260 ++++++++++++++++++ .../mapcomplete-changes.json | 8 +- assets/themes/transit/transit.json | 51 ++++ langs/layers/en.json | 183 ++++++++++++ langs/themes/en.json | 4 + 12 files changed, 788 insertions(+), 22 deletions(-) create mode 100644 assets/layers/shelter/license_info.json create mode 100644 assets/layers/shelter/shelter.json create mode 100644 assets/layers/shelter/shelter.svg create mode 100644 assets/layers/transit_routes/transit_routes.json create mode 100644 assets/layers/transit_stops/bus_stop.svg create mode 100644 assets/layers/transit_stops/license_info.json create mode 100644 assets/layers/transit_stops/transit_stops.json create mode 100644 assets/themes/transit/transit.json diff --git a/assets/layers/shelter/license_info.json b/assets/layers/shelter/license_info.json new file mode 100644 index 0000000000..6dab5c0d00 --- /dev/null +++ b/assets/layers/shelter/license_info.json @@ -0,0 +1,12 @@ +[ + { + "path": "shelter.svg", + "license": "MIT", + "authors": [ + "Diemen Design" + ], + "sources": [ + "https://icon-icons.com/icon/map-shelter/158301" + ] + } +] \ No newline at end of file diff --git a/assets/layers/shelter/shelter.json b/assets/layers/shelter/shelter.json new file mode 100644 index 0000000000..803b6ef424 --- /dev/null +++ b/assets/layers/shelter/shelter.json @@ -0,0 +1,88 @@ +{ + "id": "shelter", + "name": { + "en": "Shelter" + }, + "description": { + "en": "Layer showing shelter structures" + }, + "source": { + "osmTags": { + "and": [ + "amenity=shelter" + ] + } + }, + "minzoom": 13, + "title": { + "render": { + "en": "Shelter" + } + }, + "mapRendering": [ + { + "location": [ + "point", + "centroid" + ], + "icon": "./assets/layers/shelter/shelter.svg" + } + ], + "tagRenderings": [ + { + "id": "shelter-type", + "mappings": [ + { + "if": "shelter_type=public_transport", + "then": { + "en": "This is a shelter at a public transport stop." + } + }, + { + "if": "shelter_type=picnic_shelter", + "then": { + "en": "This is a shelter protecting from rain at a picnic site." + } + }, + { + "if": "shelter_type=gazebo", + "then": { + "en": "This is a gazebo." + } + }, + { + "if": "shelter_type=weather_shelter", + "then": { + "en": "This is a small shelter, primarily intended for short breaks. Usually found in the mountains or alongside roads." + } + }, + { + "if": "shelter_type=lean_to", + "then": { + "en": "This is a shed with 3 walls, primarily intended for camping." + } + }, + { + "if": "shelter_type=pavilion", + "then": { + "en": "This is a pavilion" + } + }, + { + "if": "shelter_type=basic_hut", + "then": "This is a basic hut, providing basic shelter and sleeping facilities." + } + ], + "question": { + "en": "What kind of shelter is this?" + }, + "render": { + "en": "Shelter type: {shelter_type}" + }, + "freeform": { + "key": "shelter_type", + "type": "string" + } + } + ] +} \ No newline at end of file diff --git a/assets/layers/shelter/shelter.svg b/assets/layers/shelter/shelter.svg new file mode 100644 index 0000000000..266a9eb7c9 --- /dev/null +++ b/assets/layers/shelter/shelter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/shops/shops.json b/assets/layers/shops/shops.json index 9f5a32dce7..401fd0c01e 100644 --- a/assets/layers/shops/shops.json +++ b/assets/layers/shops/shops.json @@ -412,29 +412,37 @@ "filter": [ { "id": "shop-type", - "options": [{ - "fields": [{ - "name": "search", - "type": "string" - }], - "osmTags": "shop~^.*{search}.*$", - "question": { - "en": "Only show shops selling {search}" + "options": [ + { + "fields": [ + { + "name": "search", + "type": "string" + } + ], + "osmTags": "shop~^.*{search}.*$", + "question": { + "en": "Only show shops selling {search}" + } } - } ] }, { "id": "shop-name", - "options": [{ - "fields": [{ - "name": "search", - "type": "string" - }], - "osmTags": "name~^.*{search}.*$", - "question": { - "en": "Only show shops with name {search}" + "options": [ + { + "fields": [ + { + "name": "search", + "type": "string" + } + ], + "osmTags": "name~^.*{search}.*$", + "question": { + "en": "Only show shops with name {search}" + } } - }]} + ] + } ] } \ No newline at end of file diff --git a/assets/layers/transit_routes/transit_routes.json b/assets/layers/transit_routes/transit_routes.json new file mode 100644 index 0000000000..b29464746f --- /dev/null +++ b/assets/layers/transit_routes/transit_routes.json @@ -0,0 +1,141 @@ +{ + "id": "transit_routes", + "name": { + "en": "Bus lines" + }, + "description": { + "en": "Layer showing bus lines" + }, + "source": { + "osmTags": { + "and": [ + "type=route", + "route=bus" + ] + } + }, + "minzoom": 15, + "title": { + "render": { + "en": "Bus line" + }, + "mappings": [ + { + "if": "name~*", + "then": { + "en": "{name}" + } + } + ] + }, + "mapRendering": [ + { + "color": { + "render": { + "en": "#ff0000" + }, + "mappings": [ + { + "if": "colour~*", + "then": "{colour}" + } + ] + } + } + ], + "tagRenderings": [ + { + "id": "name", + "freeform": { + "key": "name", + "type": "string", + "placeholder": "Bus XX: From => Via => To" + }, + "render": "{name}", + "question": { + "en": "What is the name for this bus line? (i.e. Bus XX: From => Via => To)" + } + }, + { + "id": "from", + "freeform": { + "key": "from", + "type": "string", + "placeholder": "City, Stop Name" + }, + "render": { + "en": "This bus line begins at {from}" + }, + "question": { + "en": "What is the starting point for this bus line?" + } + }, + { + "id": "via", + "freeform": { + "key": "via", + "type": "string", + "placeholder": "City, Stop Name" + }, + "render": { + "en": "This bus line goes via {via}" + }, + "question": { + "en": "What is the via point for this bus line?" + } + }, + { + "id": "to", + "freeform": { + "key": "to", + "type": "string", + "placeholder": "City, Stop Name" + }, + "render": { + "en": "This bus line ends at {to}" + }, + "question": { + "en": "What is the ending point for this bus line?" + } + }, + { + "id": "colour", + "freeform": { + "key": "colour", + "type": "color" + }, + "render": { + "en": "This bus line has the color {colour}" + }, + "question": { + "en": "What is the colour for this bus line?" + } + }, + { + "id": "network", + "freeform": { + "key": "network", + "type": "string" + }, + "render": { + "en": "This bus line is part of the {network} network" + }, + "question": { + "en": "What network does this bus line belong to?" + } + }, + { + "id": "operator", + "freeform": { + "key": "operator", + "type": "string" + }, + "render": { + "en": "This bus line is operated by {operator}" + }, + "question": { + "en": "What company operates this bus line?" + } + } + ] +} \ No newline at end of file diff --git a/assets/layers/transit_stops/bus_stop.svg b/assets/layers/transit_stops/bus_stop.svg new file mode 100644 index 0000000000..1b061c00bd --- /dev/null +++ b/assets/layers/transit_stops/bus_stop.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/layers/transit_stops/license_info.json b/assets/layers/transit_stops/license_info.json new file mode 100644 index 0000000000..47a736debf --- /dev/null +++ b/assets/layers/transit_stops/license_info.json @@ -0,0 +1,15 @@ +[ + { + "path": "bus_stop.svg", + "license": "CC0", + "authors": [ + "Andy Allan", + "Michael Glanznig", + "Paul Norman", + "Paul Dicker" + ], + "sources": [ + "https://github.com/gravitystorm/openstreetmap-carto/blob/master/symbols/highway/bus_stop.svg" + ] + } +] \ No newline at end of file diff --git a/assets/layers/transit_stops/transit_stops.json b/assets/layers/transit_stops/transit_stops.json new file mode 100644 index 0000000000..43daa2ada0 --- /dev/null +++ b/assets/layers/transit_stops/transit_stops.json @@ -0,0 +1,260 @@ +{ + "id": "transit_stops", + "name": { + "en": "Transit Stops" + }, + "description": { + "en": "Layer showing different types of transit stops." + }, + "source": { + "osmTags": { + "or": [ + "highway=bus_stop" + ] + } + }, + "minzoom": 15, + "title": { + "render": { + "en": "Transit Stop" + }, + "mappings": [ + { + "if": "name~*", + "then": { + "en": "Stop {name}" + } + } + ] + }, + "mapRendering": [ + { + "location": [ + "point", + "centroid" + ], + "icon": { + "render": "./assets/layers/transit_stops/bus_stop.svg", + "mappings": [] + }, + "label": "
{name}
" + } + ], + "calculatedTags": [ + "_routes=feat.memberships()", + "_contained_routes_properties=feat.memberships().map(p => {return {id: p.relation.id, name: p.relation.properties.name} }).filter((v,i,a)=>a.findIndex(t=>(JSON.stringify(t) === JSON.stringify(v)))===i)", + "_contained_route_ids=JSON.parse(feat.properties._contained_routes_properties ?? '[]').map(p => p.id)", + "_contained_routes=JSON.parse(feat.properties._contained_routes_properties ?? '[]').map(p => `
  • ${p.name ?? 'bus route'}
  • `).join('')", + "_contained_routes_count=JSON.parse(feat.properties._contained_routes_properties ?? '[]').length" + ], + "tagRenderings": [ + { + "id": "stop_name", + "render": { + "en": "This stop is called {name}" + }, + "freeform": { + "key": "name", + "type": "string", + "addExtraTags": [ + "noname=" + ], + "placeholder": { + "en": "Name of the stop" + } + }, + "mappings": [ + { + "if": { + "and": [ + "noname=yes", + "name=" + ] + }, + "then": { + "en": "This stop has no name" + } + } + ], + "question": { + "en": "What is the name of this stop?" + }, + "placeholder": "Name of the stop" + }, + "images", + { + "id": "shelter", + "mappings": [ + { + "if": "shelter=yes", + "then": { + "en": "This stop has a shelter" + } + }, + { + "if": "shelter=no", + "then": { + "en": "This stop does not have a shelter" + } + }, + { + "if": "shelter=separate", + "then": { + "en": "This stop has a shelter, that's separately mapped" + }, + "hideInAnswer": true + } + ], + "question": { + "en": "Does this stop have a shelter?" + } + }, + { + "id": "bench", + "mappings": [ + { + "if": "bench=yes", + "then": { + "en": "This stop has a bench" + } + }, + { + "if": "bench=no", + "then": { + "en": "This stop does not have a bench" + } + }, + { + "if": "bench=separate", + "then": { + "en": "This stop has a bench, that's separately mapped" + }, + "hideInAnswer": true + } + ], + "question": { + "en": "Does this stop have a bench?" + } + }, + { + "id": "bin", + "mappings": [ + { + "if": "bin=yes", + "then": { + "en": "This stop has a bin" + } + }, + { + "if": "bin=no", + "then": { + "en": "This stop does not have a bin" + } + }, + { + "if": "bin=separate", + "then": { + "en": "This stop has a bin, that's separately mapped" + }, + "hideInAnswer": true + } + ], + "question": { + "en": "Does this stop have a bin?" + } + }, + "wheelchair-access", + { + "id": "tactile_paving", + "mappings": [ + { + "if": "tactile_paving=yes", + "then": { + "en": "This stop has tactile paving" + } + }, + { + "if": "tactile_paving=no", + "then": { + "en": "This stop does not have tactile paving" + } + } + ], + "question": { + "en": "Does this stop have tactile paving?" + } + }, + { + "id": "lit", + "mappings": [ + { + "if": "lit=yes", + "then": { + "en": "This stop is lit" + } + }, + { + "if": "lit=no", + "then": { + "en": "This stop is not lit" + } + } + ], + "question": { + "en": "Is this stop lit?" + } + }, + { + "id": "departures_board", + "mappings": [ + { + "if": "departures_board=yes", + "then": { + "en": "This stop has a departures board of unknown type" + }, + "hideInAnswer": true + }, + { + "if": "departures_board=realtime", + "then": { + "en": "This stop has a board showing realtime departure information" + } + }, + { + "if": "passenger_information_display=yes", + "then": { + "en": "This stop has a board showing realtime departure information" + }, + "hideInAnswer": true + }, + { + "if": "departures_board=timetable", + "then": { + "en": "This stop has a timetable showing regular departures" + } + }, + { + "if": "departures_board=interval", + "then": { + "en": "This stop has a timetable containing just the interval between departures" + } + }, + { + "if": "departures_board=no", + "then": { + "en": "This stop does not have a departures board" + } + } + ] + }, + { + "render": { + "en": "

    {_contained_routes_count} routes stop at this stop

    " + }, + "condition": "_contained_routes~*", + "id": "contained_routes" + } + ], + "filter": [], + "allowMove": false +} \ No newline at end of file diff --git a/assets/themes/mapcomplete-changes/mapcomplete-changes.json b/assets/themes/mapcomplete-changes/mapcomplete-changes.json index b03b39e7ad..bb65497b78 100644 --- a/assets/themes/mapcomplete-changes/mapcomplete-changes.json +++ b/assets/themes/mapcomplete-changes/mapcomplete-changes.json @@ -231,10 +231,6 @@ "if": "theme=openwindpowermap", "then": "./assets/themes/openwindpowermap/logo.svg" }, - { - "if": "theme=parking-lanes", - "then": "./assets/svg/bug.svg" - }, { "if": "theme=parkings", "then": "./assets/themes/parkings/parkings.svg" @@ -295,6 +291,10 @@ "if": "theme=toilets", "then": "./assets/themes/toilets/toilets.svg" }, + { + "if": "theme=transit", + "then": "./assets/layers/transit_stops/bus_stop.svg" + }, { "if": "theme=trees", "then": "./assets/themes/trees/logo.svg" diff --git a/assets/themes/transit/transit.json b/assets/themes/transit/transit.json new file mode 100644 index 0000000000..271510c2f3 --- /dev/null +++ b/assets/themes/transit/transit.json @@ -0,0 +1,51 @@ +{ + "id": "transit", + "maintainer": "Robin van der Linde", + "version": "20220406", + "title": { + "en": "Bus routes" + }, + "description": { + "en": "Plan your trip with the help of the public transport system." + }, + "icon": "./assets/layers/transit_stops/bus_stop.svg", + "startZoom": 20, + "startLat": 53.21333, + "startLon": 6.56963, + "layers": [ + "transit_stops", + "transit_routes", + { + "builtin": "bike_parking", + "override": { + "minzoom": 19, + "minzoomVisible": 19 + } + }, + { + "builtin": "parking", + "override": { + "minzoom": 19, + "minzoomVisible": 19 + } + }, + { + "builtin": "shelter", + "override": { + "minzoom": 19, + "minzoomVisible": 19, + "source": { + "osmTags": { + "and": [ + "amenity=shelter", + "shelter_type=public_transport" + ] + } + } + }, + "hideTagRenderingsWithLabels": [ + "shelter-type" + ] + } + ] +} \ No newline at end of file diff --git a/langs/layers/en.json b/langs/layers/en.json index ddeee9e6f5..dd0c9fc87e 100644 --- a/langs/layers/en.json +++ b/langs/layers/en.json @@ -4400,6 +4400,39 @@ "render": "Recycling facility" } }, + "shelter": { + "description": "Layer showing shelter structures", + "name": "Shelter", + "tagRenderings": { + "shelter-type": { + "mappings": { + "0": { + "then": "This is a shelter at a public transport stop." + }, + "1": { + "then": "This is a shelter protecting from rain at a picnic site." + }, + "2": { + "then": "This is a gazebo." + }, + "3": { + "then": "This is a small shelter, primarily intended for short breaks. Usually found in the mountains or alongside roads." + }, + "4": { + "then": "This is a shed with 3 walls, primarily intended for camping." + }, + "5": { + "then": "This is a pavilion" + } + }, + "question": "What kind of shelter is this?", + "render": "Shelter type: {shelter_type}" + } + }, + "title": { + "render": "Shelter" + } + }, "shops": { "deletion": { "extraDeleteReasons": { @@ -4409,6 +4442,22 @@ } }, "description": "A shop", + "filter": { + "0": { + "options": { + "0": { + "question": "Only show shops selling {search}" + } + } + }, + "1": { + "options": { + "0": { + "question": "Only show shops with name {search}" + } + } + } + }, "name": "Shop", "presets": { "0": { @@ -5082,6 +5131,140 @@ "render": "Trail" } }, + "transit_routes": { + "description": "Layer showing bus lines", + "mapRendering": { + "0": { + "color": { + "render": "#ff0000" + } + } + }, + "name": "Bus lines", + "title": { + "mappings": { + "0": { + "then": "{name}" + } + }, + "render": "Bus line" + } + }, + "transit_stops": { + "description": "Layer showing different types of transit stops.", + "name": "Transit Stops", + "tagRenderings": { + "bench": { + "mappings": { + "0": { + "then": "This stop has a bench" + }, + "1": { + "then": "This stop does not have a bench" + }, + "2": { + "then": "This stop has a bench, that's separately mapped" + } + }, + "question": "Does this stop have a bench?" + }, + "bin": { + "mappings": { + "0": { + "then": "This stop has a bin" + }, + "1": { + "then": "This stop does not have a bin" + }, + "2": { + "then": "This stop has a bin, that's separately mapped" + } + }, + "question": "Does this stop have a bin?" + }, + "contained_routes": { + "render": "

    {_contained_routes_count} routes stop at this stop

    " + }, + "departures_board": { + "mappings": { + "0": { + "then": "This stop has a departures board of unknown type" + }, + "1": { + "then": "This stop has a board showing realtime departure information" + }, + "2": { + "then": "This stop has a board showing realtime departure information" + }, + "3": { + "then": "This stop has a timetable showing regular departures" + }, + "4": { + "then": "This stop has a timetable containing just the interval between departures" + }, + "5": { + "then": "This stop does not have a departures board" + } + } + }, + "lit": { + "mappings": { + "0": { + "then": "This stop is lit" + }, + "1": { + "then": "This stop is not lit" + } + }, + "question": "Is this stop lit?" + }, + "shelter": { + "mappings": { + "0": { + "then": "This stop has a shelter" + }, + "1": { + "then": "This stop does not have a shelter" + }, + "2": { + "then": "This stop has a shelter, that's separately mapped" + } + }, + "question": "Does this stop have a shelter?" + }, + "stop_name": { + "freeform": { + "placeholder": "Name of the stop" + }, + "mappings": { + "0": { + "then": "This stop has no name" + } + }, + "question": "What is the name of this stop?", + "render": "This stop is called {name}" + }, + "tactile_paving": { + "mappings": { + "0": { + "then": "This stop has tactile paving" + }, + "1": { + "then": "This stop does not have tactile paving" + } + }, + "question": "Does this stop have tactile paving?" + } + }, + "title": { + "mappings": { + "0": { + "then": "Stop {name}" + } + }, + "render": "Transit Stop" + } + }, "tree_node": { "description": "A layer showing trees", "name": "Tree", diff --git a/langs/themes/en.json b/langs/themes/en.json index 80a08d43f4..cd6a854a63 100644 --- a/langs/themes/en.json +++ b/langs/themes/en.json @@ -1312,6 +1312,10 @@ "description": "A map of public toilets", "title": "Open Toilet Map" }, + "transit": { + "description": "Transit", + "title": "Transit" + }, "trees": { "description": "Map all the trees!", "shortDescription": "Map all the trees", From 606fd305fd77811fb0355522e376bc85b13bc07e Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Tue, 5 Jul 2022 15:02:08 +0000 Subject: [PATCH 3/6] Basic gitpod + vscode settings --- .gitignore | 14 +++++++++++++- .gitpod.yml | 13 +++++++++++++ .vscode/extensions.json | 6 ++++++ .vscode/settings.json | 19 +++++++++++++++++++ .vscode/tasks.json | 14 ++++++++++++++ 5 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 .gitpod.yml create mode 100644 .vscode/extensions.json create mode 100644 .vscode/settings.json create mode 100644 .vscode/tasks.json diff --git a/.gitignore b/.gitignore index 4b310f0955..ed8cb6f153 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,6 @@ dist/* node_modules .cache/* .idea/* -.vscode/* scratch assets/editor-layer-index.json assets/generated/* @@ -24,3 +23,16 @@ index_*.ts .~lock.* *.doctest.ts service-worker.js + +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +!.vscode/*.code-snippets + +# Local History for Visual Studio Code +.history/ + +# Built Visual Studio Code Extensions +*.vsix \ No newline at end of file diff --git a/.gitpod.yml b/.gitpod.yml new file mode 100644 index 0000000000..2c97255271 --- /dev/null +++ b/.gitpod.yml @@ -0,0 +1,13 @@ +tasks: + - init: npm run init + command: npm run start + +ports: + - name: MapComplete Website + port: 1234 + onOpen: open-browser + +vscode: + extensions: + - "esbenp.prettier-vscode" + - "eamodio.gitlens" \ No newline at end of file diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000000..ba4f9b1b8b --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,6 @@ +{ + "recommendations": [ + "esbenp.prettier-vscode", + "eamodio.gitlens" + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000000..0375d70802 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,19 @@ +{ + "json.schemas": [ + { + "fileMatch": [ + "/assets/layers/*/*.json", + "!/assets/layers/*/license_info.json" + ], + "url": "./Docs/Schemas/LayerConfigJson.schema.json" + }, + { + "fileMatch": [ + "/assets/themes/*/*.json", + "!/assets/themes/*/license_info.json" + ], + "url": "./Docs/Schemas/LayoutConfigJson.schema.json" + } + ], + "editor.tabSize": 2 +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000000..2dfa42cd3d --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,14 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "type": "npm", + "script": "start", + "path": "/", + "group": "build", + "problemMatcher": [], + "label": "MapComplete Dev", + "detail": "Run MapComplete Dev Server" + } + ] +} From 7270365cf54490507257a40efcda67eb531dfd2d Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Wed, 6 Jul 2022 09:09:05 +0000 Subject: [PATCH 4/6] Add Github extension --- .gitpod.yml | 3 ++- .vscode/extensions.json | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.gitpod.yml b/.gitpod.yml index 2c97255271..d533685290 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -10,4 +10,5 @@ ports: vscode: extensions: - "esbenp.prettier-vscode" - - "eamodio.gitlens" \ No newline at end of file + - "eamodio.gitlens", + - "GitHub.vscode-pull-request-github" \ No newline at end of file diff --git a/.vscode/extensions.json b/.vscode/extensions.json index ba4f9b1b8b..68d524f214 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,6 +1,7 @@ { "recommendations": [ "esbenp.prettier-vscode", - "eamodio.gitlens" + "eamodio.gitlens", + "GitHub.vscode-pull-request-github" ] } \ No newline at end of file From e34c935046b3be2c8bffc79a1350fae827f04fdd Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Wed, 6 Jul 2022 09:39:28 +0000 Subject: [PATCH 5/6] Auto save on focus change --- .vscode/settings.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 0375d70802..ff6d1b68d2 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -15,5 +15,6 @@ "url": "./Docs/Schemas/LayoutConfigJson.schema.json" } ], - "editor.tabSize": 2 + "editor.tabSize": 2, + "files.autoSave": "onFocusChange" } \ No newline at end of file From c8179a3a6264133d476f56e32c52103c9d2df393 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Wed, 6 Jul 2022 09:46:52 +0000 Subject: [PATCH 6/6] Small fixes --- assets/layers/transit_stops/bus_stop.svg | 56 +++- langs/layers/en.json | 108 ++++--- langs/layers/it.json | 364 +++++++++++++++++++++++ langs/layers/nl.json | 8 +- langs/themes/en.json | 4 +- langs/themes/it.json | 4 + 6 files changed, 501 insertions(+), 43 deletions(-) diff --git a/assets/layers/transit_stops/bus_stop.svg b/assets/layers/transit_stops/bus_stop.svg index 1b061c00bd..8d9c4d13b4 100644 --- a/assets/layers/transit_stops/bus_stop.svg +++ b/assets/layers/transit_stops/bus_stop.svg @@ -1,3 +1,55 @@ - - + + + + + + image/svg+xml + + + + + + + + diff --git a/langs/layers/en.json b/langs/layers/en.json index 219cfe197a..e077d30cd2 100644 --- a/langs/layers/en.json +++ b/langs/layers/en.json @@ -3568,6 +3568,11 @@ "0": { "explanation": "{title()} has closed down permanently" } + }, + "nonDeleteMappings": { + "0": { + "then": "This is actually a pub" + } } }, "description": "A layer showing restaurants and fast-food amenities (with a special rendering for friteries)", @@ -5111,39 +5116,6 @@ "render": "Recycling facility" } }, - "shelter": { - "description": "Layer showing shelter structures", - "name": "Shelter", - "tagRenderings": { - "shelter-type": { - "mappings": { - "0": { - "then": "This is a shelter at a public transport stop." - }, - "1": { - "then": "This is a shelter protecting from rain at a picnic site." - }, - "2": { - "then": "This is a gazebo." - }, - "3": { - "then": "This is a small shelter, primarily intended for short breaks. Usually found in the mountains or alongside roads." - }, - "4": { - "then": "This is a shed with 3 walls, primarily intended for camping." - }, - "5": { - "then": "This is a pavilion" - } - }, - "question": "What kind of shelter is this?", - "render": "Shelter type: {shelter_type}" - } - }, - "title": { - "render": "Shelter" - } - }, "school": { "name": "Primary and secondary schools", "presets": { @@ -5265,6 +5237,39 @@ "render": "School {name}" } }, + "shelter": { + "description": "Layer showing shelter structures", + "name": "Shelter", + "tagRenderings": { + "shelter-type": { + "mappings": { + "0": { + "then": "This is a shelter at a public transport stop." + }, + "1": { + "then": "This is a shelter protecting from rain at a picnic site." + }, + "2": { + "then": "This is a gazebo." + }, + "3": { + "then": "This is a small shelter, primarily intended for short breaks. Usually found in the mountains or alongside roads." + }, + "4": { + "then": "This is a shed with 3 walls, primarily intended for camping." + }, + "5": { + "then": "This is a pavilion" + } + }, + "question": "What kind of shelter is this?", + "render": "Shelter type: {shelter_type}" + } + }, + "title": { + "render": "Shelter" + } + }, "shops": { "deletion": { "extraDeleteReasons": { @@ -5312,11 +5317,13 @@ } }, "tagRenderings": { + "2": { + "override": { + "question": "What kind of shop is this?" + } + }, "shops-name": { "question": "What is the name of this shop?" - }, - "shops-type-from-id": { - "question": "What kind of shop is this?" } }, "title": { @@ -6005,6 +6012,35 @@ } }, "name": "Bus lines", + "tagRenderings": { + "colour": { + "question": "What is the colour for this bus line?", + "render": "This bus line has the color {colour}" + }, + "from": { + "question": "What is the starting point for this bus line?", + "render": "This bus line begins at {from}" + }, + "name": { + "question": "What is the name for this bus line? (i.e. Bus XX: From => Via => To)" + }, + "network": { + "question": "What network does this bus line belong to?", + "render": "This bus line is part of the {network} network" + }, + "operator": { + "question": "What company operates this bus line?", + "render": "This bus line is operated by {operator}" + }, + "to": { + "question": "What is the ending point for this bus line?", + "render": "This bus line ends at {to}" + }, + "via": { + "question": "What is the via point for this bus line?", + "render": "This bus line goes via {via}" + } + }, "title": { "mappings": { "0": { diff --git a/langs/layers/it.json b/langs/layers/it.json index a76a3b1d88..09efa26b6b 100644 --- a/langs/layers/it.json +++ b/langs/layers/it.json @@ -1756,6 +1756,218 @@ "render": "Microbiblioteca" } }, + "recycling": { + "description": "Un livello con i contenitori e centri per la raccolta rifiuti riciclabili", + "filter": { + "0": { + "options": { + "0": { + "question": "Aperto ora" + } + } + }, + "1": { + "options": { + "0": { + "question": "Tutti i tipi di rifiuti" + }, + "1": { + "question": "Riciclo di batterie" + }, + "2": { + "question": "Riciclo di confezioni per bevande" + }, + "3": { + "question": "Riciclo di lattine" + }, + "4": { + "question": "Riciclo di abiti" + }, + "5": { + "question": "Riciclo di olio da cucina" + }, + "6": { + "question": "Riciclo di olio da motore" + }, + "7": { + "question": "Riciclo di umido" + }, + "8": { + "question": "Riciclo di bottiglie di vetro" + }, + "9": { + "question": "Riciclo di vetro" + }, + "10": { + "question": "Riciclo di giornali" + }, + "11": { + "question": "Riciclo di carta" + }, + "12": { + "question": "Riciclo di bottiglie di plastica" + }, + "13": { + "question": "Riciclo di confezioni di plastica" + }, + "14": { + "question": "Riciclo di plastica" + }, + "15": { + "question": "Riciclo di rottami metallici" + }, + "16": { + "question": "Riciclo di piccoli elettrodomestici" + }, + "17": { + "question": "Riciclo di secco" + } + } + } + }, + "name": "Riciclo", + "presets": { + "0": { + "title": "un contenitore per il riciclo" + }, + "1": { + "title": "un centro di riciclo" + } + }, + "tagRenderings": { + "container-location": { + "mappings": { + "0": { + "then": "E' un contenitore sotterraneo" + }, + "1": { + "then": "Questo contenitore è al chiuso" + }, + "2": { + "then": "Questo contenitore è all'aperto" + } + }, + "question": "Dove si trova questo contenitore?" + }, + "opening_hours": { + "mappings": { + "0": { + "then": "24/7" + } + }, + "question": "Quali sono gli orari di apertura di questo impianto di raccolta e riciclo?" + }, + "operator": { + "question": "Quale azienda gestisce questo impianto di raccolta e riciclo?", + "render": "Questa struttura di raccola e riciclo è gestita da {operator}" + }, + "recycling-accepts": { + "mappings": { + "0": { + "then": "Batterie" + }, + "1": { + "then": "Cartoni per bevande" + }, + "2": { + "then": "Lattine" + }, + "3": { + "then": "Abiti" + }, + "4": { + "then": "Olio da cucina" + }, + "5": { + "then": "Olio di motore" + }, + "6": { + "then": "Verde" + }, + "7": { + "then": "Umido" + }, + "8": { + "then": "Bottiglie di vetro" + }, + "9": { + "then": "Vetro" + }, + "10": { + "then": "Giornali" + }, + "11": { + "then": "Carta" + }, + "12": { + "then": "Bottiglie di platica" + }, + "13": { + "then": "Confezioni di plastica" + }, + "14": { + "then": "Plastica" + }, + "15": { + "then": "Rottami metallici" + }, + "16": { + "then": "Scarpe" + }, + "17": { + "then": "Piccoli elettrodomestici" + }, + "18": { + "then": "Piccoli elettrodomestici" + }, + "19": { + "then": "Aghi e oggetti appuntiti" + }, + "20": { + "then": "Secco" + } + }, + "question": "Cosa si può riciclare qui?" + }, + "recycling-centre-name": { + "mappings": { + "0": { + "then": "Questo centro raccolta e riciclo rifiuti non ha un nome specifico" + } + }, + "question": "Come si chiama questo centro raccolta e riciclo rifiuti?", + "render": "Questo centro raccolta e riciclo rifiuti si chiama {name}" + }, + "recycling-type": { + "mappings": { + "0": { + "then": "Questo è un contenitore per il riciclo di rifiuti" + }, + "1": { + "then": "Questo è un centro per la raccola e riciclo di rifiuti" + }, + "2": { + "then": "Contenitore per lo smaltimento del secco" + } + }, + "question": "Che tipo di raccolta è questo?" + } + }, + "title": { + "mappings": { + "0": { + "then": "Centro di riciclo rifiuti" + }, + "1": { + "then": "Centro di riciclo rifiuti" + }, + "2": { + "then": "Contenitore per il riciclo" + } + }, + "render": "Impianti di riciclo" + } + }, "slow_roads": { "tagRenderings": { "slow_roads-surface": { @@ -2259,6 +2471,158 @@ "render": "Punto panoramico" } }, + "waste_basket": { + "description": "Questo è un cestino dei rifiuti pubblico, un bidone della spazzatura, dove puoi buttare via la tua spazzatura", + "filter": { + "0": { + "options": { + "0": { + "question": "Tutti i tipi" + }, + "1": { + "question": "Cestino per sigarette" + }, + "2": { + "question": "Cestino per medicinali" + }, + "3": { + "question": "Cestino per escrementi dei cani" + }, + "4": { + "question": "Cestino per la spazzatura" + }, + "5": { + "question": "Cestino dei rifiuti per oggetti taglienti" + }, + "6": { + "question": "Cestino per la plastica" + } + } + }, + "1": { + "options": { + "0": { + "question": "Cestino per rifiuti con dispenser per sacchetti per escrementi dei cani" + } + } + } + }, + "mapRendering": { + "0": { + "iconSize": { + "mappings": { + "0": { + "then": "Cestino dei rifiuti" + } + } + } + } + }, + "name": "Cestino dei rifiuti", + "presets": { + "0": { + "title": "un cestino dei rifiuti" + } + }, + "tagRenderings": { + "dispensing_dog_bags": { + "mappings": { + "0": { + "then": "Questo cestino ha un distributore di sacchetti per escrementi dei cani" + }, + "1": { + "then": "Questo cestino non ha un distributore di sacchetti per escrementi dei cani" + }, + "2": { + "then": "Questo cestino non ha un distributore di sacchetti per escrementi dei cani" + } + }, + "question": "Questo cestino ha un distributore di sacchetti per escrementi dei cani?" + }, + "waste-basket-waste-types": { + "mappings": { + "0": { + "then": "Un cestino rifiuti per uso generico" + }, + "1": { + "then": "Un cestino rifiuti per uso generico" + }, + "2": { + "then": "Un cestino rifiuti per escrementi di cani" + }, + "3": { + "then": "Un cestino rifiuti per sigarette" + }, + "4": { + "then": "Un cestino rifiuti per medicinali" + }, + "5": { + "then": "Un cestino rifiuti per aghi e altri oggetti appuntiti" + }, + "6": { + "then": "Un cestino rifiuti per la plastica" + } + }, + "question": "Che tipo di cestino dei rifiuti è questo?" + } + }, + "title": { + "render": "Cestino dei rifiuti" + } + }, + "waste_disposal": { + "description": "Cestino per lo smaltimento dei rifiuti, contenitore di dimensioni medio grandi per lo smaltimento dei rifiuti (domestici)", + "filter": { + "0": { + "options": { + "0": { + "question": "Solo accesso pubblico" + } + } + } + }, + "name": "Contenitori per la raccolta differenziata", + "presets": { + "0": { + "description": "Cestino di dimensioni medio-grandi per lo smaltimento dei rifiuti (domestici)", + "title": "un raccoglitore per lo smaltimento rifiuti" + } + }, + "tagRenderings": { + "access": { + "mappings": { + "0": { + "then": "Questo cestino può essere usato da chiunque" + }, + "1": { + "then": "Questo cestino è privato" + }, + "2": { + "then": "Questo cestino è solo per residenti" + } + }, + "question": "Chi può utilizzare questo cestino per lo smaltimento dei rifiuti?", + "render": "Accesso: {access}" + }, + "disposal-location": { + "mappings": { + "0": { + "then": "Questo è un contenitore sotterraneo" + }, + "1": { + "then": "Questo contenitore è al chiuso" + }, + "2": { + "then": "Questo contenitore è all'aperto" + } + }, + "question": "Dove si trova questo contenitore?" + } + }, + "title": { + "render": "Smaltimento rifiuti" + } + }, "windturbine": { "name": "pala eolica", "presets": { diff --git a/langs/layers/nl.json b/langs/layers/nl.json index 96d2abc4f7..3380b53900 100644 --- a/langs/layers/nl.json +++ b/langs/layers/nl.json @@ -5183,11 +5183,13 @@ } }, "tagRenderings": { + "2": { + "override": { + "question": "Wat voor soort winkel is dit?" + } + }, "shops-name": { "question": "Wat is de naam van deze winkel?" - }, - "shops-type-from-id": { - "question": "Wat voor soort winkel is dit?" } }, "title": { diff --git a/langs/themes/en.json b/langs/themes/en.json index 80872ac089..4fb6f8226f 100644 --- a/langs/themes/en.json +++ b/langs/themes/en.json @@ -954,8 +954,8 @@ "title": "Open Toilet Map" }, "transit": { - "description": "Transit", - "title": "Transit" + "description": "Plan your trip with the help of the public transport system.", + "title": "Bus routes" }, "trees": { "description": "Map all the trees!", diff --git a/langs/themes/it.json b/langs/themes/it.json index f9518d0d42..fbed99743c 100644 --- a/langs/themes/it.json +++ b/langs/themes/it.json @@ -577,6 +577,10 @@ "shortDescription": "Mappa tutti gli alberi", "title": "Alberi" }, + "waste": { + "description": "Mappa dei cestini per i rifiuti e i centri di raccolta e riciclo rifiuti.", + "title": "Rifiuti" + }, "waste_basket": { "description": "In questa cartina troverai i cestini dei rifiuti nei tuoi paraggi. Se manca un cestino, puoi inserirlo tu stesso", "shortDescription": "Una cartina dei cestini dei rifiuti",