diff --git a/Logic/BBox.ts b/Logic/BBox.ts
index 1aa9d08827..aa8e699356 100644
--- a/Logic/BBox.ts
+++ b/Logic/BBox.ts
@@ -209,9 +209,9 @@ export class BBox {
}
- private check() {
+ private check() {
if (isNaN(this.maxLon) || isNaN(this.maxLat) || isNaN(this.minLon) || isNaN(this.minLat)) {
- console.log(this);
+ console.trace("BBox with NaN detected:", this);
throw "BBOX has NAN";
}
}
diff --git a/Models/Constants.ts b/Models/Constants.ts
index a8bec17f01..3675cdcb6e 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.16.1";
+ public static vNumber = "0.16.2";
public static ImgurApiKey = '7070e7167f0a25a'
public static readonly mapillary_client_token_v4 = "MLY|4441509239301885|b40ad2d3ea105435bd40c7e76993ae85"
diff --git a/UI/Popup/ImportButton.ts b/UI/Popup/ImportButton.ts
index 3f956c3f0d..f6f5337aa7 100644
--- a/UI/Popup/ImportButton.ts
+++ b/UI/Popup/ImportButton.ts
@@ -41,6 +41,7 @@ import {AutoAction} from "./AutoApplyButton";
import LayoutConfig from "../../Models/ThemeConfig/LayoutConfig";
import {Changes} from "../../Logic/Osm/Changes";
import {ElementStorage} from "../../Logic/ElementStorage";
+import Hash from "../../Logic/Web/Hash";
/**
* A helper class for the various import-flows.
@@ -268,8 +269,8 @@ ${Utils.special_visualizations_importRequirementDocs}
originalFeatureTags.data["_imported"] = "yes"
originalFeatureTags.ping() // will set isImported as per its definition
state.changes.applyAction(action)
- state.selectedElement.setData(state.allElements.ContainingFeatures.get(action.newElementId ?? action.mainObjectId))
-
+ const newId = action.newElementId ?? action.mainObjectId
+ state.selectedElement.setData(state.allElements.ContainingFeatures.get(newId))
}
})
@@ -503,14 +504,23 @@ export class ImportWayButton extends AbstractImportButton implements AutoAction
mergeConfigs,
"import"
)
- } else {
-
+ } else if(feature.geometry.type === "Polygon"){
+ const outer = coors[0]
+ return new CreateWayWithPointReuseAction(
+ args.newTags.data,
+ outer,
+ state,
+ mergeConfigs
+ )
+ }else if(feature.geometry.type === "LineString"){
return new CreateWayWithPointReuseAction(
args.newTags.data,
coors,
state,
mergeConfigs
)
+ }else{
+ throw "Unsupported type"
}
}
}
@@ -572,6 +582,8 @@ export class ImportPointButton extends AbstractImportButton {
state.selectedElement.setData(state.allElements.ContainingFeatures.get(
newElementAction.newElementId
))
+ Hash.hash.setData(newElementAction.newElementId)
+
if (note_id !== undefined) {
state.osmConnection.closeNote(note_id, "imported")
originalFeatureTags.data["closed_at"] = new Date().toISOString()
diff --git a/assets/layers/charging_station/charging_station.json b/assets/layers/charging_station/charging_station.json
index bb90ac136c..edcbd3669d 100644
--- a/assets/layers/charging_station/charging_station.json
+++ b/assets/layers/charging_station/charging_station.json
@@ -1284,7 +1284,7 @@
},
"render": {
"en": "There are {socket:tesla_destination} plugs of type
Tesla supercharger (destination) (A Type 2 with cable branded as tesla) 
available here",
- "nl": "Hier zijn {socket:tesla_destination} stekkers van het type Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo) 
"
+ "nl": "Hier zijn {socket:tesla_destination} stekkers van het type Tesla supercharger (destination) (Een Type 2 met kabel en Tesla-logo) 
"
},
"freeform": {
"key": "socket:tesla_destination",
@@ -2933,11 +2933,11 @@
"group": "technical",
"question": {
"en": "What voltage do the plugs with Tesla supercharger (destination) (A Type 2 with cable branded as tesla) 
offer?",
- "nl": "Welke spanning levert de stekker van type Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo) 
"
+ "nl": "Welke spanning levert de stekker van type Tesla supercharger (destination). (Een Type 2 met kabel en Tesla-logo) 
?"
},
"render": {
"en": "Tesla supercharger (destination) (A Type 2 with cable branded as tesla) 
outputs {socket:tesla_destination:voltage} volt",
- "nl": "Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo) 
heeft een spanning van {socket:tesla_destination:voltage} volt"
+ "nl": "Tesla supercharger (destination). (Een Type 2 met kabel en Tesla-logo) 
heeft een spanning van {socket:tesla_destination:voltage} volt"
},
"freeform": {
"key": "socket:tesla_destination:voltage",
@@ -3025,11 +3025,11 @@
"group": "technical",
"question": {
"en": "What power output does a single plug of type Tesla supercharger (destination) (A Type 2 with cable branded as tesla) 
offer?",
- "nl": "Welk vermogen levert een enkele stekker van type Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo) 
?"
+ "nl": "Welk vermogen levert een enkele stekker van type Tesla supercharger (destination) (Een Type 2 met kabel en Tesla-logo) 
?"
},
"render": {
"en": "Tesla supercharger (destination) (A Type 2 with cable branded as tesla) 
outputs at most {socket:tesla_destination:output}",
- "nl": "Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo) 
levert een vermogen van maximaal {socket:tesla_destination:output}"
+ "nl": "Tesla supercharger (destination) (Een Type 2 met kabel en Tesla-logo) 
levert een vermogen van maximaal {socket:tesla_destination:output}"
},
"freeform": {
"key": "socket:tesla_destination:output",
diff --git a/assets/layers/entrance/entrance.json b/assets/layers/entrance/entrance.json
index 8b2b0b2d49..57782545f6 100644
--- a/assets/layers/entrance/entrance.json
+++ b/assets/layers/entrance/entrance.json
@@ -19,7 +19,8 @@
"minzoom": 14,
"title": {
"render": {
- "en": "Entrance"
+ "en": "Entrance",
+ "nl": "Ingang"
}
},
"tagRenderings": [
diff --git a/assets/layers/etymology/etymology.json b/assets/layers/etymology/etymology.json
index 46d8a22ba7..7e7c5d0eae 100644
--- a/assets/layers/etymology/etymology.json
+++ b/assets/layers/etymology/etymology.json
@@ -139,14 +139,16 @@
{
"id": "etymology_multi_apply",
"render": {
- "en": "{multi_apply(_same_name_ids, name:etymology:wikidata;name:etymology, Auto-applying data on all segments with the same name, true)}"
+ "en": "{multi_apply(_same_name_ids, name:etymology:wikidata;name:etymology, Auto-applying data on all segments with the same name, true)}",
+ "nl": "{multi_apply(_same_name_ids, name:etymology:wikidata,name:etymology, Wijzigingen worden automatisch gedaan op alle segmenten met dezelfde naam, true)}"
}
},
{
"id": "wikipedia",
"#": "Note that this is a _read_only_ option, to prevent people entering a 'wikidata'-link instead of 'name:etymology:wikidata'",
"render": {
- "en": "A Wikipedia article about this street exists:
{wikipedia():max-height:25rem}"
+ "en": "A Wikipedia article about this street exists:
{wikipedia():max-height:25rem}",
+ "nl": "Een Wikipedia artikel over deze straat bestaat:
{wikipedia():max-height:25rem}"
},
"condition": "wikidata~*"
}
diff --git a/assets/layers/extinguisher/extinguisher.json b/assets/layers/extinguisher/extinguisher.json
index 61a010cc32..78fca98483 100644
--- a/assets/layers/extinguisher/extinguisher.json
+++ b/assets/layers/extinguisher/extinguisher.json
@@ -7,7 +7,8 @@
"ru": "Карта огнетушителей.",
"fr": "Couche des extincteurs.",
"de": "Karte mit Feuerlöschern.",
- "it": "Cartina degli estintori."
+ "it": "Cartina degli estintori.",
+ "nl": "Kaart van brandblussers."
},
"minzoom": 14,
"source": {
@@ -25,18 +26,20 @@
"nb_NO": "Brannslokkere",
"fr": "Exctincteurs",
"de": "Feuerlöscher",
- "it": "Estintori"
+ "it": "Estintori",
+ "nl": "Brandblussers"
}
},
"description": {
- "en": "Map layer to show fire hydrants.",
+ "en": "Map layer to show fire extinguishers.",
"ja": "消火栓を表示するマップレイヤ。",
"zh_Hant": "顯示消防栓的地圖圖層。",
"nb_NO": "Kartlag for å vise brannslokkere.",
"ru": "Слой карты, отображающий огнетушители.",
"fr": "Couche des lances à incendie.",
"de": "Kartenebene zur Anzeige von Hydranten.",
- "it": "Livello della mappa che mostra gli idranti antincendio."
+ "it": "Livello della mappa che mostra gli idranti antincendio.",
+ "nl": "Kaartlaag met brandblussers."
},
"tagRenderings": [
{
@@ -48,7 +51,8 @@
"fr": "Emplacement : {location}",
"de": "Standort: {location}",
"eo": "Loko: {location}",
- "it": "Posizione: {location}"
+ "it": "Posizione: {location}",
+ "nl": "Locatie: {location}"
},
"question": {
"en": "Where is it positioned?",
@@ -108,7 +112,8 @@
"ru": "Огнетушитель",
"fr": "Extincteur",
"de": "Feuerlöscher",
- "it": "Estintore"
+ "it": "Estintore",
+ "nl": "Brandblusser"
},
"description": {
"en": "A fire extinguisher is a small, portable device used to stop a fire",
@@ -116,7 +121,8 @@
"ru": "Огнетушитель - небольшое переносное устройство для тушения огня",
"fr": "Un extincteur est un appareil portatif servant à éteindre un feu",
"de": "Ein Feuerlöscher ist ein kleines, tragbares Gerät, das dazu dient, ein Feuer zu löschen",
- "it": "Un estintore è un dispositivo portatile di piccole dimensioni usato per spegnere un incendio"
+ "it": "Un estintore è un dispositivo portatile di piccole dimensioni usato per spegnere un incendio",
+ "nl": "Een brandblusser is een klein, draagbaar apparaat om een brand te blussen"
}
}
],
diff --git a/assets/layers/hydrant/hydrant.json b/assets/layers/hydrant/hydrant.json
index af931bc9bd..b5b6c83054 100644
--- a/assets/layers/hydrant/hydrant.json
+++ b/assets/layers/hydrant/hydrant.json
@@ -8,7 +8,8 @@
"ru": "Карта пожарных гидрантов",
"fr": "Carte des bornes incendie",
"de": "Karte der Hydranten",
- "it": "Mappa degli idranti"
+ "it": "Mappa degli idranti",
+ "nl": "Kaart van brandkranen"
},
"minzoom": 14,
"source": {
@@ -37,7 +38,8 @@
"ru": "Слой карты, отображающий пожарные гидранты.",
"fr": "Couche des bornes incendie.",
"de": "Kartenebene zur Anzeige von Hydranten.",
- "it": "Livello della mappa che mostra gli idranti antincendio."
+ "it": "Livello della mappa che mostra gli idranti antincendio.",
+ "nl": "Kaartlaag met brandkranen."
},
"tagRenderings": [
{
diff --git a/assets/themes/buurtnatuur/buurtnatuur.json b/assets/themes/buurtnatuur/buurtnatuur.json
index 991654c461..97526b843c 100644
--- a/assets/themes/buurtnatuur/buurtnatuur.json
+++ b/assets/themes/buurtnatuur/buurtnatuur.json
@@ -504,9 +504,9 @@
]
},
"then": {
- "nl": "Dit gebied wordt beheerd door Natuurpunt",
- "icon": "./assets/themes/buurtnatuur/Natuurpunt.jpg"
- }
+ "nl": "Dit gebied wordt beheerd door Natuurpunt"
+ },
+ "icon": "./assets/themes/buurtnatuur/Natuurpunt.jpg"
},
{
"if": {
@@ -515,9 +515,9 @@
]
},
"then": {
- "nl": "Dit gebied wordt beheerd door {operator}",
- "icon": "./assets/themes/buurtnatuur/Natuurpunt.jpg"
+ "nl": "Dit gebied wordt beheerd door {operator}"
},
+ "icon": "./assets/themes/buurtnatuur/Natuurpunt.jpg",
"hideInAnswer": true
},
{
@@ -527,9 +527,9 @@
]
},
"then": {
- "nl": "Dit gebied wordt beheerd door het Agentschap Natuur en Bos",
- "icon": "./assets/themes/buurtnatuur/ANB.jpg"
- }
+ "nl": "Dit gebied wordt beheerd door het Agentschap Natuur en Bos"
+ },
+ "icon": "./assets/themes/buurtnatuur/ANB.jpg"
},
{
"if": {
diff --git a/langs/layers/en.json b/langs/layers/en.json
index ac5a293261..0cae77363c 100644
--- a/langs/layers/en.json
+++ b/langs/layers/en.json
@@ -3059,7 +3059,7 @@
}
},
"extinguisher": {
- "description": "Map layer to show fire hydrants.",
+ "description": "Map layer to show fire extinguishers.",
"name": "Map of fire extinguishers.",
"presets": {
"0": {
diff --git a/langs/layers/nl.json b/langs/layers/nl.json
index 58d377dd0c..52b62bafe4 100644
--- a/langs/layers/nl.json
+++ b/langs/layers/nl.json
@@ -1823,7 +1823,7 @@
},
"plugs-12": {
"question": "Hoeveel stekkers van type Tesla supercharger (destination) (Een Type 2 met kabel en Tesla-logo) 
heeft dit oplaadpunt?",
- "render": "Hier zijn {socket:tesla_destination} stekkers van het type Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo) 
"
+ "render": "Hier zijn {socket:tesla_destination} stekkers van het type Tesla supercharger (destination) (Een Type 2 met kabel en Tesla-logo) 
"
},
"plugs-13": {
"question": "Hoeveel stekkers van type USB om GSMs en kleine electronica op te laden 
heeft dit oplaadpunt?",
@@ -1923,8 +1923,8 @@
"then": "Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo) levert een vermogen van maximaal 22 kw A"
}
},
- "question": "Welk vermogen levert een enkele stekker van type Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo) 
?",
- "render": "Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo) 
levert een vermogen van maximaal {socket:tesla_destination:output}"
+ "question": "Welk vermogen levert een enkele stekker van type Tesla supercharger (destination) (Een Type 2 met kabel en Tesla-logo) 
?",
+ "render": "Tesla supercharger (destination) (Een Type 2 met kabel en Tesla-logo) 
levert een vermogen van maximaal {socket:tesla_destination:output}"
},
"power-output-13": {
"mappings": {
@@ -2106,8 +2106,8 @@
"then": "Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo) heeft een spanning van 400 volt"
}
},
- "question": "Welke spanning levert de stekker van type Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo) 
",
- "render": "Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo) 
heeft een spanning van {socket:tesla_destination:voltage} volt"
+ "question": "Welke spanning levert de stekker van type Tesla supercharger (destination). (Een Type 2 met kabel en Tesla-logo) 
?",
+ "render": "Tesla supercharger (destination). (Een Type 2 met kabel en Tesla-logo) 
heeft een spanning van {socket:tesla_destination:voltage} volt"
},
"voltage-13": {
"mappings": {
@@ -3037,12 +3037,18 @@
"width": {
"question": "Wat is de breedte van deze deur/toegang?"
}
+ },
+ "title": {
+ "render": "Ingang"
}
},
"etymology": {
"description": "Alle lagen met een gelinkt etymology",
"name": "Heeft etymology info",
"tagRenderings": {
+ "etymology_multi_apply": {
+ "render": "{multi_apply(_same_name_ids, name:etymology:wikidata,name:etymology, Wijzigingen worden automatisch gedaan op alle segmenten met dezelfde naam, true)}"
+ },
"simple etymology": {
"mappings": {
"0": {
@@ -3055,6 +3061,9 @@
"street-name-sign-image": {
"render": "{image_carousel(image:streetsign)}
{image_upload(image:streetsign, Voeg afbeelding van straatnaambordje toe)}"
},
+ "wikipedia": {
+ "render": "Een Wikipedia artikel over deze straat bestaat:
{wikipedia():max-height:25rem}"
+ },
"wikipedia-etymology": {
"question": "Wat is het Wikidata-item van hetgeen dit object is naar vernoemd?",
"render": "Wikipedia artikel van de naamgever
{wikipedia(name:etymology:wikidata):max-height:20rem}"
@@ -3064,6 +3073,24 @@
}
}
},
+ "extinguisher": {
+ "description": "Kaartlaag met brandblussers.",
+ "name": "Kaart van brandblussers.",
+ "presets": {
+ "0": {
+ "description": "Een brandblusser is een klein, draagbaar apparaat om een brand te blussen",
+ "title": "Brandblusser"
+ }
+ },
+ "tagRenderings": {
+ "extinguisher-location": {
+ "render": "Locatie: {location}"
+ }
+ },
+ "title": {
+ "render": "Brandblussers"
+ }
+ },
"food": {
"filter": {
"0": {
@@ -3372,6 +3399,10 @@
"render": "Speelweide in een park"
}
},
+ "hydrant": {
+ "description": "Kaartlaag met brandkranen.",
+ "name": "Kaart van brandkranen"
+ },
"information_board": {
"description": "Deze laag toont informatieborden in de publieke ruimte die uitleg geven over een bezienswaardigheid (bv. uitleg over het landschap, een ruine, een kaart van de omgeving, ...)",
"name": "Informatieborden",
diff --git a/langs/nl.json b/langs/nl.json
index 28f22cb21c..ce59b8a584 100644
--- a/langs/nl.json
+++ b/langs/nl.json
@@ -294,6 +294,9 @@
"uploadingPicture": "Bezig met een foto te uploaden…",
"willBePublished": "Jouw foto wordt gepubliceerd "
},
+ "importHelper": {
+ "allAttributesSame": "Alle kaart-objecten om te importeren hebben deze tag"
+ },
"importLayer": {
"alreadyMapped": "Er staat hier reeds een {title} op de kaart; dit punt is een duplicaat. Verwijder deze van de kaart",
"description": "Deze laag toont kaart-nota's die wijzen op een {title}",
diff --git a/langs/themes/icon.json b/langs/themes/icon.json
deleted file mode 100644
index 9544aaac93..0000000000
--- a/langs/themes/icon.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "buurtnatuur": {
- "overrideAll": {
- "tagRenderings+": {
- "1": {
- "mappings": {
- "1": {
- "then": "./assets/themes/buurtnatuur/Natuurpunt.jpg"
- },
- "2": {
- "then": "./assets/themes/buurtnatuur/Natuurpunt.jpg"
- },
- "3": {
- "then": "./assets/themes/buurtnatuur/ANB.jpg"
- }
- }
- }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/scripts/build.sh b/scripts/build.sh
index a983fce246..24dfd9e39c 100755
--- a/scripts/build.sh
+++ b/scripts/build.sh
@@ -11,8 +11,9 @@ mkdir dist/assets 2> /dev/null
# This script ends every line with '&&' to chain everything. A failure will thus stop the build
npm run generate:editor-layer-index
npm run generate &&
+npm run generate:layeroverview && # generate:layeroverview has to be run twice: the personal theme won't pick up all the layers otherwise
npm run test &&
-npm run generate:layouts
+npm run generate:layouts
if [ $? -ne 0 ]; then
echo "ERROR - stopping the build"