From 6b840d9ef05cc5ed135e563945e546788eb53ab8 Mon Sep 17 00:00:00 2001
From: Win Olario
Date: Sun, 4 Apr 2021 09:14:37 +0800
Subject: [PATCH 01/56] Initial version of hailhydrant theme
---
assets/themes/hailhydrant/hailhydrant.json | 601 +++++++++++++++++++++
1 file changed, 601 insertions(+)
create mode 100644 assets/themes/hailhydrant/hailhydrant.json
diff --git a/assets/themes/hailhydrant/hailhydrant.json b/assets/themes/hailhydrant/hailhydrant.json
new file mode 100644
index 0000000000..69e1d60e9c
--- /dev/null
+++ b/assets/themes/hailhydrant/hailhydrant.json
@@ -0,0 +1,601 @@
+{
+ "id": "HailHydrant",
+ "title": {
+ "en": "Hydrants, Fire and Rescue Stations, Extinguishers"
+ },
+ "shortDescription": {
+ "en": "Map to show hydrants, fire and rescue stations, extinguishers"
+ },
+ "description": {
+ "en": "On this map you can find and update local hydrants, fire & resue stations, and extinguishers to help make the most awesome map of your community!"
+ },
+ "language": [
+ "en"
+ ],
+ "maintainer": "",
+ "icon": "https://wiki.openstreetmap.org/w/images/8/8c/Hailhydrant-logo.svg",
+ "version": "0",
+ "startLat": 13.67801,
+ "startLon": 121.6625,
+ "startZoom": 6,
+ "widenFactor": 0.05,
+ "socialImage": "",
+ "layers": [
+ {
+ "id": "hydrants",
+ "name": {
+ "en": "Map of hydrants"
+ },
+ "minzoom": 14,
+ "overpassTags": {
+ "and": [
+ "emergency=fire_hydrant"
+ ]
+ },
+ "title": {
+ "render": {
+ "en": "Hydrant"
+ }
+ },
+ "description": {
+ "en": "Map layer to show fire hydrants."
+ },
+ "tagRenderings": [
+ {
+ "question": {
+ "en": "What colour is the hydrant?"
+ },
+ "render": {
+ "en": "The hydrant colour is {colour}"
+ },
+ "freeform": {
+ "key": "colour"
+ },
+ "mappings": [
+ {
+ "if": {
+ "and": [
+ "colour=yellow"
+ ]
+ },
+ "then": {
+ "en": "The hydrant colour is yellow"
+ }
+ }
+ ]
+ },
+ {
+ "question": {
+ "en": "What type of hydrant is it?"
+ },
+ "freeform": {
+ "key": "fire_hydrant:type"
+ },
+ "render": {
+ "en": " Hydrant type: {fire_hydrant:type}"
+ },
+ "mappings": [
+ {
+ "if": {
+ "and": [
+ "fire_hydrant:type=pillar"
+ ]
+ },
+ "then": {
+ "en": " Pillar type."
+ }
+ },
+ {
+ "if": {
+ "and": [
+ "fire_hydrant:type=pipe"
+ ]
+ },
+ "then": {
+ "en": " Pipe type."
+ }
+ },
+ {
+ "if": {
+ "and": [
+ "fire_hydrant:type=wall"
+ ]
+ },
+ "then": {
+ "en": " Wall type."
+ }
+ },
+ {
+ "if": {
+ "and": [
+ "fire_hydrant:type=underground"
+ ]
+ },
+ "then": {
+ "en": " Underground type."
+ }
+ }
+ ]
+ },
+ {
+ "question": {
+ "en": "How many couplings are there?"
+ },
+ "render": {
+ "en": "Couplings: {couplings}"
+ },
+ "freeform": {
+ "key": "couplings",
+ "type": "pnat"
+ },
+ "mappings": [
+ {
+ "if": {
+ "and": [
+ "couplings=1"
+ ]
+ },
+ "then": {
+ "en": "The hydrant has one (1) coupling."
+ }
+ },
+ {
+ "if": {
+ "and": [
+ "couplings=2"
+ ]
+ },
+ "then": {
+ "en": "The hydrant has two (2) couplings."
+ }
+ },
+ {
+ "if": {
+ "and": [
+ "couplings=3"
+ ]
+ },
+ "then": {
+ "en": "The hydrant has three (3) coupling."
+ }
+ }
+ ]
+ },
+ {
+ "question": {
+ "en": "Update the lifecycle status of the hydrant."
+ },
+ "render": {
+ "en": "Lifecycle status"
+ },
+ "freeform": {
+ "key": "disused:emergency"
+ },
+ "mappings": [
+ {
+ "if": {
+ "and": [
+ "emergency=fire_hydrant"
+ ]
+ },
+ "then": {
+ "en": "Hydrant is (fully or partially) working."
+ }
+ },
+ {
+ "if": {
+ "and": [
+ "disused:emergency=fire_hydrant",
+ "emergency="
+ ]
+ },
+ "then": {
+ "en": "Hydrant is unavailable for use."
+ }
+ },
+ {
+ "if": {
+ "and": [
+ "removed:emergency=fire_hydrant",
+ "emergency="
+ ]
+ },
+ "then": {
+ "en": "Hydrant has been removed."
+ }
+ }
+ ]
+ },
+ {
+ "question": {
+ "en": "Describe the position of the hydrant."
+ },
+ "render": {
+ "en": "Position: {fire_hydrant:position}"
+ },
+ "mappings": [
+ {
+ "if": {
+ "and": [
+ "fire_hydrant:position=sidewalk"
+ ]
+ },
+ "then": {
+ "en": "Sidewalk"
+ }
+ },
+ {
+ "if": {
+ "and": [
+ "fire_hydrant:position=lane"
+ ]
+ },
+ "then": {
+ "en": "Road-side"
+ }
+ },
+ {
+ "if": {
+ "and": [
+ "fire_hydrant:position=underground"
+ ]
+ },
+ "then": {
+ "en": "Underground"
+ }
+ }
+ ],
+ "freeform": {
+ "key": "fire_hydrant:position"
+ }
+ },
+ {
+ "render": {
+ "en": "Mapillary: {mapillary}"
+ },
+ "question": {
+ "en": "Do you know the Mapillary photo id?"
+ },
+ "freeform": {
+ "key": "mapillary"
+ }
+ }
+ ],
+ "hideUnderlayingFeaturesMinPercentage": 0,
+ "icon": {
+ "render": "https://upload.wikimedia.org/wikipedia/commons/6/66/Hydrant_02.svg"
+ },
+ "width": {
+ "render": "8"
+ },
+ "iconSize": {
+ "render": "15,15,center"
+ },
+ "color": {
+ "render": "#00f"
+ },
+ "presets": [
+ {
+ "tags": [
+ "emergency=fire_hydrant"
+ ],
+ "title": {
+ "en": "fire hydrant"
+ },
+ "description": {
+ "en": "Add a new fire hydant to the map."
+ }
+ }
+ ],
+ "wayHandling": 1,
+ "osmSource": {
+ "overpassTags": {
+ "and": [
+ "emergency=fire_hydrant"
+ ]
+ }
+ }
+ },
+ {
+ "id": "extinguisher",
+ "name": {
+ "en": "Map of fire extinguishers."
+ },
+ "minzoom": 14,
+ "overpassTags": {
+ "and": [
+ "emergency=fire_extinguisher"
+ ]
+ },
+ "title": {
+ "render": {
+ "en": "Extinguishers"
+ }
+ },
+ "description": {
+ "en": "Map layer to show fire hydrants."
+ },
+ "tagRenderings": [
+ {
+ "render": {
+ "en": "Location: {location}"
+ },
+ "question": {
+ "en": "Where is it positioned?"
+ },
+ "mappings": [
+ {
+ "if": {
+ "and": [
+ "location=indoor"
+ ]
+ },
+ "then": {
+ "en": "Indoor"
+ }
+ },
+ {
+ "if": {
+ "and": [
+ "location=outdoor"
+ ]
+ },
+ "then": {
+ "en": "Outdoor"
+ }
+ }
+ ],
+ "freeform": {
+ "key": "location"
+ }
+ }
+ ],
+ "hideUnderlayingFeaturesMinPercentage": 0,
+ "icon": {
+ "render": "https://upload.wikimedia.org/wikipedia/commons/e/e8/MUTCD_RS-090.svg"
+ },
+ "width": {
+ "render": "8"
+ },
+ "iconSize": {
+ "render": "20,20,center"
+ },
+ "color": {
+ "render": "#00f"
+ },
+ "presets": [
+ {
+ "tags": [
+ "emergency=fire_extinguisher"
+ ],
+ "title": {
+ "en": "fire extinguisher"
+ },
+ "description": {
+ "en": "Add a fire extinguisher to the map"
+ }
+ }
+ ],
+ "wayHandling": 1,
+ "osmSource": {
+ "overpassTags": {
+ "and": [
+ "emergency=fire_extinguisher"
+ ]
+ }
+ }
+ },
+ {
+ "id": "stations",
+ "name": {
+ "en": "Map of fire stations"
+ },
+ "minzoom": 12,
+ "overpassTags": {
+ "and": [
+ "amenity=fire_station"
+ ]
+ },
+ "title": {
+ "render": {
+ "en": "Fire Station"
+ }
+ },
+ "description": {
+ "en": "Map layer to show fire stations."
+ },
+ "tagRenderings": [
+ {
+ "freeform": {
+ "key": "addr:street"
+ },
+ "question": {
+ "en": " What street is the station located?"
+ },
+ "render": {
+ "en": "The station is along a highway called {addr:street}."
+ }
+ },
+ {
+ "question": {
+ "en": "In what place is the station located? (e.g. name of neighbourhood, villlage, or town)"
+ },
+ "freeform": {
+ "key": "addr:place"
+ },
+ "render": {
+ "en": "The station is to be found within {addr:place}."
+ }
+ },
+ {
+ "question": {
+ "en": "What agency operates this station?"
+ },
+ "render": {
+ "en": "Operator: {operator}"
+ },
+ "freeform": {
+ "key": "operator"
+ },
+ "mappings": [
+ {
+ "if": {
+ "and": [
+ "operator=Bureau of Fire Protection",
+ "operator:type=public"
+ ]
+ },
+ "then": {
+ "en": "Bureau of Fire Protection"
+ }
+ }
+ ]
+ },
+ {
+ "question": {
+ "en": "How would you classifiy the operator of this station?"
+ },
+ "render": {
+ "en": "Operator type: {operator:type}"
+ },
+ "freeform": {
+ "key": "operator:type"
+ },
+ "mappings": [
+ {
+ "if": {
+ "and": [
+ "operator:type=public"
+ ]
+ },
+ "then": {
+ "en": "Public"
+ }
+ },
+ {
+ "if": {
+ "and": [
+ "operator:type=ngo"
+ ]
+ },
+ "then": {
+ "en": "Volunteer"
+ }
+ },
+ {
+ "if": {
+ "and": [
+ "operator:type=community"
+ ]
+ },
+ "then": {
+ "en": "Community-based, or informal organization"
+ }
+ },
+ {
+ "if": {
+ "and": [
+ "operator:type=private"
+ ]
+ },
+ "then": {
+ "en": "Private"
+ }
+ }
+ ]
+ }
+ ],
+ "hideUnderlayingFeaturesMinPercentage": 0,
+ "icon": {
+ "render": "https://upload.wikimedia.org/wikipedia/commons/8/84/British_Columbia_W-318-L.svg"
+ },
+ "width": {
+ "render": "8"
+ },
+ "iconSize": {
+ "render": "20,20,center"
+ },
+ "color": {
+ "render": "#00f"
+ },
+ "presets": [
+ {
+ "tags": [
+ "amenity=fire_station"
+ ],
+ "title": {
+ "en": "fire station"
+ },
+ "description": {
+ "en": "Add a fire station to the map."
+ }
+ }
+ ],
+ "osmSource": {
+ "overpassTags": {
+ "and": [
+ "amenity=fire_station"
+ ]
+ }
+ }
+ },
+ {
+ "id": "rescuestation",
+ "name": {
+ "en": "Map of rescue stations"
+ },
+ "minzoom": 12,
+ "overpassTags": {
+ "and": [
+ "amenity=rescue_station"
+ ]
+ },
+ "title": {
+ "render": {
+ "en": "Rescue Station"
+ }
+ },
+ "description": {
+ "en": "Map layer to show rescue stations."
+ },
+ "tagRenderings": [],
+ "hideUnderlayingFeaturesMinPercentage": 0,
+ "icon": {
+ "render": "https://upload.wikimedia.org/wikipedia/commons/1/1e/Emojione_1F6A8.svg"
+ },
+ "width": {
+ "render": "8"
+ },
+ "iconSize": {
+ "render": "20,20,center"
+ },
+ "color": {
+ "render": "#00f"
+ },
+ "presets": [
+ {
+ "tags": [
+ "amenity=rescue_station"
+ ],
+ "title": {
+ "en": "rescue station"
+ },
+ "description": {
+ "en": "Add a rescue or emergency service station to the map"
+ }
+ }
+ ],
+ "osmSource": {
+ "overpassTags": {
+ "and": [
+ "amenity=rescue_station"
+ ]
+ }
+ }
+ }
+ ],
+ "roamingRenderings": [
+ {}
+ ],
+ "defaultBackgroundId": "HDM_HOT"
+}
From f7954a05b050a9f4c87856f1330e239f8010331b Mon Sep 17 00:00:00 2001
From: Win Olario
Date: Sun, 4 Apr 2021 09:15:41 +0800
Subject: [PATCH 02/56] add HailHydrant logo
---
.../themes/hailhydrant/hailhydrant-_logo.svg | 53 +++++++++++++++++++
1 file changed, 53 insertions(+)
create mode 100644 assets/themes/hailhydrant/hailhydrant-_logo.svg
diff --git a/assets/themes/hailhydrant/hailhydrant-_logo.svg b/assets/themes/hailhydrant/hailhydrant-_logo.svg
new file mode 100644
index 0000000000..d49148015a
--- /dev/null
+++ b/assets/themes/hailhydrant/hailhydrant-_logo.svg
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
From c20328520333d14ad115cd95011ca1f2a68016d6 Mon Sep 17 00:00:00 2001
From: Win Olario
Date: Sun, 4 Apr 2021 10:30:42 +0800
Subject: [PATCH 03/56] Update hailhydrant.json
Update the the description section.
---
assets/themes/hailhydrant/hailhydrant.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/assets/themes/hailhydrant/hailhydrant.json b/assets/themes/hailhydrant/hailhydrant.json
index 69e1d60e9c..ab846e6f14 100644
--- a/assets/themes/hailhydrant/hailhydrant.json
+++ b/assets/themes/hailhydrant/hailhydrant.json
@@ -7,7 +7,7 @@
"en": "Map to show hydrants, fire and rescue stations, extinguishers"
},
"description": {
- "en": "On this map you can find and update local hydrants, fire & resue stations, and extinguishers to help make the most awesome map of your community!"
+ "en": "On this map you can find and update hydrants, fire stations, rescue stations, and extinguishers in your favorite neighborhoods.\n\nYou can track your precise location (mobile only) and select layers that are relevant for you in the bottom left corner. You can also use this tool to add or edit pins (points of interest) to the map and provide additional details by answering available questions.\n\nAll changes you make will automatically be saved in the global database of OpenStreetMap and can be freely re-used by others."
},
"language": [
"en"
From 0ca71d40fb95b6501634d373aaaff74b7eeb593d Mon Sep 17 00:00:00 2001
From: Win Olario
Date: Sun, 4 Apr 2021 10:31:24 +0800
Subject: [PATCH 04/56] Rename hailhydrant-_logo.svg to hailhydrant_logo.svg
remove the extra dash from the filename
---
.../hailhydrant/{hailhydrant-_logo.svg => hailhydrant_logo.svg} | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename assets/themes/hailhydrant/{hailhydrant-_logo.svg => hailhydrant_logo.svg} (100%)
diff --git a/assets/themes/hailhydrant/hailhydrant-_logo.svg b/assets/themes/hailhydrant/hailhydrant_logo.svg
similarity index 100%
rename from assets/themes/hailhydrant/hailhydrant-_logo.svg
rename to assets/themes/hailhydrant/hailhydrant_logo.svg
From 2640010a7273c042411b4d87cfec81e7f96103e9 Mon Sep 17 00:00:00 2001
From: Win Olario
Date: Sun, 4 Apr 2021 10:38:29 +0800
Subject: [PATCH 05/56] Update hailhydrant.json
Improve some text, and fix typos.
---
assets/themes/hailhydrant/hailhydrant.json | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/assets/themes/hailhydrant/hailhydrant.json b/assets/themes/hailhydrant/hailhydrant.json
index ab846e6f14..53bdef95bf 100644
--- a/assets/themes/hailhydrant/hailhydrant.json
+++ b/assets/themes/hailhydrant/hailhydrant.json
@@ -1,13 +1,13 @@
{
"id": "HailHydrant",
"title": {
- "en": "Hydrants, Fire and Rescue Stations, Extinguishers"
+ "en": "Hydrants, Extinguishers, Fire stations, and Rescue stations."
},
"shortDescription": {
- "en": "Map to show hydrants, fire and rescue stations, extinguishers"
+ "en": "Map to show hydrants, extinguishers, fire stations, and rescue stations."
},
"description": {
- "en": "On this map you can find and update hydrants, fire stations, rescue stations, and extinguishers in your favorite neighborhoods.\n\nYou can track your precise location (mobile only) and select layers that are relevant for you in the bottom left corner. You can also use this tool to add or edit pins (points of interest) to the map and provide additional details by answering available questions.\n\nAll changes you make will automatically be saved in the global database of OpenStreetMap and can be freely re-used by others."
+ "en": "On this map you can find and update hydrants, fire stations, rescue stations, and extinguishers in your favorite neighborhoods. \n\nYou can track your precise location (mobile only) and select layers that are relevant for you in the bottom left corner. You can also use this tool to add or edit pins (points of interest) to the map and provide additional details by answering available questions. \n\nAll changes you make will automatically be saved in the global database of OpenStreetMap and can be freely re-used by others."
},
"language": [
"en"
From 92dcce5f1e2e0d0cb951b857ecc6e54afc558bd8 Mon Sep 17 00:00:00 2001
From: Win Olario
Date: Mon, 5 Apr 2021 11:07:53 +0800
Subject: [PATCH 06/56] Rename hailhydrant_logo.svg to logo.svg
---
assets/themes/hailhydrant/{hailhydrant_logo.svg => logo.svg} | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename assets/themes/hailhydrant/{hailhydrant_logo.svg => logo.svg} (100%)
diff --git a/assets/themes/hailhydrant/hailhydrant_logo.svg b/assets/themes/hailhydrant/logo.svg
similarity index 100%
rename from assets/themes/hailhydrant/hailhydrant_logo.svg
rename to assets/themes/hailhydrant/logo.svg
From 1a5faad247ba45698d176ffbe96ff51d190c97b6 Mon Sep 17 00:00:00 2001
From: Win Olario
Date: Mon, 5 Apr 2021 11:09:15 +0800
Subject: [PATCH 07/56] update reference to logo from repo
---
assets/themes/hailhydrant/hailhydrant.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/assets/themes/hailhydrant/hailhydrant.json b/assets/themes/hailhydrant/hailhydrant.json
index 53bdef95bf..3447cac6bc 100644
--- a/assets/themes/hailhydrant/hailhydrant.json
+++ b/assets/themes/hailhydrant/hailhydrant.json
@@ -13,7 +13,7 @@
"en"
],
"maintainer": "",
- "icon": "https://wiki.openstreetmap.org/w/images/8/8c/Hailhydrant-logo.svg",
+ "icon": "assets/themes/hailhydrant/logo.svg",
"version": "0",
"startLat": 13.67801,
"startLon": 121.6625,
From c737eaa623bde5b5430c7a4e2ef63e72182287a1 Mon Sep 17 00:00:00 2001
From: Win Olario
Date: Mon, 5 Apr 2021 11:17:18 +0800
Subject: [PATCH 08/56] add yellow colour option for hydrant
---
assets/themes/hailhydrant/hailhydrant.json | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/assets/themes/hailhydrant/hailhydrant.json b/assets/themes/hailhydrant/hailhydrant.json
index 3447cac6bc..185c5c5744 100644
--- a/assets/themes/hailhydrant/hailhydrant.json
+++ b/assets/themes/hailhydrant/hailhydrant.json
@@ -52,6 +52,16 @@
"key": "colour"
},
"mappings": [
+ {
+ "if": {
+ "and": [
+ "colour=red"
+ ]
+ },
+ "then": {
+ "en": "The hydrant colour is red"
+ }
+ },
{
"if": {
"and": [
From 85edcea1fd8982053b993c6d382364c754d16b38 Mon Sep 17 00:00:00 2001
From: Win Olario
Date: Sun, 11 Apr 2021 11:10:09 +0800
Subject: [PATCH 09/56] Update hailhydrant.json
Keeping things simple. Removed the Mapillary id, coupling question for the hydrant layer. Improved the text of some question/answers.
Added icons from https://mapcomplete.braindeaddev.com/fire , but I'm not sure what their licenses are.
---
assets/themes/hailhydrant/hailhydrant.json | 140 ++++-----------------
1 file changed, 21 insertions(+), 119 deletions(-)
diff --git a/assets/themes/hailhydrant/hailhydrant.json b/assets/themes/hailhydrant/hailhydrant.json
index 185c5c5744..667d79d429 100644
--- a/assets/themes/hailhydrant/hailhydrant.json
+++ b/assets/themes/hailhydrant/hailhydrant.json
@@ -1,5 +1,5 @@
{
- "id": "HailHydrant",
+ "id": "hailhydrant",
"title": {
"en": "Hydrants, Extinguishers, Fire stations, and Rescue stations."
},
@@ -7,7 +7,7 @@
"en": "Map to show hydrants, extinguishers, fire stations, and rescue stations."
},
"description": {
- "en": "On this map you can find and update hydrants, fire stations, rescue stations, and extinguishers in your favorite neighborhoods. \n\nYou can track your precise location (mobile only) and select layers that are relevant for you in the bottom left corner. You can also use this tool to add or edit pins (points of interest) to the map and provide additional details by answering available questions. \n\nAll changes you make will automatically be saved in the global database of OpenStreetMap and can be freely re-used by others."
+ "en": "On this map you can find and update hydrants, fire stations, rescue stations, and extinguishers in your favorite neighborhoods. \n\nYou can track your precise location (mobile only) and select layers that are relevant for you in the bottom left corner. You can also use this tool to add or edit pins (points of interest) to the map and provide additional details by answering available questions. \n\nAll changes you make will automatically be saved in the global database of OpenStreetMap and can be freely re-used by others."
},
"language": [
"en"
@@ -43,10 +43,10 @@
"tagRenderings": [
{
"question": {
- "en": "What colour is the hydrant?"
+ "en": "What color is the hydrant?"
},
"render": {
- "en": "The hydrant colour is {colour}"
+ "en": "The hydrant color is {colour}"
},
"freeform": {
"key": "colour"
@@ -55,21 +55,21 @@
{
"if": {
"and": [
- "colour=red"
+ "colour=yellow"
]
},
"then": {
- "en": "The hydrant colour is red"
+ "en": "The hydrant color is yellow."
}
},
{
"if": {
"and": [
- "colour=yellow"
+ "colour=red"
]
},
"then": {
- "en": "The hydrant colour is yellow"
+ "en": "The hydrant color is red."
}
}
]
@@ -92,7 +92,7 @@
]
},
"then": {
- "en": " Pillar type."
+ "en": " Pillar type."
}
},
{
@@ -102,7 +102,7 @@
]
},
"then": {
- "en": " Pipe type."
+ "en": " Pipe type."
}
},
{
@@ -112,7 +112,7 @@
]
},
"then": {
- "en": " Wall type."
+ "en": " Wall type."
}
},
{
@@ -122,51 +122,7 @@
]
},
"then": {
- "en": " Underground type."
- }
- }
- ]
- },
- {
- "question": {
- "en": "How many couplings are there?"
- },
- "render": {
- "en": "Couplings: {couplings}"
- },
- "freeform": {
- "key": "couplings",
- "type": "pnat"
- },
- "mappings": [
- {
- "if": {
- "and": [
- "couplings=1"
- ]
- },
- "then": {
- "en": "The hydrant has one (1) coupling."
- }
- },
- {
- "if": {
- "and": [
- "couplings=2"
- ]
- },
- "then": {
- "en": "The hydrant has two (2) couplings."
- }
- },
- {
- "if": {
- "and": [
- "couplings=3"
- ]
- },
- "then": {
- "en": "The hydrant has three (3) coupling."
+ "en": " Underground type."
}
}
]
@@ -189,7 +145,7 @@
]
},
"then": {
- "en": "Hydrant is (fully or partially) working."
+ "en": "The hydrant is (fully or partially) working."
}
},
{
@@ -200,7 +156,7 @@
]
},
"then": {
- "en": "Hydrant is unavailable for use."
+ "en": "The hydrant is unavailable."
}
},
{
@@ -211,64 +167,10 @@
]
},
"then": {
- "en": "Hydrant has been removed."
+ "en": "The hydrant has been removed."
}
}
]
- },
- {
- "question": {
- "en": "Describe the position of the hydrant."
- },
- "render": {
- "en": "Position: {fire_hydrant:position}"
- },
- "mappings": [
- {
- "if": {
- "and": [
- "fire_hydrant:position=sidewalk"
- ]
- },
- "then": {
- "en": "Sidewalk"
- }
- },
- {
- "if": {
- "and": [
- "fire_hydrant:position=lane"
- ]
- },
- "then": {
- "en": "Road-side"
- }
- },
- {
- "if": {
- "and": [
- "fire_hydrant:position=underground"
- ]
- },
- "then": {
- "en": "Underground"
- }
- }
- ],
- "freeform": {
- "key": "fire_hydrant:position"
- }
- },
- {
- "render": {
- "en": "Mapillary: {mapillary}"
- },
- "question": {
- "en": "Do you know the Mapillary photo id?"
- },
- "freeform": {
- "key": "mapillary"
- }
}
],
"hideUnderlayingFeaturesMinPercentage": 0,
@@ -290,10 +192,10 @@
"emergency=fire_hydrant"
],
"title": {
- "en": "fire hydrant"
+ "en": "Fire hydrant"
},
"description": {
- "en": "Add a new fire hydant to the map."
+ "en": "Add a new fire hydrant to the map."
}
}
],
@@ -341,7 +243,7 @@
]
},
"then": {
- "en": "Indoor"
+ "en": "Found indoors."
}
},
{
@@ -351,7 +253,7 @@
]
},
"then": {
- "en": "Outdoor"
+ "en": "Found outdoors."
}
}
],
@@ -379,7 +281,7 @@
"emergency=fire_extinguisher"
],
"title": {
- "en": "fire extinguisher"
+ "en": "Fire extinguisher"
},
"description": {
"en": "Add a fire extinguisher to the map"
@@ -428,7 +330,7 @@
},
{
"question": {
- "en": "In what place is the station located? (e.g. name of neighbourhood, villlage, or town)"
+ "en": "In what place is the station located? (e.g. name of neighborhood, villlage, or town)"
},
"freeform": {
"key": "addr:place"
From 5ace16d2bcb9d983f215a5c6318a42e6097030a5 Mon Sep 17 00:00:00 2001
From: Win Olario
Date: Sun, 11 Apr 2021 16:12:56 +0800
Subject: [PATCH 10/56] adding new cc0-licensed icons
---
.../themes/hailhydrant/blue-signal-light.svg | 115 +++++
assets/themes/hailhydrant/extinguisher.svg | 243 +++++++++++
assets/themes/hailhydrant/fire_brigade.svg | 408 ++++++++++++++++++
assets/themes/hailhydrant/license_info.json | 34 ++
.../themes/hailhydrant/yellowfirehydrant.svg | 5 +
5 files changed, 805 insertions(+)
create mode 100644 assets/themes/hailhydrant/blue-signal-light.svg
create mode 100644 assets/themes/hailhydrant/extinguisher.svg
create mode 100644 assets/themes/hailhydrant/fire_brigade.svg
create mode 100644 assets/themes/hailhydrant/license_info.json
create mode 100644 assets/themes/hailhydrant/yellowfirehydrant.svg
diff --git a/assets/themes/hailhydrant/blue-signal-light.svg b/assets/themes/hailhydrant/blue-signal-light.svg
new file mode 100644
index 0000000000..bcd697851e
--- /dev/null
+++ b/assets/themes/hailhydrant/blue-signal-light.svg
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+ Openclipart
+
+
+ Blue signal light
+ 2013-05-10T09:38:15
+
+ https://openclipart.org/detail/177928/blue-signal-light-by-qubodup-177928
+
+
+ qubodup
+
+
+
+
+ alarm
+ blue
+ emergency
+ fire brigade
+ fire truck
+ first aid
+ light
+ police
+ signal
+ siren
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/assets/themes/hailhydrant/extinguisher.svg b/assets/themes/hailhydrant/extinguisher.svg
new file mode 100644
index 0000000000..79f7b2e4cc
--- /dev/null
+++ b/assets/themes/hailhydrant/extinguisher.svg
@@ -0,0 +1,243 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/assets/themes/hailhydrant/fire_brigade.svg b/assets/themes/hailhydrant/fire_brigade.svg
new file mode 100644
index 0000000000..9fa4bee6f2
--- /dev/null
+++ b/assets/themes/hailhydrant/fire_brigade.svg
@@ -0,0 +1,408 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fire Brigade
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fire Brig ade
+
+
\ No newline at end of file
diff --git a/assets/themes/hailhydrant/license_info.json b/assets/themes/hailhydrant/license_info.json
new file mode 100644
index 0000000000..f2c89c3fa5
--- /dev/null
+++ b/assets/themes/hailhydrant/license_info.json
@@ -0,0 +1,34 @@
+[
+ {
+ "authors": ["https://openclipart.org/artist/rones"],
+ "path": "extinguisher.svg",
+ "license": "CC0",
+ "sources": [
+ "https://openclipart.org/detail/315876/fire-extinguisher"
+ ]
+ },
+ {
+ "authors": ["https://openclipart.org/artist/j4p4n"],
+ "path": "yellowfirehydrant.svg",
+ "license": "CC0",
+ "sources": [
+ "https://openclipart.org/detail/326295/yellow-fire-hydrant"
+ ]
+ },
+ {
+ "authors": ["https://openclipart.org/artist/TVLuke"],
+ "path": "fire_brigade.svg",
+ "license": "CC0",
+ "sources": [
+ "https://openclipart.org/detail/318142/fire-brigade"
+ ]
+ },
+ {
+ "authors": ["https://openclipart.org/artist/qubodup"],
+ "path": "blue_signal_light.svg",
+ "license": "CC0",
+ "sources": [
+ "https://openclipart.org/detail/177928/blue-signal-light"
+ ]
+ }
+]
diff --git a/assets/themes/hailhydrant/yellowfirehydrant.svg b/assets/themes/hailhydrant/yellowfirehydrant.svg
new file mode 100644
index 0000000000..2dd20a7976
--- /dev/null
+++ b/assets/themes/hailhydrant/yellowfirehydrant.svg
@@ -0,0 +1,5 @@
+
+
+image/svg+xml j4p4n
\ No newline at end of file
From 36a0bfff2dae441cc465bcb3ce30cc3b5899331f Mon Sep 17 00:00:00 2001
From: Win Olario
Date: Sun, 11 Apr 2021 16:18:47 +0800
Subject: [PATCH 11/56] replace fire_brigade.svg with simpler version
---
assets/themes/hailhydrant/fire_brigade.svg | 1484 ++++++++++++++++----
1 file changed, 1206 insertions(+), 278 deletions(-)
diff --git a/assets/themes/hailhydrant/fire_brigade.svg b/assets/themes/hailhydrant/fire_brigade.svg
index 9fa4bee6f2..445579feda 100644
--- a/assets/themes/hailhydrant/fire_brigade.svg
+++ b/assets/themes/hailhydrant/fire_brigade.svg
@@ -1,408 +1,1336 @@
-
-
-
-
+image/svg+xml
+
+
+
+
+
+
+
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
+
+
-
-
-
-
-
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
+
-
-
+
+
-
-
-
+
+
+
-
+
-
-
-
+
+
+
-
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
+
+
-
+
-
-
-
+
+
+
-
-
+
+
-
+
-
-
-
+
+
+
-
-
+
+
-
+
-
-
-
+
+
+
-
-
+
+
-
+
-
-
-
+
+
+
-
-
+
+
-
+
-
-
-
+
+
+
-
-
+
+
-
+
-
-
-
+
+
+
-
-
+
+
-
+
-
-
-
+
+
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
- Fire Brigade
+
+ Fire Brigade
+
-
-
-
-
-
+
+
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
- Fire Brig ade
-
+
+
\ No newline at end of file
From 0dbd0b233329e9a05e8c16cddd09c72018b6c7ae Mon Sep 17 00:00:00 2001
From: Win Olario
Date: Sun, 11 Apr 2021 16:20:20 +0800
Subject: [PATCH 12/56] replace fire_brigade.svg without clouds
---
assets/themes/hailhydrant/fire_brigade.svg | 19 +++++--------------
1 file changed, 5 insertions(+), 14 deletions(-)
diff --git a/assets/themes/hailhydrant/fire_brigade.svg b/assets/themes/hailhydrant/fire_brigade.svg
index 445579feda..ad6e4fda89 100644
--- a/assets/themes/hailhydrant/fire_brigade.svg
+++ b/assets/themes/hailhydrant/fire_brigade.svg
@@ -33,9 +33,9 @@
inkscape:window-height="480"
id="namedview549"
showgrid="false"
- inkscape:zoom="0.23536982"
- inkscape:cx="649.16539"
- inkscape:cy="263.51886"
+ inkscape:zoom="0.11768491"
+ inkscape:cx="379.96667"
+ inkscape:cy="1109.7561"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="0"
@@ -56,17 +56,7 @@
style="fill:#c1c1c3"
id="rect20" />
-
-
-
-
+
@@ -1062,6 +1052,7 @@
style="font-family:'Copperplate';font-size:50px;fill:rgb(229,242,13);"
id="text415">Fire Brigade
+
From 33d147413af0a8f37513d903c0558718a8217c26 Mon Sep 17 00:00:00 2001
From: Win Olario
Date: Sun, 11 Apr 2021 16:30:51 +0800
Subject: [PATCH 13/56] update license_info.json, add new icons
---
assets/themes/hailhydrant/Fire-truck.svg | 303 ++++++++++++++++++
assets/themes/hailhydrant/fire-station-15.svg | 6 +
assets/themes/hailhydrant/license_info.json | 18 +-
3 files changed, 326 insertions(+), 1 deletion(-)
create mode 100644 assets/themes/hailhydrant/Fire-truck.svg
create mode 100644 assets/themes/hailhydrant/fire-station-15.svg
diff --git a/assets/themes/hailhydrant/Fire-truck.svg b/assets/themes/hailhydrant/Fire-truck.svg
new file mode 100644
index 0000000000..767960f100
--- /dev/null
+++ b/assets/themes/hailhydrant/Fire-truck.svg
@@ -0,0 +1,303 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+ Openclipart
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/assets/themes/hailhydrant/fire-station-15.svg b/assets/themes/hailhydrant/fire-station-15.svg
new file mode 100644
index 0000000000..14b0c9b4f9
--- /dev/null
+++ b/assets/themes/hailhydrant/fire-station-15.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/assets/themes/hailhydrant/license_info.json b/assets/themes/hailhydrant/license_info.json
index f2c89c3fa5..28d5111dd4 100644
--- a/assets/themes/hailhydrant/license_info.json
+++ b/assets/themes/hailhydrant/license_info.json
@@ -25,10 +25,26 @@
},
{
"authors": ["https://openclipart.org/artist/qubodup"],
- "path": "blue_signal_light.svg",
+ "path": "blue-signal-light.svg",
"license": "CC0",
"sources": [
"https://openclipart.org/detail/177928/blue-signal-light"
]
+ },
+ {
+ "authors": ["https://www.mapbox.com/maki-icons/"],
+ "path": "fire-station-15.svg",
+ "license": "CC0",
+ "sources": [
+ "https://openclipart.org/detail/260728/firestation15"
+ ]
+ },
+ {
+ "authors": ["https://openclipart.org/artist/rdevries"],
+ "path": "Fire-truck.svg",
+ "license": "CC0",
+ "sources": [
+ "https://openclipart.org/detail/190874/fire-truck"
+ ]
}
]
From de1fcd169bfad21eaa19b84ca8fea07d307540de Mon Sep 17 00:00:00 2001
From: Win Olario
Date: Sun, 11 Apr 2021 19:48:12 +0800
Subject: [PATCH 14/56] Delete yellowfirehydrant.svg
---
assets/themes/hailhydrant/yellowfirehydrant.svg | 5 -----
1 file changed, 5 deletions(-)
delete mode 100644 assets/themes/hailhydrant/yellowfirehydrant.svg
diff --git a/assets/themes/hailhydrant/yellowfirehydrant.svg b/assets/themes/hailhydrant/yellowfirehydrant.svg
deleted file mode 100644
index 2dd20a7976..0000000000
--- a/assets/themes/hailhydrant/yellowfirehydrant.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-image/svg+xml j4p4n
\ No newline at end of file
From 3a2dcde4ecf6a41af030be1f58b2815913738243 Mon Sep 17 00:00:00 2001
From: Win Olario
Date: Sun, 11 Apr 2021 19:48:46 +0800
Subject: [PATCH 15/56] update license_info.json, add hydrant.svg
---
assets/themes/hailhydrant/hydrant.svg | 107 ++++++++++++++++++++
assets/themes/hailhydrant/license_info.json | 8 +-
2 files changed, 111 insertions(+), 4 deletions(-)
create mode 100644 assets/themes/hailhydrant/hydrant.svg
diff --git a/assets/themes/hailhydrant/hydrant.svg b/assets/themes/hailhydrant/hydrant.svg
new file mode 100644
index 0000000000..0dbda22404
--- /dev/null
+++ b/assets/themes/hailhydrant/hydrant.svg
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/assets/themes/hailhydrant/license_info.json b/assets/themes/hailhydrant/license_info.json
index 28d5111dd4..eec8d11b7a 100644
--- a/assets/themes/hailhydrant/license_info.json
+++ b/assets/themes/hailhydrant/license_info.json
@@ -8,11 +8,11 @@
]
},
{
- "authors": ["https://openclipart.org/artist/j4p4n"],
- "path": "yellowfirehydrant.svg",
- "license": "CC0",
+ "authors": ["http://jaanos.deviantart.com/"],
+ "path": "hydrant.svg",
+ "license": "GPL",
"sources": [
- "https://openclipart.org/detail/326295/yellow-fire-hydrant"
+ "https://commons.wikimedia.org/wiki/File:Hydrant.svg"
]
},
{
From 1c902ca9c57cc58eecd42f043603d6d5e6a83c57 Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Sun, 11 Apr 2021 14:11:02 +0200
Subject: [PATCH 16/56] Wrote a script to autofix issues with themes, applied
this on the hailhydrant theme
---
.../hailhydrant/British_Columbia_W-318-L.svg | 35 ++
assets/themes/hailhydrant/Emojione_1F6A8.svg | 1 +
assets/themes/hailhydrant/Hydrant_02.svg | 526 ++++++++++++++++++
assets/themes/hailhydrant/MUTCD_RS-090.svg | 90 +++
assets/themes/hailhydrant/hailhydrant.json | 67 +--
assets/themes/hailhydrant/hydrant_pillar.svg | 5 +
.../hailhydrant/hydrant_underground.svg | 5 +
assets/themes/hailhydrant/hydrant_unknown.svg | 5 +
assets/themes/hailhydrant/license_info.json | 92 ++-
generated.license_info.json | 58 ++
package.json | 2 +-
scripts/fixTheme.ts | 63 +++
scripts/generateLayerOverview.ts | 7 +-
scripts/generateLicenseInfo.ts | 7 +-
14 files changed, 910 insertions(+), 53 deletions(-)
create mode 100644 assets/themes/hailhydrant/British_Columbia_W-318-L.svg
create mode 100644 assets/themes/hailhydrant/Emojione_1F6A8.svg
create mode 100644 assets/themes/hailhydrant/Hydrant_02.svg
create mode 100644 assets/themes/hailhydrant/MUTCD_RS-090.svg
create mode 100644 assets/themes/hailhydrant/hydrant_pillar.svg
create mode 100644 assets/themes/hailhydrant/hydrant_underground.svg
create mode 100644 assets/themes/hailhydrant/hydrant_unknown.svg
create mode 100644 generated.license_info.json
create mode 100644 scripts/fixTheme.ts
diff --git a/assets/themes/hailhydrant/British_Columbia_W-318-L.svg b/assets/themes/hailhydrant/British_Columbia_W-318-L.svg
new file mode 100644
index 0000000000..11beaf4edd
--- /dev/null
+++ b/assets/themes/hailhydrant/British_Columbia_W-318-L.svg
@@ -0,0 +1,35 @@
+
+image/svg+xml
+
+
+
+
+
\ No newline at end of file
diff --git a/assets/themes/hailhydrant/Emojione_1F6A8.svg b/assets/themes/hailhydrant/Emojione_1F6A8.svg
new file mode 100644
index 0000000000..2a00519110
--- /dev/null
+++ b/assets/themes/hailhydrant/Emojione_1F6A8.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/themes/hailhydrant/Hydrant_02.svg b/assets/themes/hailhydrant/Hydrant_02.svg
new file mode 100644
index 0000000000..257691fe42
--- /dev/null
+++ b/assets/themes/hailhydrant/Hydrant_02.svg
@@ -0,0 +1,526 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/themes/hailhydrant/MUTCD_RS-090.svg b/assets/themes/hailhydrant/MUTCD_RS-090.svg
new file mode 100644
index 0000000000..21f349cb4e
--- /dev/null
+++ b/assets/themes/hailhydrant/MUTCD_RS-090.svg
@@ -0,0 +1,90 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/themes/hailhydrant/hailhydrant.json b/assets/themes/hailhydrant/hailhydrant.json
index 667d79d429..c4c0e7e335 100644
--- a/assets/themes/hailhydrant/hailhydrant.json
+++ b/assets/themes/hailhydrant/hailhydrant.json
@@ -27,11 +27,6 @@
"en": "Map of hydrants"
},
"minzoom": 14,
- "overpassTags": {
- "and": [
- "emergency=fire_hydrant"
- ]
- },
"title": {
"render": {
"en": "Hydrant"
@@ -92,7 +87,7 @@
]
},
"then": {
- "en": " Pillar type."
+ "en": " Pillar type."
}
},
{
@@ -102,7 +97,7 @@
]
},
"then": {
- "en": " Pipe type."
+ "en": " Pipe type."
}
},
{
@@ -112,7 +107,7 @@
]
},
"then": {
- "en": " Wall type."
+ "en": " Wall type."
}
},
{
@@ -122,7 +117,7 @@
]
},
"then": {
- "en": " Underground type."
+ "en": " Underground type."
}
}
]
@@ -175,7 +170,7 @@
],
"hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
- "render": "https://upload.wikimedia.org/wikipedia/commons/6/66/Hydrant_02.svg"
+ "render": "Hydrant_02.svg"
},
"width": {
"render": "8"
@@ -206,6 +201,13 @@
"emergency=fire_hydrant"
]
}
+ },
+ "source": {
+ "osmTags": {
+ "and": [
+ "emergency=fire_hydrant"
+ ]
+ }
}
},
{
@@ -214,11 +216,6 @@
"en": "Map of fire extinguishers."
},
"minzoom": 14,
- "overpassTags": {
- "and": [
- "emergency=fire_extinguisher"
- ]
- },
"title": {
"render": {
"en": "Extinguishers"
@@ -264,7 +261,7 @@
],
"hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
- "render": "https://upload.wikimedia.org/wikipedia/commons/e/e8/MUTCD_RS-090.svg"
+ "render": "MUTCD_RS-090.svg"
},
"width": {
"render": "8"
@@ -295,6 +292,13 @@
"emergency=fire_extinguisher"
]
}
+ },
+ "source": {
+ "osmTags": {
+ "and": [
+ "emergency=fire_extinguisher"
+ ]
+ }
}
},
{
@@ -303,11 +307,6 @@
"en": "Map of fire stations"
},
"minzoom": 12,
- "overpassTags": {
- "and": [
- "amenity=fire_station"
- ]
- },
"title": {
"render": {
"en": "Fire Station"
@@ -419,7 +418,7 @@
],
"hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
- "render": "https://upload.wikimedia.org/wikipedia/commons/8/84/British_Columbia_W-318-L.svg"
+ "render": "British_Columbia_W-318-L.svg"
},
"width": {
"render": "8"
@@ -449,6 +448,13 @@
"amenity=fire_station"
]
}
+ },
+ "source": {
+ "osmTags": {
+ "and": [
+ "amenity=fire_station"
+ ]
+ }
}
},
{
@@ -457,11 +463,6 @@
"en": "Map of rescue stations"
},
"minzoom": 12,
- "overpassTags": {
- "and": [
- "amenity=rescue_station"
- ]
- },
"title": {
"render": {
"en": "Rescue Station"
@@ -473,7 +474,7 @@
"tagRenderings": [],
"hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
- "render": "https://upload.wikimedia.org/wikipedia/commons/1/1e/Emojione_1F6A8.svg"
+ "render": "Emojione_1F6A8.svg"
},
"width": {
"render": "8"
@@ -503,11 +504,15 @@
"amenity=rescue_station"
]
}
+ },
+ "source": {
+ "osmTags": {
+ "and": [
+ "amenity=rescue_station"
+ ]
+ }
}
}
],
- "roamingRenderings": [
- {}
- ],
"defaultBackgroundId": "HDM_HOT"
}
diff --git a/assets/themes/hailhydrant/hydrant_pillar.svg b/assets/themes/hailhydrant/hydrant_pillar.svg
new file mode 100644
index 0000000000..27ef66398e
--- /dev/null
+++ b/assets/themes/hailhydrant/hydrant_pillar.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/assets/themes/hailhydrant/hydrant_underground.svg b/assets/themes/hailhydrant/hydrant_underground.svg
new file mode 100644
index 0000000000..f7c0f3d39d
--- /dev/null
+++ b/assets/themes/hailhydrant/hydrant_underground.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/assets/themes/hailhydrant/hydrant_unknown.svg b/assets/themes/hailhydrant/hydrant_unknown.svg
new file mode 100644
index 0000000000..10b31cd870
--- /dev/null
+++ b/assets/themes/hailhydrant/hydrant_unknown.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/assets/themes/hailhydrant/license_info.json b/assets/themes/hailhydrant/license_info.json
index 28d5111dd4..e64323895d 100644
--- a/assets/themes/hailhydrant/license_info.json
+++ b/assets/themes/hailhydrant/license_info.json
@@ -1,50 +1,118 @@
[
{
- "authors": ["https://openclipart.org/artist/rones"],
+ "authors": [
+ "https://openclipart.org/artist/rones"
+ ],
"path": "extinguisher.svg",
"license": "CC0",
"sources": [
"https://openclipart.org/detail/315876/fire-extinguisher"
]
},
- {
- "authors": ["https://openclipart.org/artist/j4p4n"],
+ {
+ "authors": [
+ "https://openclipart.org/artist/j4p4n"
+ ],
"path": "yellowfirehydrant.svg",
"license": "CC0",
"sources": [
"https://openclipart.org/detail/326295/yellow-fire-hydrant"
]
},
- {
- "authors": ["https://openclipart.org/artist/TVLuke"],
+ {
+ "authors": [
+ "https://openclipart.org/artist/TVLuke"
+ ],
"path": "fire_brigade.svg",
"license": "CC0",
"sources": [
"https://openclipart.org/detail/318142/fire-brigade"
]
},
- {
- "authors": ["https://openclipart.org/artist/qubodup"],
+ {
+ "authors": [
+ "https://openclipart.org/artist/qubodup"
+ ],
"path": "blue-signal-light.svg",
"license": "CC0",
"sources": [
"https://openclipart.org/detail/177928/blue-signal-light"
]
},
- {
- "authors": ["https://www.mapbox.com/maki-icons/"],
+ {
+ "authors": [
+ "https://www.mapbox.com/maki-icons/"
+ ],
"path": "fire-station-15.svg",
"license": "CC0",
"sources": [
"https://openclipart.org/detail/260728/firestation15"
]
},
- {
- "authors": ["https://openclipart.org/artist/rdevries"],
+ {
+ "authors": [
+ "https://openclipart.org/artist/rdevries"
+ ],
"path": "Fire-truck.svg",
"license": "CC0",
"sources": [
"https://openclipart.org/detail/190874/fire-truck"
]
+ },
+ {
+ "path": "hydrant_pillar.svg",
+ "license": "",
+ "authors": [],
+ "sources": [
+ "https://mapcomplete.braindeaddev.com/assets/layers/fire/hydrant_pillar.svg"
+ ]
+ },
+ {
+ "path": "hydrant_unknown.svg",
+ "license": "",
+ "authors": [],
+ "sources": [
+ "https://mapcomplete.braindeaddev.com/assets/layers/fire/hydrant_unknown.svg"
+ ]
+ },
+ {
+ "path": "hydrant_underground.svg",
+ "license": "",
+ "authors": [],
+ "sources": [
+ "https://mapcomplete.braindeaddev.com/assets/layers/fire/hydrant_underground.svg"
+ ]
+ },
+ {
+ "path": "Hydrant_02.svg",
+ "license": "",
+ "authors": [],
+ "sources": [
+ "https://upload.wikimedia.org/wikipedia/commons/6/66/Hydrant_02.svg"
+ ]
+ },
+ {
+ "path": "MUTCD_RS-090.svg",
+ "license": "",
+ "authors": [],
+ "sources": [
+ "https://upload.wikimedia.org/wikipedia/commons/e/e8/MUTCD_RS-090.svg"
+ ]
+ },
+ {
+ "path": "British_Columbia_W-318-L.svg",
+ "license": "",
+ "authors": [],
+ "sources": [
+ "https://upload.wikimedia.org/wikipedia/commons/8/84/British_Columbia_W-318-L.svg"
+ ]
+ },
+ {
+ "path": "Emojione_1F6A8.svg",
+ "license": "",
+ "authors": [],
+ "sources": [
+ "https://upload.wikimedia.org/wikipedia/commons/1/1e/Emojione_1F6A8.svg"
+ ]
}
-]
+]
\ No newline at end of file
diff --git a/generated.license_info.json b/generated.license_info.json
new file mode 100644
index 0000000000..83e959fa10
--- /dev/null
+++ b/generated.license_info.json
@@ -0,0 +1,58 @@
+[
+ {
+ "path": "hydrant_pillar.svg",
+ "license": "",
+ "authors": [],
+ "sources": [
+ "https://mapcomplete.braindeaddev.com/assets/layers/fire/hydrant_pillar.svg"
+ ]
+ },
+ {
+ "path": "hydrant_unknown.svg",
+ "license": "",
+ "authors": [],
+ "sources": [
+ "https://mapcomplete.braindeaddev.com/assets/layers/fire/hydrant_unknown.svg"
+ ]
+ },
+ {
+ "path": "hydrant_underground.svg",
+ "license": "",
+ "authors": [],
+ "sources": [
+ "https://mapcomplete.braindeaddev.com/assets/layers/fire/hydrant_underground.svg"
+ ]
+ },
+ {
+ "path": "Hydrant_02.svg",
+ "license": "",
+ "authors": [],
+ "sources": [
+ "https://upload.wikimedia.org/wikipedia/commons/6/66/Hydrant_02.svg"
+ ]
+ },
+ {
+ "path": "MUTCD_RS-090.svg",
+ "license": "",
+ "authors": [],
+ "sources": [
+ "https://upload.wikimedia.org/wikipedia/commons/e/e8/MUTCD_RS-090.svg"
+ ]
+ },
+ {
+ "path": "British_Columbia_W-318-L.svg",
+ "license": "",
+ "authors": [],
+ "sources": [
+ "https://upload.wikimedia.org/wikipedia/commons/8/84/British_Columbia_W-318-L.svg"
+ ]
+ },
+ {
+ "path": "Emojione_1F6A8.svg",
+ "license": "",
+ "authors": [],
+ "sources": [
+ "https://upload.wikimedia.org/wikipedia/commons/1/1e/Emojione_1F6A8.svg"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/package.json b/package.json
index cc36ca8428..fc033d2bd7 100644
--- a/package.json
+++ b/package.json
@@ -8,7 +8,7 @@
"main": "index.js",
"scripts": {
"increase-memory": "export NODE_OPTIONS=--max_old_space_size=4096",
- "start": "ts-node scripts/generateLayerOverview.ts && npm run increase-memory && parcel *.html UI/** Logic/** assets/** assets/**/** assets/**/**/** vendor/* vendor/*/*",
+ "start": "ts-node scripts/generateLayerOverview.ts --no-fail && npm run increase-memory && parcel *.html UI/** Logic/** assets/** assets/**/** assets/**/**/** vendor/* vendor/*/*",
"test": "ts-node test/Tag.spec.ts && ts-node test/TagQuestion.spec.ts && ts-node test/ImageSearcher.spec.ts && ts-node test/ImageAttribution.spec.ts",
"generate:editor-layer-index": "cd assets/ && wget https://osmlab.github.io/editor-layer-index/imagery.geojson --output-document=editor-layer-index.json",
"generate:images": "ts-node scripts/generateIncludedImages.ts",
diff --git a/scripts/fixTheme.ts b/scripts/fixTheme.ts
new file mode 100644
index 0000000000..80de8a73b1
--- /dev/null
+++ b/scripts/fixTheme.ts
@@ -0,0 +1,63 @@
+
+/*
+ * This script attempt to automatically fix some basic issues when a theme from the custom generator is loaded
+ */
+import {Utils} from "../Utils"
+Utils.runningFromConsole = true;
+import {readFileSync, writeFileSync} from "fs";
+import {LayoutConfigJson} from "../Customizations/JSON/LayoutConfigJson";
+import {Layer} from "leaflet";
+import LayerConfig from "../Customizations/JSON/LayerConfig";
+import SmallLicense from "../Models/smallLicense";
+
+if(process.argv.length == 2){
+ console.log("USAGE: ts-node scripts/fixTheme ")
+ throw "No path specified"
+}
+
+const path = process.argv[2]
+console.log("Fixing up ", path)
+
+const themeConfigJson : LayoutConfigJson = JSON.parse(readFileSync(path, "UTF8"))
+
+const linuxHints = []
+const licenses : SmallLicense[] = []
+
+const replacements: {source: string, destination: string}[] = []
+
+for (const layerConfigJson of themeConfigJson.layers) {
+ if(typeof (layerConfigJson) === "string"){
+ continue;
+ }
+ if(layerConfigJson["overpassTags"] !== undefined){
+ const tags = layerConfigJson["overpassTags"];
+ layerConfigJson["overpassTags"] = undefined;
+ layerConfigJson["source"] = { osmTags : tags}
+ }
+ // @ts-ignore
+ const layerConfig = new LayerConfig(layerConfigJson, true)
+ const images : string[] = Array.from(layerConfig.ExtractImages())
+ const remoteImages = images.filter(img => img.startsWith("http"))
+ for (const remoteImage of remoteImages) {
+ linuxHints.push("wget " + remoteImage)
+ const imgPath = remoteImage.substring(remoteImage.lastIndexOf("/") + 1)
+ licenses.push({
+ path: imgPath,
+ license: "",
+ authors: [],
+ sources: [remoteImage]
+ })
+ replacements.push({source: remoteImage, destination: imgPath})
+ }
+}
+
+let fixedThemeJson = JSON.stringify(themeConfigJson, null , " ")
+for (const replacement of replacements) {
+ fixedThemeJson = fixedThemeJson.replace(new RegExp(replacement.source, "g"), replacement.destination)
+}
+
+const dir = path.substring(0, path.lastIndexOf("/"))
+writeFileSync(dir + "/generated.license_info.json", JSON.stringify(licenses, null, " "))
+writeFileSync(dir + "/fix_script_"+path.replace(/\//g,"_")+".sh", linuxHints.join("\n"))
+writeFileSync(path+".autofixed.json", fixedThemeJson)
+
\ No newline at end of file
diff --git a/scripts/generateLayerOverview.ts b/scripts/generateLayerOverview.ts
index 64432662f4..77d26c2ba0 100644
--- a/scripts/generateLayerOverview.ts
+++ b/scripts/generateLayerOverview.ts
@@ -51,8 +51,6 @@ for (const i in licenses) {
}
const knownPaths = new Set(licensePaths)
-const linuxHints = []
-
function validateLayer(layerJson: LayerConfigJson, context?: string): string[] {
let errorCount = [];
if (layerJson["overpassTags"] !== undefined) {
@@ -65,9 +63,7 @@ function validateLayer(layerJson: LayerConfigJson, context?: string): string[] {
for (const remoteImage of remoteImages) {
errorCount.push("Found a remote image: " + remoteImage + " in layer " + layer.id + ", please download it.")
const path = remoteImage.substring(remoteImage.lastIndexOf("/") + 1)
- linuxHints.push("wget " + remoteImage)
- linuxHints.push(`echo '{"path":"${path}", "license": "", "authors": [ " ${path}.license_info.json`)
- }
+ }
for (const image of images) {
if (!knownPaths.has(image)) {
const ctx = context === undefined ? "" : ` in a layer defined in the theme ${context}`
@@ -129,7 +125,6 @@ if (layerErrorCount.length + themeErrorCount.length == 0) {
console.log(errors)
const msg = (`Found ${layerErrorCount.length} errors in the layers; ${themeErrorCount.length} errors in the themes`)
console.log(msg)
- console.log(linuxHints.join("\n"))
if (process.argv.indexOf("--report") >= 0) {
console.log("Writing report!")
writeFileSync("layer_report.txt", errors)
diff --git a/scripts/generateLicenseInfo.ts b/scripts/generateLicenseInfo.ts
index 05a00f7532..f7c0723a8e 100644
--- a/scripts/generateLicenseInfo.ts
+++ b/scripts/generateLicenseInfo.ts
@@ -193,17 +193,18 @@ writeFileSync("./assets/generated/license_info.json", JSON.stringify(licenseInfo
const artwork = contents.filter(pth => pth.match(/(.svg|.png|.jpg)$/i) != null)
const missingLicenses = missingLicenseInfos(licenseInfos, artwork)
-
+const invalidLicenses = licenseInfos.filter(l => (l.license ?? "") === "").map(l => `License for artwork ${l.path} is empty string or undefined`)
if (process.argv.indexOf("--prompt") >= 0 || process.argv.indexOf("--query") >= 0) {
queryMissingLicenses(missingLicenses)
}
if (missingLicenses.length > 0) {
- const msg = `There are ${missingLicenses.length} licenses missing.`
+ const msg = `There are ${missingLicenses.length} licenses missing and ${invalidLicenses.length} invalid licenses.`
+ console.log( missingLicenses.concat(invalidLicenses).join("\n"))
console.error(msg)
if (process.argv.indexOf("--report") >= 0) {
console.log("Writing report!")
- writeFileSync("missing_licenses.txt", missingLicenses.join("\n"))
+ writeFileSync("missing_licenses.txt", missingLicenses.concat(invalidLicenses).join("\n"))
}
if (process.argv.indexOf("--no-fail") < 0) {
throw msg
From 972db78562355f571e5ceac8b7d84de769a7e262 Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Sun, 11 Apr 2021 14:15:18 +0200
Subject: [PATCH 17/56] Small clarification
---
scripts/fixTheme.ts | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/scripts/fixTheme.ts b/scripts/fixTheme.ts
index 80de8a73b1..2cc563f170 100644
--- a/scripts/fixTheme.ts
+++ b/scripts/fixTheme.ts
@@ -57,7 +57,13 @@ for (const replacement of replacements) {
}
const dir = path.substring(0, path.lastIndexOf("/"))
+const fixScriptPath = dir + "/fix_script_"+path.replace(/\//g,"_")+".sh"
writeFileSync(dir + "/generated.license_info.json", JSON.stringify(licenses, null, " "))
-writeFileSync(dir + "/fix_script_"+path.replace(/\//g,"_")+".sh", linuxHints.join("\n"))
+writeFileSync(fixScriptPath, linuxHints.join("\n"))
writeFileSync(path+".autofixed.json", fixedThemeJson)
-
\ No newline at end of file
+
+console.log(`IMPORTANT:
+ 1) run ${fixScriptPath}
+ 2) Copy generated.license_info.json over into license_info.json and add the missing attributions and authors
+ 3) Verify ${path}.autofixed.json as theme, and rename it to ${path}
+ 4) Delete the fix script and other unneeded files`)
\ No newline at end of file
From 986eeac65892b7aba3abd92e1984cd0fb5357d29 Mon Sep 17 00:00:00 2001
From: Win Olario
Date: Sun, 11 Apr 2021 21:52:42 +0800
Subject: [PATCH 18/56] Update hailhydrant.json
Update layer icons, using more consistent themes.
---
assets/themes/hailhydrant/hailhydrant.json | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/assets/themes/hailhydrant/hailhydrant.json b/assets/themes/hailhydrant/hailhydrant.json
index 667d79d429..efd198bfa5 100644
--- a/assets/themes/hailhydrant/hailhydrant.json
+++ b/assets/themes/hailhydrant/hailhydrant.json
@@ -92,7 +92,7 @@
]
},
"then": {
- "en": " Pillar type."
+ "en": " Pillar type."
}
},
{
@@ -102,7 +102,7 @@
]
},
"then": {
- "en": " Pipe type."
+ "en": " Pipe type."
}
},
{
@@ -112,7 +112,7 @@
]
},
"then": {
- "en": " Wall type."
+ "en": " Wall type."
}
},
{
@@ -122,7 +122,7 @@
]
},
"then": {
- "en": " Underground type."
+ "en": " Underground type."
}
}
]
@@ -175,7 +175,7 @@
],
"hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
- "render": "https://upload.wikimedia.org/wikipedia/commons/6/66/Hydrant_02.svg"
+ "render": "https://raw.githubusercontent.com/mapamore/MapComplete/master/assets/themes/hailhydrant/hydrant.svg"
},
"width": {
"render": "8"
@@ -264,7 +264,7 @@
],
"hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
- "render": "https://upload.wikimedia.org/wikipedia/commons/e/e8/MUTCD_RS-090.svg"
+ "render": "https://upload.wikimedia.org/wikipedia/commons/9/9b/Twemoji12_1f9ef.svg"
},
"width": {
"render": "8"
@@ -419,7 +419,7 @@
],
"hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
- "render": "https://upload.wikimedia.org/wikipedia/commons/8/84/British_Columbia_W-318-L.svg"
+ "render": "https://upload.wikimedia.org/wikipedia/commons/1/19/Twemoji12_1f692.svg"
},
"width": {
"render": "8"
@@ -473,7 +473,7 @@
"tagRenderings": [],
"hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
- "render": "https://upload.wikimedia.org/wikipedia/commons/1/1e/Emojione_1F6A8.svg"
+ "render": "https://upload.wikimedia.org/wikipedia/commons/e/eb/Twemoji12_26d1.svg"
},
"width": {
"render": "8"
From bda4c413644209d26cd4ee0b434cb33e3fe7f495 Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Sun, 11 Apr 2021 20:12:43 +0200
Subject: [PATCH 19/56] Autofixed theme
---
assets/themes/hailhydrant/hailhydrant.json | 10 +++----
assets/themes/hailhydrant/license_info.json | 32 +++++++++++++++++++++
2 files changed, 37 insertions(+), 5 deletions(-)
diff --git a/assets/themes/hailhydrant/hailhydrant.json b/assets/themes/hailhydrant/hailhydrant.json
index 22d55c7cac..41b9ac09f5 100644
--- a/assets/themes/hailhydrant/hailhydrant.json
+++ b/assets/themes/hailhydrant/hailhydrant.json
@@ -170,7 +170,7 @@
],
"hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
- "render": "https://raw.githubusercontent.com/mapamore/MapComplete/master/assets/themes/hailhydrant/hydrant.svg"
+ "render": "hydrant.svg"
},
"width": {
"render": "8"
@@ -261,7 +261,7 @@
],
"hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
- "render": "https://upload.wikimedia.org/wikipedia/commons/9/9b/Twemoji12_1f9ef.svg"
+ "render": "Twemoji12_1f9ef.svg"
},
"width": {
"render": "8"
@@ -418,7 +418,7 @@
],
"hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
- "render": "https://upload.wikimedia.org/wikipedia/commons/1/19/Twemoji12_1f692.svg"
+ "render": "Twemoji12_1f692.svg"
},
"width": {
"render": "8"
@@ -474,7 +474,7 @@
"tagRenderings": [],
"hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
- "render": "https://upload.wikimedia.org/wikipedia/commons/e/eb/Twemoji12_26d1.svg"
+ "render": "Twemoji12_26d1.svg"
},
"width": {
"render": "8"
@@ -515,4 +515,4 @@
}
],
"defaultBackgroundId": "HDM_HOT"
-}
+}
\ No newline at end of file
diff --git a/assets/themes/hailhydrant/license_info.json b/assets/themes/hailhydrant/license_info.json
index 3e5826b09f..3ca95988c2 100644
--- a/assets/themes/hailhydrant/license_info.json
+++ b/assets/themes/hailhydrant/license_info.json
@@ -114,5 +114,37 @@
"sources": [
"https://upload.wikimedia.org/wikipedia/commons/1/1e/Emojione_1F6A8.svg"
]
+ },
+ {
+ "path": "hydrant.svg",
+ "license": "",
+ "authors": [],
+ "sources": [
+ "https://raw.githubusercontent.com/mapamore/MapComplete/master/assets/themes/hailhydrant/hydrant.svg"
+ ]
+ },
+ {
+ "path": "Twemoji12_1f9ef.svg",
+ "license": "",
+ "authors": [],
+ "sources": [
+ "https://upload.wikimedia.org/wikipedia/commons/9/9b/Twemoji12_1f9ef.svg"
+ ]
+ },
+ {
+ "path": "Twemoji12_1f692.svg",
+ "license": "",
+ "authors": [],
+ "sources": [
+ "https://upload.wikimedia.org/wikipedia/commons/1/19/Twemoji12_1f692.svg"
+ ]
+ },
+ {
+ "path": "Twemoji12_26d1.svg",
+ "license": "",
+ "authors": [],
+ "sources": [
+ "https://upload.wikimedia.org/wikipedia/commons/e/eb/Twemoji12_26d1.svg"
+ ]
}
]
\ No newline at end of file
From 6dba4ea81c2b1682fa4f925e7901a50889e5070a Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Sun, 11 Apr 2021 20:42:18 +0200
Subject: [PATCH 20/56] Add icons, add correct paths
---
assets/themes/hailhydrant/Twemoji12_1f692.svg | 1 +
assets/themes/hailhydrant/Twemoji12_1f9ef.svg | 1 +
assets/themes/hailhydrant/Twemoji12_26d1.svg | 1 +
assets/themes/hailhydrant/hailhydrant.json | 18 +--
assets/themes/hailhydrant/hydrant.svg.1 | 107 ++++++++++++++++++
scripts/fixTheme.ts | 5 +-
6 files changed, 122 insertions(+), 11 deletions(-)
create mode 100644 assets/themes/hailhydrant/Twemoji12_1f692.svg
create mode 100644 assets/themes/hailhydrant/Twemoji12_1f9ef.svg
create mode 100644 assets/themes/hailhydrant/Twemoji12_26d1.svg
create mode 100644 assets/themes/hailhydrant/hydrant.svg.1
diff --git a/assets/themes/hailhydrant/Twemoji12_1f692.svg b/assets/themes/hailhydrant/Twemoji12_1f692.svg
new file mode 100644
index 0000000000..711c9960be
--- /dev/null
+++ b/assets/themes/hailhydrant/Twemoji12_1f692.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/themes/hailhydrant/Twemoji12_1f9ef.svg b/assets/themes/hailhydrant/Twemoji12_1f9ef.svg
new file mode 100644
index 0000000000..e8b17ac66a
--- /dev/null
+++ b/assets/themes/hailhydrant/Twemoji12_1f9ef.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/themes/hailhydrant/Twemoji12_26d1.svg b/assets/themes/hailhydrant/Twemoji12_26d1.svg
new file mode 100644
index 0000000000..e8457ae2b2
--- /dev/null
+++ b/assets/themes/hailhydrant/Twemoji12_26d1.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/themes/hailhydrant/hailhydrant.json b/assets/themes/hailhydrant/hailhydrant.json
index 41b9ac09f5..916964c13d 100644
--- a/assets/themes/hailhydrant/hailhydrant.json
+++ b/assets/themes/hailhydrant/hailhydrant.json
@@ -13,7 +13,7 @@
"en"
],
"maintainer": "",
- "icon": "assets/themes/hailhydrant/logo.svg",
+ "icon": "./assets/themes/hailhydrant/logo.svg",
"version": "0",
"startLat": 13.67801,
"startLon": 121.6625,
@@ -87,7 +87,7 @@
]
},
"then": {
- "en": " Pillar type."
+ "en": " Pillar type."
}
},
{
@@ -97,7 +97,7 @@
]
},
"then": {
- "en": " Pipe type."
+ "en": " Pipe type."
}
},
{
@@ -107,7 +107,7 @@
]
},
"then": {
- "en": " Wall type."
+ "en": " Wall type."
}
},
{
@@ -117,7 +117,7 @@
]
},
"then": {
- "en": " Underground type."
+ "en": " Underground type."
}
}
]
@@ -170,7 +170,7 @@
],
"hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
- "render": "hydrant.svg"
+ "render": "./assets/themes/hailhydrant/hydrant.svg"
},
"width": {
"render": "8"
@@ -261,7 +261,7 @@
],
"hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
- "render": "Twemoji12_1f9ef.svg"
+ "render": "./assets/themes/hailhydrant/Twemoji12_1f9ef.svg"
},
"width": {
"render": "8"
@@ -418,7 +418,7 @@
],
"hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
- "render": "Twemoji12_1f692.svg"
+ "render": "./assets/themes/hailhydrant/Twemoji12_1f692.svg"
},
"width": {
"render": "8"
@@ -474,7 +474,7 @@
"tagRenderings": [],
"hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
- "render": "Twemoji12_26d1.svg"
+ "render": "./assets/themes/hailhydrant/Twemoji12_26d1.svg"
},
"width": {
"render": "8"
diff --git a/assets/themes/hailhydrant/hydrant.svg.1 b/assets/themes/hailhydrant/hydrant.svg.1
new file mode 100644
index 0000000000..0dbda22404
--- /dev/null
+++ b/assets/themes/hailhydrant/hydrant.svg.1
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/scripts/fixTheme.ts b/scripts/fixTheme.ts
index 2cc563f170..b3d0404691 100644
--- a/scripts/fixTheme.ts
+++ b/scripts/fixTheme.ts
@@ -16,6 +16,8 @@ if(process.argv.length == 2){
}
const path = process.argv[2]
+const dir = path.substring(0, path.lastIndexOf("/"))
+
console.log("Fixing up ", path)
const themeConfigJson : LayoutConfigJson = JSON.parse(readFileSync(path, "UTF8"))
@@ -47,7 +49,7 @@ for (const layerConfigJson of themeConfigJson.layers) {
authors: [],
sources: [remoteImage]
})
- replacements.push({source: remoteImage, destination: imgPath})
+ replacements.push({source: remoteImage, destination: `${dir}/${imgPath}`})
}
}
@@ -56,7 +58,6 @@ for (const replacement of replacements) {
fixedThemeJson = fixedThemeJson.replace(new RegExp(replacement.source, "g"), replacement.destination)
}
-const dir = path.substring(0, path.lastIndexOf("/"))
const fixScriptPath = dir + "/fix_script_"+path.replace(/\//g,"_")+".sh"
writeFileSync(dir + "/generated.license_info.json", JSON.stringify(licenses, null, " "))
writeFileSync(fixScriptPath, linuxHints.join("\n"))
From a2ba0e9fd023b2c31603d5ab4a24fc920f4d498b Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Sun, 11 Apr 2021 21:07:04 +0200
Subject: [PATCH 21/56] Remove obsolete artwork, fix licenses, fix script
---
.../hailhydrant/British_Columbia_W-318-L.svg | 35 -
assets/themes/hailhydrant/Emojione_1F6A8.svg | 1 -
assets/themes/hailhydrant/Fire-truck.svg | 303 ----
assets/themes/hailhydrant/Hydrant_02.svg | 526 -------
assets/themes/hailhydrant/MUTCD_RS-090.svg | 90 --
.../themes/hailhydrant/blue-signal-light.svg | 115 --
assets/themes/hailhydrant/extinguisher.svg | 243 ---
assets/themes/hailhydrant/fire-station-15.svg | 6 -
assets/themes/hailhydrant/fire_brigade.svg | 1327 -----------------
assets/themes/hailhydrant/hydrant.svg.1 | 107 --
assets/themes/hailhydrant/license_info.json | 104 +-
11 files changed, 51 insertions(+), 2806 deletions(-)
delete mode 100644 assets/themes/hailhydrant/British_Columbia_W-318-L.svg
delete mode 100644 assets/themes/hailhydrant/Emojione_1F6A8.svg
delete mode 100644 assets/themes/hailhydrant/Fire-truck.svg
delete mode 100644 assets/themes/hailhydrant/Hydrant_02.svg
delete mode 100644 assets/themes/hailhydrant/MUTCD_RS-090.svg
delete mode 100644 assets/themes/hailhydrant/blue-signal-light.svg
delete mode 100644 assets/themes/hailhydrant/extinguisher.svg
delete mode 100644 assets/themes/hailhydrant/fire-station-15.svg
delete mode 100644 assets/themes/hailhydrant/fire_brigade.svg
delete mode 100644 assets/themes/hailhydrant/hydrant.svg.1
diff --git a/assets/themes/hailhydrant/British_Columbia_W-318-L.svg b/assets/themes/hailhydrant/British_Columbia_W-318-L.svg
deleted file mode 100644
index 11beaf4edd..0000000000
--- a/assets/themes/hailhydrant/British_Columbia_W-318-L.svg
+++ /dev/null
@@ -1,35 +0,0 @@
-
-image/svg+xml
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/themes/hailhydrant/Emojione_1F6A8.svg b/assets/themes/hailhydrant/Emojione_1F6A8.svg
deleted file mode 100644
index 2a00519110..0000000000
--- a/assets/themes/hailhydrant/Emojione_1F6A8.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/assets/themes/hailhydrant/Fire-truck.svg b/assets/themes/hailhydrant/Fire-truck.svg
deleted file mode 100644
index 767960f100..0000000000
--- a/assets/themes/hailhydrant/Fire-truck.svg
+++ /dev/null
@@ -1,303 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- image/svg+xml
-
-
-
-
- Openclipart
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/themes/hailhydrant/Hydrant_02.svg b/assets/themes/hailhydrant/Hydrant_02.svg
deleted file mode 100644
index 257691fe42..0000000000
--- a/assets/themes/hailhydrant/Hydrant_02.svg
+++ /dev/null
@@ -1,526 +0,0 @@
-
-
-
-
-
- image/svg+xml
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/themes/hailhydrant/MUTCD_RS-090.svg b/assets/themes/hailhydrant/MUTCD_RS-090.svg
deleted file mode 100644
index 21f349cb4e..0000000000
--- a/assets/themes/hailhydrant/MUTCD_RS-090.svg
+++ /dev/null
@@ -1,90 +0,0 @@
-
-
-
-
-
- image/svg+xml
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/themes/hailhydrant/blue-signal-light.svg b/assets/themes/hailhydrant/blue-signal-light.svg
deleted file mode 100644
index bcd697851e..0000000000
--- a/assets/themes/hailhydrant/blue-signal-light.svg
+++ /dev/null
@@ -1,115 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- image/svg+xml
-
-
-
-
- Openclipart
-
-
- Blue signal light
- 2013-05-10T09:38:15
-
- https://openclipart.org/detail/177928/blue-signal-light-by-qubodup-177928
-
-
- qubodup
-
-
-
-
- alarm
- blue
- emergency
- fire brigade
- fire truck
- first aid
- light
- police
- signal
- siren
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/themes/hailhydrant/extinguisher.svg b/assets/themes/hailhydrant/extinguisher.svg
deleted file mode 100644
index 79f7b2e4cc..0000000000
--- a/assets/themes/hailhydrant/extinguisher.svg
+++ /dev/null
@@ -1,243 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- image/svg+xml
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/themes/hailhydrant/fire-station-15.svg b/assets/themes/hailhydrant/fire-station-15.svg
deleted file mode 100644
index 14b0c9b4f9..0000000000
--- a/assets/themes/hailhydrant/fire-station-15.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/themes/hailhydrant/fire_brigade.svg b/assets/themes/hailhydrant/fire_brigade.svg
deleted file mode 100644
index ad6e4fda89..0000000000
--- a/assets/themes/hailhydrant/fire_brigade.svg
+++ /dev/null
@@ -1,1327 +0,0 @@
-
-image/svg+xml
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Fire Brigade
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/themes/hailhydrant/hydrant.svg.1 b/assets/themes/hailhydrant/hydrant.svg.1
deleted file mode 100644
index 0dbda22404..0000000000
--- a/assets/themes/hailhydrant/hydrant.svg.1
+++ /dev/null
@@ -1,107 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/themes/hailhydrant/license_info.json b/assets/themes/hailhydrant/license_info.json
index 3ca95988c2..b7fb3a5afd 100644
--- a/assets/themes/hailhydrant/license_info.json
+++ b/assets/themes/hailhydrant/license_info.json
@@ -61,90 +61,88 @@
},
{
"path": "hydrant_pillar.svg",
- "license": "",
- "authors": [],
- "sources": [
- "https://mapcomplete.braindeaddev.com/assets/layers/fire/hydrant_pillar.svg"
- ]
- },
- {
- "path": "hydrant_unknown.svg",
- "license": "",
- "authors": [],
- "sources": [
- "https://mapcomplete.braindeaddev.com/assets/layers/fire/hydrant_unknown.svg"
- ]
- },
- {
- "path": "hydrant_underground.svg",
- "license": "",
- "authors": [],
+ "license": "CC-BY-SA 4.0",
+ "authors": [
+ "M!dgard"
+ ],
"sources": [
+ "https://www.openstreetmap.org/user/M!dgard",
"https://mapcomplete.braindeaddev.com/assets/layers/fire/hydrant_underground.svg"
]
},
{
- "path": "Hydrant_02.svg",
- "license": "",
- "authors": [],
+ "path": "hydrant_unknown.svg",
+ "license": "CC-BY-SA 4.0",
+ "authors": [
+ "M!dgard"
+ ],
"sources": [
- "https://upload.wikimedia.org/wikipedia/commons/6/66/Hydrant_02.svg"
+ "https://www.openstreetmap.org/user/M!dgard",
+ "https://mapcomplete.braindeaddev.com/assets/layers/fire/hydrant_underground.svg"
]
},
{
- "path": "MUTCD_RS-090.svg",
- "license": "",
- "authors": [],
+ "path": "hydrant_underground.svg",
+ "license": "CC-BY-SA 4.0",
+ "authors": [
+ "M!dgard"
+ ],
"sources": [
- "https://upload.wikimedia.org/wikipedia/commons/e/e8/MUTCD_RS-090.svg"
- ]
- },
- {
- "path": "British_Columbia_W-318-L.svg",
- "license": "",
- "authors": [],
- "sources": [
- "https://upload.wikimedia.org/wikipedia/commons/8/84/British_Columbia_W-318-L.svg"
- ]
- },
- {
- "path": "Emojione_1F6A8.svg",
- "license": "",
- "authors": [],
- "sources": [
- "https://upload.wikimedia.org/wikipedia/commons/1/1e/Emojione_1F6A8.svg"
+ "https://www.openstreetmap.org/user/M!dgard",
+ "https://mapcomplete.braindeaddev.com/assets/layers/fire/hydrant_underground.svg"
]
},
{
"path": "hydrant.svg",
- "license": "",
- "authors": [],
+ "license": "CC-BY-SA 4.0",
+ "authors": [
+ "GOwin"
+ ],
"sources": [
"https://raw.githubusercontent.com/mapamore/MapComplete/master/assets/themes/hailhydrant/hydrant.svg"
]
},
{
"path": "Twemoji12_1f9ef.svg",
- "license": "",
- "authors": [],
+ "license": "CC-BY 4.0",
+ "authors": [
+ "Twemoji Project"
+ ],
"sources": [
- "https://upload.wikimedia.org/wikipedia/commons/9/9b/Twemoji12_1f9ef.svg"
+ "https://upload.wikimedia.org/wikipedia/commons/9/9b/Twemoji12_1f9ef.svg",
+ "https://twemoji.twitter.com/"
]
},
{
"path": "Twemoji12_1f692.svg",
- "license": "",
- "authors": [],
+ "license": "CC-BY 4.0",
+ "authors": [
+ "Twemoji Project"
+ ],
"sources": [
- "https://upload.wikimedia.org/wikipedia/commons/1/19/Twemoji12_1f692.svg"
+ "https://upload.wikimedia.org/wikipedia/commons/1/19/Twemoji12_1f692.svg",
+ "https://twemoji.twitter.com/"
]
},
{
"path": "Twemoji12_26d1.svg",
- "license": "",
- "authors": [],
+ "license": "CC-BY 4.0",
+ "authors": [
+ "Twemoji Project"
+ ],
"sources": [
- "https://upload.wikimedia.org/wikipedia/commons/e/eb/Twemoji12_26d1.svg"
+ "https://upload.wikimedia.org/wikipedia/commons/e/eb/Twemoji12_26d1.svg",
+ "https://twemoji.twitter.com/"
+ ]
+ },
+ {
+ "authors": [
+ "Erwin Olario"
+ ],
+ "path": "logo.svg",
+ "license": "CC-BY-SA 4.0",
+ "sources": [
+ "https://wiki.openstreetmap.org/wiki/File:Hailhydrant-logo.svg"
]
}
]
\ No newline at end of file
From acc09db587655ab3ed98334187119f569aad7895 Mon Sep 17 00:00:00 2001
From: Win Olario
Date: Mon, 12 Apr 2021 13:15:05 +0800
Subject: [PATCH 22/56] Update hailhydrant.json
Improve question text. Improve icon sizes. Add some questions for the rescue_station layer.
---
assets/themes/hailhydrant/hailhydrant.json | 86 +++++++++++++++-------
1 file changed, 60 insertions(+), 26 deletions(-)
diff --git a/assets/themes/hailhydrant/hailhydrant.json b/assets/themes/hailhydrant/hailhydrant.json
index efd198bfa5..c6f0c79554 100644
--- a/assets/themes/hailhydrant/hailhydrant.json
+++ b/assets/themes/hailhydrant/hailhydrant.json
@@ -181,7 +181,7 @@
"render": "8"
},
"iconSize": {
- "render": "15,15,center"
+ "render": "20,20,center"
},
"color": {
"render": "#00f"
@@ -317,26 +317,37 @@
"en": "Map layer to show fire stations."
},
"tagRenderings": [
+ {
+ "freeform": {
+ "key": "name"
+ },
+ "question": {
+ "en": "What is the name of this station?"
+ },
+ "render": {
+ "en": "This station is called {name}."
+ }
+ },
{
"freeform": {
"key": "addr:street"
},
"question": {
- "en": " What street is the station located?"
+ "en": " What is the street name where the station located?"
},
"render": {
- "en": "The station is along a highway called {addr:street}."
+ "en": "This station is along a highway called {addr:street}."
}
},
{
"question": {
- "en": "In what place is the station located? (e.g. name of neighborhood, villlage, or town)"
+ "en": "Where is the station located? (e.g. name of neighborhood, villlage, or town)"
},
"freeform": {
"key": "addr:place"
},
"render": {
- "en": "The station is to be found within {addr:place}."
+ "en": "Th isstation is to be found within {addr:place}."
}
},
{
@@ -344,7 +355,7 @@
"en": "What agency operates this station?"
},
"render": {
- "en": "Operator: {operator}"
+ "en": "This station is operated by {operator}."
},
"freeform": {
"key": "operator"
@@ -354,7 +365,7 @@
"if": {
"and": [
"operator=Bureau of Fire Protection",
- "operator:type=public"
+ "operator:type=government"
]
},
"then": {
@@ -365,10 +376,10 @@
},
{
"question": {
- "en": "How would you classifiy the operator of this station?"
+ "en": "How is the station operator classified??"
},
"render": {
- "en": "Operator type: {operator:type}"
+ "en": "The operator is a(n) {operator:type} entity."
},
"freeform": {
"key": "operator:type"
@@ -377,21 +388,11 @@
{
"if": {
"and": [
- "operator:type=public"
+ "operator:type=government"
]
},
"then": {
- "en": "Public"
- }
- },
- {
- "if": {
- "and": [
- "operator:type=ngo"
- ]
- },
- "then": {
- "en": "Volunteer"
+ "en": "The station is operated by the government."
}
},
{
@@ -401,7 +402,17 @@
]
},
"then": {
- "en": "Community-based, or informal organization"
+ "en": "The station is operated by a community-based, or informal organization."
+ }
+ },
+ {
+ "if": {
+ "and": [
+ "operator:type=ngo"
+ ]
+ },
+ "then": {
+ "en": "The station is operated by a formal group of volunteers."
}
},
{
@@ -411,7 +422,7 @@
]
},
"then": {
- "en": "Private"
+ "en": "The station is privately operated."
}
}
]
@@ -425,7 +436,7 @@
"render": "8"
},
"iconSize": {
- "render": "20,20,center"
+ "render": "35,35,center"
},
"color": {
"render": "#00f"
@@ -470,7 +481,30 @@
"description": {
"en": "Map layer to show rescue stations."
},
- "tagRenderings": [],
+ "tagRenderings": [
+ {
+ "freeform": {
+ "key": "image"
+ },
+ "render": {
+ "en": "{all_tags()}"
+ },
+ "question": {
+ "en": "Available images."
+ }
+ },
+ {
+ "question": {
+ "en": "What is this service called?"
+ },
+ "freeform": {
+ "key": "name"
+ },
+ "render": {
+ "en": "This service is called {name}."
+ }
+ }
+ ],
"hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
"render": "https://upload.wikimedia.org/wikipedia/commons/e/eb/Twemoji12_26d1.svg"
@@ -479,7 +513,7 @@
"render": "8"
},
"iconSize": {
- "render": "20,20,center"
+ "render": "35,35,center"
},
"color": {
"render": "#00f"
From 9cf8aa2c3ae5a003fba20c224b50226eb0a2c21d Mon Sep 17 00:00:00 2001
From: Win Olario
Date: Mon, 12 Apr 2021 13:15:54 +0800
Subject: [PATCH 23/56] Delete Fire-truck.svg
---
assets/themes/hailhydrant/Fire-truck.svg | 303 -----------------------
1 file changed, 303 deletions(-)
delete mode 100644 assets/themes/hailhydrant/Fire-truck.svg
diff --git a/assets/themes/hailhydrant/Fire-truck.svg b/assets/themes/hailhydrant/Fire-truck.svg
deleted file mode 100644
index 767960f100..0000000000
--- a/assets/themes/hailhydrant/Fire-truck.svg
+++ /dev/null
@@ -1,303 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- image/svg+xml
-
-
-
-
- Openclipart
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
From f9c2373edf5a38cf8f803d0c0d32cdf4f9910407 Mon Sep 17 00:00:00 2001
From: Win Olario
Date: Mon, 12 Apr 2021 13:16:28 +0800
Subject: [PATCH 24/56] Delete blue-signal-light.svg
delete unused file
---
.../themes/hailhydrant/blue-signal-light.svg | 115 ------------------
1 file changed, 115 deletions(-)
delete mode 100644 assets/themes/hailhydrant/blue-signal-light.svg
diff --git a/assets/themes/hailhydrant/blue-signal-light.svg b/assets/themes/hailhydrant/blue-signal-light.svg
deleted file mode 100644
index bcd697851e..0000000000
--- a/assets/themes/hailhydrant/blue-signal-light.svg
+++ /dev/null
@@ -1,115 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- image/svg+xml
-
-
-
-
- Openclipart
-
-
- Blue signal light
- 2013-05-10T09:38:15
-
- https://openclipart.org/detail/177928/blue-signal-light-by-qubodup-177928
-
-
- qubodup
-
-
-
-
- alarm
- blue
- emergency
- fire brigade
- fire truck
- first aid
- light
- police
- signal
- siren
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
From 564a7f3122d7af162d92e584e01e957f91fe10fa Mon Sep 17 00:00:00 2001
From: Win Olario
Date: Mon, 12 Apr 2021 13:17:10 +0800
Subject: [PATCH 25/56] Delete fire_brigade.svg
Remove unused file.
---
assets/themes/hailhydrant/fire_brigade.svg | 1327 --------------------
1 file changed, 1327 deletions(-)
delete mode 100644 assets/themes/hailhydrant/fire_brigade.svg
diff --git a/assets/themes/hailhydrant/fire_brigade.svg b/assets/themes/hailhydrant/fire_brigade.svg
deleted file mode 100644
index ad6e4fda89..0000000000
--- a/assets/themes/hailhydrant/fire_brigade.svg
+++ /dev/null
@@ -1,1327 +0,0 @@
-
-image/svg+xml
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Fire Brigade
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
From 3930e73e2c20106e21ecb805c3ef898f2fc6ecd7 Mon Sep 17 00:00:00 2001
From: Win Olario
Date: Mon, 12 Apr 2021 13:23:34 +0800
Subject: [PATCH 26/56] wemoji12_26d1.svg
Add icon for rescue_station
---
assets/themes/hailhydrant/Twemoji12_26d1.svg | 1 +
1 file changed, 1 insertion(+)
create mode 100644 assets/themes/hailhydrant/Twemoji12_26d1.svg
diff --git a/assets/themes/hailhydrant/Twemoji12_26d1.svg b/assets/themes/hailhydrant/Twemoji12_26d1.svg
new file mode 100644
index 0000000000..e8457ae2b2
--- /dev/null
+++ b/assets/themes/hailhydrant/Twemoji12_26d1.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
From 0d15d8b904a33e0c0fb345559c16d896fda2260a Mon Sep 17 00:00:00 2001
From: Win Olario
Date: Mon, 12 Apr 2021 14:29:07 +0800
Subject: [PATCH 27/56] Twemoji12_1f692.svg
add icon for the fire station layer
---
assets/themes/hailhydrant/Twemoji12_1f692.svg | 1 +
1 file changed, 1 insertion(+)
create mode 100644 assets/themes/hailhydrant/Twemoji12_1f692.svg
diff --git a/assets/themes/hailhydrant/Twemoji12_1f692.svg b/assets/themes/hailhydrant/Twemoji12_1f692.svg
new file mode 100644
index 0000000000..711c9960be
--- /dev/null
+++ b/assets/themes/hailhydrant/Twemoji12_1f692.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
From 6798fda712b557f0bff45cbea8be3f979da8798d Mon Sep 17 00:00:00 2001
From: Win Olario
Date: Mon, 12 Apr 2021 14:33:16 +0800
Subject: [PATCH 28/56] Add icon for extinguisher layer
---
assets/themes/hailhydrant/Twemoji12_1f9ef.svg | 1 +
1 file changed, 1 insertion(+)
create mode 100644 assets/themes/hailhydrant/Twemoji12_1f9ef.svg
diff --git a/assets/themes/hailhydrant/Twemoji12_1f9ef.svg b/assets/themes/hailhydrant/Twemoji12_1f9ef.svg
new file mode 100644
index 0000000000..e8b17ac66a
--- /dev/null
+++ b/assets/themes/hailhydrant/Twemoji12_1f9ef.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
From 8ee292d24f34d33b5404d5a4c71651f0b873369a Mon Sep 17 00:00:00 2001
From: Win Olario
Date: Mon, 12 Apr 2021 14:57:22 +0800
Subject: [PATCH 29/56] Add image to all layers
---
assets/themes/hailhydrant/hailhydrant.json | 560 ++++++++++++++++++++-
1 file changed, 542 insertions(+), 18 deletions(-)
diff --git a/assets/themes/hailhydrant/hailhydrant.json b/assets/themes/hailhydrant/hailhydrant.json
index c6f0c79554..e63d4b1b84 100644
--- a/assets/themes/hailhydrant/hailhydrant.json
+++ b/assets/themes/hailhydrant/hailhydrant.json
@@ -1,547 +1,1071 @@
{
+
"id": "hailhydrant",
+
"title": {
+
"en": "Hydrants, Extinguishers, Fire stations, and Rescue stations."
+
},
+
"shortDescription": {
+
"en": "Map to show hydrants, extinguishers, fire stations, and rescue stations."
+
},
+
"description": {
+
"en": "On this map you can find and update hydrants, fire stations, rescue stations, and extinguishers in your favorite neighborhoods. \n\nYou can track your precise location (mobile only) and select layers that are relevant for you in the bottom left corner. You can also use this tool to add or edit pins (points of interest) to the map and provide additional details by answering available questions. \n\nAll changes you make will automatically be saved in the global database of OpenStreetMap and can be freely re-used by others."
+
},
+
"language": [
+
"en"
+
],
+
"maintainer": "",
+
"icon": "assets/themes/hailhydrant/logo.svg",
+
"version": "0",
+
"startLat": 13.67801,
+
"startLon": 121.6625,
+
"startZoom": 6,
+
"widenFactor": 0.05,
+
"socialImage": "",
+
"layers": [
+
{
+
"id": "hydrants",
+
"name": {
+
"en": "Map of hydrants"
+
},
+
"minzoom": 14,
+
"overpassTags": {
+
"and": [
+
"emergency=fire_hydrant"
+
]
+
},
+
"title": {
+
"render": {
+
"en": "Hydrant"
+
}
+
},
+
"description": {
+
"en": "Map layer to show fire hydrants."
+
},
+
"tagRenderings": [
+"images",
{
+
"question": {
+
"en": "What color is the hydrant?"
+
},
+
"render": {
+
"en": "The hydrant color is {colour}"
+
},
+
"freeform": {
+
"key": "colour"
+
},
+
"mappings": [
+
{
+
"if": {
+
"and": [
+
"colour=yellow"
+
]
+
},
+
"then": {
+
"en": "The hydrant color is yellow."
+
}
+
},
+
{
+
"if": {
+
"and": [
+
"colour=red"
+
]
+
},
+
"then": {
+
"en": "The hydrant color is red."
+
}
+
}
+
]
+
},
+
{
+
"question": {
+
"en": "What type of hydrant is it?"
+
},
+
"freeform": {
+
"key": "fire_hydrant:type"
+
},
+
"render": {
+
"en": " Hydrant type: {fire_hydrant:type}"
+
},
+
"mappings": [
+
{
+
"if": {
+
"and": [
+
"fire_hydrant:type=pillar"
+
]
+
},
+
"then": {
+
"en": " Pillar type."
+
}
+
},
+
{
+
"if": {
+
"and": [
+
"fire_hydrant:type=pipe"
+
]
+
},
+
"then": {
+
"en": " Pipe type."
+
}
+
},
+
{
+
"if": {
+
"and": [
+
"fire_hydrant:type=wall"
+
]
+
},
+
"then": {
+
"en": " Wall type."
+
}
+
},
+
{
+
"if": {
+
"and": [
+
"fire_hydrant:type=underground"
+
]
+
},
+
"then": {
+
"en": " Underground type."
+
}
+
}
+
]
+
},
+
{
+
"question": {
+
"en": "Update the lifecycle status of the hydrant."
+
},
+
"render": {
+
"en": "Lifecycle status"
+
},
+
"freeform": {
+
"key": "disused:emergency"
+
},
+
"mappings": [
+
{
+
"if": {
+
"and": [
+
"emergency=fire_hydrant"
+
]
+
},
+
"then": {
+
"en": "The hydrant is (fully or partially) working."
+
}
+
},
+
{
+
"if": {
+
"and": [
+
"disused:emergency=fire_hydrant",
+
"emergency="
+
]
+
},
+
"then": {
+
"en": "The hydrant is unavailable."
+
}
+
},
+
{
+
"if": {
+
"and": [
+
"removed:emergency=fire_hydrant",
+
"emergency="
+
]
+
},
+
"then": {
+
"en": "The hydrant has been removed."
+
}
+
}
+
]
+
}
+
],
+
"hideUnderlayingFeaturesMinPercentage": 0,
+
"icon": {
+
"render": "https://raw.githubusercontent.com/mapamore/MapComplete/master/assets/themes/hailhydrant/hydrant.svg"
+
},
+
"width": {
+
"render": "8"
+
},
+
"iconSize": {
+
"render": "20,20,center"
+
},
+
"color": {
+
"render": "#00f"
+
},
+
"presets": [
+
{
+
"tags": [
+
"emergency=fire_hydrant"
+
],
+
"title": {
+
"en": "Fire hydrant"
+
},
+
"description": {
+
"en": "Add a new fire hydrant to the map."
+
}
+
}
+
],
+
"wayHandling": 1,
+
"osmSource": {
+
"overpassTags": {
+
"and": [
+
"emergency=fire_hydrant"
+
]
+
}
+
}
+
},
+
{
+
"id": "extinguisher",
+
"name": {
+
"en": "Map of fire extinguishers."
+
},
+
"minzoom": 14,
+
"overpassTags": {
+
"and": [
+
"emergency=fire_extinguisher"
+
]
+
},
+
"title": {
+
"render": {
+
"en": "Extinguishers"
+
}
+
},
+
"description": {
+
"en": "Map layer to show fire hydrants."
+
},
+
"tagRenderings": [
+"images",
{
+
"render": {
+
"en": "Location: {location}"
+
},
+
"question": {
+
"en": "Where is it positioned?"
+
},
+
"mappings": [
+
{
+
"if": {
+
"and": [
+
"location=indoor"
+
]
+
},
+
"then": {
+
"en": "Found indoors."
+
}
+
},
+
{
+
"if": {
+
"and": [
+
"location=outdoor"
+
]
+
},
+
"then": {
+
"en": "Found outdoors."
+
}
+
}
+
],
+
"freeform": {
+
"key": "location"
+
}
+
}
+
],
+
"hideUnderlayingFeaturesMinPercentage": 0,
+
"icon": {
- "render": "https://upload.wikimedia.org/wikipedia/commons/9/9b/Twemoji12_1f9ef.svg"
+
+ "render": "https://raw.githubusercontent.com/mapamore/MapComplete/master/assets/themes/hailhydrant/Twemoji12_1f9ef.svg"
+
},
+
"width": {
+
"render": "8"
+
},
+
"iconSize": {
+
"render": "20,20,center"
+
},
+
"color": {
+
"render": "#00f"
+
},
+
"presets": [
+
{
+
"tags": [
+
"emergency=fire_extinguisher"
+
],
+
"title": {
+
"en": "Fire extinguisher"
+
},
+
"description": {
+
"en": "Add a fire extinguisher to the map"
+
}
+
}
+
],
+
"wayHandling": 1,
+
"osmSource": {
+
"overpassTags": {
+
"and": [
+
"emergency=fire_extinguisher"
+
]
+
}
+
}
+
},
+
{
+
"id": "stations",
+
"name": {
+
"en": "Map of fire stations"
+
},
+
"minzoom": 12,
+
"overpassTags": {
+
"and": [
+
"amenity=fire_station"
+
]
+
},
+
"title": {
+
"render": {
+
"en": "Fire Station"
+
}
+
},
+
"description": {
+
"en": "Map layer to show fire stations."
+
},
+
"tagRenderings": [
+"images",
{
+
"freeform": {
+
"key": "name"
+
},
+
"question": {
+
"en": "What is the name of this station?"
+
},
+
"render": {
+
"en": "This station is called {name}."
+
}
+
},
+
{
+
"freeform": {
+
"key": "addr:street"
+
},
+
"question": {
+
"en": " What is the street name where the station located?"
+
},
+
"render": {
+
"en": "This station is along a highway called {addr:street}."
+
}
+
},
+
{
+
"question": {
+
"en": "Where is the station located? (e.g. name of neighborhood, villlage, or town)"
+
},
+
"freeform": {
+
"key": "addr:place"
+
},
+
"render": {
+
"en": "Th isstation is to be found within {addr:place}."
+
}
+
},
+
{
+
"question": {
+
"en": "What agency operates this station?"
+
},
+
"render": {
+
"en": "This station is operated by {operator}."
+
},
+
"freeform": {
+
"key": "operator"
+
},
+
"mappings": [
+
{
+
"if": {
+
"and": [
+
"operator=Bureau of Fire Protection",
+
"operator:type=government"
+
]
+
},
+
"then": {
+
"en": "Bureau of Fire Protection"
+
}
+
}
+
]
+
},
+
{
+
"question": {
+
"en": "How is the station operator classified??"
+
},
+
"render": {
+
"en": "The operator is a(n) {operator:type} entity."
+
},
+
"freeform": {
+
"key": "operator:type"
+
},
+
"mappings": [
+
{
+
"if": {
+
"and": [
+
"operator:type=government"
+
]
+
},
+
"then": {
+
"en": "The station is operated by the government."
+
}
+
},
+
{
+
"if": {
+
"and": [
+
"operator:type=community"
+
]
+
},
+
"then": {
+
"en": "The station is operated by a community-based, or informal organization."
+
}
+
},
+
{
+
"if": {
+
"and": [
+
"operator:type=ngo"
+
]
+
},
+
"then": {
+
"en": "The station is operated by a formal group of volunteers."
+
}
+
},
+
{
+
"if": {
+
"and": [
+
"operator:type=private"
+
]
+
},
+
"then": {
+
"en": "The station is privately operated."
+
}
+
}
+
]
+
}
+
],
+
"hideUnderlayingFeaturesMinPercentage": 0,
+
"icon": {
- "render": "https://upload.wikimedia.org/wikipedia/commons/1/19/Twemoji12_1f692.svg"
+
+ "render": "https://raw.githubusercontent.com/mapamore/MapComplete/master/assets/themes/hailhydrant/Twemoji12_1f692.svg"
+
},
+
"width": {
+
"render": "8"
+
},
+
"iconSize": {
+
"render": "35,35,center"
+
},
+
"color": {
+
"render": "#00f"
+
},
+
"presets": [
+
{
+
"tags": [
+
"amenity=fire_station"
+
],
+
"title": {
- "en": "fire station"
+
+ "en": "Fire station"
+
},
+
"description": {
+
"en": "Add a fire station to the map."
+
}
+
}
+
],
+
"osmSource": {
+
"overpassTags": {
+
"and": [
+
"amenity=fire_station"
+
]
+
}
+
}
+
},
+
{
+
"id": "rescuestation",
+
"name": {
+
"en": "Map of rescue stations"
+
},
+
"minzoom": 12,
+
"overpassTags": {
+
"and": [
+
"amenity=rescue_station"
+
]
+
},
+
"title": {
+
"render": {
+
"en": "Rescue Station"
+
}
+
},
+
"description": {
+
"en": "Map layer to show rescue stations."
+
},
+
"tagRenderings": [
+"images",
{
- "freeform": {
- "key": "image"
- },
- "render": {
- "en": "{all_tags()}"
- },
+
"question": {
- "en": "Available images."
- }
- },
- {
- "question": {
- "en": "What is this service called?"
+
+ "en": "What is this entity called?"
+
},
+
"freeform": {
+
"key": "name"
+
},
+
"render": {
- "en": "This service is called {name}."
+
+ "en": "This entity is called {name}."
+
}
+
}
+
],
+
"hideUnderlayingFeaturesMinPercentage": 0,
+
"icon": {
- "render": "https://upload.wikimedia.org/wikipedia/commons/e/eb/Twemoji12_26d1.svg"
+
+ "render": "https://raw.githubusercontent.com/mapamore/MapComplete/master/assets/themes/hailhydrant/Twemoji12_26d1.svg"
+
},
+
"width": {
+
"render": "8"
+
},
+
"iconSize": {
+
"render": "35,35,center"
+
},
+
"color": {
+
"render": "#00f"
+
},
+
"presets": [
+
{
+
"tags": [
+
"amenity=rescue_station"
+
],
+
"title": {
- "en": "rescue station"
+
+ "en": "Rescue station"
+
},
+
"description": {
+
"en": "Add a rescue or emergency service station to the map"
+
}
+
}
+
],
+
"osmSource": {
+
"overpassTags": {
+
"and": [
+
"amenity=rescue_station"
+
]
+
}
+
}
+
}
+
],
+
"roamingRenderings": [
+
{}
+
],
+
"defaultBackgroundId": "HDM_HOT"
+
}
From 70f2f0aa74d6bb610925e6986dd5c789b55ff898 Mon Sep 17 00:00:00 2001
From: Win Olario
Date: Mon, 12 Apr 2021 15:05:43 +0800
Subject: [PATCH 30/56] Update license_info.json entries
---
assets/themes/hailhydrant/license_info.json | 46 +++++++--------------
1 file changed, 15 insertions(+), 31 deletions(-)
diff --git a/assets/themes/hailhydrant/license_info.json b/assets/themes/hailhydrant/license_info.json
index eec8d11b7a..097c74214d 100644
--- a/assets/themes/hailhydrant/license_info.json
+++ b/assets/themes/hailhydrant/license_info.json
@@ -1,13 +1,5 @@
[
{
- "authors": ["https://openclipart.org/artist/rones"],
- "path": "extinguisher.svg",
- "license": "CC0",
- "sources": [
- "https://openclipart.org/detail/315876/fire-extinguisher"
- ]
- },
- {
"authors": ["http://jaanos.deviantart.com/"],
"path": "hydrant.svg",
"license": "GPL",
@@ -15,36 +7,28 @@
"https://commons.wikimedia.org/wiki/File:Hydrant.svg"
]
},
- {
- "authors": ["https://openclipart.org/artist/TVLuke"],
- "path": "fire_brigade.svg",
- "license": "CC0",
+ {
+ "authors": ["https://twemoji.twitter.com/"],
+ "path": "Twemoji12_1f9ef.svg",
+ "license": "CC-BY",
"sources": [
- "https://openclipart.org/detail/318142/fire-brigade"
+ "https://commons.wikimedia.org/wiki/File:Twemoji12_1f9ef.svg"
]
},
- {
- "authors": ["https://openclipart.org/artist/qubodup"],
- "path": "blue-signal-light.svg",
- "license": "CC0",
+ {
+ "authors": ["https://twemoji.twitter.com/"],
+ "path": "Twemoji12_1f692.svg",
+ "license": "CC-BY",
"sources": [
- "https://openclipart.org/detail/177928/blue-signal-light"
+ "https://commons.wikimedia.org/wiki/File:Twemoji12_1f692.svg"
]
},
- {
- "authors": ["https://www.mapbox.com/maki-icons/"],
- "path": "fire-station-15.svg",
- "license": "CC0",
+ {
+ "authors": ["https://twemoji.twitter.com/"],
+ "path": "Twemoji12_26d1.svg",
+ "license": "CC-BY",
"sources": [
- "https://openclipart.org/detail/260728/firestation15"
- ]
- },
- {
- "authors": ["https://openclipart.org/artist/rdevries"],
- "path": "Fire-truck.svg",
- "license": "CC0",
- "sources": [
- "https://openclipart.org/detail/190874/fire-truck"
+ "https://commons.wikimedia.org/wiki/File:Twemoji12_26d1.svg"
]
}
]
From 7d36d151e329d8a47dbc427c3023423b5ea2cc73 Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Mon, 12 Apr 2021 12:26:09 +0200
Subject: [PATCH 31/56] The facade gardens are CC0
---
Models/Constants.ts | 2 +-
assets/themes/facadegardens/license_info.json | 20 +++++++++----------
2 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/Models/Constants.ts b/Models/Constants.ts
index 9091bfb51a..2119841636 100644
--- a/Models/Constants.ts
+++ b/Models/Constants.ts
@@ -2,7 +2,7 @@ import { Utils } from "../Utils";
export default class Constants {
- public static vNumber = "0.6.8";
+ public static vNumber = "0.6.8a";
// The user journey states thresholds when a new feature gets unlocked
public static userJourney = {
diff --git a/assets/themes/facadegardens/license_info.json b/assets/themes/facadegardens/license_info.json
index 05d8cb18d5..4e930b945e 100644
--- a/assets/themes/facadegardens/license_info.json
+++ b/assets/themes/facadegardens/license_info.json
@@ -4,7 +4,7 @@
"Klimaan VZW"
],
"path": "bloei.svg",
- "license": "CC-BY-SA 3.0",
+ "license": "CC0",
"sources": [
"https://klimaan.be/"
]
@@ -14,7 +14,7 @@
"Klimaan VZW"
],
"path": "bodembedekker.svg",
- "license": "CC-BY-SA 3.0",
+ "license": "CC0",
"sources": [
"https://klimaan.be/"
]
@@ -24,7 +24,7 @@
"Klimaan VZW"
],
"path": "eetbaar.svg",
- "license": "CC-BY-SA 3.0",
+ "license": "CC0",
"sources": [
"https://klimaan.be/"
]
@@ -34,7 +34,7 @@
"Klimaan VZW"
],
"path": "gevelton.svg",
- "license": "CC-BY-SA 3.0",
+ "license": "CC0",
"sources": [
"https://klimaan.be/"
]
@@ -44,7 +44,7 @@
"Klimaan VZW"
],
"path": "geveltuin.svg",
- "license": "CC-BY-SA 3.0",
+ "license": "CC0",
"sources": [
"https://klimaan.be/"
]
@@ -54,7 +54,7 @@
"Klimaan VZW"
],
"path": "halfzon.svg",
- "license": "CC-BY-SA 3.0",
+ "license": "CC0",
"sources": [
"https://klimaan.be/"
]
@@ -64,7 +64,7 @@
"Klimaan VZW"
],
"path": "klimplant.svg",
- "license": "CC-BY-SA 3.0",
+ "license": "CC0",
"sources": [
"https://klimaan.be/"
]
@@ -74,7 +74,7 @@
"Klimaan VZW"
],
"path": "schaduw.svg",
- "license": "CC-BY-SA 3.0",
+ "license": "CC0",
"sources": [
"https://klimaan.be/"
]
@@ -84,7 +84,7 @@
"Klimaan VZW"
],
"path": "struik.svg",
- "license": "CC-BY-SA 3.0",
+ "license": "CC0",
"sources": [
"https://klimaan.be/"
]
@@ -94,7 +94,7 @@
"Klimaan VZW"
],
"path": "zon.svg",
- "license": "CC-BY-SA 3.0",
+ "license": "CC0",
"sources": [
"https://klimaan.be/"
]
From f177a3bad34a79db24f5c7a1549a6d96990ee051 Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Mon, 12 Apr 2021 13:05:30 +0200
Subject: [PATCH 32/56] Various styling tweaks, fix #243
---
AllTranslationAssets.ts | 2 +-
InitUiElements.ts | 1 -
UI/BigComponents/AttributionPanel.ts | 4 +--
UI/BigComponents/FullWelcomePaneWithTabs.ts | 4 +--
UI/BigComponents/ShareScreen.ts | 2 +-
UI/BigComponents/ThemeIntroductionPanel.ts | 1 +
UI/Popup/TagRenderingAnswer.ts | 2 +-
assets/translations.json | 4 +--
index.css | 40 +++++++++++++++++++++
9 files changed, 50 insertions(+), 10 deletions(-)
diff --git a/AllTranslationAssets.ts b/AllTranslationAssets.ts
index 661082eb9f..a39c7c1565 100644
--- a/AllTranslationAssets.ts
+++ b/AllTranslationAssets.ts
@@ -102,7 +102,7 @@ export default class AllTranslationAssets {
getStartedNewAccount: new Translation( {"en":" or create a new account ","nl":" of maak een nieuwe account aan ","fr":" ou enregistrez-vous ","es":" o crea una nueva cuenta ","ca":" o crea un nou compte ","gl":" ou crea unha nova conta ","de":" oder ein neues Konto anlegen "} ),
noTagsSelected: new Translation( {"en":"No tags selected","es":"No se han seleccionado etiquetas","ca":"No s'han seleccionat etiquetes","gl":"Non se seleccionaron etiquetas","nl":"Geen tags geselecteerd","fr":"Aucune balise sélectionnée","de":"Keine Tags ausgewählt"} ),
customThemeIntro: new Translation( {"en":"Custom themes These are previously visited user-generated themes.","nl":"Onofficiële thema's De onderstaande thema's heb je eerder bezocht en zijn gemaakt door andere OpenStreetMappers.","fr":"Thèmes personnalisés Vous avez déjà visité ces thèmes personnalisés.","gl":"Temas personalizados Estes son temas xerados por usuarios previamente visitados.","de":"Kundenspezifische Themen Dies sind zuvor besuchte benutzergenerierte Themen"} ),
- aboutMapcomplete: new Translation( {"en":"About MapComplete With MapComplete you can enrich OpenStreetMap with information on a single theme. Answer a few questions, and within minutes your contributions will be available around the globe! The theme maintainer defines elements, questions and languages for the theme.
Find out more MapComplete always offers the next step to learn more about OpenStreetMap.
* When embedded in a website, the iframe links to a full-screen MapComplete * The full-screen version offers information about OpenStreetMap * Viewing works without login, but editing requires an OSM login. * If you are not logged in, you are asked to log in * Once you answered a single question, you can add new points to the map * After a while, actual OSM-tags are shown, later linking to the wiki
Did you notice an issue ? Do you have a feature request ? Want to help translate ? Head over to the source code or issue tracker.
Want to see your progress ? Follow the edit count on OsmCha .
","nl":"Over MapComplete Met MapComplete kun je OpenStreetMap verrijken met informatie over een bepaald thema. Beantwoord enkele vragen, en binnen een paar minuten is jouw bijdrage wereldwijd beschikbaar! De maker van het thema bepaalt de elementen, vragen en taalversies voor het thema.
Ontdek meer MapComplete biedt altijd de volgende stap naar meer OpenStreetMap:
* Indien ingebed in een website linkt het iframe naar de volledige MapComplete * De volledige versie heeft uitleg over OpenStreetMap * Bekijken kan altijd, maar wijzigen vereist een OSM-account * Als je niet aangemeld bent, wordt je gevraagd dit te doen * Als je minstens één vraag hebt beantwoord, kan je ook elementen toevoegen * Heb je genoeg changesets, dan verschijnen de OSM-tags, nog later links naar de wiki Merk je een bug of wil je een extra feature ? Wil je helpen vertalen ? Bezoek dan de broncode en issue tracker .
Wil je je vorderingen zien? Volg de edits op OsmCha .","de":"Über MapComplete MapComplete ist ein OpenStreetMap-Editor, der jedem helfen soll, auf einfache Weise Informationen zu einem Einzelthema hinzuzufügen.
Nur Merkmale, die für ein einzelnes Thema relevant sind, werden mit einigen vordefinierten Fragen gezeigt, um die Dinge einfach und extrem benutzerfreundlich zu halten.Der Themen-Betreuer kann auch eine Sprache für die Schnittstelle wählen, Elemente deaktivieren oder sogar in eine andere Website ohne jegliches UI-Element einbetten.
Ein weiterer wichtiger Teil von MapComplete ist jedoch, immer den nächsten Schritt anzubieten um mehr über OpenStreetMap zu erfahren:
Ein iframe ohne UI-Elemente verlinkt zu einer Vollbildversion Die Vollbildversion bietet Informationen über OpenStreetMap Wenn Sie nicht eingeloggt sind, werden Sie gebeten, sich einzuloggen Wenn Sie eine einzige Frage beantwortet haben, dürfen Sie Punkte hinzufügen An einem bestimmten Punkt erscheinen die tatsächlich hinzugefügten Tags, die später mit dem Wiki verlinkt werden... Fällt Ihnen ein Problem mit MapComplete auf? Haben Sie einen Feature-Wunsch? Wollen Sie beim Übersetzen helfen? Gehen Sie zum Quellcode oder zur Problemverfolgung .
"} ),
+ aboutMapcomplete: new Translation( {"en":"About MapComplete With MapComplete you can enrich OpenStreetMap with information on a single theme. Answer a few questions, and within minutes your contributions will be available around the globe! The theme maintainer defines elements, questions and languages for the theme.
Find out more MapComplete always offers the next step to learn more about OpenStreetMap.
When embedded in a website, the iframe links to a full-screen MapComplete The full-screen version offers information about OpenStreetMap Viewing works without login, but editing requires an OSM login. If you are not logged in, you are asked to log in Once you answered a single question, you can add new points to the map After a while, actual OSM-tags are shown, later linking to the wiki Did you notice an issue ? Do you have a feature request ? Want to help translate ? Head over to the source code or issue tracker.
Want to see your progress ? Follow the edit count on OsmCha .
","nl":"Over MapComplete Met MapComplete kun je OpenStreetMap verrijken met informatie over een bepaald thema. Beantwoord enkele vragen, en binnen een paar minuten is jouw bijdrage wereldwijd beschikbaar! De maker van het thema bepaalt de elementen, vragen en taalversies voor het thema.
Ontdek meer MapComplete biedt altijd de volgende stap naar meer OpenStreetMap:
Indien ingebed in een website linkt het iframe naar de volledige MapComplete De volledige versie heeft uitleg over OpenStreetMap Bekijken kan altijd, maar wijzigen vereist een OSM-account Als je niet aangemeld bent, wordt je gevraagd dit te doen Als je minstens één vraag hebt beantwoord, kan je ook elementen toevoegen Heb je genoeg changesets, dan verschijnen de OSM-tags, nog later links naar de wiki Merk je een bug of wil je een extra feature ? Wil je helpen vertalen ? Bezoek dan de broncode en issue tracker .
Wil je je vorderingen zien? Volg de edits op OsmCha .","de":"Über MapComplete MapComplete ist ein OpenStreetMap-Editor, der jedem helfen soll, auf einfache Weise Informationen zu einem Einzelthema hinzuzufügen.
Nur Merkmale, die für ein einzelnes Thema relevant sind, werden mit einigen vordefinierten Fragen gezeigt, um die Dinge einfach und extrem benutzerfreundlich zu halten.Der Themen-Betreuer kann auch eine Sprache für die Schnittstelle wählen, Elemente deaktivieren oder sogar in eine andere Website ohne jegliches UI-Element einbetten.
Ein weiterer wichtiger Teil von MapComplete ist jedoch, immer den nächsten Schritt anzubieten um mehr über OpenStreetMap zu erfahren:
Ein iframe ohne UI-Elemente verlinkt zu einer Vollbildversion Die Vollbildversion bietet Informationen über OpenStreetMap Wenn Sie nicht eingeloggt sind, werden Sie gebeten, sich einzuloggen Wenn Sie eine einzige Frage beantwortet haben, dürfen Sie Punkte hinzufügen An einem bestimmten Punkt erscheinen die tatsächlich hinzugefügten Tags, die später mit dem Wiki verlinkt werden... Fällt Ihnen ein Problem mit MapComplete auf? Haben Sie einen Feature-Wunsch? Wollen Sie beim Übersetzen helfen? Gehen Sie zum Quellcode oder zur Problemverfolgung .
"} ),
backgroundMap: new Translation( {"en":"Background map","ca":"Mapa de fons","es":"Mapa de fondo","nl":"Achtergrondkaart","fr":"Carte de fonds","de":"Hintergrundkarte"} ),
layerSelection: { zoomInToSeeThisLayer: new Translation( {"en":"Zoom in to see this layer","ca":"Amplia per veure aquesta capa","es":"Amplía para ver esta capa","nl":"Vergroot de kaart om deze laag te zien","fr":"Aggrandissez la carte pour voir cette couche","de":"Vergrößern, um diese Ebene zu sehen"} ),
title: new Translation( {"en":"Select layers","nl":"Selecteer lagen"} ),
diff --git a/InitUiElements.ts b/InitUiElements.ts
index 8593398c23..d2e4b9e53c 100644
--- a/InitUiElements.ts
+++ b/InitUiElements.ts
@@ -247,7 +247,6 @@ export class InitUiElements {
// ?-Button on Desktop, opens panel with close-X.
const help = new MapControlButton(Svg.help_svg());
- // .SetClass("open-welcome-button block");
new CheckBox(
fullOptions
.SetClass("welcomeMessage")
diff --git a/UI/BigComponents/AttributionPanel.ts b/UI/BigComponents/AttributionPanel.ts
index 343425e1b7..b3843c649a 100644
--- a/UI/BigComponents/AttributionPanel.ts
+++ b/UI/BigComponents/AttributionPanel.ts
@@ -28,11 +28,11 @@ export default class AttributionPanel extends Combine {
" ",
new Attribution(undefined, undefined, State.state.layoutToUse, undefined),
" ",
- Translations.t.general.attribution.iconAttribution.title.Clone().SetClass("font-bold pt-12 pb-3"),
+ "",Translations.t.general.attribution.iconAttribution.title.Clone().SetClass("pt-6 pb-3")," ",
...Utils.NoNull(Array.from(layoutToUse.data.ExtractImages()))
.map(AttributionPanel.IconAttribution)
]);
- this.SetClass("flex flex-col")
+ this.SetClass("flex flex-col link-underline")
}
private static IconAttribution(iconPath: string) {
diff --git a/UI/BigComponents/FullWelcomePaneWithTabs.ts b/UI/BigComponents/FullWelcomePaneWithTabs.ts
index 8738cfb9ea..4622167bd5 100644
--- a/UI/BigComponents/FullWelcomePaneWithTabs.ts
+++ b/UI/BigComponents/FullWelcomePaneWithTabs.ts
@@ -47,7 +47,7 @@ export default class FullWelcomePaneWithTabs extends UIElement {
{header: ` `, content: welcome},
{
header: Svg.osm_logo_img,
- content: Translations.t.general.openStreetMapIntro as UIElement
+ content: Translations.t.general.openStreetMapIntro.Clone().SetClass("link-underline") as UIElement
},
]
@@ -71,7 +71,7 @@ export default class FullWelcomePaneWithTabs extends UIElement {
if (userdetails.csCount < Constants.userJourney.mapCompleteHelpUnlock) {
return ""
}
- return new Combine([Translations.t.general.aboutMapcomplete, " Version " + Constants.vNumber]).Render();
+ return new Combine([Translations.t.general.aboutMapcomplete, " Version " + Constants.vNumber]).SetClass("link-underline").Render();
}, [Locale.language]))
}
);
diff --git a/UI/BigComponents/ShareScreen.ts b/UI/BigComponents/ShareScreen.ts
index 4408178631..dcf0874824 100644
--- a/UI/BigComponents/ShareScreen.ts
+++ b/UI/BigComponents/ShareScreen.ts
@@ -31,7 +31,7 @@ export default class ShareScreen extends UIElement {
const optionCheckboxes: UIElement[] = []
const optionParts: (UIEventSource)[] = [];
-
+ this.SetClass("link-underline")
function check() {
return Svg.checkmark_svg().SetStyle("width: 1.5em; display:inline-block;");
}
diff --git a/UI/BigComponents/ThemeIntroductionPanel.ts b/UI/BigComponents/ThemeIntroductionPanel.ts
index 32839b0383..3b9a8b2b15 100644
--- a/UI/BigComponents/ThemeIntroductionPanel.ts
+++ b/UI/BigComponents/ThemeIntroductionPanel.ts
@@ -41,6 +41,7 @@ export default class ThemeIntroductionPanel extends UIElement {
}
)
)
+ this.SetClass("link-underline")
}
InnerRender(): string {
diff --git a/UI/Popup/TagRenderingAnswer.ts b/UI/Popup/TagRenderingAnswer.ts
index 863f0c0a23..ebf4064d5a 100644
--- a/UI/Popup/TagRenderingAnswer.ts
+++ b/UI/Popup/TagRenderingAnswer.ts
@@ -26,7 +26,7 @@ export default class TagRenderingAnswer extends UIElement {
if (configuration === undefined) {
throw "Trying to generate a tagRenderingAnswer without configuration..."
}
- this.SetClass("flex items-center flex-row text-lg")
+ this.SetClass("flex items-center flex-row text-lg link-underline")
this.SetStyle("word-wrap: anywhere;");
}
diff --git a/assets/translations.json b/assets/translations.json
index e98ff103f3..dbd7541bc8 100644
--- a/assets/translations.json
+++ b/assets/translations.json
@@ -782,8 +782,8 @@
"de": "Kundenspezifische Themen Dies sind zuvor besuchte benutzergenerierte Themen"
},
"aboutMapcomplete": {
- "en": "About MapComplete With MapComplete you can enrich OpenStreetMap with information on a single theme. Answer a few questions, and within minutes your contributions will be available around the globe! The theme maintainer defines elements, questions and languages for the theme.
Find out more MapComplete always offers the next step to learn more about OpenStreetMap.
* When embedded in a website, the iframe links to a full-screen MapComplete * The full-screen version offers information about OpenStreetMap * Viewing works without login, but editing requires an OSM login. * If you are not logged in, you are asked to log in * Once you answered a single question, you can add new points to the map * After a while, actual OSM-tags are shown, later linking to the wiki Did you notice an issue ? Do you have a feature request ? Want to help translate ? Head over to the source code or issue tracker.
Want to see your progress ? Follow the edit count on OsmCha .
",
- "nl": "Over MapComplete Met MapComplete kun je OpenStreetMap verrijken met informatie over een bepaald thema. Beantwoord enkele vragen, en binnen een paar minuten is jouw bijdrage wereldwijd beschikbaar! De maker van het thema bepaalt de elementen, vragen en taalversies voor het thema.
Ontdek meer MapComplete biedt altijd de volgende stap naar meer OpenStreetMap:
* Indien ingebed in een website linkt het iframe naar de volledige MapComplete * De volledige versie heeft uitleg over OpenStreetMap * Bekijken kan altijd, maar wijzigen vereist een OSM-account * Als je niet aangemeld bent, wordt je gevraagd dit te doen * Als je minstens één vraag hebt beantwoord, kan je ook elementen toevoegen * Heb je genoeg changesets, dan verschijnen de OSM-tags, nog later links naar de wiki Merk je een bug of wil je een extra feature ? Wil je helpen vertalen ? Bezoek dan de broncode en issue tracker .
Wil je je vorderingen zien? Volg de edits op OsmCha .",
+ "en": "About MapComplete With MapComplete you can enrich OpenStreetMap with information on a single theme. Answer a few questions, and within minutes your contributions will be available around the globe! The theme maintainer defines elements, questions and languages for the theme.
Find out more MapComplete always offers the next step to learn more about OpenStreetMap.
When embedded in a website, the iframe links to a full-screen MapComplete The full-screen version offers information about OpenStreetMap Viewing works without login, but editing requires an OSM login. If you are not logged in, you are asked to log in Once you answered a single question, you can add new points to the map After a while, actual OSM-tags are shown, later linking to the wiki Did you notice an issue ? Do you have a feature request ? Want to help translate ? Head over to the source code or issue tracker.
Want to see your progress ? Follow the edit count on OsmCha .
",
+ "nl": "Over MapComplete Met MapComplete kun je OpenStreetMap verrijken met informatie over een bepaald thema. Beantwoord enkele vragen, en binnen een paar minuten is jouw bijdrage wereldwijd beschikbaar! De maker van het thema bepaalt de elementen, vragen en taalversies voor het thema.
Ontdek meer MapComplete biedt altijd de volgende stap naar meer OpenStreetMap:
Indien ingebed in een website linkt het iframe naar de volledige MapComplete De volledige versie heeft uitleg over OpenStreetMap Bekijken kan altijd, maar wijzigen vereist een OSM-account Als je niet aangemeld bent, wordt je gevraagd dit te doen Als je minstens één vraag hebt beantwoord, kan je ook elementen toevoegen Heb je genoeg changesets, dan verschijnen de OSM-tags, nog later links naar de wiki Merk je een bug of wil je een extra feature ? Wil je helpen vertalen ? Bezoek dan de broncode en issue tracker .
Wil je je vorderingen zien? Volg de edits op OsmCha .",
"de": "Über MapComplete MapComplete ist ein OpenStreetMap-Editor, der jedem helfen soll, auf einfache Weise Informationen zu einem Einzelthema hinzuzufügen.
Nur Merkmale, die für ein einzelnes Thema relevant sind, werden mit einigen vordefinierten Fragen gezeigt, um die Dinge einfach und extrem benutzerfreundlich zu halten.Der Themen-Betreuer kann auch eine Sprache für die Schnittstelle wählen, Elemente deaktivieren oder sogar in eine andere Website ohne jegliches UI-Element einbetten.
Ein weiterer wichtiger Teil von MapComplete ist jedoch, immer den nächsten Schritt anzubieten um mehr über OpenStreetMap zu erfahren:
Ein iframe ohne UI-Elemente verlinkt zu einer Vollbildversion Die Vollbildversion bietet Informationen über OpenStreetMap Wenn Sie nicht eingeloggt sind, werden Sie gebeten, sich einzuloggen Wenn Sie eine einzige Frage beantwortet haben, dürfen Sie Punkte hinzufügen An einem bestimmten Punkt erscheinen die tatsächlich hinzugefügten Tags, die später mit dem Wiki verlinkt werden... Fällt Ihnen ein Problem mit MapComplete auf? Haben Sie einen Feature-Wunsch? Wollen Sie beim Übersetzen helfen? Gehen Sie zum Quellcode oder zur Problemverfolgung .
"
},
"backgroundMap": {
diff --git a/index.css b/index.css
index 440512fa9b..cca5fe6e4a 100644
--- a/index.css
+++ b/index.css
@@ -108,6 +108,46 @@ a {
color: var(--foreground-color);
}
+.link-underline a {
+ text-decoration: underline 1px #0078a855;;
+ color: #0078A8;
+}
+
+li {
+ margin-left: 0.5em;
+ padding-left: 0.2em;
+ margin-top: 0.1em;
+}
+
+h2 {
+ font-size: large;
+ margin-top: 0.5em;
+ margin-bottom: 0.3em;
+ font-weight: bold;
+}
+
+h3 {
+ font-size: larger;
+ margin-top: 0.6em;
+ margin-bottom: 0;
+ font-weight: bold;
+}
+
+h3 {
+ font-size: larger;
+ margin-top: 0.6em;
+ margin-bottom: 0;
+ font-weight: bolder;
+}
+
+p {
+ padding-top: 0.1em;
+}
+
+li::marker {
+ content: "•"
+}
+
.subtle-background {
background: var(--subtle-detail-color);
color: var(--subtle-detail-color-contrast);
From 765f3d5e8065169441c6f7c220ea902dd0731d44 Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Mon, 12 Apr 2021 16:54:53 +0200
Subject: [PATCH 33/56] Last small fixes to hailhydrant theme
---
assets/themes/hailhydrant/hailhydrant.json | 92 +++++++++------------
assets/themes/hailhydrant/license_info.json | 6 +-
2 files changed, 38 insertions(+), 60 deletions(-)
diff --git a/assets/themes/hailhydrant/hailhydrant.json b/assets/themes/hailhydrant/hailhydrant.json
index aa186fb210..ca17c2b827 100644
--- a/assets/themes/hailhydrant/hailhydrant.json
+++ b/assets/themes/hailhydrant/hailhydrant.json
@@ -27,10 +27,12 @@
"en": "Map of hydrants"
},
"minzoom": 14,
- "overpassTags": {
- "and": [
- "emergency=fire_hydrant"
- ]
+ "source": {
+ "osmTags": {
+ "and": [
+ "emergency=fire_hydrant"
+ ]
+ }
},
"title": {
"render": {
@@ -196,18 +198,11 @@
"en": "Fire hydrant"
},
"description": {
- "en": "Add a new fire hydrant to the map."
+ "en": "A hydrant is a connection point where firefighters can tap water. It might be located underground."
}
}
],
- "wayHandling": 1,
- "osmSource": {
- "overpassTags": {
- "and": [
- "emergency=fire_hydrant"
- ]
- }
- }
+ "wayHandling": 2
},
{
"id": "extinguisher",
@@ -215,10 +210,12 @@
"en": "Map of fire extinguishers."
},
"minzoom": 14,
- "overpassTags": {
- "and": [
- "emergency=fire_extinguisher"
- ]
+ "source": {
+ "osmTags": {
+ "and": [
+ "emergency=fire_extinguisher"
+ ]
+ }
},
"title": {
"render": {
@@ -286,30 +283,26 @@
"en": "Fire extinguisher"
},
"description": {
- "en": "Add a fire extinguisher to the map"
+ "en": "A fire extinguisher is a small, portable device used to stop a fire"
}
}
],
- "wayHandling": 1,
- "osmSource": {
- "overpassTags": {
- "and": [
- "emergency=fire_extinguisher"
- ]
- }
- }
+ "wayHandling": 1
},
{
- "id": "stations",
+ "id": "fire_stations",
"name": {
"en": "Map of fire stations"
},
"minzoom": 12,
- "overpassTags": {
- "and": [
- "amenity=fire_station"
- ]
+ "source": {
+ "osmTags": {
+ "and": [
+ "amenity=fire_station"
+ ]
+ }
},
+ "wayHandling": 2,
"title": {
"render": {
"en": "Fire Station"
@@ -436,13 +429,13 @@
"render": "./assets/themes/hailhydrant/Twemoji12_1f692.svg"
},
"width": {
- "render": "8"
+ "render": "1"
},
"iconSize": {
"render": "35,35,center"
},
"color": {
- "render": "#00f"
+ "render": "#c22"
},
"presets": [
{
@@ -453,17 +446,10 @@
"en": "Fire station"
},
"description": {
- "en": "Add a fire station to the map."
+ "en": "A fire station is a place where the fire trucks and firefighters are located when not in operation."
}
}
- ],
- "osmSource": {
- "overpassTags": {
- "and": [
- "amenity=fire_station"
- ]
- }
- }
+ ]
},
{
"id": "rescuestation",
@@ -471,10 +457,12 @@
"en": "Map of rescue stations"
},
"minzoom": 12,
- "overpassTags": {
- "and": [
- "amenity=rescue_station"
- ]
+ "source": {
+ "osmTags": {
+ "and": [
+ "amenity=rescue_station"
+ ]
+ }
},
"title": {
"render": {
@@ -503,7 +491,7 @@
"render": "./assets/themes/hailhydrant/Twemoji12_26d1.svg"
},
"width": {
- "render": "8"
+ "render": "1"
},
"iconSize": {
"render": "35,35,center"
@@ -511,7 +499,7 @@
"color": {
"render": "#00f"
},
- "presets": [
+ "presets-disabled": [
{
"tags": [
"amenity=rescue_station"
@@ -524,13 +512,7 @@
}
}
],
- "osmSource": {
- "overpassTags": {
- "and": [
- "amenity=rescue_station"
- ]
- }
- }
+ "wayHandling": 2
}
],
"defaultBackgroundId": "HDM_HOT"
diff --git a/assets/themes/hailhydrant/license_info.json b/assets/themes/hailhydrant/license_info.json
index 57cac7eed7..9a4186fa9f 100644
--- a/assets/themes/hailhydrant/license_info.json
+++ b/assets/themes/hailhydrant/license_info.json
@@ -11,13 +11,10 @@
},
{
"authors": [
- "https://twemoji.twitter.com/"
+ "Twemoji Project"
],
"path": "Twemoji12_1f9ef.svg",
"license": "CC-BY 4.0",
- "authors": [
- "Twemoji Project"
- ],
"sources": [
"https://upload.wikimedia.org/wikipedia/commons/9/9b/Twemoji12_1f9ef.svg",
"https://twemoji.twitter.com/"
@@ -66,7 +63,6 @@
"https://raw.githubusercontent.com/mapamore/MapComplete/master/assets/themes/hailhydrant/hydrant.svg"
]
},
-
{
"path": "Twemoji12_1f692.svg",
"license": "CC-BY 4.0",
From 882e2c4aa96874d6d1afa43ab647090a3a56b16e Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Sat, 17 Apr 2021 11:37:22 +0200
Subject: [PATCH 34/56] Documentation updates, patches image paths in themes to
load remote images from Github
---
AllTranslationAssets.ts | 2 +-
Customizations/AllKnownLayouts.ts | 2 +-
Customizations/JSON/LayerConfig.ts | 1 -
Customizations/JSON/LayoutConfig.ts | 63 +++++++++++++++++++++++++----
Docs/URL_Parameters.md | 28 +++++++++++++
README.md | 10 ++---
index.css | 1 +
index.ts | 4 +-
8 files changed, 93 insertions(+), 18 deletions(-)
diff --git a/AllTranslationAssets.ts b/AllTranslationAssets.ts
index a39c7c1565..78be5c6748 100644
--- a/AllTranslationAssets.ts
+++ b/AllTranslationAssets.ts
@@ -102,7 +102,7 @@ export default class AllTranslationAssets {
getStartedNewAccount: new Translation( {"en":" or create a new account ","nl":" of maak een nieuwe account aan ","fr":" ou enregistrez-vous ","es":" o crea una nueva cuenta ","ca":" o crea un nou compte ","gl":" ou crea unha nova conta ","de":" oder ein neues Konto anlegen "} ),
noTagsSelected: new Translation( {"en":"No tags selected","es":"No se han seleccionado etiquetas","ca":"No s'han seleccionat etiquetes","gl":"Non se seleccionaron etiquetas","nl":"Geen tags geselecteerd","fr":"Aucune balise sélectionnée","de":"Keine Tags ausgewählt"} ),
customThemeIntro: new Translation( {"en":"Custom themes These are previously visited user-generated themes.","nl":"Onofficiële thema's De onderstaande thema's heb je eerder bezocht en zijn gemaakt door andere OpenStreetMappers.","fr":"Thèmes personnalisés Vous avez déjà visité ces thèmes personnalisés.","gl":"Temas personalizados Estes son temas xerados por usuarios previamente visitados.","de":"Kundenspezifische Themen Dies sind zuvor besuchte benutzergenerierte Themen"} ),
- aboutMapcomplete: new Translation( {"en":"About MapComplete With MapComplete you can enrich OpenStreetMap with information on a single theme. Answer a few questions, and within minutes your contributions will be available around the globe! The theme maintainer defines elements, questions and languages for the theme.
Find out more MapComplete always offers the next step to learn more about OpenStreetMap.
When embedded in a website, the iframe links to a full-screen MapComplete The full-screen version offers information about OpenStreetMap Viewing works without login, but editing requires an OSM login. If you are not logged in, you are asked to log in Once you answered a single question, you can add new points to the map After a while, actual OSM-tags are shown, later linking to the wiki Did you notice an issue ? Do you have a feature request ? Want to help translate ? Head over to the source code or issue tracker.
Want to see your progress ? Follow the edit count on OsmCha .
","nl":"Over MapComplete Met MapComplete kun je OpenStreetMap verrijken met informatie over een bepaald thema. Beantwoord enkele vragen, en binnen een paar minuten is jouw bijdrage wereldwijd beschikbaar! De maker van het thema bepaalt de elementen, vragen en taalversies voor het thema.
Ontdek meer MapComplete biedt altijd de volgende stap naar meer OpenStreetMap:
Indien ingebed in een website linkt het iframe naar de volledige MapComplete De volledige versie heeft uitleg over OpenStreetMap Bekijken kan altijd, maar wijzigen vereist een OSM-account Als je niet aangemeld bent, wordt je gevraagd dit te doen Als je minstens één vraag hebt beantwoord, kan je ook elementen toevoegen Heb je genoeg changesets, dan verschijnen de OSM-tags, nog later links naar de wiki Merk je een bug of wil je een extra feature ? Wil je helpen vertalen ? Bezoek dan de broncode en issue tracker .
Wil je je vorderingen zien? Volg de edits op OsmCha .","de":"Über MapComplete MapComplete ist ein OpenStreetMap-Editor, der jedem helfen soll, auf einfache Weise Informationen zu einem Einzelthema hinzuzufügen.
Nur Merkmale, die für ein einzelnes Thema relevant sind, werden mit einigen vordefinierten Fragen gezeigt, um die Dinge einfach und extrem benutzerfreundlich zu halten.Der Themen-Betreuer kann auch eine Sprache für die Schnittstelle wählen, Elemente deaktivieren oder sogar in eine andere Website ohne jegliches UI-Element einbetten.
Ein weiterer wichtiger Teil von MapComplete ist jedoch, immer den nächsten Schritt anzubieten um mehr über OpenStreetMap zu erfahren:
Ein iframe ohne UI-Elemente verlinkt zu einer Vollbildversion Die Vollbildversion bietet Informationen über OpenStreetMap Wenn Sie nicht eingeloggt sind, werden Sie gebeten, sich einzuloggen Wenn Sie eine einzige Frage beantwortet haben, dürfen Sie Punkte hinzufügen An einem bestimmten Punkt erscheinen die tatsächlich hinzugefügten Tags, die später mit dem Wiki verlinkt werden... Fällt Ihnen ein Problem mit MapComplete auf? Haben Sie einen Feature-Wunsch? Wollen Sie beim Übersetzen helfen? Gehen Sie zum Quellcode oder zur Problemverfolgung .
"} ),
+ aboutMapcomplete: new Translation( {"en":"About MapComplete With MapComplete you can enrich OpenStreetMap with information on a single theme. Answer a few questions, and within minutes your contributions will be available around the globe! The theme maintainer defines elements, questions and languages for the theme.
Find out more MapComplete always offers the next step to learn more about OpenStreetMap.
When embedded in a website, the iframe links to a full-screen MapComplete The full-screen version offers information about OpenStreetMap Viewing works without login, but editing requires an OSM login. If you are not logged in, you are asked to log in Once you answered a single question, you can add new points to the map After a while, actual OSM-tags are shown, later linking to the wiki Did you notice an issue ? Do you have a feature request ? Want to help translate ? Head over to the source code or issue tracker.
Want to see your progress ? Follow the edit count on OsmCha .
","nl":"Over MapComplete Met MapComplete kun je OpenStreetMap verrijken met informatie over een bepaald thema. Beantwoord enkele vragen, en binnen een paar minuten is jouw bijdrage wereldwijd beschikbaar! De maker van het thema bepaalt de elementen, vragen en taalversies voor het thema.
Ontdek meer MapComplete biedt altijd de volgende stap naar meer OpenStreetMap:
Indien ingebed in een website linkt het iframe naar de volledige MapComplete De volledige versie heeft uitleg over OpenStreetMap Bekijken kan altijd, maar wijzigen vereist een OSM-account Als je niet aangemeld bent, wordt je gevraagd dit te doen Als je minstens één vraag hebt beantwoord, kan je ook elementen toevoegen Heb je genoeg changesets, dan verschijnen de OSM-tags, nog later links naar de wiki Merk je een bug of wil je een extra feature ? Wil je helpen vertalen ? Bezoek dan de broncode en issue tracker .
Wil je je vorderingen zien? Volg de edits op OsmCha .","de":"Über MapComplete MapComplete ist ein OpenStreetMap-Editor, der jedem helfen soll, auf einfache Weise Informationen zu einem Einzelthema hinzuzufügen.
Nur Merkmale, die für ein einzelnes Thema relevant sind, werden mit einigen vordefinierten Fragen gezeigt, um die Dinge einfach und extrem benutzerfreundlich zu halten.Der Themen-Betreuer kann auch eine Sprache für die Schnittstelle wählen, Elemente deaktivieren oder sogar in eine andere Website ohne jegliches UI-Element einbetten.
Ein weiterer wichtiger Teil von MapComplete ist jedoch, immer den nächsten Schritt anzubieten um mehr über OpenStreetMap zu erfahren:
Ein iframe ohne UI-Elemente verlinkt zu einer Vollbildversion Die Vollbildversion bietet Informationen über OpenStreetMap Wenn Sie nicht eingeloggt sind, werden Sie gebeten, sich einzuloggen Wenn Sie eine einzige Frage beantwortet haben, dürfen Sie Punkte hinzufügen An einem bestimmten Punkt erscheinen die tatsächlich hinzugefügten Tags, die später mit dem Wiki verlinkt werden... Fällt Ihnen ein Problem mit MapComplete auf? Haben Sie einen Feature-Wunsch? Wollen Sie beim Übersetzen helfen? Gehen Sie zum Quellcode oder zur Problemverfolgung .
"} ),
backgroundMap: new Translation( {"en":"Background map","ca":"Mapa de fons","es":"Mapa de fondo","nl":"Achtergrondkaart","fr":"Carte de fonds","de":"Hintergrundkarte"} ),
layerSelection: { zoomInToSeeThisLayer: new Translation( {"en":"Zoom in to see this layer","ca":"Amplia per veure aquesta capa","es":"Amplía para ver esta capa","nl":"Vergroot de kaart om deze laag te zien","fr":"Aggrandissez la carte pour voir cette couche","de":"Vergrößern, um diese Ebene zu sehen"} ),
title: new Translation( {"en":"Select layers","nl":"Selecteer lagen"} ),
diff --git a/Customizations/AllKnownLayouts.ts b/Customizations/AllKnownLayouts.ts
index 87d42f10f7..65c76e2ded 100644
--- a/Customizations/AllKnownLayouts.ts
+++ b/Customizations/AllKnownLayouts.ts
@@ -10,7 +10,7 @@ export class AllKnownLayouts {
public static layoutsList: LayoutConfig[] = AllKnownLayouts.GenerateOrderedList(AllKnownLayouts.allKnownLayouts);
private static GenerateOrderedList(allKnownLayouts: Map): LayoutConfig[] {
- const keys = ["personal", "cyclofix", "bookcases", "toilets", "aed"]
+ const keys = ["personal", "cyclofix", "hailhydrant", "bookcases", "toilets", "aed"]
const list = []
for (const key of keys) {
list.push(allKnownLayouts.get(key))
diff --git a/Customizations/JSON/LayerConfig.ts b/Customizations/JSON/LayerConfig.ts
index c65a55655d..6e87f2b7fb 100644
--- a/Customizations/JSON/LayerConfig.ts
+++ b/Customizations/JSON/LayerConfig.ts
@@ -456,5 +456,4 @@ export default class LayerConfig {
return allIcons;
}
-
}
\ No newline at end of file
diff --git a/Customizations/JSON/LayoutConfig.ts b/Customizations/JSON/LayoutConfig.ts
index 64cfc84c64..91e4d56b64 100644
--- a/Customizations/JSON/LayoutConfig.ts
+++ b/Customizations/JSON/LayoutConfig.ts
@@ -40,11 +40,11 @@ export default class LayoutConfig {
public readonly enableLayers: boolean;
public readonly enableSearch: boolean;
public readonly enableGeolocation: boolean;
- private readonly _official : boolean;
public readonly enableBackgroundLayerSelection: boolean;
public readonly customCss?: string;
+ private readonly _official: boolean;
- constructor(json: LayoutConfigJson, official=true, context?: string) {
+ constructor(json: LayoutConfigJson, official = true, context?: string) {
this._official = official;
this.id = json.id;
context = (context ?? "") + "." + this.id;
@@ -108,7 +108,7 @@ export default class LayoutConfig {
}
// @ts-ignore
- return new LayerConfig(layer,`${this.id}.layers[${i}]`, official)
+ return new LayerConfig(layer, `${this.id}.layers[${i}]`, official)
});
// ALl the layers are constructed, let them share tags in now!
@@ -170,13 +170,13 @@ export default class LayoutConfig {
}
public CustomCodeSnippets(): string[] {
- if(this._official){
+ if (this._official) {
return [];
}
const msg = "This layout uses custom javascript , loaded for the wide internet. The code is printed below, please report suspicious code on the issue tracker of MapComplete: "
const custom = [];
for (const layer of this.layers) {
- custom.push(...layer.CustomCodeSnippets().map(code => code+" "))
+ custom.push(...layer.CustomCodeSnippets().map(code => code + " "))
}
if (custom.length === 0) {
return custom;
@@ -184,8 +184,8 @@ export default class LayoutConfig {
custom.splice(0, 0, msg);
return custom;
}
-
- public ExtractImages() : Set{
+
+ public ExtractImages(): Set {
const icons = new Set()
for (const layer of this.layers) {
layer.ExtractImages().forEach(icons.add, icons)
@@ -194,4 +194,53 @@ export default class LayoutConfig {
icons.add(this.socialImage)
return icons
}
+
+ /**
+ * Replaces all the relative image-urls with a fixed image url
+ * This is to fix loading from external sources
+ *
+ * It should be passed the location where the original theme file is hosted.
+ *
+ * If no images are rewritten, the same object is returned, otherwise a new copy is returned
+ */
+ public patchImages(originalURL: string, originalJson: string): LayoutConfig {
+ const allImages = Array.from(this.ExtractImages())
+ const rewriting = new Map()
+
+ // Needed for absolute urls: note that it doesn't contain a trailing slash
+ const origin = new URL(originalURL).origin
+ let path = new URL(originalURL).href
+ path = path.substring(0, path.lastIndexOf("/"))
+ for (const image of allImages) {
+ if(image == "" || image == undefined){
+ continue
+ }
+ if (image.startsWith("http://") || image.startsWith("https://")) {
+ continue
+ }
+ if (image.startsWith("/")) {
+ // This is an absolute path
+ rewriting.set(image, origin + image)
+ } else if (image.startsWith("./assets/themes")) {
+ // Legacy workaround
+ rewriting.set(image, path + image.substring(image.lastIndexOf("/")))
+ } else if (image.startsWith("./")) {
+ // This is a relative url
+ rewriting.set(image, path + image.substring(1))
+ } else {
+ // This is a relative URL with only the path
+ rewriting.set(image, path + image)
+ }
+ }
+ if (rewriting.size == 0) {
+ return this;
+ }
+ rewriting.forEach((value, key) => {
+ console.log("Rewriting",key, "==>", value)
+
+ originalJson = originalJson.replace(new RegExp(key, "g"), value)
+ })
+ return new LayoutConfig(JSON.parse(originalJson), false, "Layout rewriting")
+ }
+
}
\ No newline at end of file
diff --git a/Docs/URL_Parameters.md b/Docs/URL_Parameters.md
index 49526404dd..0d71e0b712 100644
--- a/Docs/URL_Parameters.md
+++ b/Docs/URL_Parameters.md
@@ -1,3 +1,24 @@
+URL-parameters and URL-hash
+============================
+
+This document gives an overview of which URL-parameters can be used to influence MapComplete.
+
+What is a URL parameter?
+------------------------
+
+URL-parameters are extra parts of the URL used to set the state.
+
+For example, if the url is `https://mapcomplete.osm.be/cyclofix?lat=51.0&lon=4.3&z=5&test=true#node/1234`,
+the URL-parameters are stated in the part between the `?` and the `#`. There are multiple, all seperated by `&`, namely:
+
+- The url-parameter `lat` is `51.0` in this instance
+- The url-parameter `lon` is `4.3` in this instance
+- The url-parameter `z` is `5` in this instance
+- The url-parameter `test` is `true` in this instance
+
+Finally, the URL-hash is the part after the `#`. It is `node/1234` in this case.
+
+
custom-css
------------
If specified, the custom css from the given link will be loaded additionaly
@@ -14,6 +35,13 @@ The layout to load into MapComplete
userlayout
------------
+If not 'false', a custom (non-official) theme is loaded. This custom layout can be done in multiple ways:
+
+- The hash of the URL contains a base64-encoded .json-file containing the theme definition
+- The hash of the URL contains a lz-compressed .json-file, as generated by the custom theme generator
+- The parameter itself is an URL, in which case that URL will be downloaded. It should point to a .json of a theme
+ The default value is _false_
+
The default value is _false_
layer-control-toggle
diff --git a/README.md b/README.md
index cce053ce30..308293909c 100644
--- a/README.md
+++ b/README.md
@@ -3,8 +3,8 @@
> Let a thousand flowers bloom
-
-MapComplete attempts to be a webversion crossover of StreetComplete and MapContrib. It tries to be just as easy to use as StreetComplete, but it allows to focus on one single theme per instance (e.g. nature, bicycle infrastructure, ...)
+MapComplete is an OpenStreetMap viewer and editor. It shows map features on a certain topic, and allows to see, edit and add new features to the map.
+It can be seen as a webversion crossover of StreetComplete and MapContrib. It tries to be just as easy to use as StreetComplete, but it allows to focus on one single theme per instance (e.g. nature, bicycle infrastructure, ...)
The design goals of MapComplete are to be:
@@ -155,12 +155,10 @@ Geolocation is available on mobile only throught hte device's GPS location (so n
TODO: erase cookies of third party websites and API's
-# Attribution
+# Attribution and Copyright
-Data from OpenStreetMap
+The code is available under GPL; all map data comes from OpenStreetMap (both foreground and background maps).
Background layer selection: curated by https://github.com/osmlab/editor-layer-index
Icons are attributed in various 'license_info.json'-files and can be found in the app.
-
-
diff --git a/index.css b/index.css
index cca5fe6e4a..0ebf81afc6 100644
--- a/index.css
+++ b/index.css
@@ -101,6 +101,7 @@ svg, img {
box-sizing: content-box;
width: 100%;
height: 100%;
+ display: unset;
}
diff --git a/index.ts b/index.ts
index d145cd1ae3..b85cf1db0f 100644
--- a/index.ts
+++ b/index.ts
@@ -67,7 +67,7 @@ defaultLayout = QueryParameters.GetQueryParameter("layout", defaultLayout, "The
let layoutToUse: LayoutConfig = AllKnownLayouts.allKnownLayouts.get(defaultLayout.toLowerCase());
-const userLayoutParam = QueryParameters.GetQueryParameter("userlayout", "false");
+const userLayoutParam = QueryParameters.GetQueryParameter("userlayout", "false", "If not 'false', a custom (non-official) theme is loaded. This custom layout can be done in multiple ways: \n\n- The hash of the URL contains a base64-encoded .json-file containing the theme definition\n- The hash of the URL contains a lz-compressed .json-file, as generated by the custom theme generator\n- The parameter itself is an URL, in which case that URL will be downloaded. It should point to a .json of a theme");
const layoutFromBase64 = decodeURIComponent(userLayoutParam.data);
document.getElementById('centermessage').innerText = '';
document.getElementById("decoration-desktop").remove();
@@ -87,7 +87,7 @@ if (layoutFromBase64.startsWith("http")) {
const parsed = JSON.parse(data);
// Overwrite the id to the wiki:value
parsed.id = link;
- const layout = new LayoutConfig(parsed, false);
+ const layout = new LayoutConfig(parsed, false).patchImages(link, data);
InitUiElements.InitAll(layout, layoutFromBase64, testing, layoutFromBase64, btoa(data));
} catch (e) {
new FixedUiElement(`${link} is invalid: ${e} Go back ")`)
From 349230ce7518305a6a662b9563c8f9fc7f42f846 Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Sat, 17 Apr 2021 12:16:09 +0200
Subject: [PATCH 35/56] Add license information, see #239
---
Models/Constants.ts | 2 +-
assets/themes/climbing/license_info.json | 42 ++++++++++++------------
2 files changed, 22 insertions(+), 22 deletions(-)
diff --git a/Models/Constants.ts b/Models/Constants.ts
index 2119841636..ababae8e1f 100644
--- a/Models/Constants.ts
+++ b/Models/Constants.ts
@@ -2,7 +2,7 @@ import { Utils } from "../Utils";
export default class Constants {
- public static vNumber = "0.6.8a";
+ public static vNumber = "0.6.8b";
// The user journey states thresholds when a new feature gets unlocked
public static userJourney = {
diff --git a/assets/themes/climbing/license_info.json b/assets/themes/climbing/license_info.json
index d6036112ab..9c1ff1ac5f 100644
--- a/assets/themes/climbing/license_info.json
+++ b/assets/themes/climbing/license_info.json
@@ -1,78 +1,78 @@
[
{
"authors": [
- "Christian Neumann"
+ "Polarbear w", "Christian Neumann"
],
"path": "climbing_gym.svg",
- "license": "CC-BY-SA 3.0",
+ "license": "CC0",
"sources": [
- "https://utopicode.de/",
+ "https://wiki.openstreetmap.org/wiki/File:Climbing_icon_no_rope.svg", "https://utopicode.de/",
"https://github.com/chrneumann/MapComplete"
]
},
{
"authors": [
- "Christian Neumann"
+ "Polarbear w", "Christian Neumann"
],
"path": "climbing_icon.svg",
- "license": "CC-BY-SA 3.0",
+ "license": "CC0",
"sources": [
- "https://utopicode.de/",
+ "https://wiki.openstreetmap.org/wiki/File:Climbing_icon_no_rope.svg", "https://utopicode.de/",
"https://github.com/chrneumann/MapComplete"
]
},
{
"authors": [
- "Christian Neumann"
+ "Polarbear w", "Christian Neumann"
],
"path": "climbing_no_rope.svg",
- "license": "CC-BY-SA 3.0",
+ "license": "CC0",
"sources": [
- "https://utopicode.de/",
+ "https://wiki.openstreetmap.org/wiki/File:Climbing_icon_no_rope.svg", "https://utopicode.de/",
"https://github.com/chrneumann/MapComplete"
]
},
{
"authors": [
- "Christian Neumann"
+ "Polarbear w", "Christian Neumann"
],
"path": "climbing_rope.svg",
- "license": "CC-BY-SA 3.0",
+ "license": "CC0",
"sources": [
- "https://utopicode.de/",
+ "https://wiki.openstreetmap.org/wiki/File:Climbing_icon_no_rope.svg", "https://utopicode.de/",
"https://github.com/chrneumann/MapComplete"
]
},
{
"authors": [
- "Christian Neumann"
+ "Polarbear w", "Christian Neumann"
],
"path": "climbing_route.svg",
- "license": "CC-BY-SA 3.0",
+ "license": "CC0",
"sources": [
- "https://utopicode.de/",
+ "https://wiki.openstreetmap.org/wiki/File:Climbing_icon_no_rope.svg", "https://utopicode.de/",
"https://github.com/chrneumann/MapComplete"
]
},
{
"authors": [
- "Christian Neumann"
+ "Polarbear w", "Christian Neumann"
],
"path": "climbing_unknown.svg",
- "license": "CC-BY-SA 3.0",
+ "license": "CC0",
"sources": [
- "https://utopicode.de/",
+ "https://wiki.openstreetmap.org/wiki/File:Climbing_icon_no_rope.svg", "https://utopicode.de/",
"https://github.com/chrneumann/MapComplete"
]
},
{
"authors": [
- "Christian Neumann"
+ "Polarbear w", "Christian Neumann"
],
"path": "club.svg",
- "license": "CC-BY-SA 3.0",
+ "license": "CC0",
"sources": [
- "https://utopicode.de/",
+ "https://wiki.openstreetmap.org/wiki/File:Climbing_icon_no_rope.svg", "https://utopicode.de/",
"https://github.com/chrneumann/MapComplete"
]
}
From 507d780f0b8655ea63710c3cd487d63571515fb8 Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Sat, 17 Apr 2021 12:25:33 +0200
Subject: [PATCH 36/56] Fix #244
---
UI/OpeningHours/OhVisualization.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/UI/OpeningHours/OhVisualization.ts b/UI/OpeningHours/OhVisualization.ts
index cea8e7c065..e930228aa9 100644
--- a/UI/OpeningHours/OhVisualization.ts
+++ b/UI/OpeningHours/OhVisualization.ts
@@ -206,7 +206,7 @@ export default class OpeningHoursVisualization extends UIElement {
}
return Translations.t.general.opening_hours.closed_permanently.SetClass("ohviz-closed").Render()
}
- const moment = `${opensAtDate.getDay()}/${opensAtDate.getMonth() + 1} ${OH.hhmm(opensAtDate.getHours(), opensAtDate.getMinutes())}`
+ const moment = `${opensAtDate.getDate()}/${opensAtDate.getMonth() + 1} ${OH.hhmm(opensAtDate.getHours(), opensAtDate.getMinutes())}`
return Translations.t.general.opening_hours.closed_until.Subs({date: moment}).SetClass("ohviz-closed").Render()
}
From 807628c8d2f7dcf4686a9b77800849ead8ee364c Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Sat, 17 Apr 2021 12:46:18 +0200
Subject: [PATCH 37/56] Add zero waste question in the fritures theme
---
assets/themes/fritures/fritures.json | 29 ++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/assets/themes/fritures/fritures.json b/assets/themes/fritures/fritures.json
index 99cb659214..04d0a6c829 100644
--- a/assets/themes/fritures/fritures.json
+++ b/assets/themes/fritures/fritures.json
@@ -224,6 +224,35 @@
}
]
},
+ {
+ "question": {
+ "nl": "Als je je eigen container (bv. kookpot of kleine potjes voor saus) meeneemt, gebruikt de frituur deze dan om je bestelling in te doen?",
+ "en": "If you bring your own container (such as a cooking pot and small pots), is it used to package your order? "
+ },
+ "mappings": [
+ {
+ "if": "bulk_purchase=yes",
+ "then": {
+ "nl": "Je mag je eigen containers meenemen om je bestelling in mee te nemen en zo minder afval te maken",
+ "en": "You can bring your own containers to get your order, saving on single-use packaging material and thus waste"
+ }
+ },
+ {
+ "if": "bulk_purchase=no",
+ "then": {
+ "nl": "Je mag geen eigen containers meenemen om je bestelling in mee te nemen",
+ "en": "Bringing your own container is not allowed "
+ }
+ },
+ {
+ "if": "bulk_purchase=only",
+ "then": {
+ "nl": "Je moet je eigen containers meenemen om je bestelling in mee te nemen.",
+ "en": "You must bring your own container to order here."
+ }
+ }
+ ]
+ },
"questions",
"reviews"
],
From 576fd8ff4021f13fa309011afe74369535379e50 Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Sat, 17 Apr 2021 15:42:22 +0200
Subject: [PATCH 38/56] Add cache timeout
---
Customizations/JSON/LayoutConfig.ts | 5 +++++
Customizations/JSON/LayoutConfigJson.ts | 19 +++++++++++++++++++
Logic/FeatureSource/LocalStorageSaver.ts | 4 ++++
Models/Constants.ts | 2 +-
assets/themes/grb.json | 1 +
5 files changed, 30 insertions(+), 1 deletion(-)
diff --git a/Customizations/JSON/LayoutConfig.ts b/Customizations/JSON/LayoutConfig.ts
index 91e4d56b64..0da4f1e7fb 100644
--- a/Customizations/JSON/LayoutConfig.ts
+++ b/Customizations/JSON/LayoutConfig.ts
@@ -42,6 +42,10 @@ export default class LayoutConfig {
public readonly enableGeolocation: boolean;
public readonly enableBackgroundLayerSelection: boolean;
public readonly customCss?: string;
+ /*
+ How long is the cache valid, in seconds?
+ */
+ public readonly cacheTimeout?: number;
private readonly _official: boolean;
constructor(json: LayoutConfigJson, official = true, context?: string) {
@@ -167,6 +171,7 @@ export default class LayoutConfig {
this.enableAddNewPoints = json.enableAddNewPoints ?? true;
this.enableBackgroundLayerSelection = json.enableBackgroundLayerSelection ?? true;
this.customCss = json.customCss;
+ this.cacheTimeout = json.cacheTimout ?? (60 * 24 * 60 * 60)
}
public CustomCodeSnippets(): string[] {
diff --git a/Customizations/JSON/LayoutConfigJson.ts b/Customizations/JSON/LayoutConfigJson.ts
index 0b63c727b5..e70677e269 100644
--- a/Customizations/JSON/LayoutConfigJson.ts
+++ b/Customizations/JSON/LayoutConfigJson.ts
@@ -118,6 +118,25 @@ export interface LayoutConfigJson {
* The id of the default background. BY default: vanilla OSM
*/
defaultBackgroundId?: string;
+
+ /**
+ * The number of seconds that a feature is allowed to stay in the cache.
+ * The caching flow is as following:
+ *
+ * 1. The application is opened the first time
+ * 2. An overpass query is run
+ * 3. The result is saved to local storage
+ *
+ * On the next opening:
+ *
+ * 1. The application is opened
+ * 2. Data is loaded from cache and displayed
+ * 3. An overpass query is run
+ * 4. All data (both from overpass ánd local storage) are saved again to local storage (except when to old)
+ *
+ * Default value: 60 days
+ */
+ cacheTimout?: number;
/**
diff --git a/Logic/FeatureSource/LocalStorageSaver.ts b/Logic/FeatureSource/LocalStorageSaver.ts
index 6dc4630981..e97780d6a3 100644
--- a/Logic/FeatureSource/LocalStorageSaver.ts
+++ b/Logic/FeatureSource/LocalStorageSaver.ts
@@ -15,6 +15,10 @@ export default class LocalStorageSaver implements FeatureSource {
this.features = source.features;
this.features.addCallbackAndRun(features => {
+
+ const now = new Date().getTime()
+ features = features.filter(f => layout.data.cacheTimeout > Math.abs(now - f.freshness.getTime())/1000)
+
if (features === undefined) {
return;
}
diff --git a/Models/Constants.ts b/Models/Constants.ts
index ababae8e1f..efc8ffe2da 100644
--- a/Models/Constants.ts
+++ b/Models/Constants.ts
@@ -2,7 +2,7 @@ import { Utils } from "../Utils";
export default class Constants {
- public static vNumber = "0.6.8b";
+ public static vNumber = "0.6.8c";
// The user journey states thresholds when a new feature gets unlocked
public static userJourney = {
diff --git a/assets/themes/grb.json b/assets/themes/grb.json
index 1ade2d18c1..7f38732af7 100644
--- a/assets/themes/grb.json
+++ b/assets/themes/grb.json
@@ -19,6 +19,7 @@
"startLon": 3.231,
"startZoom": 14,
"widenFactor": 0.05,
+ "cacheTimeout": 3600,
"socialImage": "",
"layers": [
{
From 7b47af8978ce417b111b3aac01ccc60c13660adf Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Sat, 17 Apr 2021 23:36:46 +0200
Subject: [PATCH 39/56] Add license info, fix non-updating values after
reopening popups
---
Logic/Actors/TitleHandler.ts | 9 ++--
Logic/ElementStorage.ts | 20 +++++----
Logic/FeatureSource/LocalStorageSaver.ts | 7 ++--
.../FeatureSource/MetaTaggingFeatureSource.ts | 7 +++-
Logic/Osm/Changes.ts | 2 +
Logic/SimpleMetaTagger.ts | 4 +-
Logic/Tags/TagsFilter.ts | 4 +-
Logic/UIEventSource.ts | 1 +
UI/Popup/FeatureInfoBox.ts | 13 +++---
UI/ShowDataLayer.ts | 4 +-
assets/themes/climbing/license_info.json | 42 ++++++++++++-------
11 files changed, 71 insertions(+), 42 deletions(-)
diff --git a/Logic/Actors/TitleHandler.ts b/Logic/Actors/TitleHandler.ts
index 93bb4bb452..f03961ae1d 100644
--- a/Logic/Actors/TitleHandler.ts
+++ b/Logic/Actors/TitleHandler.ts
@@ -42,10 +42,11 @@ class TitleElement extends UIElement {
continue;
}
if (layer.source.osmTags.matchesProperties(properties)) {
- const title = new TagRenderingAnswer(
- this._allElementsStorage.addOrGetElement(feature),
- layer.title
- )
+ const tags = this._allElementsStorage.getEventSourceById(feature.properties.id);
+ if (tags == undefined) {
+ return defaultTitle;
+ }
+ const title = new TagRenderingAnswer(tags, layer.title)
return new Combine([defaultTitle, " | ", title]).Render();
}
}
diff --git a/Logic/ElementStorage.ts b/Logic/ElementStorage.ts
index d301d794e2..553d305e2e 100644
--- a/Logic/ElementStorage.ts
+++ b/Logic/ElementStorage.ts
@@ -5,14 +5,14 @@ import {UIEventSource} from "./UIEventSource";
export class ElementStorage {
- private _elements = [];
+ private _elements = new Map>();
constructor() {
}
addElementById(id: string, eventSource: UIEventSource) {
- this._elements[id] = eventSource;
+ this._elements.set(id, eventSource);
}
/**
@@ -23,14 +23,13 @@ export class ElementStorage {
*/
addOrGetElement(feature: any): UIEventSource {
const elementId = feature.properties.id;
- if (elementId in this._elements) {
- const es = this._elements[elementId];
+ if (this._elements.has(elementId)) {
+ const es = this._elements.get(elementId);
if (es.data == feature.properties) {
// Reference comparison gives the same object! we can just return the event source
return es;
}
-
const keptKeys = es.data;
// The element already exists
// We add all the new keys to the old keys
@@ -49,15 +48,20 @@ export class ElementStorage {
return es;
} else {
const eventSource = new UIEventSource(feature.properties, "tags of " + feature.properties.id);
- this._elements[feature.properties.id] = eventSource;
+ this._elements.set(feature.properties.id, eventSource);
return eventSource;
}
}
getEventSourceById(elementId): UIEventSource {
- if (elementId in this._elements) {
- return this._elements[elementId];
+ if (this._elements.has(elementId)) {
+ return this._elements.get(elementId);
}
console.error("Can not find eventsource with id ", elementId);
+ return undefined;
+ }
+
+ has(id) {
+ return this._elements.has(id);
}
}
\ No newline at end of file
diff --git a/Logic/FeatureSource/LocalStorageSaver.ts b/Logic/FeatureSource/LocalStorageSaver.ts
index e97780d6a3..5a66cef056 100644
--- a/Logic/FeatureSource/LocalStorageSaver.ts
+++ b/Logic/FeatureSource/LocalStorageSaver.ts
@@ -15,13 +15,14 @@ export default class LocalStorageSaver implements FeatureSource {
this.features = source.features;
this.features.addCallbackAndRun(features => {
+ if (features === undefined) {
+ return;
+ }
const now = new Date().getTime()
features = features.filter(f => layout.data.cacheTimeout > Math.abs(now - f.freshness.getTime())/1000)
- if (features === undefined) {
- return;
- }
+
if(features.length == 0){
return;
}
diff --git a/Logic/FeatureSource/MetaTaggingFeatureSource.ts b/Logic/FeatureSource/MetaTaggingFeatureSource.ts
index fd2472203c..5b3ef12142 100644
--- a/Logic/FeatureSource/MetaTaggingFeatureSource.ts
+++ b/Logic/FeatureSource/MetaTaggingFeatureSource.ts
@@ -15,8 +15,11 @@ export default class MetaTaggingFeatureSource implements FeatureSource {
}
featuresFreshness.forEach(featureFresh => {
const feature = featureFresh.feature;
- State.state.allElements.addOrGetElement(feature);
-
+
+ if(!State.state.allElements.has(feature.properties.id)){
+ State.state.allElements.addOrGetElement(feature)
+ }
+
if (Hash.hash.data === feature.properties.id) {
State.state.selectedElement.setData(feature);
}
diff --git a/Logic/Osm/Changes.ts b/Logic/Osm/Changes.ts
index caf0afe664..0471a49cd1 100644
--- a/Logic/Osm/Changes.ts
+++ b/Logic/Osm/Changes.ts
@@ -57,9 +57,11 @@ export class Changes implements FeatureSource{
if (changes.length == 0) {
return;
}
+
for (const change of changes) {
if (elementTags[change.k] !== change.v) {
elementTags[change.k] = change.v;
+ console.log("Applied ", change.k, "=", change.v)
this.pending.data.push({elementId: elementTags.id, key: change.k, value: change.v});
}
}
diff --git a/Logic/SimpleMetaTagger.ts b/Logic/SimpleMetaTagger.ts
index ae77b7b2cf..30bf19140b 100644
--- a/Logic/SimpleMetaTagger.ts
+++ b/Logic/SimpleMetaTagger.ts
@@ -64,7 +64,7 @@ export default class SimpleMetaTagger {
SimpleMetaTagger.GetCountryCodeFor(lon, lat, (countries) => {
try {
feature.properties["_country"] = countries[0].trim().toLowerCase();
- const tagsSource = State.state.allElements.addOrGetElement(feature);
+ const tagsSource = State.state.allElements.getEventSourceById(feature.properties.id);
tagsSource.ping();
} catch (e) {
console.warn(e)
@@ -77,7 +77,7 @@ export default class SimpleMetaTagger {
"If 'opening_hours' is present, it will add the current state of the feature (being 'yes' or 'no')",
(feature => {
- const tagsSource = State.state.allElements.addOrGetElement(feature);
+ const tagsSource = State.state.allElements.getEventSourceById(feature.properties.id);
tagsSource.addCallbackAndRun(tags => {
if (tags.opening_hours === undefined || tags._country === undefined) {
return;
diff --git a/Logic/Tags/TagsFilter.ts b/Logic/Tags/TagsFilter.ts
index 5400aa845d..3b93d41bb0 100644
--- a/Logic/Tags/TagsFilter.ts
+++ b/Logic/Tags/TagsFilter.ts
@@ -14,7 +14,9 @@ export abstract class TagsFilter {
/**
* Converts the tagsFilter into a list of key-values that should be uploaded to OSM.
- * Throws an error if not applicable
+ * Throws an error if not applicable.
+ *
+ * Note: properties are the already existing tags-object. It is only used in the substituting tag
*/
abstract asChange(properties:any): {k: string, v:string}[]
diff --git a/Logic/UIEventSource.ts b/Logic/UIEventSource.ts
index 8f604fdce2..0c92d314f5 100644
--- a/Logic/UIEventSource.ts
+++ b/Logic/UIEventSource.ts
@@ -21,6 +21,7 @@ export class UIEventSource {
for (let i = 0; i < 10; i++) {
console.log(copy[i].tag, copy[i]);
}
+ return UIEventSource.allSources;
}
return [];
}
diff --git a/UI/Popup/FeatureInfoBox.ts b/UI/Popup/FeatureInfoBox.ts
index 7cea701a0f..b81e1afc25 100644
--- a/UI/Popup/FeatureInfoBox.ts
+++ b/UI/Popup/FeatureInfoBox.ts
@@ -19,7 +19,7 @@ export default class FeatureInfoBox extends ScrollableFullScreen {
super(() => FeatureInfoBox.GenerateTitleBar(tags, layerConfig),
() => FeatureInfoBox.GenerateContent(tags, layerConfig),
tags.data.id);
-
+
if (layerConfig === undefined) {
throw "Undefined layerconfig";
}
@@ -49,6 +49,7 @@ export default class FeatureInfoBox extends ScrollableFullScreen {
private static GenerateContent(tags: UIEventSource,
layerConfig: LayerConfig): UIElement {
let questionBox: UIElement = undefined;
+
if (State.state.featureSwitchUserbadge.data) {
questionBox = new QuestionBox(tags, layerConfig.tagRenderings);
}
@@ -60,15 +61,15 @@ export default class FeatureInfoBox extends ScrollableFullScreen {
questionBoxIsUsed = true;
return questionBox;
}
- return new EditableTagRendering(tags, tr);
+ return new EditableTagRendering(tags, tr);
});
if (!questionBoxIsUsed) {
renderings.push(questionBox);
}
-
- if(State.state.featureSwitchIsDebugging.data){
- const config: TagRenderingConfig = new TagRenderingConfig({render:"{all_tags()}"}, new Tag("id",""), "");
- renderings.push(new TagRenderingAnswer(tags,config ))
+
+ if (State.state.featureSwitchIsDebugging.data) {
+ const config: TagRenderingConfig = new TagRenderingConfig({render: "{all_tags()}"}, new Tag("id", ""), "");
+ renderings.push(new TagRenderingAnswer(tags, config))
}
return new Combine(renderings).SetClass("block")
diff --git a/UI/ShowDataLayer.ts b/UI/ShowDataLayer.ts
index b077ea3411..4ebe82e452 100644
--- a/UI/ShowDataLayer.ts
+++ b/UI/ShowDataLayer.ts
@@ -88,7 +88,7 @@ export default class ShowDataLayer {
marker.openPopup();
const popup = marker.getPopup();
- const tags = State.state.allElements.addOrGetElement(selected);
+ const tags = State.state.allElements.getEventSourceById(selected.properties.id);
const layer: LayerConfig = this._layerDict[selected._matching_layer_id];
const infoBox = FeatureInfoBox.construct(tags, layer);
@@ -118,7 +118,7 @@ export default class ShowDataLayer {
// We have to convert them to the appropriate icon
// Click handling is done in the next step
- const tagSource = State.state.allElements.addOrGetElement(feature)
+ const tagSource = State.state.allElements.getEventSourceById(feature.properties.id)
const layer: LayerConfig = this._layerDict[feature._matching_layer_id];
if (layer === undefined) {
diff --git a/assets/themes/climbing/license_info.json b/assets/themes/climbing/license_info.json
index 9c1ff1ac5f..e6542e346a 100644
--- a/assets/themes/climbing/license_info.json
+++ b/assets/themes/climbing/license_info.json
@@ -1,78 +1,92 @@
[
{
"authors": [
- "Polarbear w", "Christian Neumann"
+ "Polarbear w",
+ "Christian Neumann"
],
"path": "climbing_gym.svg",
"license": "CC0",
"sources": [
- "https://wiki.openstreetmap.org/wiki/File:Climbing_icon_no_rope.svg", "https://utopicode.de/",
+ "https://wiki.openstreetmap.org/wiki/File:Climbing_icon_no_rope.svg",
+ "https://utopicode.de/",
"https://github.com/chrneumann/MapComplete"
]
},
{
"authors": [
- "Polarbear w", "Christian Neumann"
+ "Polarbear w",
+ "Christian Neumann"
],
"path": "climbing_icon.svg",
"license": "CC0",
"sources": [
- "https://wiki.openstreetmap.org/wiki/File:Climbing_icon_no_rope.svg", "https://utopicode.de/",
+ "https://wiki.openstreetmap.org/wiki/File:Climbing_icon_no_rope.svg",
+ "https://utopicode.de/",
"https://github.com/chrneumann/MapComplete"
]
},
{
"authors": [
- "Polarbear w", "Christian Neumann"
+ "Polarbear w",
+ "Christian Neumann"
],
"path": "climbing_no_rope.svg",
"license": "CC0",
"sources": [
- "https://wiki.openstreetmap.org/wiki/File:Climbing_icon_no_rope.svg", "https://utopicode.de/",
+ "https://wiki.openstreetmap.org/wiki/File:Climbing_icon_no_rope.svg",
+ "https://utopicode.de/",
"https://github.com/chrneumann/MapComplete"
]
},
{
"authors": [
- "Polarbear w", "Christian Neumann"
+ "Polarbear w",
+ "Christian Neumann"
],
"path": "climbing_rope.svg",
"license": "CC0",
"sources": [
- "https://wiki.openstreetmap.org/wiki/File:Climbing_icon_no_rope.svg", "https://utopicode.de/",
+ "https://wiki.openstreetmap.org/wiki/File:Climbing_icon_no_rope.svg",
+ "https://utopicode.de/",
"https://github.com/chrneumann/MapComplete"
]
},
{
"authors": [
- "Polarbear w", "Christian Neumann"
+ "Polarbear w",
+ "Christian Neumann"
],
"path": "climbing_route.svg",
"license": "CC0",
"sources": [
- "https://wiki.openstreetmap.org/wiki/File:Climbing_icon_no_rope.svg", "https://utopicode.de/",
+ "https://wiki.openstreetmap.org/wiki/File:Climbing_icon_no_rope.svg",
+ "https://utopicode.de/",
"https://github.com/chrneumann/MapComplete"
]
},
{
"authors": [
- "Polarbear w", "Christian Neumann"
+ "Polarbear w",
+ "Christian Neumann"
],
"path": "climbing_unknown.svg",
"license": "CC0",
"sources": [
- "https://wiki.openstreetmap.org/wiki/File:Climbing_icon_no_rope.svg", "https://utopicode.de/",
+ "https://wiki.openstreetmap.org/wiki/File:Climbing_icon_no_rope.svg",
+ "https://utopicode.de/",
"https://github.com/chrneumann/MapComplete"
]
},
{
"authors": [
- "Polarbear w", "Christian Neumann"
+ "Polarbear w",
+ "Christian Neumann"
],
"path": "club.svg",
"license": "CC0",
"sources": [
- "https://wiki.openstreetmap.org/wiki/File:Climbing_icon_no_rope.svg", "https://utopicode.de/",
+ "https://wiki.openstreetmap.org/wiki/File:Climbing_icon_no_rope.svg",
+ "https://utopicode.de/",
"https://github.com/chrneumann/MapComplete"
]
}
From 12afdcab753b9c5d22545a620a7873c449bf5a46 Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Sun, 18 Apr 2021 14:24:30 +0200
Subject: [PATCH 40/56] Add better relation support
---
Customizations/JSON/LayerConfigJson.ts | 5 +-
Customizations/JSON/TagRenderingConfig.ts | 5 +-
Docs/CalculatedTags.md | 7 +-
Logic/ExtraFunction.ts | 35 +-
Logic/FeatureSource/FeaturePipeline.ts | 36 +-
.../FeatureSource/MetaTaggingFeatureSource.ts | 4 -
.../FeatureSource/RegisteringFeatureSource.ts | 19 +
Logic/GeoOperations.ts | 5 +-
Logic/Osm/ExtractRelations.ts | 58 +
Logic/Osm/Overpass.ts | 5 +-
Logic/SimpleMetaTagger.ts | 13 +
Models/Constants.ts | 2 +-
State.ts | 6 +
UI/Popup/TagRenderingAnswer.ts | 4 +-
assets/themes/speelplekken/speelplekken.json | 122 +-
package-lock.json | 4691 +++++++++--------
package.json | 4 +
scripts/generateLayerOverview.ts | 2 +-
18 files changed, 2637 insertions(+), 2386 deletions(-)
create mode 100644 Logic/FeatureSource/RegisteringFeatureSource.ts
create mode 100644 Logic/Osm/ExtractRelations.ts
diff --git a/Customizations/JSON/LayerConfigJson.ts b/Customizations/JSON/LayerConfigJson.ts
index 34d0a8c056..f0f88c3d1a 100644
--- a/Customizations/JSON/LayerConfigJson.ts
+++ b/Customizations/JSON/LayerConfigJson.ts
@@ -130,8 +130,11 @@ export interface LayerConfigJson {
*/
rotation?: string | TagRenderingConfigJson;
/**
- * A HTML-fragment that is shown at the center of the icon, for example:
+ * A HTML-fragment that is shown below the icon, for example:
* {name}
+ *
+ * If the icon is undefined, then the label is shown in the center of the feature.
+ * Note that, if the wayhandling hides the icon then no label is shown as well.
*/
label?: string | TagRenderingConfigJson ;
diff --git a/Customizations/JSON/TagRenderingConfig.ts b/Customizations/JSON/TagRenderingConfig.ts
index 05661b737c..d5d237a145 100644
--- a/Customizations/JSON/TagRenderingConfig.ts
+++ b/Customizations/JSON/TagRenderingConfig.ts
@@ -77,7 +77,8 @@ export default class TagRenderingConfig {
throw `Freeform.key is undefined or the empty string - this is not allowed; either fill out something or remove the freeform block alltogether. Error in ${context}`
}
if (ValidatedTextField.AllTypes[this.freeform.type] === undefined) {
- throw `Freeform.key ${this.freeform.key} is an invalid type`
+ const knownKeys = ValidatedTextField.tpList.map(tp => tp.name).join(", ");
+ throw `Freeform.key ${this.freeform.key} is an invalid type. Known keys are ${knownKeys}`
}
if (this.freeform.addExtraTags) {
const usedKeys = new And(this.freeform.addExtraTags).usedKeys();
@@ -204,7 +205,7 @@ export default class TagRenderingConfig {
return true;
}
if (this.multiAnswer) {
- for (const m of this.mappings) {
+ for (const m of this.mappings ?? []) {
if (TagUtils.MatchesMultiAnswer(m.if, tags)) {
return true;
}
diff --git a/Docs/CalculatedTags.md b/Docs/CalculatedTags.md
index d531ca393e..3393737e4f 100644
--- a/Docs/CalculatedTags.md
+++ b/Docs/CalculatedTags.md
@@ -53,6 +53,7 @@ The above code will be executed for every feature in the layer. The feature is a
* distanceTo
* overlapWith
* closest
+* memberships
### distanceTo
@@ -71,4 +72,8 @@ Gives a list of features from the specified layer which this feature overlaps wi
Given either a list of geojson features or a single layer name, gives the single object which is nearest to the feature. In the case of ways/polygons, only the centerpoint is considered.
-* list of features
\ No newline at end of file
+* list of features
+
+### memberships
+
+Gives a list of {role: string, relation: Relation}-objects, containing all the relations that this feature is part of. For example: \`\_part\_of\_walking\_routes=feat.memberships().map(r => r.relation.tags.name).join(';')\`
\ No newline at end of file
diff --git a/Logic/ExtraFunction.ts b/Logic/ExtraFunction.ts
index 1689e67d14..e7aae024a7 100644
--- a/Logic/ExtraFunction.ts
+++ b/Logic/ExtraFunction.ts
@@ -1,6 +1,7 @@
import {GeoOperations} from "./GeoOperations";
import {UIElement} from "../UI/UIElement";
import Combine from "../UI/Base/Combine";
+import State from "../State";
export class ExtraFunction {
@@ -35,7 +36,7 @@ The above code will be executed for every feature in the layer. The feature is a
Some advanced functions are available on feat as well:
`
- private static OverlapFunc = new ExtraFunction(
+ private static readonly OverlapFunc = new ExtraFunction(
"overlapWith",
"Gives a list of features from the specified layer which this feature overlaps with, the amount of overlap in m². The returned value is { feat: GeoJSONFeature, overlap: number} ",
["...layerIds - one or more layer ids of the layer from which every feature is checked for overlap)"],
@@ -56,26 +57,26 @@ Some advanced functions are available on feat as well:
}
}
)
- private static DistanceToFunc = new ExtraFunction(
+ private static readonly DistanceToFunc = new ExtraFunction(
"distanceTo",
"Calculates the distance between the feature and a specified point",
["longitude", "latitude"],
(featuresPerLayer, feature) => {
return (arg0, lat) => {
- if(typeof arg0 === "number"){
+ if (typeof arg0 === "number") {
const lon = arg0
// Feature._lon and ._lat is conveniently place by one of the other metatags
return GeoOperations.distanceBetween([lon, lat], [feature._lon, feature._lat]);
- }else{
+ } else {
// arg0 is probably a feature
- return GeoOperations.distanceBetween(GeoOperations.centerpointCoordinates(arg0),[feature._lon, feature._lat])
+ return GeoOperations.distanceBetween(GeoOperations.centerpointCoordinates(arg0), [feature._lon, feature._lat])
}
-
+
}
}
)
- private static ClosestObjectFunc = new ExtraFunction(
+ private static readonly ClosestObjectFunc = new ExtraFunction(
"closest",
"Given either a list of geojson features or a single layer name, gives the single object which is nearest to the feature. In the case of ways/polygons, only the centerpoint is considered.",
["list of features"],
@@ -87,7 +88,7 @@ Some advanced functions are available on feat as well:
let closestFeature = undefined;
let closestDistance = undefined;
for (const otherFeature of features) {
- if(otherFeature == feature){
+ if (otherFeature == feature) {
continue; // We ignore self
}
let distance = undefined;
@@ -99,10 +100,10 @@ Some advanced functions are available on feat as well:
[feature._lon, feature._lat]
)
}
- if(distance === undefined){
+ if (distance === undefined) {
throw "Undefined distance!"
}
- if(closestFeature === undefined || distance < closestDistance){
+ if (closestFeature === undefined || distance < closestDistance) {
closestFeature = otherFeature
closestDistance = distance;
}
@@ -113,7 +114,19 @@ Some advanced functions are available on feat as well:
)
- private static readonly allFuncs: ExtraFunction[] = [ExtraFunction.DistanceToFunc, ExtraFunction.OverlapFunc, ExtraFunction.ClosestObjectFunc];
+ private static readonly Memberships = new ExtraFunction(
+ "memberships",
+ "Gives a list of {role: string, relation: Relation}-objects, containing all the relations that this feature is part of. \n\nFor example: `_part_of_walking_routes=feat.memberships().map(r => r.relation.tags.name).join(';')`",
+ [],
+ (featuresPerLayer, feature) => {
+ return () => {
+ return State.state.knownRelations.data?.get(feature.id) ?? [];
+ }
+
+ }
+ )
+
+ private static readonly allFuncs: ExtraFunction[] = [ExtraFunction.DistanceToFunc, ExtraFunction.OverlapFunc, ExtraFunction.ClosestObjectFunc, ExtraFunction.Memberships];
private readonly _name: string;
private readonly _args: string[];
private readonly _doc: string;
diff --git a/Logic/FeatureSource/FeaturePipeline.ts b/Logic/FeatureSource/FeaturePipeline.ts
index f6cca66ff3..4b79cfbeaf 100644
--- a/Logic/FeatureSource/FeaturePipeline.ts
+++ b/Logic/FeatureSource/FeaturePipeline.ts
@@ -12,6 +12,7 @@ import LayoutConfig from "../../Customizations/JSON/LayoutConfig";
import Loc from "../../Models/Loc";
import GeoJsonSource from "./GeoJsonSource";
import MetaTaggingFeatureSource from "./MetaTaggingFeatureSource";
+import RegisteringFeatureSource from "./RegisteringFeatureSource";
export default class FeaturePipeline implements FeatureSource {
@@ -24,33 +25,38 @@ export default class FeaturePipeline implements FeatureSource {
locationControl: UIEventSource) {
const amendedOverpassSource =
- new RememberingSource(new FeatureDuplicatorPerLayer(flayers,
- new LocalStorageSaver(updater, layout))
- );
+ new RememberingSource(
+ new LocalStorageSaver(
+ new MetaTaggingFeatureSource( // first we metatag, then we save to get the metatags into storage too
+ new RegisteringFeatureSource(
+ new FeatureDuplicatorPerLayer(flayers,
+ updater)
+ )), layout));
const geojsonSources: GeoJsonSource [] = []
for (const flayer of flayers.data) {
const sourceUrl = flayer.layerDef.source.geojsonSource
if (sourceUrl !== undefined) {
- geojsonSources.push(
- new GeoJsonSource(flayer.layerDef.id, sourceUrl))
+ geojsonSources.push(new RegisteringFeatureSource(new FeatureDuplicatorPerLayer(flayers,
+ new GeoJsonSource(flayer.layerDef.id, sourceUrl))))
}
}
const amendedLocalStorageSource =
- new RememberingSource(new FeatureDuplicatorPerLayer(flayers, new LocalStorageSource(layout))
- );
+ new RememberingSource(new RegisteringFeatureSource(new FeatureDuplicatorPerLayer(flayers, new LocalStorageSource(layout))
+ ));
- newPoints = new FeatureDuplicatorPerLayer(flayers, newPoints);
+ newPoints = new MetaTaggingFeatureSource(new FeatureDuplicatorPerLayer(flayers,
+ new RegisteringFeatureSource(newPoints)));
const merged =
- new MetaTaggingFeatureSource(
- new FeatureSourceMerger([
- amendedOverpassSource,
- amendedLocalStorageSource,
- newPoints,
- ...geojsonSources
- ]));
+
+ new FeatureSourceMerger([
+ amendedOverpassSource,
+ amendedLocalStorageSource,
+ newPoints,
+ ...geojsonSources
+ ]);
const source =
new WayHandlingApplyingFeatureSource(flayers,
diff --git a/Logic/FeatureSource/MetaTaggingFeatureSource.ts b/Logic/FeatureSource/MetaTaggingFeatureSource.ts
index 5b3ef12142..83f91d47ae 100644
--- a/Logic/FeatureSource/MetaTaggingFeatureSource.ts
+++ b/Logic/FeatureSource/MetaTaggingFeatureSource.ts
@@ -16,10 +16,6 @@ export default class MetaTaggingFeatureSource implements FeatureSource {
featuresFreshness.forEach(featureFresh => {
const feature = featureFresh.feature;
- if(!State.state.allElements.has(feature.properties.id)){
- State.state.allElements.addOrGetElement(feature)
- }
-
if (Hash.hash.data === feature.properties.id) {
State.state.selectedElement.setData(feature);
}
diff --git a/Logic/FeatureSource/RegisteringFeatureSource.ts b/Logic/FeatureSource/RegisteringFeatureSource.ts
new file mode 100644
index 0000000000..9e5d19dc15
--- /dev/null
+++ b/Logic/FeatureSource/RegisteringFeatureSource.ts
@@ -0,0 +1,19 @@
+import FeatureSource from "./FeatureSource";
+import {UIEventSource} from "../UIEventSource";
+import State from "../../State";
+
+export default class RegisteringFeatureSource implements FeatureSource {
+ features: UIEventSource<{ feature: any; freshness: Date }[]>;
+
+ constructor(source: FeatureSource) {
+ this.features = source.features;
+ this.features.addCallbackAndRun(features => {
+ for (const feature of features ?? []) {
+ if (!State.state.allElements.has(feature.feature.properties.id)) {
+ State.state.allElements.addOrGetElement(feature.feature)
+ }
+ }
+ })
+ }
+
+}
\ No newline at end of file
diff --git a/Logic/GeoOperations.ts b/Logic/GeoOperations.ts
index a687dee553..6697fb433c 100644
--- a/Logic/GeoOperations.ts
+++ b/Logic/GeoOperations.ts
@@ -1,4 +1,4 @@
-import * as turf from 'turf'
+import * as turf from '@turf/turf'
export class GeoOperations {
@@ -118,6 +118,9 @@ export class GeoOperations {
return inside;
};
+ static lengthInMeters(feature: any) {
+ return turf.length(feature) * 1000
+ }
}
diff --git a/Logic/Osm/ExtractRelations.ts b/Logic/Osm/ExtractRelations.ts
new file mode 100644
index 0000000000..4c64d630f9
--- /dev/null
+++ b/Logic/Osm/ExtractRelations.ts
@@ -0,0 +1,58 @@
+import State from "../../State";
+
+export interface Relation {
+ id: number,
+ type: "relation"
+ members: {
+ type: ("way" | "node" | "relation"),
+ ref: number,
+ role: string
+ }[],
+ tags: any,
+ // Alias for tags; tags == properties
+ properties: any
+}
+
+export default class ExtractRelations {
+
+ public static RegisterRelations(overpassJson: any) : void{
+ const memberships = ExtractRelations.BuildMembershipTable(ExtractRelations.GetRelationElements(overpassJson))
+ console.log("Assigned memberships: ", memberships)
+ State.state.knownRelations.setData(memberships)
+ }
+
+ private static GetRelationElements(overpassJson: any): Relation[] {
+ const relations = overpassJson.elements.filter(element => element.type === "relation")
+ for (const relation of relations) {
+ relation.properties = relation.tags
+ }
+ return relations
+ }
+
+ /**
+ * Build a mapping of {memberId --> {role in relation, id of relation} }
+ * @param relations
+ * @constructor
+ */
+ private static BuildMembershipTable(relations: Relation[]): Map {
+ const memberships = new Map()
+
+ for (const relation of relations) {
+ for (const member of relation.members) {
+
+ const role = {
+ role: member.role,
+ relation: relation
+ }
+ const key = member.type + "/" + member.ref
+ if (!memberships.has(key)) {
+ memberships.set(key, [])
+ }
+ memberships.get(key).push(role)
+ }
+ }
+
+ return memberships
+ }
+
+}
\ No newline at end of file
diff --git a/Logic/Osm/Overpass.ts b/Logic/Osm/Overpass.ts
index 401d96bd01..b62749ee6f 100644
--- a/Logic/Osm/Overpass.ts
+++ b/Logic/Osm/Overpass.ts
@@ -1,7 +1,8 @@
import * as $ from "jquery"
import * as OsmToGeoJson from "osmtogeojson";
import Bounds from "../../Models/Bounds";
-import {TagsFilter} from "../TagsFilter";
+import {TagsFilter} from "../Tags/TagsFilter";
+import ExtractRelations from "./ExtractRelations";
/**
* Interfaces overpass to get all the latest data
@@ -38,9 +39,9 @@ export class Overpass {
return;
}
+ ExtractRelations.RegisterRelations(json)
// @ts-ignore
const geojson = OsmToGeoJson.default(json);
- console.log("Received geojson", geojson)
const osmTime = new Date(json.osm3s.timestamp_osm_base);
continuation(geojson, osmTime);
diff --git a/Logic/SimpleMetaTagger.ts b/Logic/SimpleMetaTagger.ts
index 30bf19140b..7a059a2098 100644
--- a/Logic/SimpleMetaTagger.ts
+++ b/Logic/SimpleMetaTagger.ts
@@ -52,6 +52,18 @@ export default class SimpleMetaTagger {
feature.area = sqMeters;
})
);
+
+ private static lngth = new SimpleMetaTagger(
+ ["_length", "_length:km"], "The total length of a feature in meters (and in kilometers, rounded to one decimal for '_length:km'). For a surface, the length of the perimeter",
+ (feature => {
+ const l = GeoOperations.lengthInMeters(feature)
+ feature.properties["_length"] = "" + l
+ const km = Math.floor(l / 1000)
+ const kmRest = Math.round((l - km * 1000) / 100)
+ feature.properties["_length:km"] = "" + km+ "." + kmRest
+ })
+ )
+
private static country = new SimpleMetaTagger(
["_country"], "The country code of the property (with latlon2country)",
feature => {
@@ -294,6 +306,7 @@ export default class SimpleMetaTagger {
public static metatags = [
SimpleMetaTagger.latlon,
SimpleMetaTagger.surfaceArea,
+ SimpleMetaTagger.lngth,
SimpleMetaTagger.country,
SimpleMetaTagger.isOpen,
SimpleMetaTagger.carriageWayWidth,
diff --git a/Models/Constants.ts b/Models/Constants.ts
index efc8ffe2da..2dfe67a323 100644
--- a/Models/Constants.ts
+++ b/Models/Constants.ts
@@ -2,7 +2,7 @@ import { Utils } from "../Utils";
export default class Constants {
- public static vNumber = "0.6.8c";
+ public static vNumber = "0.6.9";
// The user journey states thresholds when a new feature gets unlocked
public static userJourney = {
diff --git a/State.ts b/State.ts
index 91912f0a23..7fd9997005 100644
--- a/State.ts
+++ b/State.ts
@@ -17,6 +17,7 @@ import UpdateFromOverpass from "./Logic/Actors/UpdateFromOverpass";
import LayerConfig from "./Customizations/JSON/LayerConfig";
import TitleHandler from "./Logic/Actors/TitleHandler";
import PendingChangesUploader from "./Logic/Actors/PendingChangesUploader";
+import {Relation} from "./Logic/Osm/ExtractRelations";
/**
* Contains the global state: a bunch of UI-event sources
@@ -76,6 +77,11 @@ export default class State {
*/
public readonly selectedElement = new UIEventSource(undefined, "Selected element")
+ /**
+ * Keeps track of relations: which way is part of which other way?
+ * Set by the overpass-updater; used in the metatagging
+ */
+ public readonly knownRelations = new UIEventSource>(undefined, "Relation memberships")
public readonly featureSwitchUserbadge: UIEventSource;
public readonly featureSwitchSearch: UIEventSource;
diff --git a/UI/Popup/TagRenderingAnswer.ts b/UI/Popup/TagRenderingAnswer.ts
index ebf4064d5a..43966d4a48 100644
--- a/UI/Popup/TagRenderingAnswer.ts
+++ b/UI/Popup/TagRenderingAnswer.ts
@@ -46,7 +46,7 @@ export default class TagRenderingAnswer extends UIElement {
if (this._configuration.multiAnswer) {
let freeformKeyUsed = this._configuration.freeform?.key === undefined; // If it is undefined, it is "used" already, or at least we don't have to check for it anymore
- const applicableThens: Translation[] = Utils.NoNull(this._configuration.mappings.map(mapping => {
+ const applicableThens: Translation[] = Utils.NoNull(this._configuration.mappings?.map(mapping => {
if (mapping.if === undefined) {
return mapping.then;
}
@@ -59,7 +59,7 @@ export default class TagRenderingAnswer extends UIElement {
return mapping.then;
}
return undefined;
- }))
+ }) ?? [])
if (!freeformKeyUsed
&& tags[this._configuration.freeform.key] !== undefined) {
diff --git a/assets/themes/speelplekken/speelplekken.json b/assets/themes/speelplekken/speelplekken.json
index ede7c5a637..ebbb23cc7c 100644
--- a/assets/themes/speelplekken/speelplekken.json
+++ b/assets/themes/speelplekken/speelplekken.json
@@ -27,10 +27,126 @@
"play_forest",
"playground",
"sport_pitch",
- "slow_roads",
+ { "builtin": "slow_roads",
+ "override": {
+ "calculatedTags": [
+ "_part_of_walking_routes=feat.memberships().map(r => \"\" + r.relation.tags.name + \" \").join(', ')"
+ ]
+ }
+ },
"grass_in_parks",
- "village_green"
+ "village_green",
+ {
+ "id": "walking_routes",
+ "name": {
+ "nl": "Wandelroutes van provincie Antwerpen"
+ },
+ "description": "Walking routes by 'provincie Antwerpen'",
+ "source": {
+ "osmTags": {
+ "and": [
+ "type=route",
+ "route=foot",
+ "operator=provincie Antwerpen"
+ ]
+ }
+ },
+ "title": {
+ "render": "Wandeling {name} ",
+ "mappings": [
+ {
+ "if": "name~.*wandeling.*",
+ "then": "{name}"
+ }
+ ]
+ },
+ "tagRenderings": [
+ {
+ "render": {
+ "nl": "Deze wandeling is {_length:km}km lang"
+ }
+ },
+ {
+ "mappings": [
+ {
+ "if": "route=iwn",
+ "then": {
+ "nl": "Dit is een internationale wandelroute"
+ }
+ },
+ {
+ "if": "route=nwn",
+ "then": {
+ "nl": "Dit is een nationale wandelroute"
+ }
+ },
+ {
+ "if": "route=rwn",
+ "then": {
+ "nl": "Dit is een regionale wandelroute"
+ }
+ },
+ {
+ "if": "route=lwn",
+ "then": {
+ "nl": "Dit is een lokale wandelroute"
+ }
+ }
+ ]
+ },
+ {
+ "render": {
+ "nl": "Korte beschrijving: {description}"
+ },
+ "question": "Geef een korte beschrijving van de wandeling (max 255 tekens)",
+ "freeform": {
+ "key": "description",
+ "type": "text"
+ }
+ },
+ {
+ "question": {
+ "nl": "Wie beheert deze wandeling en plaatst dus de signalisatiebordjes?"
+ },
+ "render": "Signalisatie geplaatst door {operator}",
+ "freeform":{
+ "key": "operator"
+ }
+ },
+ {
+ "question": {
+ "nl": "Naar wie kan men emailen bij problemen rond signalisatie?"
+ },
+ "render": {
+ "nl": "Bij problemen met signalisatie kan men emailen naar {operator:email} "
+ },
+ "freeform": {
+ "key": "operator:email",
+ "type": "email"
+ }
+ },
+ "questions",
+ "reviews"
+ ],
+ "color": {
+ "render": "#6d6",
+ "mappings":[
+ {
+ "if": "color~*",
+ "then": "{color}"
+ }
+ ]
+ },
+ "width": {
+ "render": "3"
+ }
+ }
],
- "roamingRenderings": []
+ "roamingRenderings": [
+ {
+ "render": "Maakt deel uit van {_part_of_walking_routes}",
+ "condition": "_part_of_walking_routes~*"
+ }
+ ]
}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 304c00fde6..8891dd1844 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1229,362 +1229,169 @@
}
},
"@turf/along": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/along/-/along-5.1.5.tgz",
- "integrity": "sha1-YdbmplhKzdq1asVYTge/jL5fi+s=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/along/-/along-6.3.0.tgz",
+ "integrity": "sha512-2j0nHp38IuzESyv5/9hLYM2MuUe155Kw390lkQtiLjhRtTeYQNEaRy+uhZhf3/DWrjGULH1HatLc5j0CmiwrJA==",
"requires": {
- "@turf/bearing": "^5.1.5",
- "@turf/destination": "^5.1.5",
- "@turf/distance": "^5.1.5",
- "@turf/helpers": "^5.1.5"
- },
- "dependencies": {
- "@turf/distance": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-5.1.5.tgz",
- "integrity": "sha1-Oc8YIEu/h1h9cH5gmmARiQkVZAk=",
- "requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- }
- },
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/bearing": "^6.3.0",
+ "@turf/destination": "^6.3.0",
+ "@turf/distance": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0"
+ }
+ },
+ "@turf/angle": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/angle/-/angle-6.3.0.tgz",
+ "integrity": "sha512-wCWoK+7JKGYPZKYxdWwJJfqm1IQbUdOf4j5SENO6WJryXViM/ogRu2eAEqrmyrMYO84vonMSqiuPEuGoLqo9Xg==",
+ "requires": {
+ "@turf/bearing": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "@turf/rhumb-bearing": "^6.3.0"
}
},
"@turf/area": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/area/-/area-5.1.5.tgz",
- "integrity": "sha1-79iZv9Jgzb0VQbKjwVX4pdLu+h0=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/area/-/area-6.3.0.tgz",
+ "integrity": "sha512-Y1cYyAQ2fk94npdgOeMF4msc2uabHY1m7A7ntixf1I8rkyDd6/iHh1IMy1QsM+VZXAEwDwsXhu+ZFYd3Jkeg4A==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/meta": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- }
+ "@turf/helpers": "^6.3.0",
+ "@turf/meta": "^6.3.0"
}
},
"@turf/bbox": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-5.1.5.tgz",
- "integrity": "sha1-MFHfUUrUxQ9KT5uKLRX9i2hA7aM=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-6.3.0.tgz",
+ "integrity": "sha512-N4ue5Xopu1qieSHP2MA/CJGWHPKaTrVXQJjzHRNcY1vtsO126xbSaJhWUrFc5x5vVkXp0dcucGryO0r5m4o/KA==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/meta": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- }
+ "@turf/helpers": "^6.3.0",
+ "@turf/meta": "^6.3.0"
}
},
"@turf/bbox-clip": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/bbox-clip/-/bbox-clip-5.1.5.tgz",
- "integrity": "sha1-M2S1Mo3/nzz0HZ4C7a/zdNFQzIQ=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/bbox-clip/-/bbox-clip-6.3.0.tgz",
+ "integrity": "sha512-DCFs1MdX3P7SzZiBjT1kWBp4g0cfv8Yn2/Ccq3JP4iVaqNQJujPfe0WwZjjTdXLbLLFTjoxnCJBjy3WZDmLvlw==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5",
- "lineclip": "^1.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0"
}
},
"@turf/bbox-polygon": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/bbox-polygon/-/bbox-polygon-5.1.5.tgz",
- "integrity": "sha1-auuk7VHYXSluD3w4uIwznwHu4CQ=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/bbox-polygon/-/bbox-polygon-6.3.0.tgz",
+ "integrity": "sha512-CCyTBM8LzGRu/lReNlgDyjRO8NojtJ7EPPvSl3bdKQbNFsCm25gwe7Y3xsaCkWLNn5g89lQJI9Izf9xdEsENjQ==",
"requires": {
- "@turf/helpers": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- }
+ "@turf/helpers": "^6.3.0"
}
},
"@turf/bearing": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/bearing/-/bearing-5.1.5.tgz",
- "integrity": "sha1-egt5ATbE70eX8CRjBdRcvi0ns/c=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/bearing/-/bearing-6.3.0.tgz",
+ "integrity": "sha512-apuUm9xN6VQLO33m7F2mmzlm3dHfeesJjMSzh9iehGtgmp1IaVndjdcIvs0ieiwm8bN9UhwXpfPtO3pV0n9SFw==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0"
}
},
"@turf/bezier-spline": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/bezier-spline/-/bezier-spline-5.1.5.tgz",
- "integrity": "sha1-WaJ7ul17l+8Vqz/VpA+9I4cEm8o=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/bezier-spline/-/bezier-spline-6.3.0.tgz",
+ "integrity": "sha512-5kJv7zLjuZPhjO8Z/eNT68UHwiDru6ihn2He0VFrnSJQJZI8V/TFXCob7GxncYFlKk7uHru8iMXGxFe3Y3P44w==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0"
}
},
"@turf/boolean-clockwise": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/boolean-clockwise/-/boolean-clockwise-5.1.5.tgz",
- "integrity": "sha1-MwK32sYsXikaB4nimvcoM4f6nes=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/boolean-clockwise/-/boolean-clockwise-6.3.0.tgz",
+ "integrity": "sha512-zW0j8uPjBS5QJqNmJIeatTH02E1S7OCuBNBvkoOUPifC/c2xJ120a1r73prBj1zMFr6k3UCjwG9V8whUMxIAYA==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0"
}
},
"@turf/boolean-contains": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/boolean-contains/-/boolean-contains-5.1.5.tgz",
- "integrity": "sha1-WW1jruY2961T7pn5/yTJaZSg7xQ=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/boolean-contains/-/boolean-contains-6.3.0.tgz",
+ "integrity": "sha512-1MW7B5G5tIu1lnAv3pXyFzl75wfBYnbA2GhwHDb4okIXMhloy/r5uIqAZHo0fOXykKVJS/gIfA/MioKIftoTug==",
"requires": {
- "@turf/bbox": "^5.1.5",
- "@turf/boolean-point-in-polygon": "^5.1.5",
- "@turf/boolean-point-on-line": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- },
- "dependencies": {
- "@turf/boolean-point-in-polygon": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-5.1.5.tgz",
- "integrity": "sha1-8BzBlNHgMKVIv9qYHLpDz9YpQbc=",
- "requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- }
- },
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/bbox": "^6.3.0",
+ "@turf/boolean-point-in-polygon": "^6.3.0",
+ "@turf/boolean-point-on-line": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0"
}
},
"@turf/boolean-crosses": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/boolean-crosses/-/boolean-crosses-5.1.5.tgz",
- "integrity": "sha1-Ab+uollvFk3kpNMlCU3HwlXHFdY=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/boolean-crosses/-/boolean-crosses-6.3.0.tgz",
+ "integrity": "sha512-ajCuNSSqQPN2p3Y1ERX4E/wEsNn5JANI2uNgGOpVAeNX48prQGCBANcG2FTMMB+WVqq9iIdQ4eB5mEg6I8TS4w==",
"requires": {
- "@turf/boolean-point-in-polygon": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5",
- "@turf/line-intersect": "^5.1.5",
- "@turf/polygon-to-line": "^5.1.5"
- },
- "dependencies": {
- "@turf/boolean-point-in-polygon": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-5.1.5.tgz",
- "integrity": "sha1-8BzBlNHgMKVIv9qYHLpDz9YpQbc=",
- "requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- }
- },
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/boolean-point-in-polygon": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "@turf/line-intersect": "^6.3.0",
+ "@turf/polygon-to-line": "^6.3.0"
}
},
"@turf/boolean-disjoint": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/@turf/boolean-disjoint/-/boolean-disjoint-5.1.6.tgz",
- "integrity": "sha512-KHvUS6SBNYHBCLIJEJrg04pF5Oy+Fqn8V5G9U+9pti5vI9tyX7Ln2g7RSB7iJ1Cxsz8QAi6OukhXjEF2/8ZpGg==",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/boolean-disjoint/-/boolean-disjoint-6.3.0.tgz",
+ "integrity": "sha512-bVAwAJF05QPH0tf+qjR3kUcCyqTgYcCbXSMgXl6LQF6mSGuOutzNq1gCyRLCOdOcZtw4Oh4dqeP3ykwv8kDibw==",
"requires": {
- "@turf/boolean-point-in-polygon": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/line-intersect": "^5.1.5",
- "@turf/meta": "^5.1.5",
- "@turf/polygon-to-line": "^5.1.5"
- },
- "dependencies": {
- "@turf/boolean-point-in-polygon": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-5.1.5.tgz",
- "integrity": "sha1-8BzBlNHgMKVIv9qYHLpDz9YpQbc=",
- "requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- }
- },
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/boolean-point-in-polygon": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/line-intersect": "^6.3.0",
+ "@turf/meta": "^6.3.0",
+ "@turf/polygon-to-line": "^6.3.0"
}
},
"@turf/boolean-equal": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/boolean-equal/-/boolean-equal-5.1.5.tgz",
- "integrity": "sha1-Kfj21gu4RQff12WzIlTbjnLJOKQ=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/boolean-equal/-/boolean-equal-6.3.0.tgz",
+ "integrity": "sha512-eXr3oSHTvJYGyu/v57uNg0tnDHFnu+triwAaXtBh7lozt4d2riU8Ow71B+tjT9mBe/JRFfXIDsBWjbyB37y/6w==",
"requires": {
- "@turf/clean-coords": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5",
+ "@turf/clean-coords": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
"geojson-equality": "0.1.6"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ }
+ },
+ "@turf/boolean-intersects": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/boolean-intersects/-/boolean-intersects-6.3.0.tgz",
+ "integrity": "sha512-2pHOYqHSKDo0rzHTiqwdAaxa+tHLwr4NaTAjOpuN2hipv9bErzGtv3e5IYceJBnT0u4akK17NTn6qAr7/7g2aQ==",
+ "requires": {
+ "@turf/boolean-disjoint": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/meta": "^6.3.0"
}
},
"@turf/boolean-overlap": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/boolean-overlap/-/boolean-overlap-5.1.5.tgz",
- "integrity": "sha1-DU5kxSx3CijpPZ7834qLg3OsznU=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/boolean-overlap/-/boolean-overlap-6.3.0.tgz",
+ "integrity": "sha512-rWh8JKTqlJ1m27FY8YeWcGoXutLyCVfSi2/8AOkXi2F+36P9GM4tHz19yKY3btbnHJTgSZf1xO2YhX2d0BmNqg==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5",
- "@turf/line-intersect": "^5.1.5",
- "@turf/line-overlap": "^5.1.5",
- "@turf/meta": "^5.1.5",
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "@turf/line-intersect": "^6.3.0",
+ "@turf/line-overlap": "^6.3.0",
+ "@turf/meta": "^6.3.0",
"geojson-equality": "0.1.6"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
}
},
"@turf/boolean-parallel": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/boolean-parallel/-/boolean-parallel-5.1.5.tgz",
- "integrity": "sha1-c5NYR16ltlx+GCejw+DopofTqF0=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/boolean-parallel/-/boolean-parallel-6.3.0.tgz",
+ "integrity": "sha512-p5YcKtVON6fTE3+pffw16QZyg3uXRmZ8CNxZM7lhGrJrPnny7BD2Kz1z2fp+8EElf00kjX2vFbDjDftte4Xh3g==",
"requires": {
- "@turf/clean-coords": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/line-segment": "^5.1.5",
- "@turf/rhumb-bearing": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- }
+ "@turf/clean-coords": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/line-segment": "^6.3.0",
+ "@turf/rhumb-bearing": "^6.3.0"
}
},
"@turf/boolean-point-in-polygon": {
@@ -1597,533 +1404,228 @@
}
},
"@turf/boolean-point-on-line": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/boolean-point-on-line/-/boolean-point-on-line-5.1.5.tgz",
- "integrity": "sha1-9jPF/4Aq0ku48Vja269v9KAj3Xs=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/boolean-point-on-line/-/boolean-point-on-line-6.3.0.tgz",
+ "integrity": "sha512-eScH8sfKJVjfbEX5Hgkt1nA7A8DUoiYD1riUVqTp2xikujrMfnYRjFpL/UAo01v33cPKZlhCXp7NE86bdOSrYg==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0"
}
},
"@turf/boolean-within": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/boolean-within/-/boolean-within-5.1.5.tgz",
- "integrity": "sha1-RxBdVtB1Kp0Pv81Dw2pfkUnchpc=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/boolean-within/-/boolean-within-6.3.0.tgz",
+ "integrity": "sha512-8XtVbzPp6J+lqZtDWVyIwSyVAVcnuie82ub56JEAhCf9w8FX5Db3qXQ76pFcOyy/woeXLZY/nIR58Q79PusrRw==",
"requires": {
- "@turf/bbox": "^5.1.5",
- "@turf/boolean-point-in-polygon": "^5.1.5",
- "@turf/boolean-point-on-line": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- },
- "dependencies": {
- "@turf/boolean-point-in-polygon": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-5.1.5.tgz",
- "integrity": "sha1-8BzBlNHgMKVIv9qYHLpDz9YpQbc=",
- "requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- }
- },
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/bbox": "^6.3.0",
+ "@turf/boolean-point-in-polygon": "^6.3.0",
+ "@turf/boolean-point-on-line": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0"
}
},
"@turf/buffer": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/buffer/-/buffer-5.1.5.tgz",
- "integrity": "sha1-hByWJ8+5dLEirE4alW8EZrwCMcQ=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/buffer/-/buffer-6.3.0.tgz",
+ "integrity": "sha512-B0GWgJzmTaaw1GvTd+Df+ToKSYphz9d6hPCOwXbE2vS5DdZryoxBfxQ32LSX/hW/vx7TLf7E4M0VJBb+Sn1DKA==",
"requires": {
- "@turf/bbox": "^5.1.5",
- "@turf/center": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/meta": "^5.1.5",
- "@turf/projection": "^5.1.5",
+ "@turf/bbox": "^6.3.0",
+ "@turf/center": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/meta": "^6.3.0",
+ "@turf/projection": "^6.3.0",
"d3-geo": "1.7.1",
"turf-jsts": "*"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- }
}
},
"@turf/center": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/center/-/center-5.1.5.tgz",
- "integrity": "sha1-RKss2VT2PA03dX9xWKmcPvURS4A=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/center/-/center-6.3.0.tgz",
+ "integrity": "sha512-41g/ZYwoBs2PK7tpAHhf4D6llHdRvY827HLXCld5D0IOnzsWPqDk7WnV8P5uq4g/gyH1/WfKQYn5SgfSj4sSfw==",
"requires": {
- "@turf/bbox": "^5.1.5",
- "@turf/helpers": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- }
+ "@turf/bbox": "^6.3.0",
+ "@turf/helpers": "^6.3.0"
}
},
"@turf/center-mean": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/center-mean/-/center-mean-5.1.5.tgz",
- "integrity": "sha1-jI6YdTkeXwnw5uePXWYbiLIQigo=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/center-mean/-/center-mean-6.3.0.tgz",
+ "integrity": "sha512-BZsqThJmc7wUTxPj7/RYztaegPntR2bBFDPTJ/C+qN8lnRhCccCZ81npYunriwMQC1kyXd1BChGMwjFh3jfB+Q==",
"requires": {
- "@turf/bbox": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/meta": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- }
+ "@turf/bbox": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/meta": "^6.3.0"
}
},
"@turf/center-median": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/center-median/-/center-median-5.1.5.tgz",
- "integrity": "sha1-u0Yb/noqSGAdikcnaFcYcjoUqHI=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/center-median/-/center-median-6.3.0.tgz",
+ "integrity": "sha512-jMQzp4YLIPDWKAMpvyRmNOLcoCHy/OMsLIv6odmfBJc6q+5GkulXz4QW61a5o6XZNDkZiYe9f0QgNGaKH+HTWg==",
"requires": {
- "@turf/center-mean": "^5.1.5",
- "@turf/centroid": "^5.1.5",
- "@turf/distance": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/meta": "^5.1.5"
- },
- "dependencies": {
- "@turf/distance": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-5.1.5.tgz",
- "integrity": "sha1-Oc8YIEu/h1h9cH5gmmARiQkVZAk=",
- "requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- }
- },
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/center-mean": "^6.3.0",
+ "@turf/centroid": "^6.3.0",
+ "@turf/distance": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/meta": "^6.3.0"
}
},
"@turf/center-of-mass": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/center-of-mass/-/center-of-mass-5.1.5.tgz",
- "integrity": "sha1-TTvXnYhJjbq4Mk1PafAyL2Uguco=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/center-of-mass/-/center-of-mass-6.3.0.tgz",
+ "integrity": "sha512-dbiNo4VjNOskK/9hlifmb+cIsFgLqru3m/U1b+btDrliLzrFw3BEeLquZf3IZkOGMpVdIi5/F7IbkrPPz7HgWw==",
"requires": {
- "@turf/centroid": "^5.1.5",
- "@turf/convex": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5",
- "@turf/meta": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/centroid": "^6.3.0",
+ "@turf/convex": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "@turf/meta": "^6.3.0"
}
},
"@turf/centroid": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/centroid/-/centroid-5.1.5.tgz",
- "integrity": "sha1-d4radCFjNQIa2P0OemWoNJ1Tx2k=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/centroid/-/centroid-6.3.0.tgz",
+ "integrity": "sha512-7KTyqhUEqXDoyR/nf/jAXiW8ZVszEnrp5XZkgYyrf2GWdSovSO0iCN1J3bE2jkJv7IWyeDmGYL61GGzuTSZS2Q==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/meta": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- }
+ "@turf/helpers": "^6.3.0",
+ "@turf/meta": "^6.3.0"
}
},
"@turf/circle": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/circle/-/circle-5.1.5.tgz",
- "integrity": "sha1-mxV3g1UIq1L7HBCypQZcuiuHtqU=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/circle/-/circle-6.3.0.tgz",
+ "integrity": "sha512-5N3J4YQr1efidvPgvtIQYpxb7gBVEoo00IFC0JNH6KqIVBMttFZw3Wsqor34ya91m58A5m6HTiz9Cdm1ktrEdw==",
"requires": {
- "@turf/destination": "^5.1.5",
- "@turf/helpers": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- }
+ "@turf/destination": "^6.3.0",
+ "@turf/helpers": "^6.3.0"
}
},
"@turf/clean-coords": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/clean-coords/-/clean-coords-5.1.5.tgz",
- "integrity": "sha1-EoAKmKeMmkUqcuxChJPEOs8q2h8=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/clean-coords/-/clean-coords-6.3.0.tgz",
+ "integrity": "sha512-Ns7+vXHigKTclzqlFrUnXsXjtEWAu2YYurDxD5mrKXcncuisUIoKbFM55ZxeiiBj0ji8c1huR1xSqs8GVxZJJA==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0"
}
},
"@turf/clone": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/clone/-/clone-5.1.5.tgz",
- "integrity": "sha1-JT6NNUdxgZduM636tQoPAqfw42c=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/clone/-/clone-6.3.0.tgz",
+ "integrity": "sha512-GAgN89/9GCqUKECB1oY2hcTs0K2rZj+a2tY6VfM0ef9wwckuQZCKi+kKGUzhKVrmHee15jKV8n6DY0er8OndKg==",
"requires": {
- "@turf/helpers": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- }
+ "@turf/helpers": "^6.3.0"
}
},
"@turf/clusters": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/clusters/-/clusters-5.1.5.tgz",
- "integrity": "sha1-ZzpeXxsZycq6vFfJCO6t1oIiTdQ=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/clusters/-/clusters-6.3.0.tgz",
+ "integrity": "sha512-NIT6LZ/zawt1nN7eC0VEII8J1QUx5qvUahtPKsADxHP27vDJDjnmGvUXvvC0XmibXt/RR9VRM5Rej04yn53g0A==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/meta": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- }
+ "@turf/helpers": "^6.3.0",
+ "@turf/meta": "^6.3.0"
}
},
"@turf/clusters-dbscan": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/clusters-dbscan/-/clusters-dbscan-5.1.5.tgz",
- "integrity": "sha1-V4H7TmVsdHoLjpk333MYHAMJ4m8=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/clusters-dbscan/-/clusters-dbscan-6.3.0.tgz",
+ "integrity": "sha512-EHWHMEBSGf4dvobfvifMl2G9p9KATP9TSeSf1WY+ajLRPfn3slUPSM9hP+7eisDBgb/tS+wqQNcl7pEoo72pnw==",
"requires": {
- "@turf/clone": "^5.1.5",
- "@turf/distance": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5",
- "@turf/meta": "^5.1.5",
+ "@turf/clone": "^6.3.0",
+ "@turf/distance": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/meta": "^6.3.0",
"density-clustering": "1.3.0"
- },
- "dependencies": {
- "@turf/distance": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-5.1.5.tgz",
- "integrity": "sha1-Oc8YIEu/h1h9cH5gmmARiQkVZAk=",
- "requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- }
- },
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
}
},
"@turf/clusters-kmeans": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/clusters-kmeans/-/clusters-kmeans-5.1.5.tgz",
- "integrity": "sha1-/W3+qLEzuovcI3CsPKzuFYejAvE=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/clusters-kmeans/-/clusters-kmeans-6.3.0.tgz",
+ "integrity": "sha512-cyHtW5nsOcs1p8l3mflX2805fOxR99FanXCP95U+001S4AwVSgxiOfTg8PUHg9nui2Qcq/PMBRQz80exb2UzyA==",
"requires": {
- "@turf/clone": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5",
- "@turf/meta": "^5.1.5",
+ "@turf/clone": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "@turf/meta": "^6.3.0",
"skmeans": "0.9.7"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
}
},
"@turf/collect": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/collect/-/collect-5.1.5.tgz",
- "integrity": "sha1-/pjJqMIY7PJP/DPXApUXt8GbKj4=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/collect/-/collect-6.3.0.tgz",
+ "integrity": "sha512-alkKujZ02m2wYNixYjF4AFSzXTMbewf1QnJRrtog3snJHFN/tZB9iU3ZcwvxOSbO2Zwrw89A90HLe8k7oGUqXw==",
"requires": {
- "@turf/bbox": "^5.1.5",
- "@turf/boolean-point-in-polygon": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "rbush": "^2.0.1"
- },
- "dependencies": {
- "@turf/boolean-point-in-polygon": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-5.1.5.tgz",
- "integrity": "sha1-8BzBlNHgMKVIv9qYHLpDz9YpQbc=",
- "requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- }
- },
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- },
- "quickselect": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-1.1.1.tgz",
- "integrity": "sha512-qN0Gqdw4c4KGPsBOQafj6yj/PA6c/L63f6CaZ/DCF/xF4Esu3jVmKLUDYxghFx8Kb/O7y9tI7x2RjTSXwdK1iQ=="
- },
- "rbush": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/rbush/-/rbush-2.0.2.tgz",
- "integrity": "sha512-XBOuALcTm+O/H8G90b6pzu6nX6v2zCKiFG4BJho8a+bY6AER6t8uQUZdi5bomQc0AprCWhEGa7ncAbbRap0bRA==",
- "requires": {
- "quickselect": "^1.0.1"
- }
- }
+ "@turf/bbox": "^6.3.0",
+ "@turf/boolean-point-in-polygon": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "rbush": "2.x"
}
},
"@turf/combine": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/combine/-/combine-5.1.5.tgz",
- "integrity": "sha1-uxS976VVBDVxlfwaEkzX1TqMiQU=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/combine/-/combine-6.3.0.tgz",
+ "integrity": "sha512-/FKUxUvQhKDDBJ4CTr49rvanYbdrtlsbr+7p6H8Vv0EyfeWqwJ3qA8lRuAjPtK0StviYg2t6XTucvKd/3PPX3Q==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/meta": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- }
+ "@turf/helpers": "^6.3.0",
+ "@turf/meta": "^6.3.0"
}
},
"@turf/concave": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/concave/-/concave-5.1.5.tgz",
- "integrity": "sha1-I7uqw4fQNLlldKG9cNBZI3qdIRA=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/concave/-/concave-6.3.0.tgz",
+ "integrity": "sha512-9BPctrW2Oy9K2jjKv80tR26RQEJjwAAFwgG8JEBK8hSF9zdqa07fzx7Ncj+8hM9+3vF30f2TvQ8yxvoH7HSvXA==",
"requires": {
- "@turf/clone": "^5.1.5",
- "@turf/distance": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5",
- "@turf/meta": "^5.1.5",
- "@turf/tin": "^5.1.5",
- "topojson-client": "3.x",
- "topojson-server": "3.x"
- },
- "dependencies": {
- "@turf/distance": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-5.1.5.tgz",
- "integrity": "sha1-Oc8YIEu/h1h9cH5gmmARiQkVZAk=",
- "requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- }
- },
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/clone": "^6.3.0",
+ "@turf/distance": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "@turf/meta": "^6.3.0",
+ "@turf/tin": "^6.3.0",
+ "topojson": "3.x"
}
},
"@turf/convex": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/convex/-/convex-5.1.5.tgz",
- "integrity": "sha1-Dfk3fdACIWzpghsH9wXgN9rj4B0=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/convex/-/convex-6.3.0.tgz",
+ "integrity": "sha512-YpiLKRu1suwbI/knCOd7Fg7LojV6Beonu8gQjCoaPdkBEz0/W3XqNpfWQhcqp+XR10a2g4RK5mi6bUUejToFBw==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/meta": "^5.1.5",
+ "@turf/helpers": "^6.3.0",
+ "@turf/meta": "^6.3.0",
"concaveman": "*"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- }
}
},
"@turf/destination": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/destination/-/destination-5.1.5.tgz",
- "integrity": "sha1-7TU4G9zoO73cvQei4rzivd/7zCY=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/destination/-/destination-6.3.0.tgz",
+ "integrity": "sha512-aLt3U/XkJWyZW08Ln1qZwBNAGh27yhmYLu892+dBj3gKP6UUiR6ZopXxrBwjBVe00A6k2ktftKDn79qe0hptuw==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0"
}
},
"@turf/difference": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-5.1.5.tgz",
- "integrity": "sha1-ok1pCnvKgD8QkKnuO52Qb8Q3H0I=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.3.0.tgz",
+ "integrity": "sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==",
"requires": {
- "@turf/area": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5",
- "@turf/meta": "^5.1.5",
- "turf-jsts": "*"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "polygon-clipping": "^0.15.2"
}
},
"@turf/dissolve": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/dissolve/-/dissolve-5.1.5.tgz",
- "integrity": "sha1-LPEzqQIdIWODHD16lY1lB/nYGTg=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/dissolve/-/dissolve-6.3.0.tgz",
+ "integrity": "sha512-DxFH+3MQpBo3rIZSh9gjcdl00ZkyHAEK0DzTLq6JOS4vTHpYvFvDT07j/Vr+9cqfvWrAjGpQg92I8zMzh4XA6Q==",
"requires": {
- "@turf/boolean-overlap": "^5.1.5",
- "@turf/clone": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5",
- "@turf/line-intersect": "^5.1.5",
- "@turf/meta": "^5.1.5",
- "@turf/union": "^5.1.5",
- "geojson-rbush": "2.1.0",
+ "@turf/boolean-overlap": "^6.3.0",
+ "@turf/clone": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "@turf/line-intersect": "^6.3.0",
+ "@turf/meta": "^6.3.0",
+ "@turf/union": "^6.3.0",
+ "geojson-rbush": "3.x",
"get-closest": "*"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
}
},
"@turf/distance": {
@@ -2135,120 +1637,73 @@
"@turf/invariant": "^6.3.0"
}
},
- "@turf/ellipse": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/ellipse/-/ellipse-5.1.5.tgz",
- "integrity": "sha1-1XyrhTmFkgzeYCKKeNgEWAJcVL4=",
+ "@turf/distance-weight": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/distance-weight/-/distance-weight-6.3.0.tgz",
+ "integrity": "sha512-o85n4q3WM0L292FV7ZKBtSdTzn20JRqcZSSktkJoxeuQJMHXlstRwviLiF5pTl5oDXO/mRdq6aPecvWkMAaiCQ==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5",
- "@turf/rhumb-destination": "^5.1.5",
- "@turf/transform-rotate": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/centroid": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "@turf/meta": "^6.3.0"
+ }
+ },
+ "@turf/ellipse": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/ellipse/-/ellipse-6.3.0.tgz",
+ "integrity": "sha512-r+EvUK+IGgc3shvS/T1Wof2uCptS2fYmtcwMSFHnHjRnmUyrD4YFjPZT7ygxcDB91+UClZ6cdozR6vqBYzPAog==",
+ "requires": {
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "@turf/rhumb-destination": "^6.3.0",
+ "@turf/transform-rotate": "^6.3.0"
}
},
"@turf/envelope": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/envelope/-/envelope-5.1.5.tgz",
- "integrity": "sha1-UBMwnFP91D369LWIplw/7X28EIo=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/envelope/-/envelope-6.3.0.tgz",
+ "integrity": "sha512-9xmDTCogXJsAO0TrARA/lniMSEtAil9HIKXHDJ5N6zlZ2K5wfRdD2zDlqkgDT3t9oSvttSP3ltBf03fjMDt6Wg==",
"requires": {
- "@turf/bbox": "^5.1.5",
- "@turf/bbox-polygon": "^5.1.5",
- "@turf/helpers": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- }
+ "@turf/bbox": "^6.3.0",
+ "@turf/bbox-polygon": "^6.3.0",
+ "@turf/helpers": "^6.3.0"
}
},
"@turf/explode": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/explode/-/explode-5.1.5.tgz",
- "integrity": "sha1-sSsvd0AEobSPYrqVsgocZVo94Rg=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/explode/-/explode-6.3.0.tgz",
+ "integrity": "sha512-J3vOGwf2EJXfh1gifFtxAuuhVYWAMTRQL6jE3h9a8osNLO1nj8JGVxaL6fmJgdZ/A9cFPv1OYUndBzi86UYZvw==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/meta": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- }
+ "@turf/helpers": "^6.3.0",
+ "@turf/meta": "^6.3.0"
}
},
"@turf/flatten": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/flatten/-/flatten-5.1.5.tgz",
- "integrity": "sha1-2iknBnEz7WFpsLnWB7khVoiqE1g=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/flatten/-/flatten-6.3.0.tgz",
+ "integrity": "sha512-0V3qxOGqb0NulEpADPCs/+i/AUQuNSChGA4oy/YGicfMHjnMNapZfOVg3LJEAkd/Kqpw2eJjjKe0gaX5aXo/1w==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/meta": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- }
+ "@turf/helpers": "^6.3.0",
+ "@turf/meta": "^6.3.0"
}
},
"@turf/flip": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/flip/-/flip-5.1.5.tgz",
- "integrity": "sha1-Q29kOnIvDKU7n85jjkaT2zYIpoo=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/flip/-/flip-6.3.0.tgz",
+ "integrity": "sha512-VTST1oaJFRyHOAbvY9kt8yKKCQt6aXpXeyVQRjhNESzlYLIQlTx3v+lI+eSSu+sc+SX4EDQltB1UdaVk7BIRJg==",
"requires": {
- "@turf/clone": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/meta": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- }
+ "@turf/clone": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/meta": "^6.3.0"
}
},
"@turf/great-circle": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/great-circle/-/great-circle-5.1.5.tgz",
- "integrity": "sha1-3r+2cc5HVQnLY3MBwV/PzPo1mpM=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/great-circle/-/great-circle-6.3.0.tgz",
+ "integrity": "sha512-dpGJcRf2TLzBvVUZa0Eej3edXOQofLcp9qgotqDHK68spqYK8lnrXrdyyqzLlTHx3nxZkHvFUOl1lqj8G4NraQ==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0"
}
},
"@turf/helpers": {
@@ -2257,107 +1712,42 @@
"integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg=="
},
"@turf/hex-grid": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/hex-grid/-/hex-grid-5.1.5.tgz",
- "integrity": "sha1-m3ul/s9QUfHoWJL3E/zlxVBQKmo=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/hex-grid/-/hex-grid-6.3.0.tgz",
+ "integrity": "sha512-adqOgpBJB+87bjnm5EKVklDuWsYtCrETlLrXpOw4CVyaqYEE2/Mvid25se/0TeGDfvIcnvIQvrApYL5O/sDaMw==",
"requires": {
- "@turf/distance": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/intersect": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- },
- "dependencies": {
- "@turf/distance": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-5.1.5.tgz",
- "integrity": "sha1-Oc8YIEu/h1h9cH5gmmARiQkVZAk=",
- "requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- }
- },
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/distance": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/intersect": "^6.3.0",
+ "@turf/invariant": "^6.3.0"
}
},
"@turf/interpolate": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/interpolate/-/interpolate-5.1.5.tgz",
- "integrity": "sha1-DxLwq3VtbdEK+ykMpuh3ve8BPqo=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/interpolate/-/interpolate-6.3.0.tgz",
+ "integrity": "sha512-2gVMSj/Ri8l5KGkCTyTJTqSbZwfWco6tWGMZyG0fqcB61PA6pEedU+TShBOOEKu7eBlpSyHlkS7+uii1bEGUCA==",
"requires": {
- "@turf/bbox": "^5.1.5",
- "@turf/centroid": "^5.1.5",
- "@turf/clone": "^5.1.5",
- "@turf/distance": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/hex-grid": "^5.1.5",
- "@turf/invariant": "^5.1.5",
- "@turf/meta": "^5.1.5",
- "@turf/point-grid": "^5.1.5",
- "@turf/square-grid": "^5.1.5",
- "@turf/triangle-grid": "^5.1.5"
- },
- "dependencies": {
- "@turf/distance": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-5.1.5.tgz",
- "integrity": "sha1-Oc8YIEu/h1h9cH5gmmARiQkVZAk=",
- "requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- }
- },
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/bbox": "^6.3.0",
+ "@turf/centroid": "^6.3.0",
+ "@turf/clone": "^6.3.0",
+ "@turf/distance": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/hex-grid": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "@turf/meta": "^6.3.0",
+ "@turf/point-grid": "^6.3.0",
+ "@turf/square-grid": "^6.3.0",
+ "@turf/triangle-grid": "^6.3.0"
}
},
"@turf/intersect": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-5.1.6.tgz",
- "integrity": "sha512-KXyNv/GXdoGAOy03qZF53rgtXC2tNhF/4jLwTKiVRrBQH6kcEpipGStdJ+QkYIlarQPa8f7I9UlVAB19et4MfQ==",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.3.0.tgz",
+ "integrity": "sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==",
"requires": {
- "@turf/clean-coords": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5",
- "@turf/truncate": "^5.1.5",
- "turf-jsts": "*"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "polygon-clipping": "^0.15.2"
}
},
"@turf/invariant": {
@@ -2369,1608 +1759,733 @@
}
},
"@turf/isobands": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/isobands/-/isobands-5.1.5.tgz",
- "integrity": "sha1-a0TO9YTVUaMTBBh68jtKFYLj8I0=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/isobands/-/isobands-6.3.0.tgz",
+ "integrity": "sha512-Ikk8LyVQJKsLH6nFYKEeUi9sShMVP9S63zy5CPMPvwRhZf0ix59tAEBfnk6DOfd0EzLLmEdfaAM2U0cRhkh9jA==",
"requires": {
- "@turf/area": "^5.1.5",
- "@turf/bbox": "^5.1.5",
- "@turf/boolean-point-in-polygon": "^5.1.5",
- "@turf/explode": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5",
- "@turf/meta": "^5.1.5"
- },
- "dependencies": {
- "@turf/boolean-point-in-polygon": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-5.1.5.tgz",
- "integrity": "sha1-8BzBlNHgMKVIv9qYHLpDz9YpQbc=",
- "requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- }
- },
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/area": "^6.3.0",
+ "@turf/bbox": "^6.3.0",
+ "@turf/boolean-point-in-polygon": "^6.3.0",
+ "@turf/explode": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "@turf/meta": "^6.3.0",
+ "object-assign": "*"
}
},
"@turf/isolines": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/isolines/-/isolines-5.1.5.tgz",
- "integrity": "sha1-irTn9Cuz38VGFOW/FVln9+VdLeE=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/isolines/-/isolines-6.3.0.tgz",
+ "integrity": "sha512-z5hUIUcSaInGUhrx+vDZcCNWLS3MawzQGfc0TOUVDe03bO5sqUlaNyvx7C09Js4LEzsqqZ1GPIUvFPjePaXaVQ==",
"requires": {
- "@turf/bbox": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5",
- "@turf/meta": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/bbox": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "@turf/meta": "^6.3.0",
+ "object-assign": "*"
}
},
"@turf/kinks": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-5.1.5.tgz",
- "integrity": "sha1-irtpYdm7AQchO63fLCwmQNAlaYA=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.3.0.tgz",
+ "integrity": "sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==",
"requires": {
- "@turf/helpers": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- }
+ "@turf/helpers": "^6.3.0"
}
},
"@turf/length": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/length/-/length-5.1.5.tgz",
- "integrity": "sha1-86X4ZMK5lqi7RxeUU1ofrxLuvvs=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/length/-/length-6.3.0.tgz",
+ "integrity": "sha512-91MHtigpV7mbrMW3xyaPVtLWQU3p487t3YHU4vdxih03p+dFI512dX/FtWbd9LNgrtBt4PM1uo1WmafGvfStKA==",
"requires": {
- "@turf/distance": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/meta": "^5.1.5"
+ "@turf/distance": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/meta": "^6.3.0"
},
"dependencies": {
- "@turf/distance": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-5.1.5.tgz",
- "integrity": "sha1-Oc8YIEu/h1h9cH5gmmARiQkVZAk=",
+ "@turf/meta": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.3.0.tgz",
+ "integrity": "sha512-qBJjaAJS9H3ap0HlGXyF/Bzfl0qkA9suafX/jnDsZvWMfVLt+s+o6twKrXOGk5t7nnNON2NFRC8+czxpu104EQ==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- }
- },
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
+ "@turf/helpers": "^6.3.0"
}
}
}
},
"@turf/line-arc": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/line-arc/-/line-arc-5.1.5.tgz",
- "integrity": "sha1-AHinRHg1oSrkFKIR+aZNEYYVDhU=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/line-arc/-/line-arc-6.3.0.tgz",
+ "integrity": "sha512-WAAUgAWGf+U02GhXWrplODyUm3X6LZnYyn4VJQ9BPsKyawfK+NtjP7KsZ1MipIgtixNq3Ceexep0AHGHos4Prw==",
"requires": {
- "@turf/circle": "^5.1.5",
- "@turf/destination": "^5.1.5",
- "@turf/helpers": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- }
+ "@turf/circle": "^6.3.0",
+ "@turf/destination": "^6.3.0",
+ "@turf/helpers": "^6.3.0"
}
},
"@turf/line-chunk": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/line-chunk/-/line-chunk-5.1.5.tgz",
- "integrity": "sha1-kQqFwFwG2dD5w4l3oF4IGNUIXEI=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/line-chunk/-/line-chunk-6.3.0.tgz",
+ "integrity": "sha512-Xfja7H6XEgFPaK37sg7WBb0pIiA9hfjXtF7A1QPrh8z+JFyuVJzveBG2mYvin5UKTwsMKXuby6s4FUvmoEFqjQ==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/length": "^5.1.5",
- "@turf/line-slice-along": "^5.1.5",
- "@turf/meta": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- }
+ "@turf/helpers": "^6.3.0",
+ "@turf/length": "^6.3.0",
+ "@turf/line-slice-along": "^6.3.0",
+ "@turf/meta": "^6.3.0"
}
},
"@turf/line-intersect": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-5.1.5.tgz",
- "integrity": "sha1-DikHGuQDKV5JFyO8SfXPrI0R3fM=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-6.3.0.tgz",
+ "integrity": "sha512-3naxR7XpkPd2vst3Mw6DFry4C9m3o0/f2n/xu5UAyxb88Ie4m2k+1eqkhzMMx/0L+E6iThWpLx7DASM6q6o9ow==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5",
- "@turf/line-segment": "^5.1.5",
- "@turf/meta": "^5.1.5",
- "geojson-rbush": "2.1.0"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "@turf/line-segment": "^6.3.0",
+ "@turf/meta": "^6.3.0",
+ "geojson-rbush": "3.x"
}
},
"@turf/line-offset": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/line-offset/-/line-offset-5.1.5.tgz",
- "integrity": "sha1-KrWy8In4yRPiMdmUN4553KkLWh4=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/line-offset/-/line-offset-6.3.0.tgz",
+ "integrity": "sha512-yzgmNc/8miyn+pH2ubT4rZb9uAPY6oLqkwmEdzy2fuU4yUFnCNN/nWvYP4acGdgaSfprJd+4MdlLFzWBJxSplw==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5",
- "@turf/meta": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "@turf/meta": "^6.3.0"
}
},
"@turf/line-overlap": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/line-overlap/-/line-overlap-5.1.5.tgz",
- "integrity": "sha1-lDxvh6A4bcQ9+sEdKz/5wRLNP2A=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/line-overlap/-/line-overlap-6.3.0.tgz",
+ "integrity": "sha512-fVyXfTpr/A+ZXZWG6PbuYz5rAGbTQWyrMZveCl2049SbOXSkVXGjUfpnLaklP0p+adw7eRR0LhZn6FGz9CQaFg==",
"requires": {
- "@turf/boolean-point-on-line": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5",
- "@turf/line-segment": "^5.1.5",
- "@turf/meta": "^5.1.5",
- "@turf/nearest-point-on-line": "^5.1.5",
- "geojson-rbush": "2.1.0"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/boolean-point-on-line": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "@turf/line-segment": "^6.3.0",
+ "@turf/meta": "^6.3.0",
+ "@turf/nearest-point-on-line": "^6.3.0",
+ "deep-equal": "1.x",
+ "geojson-rbush": "3.x"
}
},
"@turf/line-segment": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/line-segment/-/line-segment-5.1.5.tgz",
- "integrity": "sha1-Mgeq7lRqskw9jcPMY/kcdwuAE+U=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/line-segment/-/line-segment-6.3.0.tgz",
+ "integrity": "sha512-M+aDy83V+E7jYWNaf+b+A88yhnMrJhyg/lhAj6mU6UeB2PbruXB2qgSmmVDSE2dIknOvZZuIWNzEzUI07RO2kw==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5",
- "@turf/meta": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "@turf/meta": "^6.3.0"
}
},
"@turf/line-slice": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/line-slice/-/line-slice-5.1.5.tgz",
- "integrity": "sha1-Hs/OFGKjeFeXVM7fRGTN4mgp8rU=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/line-slice/-/line-slice-6.3.0.tgz",
+ "integrity": "sha512-HEgVY7TcoRxh59DCb/7SUlX6x3RJWSEBspIfsxCv+2lhgb3aRekn+aELvr3VeY9fWPCXvOfELBH3PNjMhJMY2Q==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5",
- "@turf/nearest-point-on-line": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "@turf/nearest-point-on-line": "^6.3.0"
}
},
"@turf/line-slice-along": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/line-slice-along/-/line-slice-along-5.1.5.tgz",
- "integrity": "sha1-7drQoh70efKWihG9LdcomiEy6aU=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/line-slice-along/-/line-slice-along-6.3.0.tgz",
+ "integrity": "sha512-3s6vGTxGgCTb3Wd1seyir49rRc0GsX6OZXiRP5VdlT3Aq0cuuCNJycgHCH+H8LiYrEQDUhNUWbGljreCH0/JCg==",
"requires": {
- "@turf/bearing": "^5.1.5",
- "@turf/destination": "^5.1.5",
- "@turf/distance": "^5.1.5",
- "@turf/helpers": "^5.1.5"
- },
- "dependencies": {
- "@turf/distance": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-5.1.5.tgz",
- "integrity": "sha1-Oc8YIEu/h1h9cH5gmmARiQkVZAk=",
- "requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- }
- },
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/bearing": "^6.3.0",
+ "@turf/destination": "^6.3.0",
+ "@turf/distance": "^6.3.0",
+ "@turf/helpers": "^6.3.0"
}
},
"@turf/line-split": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/line-split/-/line-split-5.1.5.tgz",
- "integrity": "sha1-Wy30w3YZty73JbUWPPmSbVVArLc=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/line-split/-/line-split-6.3.0.tgz",
+ "integrity": "sha512-Q0nUJ0vczy11piyEz0FaKScFwSQtb1HJ2RPEMCw1coUJhTCB02KBWQLImhYqwsD3uLg+H/fxaJ1Gva6EPWoDNQ==",
"requires": {
- "@turf/bbox": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5",
- "@turf/line-intersect": "^5.1.5",
- "@turf/line-segment": "^5.1.5",
- "@turf/meta": "^5.1.5",
- "@turf/nearest-point-on-line": "^5.1.5",
- "@turf/square": "^5.1.5",
- "@turf/truncate": "^5.1.5",
- "geojson-rbush": "2.1.0"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/bbox": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "@turf/line-intersect": "^6.3.0",
+ "@turf/line-segment": "^6.3.0",
+ "@turf/meta": "^6.3.0",
+ "@turf/nearest-point-on-line": "^6.3.0",
+ "@turf/square": "^6.3.0",
+ "@turf/truncate": "^6.3.0",
+ "geojson-rbush": "3.x"
}
},
"@turf/line-to-polygon": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/line-to-polygon/-/line-to-polygon-5.1.5.tgz",
- "integrity": "sha1-ITz0Gmj4Ikd4ujnTGH3sPouBhlo=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/line-to-polygon/-/line-to-polygon-6.3.0.tgz",
+ "integrity": "sha512-754ywhQzcAylVSqQQwlv0TUMC5nCHp4nDle3X48tkHIKcnn4fJkW8O0YNhhQCE8p6NDcs0Ayi4qR0uHLPTzUWQ==",
"requires": {
- "@turf/bbox": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/bbox": "^6.3.0",
+ "@turf/clone": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0"
}
},
"@turf/mask": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/mask/-/mask-5.1.5.tgz",
- "integrity": "sha1-mrD+8aJyyY/j70kvn/thggayQtU=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/mask/-/mask-6.3.0.tgz",
+ "integrity": "sha512-2DbaHvmxz0ueQpGCo+6nXHhLqlmTjzGDkUL/ys6rgWTXj40udKakPwMNa2WrvzqHwowJsXWaWDp2GogRT5foDA==",
"requires": {
- "@turf/bbox": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/meta": "^5.1.5",
- "@turf/union": "^5.1.5",
+ "@turf/bbox": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/meta": "^6.3.0",
+ "@turf/union": "^6.3.0",
"rbush": "^2.0.1"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "quickselect": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-1.1.1.tgz",
- "integrity": "sha512-qN0Gqdw4c4KGPsBOQafj6yj/PA6c/L63f6CaZ/DCF/xF4Esu3jVmKLUDYxghFx8Kb/O7y9tI7x2RjTSXwdK1iQ=="
- },
- "rbush": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/rbush/-/rbush-2.0.2.tgz",
- "integrity": "sha512-XBOuALcTm+O/H8G90b6pzu6nX6v2zCKiFG4BJho8a+bY6AER6t8uQUZdi5bomQc0AprCWhEGa7ncAbbRap0bRA==",
- "requires": {
- "quickselect": "^1.0.1"
- }
- }
}
},
"@turf/meta": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.1.6.tgz",
- "integrity": "sha1-wgqGPt7Qhp+yhUje6Ik0G8y0akY=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.3.0.tgz",
+ "integrity": "sha512-qBJjaAJS9H3ap0HlGXyF/Bzfl0qkA9suafX/jnDsZvWMfVLt+s+o6twKrXOGk5t7nnNON2NFRC8+czxpu104EQ==",
"requires": {
- "@turf/helpers": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- }
+ "@turf/helpers": "^6.3.0"
}
},
"@turf/midpoint": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/midpoint/-/midpoint-5.1.5.tgz",
- "integrity": "sha1-4mH2srDqgSTM7/VSomLdRlydBfA=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/midpoint/-/midpoint-6.3.0.tgz",
+ "integrity": "sha512-ImiYK5l/QZh5aCynxCyHoaJYn4j1VhorVyw2XihHuwAtebTc+KRaBJpWSD2eJxo3Q3J+QepWMiiMvQFJgQ5uCQ==",
"requires": {
- "@turf/bearing": "^5.1.5",
- "@turf/destination": "^5.1.5",
- "@turf/distance": "^5.1.5",
- "@turf/helpers": "^5.1.5"
- },
- "dependencies": {
- "@turf/distance": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-5.1.5.tgz",
- "integrity": "sha1-Oc8YIEu/h1h9cH5gmmARiQkVZAk=",
- "requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- }
- },
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/bearing": "^6.3.0",
+ "@turf/destination": "^6.3.0",
+ "@turf/distance": "^6.3.0",
+ "@turf/helpers": "^6.3.0"
+ }
+ },
+ "@turf/moran-index": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/moran-index/-/moran-index-6.3.0.tgz",
+ "integrity": "sha512-qRsSqmYtvnKiGFbz3aU1up8Q8jY9MCflRdvKeTOJ2E3Z4xOIyOLXOrNvpLIM8CFcLwY06IInMRoaKi/CVOC54g==",
+ "requires": {
+ "@turf/distance-weight": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/meta": "^6.3.0"
}
},
"@turf/nearest-point": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/nearest-point/-/nearest-point-5.1.5.tgz",
- "integrity": "sha1-EgUN5Bw5hEMiTHl43g9iE5ANNPs=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/nearest-point/-/nearest-point-6.3.0.tgz",
+ "integrity": "sha512-eovLuWxO2cQaKETbf1OhnWYkRYYgwuDhJAvLU9ZpXnqk2tNE06gt/2C5oJJiSlh4ZksDM8ryHZicswaXrYz+qA==",
"requires": {
- "@turf/clone": "^5.1.5",
- "@turf/distance": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/meta": "^5.1.5"
- },
- "dependencies": {
- "@turf/distance": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-5.1.5.tgz",
- "integrity": "sha1-Oc8YIEu/h1h9cH5gmmARiQkVZAk=",
- "requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- }
- },
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/clone": "^6.3.0",
+ "@turf/distance": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/meta": "^6.3.0"
}
},
"@turf/nearest-point-on-line": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/nearest-point-on-line/-/nearest-point-on-line-5.1.5.tgz",
- "integrity": "sha1-VgauKX8VlHUkvqUaKp71HsG/nDY=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/nearest-point-on-line/-/nearest-point-on-line-6.3.0.tgz",
+ "integrity": "sha512-b4C9Md1VbGn9chMgdSj2grJD4w4t0owEWOKEBwOZfdhrcksyOedVvKB7XqOFdj/8Jitel40EKAC5LQTNu24kEQ==",
"requires": {
- "@turf/bearing": "^5.1.5",
- "@turf/destination": "^5.1.5",
- "@turf/distance": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5",
- "@turf/line-intersect": "^5.1.5",
- "@turf/meta": "^5.1.5"
- },
- "dependencies": {
- "@turf/distance": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-5.1.5.tgz",
- "integrity": "sha1-Oc8YIEu/h1h9cH5gmmARiQkVZAk=",
- "requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- }
- },
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/bearing": "^6.3.0",
+ "@turf/destination": "^6.3.0",
+ "@turf/distance": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "@turf/line-intersect": "^6.3.0",
+ "@turf/meta": "^6.3.0"
}
},
"@turf/nearest-point-to-line": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/@turf/nearest-point-to-line/-/nearest-point-to-line-5.1.6.tgz",
- "integrity": "sha512-ZSvDIEiHhifn/vNwLXZI/E8xmEz5yBPqfUR7BVHRZrB1cP7jLhKZvkbidjG//uW8Fr1Ulc+PFOXczLspIcx/lw==",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/nearest-point-to-line/-/nearest-point-to-line-6.3.0.tgz",
+ "integrity": "sha512-1ut4u1KXHwXc6qdnDLkhTdPUdeHOmdmysMBxnNNFH7UTefi3XfR8BF/NOxNP8g7OKJrZ2vhDeR4PCL5xAsVH5A==",
"requires": {
- "@turf/helpers": "6.x",
- "@turf/invariant": "6.x",
- "@turf/meta": "6.x",
- "@turf/point-to-line-distance": "^5.1.5",
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "@turf/meta": "^6.3.0",
+ "@turf/point-to-line-distance": "^6.3.0",
"object-assign": "*"
- },
- "dependencies": {
- "@turf/meta": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.3.0.tgz",
- "integrity": "sha512-qBJjaAJS9H3ap0HlGXyF/Bzfl0qkA9suafX/jnDsZvWMfVLt+s+o6twKrXOGk5t7nnNON2NFRC8+czxpu104EQ==",
- "requires": {
- "@turf/helpers": "^6.3.0"
- }
- }
}
},
"@turf/planepoint": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/planepoint/-/planepoint-5.1.5.tgz",
- "integrity": "sha1-GLvfAG91ne9eQsagBsn53oGyt/8=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/planepoint/-/planepoint-6.3.0.tgz",
+ "integrity": "sha512-RDfzUiwB3P3bGeRBZf/czZdtQsqUIVQePaAU5ijCqTBdR1V0TuVbRig1WE0XD4j5dM242OEezHJ3Xqgo71Nzww==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0"
}
},
"@turf/point-grid": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/point-grid/-/point-grid-5.1.5.tgz",
- "integrity": "sha1-MFFBJI9Quv42zn5mukuX56sjaIc=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/point-grid/-/point-grid-6.3.0.tgz",
+ "integrity": "sha512-1ERghdRXtA/5Z/To7X1Y9D1cvej3+ZCZXNZnM/0c+3sAioohjK5IXv2enR23p1ftA6Z3H7wug5IB4YmVzs4MaA==",
"requires": {
- "@turf/boolean-within": "^5.1.5",
- "@turf/distance": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- },
- "dependencies": {
- "@turf/distance": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-5.1.5.tgz",
- "integrity": "sha1-Oc8YIEu/h1h9cH5gmmARiQkVZAk=",
- "requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- }
- },
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/boolean-within": "^6.3.0",
+ "@turf/distance": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0"
}
},
"@turf/point-on-feature": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/point-on-feature/-/point-on-feature-5.1.5.tgz",
- "integrity": "sha1-MMfwMkMCd8ZBjZbSieRba/shP+c=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/point-on-feature/-/point-on-feature-6.3.0.tgz",
+ "integrity": "sha512-zN35KN/IUAgOyVtlEQg1j71U8eoav2JPZOdWlEFHsjYQVm9cF+AKOkvBdm6LQWMWvCtwSqqghwe/zRKvzJPynw==",
"requires": {
- "@turf/boolean-point-in-polygon": "^5.1.5",
- "@turf/center": "^5.1.5",
- "@turf/explode": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/nearest-point": "^5.1.5"
- },
- "dependencies": {
- "@turf/boolean-point-in-polygon": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-5.1.5.tgz",
- "integrity": "sha1-8BzBlNHgMKVIv9qYHLpDz9YpQbc=",
- "requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- }
- },
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/boolean-point-in-polygon": "^6.3.0",
+ "@turf/center": "^6.3.0",
+ "@turf/explode": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/nearest-point": "^6.3.0"
}
},
"@turf/point-to-line-distance": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/@turf/point-to-line-distance/-/point-to-line-distance-5.1.6.tgz",
- "integrity": "sha512-PE3hiTeeDEi4ZLPtI8XAzFYW9nHo1EVsZGm/4ZVV8jo39d3X1oLVHxY3e1PkCmWwRapXy4QLqvnTQ7nU4wspNw==",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/point-to-line-distance/-/point-to-line-distance-6.3.0.tgz",
+ "integrity": "sha512-AqCcj4A0GPzKb3w+q+C9ex0r5mC+u+Ee6VN2jY1p25dxBQJNpMZKDE5LcWtaXeD+pAk3ZGmvea8LR5S0AJukxA==",
"requires": {
- "@turf/bearing": "6.x",
- "@turf/distance": "6.x",
- "@turf/helpers": "6.x",
- "@turf/invariant": "6.x",
- "@turf/meta": "6.x",
- "@turf/projection": "6.x",
- "@turf/rhumb-bearing": "6.x",
- "@turf/rhumb-distance": "6.x"
- },
- "dependencies": {
- "@turf/bearing": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/@turf/bearing/-/bearing-6.3.0.tgz",
- "integrity": "sha512-apuUm9xN6VQLO33m7F2mmzlm3dHfeesJjMSzh9iehGtgmp1IaVndjdcIvs0ieiwm8bN9UhwXpfPtO3pV0n9SFw==",
- "requires": {
- "@turf/helpers": "^6.3.0",
- "@turf/invariant": "^6.3.0"
- }
- },
- "@turf/clone": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/@turf/clone/-/clone-6.3.0.tgz",
- "integrity": "sha512-GAgN89/9GCqUKECB1oY2hcTs0K2rZj+a2tY6VfM0ef9wwckuQZCKi+kKGUzhKVrmHee15jKV8n6DY0er8OndKg==",
- "requires": {
- "@turf/helpers": "^6.3.0"
- }
- },
- "@turf/meta": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.3.0.tgz",
- "integrity": "sha512-qBJjaAJS9H3ap0HlGXyF/Bzfl0qkA9suafX/jnDsZvWMfVLt+s+o6twKrXOGk5t7nnNON2NFRC8+czxpu104EQ==",
- "requires": {
- "@turf/helpers": "^6.3.0"
- }
- },
- "@turf/projection": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/@turf/projection/-/projection-6.3.0.tgz",
- "integrity": "sha512-IpSs7Q6G6xi47ynVlYYVegPLy6Jc0yo3/DcIm83jaJa4NnzPFXIFZT0v9Fe1N8MraHZqiqaSPbVnJXCGwR12lg==",
- "requires": {
- "@turf/clone": "^6.3.0",
- "@turf/helpers": "^6.3.0",
- "@turf/meta": "^6.3.0"
- }
- },
- "@turf/rhumb-bearing": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/@turf/rhumb-bearing/-/rhumb-bearing-6.3.0.tgz",
- "integrity": "sha512-/c/BE3huEUrwN6gx7Bg2FzfJqeU+TWk/slQPDHpbVunlIPbS6L28brqSVD+KXfMG8HQIzynz6Pm4Y+j5Iv4aWA==",
- "requires": {
- "@turf/helpers": "^6.3.0",
- "@turf/invariant": "^6.3.0"
- }
- },
- "@turf/rhumb-distance": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/@turf/rhumb-distance/-/rhumb-distance-6.3.0.tgz",
- "integrity": "sha512-wMIQVvznusonnp/POeucFdA4Rubn0NrkcEMdxdcCgFK7OmTz0zU4CEnNONF2IUGkQ5WwoKiuS7MOTQ8OuCjSfQ==",
- "requires": {
- "@turf/helpers": "^6.3.0",
- "@turf/invariant": "^6.3.0"
- }
- }
+ "@turf/bearing": "^6.3.0",
+ "@turf/distance": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "@turf/meta": "^6.3.0",
+ "@turf/projection": "^6.3.0",
+ "@turf/rhumb-bearing": "^6.3.0",
+ "@turf/rhumb-distance": "^6.3.0"
}
},
"@turf/points-within-polygon": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/points-within-polygon/-/points-within-polygon-5.1.5.tgz",
- "integrity": "sha1-K4VaXfOq2lfC7oIKB1SrlJKKIzc=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/points-within-polygon/-/points-within-polygon-6.3.0.tgz",
+ "integrity": "sha512-ES/tLj5oZR7TBg7FSOy8bypBvXALwl2f36MmQ3AJfK0KvAeQ+mxFXTGslAK3ewL9fVVxWLsmbP9bPLSzWeuPAw==",
"requires": {
- "@turf/boolean-point-in-polygon": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/meta": "^5.1.5"
- },
- "dependencies": {
- "@turf/boolean-point-in-polygon": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-5.1.5.tgz",
- "integrity": "sha1-8BzBlNHgMKVIv9qYHLpDz9YpQbc=",
- "requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- }
- },
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/boolean-point-in-polygon": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/meta": "^6.3.0"
+ }
+ },
+ "@turf/polygon-smooth": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/polygon-smooth/-/polygon-smooth-6.3.0.tgz",
+ "integrity": "sha512-60aMw3d57DXqdFyWU43c5gHaumCZ9jn6K5GqgeKTfmElIumdSspg9MEIW7d7z6qkPufPY34FczJ9yapMih5SIQ==",
+ "requires": {
+ "@turf/helpers": "^6.3.0",
+ "@turf/meta": "^6.3.0"
}
},
"@turf/polygon-tangents": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/polygon-tangents/-/polygon-tangents-5.1.5.tgz",
- "integrity": "sha1-K/AJkUcwJbF44lDcfLmuVAm71lI=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/polygon-tangents/-/polygon-tangents-6.3.0.tgz",
+ "integrity": "sha512-QEXsXgZKWV3mPPqxERIQ+DzBSvnO0R1c9FsHuHE0F49Cic+CRMPjEpnzQj39cOUQfwPlQl2ThuaKAljlQ5QNMQ==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/bbox": "^6.3.0",
+ "@turf/boolean-within": "^6.3.0",
+ "@turf/explode": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "@turf/nearest-point": "^6.3.0"
}
},
"@turf/polygon-to-line": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/polygon-to-line/-/polygon-to-line-5.1.5.tgz",
- "integrity": "sha1-I7tEjYTcTGUZmaxhGjbZHFklA2o=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/polygon-to-line/-/polygon-to-line-6.3.0.tgz",
+ "integrity": "sha512-KFGlQlGOBayBvELz+tip1zCa3eB8xyZePZUZ3I3OnU7mk0FFzJzvLTmPUc7MupgqORT4LkNGmyKSVWaz38NTig==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0"
}
},
"@turf/polygonize": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/polygonize/-/polygonize-5.1.5.tgz",
- "integrity": "sha1-BJP6EYefOdELmtAs5qI+lC0IqjI=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/polygonize/-/polygonize-6.3.0.tgz",
+ "integrity": "sha512-v1w5ibIJ5to3+nuitVNyukPMMY+z++y3e55TBuot1vkAEyCi538Kc8Qz0eWONPGZKzwYtQtkve2NIp0BBeNd5g==",
"requires": {
- "@turf/boolean-point-in-polygon": "^5.1.5",
- "@turf/envelope": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5",
- "@turf/meta": "^5.1.5"
- },
- "dependencies": {
- "@turf/boolean-point-in-polygon": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-5.1.5.tgz",
- "integrity": "sha1-8BzBlNHgMKVIv9qYHLpDz9YpQbc=",
- "requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- }
- },
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/boolean-point-in-polygon": "^6.3.0",
+ "@turf/envelope": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "@turf/meta": "^6.3.0"
}
},
"@turf/projection": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/projection/-/projection-5.1.5.tgz",
- "integrity": "sha1-JFF+7rLzaBa6n3EueubWo2jt91c=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/projection/-/projection-6.3.0.tgz",
+ "integrity": "sha512-IpSs7Q6G6xi47ynVlYYVegPLy6Jc0yo3/DcIm83jaJa4NnzPFXIFZT0v9Fe1N8MraHZqiqaSPbVnJXCGwR12lg==",
"requires": {
- "@turf/clone": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/meta": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- }
+ "@turf/clone": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/meta": "^6.3.0"
}
},
"@turf/random": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/random/-/random-5.1.5.tgz",
- "integrity": "sha1-sy78k0Vgroulfo67UfJBw5+6Lns=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/random/-/random-6.3.0.tgz",
+ "integrity": "sha512-jSKNqLCOc/xUPoQp8jZLUYTrtID1PNJV7eLXMbJdHdcYwU7d6dTkrdgI08ZU/Nc4qJv1ZAlWO/xEyKGtC1RgrQ==",
"requires": {
- "@turf/helpers": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- }
+ "@turf/helpers": "^6.3.0"
+ }
+ },
+ "@turf/rectangle-grid": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/rectangle-grid/-/rectangle-grid-6.3.0.tgz",
+ "integrity": "sha512-XQAjpprUhGA9aoVH8H6lqZb0Dk8SZ2djKAPD6dDplFgrufdmP1Fe1BfbsdBgjyfPrdR7hSffLyEAwC3bhfJo2w==",
+ "requires": {
+ "@turf/boolean-intersects": "^6.3.0",
+ "@turf/distance": "^6.3.0",
+ "@turf/helpers": "^6.3.0"
}
},
"@turf/rewind": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/rewind/-/rewind-5.1.5.tgz",
- "integrity": "sha1-nqPbSmi3PB/R3RH1djGxQ8/vock=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/rewind/-/rewind-6.3.0.tgz",
+ "integrity": "sha512-56HwvOZ4r4/wXr8l8zCpdjZ3bxY6Ee7aokuJr/+BlVqikHdRHRx+FJpLGpykZU1YWdO7IiLK7ajX+clYPaqRKg==",
"requires": {
- "@turf/boolean-clockwise": "^5.1.5",
- "@turf/clone": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5",
- "@turf/meta": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/boolean-clockwise": "^6.3.0",
+ "@turf/clone": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "@turf/meta": "^6.3.0"
}
},
"@turf/rhumb-bearing": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/rhumb-bearing/-/rhumb-bearing-5.1.5.tgz",
- "integrity": "sha1-rPalAkJ+uMSeGM2mrg7/qwxd3NI=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/rhumb-bearing/-/rhumb-bearing-6.3.0.tgz",
+ "integrity": "sha512-/c/BE3huEUrwN6gx7Bg2FzfJqeU+TWk/slQPDHpbVunlIPbS6L28brqSVD+KXfMG8HQIzynz6Pm4Y+j5Iv4aWA==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0"
}
},
"@turf/rhumb-destination": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/rhumb-destination/-/rhumb-destination-5.1.5.tgz",
- "integrity": "sha1-sbKuuSFUfyrAwamUtqEw+SRjx0I=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/rhumb-destination/-/rhumb-destination-6.3.0.tgz",
+ "integrity": "sha512-MaQf5wldfERfn8cjtbkD/6GUurAwD+sjedvDgV/chZ83yx7kXmRgrVMpRSGUbmGQ3Ww8dn38sUCapnM6M07+Rg==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0"
}
},
"@turf/rhumb-distance": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/rhumb-distance/-/rhumb-distance-5.1.5.tgz",
- "integrity": "sha1-GAaFdiX0IlOE2tQT5p85U4/192U=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/rhumb-distance/-/rhumb-distance-6.3.0.tgz",
+ "integrity": "sha512-wMIQVvznusonnp/POeucFdA4Rubn0NrkcEMdxdcCgFK7OmTz0zU4CEnNONF2IUGkQ5WwoKiuS7MOTQ8OuCjSfQ==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0"
}
},
"@turf/sample": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/sample/-/sample-5.1.5.tgz",
- "integrity": "sha1-6ctEikeJzFbuPeLdZ4HiNDQ1tBE=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/sample/-/sample-6.3.0.tgz",
+ "integrity": "sha512-CmUkpoLIi+57jxBmYh4KW7S4Vculty84NC2ERNFZrLkVquewVYSppwKsaZtc0Hbap6a1N7hP4C80e2bPzRC4fg==",
"requires": {
- "@turf/helpers": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- }
+ "@turf/helpers": "^6.3.0"
}
},
"@turf/sector": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/sector/-/sector-5.1.5.tgz",
- "integrity": "sha1-rCu5TBPt1gNPb9wrZwCBNdIPXgc=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/sector/-/sector-6.3.0.tgz",
+ "integrity": "sha512-bHaDlHzCKEl5G+EEXdMTk3MFC8Yl5QjwrMVakF2Usi0P0c7hp6r10QVOjq9nmn6jvZHTPaiG2A4z9unkWIFxIg==",
"requires": {
- "@turf/circle": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5",
- "@turf/line-arc": "^5.1.5",
- "@turf/meta": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/circle": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "@turf/line-arc": "^6.3.0",
+ "@turf/meta": "^6.3.0"
}
},
"@turf/shortest-path": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/shortest-path/-/shortest-path-5.1.5.tgz",
- "integrity": "sha1-hUroCW9rw+EwD6ynfz6PZ9j5Nas=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/shortest-path/-/shortest-path-6.3.0.tgz",
+ "integrity": "sha512-dc50vcgb6G/nyljCdfxS4T3tGb2f45MkKEFdz6sVTYqjNakPnRoJao8xvInVsf1i2J53dWNU635oZhW9P1nqKg==",
"requires": {
- "@turf/bbox": "^5.1.5",
- "@turf/bbox-polygon": "^5.1.5",
- "@turf/boolean-point-in-polygon": "^5.1.5",
- "@turf/clean-coords": "^5.1.5",
- "@turf/distance": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5",
- "@turf/meta": "^5.1.5",
- "@turf/transform-scale": "^5.1.5"
- },
- "dependencies": {
- "@turf/boolean-point-in-polygon": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-5.1.5.tgz",
- "integrity": "sha1-8BzBlNHgMKVIv9qYHLpDz9YpQbc=",
- "requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- }
- },
- "@turf/distance": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-5.1.5.tgz",
- "integrity": "sha1-Oc8YIEu/h1h9cH5gmmARiQkVZAk=",
- "requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- }
- },
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/bbox": "^6.3.0",
+ "@turf/bbox-polygon": "^6.3.0",
+ "@turf/boolean-point-in-polygon": "^6.3.0",
+ "@turf/clean-coords": "^6.3.0",
+ "@turf/distance": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "@turf/meta": "^6.3.0",
+ "@turf/transform-scale": "^6.3.0"
}
},
"@turf/simplify": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/simplify/-/simplify-5.1.5.tgz",
- "integrity": "sha1-Csjyei60IYGD7dmZjDJ1q+QIuSY=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/simplify/-/simplify-6.3.0.tgz",
+ "integrity": "sha512-6a+9oKwZpZk3Oohz9koQZGXh1qb+/UgUz2yW2bunjjlKpBdBFhRbEKi0KeprgPGFLLTMjf0tybhO1rFwiz6S1w==",
"requires": {
- "@turf/clean-coords": "^5.1.5",
- "@turf/clone": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/meta": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- }
+ "@turf/clean-coords": "^6.3.0",
+ "@turf/clone": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/meta": "^6.3.0"
}
},
"@turf/square": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/square/-/square-5.1.5.tgz",
- "integrity": "sha1-qnsh5gM8ySUsOlvW89iNq9b+0YA=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/square/-/square-6.3.0.tgz",
+ "integrity": "sha512-/nRGsV0DlUcOYv+gKAkIADSf+HooNLbOLBTUdhq9Piy3LuAWIXT+Rt5XN+NuNZP+84Al34GA1fR+BxqQ4reh7w==",
"requires": {
- "@turf/distance": "^5.1.5",
- "@turf/helpers": "^5.1.5"
- },
- "dependencies": {
- "@turf/distance": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-5.1.5.tgz",
- "integrity": "sha1-Oc8YIEu/h1h9cH5gmmARiQkVZAk=",
- "requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- }
- },
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/distance": "^6.3.0",
+ "@turf/helpers": "^6.3.0"
}
},
"@turf/square-grid": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/square-grid/-/square-grid-5.1.5.tgz",
- "integrity": "sha1-G9X3uesU8LYLwjH+/nNR0aMvGlE=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/square-grid/-/square-grid-6.3.0.tgz",
+ "integrity": "sha512-ZCgThI5hPLJNVErCB9zkJ3w3OpW6BbrOqyrxFbwlYGZrZ6uj52/j8PWQtwnmiqdv0k8+Cbxrap7E6//Oks4jIw==",
"requires": {
- "@turf/boolean-contains": "^5.1.5",
- "@turf/boolean-overlap": "^5.1.5",
- "@turf/distance": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/intersect": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- },
- "dependencies": {
- "@turf/distance": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-5.1.5.tgz",
- "integrity": "sha1-Oc8YIEu/h1h9cH5gmmARiQkVZAk=",
- "requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- }
- },
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/helpers": "^6.3.0",
+ "@turf/rectangle-grid": "^6.3.0"
}
},
"@turf/standard-deviational-ellipse": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/standard-deviational-ellipse/-/standard-deviational-ellipse-5.1.5.tgz",
- "integrity": "sha1-hc0oO14ayljyG9ZkEuQUtW2FIyQ=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/standard-deviational-ellipse/-/standard-deviational-ellipse-6.3.0.tgz",
+ "integrity": "sha512-e8CeSUv5FLpzlJxiOr9lDtJIY3e/JKW4is+gBO8rMTQNFbWyrqXtzhyTfrwXEPKmaeei1DK9ixxj/oRDna25Hw==",
"requires": {
- "@turf/center-mean": "^5.1.5",
- "@turf/ellipse": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5",
- "@turf/meta": "^5.1.5",
- "@turf/points-within-polygon": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/center-mean": "^6.3.0",
+ "@turf/ellipse": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "@turf/meta": "^6.3.0",
+ "@turf/points-within-polygon": "^6.3.0"
}
},
"@turf/tag": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/tag/-/tag-5.1.5.tgz",
- "integrity": "sha1-0e4aUIjs/UoUEQGcmCOczypJfSA=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/tag/-/tag-6.3.0.tgz",
+ "integrity": "sha512-3L//rLql+ILeFuZ5L/sPm0f5NcHrNgUnGiB1hSIp3kdhhIIiZUpcktJUbksTvID67JJlP3smfyIQiU++LZW21w==",
"requires": {
- "@turf/boolean-point-in-polygon": "^5.1.5",
- "@turf/clone": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/meta": "^5.1.5"
- },
- "dependencies": {
- "@turf/boolean-point-in-polygon": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-5.1.5.tgz",
- "integrity": "sha1-8BzBlNHgMKVIv9qYHLpDz9YpQbc=",
- "requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- }
- },
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/boolean-point-in-polygon": "^6.3.0",
+ "@turf/clone": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/meta": "^6.3.0"
}
},
"@turf/tesselate": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/tesselate/-/tesselate-5.1.5.tgz",
- "integrity": "sha1-MqWU6cIaAEIKn5DSxD3z4RZgYc0=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/tesselate/-/tesselate-6.3.0.tgz",
+ "integrity": "sha512-SkBHJCci/ergp/Y1TIfBRavdEJgFatQDz+ySdggXHT+mBiJEOEia3N+8V89RVOnORXTCDsjzWOWwftCS/J2sKQ==",
"requires": {
- "@turf/helpers": "^5.1.5",
+ "@turf/helpers": "^6.3.0",
"earcut": "^2.0.0"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- }
}
},
"@turf/tin": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/tin/-/tin-5.1.5.tgz",
- "integrity": "sha1-KCI+r8X76a6azKgc3P6l0UJMkX0=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/tin/-/tin-6.3.0.tgz",
+ "integrity": "sha512-obk9vyzKo3o3Dy4fPlb8IROb9LdMlz4LvKZ63DNtQsxwrWsc+og0EOh2mpvZrCIeoObx3ah5SnuAh14xH4JybA==",
"requires": {
- "@turf/helpers": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- }
+ "@turf/helpers": "^6.3.0"
}
},
"@turf/transform-rotate": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/transform-rotate/-/transform-rotate-5.1.5.tgz",
- "integrity": "sha1-0Jbt2eMA/jFQadVNjkWMQJIh7fs=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/transform-rotate/-/transform-rotate-6.3.0.tgz",
+ "integrity": "sha512-6CPfmDdaXjbBoPeyHkui704vz6MD3MoI09LGRVJ/RIo1uH/OL6RDSlCfLxFtkE33FJ7VV4giczc3LF1UP5Oh9w==",
"requires": {
- "@turf/centroid": "^5.1.5",
- "@turf/clone": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5",
- "@turf/meta": "^5.1.5",
- "@turf/rhumb-bearing": "^5.1.5",
- "@turf/rhumb-destination": "^5.1.5",
- "@turf/rhumb-distance": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/centroid": "^6.3.0",
+ "@turf/clone": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "@turf/meta": "^6.3.0",
+ "@turf/rhumb-bearing": "^6.3.0",
+ "@turf/rhumb-destination": "^6.3.0",
+ "@turf/rhumb-distance": "^6.3.0"
}
},
"@turf/transform-scale": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/transform-scale/-/transform-scale-5.1.5.tgz",
- "integrity": "sha1-cP064BhWz3uunxWtVhzf6PiQAbk=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/transform-scale/-/transform-scale-6.3.0.tgz",
+ "integrity": "sha512-UnLWEXAUdZy7JYbylMjYczPUkxXlUK1nMgv7zEzQ+8mczysPVsgB/FDyiexY2bgVEEBMeDqFSHtqLRavXljI0A==",
"requires": {
- "@turf/bbox": "^5.1.5",
- "@turf/center": "^5.1.5",
- "@turf/centroid": "^5.1.5",
- "@turf/clone": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5",
- "@turf/meta": "^5.1.5",
- "@turf/rhumb-bearing": "^5.1.5",
- "@turf/rhumb-destination": "^5.1.5",
- "@turf/rhumb-distance": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/bbox": "^6.3.0",
+ "@turf/center": "^6.3.0",
+ "@turf/centroid": "^6.3.0",
+ "@turf/clone": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "@turf/meta": "^6.3.0",
+ "@turf/rhumb-bearing": "^6.3.0",
+ "@turf/rhumb-destination": "^6.3.0",
+ "@turf/rhumb-distance": "^6.3.0"
}
},
"@turf/transform-translate": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/transform-translate/-/transform-translate-5.1.5.tgz",
- "integrity": "sha1-Uwolf7Hccmja3Ks05nkB6yo97GM=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/transform-translate/-/transform-translate-6.3.0.tgz",
+ "integrity": "sha512-ZGAK3T6wdYLOIKr/FHl+i09b1vhPV3XWHw4/M27xA6US2rNcO6/jkLjskdME/3JzJDFmGa8F2vlPqlhtWWoRSw==",
"requires": {
- "@turf/clone": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5",
- "@turf/meta": "^5.1.5",
- "@turf/rhumb-destination": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/clone": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "@turf/meta": "^6.3.0",
+ "@turf/rhumb-destination": "^6.3.0"
}
},
"@turf/triangle-grid": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/triangle-grid/-/triangle-grid-5.1.5.tgz",
- "integrity": "sha1-ezZ2IQhVTBTyjK/zxIsc/ILI3IE=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/triangle-grid/-/triangle-grid-6.3.0.tgz",
+ "integrity": "sha512-2AExXl7pTvRKOyGowuvvUm0tTyLQl+xzvv+mgWgNyg84qQptGN3HFH/QS4quoQdEzOyHNLFHgloNn6cWFX9v4A==",
"requires": {
- "@turf/distance": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/intersect": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- },
- "dependencies": {
- "@turf/distance": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-5.1.5.tgz",
- "integrity": "sha1-Oc8YIEu/h1h9cH5gmmARiQkVZAk=",
- "requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- }
- },
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/distance": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/intersect": "^6.3.0"
}
},
"@turf/truncate": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/truncate/-/truncate-5.1.5.tgz",
- "integrity": "sha1-nu37Oxi6gfLJjT6tCUMcyhiErYk=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/truncate/-/truncate-6.3.0.tgz",
+ "integrity": "sha512-fvzR3BUODPciEBELLqqAggEEeb1L0d79WZYb9HKaoSB0GKTTgNrEbkTXiiGEjGJ1s1FMqXOEp0DKsLvvb1h4OA==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/meta": "^5.1.5"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- }
+ "@turf/helpers": "^6.3.0",
+ "@turf/meta": "^6.3.0"
}
},
"@turf/turf": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/@turf/turf/-/turf-5.1.6.tgz",
- "integrity": "sha1-wxIlkoh+0jS3VGi4qMRb+Ib7+PY=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/turf/-/turf-6.3.0.tgz",
+ "integrity": "sha512-6CcUammJKsn6mI7/+DlnXqf1iAk5HZ86/wmHIVG6VTmmPBP5drWSjoRUcaiXQADzLLuR9eZ3kl11KEOdvn9DmQ==",
"requires": {
- "@turf/along": "5.1.x",
- "@turf/area": "5.1.x",
- "@turf/bbox": "5.1.x",
- "@turf/bbox-clip": "5.1.x",
- "@turf/bbox-polygon": "5.1.x",
- "@turf/bearing": "5.1.x",
- "@turf/bezier-spline": "5.1.x",
- "@turf/boolean-clockwise": "5.1.x",
- "@turf/boolean-contains": "5.1.x",
- "@turf/boolean-crosses": "5.1.x",
- "@turf/boolean-disjoint": "5.1.x",
- "@turf/boolean-equal": "5.1.x",
- "@turf/boolean-overlap": "5.1.x",
- "@turf/boolean-parallel": "5.1.x",
- "@turf/boolean-point-in-polygon": "5.1.x",
- "@turf/boolean-point-on-line": "5.1.x",
- "@turf/boolean-within": "5.1.x",
- "@turf/buffer": "5.1.x",
- "@turf/center": "5.1.x",
- "@turf/center-mean": "5.1.x",
- "@turf/center-median": "5.1.x",
- "@turf/center-of-mass": "5.1.x",
- "@turf/centroid": "5.1.x",
- "@turf/circle": "5.1.x",
- "@turf/clean-coords": "5.1.x",
- "@turf/clone": "5.1.x",
- "@turf/clusters": "5.1.x",
- "@turf/clusters-dbscan": "5.1.x",
- "@turf/clusters-kmeans": "5.1.x",
- "@turf/collect": "5.1.x",
- "@turf/combine": "5.1.x",
- "@turf/concave": "5.1.x",
- "@turf/convex": "5.1.x",
- "@turf/destination": "5.1.x",
- "@turf/difference": "5.1.x",
- "@turf/dissolve": "5.1.x",
- "@turf/distance": "5.1.x",
- "@turf/ellipse": "5.1.x",
- "@turf/envelope": "5.1.x",
- "@turf/explode": "5.1.x",
- "@turf/flatten": "5.1.x",
- "@turf/flip": "5.1.x",
- "@turf/great-circle": "5.1.x",
- "@turf/helpers": "5.1.x",
- "@turf/hex-grid": "5.1.x",
- "@turf/interpolate": "5.1.x",
- "@turf/intersect": "5.1.x",
- "@turf/invariant": "5.1.x",
- "@turf/isobands": "5.1.x",
- "@turf/isolines": "5.1.x",
- "@turf/kinks": "5.1.x",
- "@turf/length": "5.1.x",
- "@turf/line-arc": "5.1.x",
- "@turf/line-chunk": "5.1.x",
- "@turf/line-intersect": "5.1.x",
- "@turf/line-offset": "5.1.x",
- "@turf/line-overlap": "5.1.x",
- "@turf/line-segment": "5.1.x",
- "@turf/line-slice": "5.1.x",
- "@turf/line-slice-along": "5.1.x",
- "@turf/line-split": "5.1.x",
- "@turf/line-to-polygon": "5.1.x",
- "@turf/mask": "5.1.x",
- "@turf/meta": "5.1.x",
- "@turf/midpoint": "5.1.x",
- "@turf/nearest-point": "5.1.x",
- "@turf/nearest-point-on-line": "5.1.x",
- "@turf/nearest-point-to-line": "5.1.x",
- "@turf/planepoint": "5.1.x",
- "@turf/point-grid": "5.1.x",
- "@turf/point-on-feature": "5.1.x",
- "@turf/point-to-line-distance": "5.1.x",
- "@turf/points-within-polygon": "5.1.x",
- "@turf/polygon-tangents": "5.1.x",
- "@turf/polygon-to-line": "5.1.x",
- "@turf/polygonize": "5.1.x",
- "@turf/projection": "5.1.x",
- "@turf/random": "5.1.x",
- "@turf/rewind": "5.1.x",
- "@turf/rhumb-bearing": "5.1.x",
- "@turf/rhumb-destination": "5.1.x",
- "@turf/rhumb-distance": "5.1.x",
- "@turf/sample": "5.1.x",
- "@turf/sector": "5.1.x",
- "@turf/shortest-path": "5.1.x",
- "@turf/simplify": "5.1.x",
- "@turf/square": "5.1.x",
- "@turf/square-grid": "5.1.x",
- "@turf/standard-deviational-ellipse": "5.1.x",
- "@turf/tag": "5.1.x",
- "@turf/tesselate": "5.1.x",
- "@turf/tin": "5.1.x",
- "@turf/transform-rotate": "5.1.x",
- "@turf/transform-scale": "5.1.x",
- "@turf/transform-translate": "5.1.x",
- "@turf/triangle-grid": "5.1.x",
- "@turf/truncate": "5.1.x",
- "@turf/union": "5.1.x",
- "@turf/unkink-polygon": "5.1.x",
- "@turf/voronoi": "5.1.x"
- },
- "dependencies": {
- "@turf/boolean-point-in-polygon": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-5.1.5.tgz",
- "integrity": "sha1-8BzBlNHgMKVIv9qYHLpDz9YpQbc=",
- "requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- }
- },
- "@turf/distance": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-5.1.5.tgz",
- "integrity": "sha1-Oc8YIEu/h1h9cH5gmmARiQkVZAk=",
- "requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- }
- },
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.1.5.tgz",
- "integrity": "sha1-9Z9P76CSJLFdzhZR+QPIaNV6JOE=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
+ "@turf/along": "^6.3.0",
+ "@turf/angle": "^6.3.0",
+ "@turf/area": "^6.3.0",
+ "@turf/bbox": "^6.3.0",
+ "@turf/bbox-clip": "^6.3.0",
+ "@turf/bbox-polygon": "^6.3.0",
+ "@turf/bearing": "^6.3.0",
+ "@turf/bezier-spline": "^6.3.0",
+ "@turf/boolean-clockwise": "^6.3.0",
+ "@turf/boolean-contains": "^6.3.0",
+ "@turf/boolean-crosses": "^6.3.0",
+ "@turf/boolean-disjoint": "^6.3.0",
+ "@turf/boolean-equal": "^6.3.0",
+ "@turf/boolean-intersects": "^6.3.0",
+ "@turf/boolean-overlap": "^6.3.0",
+ "@turf/boolean-parallel": "^6.3.0",
+ "@turf/boolean-point-in-polygon": "^6.3.0",
+ "@turf/boolean-point-on-line": "^6.3.0",
+ "@turf/boolean-within": "^6.3.0",
+ "@turf/buffer": "^6.3.0",
+ "@turf/center": "^6.3.0",
+ "@turf/center-mean": "^6.3.0",
+ "@turf/center-median": "^6.3.0",
+ "@turf/center-of-mass": "^6.3.0",
+ "@turf/centroid": "^6.3.0",
+ "@turf/circle": "^6.3.0",
+ "@turf/clean-coords": "^6.3.0",
+ "@turf/clone": "^6.3.0",
+ "@turf/clusters": "^6.3.0",
+ "@turf/clusters-dbscan": "^6.3.0",
+ "@turf/clusters-kmeans": "^6.3.0",
+ "@turf/collect": "^6.3.0",
+ "@turf/combine": "^6.3.0",
+ "@turf/concave": "^6.3.0",
+ "@turf/convex": "^6.3.0",
+ "@turf/destination": "^6.3.0",
+ "@turf/difference": "^6.3.0",
+ "@turf/dissolve": "^6.3.0",
+ "@turf/distance": "^6.3.0",
+ "@turf/distance-weight": "^6.3.0",
+ "@turf/ellipse": "^6.3.0",
+ "@turf/envelope": "^6.3.0",
+ "@turf/explode": "^6.3.0",
+ "@turf/flatten": "^6.3.0",
+ "@turf/flip": "^6.3.0",
+ "@turf/great-circle": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/hex-grid": "^6.3.0",
+ "@turf/interpolate": "^6.3.0",
+ "@turf/intersect": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "@turf/isobands": "^6.3.0",
+ "@turf/isolines": "^6.3.0",
+ "@turf/kinks": "^6.3.0",
+ "@turf/length": "^6.3.0",
+ "@turf/line-arc": "^6.3.0",
+ "@turf/line-chunk": "^6.3.0",
+ "@turf/line-intersect": "^6.3.0",
+ "@turf/line-offset": "^6.3.0",
+ "@turf/line-overlap": "^6.3.0",
+ "@turf/line-segment": "^6.3.0",
+ "@turf/line-slice": "^6.3.0",
+ "@turf/line-slice-along": "^6.3.0",
+ "@turf/line-split": "^6.3.0",
+ "@turf/line-to-polygon": "^6.3.0",
+ "@turf/mask": "^6.3.0",
+ "@turf/meta": "^6.3.0",
+ "@turf/midpoint": "^6.3.0",
+ "@turf/moran-index": "^6.3.0",
+ "@turf/nearest-point": "^6.3.0",
+ "@turf/nearest-point-on-line": "^6.3.0",
+ "@turf/nearest-point-to-line": "^6.3.0",
+ "@turf/planepoint": "^6.3.0",
+ "@turf/point-grid": "^6.3.0",
+ "@turf/point-on-feature": "^6.3.0",
+ "@turf/point-to-line-distance": "^6.3.0",
+ "@turf/points-within-polygon": "^6.3.0",
+ "@turf/polygon-smooth": "^6.3.0",
+ "@turf/polygon-tangents": "^6.3.0",
+ "@turf/polygon-to-line": "^6.3.0",
+ "@turf/polygonize": "^6.3.0",
+ "@turf/projection": "^6.3.0",
+ "@turf/random": "^6.3.0",
+ "@turf/rewind": "^6.3.0",
+ "@turf/rhumb-bearing": "^6.3.0",
+ "@turf/rhumb-destination": "^6.3.0",
+ "@turf/rhumb-distance": "^6.3.0",
+ "@turf/sample": "^6.3.0",
+ "@turf/sector": "^6.3.0",
+ "@turf/shortest-path": "^6.3.0",
+ "@turf/simplify": "^6.3.0",
+ "@turf/square": "^6.3.0",
+ "@turf/square-grid": "^6.3.0",
+ "@turf/standard-deviational-ellipse": "^6.3.0",
+ "@turf/tag": "^6.3.0",
+ "@turf/tesselate": "^6.3.0",
+ "@turf/tin": "^6.3.0",
+ "@turf/transform-rotate": "^6.3.0",
+ "@turf/transform-scale": "^6.3.0",
+ "@turf/transform-translate": "^6.3.0",
+ "@turf/triangle-grid": "^6.3.0",
+ "@turf/truncate": "^6.3.0",
+ "@turf/union": "^6.3.0",
+ "@turf/unkink-polygon": "^6.3.0",
+ "@turf/voronoi": "^6.3.0"
}
},
"@turf/union": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/union/-/union-5.1.5.tgz",
- "integrity": "sha1-UyhbYJQEf8WNlqrA6pCGXsNNRUs=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/union/-/union-6.3.0.tgz",
+ "integrity": "sha512-m8yh13Q5E0Y+YC10+iI/Qq0Txt7UmSIFByc7DfNVlMMGTceqLFa8xGwSVdFuB/d6MWwKuzKonQMl1PUx/Vd2Iw==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "turf-jsts": "*"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- }
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
+ "polygon-clipping": "^0.15.2"
}
},
"@turf/unkink-polygon": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/unkink-polygon/-/unkink-polygon-5.1.5.tgz",
- "integrity": "sha1-ewGEfFD7V0riV54Z5Ey6hSbSE8M=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/unkink-polygon/-/unkink-polygon-6.3.0.tgz",
+ "integrity": "sha512-XBUJkuDEr2R8cHpl+sHtV15J1S28/HCxhAHqfV+As3bTi81KhVhBK9EBwFGYCu9aerVgBK129FjRKXjnTYqtDw==",
"requires": {
- "@turf/area": "^5.1.5",
- "@turf/boolean-point-in-polygon": "^5.1.5",
- "@turf/helpers": "^5.1.5",
- "@turf/meta": "^5.1.5",
+ "@turf/area": "^6.3.0",
+ "@turf/boolean-point-in-polygon": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/meta": "^6.3.0",
"rbush": "^2.0.1"
- },
- "dependencies": {
- "@turf/boolean-point-in-polygon": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-5.1.5.tgz",
- "integrity": "sha1-8BzBlNHgMKVIv9qYHLpDz9YpQbc=",
- "requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5"
- }
- },
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- },
- "quickselect": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-1.1.1.tgz",
- "integrity": "sha512-qN0Gqdw4c4KGPsBOQafj6yj/PA6c/L63f6CaZ/DCF/xF4Esu3jVmKLUDYxghFx8Kb/O7y9tI7x2RjTSXwdK1iQ=="
- },
- "rbush": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/rbush/-/rbush-2.0.2.tgz",
- "integrity": "sha512-XBOuALcTm+O/H8G90b6pzu6nX6v2zCKiFG4BJho8a+bY6AER6t8uQUZdi5bomQc0AprCWhEGa7ncAbbRap0bRA==",
- "requires": {
- "quickselect": "^1.0.1"
- }
- }
}
},
"@turf/voronoi": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/voronoi/-/voronoi-5.1.5.tgz",
- "integrity": "sha1-6FbpQG3MLyXWbdyJhYTifC6/ymY=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/voronoi/-/voronoi-6.3.0.tgz",
+ "integrity": "sha512-M0C6Kfo+qvKk4veRD7xW1PjMitJ0vqN6F4OOczxyX3tkj/oMyhWg+YbWk7mo/wKdSo9gCvHhnIVNkPsSSaFmyQ==",
"requires": {
- "@turf/helpers": "^5.1.5",
- "@turf/invariant": "^5.1.5",
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0",
"d3-voronoi": "1.1.2"
- },
- "dependencies": {
- "@turf/helpers": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
- "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
- },
- "@turf/invariant": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz",
- "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=",
- "requires": {
- "@turf/helpers": "^5.1.5"
- }
- }
}
},
"@types/geojson": {
@@ -5248,6 +3763,21 @@
"rbush": "^3.0.0",
"robust-predicates": "^2.0.4",
"tinyqueue": "^2.0.3"
+ },
+ "dependencies": {
+ "quickselect": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz",
+ "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw=="
+ },
+ "rbush": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz",
+ "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==",
+ "requires": {
+ "quickselect": "^2.0.0"
+ }
+ }
}
},
"console-browserify": {
@@ -6624,13 +5154,14 @@
"integrity": "sha1-q0g48SatxeFvj5TmVd74IPkRnbw="
},
"geojson-rbush": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/geojson-rbush/-/geojson-rbush-2.1.0.tgz",
- "integrity": "sha1-O9c745H8ELCuaT2bis6iquC4Oo0=",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/geojson-rbush/-/geojson-rbush-3.1.2.tgz",
+ "integrity": "sha512-grkfdg3HIeTjwTfiJe5FT8+fGU3fABCc+vRJDBwdQz9kkLF0Sbif2gs2JUzjewwgmnvLGy9fInySDeADoNuk7w==",
"requires": {
- "@turf/helpers": "*",
- "@turf/meta": "*",
- "rbush": "*"
+ "@turf/bbox": "*",
+ "@turf/helpers": "6.x",
+ "@turf/meta": "6.x",
+ "rbush": "^2.0.0"
}
},
"get-closest": {
@@ -7761,10 +6292,1461 @@
"turf": "^3.0.14"
},
"dependencies": {
+ "@turf/along": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/along/-/along-5.1.5.tgz",
+ "integrity": "sha1-YdbmplhKzdq1asVYTge/jL5fi+s=",
+ "requires": {
+ "@turf/bearing": "^5.1.5",
+ "@turf/destination": "^5.1.5",
+ "@turf/distance": "^5.1.5",
+ "@turf/helpers": "^5.1.5"
+ }
+ },
+ "@turf/area": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/area/-/area-5.1.5.tgz",
+ "integrity": "sha1-79iZv9Jgzb0VQbKjwVX4pdLu+h0=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/meta": "^5.1.5"
+ }
+ },
+ "@turf/bbox": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-5.1.5.tgz",
+ "integrity": "sha1-MFHfUUrUxQ9KT5uKLRX9i2hA7aM=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/meta": "^5.1.5"
+ }
+ },
+ "@turf/bbox-clip": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/bbox-clip/-/bbox-clip-5.1.5.tgz",
+ "integrity": "sha1-M2S1Mo3/nzz0HZ4C7a/zdNFQzIQ=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5",
+ "lineclip": "^1.1.5"
+ }
+ },
+ "@turf/bbox-polygon": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/bbox-polygon/-/bbox-polygon-5.1.5.tgz",
+ "integrity": "sha1-auuk7VHYXSluD3w4uIwznwHu4CQ=",
+ "requires": {
+ "@turf/helpers": "^5.1.5"
+ }
+ },
+ "@turf/bearing": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/bearing/-/bearing-5.1.5.tgz",
+ "integrity": "sha1-egt5ATbE70eX8CRjBdRcvi0ns/c=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ }
+ },
+ "@turf/bezier-spline": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/bezier-spline/-/bezier-spline-5.1.5.tgz",
+ "integrity": "sha1-WaJ7ul17l+8Vqz/VpA+9I4cEm8o=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ }
+ },
+ "@turf/boolean-clockwise": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/boolean-clockwise/-/boolean-clockwise-5.1.5.tgz",
+ "integrity": "sha1-MwK32sYsXikaB4nimvcoM4f6nes=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ }
+ },
+ "@turf/boolean-contains": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/boolean-contains/-/boolean-contains-5.1.5.tgz",
+ "integrity": "sha1-WW1jruY2961T7pn5/yTJaZSg7xQ=",
+ "requires": {
+ "@turf/bbox": "^5.1.5",
+ "@turf/boolean-point-in-polygon": "^5.1.5",
+ "@turf/boolean-point-on-line": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ },
+ "dependencies": {
+ "@turf/boolean-point-in-polygon": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-5.1.5.tgz",
+ "integrity": "sha1-8BzBlNHgMKVIv9qYHLpDz9YpQbc=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ }
+ }
+ }
+ },
+ "@turf/boolean-crosses": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/boolean-crosses/-/boolean-crosses-5.1.5.tgz",
+ "integrity": "sha1-Ab+uollvFk3kpNMlCU3HwlXHFdY=",
+ "requires": {
+ "@turf/boolean-point-in-polygon": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5",
+ "@turf/line-intersect": "^5.1.5",
+ "@turf/polygon-to-line": "^5.1.5"
+ },
+ "dependencies": {
+ "@turf/boolean-point-in-polygon": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-5.1.5.tgz",
+ "integrity": "sha1-8BzBlNHgMKVIv9qYHLpDz9YpQbc=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ }
+ }
+ }
+ },
+ "@turf/boolean-disjoint": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/@turf/boolean-disjoint/-/boolean-disjoint-5.1.6.tgz",
+ "integrity": "sha512-KHvUS6SBNYHBCLIJEJrg04pF5Oy+Fqn8V5G9U+9pti5vI9tyX7Ln2g7RSB7iJ1Cxsz8QAi6OukhXjEF2/8ZpGg==",
+ "requires": {
+ "@turf/boolean-point-in-polygon": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/line-intersect": "^5.1.5",
+ "@turf/meta": "^5.1.5",
+ "@turf/polygon-to-line": "^5.1.5"
+ },
+ "dependencies": {
+ "@turf/boolean-point-in-polygon": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-5.1.5.tgz",
+ "integrity": "sha1-8BzBlNHgMKVIv9qYHLpDz9YpQbc=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ }
+ }
+ }
+ },
+ "@turf/boolean-equal": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/boolean-equal/-/boolean-equal-5.1.5.tgz",
+ "integrity": "sha1-Kfj21gu4RQff12WzIlTbjnLJOKQ=",
+ "requires": {
+ "@turf/clean-coords": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5",
+ "geojson-equality": "0.1.6"
+ }
+ },
+ "@turf/boolean-overlap": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/boolean-overlap/-/boolean-overlap-5.1.5.tgz",
+ "integrity": "sha1-DU5kxSx3CijpPZ7834qLg3OsznU=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5",
+ "@turf/line-intersect": "^5.1.5",
+ "@turf/line-overlap": "^5.1.5",
+ "@turf/meta": "^5.1.5",
+ "geojson-equality": "0.1.6"
+ }
+ },
+ "@turf/boolean-parallel": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/boolean-parallel/-/boolean-parallel-5.1.5.tgz",
+ "integrity": "sha1-c5NYR16ltlx+GCejw+DopofTqF0=",
+ "requires": {
+ "@turf/clean-coords": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/line-segment": "^5.1.5",
+ "@turf/rhumb-bearing": "^5.1.5"
+ }
+ },
+ "@turf/boolean-point-on-line": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/boolean-point-on-line/-/boolean-point-on-line-5.1.5.tgz",
+ "integrity": "sha1-9jPF/4Aq0ku48Vja269v9KAj3Xs=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ }
+ },
+ "@turf/boolean-within": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/boolean-within/-/boolean-within-5.1.5.tgz",
+ "integrity": "sha1-RxBdVtB1Kp0Pv81Dw2pfkUnchpc=",
+ "requires": {
+ "@turf/bbox": "^5.1.5",
+ "@turf/boolean-point-in-polygon": "^5.1.5",
+ "@turf/boolean-point-on-line": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ },
+ "dependencies": {
+ "@turf/boolean-point-in-polygon": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-5.1.5.tgz",
+ "integrity": "sha1-8BzBlNHgMKVIv9qYHLpDz9YpQbc=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ }
+ }
+ }
+ },
+ "@turf/buffer": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/buffer/-/buffer-5.1.5.tgz",
+ "integrity": "sha1-hByWJ8+5dLEirE4alW8EZrwCMcQ=",
+ "requires": {
+ "@turf/bbox": "^5.1.5",
+ "@turf/center": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/meta": "^5.1.5",
+ "@turf/projection": "^5.1.5",
+ "d3-geo": "1.7.1",
+ "turf-jsts": "*"
+ }
+ },
+ "@turf/center": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/center/-/center-5.1.5.tgz",
+ "integrity": "sha1-RKss2VT2PA03dX9xWKmcPvURS4A=",
+ "requires": {
+ "@turf/bbox": "^5.1.5",
+ "@turf/helpers": "^5.1.5"
+ }
+ },
+ "@turf/center-mean": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/center-mean/-/center-mean-5.1.5.tgz",
+ "integrity": "sha1-jI6YdTkeXwnw5uePXWYbiLIQigo=",
+ "requires": {
+ "@turf/bbox": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/meta": "^5.1.5"
+ }
+ },
+ "@turf/center-median": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/center-median/-/center-median-5.1.5.tgz",
+ "integrity": "sha1-u0Yb/noqSGAdikcnaFcYcjoUqHI=",
+ "requires": {
+ "@turf/center-mean": "^5.1.5",
+ "@turf/centroid": "^5.1.5",
+ "@turf/distance": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/meta": "^5.1.5"
+ }
+ },
+ "@turf/center-of-mass": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/center-of-mass/-/center-of-mass-5.1.5.tgz",
+ "integrity": "sha1-TTvXnYhJjbq4Mk1PafAyL2Uguco=",
+ "requires": {
+ "@turf/centroid": "^5.1.5",
+ "@turf/convex": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5",
+ "@turf/meta": "^5.1.5"
+ }
+ },
+ "@turf/centroid": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/centroid/-/centroid-5.1.5.tgz",
+ "integrity": "sha1-d4radCFjNQIa2P0OemWoNJ1Tx2k=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/meta": "^5.1.5"
+ }
+ },
+ "@turf/circle": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/circle/-/circle-5.1.5.tgz",
+ "integrity": "sha1-mxV3g1UIq1L7HBCypQZcuiuHtqU=",
+ "requires": {
+ "@turf/destination": "^5.1.5",
+ "@turf/helpers": "^5.1.5"
+ }
+ },
+ "@turf/clean-coords": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/clean-coords/-/clean-coords-5.1.5.tgz",
+ "integrity": "sha1-EoAKmKeMmkUqcuxChJPEOs8q2h8=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ }
+ },
+ "@turf/clone": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/clone/-/clone-5.1.5.tgz",
+ "integrity": "sha1-JT6NNUdxgZduM636tQoPAqfw42c=",
+ "requires": {
+ "@turf/helpers": "^5.1.5"
+ }
+ },
+ "@turf/clusters": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/clusters/-/clusters-5.1.5.tgz",
+ "integrity": "sha1-ZzpeXxsZycq6vFfJCO6t1oIiTdQ=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/meta": "^5.1.5"
+ }
+ },
+ "@turf/clusters-dbscan": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/clusters-dbscan/-/clusters-dbscan-5.1.5.tgz",
+ "integrity": "sha1-V4H7TmVsdHoLjpk333MYHAMJ4m8=",
+ "requires": {
+ "@turf/clone": "^5.1.5",
+ "@turf/distance": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5",
+ "@turf/meta": "^5.1.5",
+ "density-clustering": "1.3.0"
+ }
+ },
+ "@turf/clusters-kmeans": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/clusters-kmeans/-/clusters-kmeans-5.1.5.tgz",
+ "integrity": "sha1-/W3+qLEzuovcI3CsPKzuFYejAvE=",
+ "requires": {
+ "@turf/clone": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5",
+ "@turf/meta": "^5.1.5",
+ "skmeans": "0.9.7"
+ }
+ },
+ "@turf/collect": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/collect/-/collect-5.1.5.tgz",
+ "integrity": "sha1-/pjJqMIY7PJP/DPXApUXt8GbKj4=",
+ "requires": {
+ "@turf/bbox": "^5.1.5",
+ "@turf/boolean-point-in-polygon": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "rbush": "^2.0.1"
+ },
+ "dependencies": {
+ "@turf/boolean-point-in-polygon": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-5.1.5.tgz",
+ "integrity": "sha1-8BzBlNHgMKVIv9qYHLpDz9YpQbc=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ }
+ }
+ }
+ },
+ "@turf/combine": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/combine/-/combine-5.1.5.tgz",
+ "integrity": "sha1-uxS976VVBDVxlfwaEkzX1TqMiQU=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/meta": "^5.1.5"
+ }
+ },
+ "@turf/concave": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/concave/-/concave-5.1.5.tgz",
+ "integrity": "sha1-I7uqw4fQNLlldKG9cNBZI3qdIRA=",
+ "requires": {
+ "@turf/clone": "^5.1.5",
+ "@turf/distance": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5",
+ "@turf/meta": "^5.1.5",
+ "@turf/tin": "^5.1.5",
+ "topojson-client": "3.x",
+ "topojson-server": "3.x"
+ }
+ },
+ "@turf/convex": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/convex/-/convex-5.1.5.tgz",
+ "integrity": "sha1-Dfk3fdACIWzpghsH9wXgN9rj4B0=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/meta": "^5.1.5",
+ "concaveman": "*"
+ }
+ },
+ "@turf/destination": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/destination/-/destination-5.1.5.tgz",
+ "integrity": "sha1-7TU4G9zoO73cvQei4rzivd/7zCY=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ }
+ },
+ "@turf/difference": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-5.1.5.tgz",
+ "integrity": "sha1-ok1pCnvKgD8QkKnuO52Qb8Q3H0I=",
+ "requires": {
+ "@turf/area": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5",
+ "@turf/meta": "^5.1.5",
+ "turf-jsts": "*"
+ }
+ },
+ "@turf/dissolve": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/dissolve/-/dissolve-5.1.5.tgz",
+ "integrity": "sha1-LPEzqQIdIWODHD16lY1lB/nYGTg=",
+ "requires": {
+ "@turf/boolean-overlap": "^5.1.5",
+ "@turf/clone": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5",
+ "@turf/line-intersect": "^5.1.5",
+ "@turf/meta": "^5.1.5",
+ "@turf/union": "^5.1.5",
+ "geojson-rbush": "2.1.0",
+ "get-closest": "*"
+ }
+ },
+ "@turf/distance": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-5.1.5.tgz",
+ "integrity": "sha1-Oc8YIEu/h1h9cH5gmmARiQkVZAk=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ }
+ },
+ "@turf/ellipse": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/ellipse/-/ellipse-5.1.5.tgz",
+ "integrity": "sha1-1XyrhTmFkgzeYCKKeNgEWAJcVL4=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5",
+ "@turf/rhumb-destination": "^5.1.5",
+ "@turf/transform-rotate": "^5.1.5"
+ }
+ },
+ "@turf/envelope": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/envelope/-/envelope-5.1.5.tgz",
+ "integrity": "sha1-UBMwnFP91D369LWIplw/7X28EIo=",
+ "requires": {
+ "@turf/bbox": "^5.1.5",
+ "@turf/bbox-polygon": "^5.1.5",
+ "@turf/helpers": "^5.1.5"
+ }
+ },
+ "@turf/explode": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/explode/-/explode-5.1.5.tgz",
+ "integrity": "sha1-sSsvd0AEobSPYrqVsgocZVo94Rg=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/meta": "^5.1.5"
+ }
+ },
+ "@turf/flatten": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/flatten/-/flatten-5.1.5.tgz",
+ "integrity": "sha1-2iknBnEz7WFpsLnWB7khVoiqE1g=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/meta": "^5.1.5"
+ }
+ },
+ "@turf/flip": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/flip/-/flip-5.1.5.tgz",
+ "integrity": "sha1-Q29kOnIvDKU7n85jjkaT2zYIpoo=",
+ "requires": {
+ "@turf/clone": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/meta": "^5.1.5"
+ }
+ },
+ "@turf/great-circle": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/great-circle/-/great-circle-5.1.5.tgz",
+ "integrity": "sha1-3r+2cc5HVQnLY3MBwV/PzPo1mpM=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ }
+ },
+ "@turf/helpers": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz",
+ "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8="
+ },
+ "@turf/hex-grid": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/hex-grid/-/hex-grid-5.1.5.tgz",
+ "integrity": "sha1-m3ul/s9QUfHoWJL3E/zlxVBQKmo=",
+ "requires": {
+ "@turf/distance": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/intersect": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ }
+ },
+ "@turf/interpolate": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/interpolate/-/interpolate-5.1.5.tgz",
+ "integrity": "sha1-DxLwq3VtbdEK+ykMpuh3ve8BPqo=",
+ "requires": {
+ "@turf/bbox": "^5.1.5",
+ "@turf/centroid": "^5.1.5",
+ "@turf/clone": "^5.1.5",
+ "@turf/distance": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/hex-grid": "^5.1.5",
+ "@turf/invariant": "^5.1.5",
+ "@turf/meta": "^5.1.5",
+ "@turf/point-grid": "^5.1.5",
+ "@turf/square-grid": "^5.1.5",
+ "@turf/triangle-grid": "^5.1.5"
+ }
+ },
+ "@turf/intersect": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-5.1.6.tgz",
+ "integrity": "sha512-KXyNv/GXdoGAOy03qZF53rgtXC2tNhF/4jLwTKiVRrBQH6kcEpipGStdJ+QkYIlarQPa8f7I9UlVAB19et4MfQ==",
+ "requires": {
+ "@turf/clean-coords": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5",
+ "@turf/truncate": "^5.1.5",
+ "turf-jsts": "*"
+ }
+ },
+ "@turf/invariant": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.1.5.tgz",
+ "integrity": "sha1-9Z9P76CSJLFdzhZR+QPIaNV6JOE=",
+ "requires": {
+ "@turf/helpers": "^5.1.5"
+ }
+ },
+ "@turf/isobands": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/isobands/-/isobands-5.1.5.tgz",
+ "integrity": "sha1-a0TO9YTVUaMTBBh68jtKFYLj8I0=",
+ "requires": {
+ "@turf/area": "^5.1.5",
+ "@turf/bbox": "^5.1.5",
+ "@turf/boolean-point-in-polygon": "^5.1.5",
+ "@turf/explode": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5",
+ "@turf/meta": "^5.1.5"
+ },
+ "dependencies": {
+ "@turf/boolean-point-in-polygon": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-5.1.5.tgz",
+ "integrity": "sha1-8BzBlNHgMKVIv9qYHLpDz9YpQbc=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ }
+ }
+ }
+ },
+ "@turf/isolines": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/isolines/-/isolines-5.1.5.tgz",
+ "integrity": "sha1-irTn9Cuz38VGFOW/FVln9+VdLeE=",
+ "requires": {
+ "@turf/bbox": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5",
+ "@turf/meta": "^5.1.5"
+ }
+ },
+ "@turf/kinks": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-5.1.5.tgz",
+ "integrity": "sha1-irtpYdm7AQchO63fLCwmQNAlaYA=",
+ "requires": {
+ "@turf/helpers": "^5.1.5"
+ }
+ },
+ "@turf/length": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/length/-/length-5.1.5.tgz",
+ "integrity": "sha1-86X4ZMK5lqi7RxeUU1ofrxLuvvs=",
+ "requires": {
+ "@turf/distance": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/meta": "^5.1.5"
+ }
+ },
+ "@turf/line-arc": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/line-arc/-/line-arc-5.1.5.tgz",
+ "integrity": "sha1-AHinRHg1oSrkFKIR+aZNEYYVDhU=",
+ "requires": {
+ "@turf/circle": "^5.1.5",
+ "@turf/destination": "^5.1.5",
+ "@turf/helpers": "^5.1.5"
+ }
+ },
+ "@turf/line-chunk": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/line-chunk/-/line-chunk-5.1.5.tgz",
+ "integrity": "sha1-kQqFwFwG2dD5w4l3oF4IGNUIXEI=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/length": "^5.1.5",
+ "@turf/line-slice-along": "^5.1.5",
+ "@turf/meta": "^5.1.5"
+ }
+ },
+ "@turf/line-intersect": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-5.1.5.tgz",
+ "integrity": "sha1-DikHGuQDKV5JFyO8SfXPrI0R3fM=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5",
+ "@turf/line-segment": "^5.1.5",
+ "@turf/meta": "^5.1.5",
+ "geojson-rbush": "2.1.0"
+ }
+ },
+ "@turf/line-offset": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/line-offset/-/line-offset-5.1.5.tgz",
+ "integrity": "sha1-KrWy8In4yRPiMdmUN4553KkLWh4=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5",
+ "@turf/meta": "^5.1.5"
+ }
+ },
+ "@turf/line-overlap": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/line-overlap/-/line-overlap-5.1.5.tgz",
+ "integrity": "sha1-lDxvh6A4bcQ9+sEdKz/5wRLNP2A=",
+ "requires": {
+ "@turf/boolean-point-on-line": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5",
+ "@turf/line-segment": "^5.1.5",
+ "@turf/meta": "^5.1.5",
+ "@turf/nearest-point-on-line": "^5.1.5",
+ "geojson-rbush": "2.1.0"
+ }
+ },
+ "@turf/line-segment": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/line-segment/-/line-segment-5.1.5.tgz",
+ "integrity": "sha1-Mgeq7lRqskw9jcPMY/kcdwuAE+U=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5",
+ "@turf/meta": "^5.1.5"
+ }
+ },
+ "@turf/line-slice": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/line-slice/-/line-slice-5.1.5.tgz",
+ "integrity": "sha1-Hs/OFGKjeFeXVM7fRGTN4mgp8rU=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5",
+ "@turf/nearest-point-on-line": "^5.1.5"
+ }
+ },
+ "@turf/line-slice-along": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/line-slice-along/-/line-slice-along-5.1.5.tgz",
+ "integrity": "sha1-7drQoh70efKWihG9LdcomiEy6aU=",
+ "requires": {
+ "@turf/bearing": "^5.1.5",
+ "@turf/destination": "^5.1.5",
+ "@turf/distance": "^5.1.5",
+ "@turf/helpers": "^5.1.5"
+ }
+ },
+ "@turf/line-split": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/line-split/-/line-split-5.1.5.tgz",
+ "integrity": "sha1-Wy30w3YZty73JbUWPPmSbVVArLc=",
+ "requires": {
+ "@turf/bbox": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5",
+ "@turf/line-intersect": "^5.1.5",
+ "@turf/line-segment": "^5.1.5",
+ "@turf/meta": "^5.1.5",
+ "@turf/nearest-point-on-line": "^5.1.5",
+ "@turf/square": "^5.1.5",
+ "@turf/truncate": "^5.1.5",
+ "geojson-rbush": "2.1.0"
+ }
+ },
+ "@turf/line-to-polygon": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/line-to-polygon/-/line-to-polygon-5.1.5.tgz",
+ "integrity": "sha1-ITz0Gmj4Ikd4ujnTGH3sPouBhlo=",
+ "requires": {
+ "@turf/bbox": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ }
+ },
+ "@turf/mask": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/mask/-/mask-5.1.5.tgz",
+ "integrity": "sha1-mrD+8aJyyY/j70kvn/thggayQtU=",
+ "requires": {
+ "@turf/bbox": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/meta": "^5.1.5",
+ "@turf/union": "^5.1.5",
+ "rbush": "^2.0.1"
+ }
+ },
+ "@turf/meta": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.1.6.tgz",
+ "integrity": "sha1-wgqGPt7Qhp+yhUje6Ik0G8y0akY=",
+ "requires": {
+ "@turf/helpers": "^5.1.5"
+ }
+ },
+ "@turf/midpoint": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/midpoint/-/midpoint-5.1.5.tgz",
+ "integrity": "sha1-4mH2srDqgSTM7/VSomLdRlydBfA=",
+ "requires": {
+ "@turf/bearing": "^5.1.5",
+ "@turf/destination": "^5.1.5",
+ "@turf/distance": "^5.1.5",
+ "@turf/helpers": "^5.1.5"
+ }
+ },
+ "@turf/nearest-point": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/nearest-point/-/nearest-point-5.1.5.tgz",
+ "integrity": "sha1-EgUN5Bw5hEMiTHl43g9iE5ANNPs=",
+ "requires": {
+ "@turf/clone": "^5.1.5",
+ "@turf/distance": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/meta": "^5.1.5"
+ }
+ },
+ "@turf/nearest-point-on-line": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/nearest-point-on-line/-/nearest-point-on-line-5.1.5.tgz",
+ "integrity": "sha1-VgauKX8VlHUkvqUaKp71HsG/nDY=",
+ "requires": {
+ "@turf/bearing": "^5.1.5",
+ "@turf/destination": "^5.1.5",
+ "@turf/distance": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5",
+ "@turf/line-intersect": "^5.1.5",
+ "@turf/meta": "^5.1.5"
+ }
+ },
+ "@turf/nearest-point-to-line": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/@turf/nearest-point-to-line/-/nearest-point-to-line-5.1.6.tgz",
+ "integrity": "sha512-ZSvDIEiHhifn/vNwLXZI/E8xmEz5yBPqfUR7BVHRZrB1cP7jLhKZvkbidjG//uW8Fr1Ulc+PFOXczLspIcx/lw==",
+ "requires": {
+ "@turf/helpers": "6.x",
+ "@turf/invariant": "6.x",
+ "@turf/meta": "6.x",
+ "@turf/point-to-line-distance": "^5.1.5",
+ "object-assign": "*"
+ },
+ "dependencies": {
+ "@turf/helpers": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz",
+ "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg=="
+ },
+ "@turf/invariant": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz",
+ "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==",
+ "requires": {
+ "@turf/helpers": "^6.3.0"
+ }
+ },
+ "@turf/meta": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.3.0.tgz",
+ "integrity": "sha512-qBJjaAJS9H3ap0HlGXyF/Bzfl0qkA9suafX/jnDsZvWMfVLt+s+o6twKrXOGk5t7nnNON2NFRC8+czxpu104EQ==",
+ "requires": {
+ "@turf/helpers": "^6.3.0"
+ }
+ }
+ }
+ },
+ "@turf/planepoint": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/planepoint/-/planepoint-5.1.5.tgz",
+ "integrity": "sha1-GLvfAG91ne9eQsagBsn53oGyt/8=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ }
+ },
+ "@turf/point-grid": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/point-grid/-/point-grid-5.1.5.tgz",
+ "integrity": "sha1-MFFBJI9Quv42zn5mukuX56sjaIc=",
+ "requires": {
+ "@turf/boolean-within": "^5.1.5",
+ "@turf/distance": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ }
+ },
+ "@turf/point-on-feature": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/point-on-feature/-/point-on-feature-5.1.5.tgz",
+ "integrity": "sha1-MMfwMkMCd8ZBjZbSieRba/shP+c=",
+ "requires": {
+ "@turf/boolean-point-in-polygon": "^5.1.5",
+ "@turf/center": "^5.1.5",
+ "@turf/explode": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/nearest-point": "^5.1.5"
+ },
+ "dependencies": {
+ "@turf/boolean-point-in-polygon": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-5.1.5.tgz",
+ "integrity": "sha1-8BzBlNHgMKVIv9qYHLpDz9YpQbc=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ }
+ }
+ }
+ },
+ "@turf/point-to-line-distance": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/@turf/point-to-line-distance/-/point-to-line-distance-5.1.6.tgz",
+ "integrity": "sha512-PE3hiTeeDEi4ZLPtI8XAzFYW9nHo1EVsZGm/4ZVV8jo39d3X1oLVHxY3e1PkCmWwRapXy4QLqvnTQ7nU4wspNw==",
+ "requires": {
+ "@turf/bearing": "6.x",
+ "@turf/distance": "6.x",
+ "@turf/helpers": "6.x",
+ "@turf/invariant": "6.x",
+ "@turf/meta": "6.x",
+ "@turf/projection": "6.x",
+ "@turf/rhumb-bearing": "6.x",
+ "@turf/rhumb-distance": "6.x"
+ },
+ "dependencies": {
+ "@turf/bearing": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/bearing/-/bearing-6.3.0.tgz",
+ "integrity": "sha512-apuUm9xN6VQLO33m7F2mmzlm3dHfeesJjMSzh9iehGtgmp1IaVndjdcIvs0ieiwm8bN9UhwXpfPtO3pV0n9SFw==",
+ "requires": {
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0"
+ }
+ },
+ "@turf/clone": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/clone/-/clone-6.3.0.tgz",
+ "integrity": "sha512-GAgN89/9GCqUKECB1oY2hcTs0K2rZj+a2tY6VfM0ef9wwckuQZCKi+kKGUzhKVrmHee15jKV8n6DY0er8OndKg==",
+ "requires": {
+ "@turf/helpers": "^6.3.0"
+ }
+ },
+ "@turf/distance": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-6.3.0.tgz",
+ "integrity": "sha512-basi24ssNFnH3iXPFjp/aNUrukjObiFWoIyDRqKyBJxVwVOwAWvfk4d38QQyBj5nDo5IahYRq/Q+T47/5hSs9w==",
+ "requires": {
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0"
+ }
+ },
+ "@turf/helpers": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz",
+ "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg=="
+ },
+ "@turf/invariant": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz",
+ "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==",
+ "requires": {
+ "@turf/helpers": "^6.3.0"
+ }
+ },
+ "@turf/meta": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.3.0.tgz",
+ "integrity": "sha512-qBJjaAJS9H3ap0HlGXyF/Bzfl0qkA9suafX/jnDsZvWMfVLt+s+o6twKrXOGk5t7nnNON2NFRC8+czxpu104EQ==",
+ "requires": {
+ "@turf/helpers": "^6.3.0"
+ }
+ },
+ "@turf/projection": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/projection/-/projection-6.3.0.tgz",
+ "integrity": "sha512-IpSs7Q6G6xi47ynVlYYVegPLy6Jc0yo3/DcIm83jaJa4NnzPFXIFZT0v9Fe1N8MraHZqiqaSPbVnJXCGwR12lg==",
+ "requires": {
+ "@turf/clone": "^6.3.0",
+ "@turf/helpers": "^6.3.0",
+ "@turf/meta": "^6.3.0"
+ }
+ },
+ "@turf/rhumb-bearing": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/rhumb-bearing/-/rhumb-bearing-6.3.0.tgz",
+ "integrity": "sha512-/c/BE3huEUrwN6gx7Bg2FzfJqeU+TWk/slQPDHpbVunlIPbS6L28brqSVD+KXfMG8HQIzynz6Pm4Y+j5Iv4aWA==",
+ "requires": {
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0"
+ }
+ },
+ "@turf/rhumb-distance": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@turf/rhumb-distance/-/rhumb-distance-6.3.0.tgz",
+ "integrity": "sha512-wMIQVvznusonnp/POeucFdA4Rubn0NrkcEMdxdcCgFK7OmTz0zU4CEnNONF2IUGkQ5WwoKiuS7MOTQ8OuCjSfQ==",
+ "requires": {
+ "@turf/helpers": "^6.3.0",
+ "@turf/invariant": "^6.3.0"
+ }
+ }
+ }
+ },
+ "@turf/points-within-polygon": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/points-within-polygon/-/points-within-polygon-5.1.5.tgz",
+ "integrity": "sha1-K4VaXfOq2lfC7oIKB1SrlJKKIzc=",
+ "requires": {
+ "@turf/boolean-point-in-polygon": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/meta": "^5.1.5"
+ },
+ "dependencies": {
+ "@turf/boolean-point-in-polygon": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-5.1.5.tgz",
+ "integrity": "sha1-8BzBlNHgMKVIv9qYHLpDz9YpQbc=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ }
+ }
+ }
+ },
+ "@turf/polygon-tangents": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/polygon-tangents/-/polygon-tangents-5.1.5.tgz",
+ "integrity": "sha1-K/AJkUcwJbF44lDcfLmuVAm71lI=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ }
+ },
+ "@turf/polygon-to-line": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/polygon-to-line/-/polygon-to-line-5.1.5.tgz",
+ "integrity": "sha1-I7tEjYTcTGUZmaxhGjbZHFklA2o=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ }
+ },
+ "@turf/polygonize": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/polygonize/-/polygonize-5.1.5.tgz",
+ "integrity": "sha1-BJP6EYefOdELmtAs5qI+lC0IqjI=",
+ "requires": {
+ "@turf/boolean-point-in-polygon": "^5.1.5",
+ "@turf/envelope": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5",
+ "@turf/meta": "^5.1.5"
+ },
+ "dependencies": {
+ "@turf/boolean-point-in-polygon": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-5.1.5.tgz",
+ "integrity": "sha1-8BzBlNHgMKVIv9qYHLpDz9YpQbc=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ }
+ }
+ }
+ },
+ "@turf/projection": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/projection/-/projection-5.1.5.tgz",
+ "integrity": "sha1-JFF+7rLzaBa6n3EueubWo2jt91c=",
+ "requires": {
+ "@turf/clone": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/meta": "^5.1.5"
+ }
+ },
+ "@turf/random": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/random/-/random-5.1.5.tgz",
+ "integrity": "sha1-sy78k0Vgroulfo67UfJBw5+6Lns=",
+ "requires": {
+ "@turf/helpers": "^5.1.5"
+ }
+ },
+ "@turf/rewind": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/rewind/-/rewind-5.1.5.tgz",
+ "integrity": "sha1-nqPbSmi3PB/R3RH1djGxQ8/vock=",
+ "requires": {
+ "@turf/boolean-clockwise": "^5.1.5",
+ "@turf/clone": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5",
+ "@turf/meta": "^5.1.5"
+ }
+ },
+ "@turf/rhumb-bearing": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/rhumb-bearing/-/rhumb-bearing-5.1.5.tgz",
+ "integrity": "sha1-rPalAkJ+uMSeGM2mrg7/qwxd3NI=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ }
+ },
+ "@turf/rhumb-destination": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/rhumb-destination/-/rhumb-destination-5.1.5.tgz",
+ "integrity": "sha1-sbKuuSFUfyrAwamUtqEw+SRjx0I=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ }
+ },
+ "@turf/rhumb-distance": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/rhumb-distance/-/rhumb-distance-5.1.5.tgz",
+ "integrity": "sha1-GAaFdiX0IlOE2tQT5p85U4/192U=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ }
+ },
+ "@turf/sample": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/sample/-/sample-5.1.5.tgz",
+ "integrity": "sha1-6ctEikeJzFbuPeLdZ4HiNDQ1tBE=",
+ "requires": {
+ "@turf/helpers": "^5.1.5"
+ }
+ },
+ "@turf/sector": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/sector/-/sector-5.1.5.tgz",
+ "integrity": "sha1-rCu5TBPt1gNPb9wrZwCBNdIPXgc=",
+ "requires": {
+ "@turf/circle": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5",
+ "@turf/line-arc": "^5.1.5",
+ "@turf/meta": "^5.1.5"
+ }
+ },
+ "@turf/shortest-path": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/shortest-path/-/shortest-path-5.1.5.tgz",
+ "integrity": "sha1-hUroCW9rw+EwD6ynfz6PZ9j5Nas=",
+ "requires": {
+ "@turf/bbox": "^5.1.5",
+ "@turf/bbox-polygon": "^5.1.5",
+ "@turf/boolean-point-in-polygon": "^5.1.5",
+ "@turf/clean-coords": "^5.1.5",
+ "@turf/distance": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5",
+ "@turf/meta": "^5.1.5",
+ "@turf/transform-scale": "^5.1.5"
+ },
+ "dependencies": {
+ "@turf/boolean-point-in-polygon": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-5.1.5.tgz",
+ "integrity": "sha1-8BzBlNHgMKVIv9qYHLpDz9YpQbc=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ }
+ }
+ }
+ },
+ "@turf/simplify": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/simplify/-/simplify-5.1.5.tgz",
+ "integrity": "sha1-Csjyei60IYGD7dmZjDJ1q+QIuSY=",
+ "requires": {
+ "@turf/clean-coords": "^5.1.5",
+ "@turf/clone": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/meta": "^5.1.5"
+ }
+ },
+ "@turf/square": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/square/-/square-5.1.5.tgz",
+ "integrity": "sha1-qnsh5gM8ySUsOlvW89iNq9b+0YA=",
+ "requires": {
+ "@turf/distance": "^5.1.5",
+ "@turf/helpers": "^5.1.5"
+ }
+ },
+ "@turf/square-grid": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/square-grid/-/square-grid-5.1.5.tgz",
+ "integrity": "sha1-G9X3uesU8LYLwjH+/nNR0aMvGlE=",
+ "requires": {
+ "@turf/boolean-contains": "^5.1.5",
+ "@turf/boolean-overlap": "^5.1.5",
+ "@turf/distance": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/intersect": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ }
+ },
+ "@turf/standard-deviational-ellipse": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/standard-deviational-ellipse/-/standard-deviational-ellipse-5.1.5.tgz",
+ "integrity": "sha1-hc0oO14ayljyG9ZkEuQUtW2FIyQ=",
+ "requires": {
+ "@turf/center-mean": "^5.1.5",
+ "@turf/ellipse": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5",
+ "@turf/meta": "^5.1.5",
+ "@turf/points-within-polygon": "^5.1.5"
+ }
+ },
+ "@turf/tag": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/tag/-/tag-5.1.5.tgz",
+ "integrity": "sha1-0e4aUIjs/UoUEQGcmCOczypJfSA=",
+ "requires": {
+ "@turf/boolean-point-in-polygon": "^5.1.5",
+ "@turf/clone": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/meta": "^5.1.5"
+ },
+ "dependencies": {
+ "@turf/boolean-point-in-polygon": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-5.1.5.tgz",
+ "integrity": "sha1-8BzBlNHgMKVIv9qYHLpDz9YpQbc=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ }
+ }
+ }
+ },
+ "@turf/tesselate": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/tesselate/-/tesselate-5.1.5.tgz",
+ "integrity": "sha1-MqWU6cIaAEIKn5DSxD3z4RZgYc0=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "earcut": "^2.0.0"
+ }
+ },
+ "@turf/tin": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/tin/-/tin-5.1.5.tgz",
+ "integrity": "sha1-KCI+r8X76a6azKgc3P6l0UJMkX0=",
+ "requires": {
+ "@turf/helpers": "^5.1.5"
+ }
+ },
+ "@turf/transform-rotate": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/transform-rotate/-/transform-rotate-5.1.5.tgz",
+ "integrity": "sha1-0Jbt2eMA/jFQadVNjkWMQJIh7fs=",
+ "requires": {
+ "@turf/centroid": "^5.1.5",
+ "@turf/clone": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5",
+ "@turf/meta": "^5.1.5",
+ "@turf/rhumb-bearing": "^5.1.5",
+ "@turf/rhumb-destination": "^5.1.5",
+ "@turf/rhumb-distance": "^5.1.5"
+ }
+ },
+ "@turf/transform-scale": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/transform-scale/-/transform-scale-5.1.5.tgz",
+ "integrity": "sha1-cP064BhWz3uunxWtVhzf6PiQAbk=",
+ "requires": {
+ "@turf/bbox": "^5.1.5",
+ "@turf/center": "^5.1.5",
+ "@turf/centroid": "^5.1.5",
+ "@turf/clone": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5",
+ "@turf/meta": "^5.1.5",
+ "@turf/rhumb-bearing": "^5.1.5",
+ "@turf/rhumb-destination": "^5.1.5",
+ "@turf/rhumb-distance": "^5.1.5"
+ }
+ },
+ "@turf/transform-translate": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/transform-translate/-/transform-translate-5.1.5.tgz",
+ "integrity": "sha1-Uwolf7Hccmja3Ks05nkB6yo97GM=",
+ "requires": {
+ "@turf/clone": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5",
+ "@turf/meta": "^5.1.5",
+ "@turf/rhumb-destination": "^5.1.5"
+ }
+ },
+ "@turf/triangle-grid": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/triangle-grid/-/triangle-grid-5.1.5.tgz",
+ "integrity": "sha1-ezZ2IQhVTBTyjK/zxIsc/ILI3IE=",
+ "requires": {
+ "@turf/distance": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/intersect": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ }
+ },
+ "@turf/truncate": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/truncate/-/truncate-5.1.5.tgz",
+ "integrity": "sha1-nu37Oxi6gfLJjT6tCUMcyhiErYk=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/meta": "^5.1.5"
+ }
+ },
+ "@turf/turf": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/@turf/turf/-/turf-5.1.6.tgz",
+ "integrity": "sha1-wxIlkoh+0jS3VGi4qMRb+Ib7+PY=",
+ "requires": {
+ "@turf/along": "5.1.x",
+ "@turf/area": "5.1.x",
+ "@turf/bbox": "5.1.x",
+ "@turf/bbox-clip": "5.1.x",
+ "@turf/bbox-polygon": "5.1.x",
+ "@turf/bearing": "5.1.x",
+ "@turf/bezier-spline": "5.1.x",
+ "@turf/boolean-clockwise": "5.1.x",
+ "@turf/boolean-contains": "5.1.x",
+ "@turf/boolean-crosses": "5.1.x",
+ "@turf/boolean-disjoint": "5.1.x",
+ "@turf/boolean-equal": "5.1.x",
+ "@turf/boolean-overlap": "5.1.x",
+ "@turf/boolean-parallel": "5.1.x",
+ "@turf/boolean-point-in-polygon": "5.1.x",
+ "@turf/boolean-point-on-line": "5.1.x",
+ "@turf/boolean-within": "5.1.x",
+ "@turf/buffer": "5.1.x",
+ "@turf/center": "5.1.x",
+ "@turf/center-mean": "5.1.x",
+ "@turf/center-median": "5.1.x",
+ "@turf/center-of-mass": "5.1.x",
+ "@turf/centroid": "5.1.x",
+ "@turf/circle": "5.1.x",
+ "@turf/clean-coords": "5.1.x",
+ "@turf/clone": "5.1.x",
+ "@turf/clusters": "5.1.x",
+ "@turf/clusters-dbscan": "5.1.x",
+ "@turf/clusters-kmeans": "5.1.x",
+ "@turf/collect": "5.1.x",
+ "@turf/combine": "5.1.x",
+ "@turf/concave": "5.1.x",
+ "@turf/convex": "5.1.x",
+ "@turf/destination": "5.1.x",
+ "@turf/difference": "5.1.x",
+ "@turf/dissolve": "5.1.x",
+ "@turf/distance": "5.1.x",
+ "@turf/ellipse": "5.1.x",
+ "@turf/envelope": "5.1.x",
+ "@turf/explode": "5.1.x",
+ "@turf/flatten": "5.1.x",
+ "@turf/flip": "5.1.x",
+ "@turf/great-circle": "5.1.x",
+ "@turf/helpers": "5.1.x",
+ "@turf/hex-grid": "5.1.x",
+ "@turf/interpolate": "5.1.x",
+ "@turf/intersect": "5.1.x",
+ "@turf/invariant": "5.1.x",
+ "@turf/isobands": "5.1.x",
+ "@turf/isolines": "5.1.x",
+ "@turf/kinks": "5.1.x",
+ "@turf/length": "5.1.x",
+ "@turf/line-arc": "5.1.x",
+ "@turf/line-chunk": "5.1.x",
+ "@turf/line-intersect": "5.1.x",
+ "@turf/line-offset": "5.1.x",
+ "@turf/line-overlap": "5.1.x",
+ "@turf/line-segment": "5.1.x",
+ "@turf/line-slice": "5.1.x",
+ "@turf/line-slice-along": "5.1.x",
+ "@turf/line-split": "5.1.x",
+ "@turf/line-to-polygon": "5.1.x",
+ "@turf/mask": "5.1.x",
+ "@turf/meta": "5.1.x",
+ "@turf/midpoint": "5.1.x",
+ "@turf/nearest-point": "5.1.x",
+ "@turf/nearest-point-on-line": "5.1.x",
+ "@turf/nearest-point-to-line": "5.1.x",
+ "@turf/planepoint": "5.1.x",
+ "@turf/point-grid": "5.1.x",
+ "@turf/point-on-feature": "5.1.x",
+ "@turf/point-to-line-distance": "5.1.x",
+ "@turf/points-within-polygon": "5.1.x",
+ "@turf/polygon-tangents": "5.1.x",
+ "@turf/polygon-to-line": "5.1.x",
+ "@turf/polygonize": "5.1.x",
+ "@turf/projection": "5.1.x",
+ "@turf/random": "5.1.x",
+ "@turf/rewind": "5.1.x",
+ "@turf/rhumb-bearing": "5.1.x",
+ "@turf/rhumb-destination": "5.1.x",
+ "@turf/rhumb-distance": "5.1.x",
+ "@turf/sample": "5.1.x",
+ "@turf/sector": "5.1.x",
+ "@turf/shortest-path": "5.1.x",
+ "@turf/simplify": "5.1.x",
+ "@turf/square": "5.1.x",
+ "@turf/square-grid": "5.1.x",
+ "@turf/standard-deviational-ellipse": "5.1.x",
+ "@turf/tag": "5.1.x",
+ "@turf/tesselate": "5.1.x",
+ "@turf/tin": "5.1.x",
+ "@turf/transform-rotate": "5.1.x",
+ "@turf/transform-scale": "5.1.x",
+ "@turf/transform-translate": "5.1.x",
+ "@turf/triangle-grid": "5.1.x",
+ "@turf/truncate": "5.1.x",
+ "@turf/union": "5.1.x",
+ "@turf/unkink-polygon": "5.1.x",
+ "@turf/voronoi": "5.1.x"
+ },
+ "dependencies": {
+ "@turf/boolean-point-in-polygon": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-5.1.5.tgz",
+ "integrity": "sha1-8BzBlNHgMKVIv9qYHLpDz9YpQbc=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ }
+ }
+ }
+ },
+ "@turf/union": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/union/-/union-5.1.5.tgz",
+ "integrity": "sha1-UyhbYJQEf8WNlqrA6pCGXsNNRUs=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "turf-jsts": "*"
+ }
+ },
+ "@turf/unkink-polygon": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/unkink-polygon/-/unkink-polygon-5.1.5.tgz",
+ "integrity": "sha1-ewGEfFD7V0riV54Z5Ey6hSbSE8M=",
+ "requires": {
+ "@turf/area": "^5.1.5",
+ "@turf/boolean-point-in-polygon": "^5.1.5",
+ "@turf/helpers": "^5.1.5",
+ "@turf/meta": "^5.1.5",
+ "rbush": "^2.0.1"
+ },
+ "dependencies": {
+ "@turf/boolean-point-in-polygon": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-5.1.5.tgz",
+ "integrity": "sha1-8BzBlNHgMKVIv9qYHLpDz9YpQbc=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5"
+ }
+ }
+ }
+ },
+ "@turf/voronoi": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@turf/voronoi/-/voronoi-5.1.5.tgz",
+ "integrity": "sha1-6FbpQG3MLyXWbdyJhYTifC6/ymY=",
+ "requires": {
+ "@turf/helpers": "^5.1.5",
+ "@turf/invariant": "^5.1.5",
+ "d3-voronoi": "1.1.2"
+ }
+ },
"@types/node": {
"version": "14.14.37",
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.37.tgz",
"integrity": "sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw=="
+ },
+ "commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+ },
+ "geojson-rbush": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/geojson-rbush/-/geojson-rbush-2.1.0.tgz",
+ "integrity": "sha1-O9c745H8ELCuaT2bis6iquC4Oo0=",
+ "requires": {
+ "@turf/helpers": "*",
+ "@turf/meta": "*",
+ "rbush": "*"
+ }
+ },
+ "topojson-client": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz",
+ "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==",
+ "requires": {
+ "commander": "2"
+ }
+ },
+ "topojson-server": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/topojson-server/-/topojson-server-3.0.1.tgz",
+ "integrity": "sha512-/VS9j/ffKr2XAOjlZ9CgyyeLmgJ9dMwq6Y0YEON8O7p/tGGk+dCWnrE03zEdu7i4L7YsFZLEPZPzCvcB7lEEXw==",
+ "requires": {
+ "commander": "2"
+ }
}
}
},
@@ -9106,6 +9088,14 @@
"resolved": "https://registry.npmjs.org/point-in-polygon/-/point-in-polygon-1.1.0.tgz",
"integrity": "sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw=="
},
+ "polygon-clipping": {
+ "version": "0.15.2",
+ "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.2.tgz",
+ "integrity": "sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==",
+ "requires": {
+ "splaytree": "^3.1.0"
+ }
+ },
"posix-character-classes": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
@@ -10017,9 +10007,9 @@
"integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM="
},
"quickselect": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz",
- "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw=="
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-1.1.1.tgz",
+ "integrity": "sha512-qN0Gqdw4c4KGPsBOQafj6yj/PA6c/L63f6CaZ/DCF/xF4Esu3jVmKLUDYxghFx8Kb/O7y9tI7x2RjTSXwdK1iQ=="
},
"quote-stream": {
"version": "1.0.2",
@@ -10054,11 +10044,11 @@
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
},
"rbush": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz",
- "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/rbush/-/rbush-2.0.2.tgz",
+ "integrity": "sha512-XBOuALcTm+O/H8G90b6pzu6nX6v2zCKiFG4BJho8a+bY6AER6t8uQUZdi5bomQc0AprCWhEGa7ncAbbRap0bRA==",
"requires": {
- "quickselect": "^2.0.0"
+ "quickselect": "^1.0.1"
}
},
"rc": {
@@ -10879,6 +10869,11 @@
"integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==",
"dev": true
},
+ "splaytree": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz",
+ "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q=="
+ },
"split": {
"version": "0.2.10",
"resolved": "https://registry.npmjs.org/split/-/split-0.2.10.tgz",
@@ -11419,33 +11414,45 @@
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
"integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
},
- "topojson-client": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz",
- "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==",
+ "topojson": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/topojson/-/topojson-3.0.2.tgz",
+ "integrity": "sha512-u3zeuL6WEVL0dmsRn7uHZKc4Ao4gpW3sORUv+N3ezLTvY3JdCuyg0hvpWiIfFw8p/JwVN++SvAsFgcFEeR15rQ==",
"requires": {
- "commander": "2"
- },
- "dependencies": {
- "commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
- }
- }
- },
- "topojson-server": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/topojson-server/-/topojson-server-3.0.1.tgz",
- "integrity": "sha512-/VS9j/ffKr2XAOjlZ9CgyyeLmgJ9dMwq6Y0YEON8O7p/tGGk+dCWnrE03zEdu7i4L7YsFZLEPZPzCvcB7lEEXw==",
- "requires": {
- "commander": "2"
+ "topojson-client": "3.0.0",
+ "topojson-server": "3.0.0",
+ "topojson-simplify": "3.0.2"
},
"dependencies": {
"commander": {
"version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+ },
+ "topojson-client": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.0.0.tgz",
+ "integrity": "sha1-H5kpOnfvQqRI0DKoGqmCtz82DS8=",
+ "requires": {
+ "commander": "2"
+ }
+ },
+ "topojson-server": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/topojson-server/-/topojson-server-3.0.0.tgz",
+ "integrity": "sha1-N4546Hw5cqe1vixdYENptrrmnF4=",
+ "requires": {
+ "commander": "2"
+ }
+ },
+ "topojson-simplify": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/topojson-simplify/-/topojson-simplify-3.0.2.tgz",
+ "integrity": "sha512-gyYSVRt4jO/0RJXKZQPzTDQRWV+D/nOfiljNUv0HBXslFLtq3yxRHrl7jbrjdbda5Ytdr7M8BZUI4OxU7tnbRQ==",
+ "requires": {
+ "commander": "2",
+ "topojson-client": "3"
+ }
}
}
},
diff --git a/package.json b/package.json
index 476e1a44ee..3c17f03a3e 100644
--- a/package.json
+++ b/package.json
@@ -38,7 +38,11 @@
"dependencies": {
"@babel/preset-env": "7.13.8",
"@tailwindcss/postcss7-compat": "^2.0.2",
+ "@turf/buffer": "^6.3.0",
+ "@turf/collect": "^6.3.0",
"@turf/distance": "^6.3.0",
+ "@turf/length": "^6.3.0",
+ "@turf/turf": "^6.3.0",
"@types/jquery": "^3.5.5",
"@types/leaflet-markercluster": "^1.0.3",
"@types/leaflet-providers": "^1.2.0",
diff --git a/scripts/generateLayerOverview.ts b/scripts/generateLayerOverview.ts
index 77d26c2ba0..a20104ddfb 100644
--- a/scripts/generateLayerOverview.ts
+++ b/scripts/generateLayerOverview.ts
@@ -42,7 +42,7 @@ writeFileSync("./assets/generated/known_layers_and_themes.json", JSON.stringify(
}))
-console.log("Discovered ", layerFiles.length, "layers and ", themeFiles.length, "themes\n")
+console.log("Discovered", layerFiles.length, "layers and", themeFiles.length, "themes\n")
console.log(" ---------- VALIDATING ---------")
// ------------- VALIDATION --------------
const licensePaths = []
From 62f0ae42e054a4b73209814648649c68d0d279d7 Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Sun, 18 Apr 2021 14:37:16 +0200
Subject: [PATCH 41/56] Add detection of invalid numbers in opening hours input
element
---
UI/OpeningHours/OpeningHours.ts | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/UI/OpeningHours/OpeningHours.ts b/UI/OpeningHours/OpeningHours.ts
index 733f516675..5164e963e8 100644
--- a/UI/OpeningHours/OpeningHours.ts
+++ b/UI/OpeningHours/OpeningHours.ts
@@ -189,7 +189,11 @@ export class OH {
if(spl.length != 2){
return null;
}
- return {hours: Number(spl[0].trim()), minutes: Number(spl[1].trim())};
+ const hm = {hours: Number(spl[0].trim()), minutes: Number(spl[1].trim())};
+ if(isNaN(hm.hours) || isNaN(hm.minutes) ){
+ return null;
+ }
+ return hm;
}
public static parseHHMMRange(hhmmhhmm: string): {
From c0fb852d419e380845524bb167b71d83fac5cd9f Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Sun, 18 Apr 2021 18:23:59 +0200
Subject: [PATCH 42/56] Fix length, update docs
---
Docs/CalculatedTags.md | 4 ++++
Logic/GeoOperations.ts | 3 ++-
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/Docs/CalculatedTags.md b/Docs/CalculatedTags.md
index 3393737e4f..38fa2f762d 100644
--- a/Docs/CalculatedTags.md
+++ b/Docs/CalculatedTags.md
@@ -11,6 +11,10 @@ The latitude and longitude of the point (or centerpoint in the case of a way/are
The surface area of the feature, in square meters and in hectare. Not set on points and ways
+### \_length, \_length:km
+
+The total length of a feature in meters (and in kilometers, rounded to one decimal for '\_length:km'). For a surface, the length of the perimeter
+
### \_country
The country code of the property (with latlon2country)
diff --git a/Logic/GeoOperations.ts b/Logic/GeoOperations.ts
index 6697fb433c..43dd45ae9c 100644
--- a/Logic/GeoOperations.ts
+++ b/Logic/GeoOperations.ts
@@ -15,7 +15,8 @@ export class GeoOperations {
return newFeature;
}
- static centerpointCoordinates(feature: any){
+ static centerpointCoordinates(feature: any): [number, number]{
+ // @ts-ignore
return turf.center(feature).geometry.coordinates;
}
From d281968b8058848038d30ca938e9751490d733b8 Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Wed, 21 Apr 2021 01:20:14 +0200
Subject: [PATCH 43/56] Add small script to cleanup overpass-exports
---
scripts/fixGeoJson.ts | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
create mode 100644 scripts/fixGeoJson.ts
diff --git a/scripts/fixGeoJson.ts b/scripts/fixGeoJson.ts
new file mode 100644
index 0000000000..d6c8e5e58f
--- /dev/null
+++ b/scripts/fixGeoJson.ts
@@ -0,0 +1,21 @@
+
+
+// Loads a geojson file downloaded from overpass, renames "@id" to "id" and deletes "@relations"
+
+import {readFileSync, writeFileSync} from "fs";
+
+const source = process.argv[2] ?? "~/Downloads/export.json"
+console.log("Fixing up ", source)
+const contents = readFileSync(source, "UTF8");
+const f = JSON.parse(contents);
+let i = 0
+for (const feature of f.features) {
+ if(feature.properties == undefined){
+ continue
+ }
+ feature.properties["id"] = feature.properties["@id"]
+ feature.properties["@id"] = undefined
+ feature.properties["@relations"] = undefined
+}
+
+writeFileSync(source+".fixed", JSON.stringify(f, null, " "))
\ No newline at end of file
From ba7e77b5853c2af6b32a6b810ad6ef6d9561520e Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Wed, 21 Apr 2021 01:21:01 +0200
Subject: [PATCH 44/56] Arbres and Arbres-llefia are the same theme, merge
stats for those
---
Docs/Tools/csvGrapher.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/Docs/Tools/csvGrapher.py b/Docs/Tools/csvGrapher.py
index 8e7ea7a2b5..985f588423 100644
--- a/Docs/Tools/csvGrapher.py
+++ b/Docs/Tools/csvGrapher.py
@@ -358,6 +358,7 @@ theme_remappings = {
"wiki-User-joost_schouppe-campersite": "campersite",
"wiki-User-joost_schouppe-geveltuintjes": "geveltuintjes",
"wiki:User:joost_schouppe/campersite": "campersite",
+ "arbres":"arbres_leffia",
"https://raw.githubusercontent.com/osmbe/play/master/mapcomplete/geveltuinen/geveltuinen.json": "geveltuintjes"
}
From 9b126451cff489dd5a0091658099c298246ea4a1 Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Wed, 21 Apr 2021 01:21:29 +0200
Subject: [PATCH 45/56] Add reset:layeroverview option to use when the scripts
run amok
---
package.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 3c17f03a3e..5d2f6adcdf 100644
--- a/package.json
+++ b/package.json
@@ -20,7 +20,8 @@
"validate:layeroverview": "ts-node scripts/generateLayerOverview.ts --report",
"validate:licenses": "ts-node scripts/generateLicenseInfo.ts --report",
"optimize-images": "cd assets/generated/ && find -name '*.png' -exec optipng '{}' \\; && echo 'PNGs are optimized'",
- "generate": "mkdir -p ./assets/generated && echo '{\"layers\":[], \"themes\":[]}' > ./assets/generated/known_layers_and_themes.json && npm run generate:images && npm run generate:translations && npm run generate:licenses && npm run generate:licenses && npm run generate:layeroverview",
+ "reset:layeroverview": "echo '{\"layers\":[], \"themes\":[]}' > ./assets/generated/known_layers_and_themes.json",
+ "generate": "mkdir -p ./assets/generated && npm run reset:layeroverview && npm run generate:images && npm run generate:translations && npm run generate:licenses && npm run generate:licenses && npm run generate:layeroverview",
"build": "rm -rf dist/ && npm run generate && parcel build --public-url ./ *.html assets/** assets/**/** assets/**/**/** vendor/* vendor/*/*",
"prepare-deploy": "npm run generate && npm run test && npm run generate:editor-layer-index && npm run generate:layouts && npm run generate:layeroverview && npm run build && rm -rf .cache && npm run generate:docs",
"deploy:staging": "npm run prepare-deploy && rm -rf /home/pietervdvn/git/pietervdvn.github.io/Staging/* && cp -r dist/* /home/pietervdvn/git/pietervdvn.github.io/Staging/ && cd /home/pietervdvn/git/pietervdvn.github.io/ && git add * && git commit -m 'New MapComplete Version' && git push && cd - && npm run clean",
From 33ebc6b9c412b1bc5136e9619986f712380fff66 Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Wed, 21 Apr 2021 01:23:28 +0200
Subject: [PATCH 46/56] Add metadata to continuation
---
Logic/Osm/OsmObject.ts | 147 ++++++++++++++++++++++-------------------
1 file changed, 78 insertions(+), 69 deletions(-)
diff --git a/Logic/Osm/OsmObject.ts b/Logic/Osm/OsmObject.ts
index 86a64eb917..b1f6d2024f 100644
--- a/Logic/Osm/OsmObject.ts
+++ b/Logic/Osm/OsmObject.ts
@@ -15,18 +15,16 @@ export abstract class OsmObject {
this.type = type;
}
- static DownloadObject(id, continuation: ((element: OsmObject) => void)) {
+ static DownloadObject(id, continuation: ((element: OsmObject, meta: OsmObjectMeta) => void)) {
const splitted = id.split("/");
const type = splitted[0];
const idN = splitted[1];
-
- const newContinuation = (element: OsmObject) => {
-
- console.log("Received: ",element);
-
- continuation(element);
+
+ const newContinuation = (element: OsmObject, meta :OsmObjectMeta) => {
+ console.log("Received: ", element, "with meta", meta);
+ continuation(element, meta);
}
-
+
switch (type) {
case("node"):
return new OsmNode(idN).Download(newContinuation);
@@ -38,66 +36,7 @@ export abstract class OsmObject {
}
}
-
- abstract SaveExtraData(element);
-
-
- /**
- * Generates the changeset-XML for tags
- * @constructor
- */
- TagsXML(): string {
- let tags = "";
- for (const key in this.tags) {
- const v = this.tags[key];
- if (v !== "") {
- tags += ' \n'
- }
- }
- return tags;
- }
-
-
- Download(continuation: ((element: OsmObject) => void)) {
- const self = this;
- $.getJSON("https://www.openstreetmap.org/api/0.6/" + this.type + "/" + this.id,
- function (data) {
- const element = data.elements[0];
- self.tags = element.tags;
- self.version = element.version;
- self.SaveExtraData(element);
- continuation(self);
- }
- );
- return this;
- }
-
- public addTag(k: string, v: string): void {
- if (k in this.tags) {
- const oldV = this.tags[k];
- if (oldV == v) {
- return;
- }
- console.log("WARNING: overwriting ",oldV, " with ", v," for key ",k)
- }
- this.tags[k] = v;
- if(v === undefined || v === ""){
- delete this.tags[k];
- }
- this.changed = true;
- }
-
- protected VersionXML(){
- if(this.version === undefined){
- return "";
- }
- return 'version="'+this.version+'"';
- }
- abstract ChangesetXML(changesetId: string): string;
-
-
-
- public static DownloadAll(neededIds, knownElements: any = {}, continuation: ((knownObjects : any) => void)) {
+ public static DownloadAll(neededIds, knownElements: any = {}, continuation: ((knownObjects: any) => void)) {
// local function which downloads all the objects one by one
// this is one big loop, running one download, then rerunning the entire function
if (neededIds.length == 0) {
@@ -115,10 +54,71 @@ export abstract class OsmObject {
OsmObject.DownloadObject(neededId,
function (element) {
knownElements[neededId] = element; // assign the element for later, continue downloading the next element
- OsmObject.DownloadAll(neededIds,knownElements, continuation);
+ OsmObject.DownloadAll(neededIds, knownElements, continuation);
}
);
}
+
+ abstract SaveExtraData(element);
+
+ /**
+ * Generates the changeset-XML for tags
+ * @constructor
+ */
+ TagsXML(): string {
+ let tags = "";
+ for (const key in this.tags) {
+ const v = this.tags[key];
+ if (v !== "") {
+ tags += ' \n'
+ }
+ }
+ return tags;
+ }
+
+ Download(continuation: ((element: OsmObject, meta: OsmObjectMeta) => void)) {
+ const self = this;
+ $.getJSON("https://www.openstreetmap.org/api/0.6/" + this.type + "/" + this.id,
+ function (data) {
+ const element = data.elements[0];
+ self.tags = element.tags;
+ self.version = element.version;
+ self.SaveExtraData(element);
+ continuation(self, {
+ "_last_edit:contributor": element.user,
+ "_last_edit:contributor:uid": element.uid,
+ "_last_edit:changeset": element.changeset,
+ "_last_edit:timestamp": new Date(element.timestamp),
+ "_version_number": element.version
+ });
+ }
+ );
+ return this;
+ }
+
+ public addTag(k: string, v: string): void {
+ if (k in this.tags) {
+ const oldV = this.tags[k];
+ if (oldV == v) {
+ return;
+ }
+ console.log("WARNING: overwriting ", oldV, " with ", v, " for key ", k)
+ }
+ this.tags[k] = v;
+ if (v === undefined || v === "") {
+ delete this.tags[k];
+ }
+ this.changed = true;
+ }
+
+ abstract ChangesetXML(changesetId: string): string;
+
+ protected VersionXML() {
+ if (this.version === undefined) {
+ return "";
+ }
+ return 'version="' + this.version + '"';
+ }
}
@@ -149,6 +149,15 @@ export class OsmNode extends OsmObject {
}
}
+export interface OsmObjectMeta{
+ "_last_edit:contributor": string,
+ "_last_edit:contributor:uid": number,
+ "_last_edit:changeset": number,
+ "_last_edit:timestamp": Date,
+ "_version_number": number
+
+}
+
export class OsmWay extends OsmObject {
nodes: number[];
From d7277838e4e2834a2a1d91ff7dcad0d9b028695f Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Wed, 21 Apr 2021 01:25:00 +0200
Subject: [PATCH 47/56] Fix small bug: no new countdown will be started if a
countdown is already running
---
Logic/Actors/UpdateFromOverpass.ts | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/Logic/Actors/UpdateFromOverpass.ts b/Logic/Actors/UpdateFromOverpass.ts
index c75239a939..370da705bd 100644
--- a/Logic/Actors/UpdateFromOverpass.ts
+++ b/Logic/Actors/UpdateFromOverpass.ts
@@ -125,7 +125,12 @@ export default class UpdateFromOverpass implements FeatureSource {
private update(): void {
if (this.runningQuery.data) {
- console.log("Still running a query, skip");
+ console.log("Still running a query, not updating");
+ return;
+ }
+
+ if(this.timeout.data > 0){
+ console.log("Still in timeout - not updating")
return;
}
From c6b4ba43fbf7175a9fe20037965b41e5ee1da4d4 Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Wed, 21 Apr 2021 01:26:13 +0200
Subject: [PATCH 48/56] Add feature which loads the selected element from
overpass to update the tags to the latest version
---
Logic/Actors/UpdateTagsFromOsmAPI.ts | 54 ++++++++++++++++++++++++++
Logic/ElementStorage.ts | 57 ++++++++++++++++------------
Logic/SimpleMetaTagger.ts | 3 +-
State.ts | 2 +
4 files changed, 91 insertions(+), 25 deletions(-)
create mode 100644 Logic/Actors/UpdateTagsFromOsmAPI.ts
diff --git a/Logic/Actors/UpdateTagsFromOsmAPI.ts b/Logic/Actors/UpdateTagsFromOsmAPI.ts
new file mode 100644
index 0000000000..cdf0863b06
--- /dev/null
+++ b/Logic/Actors/UpdateTagsFromOsmAPI.ts
@@ -0,0 +1,54 @@
+import {UIEventSource} from "../UIEventSource";
+import {ElementStorage} from "../ElementStorage";
+import {OsmObject, OsmObjectMeta} from "../Osm/OsmObject";
+import SimpleMetaTagger from "../SimpleMetaTagger";
+
+export default class UpdateTagsFromOsmAPI {
+
+
+ public static readonly metaTagger = new SimpleMetaTagger(
+ ["_last_edit:contributor",
+ "_last_edit:contributor:uid",
+ "_last_edit:changeset",
+ "_last_edit:timestamp",
+ "_version_number"],
+ "Information about the last edit of this object. \n\nIMPORTANT: this data is _only_ loaded when the popup is added. This means it should _not_ be used to render icons!",
+ (feature: any, index: number, freshness: Date) => {/*Do nothing - this is only added for documentation reasons*/
+ }
+ )
+
+ /***
+ * This actor downloads the element from the OSM-API and updates the corresponding tags in the UI-updater.
+ */
+ constructor(idToDownload: UIEventSource, allElements: ElementStorage) {
+
+ idToDownload.addCallbackAndRun(id => {
+ if (id === undefined) {
+ return;
+ }
+
+ OsmObject.DownloadObject(id, (element: OsmObject, meta: OsmObjectMeta) => {
+ console.log("Updating element from OSM-API: ", element)
+
+
+ const tags = element.tags;
+ tags["_last_edit:contributor"] = meta["_last_edit:contributor"]
+ tags["_last_edit:contributor:uid"] = meta["_last_edit:contributor:uid"]
+ tags["_last_edit:changeset"] = meta["_last_edit:changeset"]
+ tags["_last_edit:timestamp"] = meta["_last_edit:timestamp"].toLocaleString()
+ tags["_version_number"] = meta._version_number
+ if (!allElements.has(id)) {
+ console.warn("Adding element by id")
+ allElements.addElementById(id, new UIEventSource(tags))
+ } else {
+ // We merge
+ console.warn("merging by OSM API UPDATE")
+ allElements.addOrGetById(id, tags)
+ }
+ })
+ })
+
+ }
+
+
+}
\ No newline at end of file
diff --git a/Logic/ElementStorage.ts b/Logic/ElementStorage.ts
index 553d305e2e..88e4ab1513 100644
--- a/Logic/ElementStorage.ts
+++ b/Logic/ElementStorage.ts
@@ -23,34 +23,43 @@ export class ElementStorage {
*/
addOrGetElement(feature: any): UIEventSource {
const elementId = feature.properties.id;
- if (this._elements.has(elementId)) {
- const es = this._elements.get(elementId);
- if (es.data == feature.properties) {
- // Reference comparison gives the same object! we can just return the event source
- return es;
- }
+ const newProperties = feature.properties;
- const keptKeys = es.data;
- // The element already exists
- // We add all the new keys to the old keys
- let somethingChanged = false;
- for (const k in feature.properties) {
- const v = feature.properties[k];
- if (keptKeys[k] !== v) {
- keptKeys[k] = v;
- somethingChanged = true;
- }
- }
- if (somethingChanged) {
- es.ping();
- }
+ const es = this.addOrGetById(elementId, newProperties)
- return es;
- } else {
- const eventSource = new UIEventSource(feature.properties, "tags of " + feature.properties.id);
- this._elements.set(feature.properties.id, eventSource);
+ // At last, we overwrite the tag of the new feature to use the tags in the already existing event source
+ feature.properties = es.data
+ return es;
+ }
+
+ addOrGetById(elementId: string, newProperties: any): UIEventSource {
+ if (!this._elements.has(elementId)) {
+ const eventSource = new UIEventSource(newProperties, "tags of " + elementId);
+ this._elements.set(elementId, eventSource);
return eventSource;
}
+
+
+ const es = this._elements.get(elementId);
+ if (es.data == newProperties) {
+ // Reference comparison gives the same object! we can just return the event source
+ return es;
+ }
+ const keptKeys = es.data;
+ // The element already exists
+ // We use the new feature to overwrite all the properties in the already existing eventsource
+ let somethingChanged = false;
+ for (const k in newProperties) {
+ const v = newProperties[k];
+ if (keptKeys[k] !== v) {
+ keptKeys[k] = v;
+ somethingChanged = true;
+ }
+ }
+ if (somethingChanged) {
+ es.ping();
+ }
+ return es;
}
getEventSourceById(elementId): UIEventSource {
diff --git a/Logic/SimpleMetaTagger.ts b/Logic/SimpleMetaTagger.ts
index 7a059a2098..833566e802 100644
--- a/Logic/SimpleMetaTagger.ts
+++ b/Logic/SimpleMetaTagger.ts
@@ -7,6 +7,7 @@ import {Utils} from "../Utils";
import opening_hours from "opening_hours";
import {UIElement} from "../UI/UIElement";
import Combine from "../UI/Base/Combine";
+import UpdateTagsFromOsmAPI from "./Actors/UpdateTagsFromOsmAPI";
export default class SimpleMetaTagger {
public readonly keys: string[];
@@ -330,7 +331,7 @@ export default class SimpleMetaTagger {
];
- for (const metatag of SimpleMetaTagger.metatags) {
+ for (const metatag of SimpleMetaTagger.metatags.concat(UpdateTagsFromOsmAPI.metaTagger)) {
subElements.push(
new Combine([
"", metatag.keys.join(", "), " ",
diff --git a/State.ts b/State.ts
index 7fd9997005..9da68bd13d 100644
--- a/State.ts
+++ b/State.ts
@@ -18,6 +18,7 @@ import LayerConfig from "./Customizations/JSON/LayerConfig";
import TitleHandler from "./Logic/Actors/TitleHandler";
import PendingChangesUploader from "./Logic/Actors/PendingChangesUploader";
import {Relation} from "./Logic/Osm/ExtractRelations";
+import UpdateTagsFromOsmAPI from "./Logic/Actors/UpdateTagsFromOsmAPI";
/**
* Contains the global state: a bunch of UI-event sources
@@ -252,6 +253,7 @@ export default class State {
new TitleHandler(this.layoutToUse, this.selectedElement, this.allElements);
+ new UpdateTagsFromOsmAPI(this.selectedElement.map(el => el?.properties?.id), this.allElements)
}
From 95f1bdd797ed2cd7b59fbffe2e228a1470d58979 Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Wed, 21 Apr 2021 01:26:36 +0200
Subject: [PATCH 49/56] Small refactoring, add 'last edit by'-rendering
---
Customizations/JSON/LayerConfig.ts | 26 ++++++++++++--------
Customizations/JSON/LayoutConfig.ts | 4 +--
Customizations/SharedTagRenderings.ts | 10 ++++----
Models/Constants.ts | 4 ++-
UI/BigComponents/LayerSelection.ts | 7 ++++--
UI/Popup/FeatureInfoBox.ts | 10 +++++++-
UI/i18n/Translation.ts | 14 ++++++++---
assets/tagRenderings/questions.json | 5 ++++
assets/themes/speelplekken/speelplekken.json | 19 ++++++++++----
index.css | 6 +++++
10 files changed, 76 insertions(+), 29 deletions(-)
diff --git a/Customizations/JSON/LayerConfig.ts b/Customizations/JSON/LayerConfig.ts
index 6e87f2b7fb..1816b8fdb5 100644
--- a/Customizations/JSON/LayerConfig.ts
+++ b/Customizations/JSON/LayerConfig.ts
@@ -136,7 +136,7 @@ export default class LayerConfig {
return new TagRenderingConfig(deflt, self.source.osmTags, `${context}.${key}.default value`);
}
if (typeof v === "string") {
- const shared = SharedTagRenderings.SharedTagRendering[v];
+ const shared = SharedTagRenderings.SharedTagRendering.get(v);
if (shared) {
return shared;
}
@@ -166,7 +166,7 @@ export default class LayerConfig {
}
- const shared = SharedTagRenderings.SharedTagRendering[renderingJson];
+ const shared = SharedTagRenderings.SharedTagRendering.get(renderingJson);
if (shared !== undefined) {
return shared;
}
@@ -196,8 +196,8 @@ export default class LayerConfig {
this.icon = tr("icon", "");
this.iconOverlays = (json.iconOverlays ?? []).map((overlay, i) => {
let tr = new TagRenderingConfig(overlay.then, self.source.osmTags, `iconoverlays.${i}`);
- if (typeof overlay.then === "string" && SharedTagRenderings.SharedIcons[overlay.then] !== undefined) {
- tr = SharedTagRenderings.SharedIcons[overlay.then];
+ if (typeof overlay.then === "string" && SharedTagRenderings.SharedIcons.get(overlay.then) !== undefined) {
+ tr = SharedTagRenderings.SharedIcons.get(overlay.then);
}
return {
if: FromJSON.Tag(overlay.if),
@@ -410,13 +410,19 @@ export default class LayerConfig {
htmlParts.push(badgesComponent)
}
- if(sourceParts.length ==0){iconH = 0}
+ if (sourceParts.length == 0) {
+ iconH = 0
+ }
+ try {
- const label = self.label.GetRenderValue(tgs)?.Subs(tgs)
- .SetClass("block w-min text-center")
- .SetStyle("margin-top: "+(iconH + 2) +"px")
- if (label !== undefined) {
- htmlParts.push(new Combine([label]).SetClass("flex flex-col items-center"))
+ const label = self.label?.GetRenderValue(tgs)?.Subs(tgs)
+ ?.SetClass("block w-min text-center")
+ ?.SetStyle("margin-top: " + (iconH + 2) + "px")
+ if (label !== undefined) {
+ htmlParts.push(new Combine([label]).SetClass("flex flex-col items-center"))
+ }
+ } catch (e) {
+ console.error(e, tgs)
}
return new Combine(htmlParts).Render();
})
diff --git a/Customizations/JSON/LayoutConfig.ts b/Customizations/JSON/LayoutConfig.ts
index 0da4f1e7fb..69661019d7 100644
--- a/Customizations/JSON/LayoutConfig.ts
+++ b/Customizations/JSON/LayoutConfig.ts
@@ -83,8 +83,8 @@ export default class LayoutConfig {
this.widenFactor = json.widenFactor ?? 0.05;
this.roamingRenderings = (json.roamingRenderings ?? []).map((tr, i) => {
if (typeof tr === "string") {
- if (SharedTagRenderings.SharedTagRendering[tr] !== undefined) {
- return SharedTagRenderings.SharedTagRendering[tr];
+ if (SharedTagRenderings.SharedTagRendering.get(tr) !== undefined) {
+ return SharedTagRenderings.SharedTagRendering.get(tr);
}
}
return new TagRenderingConfig(tr, undefined, `${this.id}.roaming_renderings[${i}]`);
diff --git a/Customizations/SharedTagRenderings.ts b/Customizations/SharedTagRenderings.ts
index 772bd97bba..3d3a05208b 100644
--- a/Customizations/SharedTagRenderings.ts
+++ b/Customizations/SharedTagRenderings.ts
@@ -4,15 +4,15 @@ import * as icons from "../assets/tagRenderings/icons.json";
export default class SharedTagRenderings {
- public static SharedTagRendering = SharedTagRenderings.generatedSharedFields();
- public static SharedIcons = SharedTagRenderings.generatedSharedFields(true);
+ public static SharedTagRendering : Map = SharedTagRenderings.generatedSharedFields();
+ public static SharedIcons : Map = SharedTagRenderings.generatedSharedFields(true);
- private static generatedSharedFields(iconsOnly = false) {
- const dict = {}
+ private static generatedSharedFields(iconsOnly = false) : Map{
+ const dict = new Map();
function add(key, store) {
try {
- dict[key] = new TagRenderingConfig(store[key], key)
+ dict.set(key, new TagRenderingConfig(store[key], key))
} catch (e) {
console.error("BUG: could not parse", key, " from questions.json or icons.json - this error happened during the build step of the SharedTagRenderings", e)
}
diff --git a/Models/Constants.ts b/Models/Constants.ts
index 2dfe67a323..599384c4c5 100644
--- a/Models/Constants.ts
+++ b/Models/Constants.ts
@@ -9,13 +9,15 @@ export default class Constants {
addNewPointsUnlock: 0,
moreScreenUnlock: 1,
personalLayoutUnlock: 15,
+ historyLinkVisible: 20,
tagsVisibleAt: 25,
mapCompleteHelpUnlock: 50,
tagsVisibleAndWikiLinked: 30,
themeGeneratorReadOnlyUnlock: 50,
themeGeneratorFullUnlock: 500,
addNewPointWithUnreadMessagesUnlock: 500,
- minZoomLevelToAddNewPoints: (Constants.isRetina() ? 18 : 19)
+ minZoomLevelToAddNewPoints: (Constants.isRetina() ? 18 : 19),
+
};
/**
* Used by 'PendingChangesUploader', which waits this amount of seconds to upload changes.
diff --git a/UI/BigComponents/LayerSelection.ts b/UI/BigComponents/LayerSelection.ts
index d56455965a..fe55f1cb30 100644
--- a/UI/BigComponents/LayerSelection.ts
+++ b/UI/BigComponents/LayerSelection.ts
@@ -47,9 +47,12 @@ export default class LayerSelection extends UIElement {
.SetClass("single-layer-selection-toggle")
.SetStyle("opacity:0.2;");
- const name = Translations.WT(layer.layerDef.name).Clone()
- .SetStyle("font-size:large;margin-left: 0.5em;");
+ const name = Translations.WT(layer.layerDef.name)?.Clone()
+ ?.SetStyle("font-size:large;margin-left: 0.5em;");
+ if(name === undefined){
+ continue
+ }
const zoomStatus = new VariableUiElement(State.state.locationControl.map(location => {
if (location.zoom < layer.layerDef.minzoom) {
diff --git a/UI/Popup/FeatureInfoBox.ts b/UI/Popup/FeatureInfoBox.ts
index b81e1afc25..c3f249c0b6 100644
--- a/UI/Popup/FeatureInfoBox.ts
+++ b/UI/Popup/FeatureInfoBox.ts
@@ -9,6 +9,8 @@ import State from "../../State";
import TagRenderingConfig from "../../Customizations/JSON/TagRenderingConfig";
import ScrollableFullScreen from "../Base/ScrollableFullScreen";
import {Tag} from "../../Logic/Tags/Tag";
+import Constants from "../../Models/Constants";
+import SharedTagRenderings from "../../Customizations/SharedTagRenderings";
export default class FeatureInfoBox extends ScrollableFullScreen {
@@ -49,7 +51,7 @@ export default class FeatureInfoBox extends ScrollableFullScreen {
private static GenerateContent(tags: UIEventSource,
layerConfig: LayerConfig): UIElement {
let questionBox: UIElement = undefined;
-
+
if (State.state.featureSwitchUserbadge.data) {
questionBox = new QuestionBox(tags, layerConfig.tagRenderings);
}
@@ -67,6 +69,12 @@ export default class FeatureInfoBox extends ScrollableFullScreen {
renderings.push(questionBox);
}
+ if (State.state.osmConnection.userDetails.data.csCount >= Constants.userJourney.historyLinkVisible ||
+ State.state.featureSwitchIsDebugging.data == true ||
+ State.state.featureSwitchIsTesting.data == true) {
+ renderings.push(new TagRenderingAnswer( tags, SharedTagRenderings.SharedTagRendering.get("last_edit")))
+ }
+
if (State.state.featureSwitchIsDebugging.data) {
const config: TagRenderingConfig = new TagRenderingConfig({render: "{all_tags()}"}, new Tag("id", ""), "");
renderings.push(new TagRenderingAnswer(tags, config))
diff --git a/UI/i18n/Translation.ts b/UI/i18n/Translation.ts
index 0730f282ab..637224535e 100644
--- a/UI/i18n/Translation.ts
+++ b/UI/i18n/Translation.ts
@@ -73,10 +73,18 @@ export class Translation extends UIElement {
let rtext: string = "";
if (typeof (el) === "string") {
rtext = el;
- } else if(typeof(el) === "number") {
- // HUH? Where did that number come from?
+ } else if (typeof (el) === "number") {
+ // HUH? Where did that number come from? It might be a version number or something calculated
rtext = "" + el;
- }else {
+ } else if (el["toISOString"] != undefined) {
+ // This is a date, probably the timestamp of the object
+ // @ts-ignore
+ const date: Date = el;
+ rtext = date.toLocaleString();
+ } else if (el.InnerRender === undefined) {
+ console.error("InnerREnder is not defined", el);
+ throw "Hmmm, el.InnerRender is not defined?"
+ } else {
Translation.forcedLanguage = lang; // This is a very dirty hack - it'll bite me one day
rtext = el.InnerRender();
diff --git a/assets/tagRenderings/questions.json b/assets/tagRenderings/questions.json
index 32334a5988..667ef7d78b 100644
--- a/assets/tagRenderings/questions.json
+++ b/assets/tagRenderings/questions.json
@@ -77,5 +77,10 @@
"key": "opening_hours",
"type": "opening_hours"
}
+ },
+ "last_edit": {
+ "#": "Gives some metainfo about the last edit and who did edit it - rendering only",
+ "#condition": "_last_edit:contributor~*",
+ "render": ""
}
}
\ No newline at end of file
diff --git a/assets/themes/speelplekken/speelplekken.json b/assets/themes/speelplekken/speelplekken.json
index ebbb23cc7c..3b8f6526da 100644
--- a/assets/themes/speelplekken/speelplekken.json
+++ b/assets/themes/speelplekken/speelplekken.json
@@ -15,7 +15,7 @@
"maintainer": "MapComplete",
"icon": "./assets/layers/play_forest/icon.svg",
"hideFromOverview": true,
- "lockLocation": false,
+ "lockLocation": true,
"version": "0",
"startLat": 51.17174,
"startLon": 4.449462,
@@ -27,7 +27,8 @@
"play_forest",
"playground",
"sport_pitch",
- { "builtin": "slow_roads",
+ {
+ "builtin": "slow_roads",
"override": {
"calculatedTags": [
"_part_of_walking_routes=feat.memberships().map(r => \"\" + r.relation.tags.name + \" \").join(', ')"
@@ -109,7 +110,7 @@
"nl": "Wie beheert deze wandeling en plaatst dus de signalisatiebordjes?"
},
"render": "Signalisatie geplaatst door {operator}",
- "freeform":{
+ "freeform": {
"key": "operator"
}
},
@@ -130,7 +131,7 @@
],
"color": {
"render": "#6d6",
- "mappings":[
+ "mappings": [
{
"if": "color~*",
"then": "{color}"
@@ -140,8 +141,16 @@
"width": {
"render": "3"
}
+ },
+ {
+ "source": {
+ "osmTags": {
+ "or": []
+ },
+ "geoJson": "https://pietervdvn.github.io/speelplekken-cache.geojson"
+ },
+ "passAllFeatures": true
}
-
],
"roamingRenderings": [
{
diff --git a/index.css b/index.css
index 0ebf81afc6..77601637da 100644
--- a/index.css
+++ b/index.css
@@ -283,6 +283,12 @@ li::marker {
color: #999;
}
+.link-underline .subtle a {
+ color: var(--foreground-color);
+ text-decoration: underline 1px #7193bb88;
+ color: #7193bb;
+}
+
.bold {
font-weight: bold;
}
From ba7725983762d0dff7f3f4fb477976266bd0e4b0 Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Wed, 21 Apr 2021 17:42:09 +0200
Subject: [PATCH 50/56] Add ts-ignore in order to let the script run when the
generated output was borked
---
scripts/generateLayouts.ts | 1 +
1 file changed, 1 insertion(+)
diff --git a/scripts/generateLayouts.ts b/scripts/generateLayouts.ts
index da0c909de8..39ce0fdc26 100644
--- a/scripts/generateLayouts.ts
+++ b/scripts/generateLayouts.ts
@@ -234,6 +234,7 @@ if (!existsSync(generatedDir)) {
}
const blacklist = ["", "test", ".", "..", "manifest", "index", "land", "preferences", "account", "openstreetmap", "custom"]
+// @ts-ignore
const all : LayoutConfigJson[] = all_known_layouts.themes;
for (const i in all) {
From 8cc061c68f751ef414ef622795fc7dfccac15736 Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Wed, 21 Apr 2021 17:42:28 +0200
Subject: [PATCH 51/56] Small tweaks to themes
---
assets/layers/sport_pitch/sport_pitch.json | 3 ++-
assets/themes/speelplekken/speelplekken.json | 2 ++
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/assets/layers/sport_pitch/sport_pitch.json b/assets/layers/sport_pitch/sport_pitch.json
index 1db714590f..01e819d173 100644
--- a/assets/layers/sport_pitch/sport_pitch.json
+++ b/assets/layers/sport_pitch/sport_pitch.json
@@ -250,7 +250,8 @@
"en": "Always accessible"
}
}
- ]
+ ],
+ "condition": "access~*"
},
"questions",
{
diff --git a/assets/themes/speelplekken/speelplekken.json b/assets/themes/speelplekken/speelplekken.json
index 3b8f6526da..5a9fb8b2ca 100644
--- a/assets/themes/speelplekken/speelplekken.json
+++ b/assets/themes/speelplekken/speelplekken.json
@@ -143,6 +143,8 @@
}
},
{
+ "id": "speelplekken-cache",
+ "name": "",
"source": {
"osmTags": {
"or": []
From 475cdae19fda536e2498d684cc6defc9b569c6cf Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Wed, 21 Apr 2021 17:43:04 +0200
Subject: [PATCH 52/56] Do not show layer selection if the layer name is
undefined or empty string
---
UI/BigComponents/LayerSelection.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/UI/BigComponents/LayerSelection.ts b/UI/BigComponents/LayerSelection.ts
index fe55f1cb30..0b75a3ac24 100644
--- a/UI/BigComponents/LayerSelection.ts
+++ b/UI/BigComponents/LayerSelection.ts
@@ -50,7 +50,7 @@ export default class LayerSelection extends UIElement {
const name = Translations.WT(layer.layerDef.name)?.Clone()
?.SetStyle("font-size:large;margin-left: 0.5em;");
- if(name === undefined){
+ if((name ?? "") === ""){
continue
}
From 2da52501a3b65518b0f05005f24de11d5cd0cdb4 Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Thu, 22 Apr 2021 03:30:46 +0200
Subject: [PATCH 53/56] Add capability to load tiled geojsons, eventually as
overpass-cache
---
Customizations/JSON/LayerConfig.ts | 5 +-
Customizations/JSON/LayerConfigJson.ts | 5 +-
Customizations/JSON/LayoutConfig.ts | 2 +-
Customizations/JSON/SourceConfig.ts | 5 +-
Logic/FeatureSource/FeaturePipeline.ts | 13 +-
Logic/FeatureSource/GeoJsonSource.ts | 174 ++++++++++++++++--
Logic/Osm/ExtractRelations.ts | 12 +-
Logic/Osm/Overpass.ts | 2 +-
Utils.ts | 32 +++-
assets/themes/speelplekken/speelplekken.json | 70 ++++++--
package.json | 3 +-
scripts/ScriptUtils.ts | 26 +++
scripts/fixGeoJson.ts | 21 ---
scripts/generateCache.ts | 176 +++++++++++++++++++
test/TestHelper.ts | 2 +-
test/Theme.spec.ts | 48 +++++
16 files changed, 520 insertions(+), 76 deletions(-)
delete mode 100644 scripts/fixGeoJson.ts
create mode 100644 scripts/generateCache.ts
create mode 100644 test/Theme.spec.ts
diff --git a/Customizations/JSON/LayerConfig.ts b/Customizations/JSON/LayerConfig.ts
index 1816b8fdb5..e77f31001d 100644
--- a/Customizations/JSON/LayerConfig.ts
+++ b/Customizations/JSON/LayerConfig.ts
@@ -85,6 +85,7 @@ export default class LayerConfig {
this.source = new SourceConfig({
osmTags: osmTags,
geojsonSource: json.source["geoJson"],
+ geojsonSourceLevel: json.source["geoJsonZoomLevel"],
overpassScript: json.source["overpassScript"],
});
} else {
@@ -159,7 +160,7 @@ export default class LayerConfig {
if (renderingJson === "questions") {
if (readOnly) {
- throw `A tagrendering has a question, but asking a question does not make sense here: is it a title icon or a geojson-layer? ${context}`
+ throw `A tagrendering has a question, but asking a question does not make sense here: is it a title icon or a geojson-layer? ${context}. The offending tagrendering is ${JSON.stringify(renderingJson)}`
}
return new TagRenderingConfig("questions", undefined)
@@ -176,7 +177,7 @@ export default class LayerConfig {
});
}
- this.tagRenderings = trs(json.tagRenderings, this.source.geojsonSource !== undefined);
+ this.tagRenderings = trs(json.tagRenderings, false);
const titleIcons = [];
diff --git a/Customizations/JSON/LayerConfigJson.ts b/Customizations/JSON/LayerConfigJson.ts
index f0f88c3d1a..66af91221c 100644
--- a/Customizations/JSON/LayerConfigJson.ts
+++ b/Customizations/JSON/LayerConfigJson.ts
@@ -29,7 +29,8 @@ export interface LayerConfigJson {
* There are some options:
*
* source: {osmTags: "key=value"} will fetch all objects with given tags from OSM. Currently, this will create a query to overpass and fetch the data - in the future this might fetch from the OSM API
- * source: {geoJsonSource: "https://my.source.net/some-geo-data.geojson"} to fetch a geojson from a third party source
+ * source: {geoJson: "https://my.source.net/some-geo-data.geojson"} to fetch a geojson from a third party source
+ * source: {geoJson: "https://my.source.net/some-tile-geojson-{z}-{x}-{y}.geojson", geoJsonZoomLevel: 14} to use a tiled geojson source. The web server must offer multiple geojsons. {z}, {x} and {y} are substituted
*
* source: {overpassScript: ""} when you want to do special things. _This should be really rare_.
* This means that the data will be pulled from overpass with this script, and will ignore the osmTags for the query
@@ -40,7 +41,7 @@ export interface LayerConfigJson {
* While still supported, this is considered deprecated
*/
source: { osmTags: AndOrTagConfigJson | string } |
- { osmTags: AndOrTagConfigJson | string, geoJson: string } |
+ { osmTags: AndOrTagConfigJson | string, geoJson: string, geoJsonZoomLevel?: number } |
{ osmTags: AndOrTagConfigJson | string, overpassScript: string }
/**
diff --git a/Customizations/JSON/LayoutConfig.ts b/Customizations/JSON/LayoutConfig.ts
index 69661019d7..734f254901 100644
--- a/Customizations/JSON/LayoutConfig.ts
+++ b/Customizations/JSON/LayoutConfig.ts
@@ -108,7 +108,7 @@ export default class LayoutConfig {
throw "Unkown fixed layer " + name;
}
// @ts-ignore
- layer = Utils.Merge(layer.override, shared);
+ layer = Utils.Merge(layer.override, JSON.parse(JSON.stringify(shared))); // We make a deep copy of the shared layer, in order to protect it from changes
}
// @ts-ignore
diff --git a/Customizations/JSON/SourceConfig.ts b/Customizations/JSON/SourceConfig.ts
index f354ed33de..336826275a 100644
--- a/Customizations/JSON/SourceConfig.ts
+++ b/Customizations/JSON/SourceConfig.ts
@@ -5,11 +5,13 @@ export default class SourceConfig {
osmTags?: TagsFilter;
overpassScript?: string;
geojsonSource?: string;
+ geojsonZoomLevel?: number;
constructor(params: {
osmTags?: TagsFilter,
overpassScript?: string,
- geojsonSource?: string
+ geojsonSource?: string,
+ geojsonSourceLevel?: number
}) {
let defined = 0;
@@ -28,5 +30,6 @@ export default class SourceConfig {
this.osmTags = params.osmTags;
this.overpassScript = params.overpassScript;
this.geojsonSource = params.geojsonSource;
+ this.geojsonZoomLevel = params.geojsonSourceLevel;
}
}
\ No newline at end of file
diff --git a/Logic/FeatureSource/FeaturePipeline.ts b/Logic/FeatureSource/FeaturePipeline.ts
index 4b79cfbeaf..6b48e95097 100644
--- a/Logic/FeatureSource/FeaturePipeline.ts
+++ b/Logic/FeatureSource/FeaturePipeline.ts
@@ -33,15 +33,10 @@ export default class FeaturePipeline implements FeatureSource {
updater)
)), layout));
- const geojsonSources: GeoJsonSource [] = []
- for (const flayer of flayers.data) {
- const sourceUrl = flayer.layerDef.source.geojsonSource
- if (sourceUrl !== undefined) {
- geojsonSources.push(new RegisteringFeatureSource(new FeatureDuplicatorPerLayer(flayers,
- new GeoJsonSource(flayer.layerDef.id, sourceUrl))))
- }
- }
-
+ const geojsonSources: FeatureSource [] = GeoJsonSource
+ .ConstructMultiSource(flayers.data, locationControl)
+ .map(geojsonSource => new RegisteringFeatureSource(new FeatureDuplicatorPerLayer(flayers, geojsonSource)));
+
const amendedLocalStorageSource =
new RememberingSource(new RegisteringFeatureSource(new FeatureDuplicatorPerLayer(flayers, new LocalStorageSource(layout))
));
diff --git a/Logic/FeatureSource/GeoJsonSource.ts b/Logic/FeatureSource/GeoJsonSource.ts
index dea7356477..7f17fd8fa6 100644
--- a/Logic/FeatureSource/GeoJsonSource.ts
+++ b/Logic/FeatureSource/GeoJsonSource.ts
@@ -1,51 +1,195 @@
import FeatureSource from "./FeatureSource";
import {UIEventSource} from "../UIEventSource";
import * as $ from "jquery";
+import {control} from "leaflet";
+import zoom = control.zoom;
+import Loc from "../../Models/Loc";
+import State from "../../State";
+import {Utils} from "../../Utils";
+import LayerConfig from "../../Customizations/JSON/LayerConfig";
+
/**
* Fetches a geojson file somewhere and passes it along
*/
export default class GeoJsonSource implements FeatureSource {
+
features: UIEventSource<{ feature: any; freshness: Date }[]>;
- constructor(layerId: string, url: string, onFail: ((errorMsg: any) => void) = undefined) {
- if (onFail === undefined) {
- onFail = errorMsg => {
- console.warn(`Could not load geojson layer from`, url, "due to", errorMsg)
+ private readonly onFail: ((errorMsg: any, url: string) => void) = undefined;
+
+ private readonly layerId: string;
+
+ private readonly seenids: Set = new Set()
+
+ constructor(locationControl: UIEventSource,
+ flayer: { isDisplayed: UIEventSource, layerDef: LayerConfig },
+ onFail?: ((errorMsg: any) => void)) {
+ this.layerId = flayer.layerDef.id;
+ let url = flayer.layerDef.source.geojsonSource;
+ const zoomLevel = flayer.layerDef.source.geojsonZoomLevel;
+
+ this.features = new UIEventSource<{ feature: any; freshness: Date }[]>([])
+
+ if (zoomLevel === undefined) {
+ // This is a classic, static geojson layer
+ if (onFail === undefined) {
+ onFail = errorMsg => {
+ console.warn(`Could not load geojson layer from`, url, "due to", errorMsg)
+ }
}
+ this.onFail = onFail;
+
+ this.LoadJSONFrom(url)
+ } else {
+ // This is a dynamic template with a fixed zoom level
+ url = url.replace("{z}", "" + zoomLevel)
+ const loadedTiles = new Set();
+ const self = this;
+ this.onFail = (msg, url) => {
+ console.warn(`Could not load geojson layer from`, url, "due to", msg)
+ loadedTiles.delete(url)
+ }
+
+ const neededTiles = locationControl.map(
+ location => {
+
+ if (!flayer.isDisplayed.data) {
+ return undefined;
+ }
+
+ // Yup, this is cheating to just get the bounds here
+ const bounds = State.state.leafletMap.data.getBounds()
+ const tileRange = Utils.TileRangeBetween(zoomLevel, bounds.getNorth(), bounds.getEast(), bounds.getSouth(), bounds.getWest())
+ const needed = new Set();
+ for (let x = tileRange.xstart; x <= tileRange.xend; x++) {
+ for (let y = tileRange.ystart; y <= tileRange.yend; y++) {
+ let neededUrl = url.replace("{x}", "" + x).replace("{y}", "" + y);
+ needed.add(neededUrl)
+ }
+ }
+ return needed;
+ }
+ );
+ neededTiles.stabilized(250).addCallback((needed: Set) => {
+ if (needed === undefined) {
+ return;
+ }
+ needed.forEach(neededTile => {
+ if (loadedTiles.has(neededTile)) {
+ return;
+ }
+
+ loadedTiles.add(neededTile)
+ self.LoadJSONFrom(neededTile)
+
+ })
+ })
+
}
- this.features = new UIEventSource<{ feature: any; freshness: Date }[]>(undefined)
+ }
+
+ /**
+ * Merges together the layers which have the same source
+ * @param flayers
+ * @param locationControl
+ * @constructor
+ */
+ public static ConstructMultiSource(flayers: { isDisplayed: UIEventSource, layerDef: LayerConfig }[], locationControl: UIEventSource): GeoJsonSource[] {
+
+ const flayersPerSource = new Map, layerDef: LayerConfig }[]>();
+ for (const flayer of flayers) {
+ const url = flayer.layerDef.source.geojsonSource
+ if (url === undefined) {
+ continue;
+ }
+
+ if (!flayersPerSource.has(url)) {
+ flayersPerSource.set(url, [])
+ }
+ flayersPerSource.get(url).push(flayer)
+ }
+
+ console.log("SOURCES", flayersPerSource)
+
+ const sources: GeoJsonSource[] = []
+
+ flayersPerSource.forEach((flayers, key) => {
+ if (flayers.length == 1) {
+ sources.push(new GeoJsonSource(locationControl, flayers[0]));
+ return;
+ }
+
+ const zoomlevels = Utils.Dedup(flayers.map(flayer => "" + (flayer.layerDef.source.geojsonZoomLevel ?? "")))
+ if (zoomlevels.length > 1) {
+ throw "Multiple zoomlevels defined for same geojson source " + key
+ }
+
+ let isShown = new UIEventSource(true, "IsShown for multiple layers: or of multiple values");
+ for (const flayer of flayers) {
+ flayer.isDisplayed.addCallbackAndRun(() => {
+ let value = false;
+ for (const flayer of flayers) {
+ value = flayer.isDisplayed.data || value;
+ }
+ isShown.setData(value);
+ });
+
+ }
+
+ const source = new GeoJsonSource(locationControl, {
+ isDisplayed: isShown,
+ layerDef: flayers[0].layerDef // We only care about the source info here
+ })
+ sources.push(source)
+
+ })
+ return sources;
+
+ }
+
+ private LoadJSONFrom(url: string) {
const eventSource = this.features;
+ const self = this;
$.getJSON(url, function (json, status) {
if (status !== "success") {
console.log("Fetching geojson failed failed")
- onFail(status);
+ self.onFail(status, url);
return;
}
if (json.elements === [] && json.remarks.indexOf("runtime error") > 0) {
console.log("Timeout or other runtime error");
- onFail("Runtime error (timeout)")
+ self.onFail("Runtime error (timeout)", url)
return;
}
const time = new Date();
- const features: { feature: any, freshness: Date } [] = []
+ const newFeatures: { feature: any, freshness: Date } [] = []
let i = 0;
+ let skipped = 0;
for (const feature of json.features) {
if (feature.properties.id === undefined) {
feature.properties.id = url + "/" + i;
feature.id = url + "/" + i;
i++;
}
- feature._matching_layer_id = layerId;
- features.push({feature: feature, freshness: time})
+ if (self.seenids.has(feature.properties.id)) {
+ skipped++;
+ continue;
+ }
+ self.seenids.add(feature.properties.id)
+
+ newFeatures.push({feature: feature, freshness: time})
}
- console.log("Loaded features are", features)
- eventSource.setData(features)
-
- }).fail(onFail)
+ console.log("Downloaded "+newFeatures.length+" new features and "+skipped+" already seen features from "+ url);
+
+ if(newFeatures.length == 0){
+ return;
+ }
+
+ eventSource.setData(eventSource.data.concat(newFeatures))
+ }).fail(msg => self.onFail(msg, url))
}
-
}
\ No newline at end of file
diff --git a/Logic/Osm/ExtractRelations.ts b/Logic/Osm/ExtractRelations.ts
index 4c64d630f9..feeff4c947 100644
--- a/Logic/Osm/ExtractRelations.ts
+++ b/Logic/Osm/ExtractRelations.ts
@@ -20,9 +20,15 @@ export default class ExtractRelations {
console.log("Assigned memberships: ", memberships)
State.state.knownRelations.setData(memberships)
}
-
- private static GetRelationElements(overpassJson: any): Relation[] {
- const relations = overpassJson.elements.filter(element => element.type === "relation")
+
+ /**
+ * Gets an overview of the relations - except for multipolygons. We don't care about those
+ * @param overpassJson
+ * @constructor
+ */
+ public static GetRelationElements(overpassJson: any): Relation[] {
+ const relations = overpassJson.elements
+ .filter(element => element.type === "relation" && element.tags.type !== "multipolygon")
for (const relation of relations) {
relation.properties = relation.tags
}
diff --git a/Logic/Osm/Overpass.ts b/Logic/Osm/Overpass.ts
index b62749ee6f..007cf9f4ec 100644
--- a/Logic/Osm/Overpass.ts
+++ b/Logic/Osm/Overpass.ts
@@ -48,7 +48,7 @@ export class Overpass {
}).fail(onFail)
}
- private buildQuery(bbox: string): string {
+ buildQuery(bbox: string): string {
const filters = this._filter.asOverpass()
let filter = ""
for (const filterOr of filters) {
diff --git a/Utils.ts b/Utils.ts
index 4ac8d4c9e5..aca8abc38b 100644
--- a/Utils.ts
+++ b/Utils.ts
@@ -156,8 +156,6 @@ export class Utils {
}
static Merge(source: any, target: any) {
- target = JSON.parse(JSON.stringify(target));
- source = JSON.parse(JSON.stringify(source));
for (const key in source) {
const sourceV = source[key];
const targetV = target[key]
@@ -203,6 +201,26 @@ export class Utils {
static embedded_tile(lat: number, lon: number, z: number): { x: number, y: number, z: number } {
return {x: Utils.lon2tile(lon, z), y: Utils.lat2tile(lat, z), z: z}
}
+
+ static TileRangeBetween(zoomlevel: number, lat0: number, lon0: number, lat1:number, lon1: number) : TileRange{
+ const t0 = Utils.embedded_tile(lat0, lon0, zoomlevel)
+ const t1 = Utils.embedded_tile(lat1, lon1, zoomlevel)
+
+ const xstart = Math.min(t0.x, t1.x)
+ const xend = Math.max(t0.x, t1.x)
+ const ystart = Math.min(t0.y, t1.y)
+ const yend = Math.max(t0.y, t1.y)
+ const total = (1 + xend - xstart) * (1 + yend - ystart)
+
+ return {
+ xstart: xstart,
+ xend: xend,
+ ystart: ystart,
+ yend: yend,
+ total: total,
+ zoomlevel: zoomlevel
+ }
+ }
public static MinifyJSON(stringified: string): string {
stringified = stringified.replace(/\|/g, "||");
@@ -257,3 +275,13 @@ export class Utils {
return (Math.floor((1 - Math.log(Math.tan(lat * Math.PI / 180) + 1 / Math.cos(lat * Math.PI / 180)) / Math.PI) / 2 * Math.pow(2, zoom)));
}
}
+
+
+export interface TileRange{
+ xstart: number,
+ ystart: number,
+ xend: number,
+ yend: number,
+ total: number,
+ zoomlevel: number
+}
\ No newline at end of file
diff --git a/assets/themes/speelplekken/speelplekken.json b/assets/themes/speelplekken/speelplekken.json
index 5a9fb8b2ca..5e7217b846 100644
--- a/assets/themes/speelplekken/speelplekken.json
+++ b/assets/themes/speelplekken/speelplekken.json
@@ -24,19 +24,64 @@
"socialImage": "",
"defaultBackgroundId": "CartoDB.Positron",
"layers": [
- "play_forest",
- "playground",
- "sport_pitch",
+ {
+ "builtin": "play_forest",
+ "override": {
+ "source": {
+ "geoJson": "https://pietervdvn.github.io/speelplekken_cache/speelplekken_{z}_{x}_{y}.geojson",
+ "geoJsonZoomLevel": 14
+ }
+ }
+ },
+ {
+ "builtin": "playground",
+ "override": {
+ "source": {
+ "geoJson": "https://pietervdvn.github.io/speelplekken_cache/speelplekken_{z}_{x}_{y}.geojson",
+ "geoJsonZoomLevel": 14
+ }
+ }
+ },
+ {
+ "builtin": "sport_pitch",
+ "override": {
+ "minzoom": 15,
+ "source": {
+ "geoJson": "https://pietervdvn.github.io/speelplekken_cache/speelplekken_{z}_{x}_{y}.geojson",
+ "geoJsonZoomLevel": 14
+ }
+ }
+ },
{
"builtin": "slow_roads",
"override": {
+ "source": {
+ "geoJson": "https://pietervdvn.github.io/speelplekken_cache/speelplekken_{z}_{x}_{y}.geojson",
+ "geoJsonZoomLevel": 14
+ },
"calculatedTags": [
"_part_of_walking_routes=feat.memberships().map(r => \"\" + r.relation.tags.name + \" \").join(', ')"
]
}
},
- "grass_in_parks",
- "village_green",
+ {
+ "builtin": "grass_in_parks",
+ "override": {
+ "source": {
+ "geoJson": "https://pietervdvn.github.io/speelplekken_cache/speelplekken_{z}_{x}_{y}.geojson",
+ "geoJsonZoomLevel": 14
+ }
+ }
+ },
+ {
+ "builtin": "village_green",
+ "override": {
+ "source": {
+ "geoJson": "https://pietervdvn.github.io/speelplekken_cache/speelplekken_{z}_{x}_{y}.geojson",
+ "geoJsonZoomLevel": 14
+ }
+ }
+ },
{
"id": "walking_routes",
"name": {
@@ -50,7 +95,9 @@
"route=foot",
"operator=provincie Antwerpen"
]
- }
+ },
+ "geoJson": "https://pietervdvn.github.io/speelplekken_cache/speelplekken_{z}_{x}_{y}.geojson",
+ "geoJsonZoomLevel": 14
},
"title": {
"render": "Wandeling {name} ",
@@ -141,17 +188,6 @@
"width": {
"render": "3"
}
- },
- {
- "id": "speelplekken-cache",
- "name": "",
- "source": {
- "osmTags": {
- "or": []
- },
- "geoJson": "https://pietervdvn.github.io/speelplekken-cache.geojson"
- },
- "passAllFeatures": true
}
],
"roamingRenderings": [
diff --git a/package.json b/package.json
index 26ac357653..cc5cf14474 100644
--- a/package.json
+++ b/package.json
@@ -9,12 +9,13 @@
"scripts": {
"increase-memory": "export NODE_OPTIONS=--max_old_space_size=4096",
"start": "ts-node scripts/generateLayerOverview.ts --no-fail && npm run increase-memory && parcel *.html UI/** Logic/** assets/** assets/**/** assets/**/**/** vendor/* vendor/*/*",
- "test": "ts-node test/Tag.spec.ts && ts-node test/TagQuestion.spec.ts && ts-node test/ImageSearcher.spec.ts && ts-node test/ImageAttribution.spec.ts",
+ "test": "ts-node test/Tag.spec.ts && ts-node test/TagQuestion.spec.ts && ts-node test/ImageSearcher.spec.ts && ts-node test/ImageAttribution.spec.ts && ts-node test/Theme.spec.ts",
"generate:editor-layer-index": "cd assets/ && wget https://osmlab.github.io/editor-layer-index/imagery.geojson --output-document=editor-layer-index.json",
"generate:images": "ts-node scripts/generateIncludedImages.ts",
"generate:translations": "ts-node scripts/generateTranslations.ts",
"generate:layouts": "ts-node scripts/generateLayouts.ts",
"generate:docs": "ts-node scripts/generateDocs.ts && ts-node scripts/generateTaginfoProjectFiles.ts",
+ "generate:cache:speelplekken": "ts-node scripts/generateCache.ts speelplekken 14 ./cache/speelplekken 51.2003 4.3925 51.1058 4.5087",
"generate:layeroverview": "ts-node scripts/generateLayerOverview.ts --no-fail",
"generate:licenses": "ts-node scripts/generateLicenseInfo.ts --no-fail",
"validate:layeroverview": "ts-node scripts/generateLayerOverview.ts --report",
diff --git a/scripts/ScriptUtils.ts b/scripts/ScriptUtils.ts
index 36ecc24681..e725cf0bd4 100644
--- a/scripts/ScriptUtils.ts
+++ b/scripts/ScriptUtils.ts
@@ -1,4 +1,5 @@
import {lstatSync, readdirSync} from "fs";
+import * as https from "https";
export default class ScriptUtils {
public static readDirRecSync(path): string[] {
@@ -16,5 +17,30 @@ export default class ScriptUtils {
}
return result;
}
+
+ public static DownloadJSON(url, continuation : (parts : string []) => void){
+ https.get(url, (res) => {
+ console.log("Got response!")
+ const parts : string[] = []
+ res.setEncoding('utf8');
+ res.on('data', function (chunk) {
+ // @ts-ignore
+ parts.push(chunk)
+ });
+
+ res.addListener('end', function () {
+ continuation(parts)
+ });
+ })
+ }
+
+ public static sleep(ms) {
+ return new Promise((resolve) => {
+ console.debug("Sleeping for", ms)
+ setTimeout(resolve, ms);
+
+ });
+ }
+
}
diff --git a/scripts/fixGeoJson.ts b/scripts/fixGeoJson.ts
deleted file mode 100644
index d6c8e5e58f..0000000000
--- a/scripts/fixGeoJson.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-// Loads a geojson file downloaded from overpass, renames "@id" to "id" and deletes "@relations"
-
-import {readFileSync, writeFileSync} from "fs";
-
-const source = process.argv[2] ?? "~/Downloads/export.json"
-console.log("Fixing up ", source)
-const contents = readFileSync(source, "UTF8");
-const f = JSON.parse(contents);
-let i = 0
-for (const feature of f.features) {
- if(feature.properties == undefined){
- continue
- }
- feature.properties["id"] = feature.properties["@id"]
- feature.properties["@id"] = undefined
- feature.properties["@relations"] = undefined
-}
-
-writeFileSync(source+".fixed", JSON.stringify(f, null, " "))
\ No newline at end of file
diff --git a/scripts/generateCache.ts b/scripts/generateCache.ts
new file mode 100644
index 0000000000..a41d67dd29
--- /dev/null
+++ b/scripts/generateCache.ts
@@ -0,0 +1,176 @@
+/**
+ * Generates a collection of geojson files based on an overpass query for a given theme
+ */
+import {TileRange, Utils} from "../Utils";
+
+Utils.runningFromConsole = true
+import {Overpass} from "../Logic/Osm/Overpass";
+import {writeFileSync, existsSync, readFileSync} from "fs";
+import {TagsFilter} from "../Logic/Tags/TagsFilter";
+import {Or} from "../Logic/Tags/Or";
+import LayoutConfig from "../Customizations/JSON/LayoutConfig";
+import {AllKnownLayouts} from "../Customizations/AllKnownLayouts";
+import ScriptUtils from "./ScriptUtils";
+import ExtractRelations from "../Logic/Osm/ExtractRelations";
+import * as OsmToGeoJson from "osmtogeojson";
+import {Script} from "vm";
+
+function createOverpassObject(theme: LayoutConfig) {
+ let filters: TagsFilter[] = [];
+ let extraScripts: string[] = [];
+ for (const layer of theme.layers) {
+ if (typeof (layer) === "string") {
+ throw "A layer was not expanded!"
+ }
+ if (layer.doNotDownload) {
+ continue;
+ }
+ if (layer.source.geojsonSource !== undefined) {
+ // Not our responsibility to download this layer!
+ continue;
+ }
+
+
+ // Check if data for this layer has already been loaded
+ if (layer.source.overpassScript !== undefined) {
+ extraScripts.push(layer.source.overpassScript)
+ } else {
+ filters.push(layer.source.osmTags);
+ }
+ }
+ filters = Utils.NoNull(filters)
+ extraScripts = Utils.NoNull(extraScripts)
+ if (filters.length + extraScripts.length === 0) {
+ throw "Nothing to download! The theme doesn't declare anything to download"
+ }
+ return new Overpass(new Or(filters), extraScripts);
+}
+
+function saveResponse(chunks: string[], targetDir: string) {
+ const contents = chunks.join("")
+ if (contents.startsWith(" {
+ saveResponse(chunks, filename)
+ })
+
+ await ScriptUtils.sleep(10000)
+ console.debug("Waking up")
+
+ }
+ }
+}
+
+async function postProcess(targetdir: string, r: TileRange) {
+ let processed = 0;
+ for (let x = r.xstart; x <= r.xend; x++) {
+ for (let y = r.ystart; y <= r.yend; y++) {
+ processed++;
+ const filename = rawJsonName(targetdir, x, y, r.zoomlevel)
+ console.log(" Post processing", processed, "/",r. total, filename)
+ if (!existsSync(filename)) {
+ throw "Not found - and not downloaded. Run this script again!: " + filename
+ }
+
+ // We read the raw OSM-file and convert it to a geojson
+ const rawOsm = JSON.parse(readFileSync(filename, "UTF8"))
+
+ // Create and save the geojson file - which is the main chunk of the data
+ const geojson = OsmToGeoJson.default(rawOsm);
+ writeFileSync(geoJsonName(targetdir, x, y, r.zoomlevel), JSON.stringify(geojson))
+
+ // Extract the relationship information
+ const relations = ExtractRelations.GetRelationElements(rawOsm)
+ const osmTime = new Date(rawOsm.osm3s.timestamp_osm_base);
+
+ const meta = {
+ freshness: osmTime,
+ relations: relations
+ }
+
+ writeFileSync(
+ metaJsonName(targetdir, x, y, r.zoomlevel),
+ JSON.stringify(meta)
+ )
+ }
+ }
+}
+
+async function main(args: string[]) {
+
+ if (args.length == 0) {
+ console.error("Expected arguments are: theme zoomlevel targetdirectory lat0 lon0 lat1 lon1")
+ return;
+ }
+ const themeName = args[0]
+ const zoomlevel = Number(args[1])
+ const targetdir = args[2]
+ const lat0 = Number(args[3])
+ const lon0 = Number(args[4])
+ const lat1 = Number(args[5])
+ const lon1 = Number(args[6])
+
+ const tileRange = Utils.TileRangeBetween(zoomlevel, lat0, lon0, lat1, lon1)
+
+ const theme = AllKnownLayouts.allKnownLayouts.get(themeName)
+ if (theme === undefined) {
+ const keys = []
+ AllKnownLayouts.allKnownLayouts.forEach((_, key) => {
+ keys.push(key)
+ })
+ console.error("The theme " + theme + " was not found; try one of ", keys);
+ return
+ }
+
+ const overpass = createOverpassObject(theme)
+
+
+ await downloadRaw(targetdir, tileRange, overpass)
+ await postProcess(targetdir, tileRange)
+}
+
+
+let args = [...process.argv]
+args.splice(0, 2)
+main(args);
\ No newline at end of file
diff --git a/test/TestHelper.ts b/test/TestHelper.ts
index 4232f2cf9a..10187617a0 100644
--- a/test/TestHelper.ts
+++ b/test/TestHelper.ts
@@ -1,6 +1,6 @@
export default class T {
-
+
constructor(testsuite: string, tests: [string, () => void ][]) {
let failures : string []= [];
for (const [name, test] of tests) {
diff --git a/test/Theme.spec.ts b/test/Theme.spec.ts
new file mode 100644
index 0000000000..ea8d18218d
--- /dev/null
+++ b/test/Theme.spec.ts
@@ -0,0 +1,48 @@
+import T from "./TestHelper";
+import {Utils} from "../Utils";
+
+Utils.runningFromConsole = true;
+import TagRenderingQuestion from "../UI/Popup/TagRenderingQuestion";
+import {UIEventSource} from "../Logic/UIEventSource";
+import TagRenderingConfig from "../Customizations/JSON/TagRenderingConfig";
+import LayoutConfig from "../Customizations/JSON/LayoutConfig";
+import {LayoutConfigJson} from "../Customizations/JSON/LayoutConfigJson";
+import * as assert from "assert";
+
+
+new T("Theme tests",
+ [
+ ["Nested overrides work", () => {
+
+ const themeConfigJson : LayoutConfigJson = {
+ description: "Descr",
+ icon: "",
+ language: ["en"],
+ layers: [
+ {
+ builtin: "public_bookcase",
+ override: {
+ source:{
+ geoJson: "xyz"
+ }
+ }
+ }
+ ],
+ maintainer: "",
+ startLat: 0,
+ startLon: 0,
+ startZoom: 0,
+ title: {
+ en: "Title"
+ },
+ version: "",
+ id: "test"
+ }
+
+ const themeConfig = new LayoutConfig(themeConfigJson);
+ assert.equal("xyz", themeConfig.layers[0].source.geojsonSource)
+
+
+ }]
+ ]
+);
\ No newline at end of file
From 362abbf079cb22d3e90fa54b7cffe335b1518ec0 Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Thu, 22 Apr 2021 03:55:28 +0200
Subject: [PATCH 54/56] Fix double questionmarks
---
assets/themes/hailhydrant/hailhydrant.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/assets/themes/hailhydrant/hailhydrant.json b/assets/themes/hailhydrant/hailhydrant.json
index 50ee801c76..6b025be3a4 100644
--- a/assets/themes/hailhydrant/hailhydrant.json
+++ b/assets/themes/hailhydrant/hailhydrant.json
@@ -393,7 +393,7 @@
},
{
"question": {
- "en": "How is the station operator classified??"
+ "en": "How is the station operator classified?"
},
"render": {
"en": "The operator is a(n) {operator:type} entity."
@@ -542,7 +542,7 @@
},
{
"question": {
- "en": "How is the station operator classified??"
+ "en": "How is the station operator classified?"
},
"render": {
"en": "The operator is a(n) {operator:type} entity."
From 0dec1d0f756abc62c106806c8604dcd7d66a331b Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Thu, 22 Apr 2021 13:30:00 +0200
Subject: [PATCH 55/56] Refactoring of metatagging and extrafunctions to splice
out the relation memberships, add calculatedTags and metatags into cache
---
Logic/ExtraFunction.ts | 29 +++++------
.../FeatureDuplicatorPerLayer.ts | 4 ++
Logic/FeatureSource/FeaturePipeline.ts | 2 +-
.../FeatureSource/MetaTaggingFeatureSource.ts | 3 +-
Logic/MetaTagging.ts | 29 +++++++----
Logic/Osm/ExtractRelations.ts | 3 +-
Logic/SimpleMetaTagger.ts | 10 +++-
assets/layers/slow_roads/slow_roads.json | 18 ++++---
package.json | 2 +-
scripts/generateCache.ts | 52 ++++++++++++++-----
10 files changed, 98 insertions(+), 54 deletions(-)
diff --git a/Logic/ExtraFunction.ts b/Logic/ExtraFunction.ts
index e7aae024a7..cfb4ed8eef 100644
--- a/Logic/ExtraFunction.ts
+++ b/Logic/ExtraFunction.ts
@@ -2,6 +2,7 @@ import {GeoOperations} from "./GeoOperations";
import {UIElement} from "../UI/UIElement";
import Combine from "../UI/Base/Combine";
import State from "../State";
+import {Relation} from "./Osm/ExtractRelations";
export class ExtraFunction {
@@ -40,11 +41,11 @@ Some advanced functions are available on feat as well:
"overlapWith",
"Gives a list of features from the specified layer which this feature overlaps with, the amount of overlap in m². The returned value is { feat: GeoJSONFeature, overlap: number} ",
["...layerIds - one or more layer ids of the layer from which every feature is checked for overlap)"],
- (featuresPerLayer, feat) => {
+ (params, feat) => {
return (...layerIds: string[]) => {
const result = []
for (const layerId of layerIds) {
- const otherLayer = featuresPerLayer.get(layerId);
+ const otherLayer = params.featuresPerLayer.get(layerId);
if (otherLayer === undefined) {
continue;
}
@@ -80,10 +81,10 @@ Some advanced functions are available on feat as well:
"closest",
"Given either a list of geojson features or a single layer name, gives the single object which is nearest to the feature. In the case of ways/polygons, only the centerpoint is considered.",
["list of features"],
- (featuresPerLayer, feature) => {
+ (params, feature) => {
return (features) => {
if (typeof features === "string") {
- features = featuresPerLayer.get(features)
+ features = params.featuresPerLayer.get(features)
}
let closestFeature = undefined;
let closestDistance = undefined;
@@ -118,11 +119,8 @@ Some advanced functions are available on feat as well:
"memberships",
"Gives a list of {role: string, relation: Relation}-objects, containing all the relations that this feature is part of. \n\nFor example: `_part_of_walking_routes=feat.memberships().map(r => r.relation.tags.name).join(';')`",
[],
- (featuresPerLayer, feature) => {
- return () => {
- return State.state.knownRelations.data?.get(feature.id) ?? [];
- }
-
+ (params, feature) => {
+ return () => params.relations ?? [];
}
)
@@ -130,9 +128,9 @@ Some advanced functions are available on feat as well:
private readonly _name: string;
private readonly _args: string[];
private readonly _doc: string;
- private readonly _f: (featuresPerLayer: Map, feat: any) => any;
+ private readonly _f: (params: {featuresPerLayer: Map, relations: {role: string, relation: Relation}[]}, feat: any) => any;
- constructor(name: string, doc: string, args: string[], f: ((featuresPerLayer: Map, feat: any) => any)) {
+ constructor(name: string, doc: string, args: string[], f: ((params: {featuresPerLayer: Map, relations: {role: string, relation: Relation}[]}, feat: any) => any)) {
this._name = name;
this._doc = doc;
this._args = args;
@@ -140,9 +138,9 @@ Some advanced functions are available on feat as well:
}
- public static FullPatchFeature(featuresPerLayer: Map, feature) {
+ public static FullPatchFeature(featuresPerLayer: Map,relations: {role: string, relation: Relation}[], feature) {
for (const func of ExtraFunction.allFuncs) {
- func.PatchFeature(featuresPerLayer, feature);
+ func.PatchFeature(featuresPerLayer, relations, feature);
}
}
@@ -168,7 +166,8 @@ Some advanced functions are available on feat as well:
]);
}
- public PatchFeature(featuresPerLayer: Map, feature: any) {
- feature[this._name] = this._f(featuresPerLayer, feature);
+ public PatchFeature(featuresPerLayer: Map, relations: {role: string, relation: Relation}[], feature: any) {
+
+ feature[this._name] = this._f({featuresPerLayer: featuresPerLayer, relations: relations}, feature);
}
}
\ No newline at end of file
diff --git a/Logic/FeatureSource/FeatureDuplicatorPerLayer.ts b/Logic/FeatureSource/FeatureDuplicatorPerLayer.ts
index a58534cf9e..5ca687012c 100644
--- a/Logic/FeatureSource/FeatureDuplicatorPerLayer.ts
+++ b/Logic/FeatureSource/FeatureDuplicatorPerLayer.ts
@@ -11,6 +11,10 @@ import LayerConfig from "../../Customizations/JSON/LayerConfig";
export default class FeatureDuplicatorPerLayer implements FeatureSource {
public readonly features: UIEventSource<{ feature: any; freshness: Date }[]>;
+
+ public static GetMatchingLayerId(){
+
+ }
constructor(layers: UIEventSource<{ layerDef: LayerConfig }[]>, upstream: FeatureSource) {
this.features = upstream.features.map(features => {
diff --git a/Logic/FeatureSource/FeaturePipeline.ts b/Logic/FeatureSource/FeaturePipeline.ts
index 6b48e95097..81fe3e20dc 100644
--- a/Logic/FeatureSource/FeaturePipeline.ts
+++ b/Logic/FeatureSource/FeaturePipeline.ts
@@ -35,7 +35,7 @@ export default class FeaturePipeline implements FeatureSource {
const geojsonSources: FeatureSource [] = GeoJsonSource
.ConstructMultiSource(flayers.data, locationControl)
- .map(geojsonSource => new RegisteringFeatureSource(new FeatureDuplicatorPerLayer(flayers, geojsonSource)));
+ .map(geojsonSource => new RegisteringFeatureSource(new FeatureDuplicatorPerLayer(flayers, geojsonSource)));
const amendedLocalStorageSource =
new RememberingSource(new RegisteringFeatureSource(new FeatureDuplicatorPerLayer(flayers, new LocalStorageSource(layout))
diff --git a/Logic/FeatureSource/MetaTaggingFeatureSource.ts b/Logic/FeatureSource/MetaTaggingFeatureSource.ts
index 83f91d47ae..3cc1c2877a 100644
--- a/Logic/FeatureSource/MetaTaggingFeatureSource.ts
+++ b/Logic/FeatureSource/MetaTaggingFeatureSource.ts
@@ -3,6 +3,7 @@ import {UIEventSource} from "../UIEventSource";
import State from "../../State";
import Hash from "../Web/Hash";
import MetaTagging from "../MetaTagging";
+import ExtractRelations from "../Osm/ExtractRelations";
export default class MetaTaggingFeatureSource implements FeatureSource {
features: UIEventSource<{ feature: any; freshness: Date }[]> = new UIEventSource<{feature: any; freshness: Date}[]>(undefined);
@@ -21,7 +22,7 @@ export default class MetaTaggingFeatureSource implements FeatureSource {
}
})
- MetaTagging.addMetatags(featuresFreshness, State.state.layoutToUse.data.layers);
+ MetaTagging.addMetatags(featuresFreshness, State.state.knownRelations.data, State.state.layoutToUse.data.layers);
self.features.setData(featuresFreshness);
});
}
diff --git a/Logic/MetaTagging.ts b/Logic/MetaTagging.ts
index b405947f20..1a646b26a9 100644
--- a/Logic/MetaTagging.ts
+++ b/Logic/MetaTagging.ts
@@ -1,6 +1,14 @@
import LayerConfig from "../Customizations/JSON/LayerConfig";
import SimpleMetaTagger from "./SimpleMetaTagger";
import {ExtraFunction} from "./ExtraFunction";
+import State from "../State";
+import {Relation} from "./Osm/ExtractRelations";
+
+
+interface Params {
+ featuresPerLayer: Map,
+ memberships: Map
+}
/**
* Metatagging adds various tags to the elements, e.g. lat, lon, surface area, ...
@@ -14,7 +22,8 @@ export default class MetaTagging {
* An actor which adds metatags on every feature in the given object
* The features are a list of geojson-features, with a "properties"-field and geometry
*/
- static addMetatags(features: { feature: any; freshness: Date }[], layers: LayerConfig[]) {
+ static addMetatags(features: { feature: any; freshness: Date }[],
+ relations: Map, layers: LayerConfig[]) {
for (const metatag of SimpleMetaTagger.metatags) {
try {
@@ -26,7 +35,7 @@ export default class MetaTagging {
}
// The functions - per layer - which add the new keys
- const layerFuncs = new Map, feature: any) => void)>();
+ const layerFuncs = new Map void)>();
for (const layer of layers) {
layerFuncs.set(layer.id, this.createRetaggingFunc(layer));
}
@@ -48,27 +57,26 @@ export default class MetaTagging {
if (f === undefined) {
continue;
}
-
- f(featuresPerLayer, feature.feature)
+ f({featuresPerLayer: featuresPerLayer, memberships: relations}, feature.feature)
}
}
- private static createRetaggingFunc(layer: LayerConfig): ((featuresPerLayer: Map, feature: any) => void) {
+ private static createRetaggingFunc(layer: LayerConfig):
+ ((params: Params, feature: any) => void) {
const calculatedTags: [string, string][] = layer.calculatedTags;
if (calculatedTags === undefined) {
return undefined;
}
- const functions: ((featuresPerLayer: Map, feature: any) => void)[] = [];
+ const functions: ((params: Params, feature: any) => void)[] = [];
for (const entry of calculatedTags) {
const key = entry[0]
const code = entry[1];
if (code === undefined) {
continue;
}
-
const func = new Function("feat", "return " + code + ";");
const f = (featuresPerLayer, feature: any) => {
@@ -76,16 +84,17 @@ export default class MetaTagging {
}
functions.push(f)
}
- return (featuresPerLayer: Map, feature) => {
+ return (params: Params, feature) => {
const tags = feature.properties
if (tags === undefined) {
return;
}
- ExtraFunction.FullPatchFeature(featuresPerLayer, feature);
+ const relations = params.memberships.get(feature.properties.id)
+ ExtraFunction.FullPatchFeature(params.featuresPerLayer, relations, feature);
try {
for (const f of functions) {
- f(featuresPerLayer, feature);
+ f(params, feature);
}
} catch (e) {
console.error("While calculating a tag value: ", e)
diff --git a/Logic/Osm/ExtractRelations.ts b/Logic/Osm/ExtractRelations.ts
index feeff4c947..24eefefd9e 100644
--- a/Logic/Osm/ExtractRelations.ts
+++ b/Logic/Osm/ExtractRelations.ts
@@ -17,7 +17,6 @@ export default class ExtractRelations {
public static RegisterRelations(overpassJson: any) : void{
const memberships = ExtractRelations.BuildMembershipTable(ExtractRelations.GetRelationElements(overpassJson))
- console.log("Assigned memberships: ", memberships)
State.state.knownRelations.setData(memberships)
}
@@ -40,7 +39,7 @@ export default class ExtractRelations {
* @param relations
* @constructor
*/
- private static BuildMembershipTable(relations: Relation[]): Map {
+ public static BuildMembershipTable(relations: Relation[]): Map {
const memberships = new Map()
for (const relation of relations) {
diff --git a/Logic/SimpleMetaTagger.ts b/Logic/SimpleMetaTagger.ts
index 833566e802..6b1acd4831 100644
--- a/Logic/SimpleMetaTagger.ts
+++ b/Logic/SimpleMetaTagger.ts
@@ -9,6 +9,7 @@ import {UIElement} from "../UI/UIElement";
import Combine from "../UI/Base/Combine";
import UpdateTagsFromOsmAPI from "./Actors/UpdateTagsFromOsmAPI";
+
export default class SimpleMetaTagger {
public readonly keys: string[];
public readonly doc: string;
@@ -89,7 +90,12 @@ export default class SimpleMetaTagger {
["_isOpen", "_isOpen:description"],
"If 'opening_hours' is present, it will add the current state of the feature (being 'yes' or 'no')",
(feature => {
-
+ if(Utils.runningFromConsole){
+ // We are running from console, thus probably creating a cache
+ // isOpen is irrelevant
+ return
+ }
+
const tagsSource = State.state.allElements.getEventSourceById(feature.properties.id);
tagsSource.addCallbackAndRun(tags => {
if (tags.opening_hours === undefined || tags._country === undefined) {
@@ -317,7 +323,7 @@ export default class SimpleMetaTagger {
];
static GetCountryCodeFor(lon: number, lat: number, callback: (country: string) => void) {
- SimpleMetaTagger.coder.GetCountryCodeFor(lon, lat, callback)
+ SimpleMetaTagger.coder?.GetCountryCodeFor(lon, lat, callback)
}
static HelpText(): UIElement {
diff --git a/assets/layers/slow_roads/slow_roads.json b/assets/layers/slow_roads/slow_roads.json
index 1c72ea0bf9..2d84c1fcc7 100644
--- a/assets/layers/slow_roads/slow_roads.json
+++ b/assets/layers/slow_roads/slow_roads.json
@@ -159,32 +159,34 @@
"width": {
"render": "4"
},
- "dashArray": "2 10 6 10",
- "color": {
- "render": "#bb2",
+ "dashArray": {
+ "render": "",
"mappings": [
{
"if": "highway=cycleway",
- "then": "#00c"
+ "then": ""
},
{
"if": "highway=path",
- "then": "#bb2"
+ "then": "10 3"
},
{
"if": "highway=footway",
- "then": "#c30"
+ "then": "10 10"
},
{
"if": "highway=pedestrian",
- "then": "#3c3"
+ "then": "10 10"
},
{
"if": "highway=living_street",
- "then": "#ccc"
+ "then": "10 5 3 5"
}
]
},
+ "color": {
+ "render": "#eaba2a"
+ },
"presets": [
]
}
\ No newline at end of file
diff --git a/package.json b/package.json
index cc5cf14474..e41d84459c 100644
--- a/package.json
+++ b/package.json
@@ -15,7 +15,7 @@
"generate:translations": "ts-node scripts/generateTranslations.ts",
"generate:layouts": "ts-node scripts/generateLayouts.ts",
"generate:docs": "ts-node scripts/generateDocs.ts && ts-node scripts/generateTaginfoProjectFiles.ts",
- "generate:cache:speelplekken": "ts-node scripts/generateCache.ts speelplekken 14 ./cache/speelplekken 51.2003 4.3925 51.1058 4.5087",
+ "generate:cache:speelplekken": "ts-node scripts/generateCache.ts speelplekken 14 ../pietervdvn.github.io/speelplekken_cache/ 51.20 4.37 51.11 4.51",
"generate:layeroverview": "ts-node scripts/generateLayerOverview.ts --no-fail",
"generate:licenses": "ts-node scripts/generateLicenseInfo.ts --no-fail",
"validate:layeroverview": "ts-node scripts/generateLayerOverview.ts --report",
diff --git a/scripts/generateCache.ts b/scripts/generateCache.ts
index a41d67dd29..f81d124c0b 100644
--- a/scripts/generateCache.ts
+++ b/scripts/generateCache.ts
@@ -14,6 +14,8 @@ import ScriptUtils from "./ScriptUtils";
import ExtractRelations from "../Logic/Osm/ExtractRelations";
import * as OsmToGeoJson from "osmtogeojson";
import {Script} from "vm";
+import MetaTagging from "../Logic/MetaTagging";
+import State from "../State";
function createOverpassObject(theme: LayoutConfig) {
let filters: TagsFilter[] = [];
@@ -26,8 +28,8 @@ function createOverpassObject(theme: LayoutConfig) {
continue;
}
if (layer.source.geojsonSource !== undefined) {
- // Not our responsibility to download this layer!
- continue;
+ // We download these anyway - we are building the cache after all!
+ //continue;
}
@@ -68,17 +70,17 @@ function metaJsonName(targetDir: string, x: number, y: number, z: number): strin
return targetDir + "_" + z + "_" + x + "_" + y + ".meta.json"
}
-async function downloadRaw(targetdir: string, r: TileRange, overpass: Overpass) {
+async function downloadRaw(targetdir: string, r: TileRange, overpass: Overpass) {
let downloaded = 0
for (let x = r.xstart; x <= r.xend; x++) {
for (let y = r.ystart; y <= r.yend; y++) {
- console.log("x:", (x - r.xstart), "/", (r.xend - r.xstart), "; y:", (y - r.ystart), "/", (r.yend - r.ystart), "; total: ", downloaded, "/", r.total)
downloaded++;
const filename = rawJsonName(targetdir, x, y, r.zoomlevel)
if (existsSync(filename)) {
console.log("Already exists: ", filename)
continue;
}
+ console.log("x:", (x - r.xstart), "/", (r.xend - r.xstart), "; y:", (y - r.ystart), "/", (r.yend - r.ystart), "; total: ", downloaded, "/", r.total)
const boundsArr = Utils.tile_bounds(r.zoomlevel, x, y)
const bounds = {
@@ -87,28 +89,35 @@ async function downloadRaw(targetdir: string, r: TileRange, overpass: Overpass)
east: Math.max(boundsArr[0][1], boundsArr[1][1]),
west: Math.min(boundsArr[0][1], boundsArr[1][1])
}
- console.log("Downloading tile", r.zoomlevel, x, y, "with bounds", bounds)
const url = overpass.buildQuery("[bbox:" + bounds.south + "," + bounds.west + "," + bounds.north + "," + bounds.east + "]")
+ let gotResponse = false
ScriptUtils.DownloadJSON(url,
chunks => {
+ gotResponse = true;
saveResponse(chunks, filename)
})
- await ScriptUtils.sleep(10000)
- console.debug("Waking up")
+ while (!gotResponse) {
+ await ScriptUtils.sleep(10000)
+ console.debug("Waking up")
+ if (!gotResponse) {
+ console.log("Didn't get an answer yet - waiting more")
+ }
+ }
+
}
}
}
-async function postProcess(targetdir: string, r: TileRange) {
+async function postProcess(targetdir: string, r: TileRange, theme: LayoutConfig) {
let processed = 0;
for (let x = r.xstart; x <= r.xend; x++) {
for (let y = r.ystart; y <= r.yend; y++) {
processed++;
const filename = rawJsonName(targetdir, x, y, r.zoomlevel)
- console.log(" Post processing", processed, "/",r. total, filename)
+ console.log(" Post processing", processed, "/", r.total, filename)
if (!existsSync(filename)) {
throw "Not found - and not downloaded. Run this script again!: " + filename
}
@@ -118,11 +127,26 @@ async function postProcess(targetdir: string, r: TileRange) {
// Create and save the geojson file - which is the main chunk of the data
const geojson = OsmToGeoJson.default(rawOsm);
+ const osmTime = new Date(rawOsm.osm3s.timestamp_osm_base);
+
+ for (const feature of geojson.features) {
+
+ for (const layer of theme.layers) {
+ if (layer.source.osmTags.matchesProperties(feature.properties)) {
+ feature["_matching_layer_id"] = layer.id;
+ break;
+ }
+ }
+ }
+ const featuresFreshness = geojson.features.map(feature => ({
+ freshness: osmTime,
+ feature: feature
+ }));
+ // Extract the relationship information
+ const relations = ExtractRelations.BuildMembershipTable(ExtractRelations.GetRelationElements(rawOsm))
+ MetaTagging.addMetatags(featuresFreshness, relations, theme.layers);
writeFileSync(geoJsonName(targetdir, x, y, r.zoomlevel), JSON.stringify(geojson))
- // Extract the relationship information
- const relations = ExtractRelations.GetRelationElements(rawOsm)
- const osmTime = new Date(rawOsm.osm3s.timestamp_osm_base);
const meta = {
freshness: osmTime,
@@ -145,7 +169,7 @@ async function main(args: string[]) {
}
const themeName = args[0]
const zoomlevel = Number(args[1])
- const targetdir = args[2]
+ const targetdir = args[2] + "/" + themeName
const lat0 = Number(args[3])
const lon0 = Number(args[4])
const lat1 = Number(args[5])
@@ -167,7 +191,7 @@ async function main(args: string[]) {
await downloadRaw(targetdir, tileRange, overpass)
- await postProcess(targetdir, tileRange)
+ await postProcess(targetdir, tileRange, theme)
}
From b8f46f6b54159956790609567334349c983f6387 Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Thu, 22 Apr 2021 16:01:43 +0200
Subject: [PATCH 56/56] Small improvements to caching script
---
scripts/generateCache.ts | 39 ++++++++++++++++++++++++++++++++-------
1 file changed, 32 insertions(+), 7 deletions(-)
diff --git a/scripts/generateCache.ts b/scripts/generateCache.ts
index f81d124c0b..7e626e4f59 100644
--- a/scripts/generateCache.ts
+++ b/scripts/generateCache.ts
@@ -16,6 +16,8 @@ import * as OsmToGeoJson from "osmtogeojson";
import {Script} from "vm";
import MetaTagging from "../Logic/MetaTagging";
import State from "../State";
+import {createEvalAwarePartialHost} from "ts-node/dist/repl";
+import {fail} from "assert";
function createOverpassObject(theme: LayoutConfig) {
let filters: TagsFilter[] = [];
@@ -48,14 +50,15 @@ function createOverpassObject(theme: LayoutConfig) {
return new Overpass(new Or(filters), extraScripts);
}
-function saveResponse(chunks: string[], targetDir: string) {
+function saveResponse(chunks: string[], targetDir: string): boolean {
const contents = chunks.join("")
if (contents.startsWith(" {
gotResponse = true;
- saveResponse(chunks, filename)
+ success = saveResponse(chunks, filename)
})
while (!gotResponse) {
@@ -105,10 +112,21 @@ async function downloadRaw(targetdir: string, r: TileRange, overpass: Overpass)
console.log("Didn't get an answer yet - waiting more")
}
}
+
+ if(!success){
+ failed++;
+ console.log("Hit the rate limit - waiting 90s")
+ for (let i = 0; i < 90; i++) {
+ console.log(90 - i)
+ await ScriptUtils.sleep(1000)
+ }
+ }
}
}
+
+ return {failed: failed, skipped: skipped}
}
async function postProcess(targetdir: string, r: TileRange, theme: LayoutConfig) {
@@ -189,8 +207,15 @@ async function main(args: string[]) {
const overpass = createOverpassObject(theme)
+ let failed = 0;
+ do {
+ const cachingResult = await downloadRaw(targetdir, tileRange, overpass)
+ failed = cachingResult.failed
+ if (failed > 0) {
+ ScriptUtils.sleep(30000)
+ }
+ } while (failed > 0)
- await downloadRaw(targetdir, tileRange, overpass)
await postProcess(targetdir, tileRange, theme)
}