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"