Housekeeping...

This commit is contained in:
Pieter Vander Vennet 2022-12-16 13:44:25 +01:00
parent 339bfab361
commit 9e000d521f
35 changed files with 406 additions and 136 deletions

View file

@ -75,6 +75,8 @@ This tagrendering has no question and is thus read-only
This tagrendering is only visible in the popup if the following condition is met: `name~.+`
### brand

View file

@ -30,6 +30,7 @@ Available languages:
- en
- de
- nl
This document is autogenerated from [assets/themes/blind_osm/blind_osm.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/blind_osm/blind_osm.json)

View file

@ -25,6 +25,7 @@ Available languages:
- en
- de
- nl
This document is autogenerated from [assets/themes/osm_community_index/osm_community_index.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/osm_community_index/osm_community_index.json)

View file

@ -157,7 +157,7 @@
{{service_item
|name= [https://mapcomplete.osm.be/blind_osm blind_osm]
|region= Worldwide
|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:_context|en}}
|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:nl|en}}, {{#language:_context|en}}
|descr= A MapComplete theme: Help to map features relevant for the blind
|material= {{yes|[https://mapcomplete.osm.be/ Yes]}}
|image= MapComplete_Screenshot.png
@ -364,7 +364,7 @@
{{service_item
|name= [https://mapcomplete.osm.be/osm_community_index osm_community_index]
|region= Worldwide
|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:_context|en}}
|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:nl|en}}, {{#language:_context|en}}
|descr= A MapComplete theme: An index of community resources for OpenStreetMap.
|material= {{yes|[https://mapcomplete.osm.be/ Yes]}}
|image= MapComplete_Screenshot.png

View file

@ -12,7 +12,7 @@ import Toggle from "./Input/Toggle"
import { SubtleButton } from "./Base/SubtleButton"
import { VariableUiElement } from "./Base/VariableUIElement"
import Svg from "../Svg"
import {ImportViewerLinks} from "./BigComponents/UserInformation";
import { ImportViewerLinks } from "./BigComponents/UserInformation"
export default class AllThemesGui {
setup() {
@ -36,7 +36,9 @@ export default class AllThemesGui {
.onClick(() => state.osmConnection.AttemptLogin()),
state.osmConnection.isLoggedIn
),
new ImportViewerLinks(state.osmConnection).SetClass("p-4 border-2 border-gray-500 m-4 block"),
new ImportViewerLinks(state.osmConnection).SetClass(
"p-4 border-2 border-gray-500 m-4 block"
),
Translations.t.general.aboutMapcomplete
.Subs({ osmcha_link: Utils.OsmChaLinkFor(7) })
.SetClass("link-underline"),

View file

@ -3,7 +3,7 @@
*
* Assumes a read-only configuration, so it has no 'ListenTo'
*/
import {Utils} from "../Utils";
import { Utils } from "../Utils"
export default abstract class BaseUIElement {
protected _constructedHtmlElement: HTMLElement
@ -43,32 +43,32 @@ export default abstract class BaseUIElement {
this._constructedHtmlElement?.scrollTo(0, 0)
}
public ScrollIntoView(options?: {
onlyIfPartiallyHidden?: boolean
}) {
if(this._constructedHtmlElement === undefined){
public ScrollIntoView(options?: { onlyIfPartiallyHidden?: boolean }) {
if (this._constructedHtmlElement === undefined) {
return
}
let alignToTop = true;
if(options?.onlyIfPartiallyHidden){
let alignToTop = true
if (options?.onlyIfPartiallyHidden) {
// Is the element completely in the view?
const parentRect = Utils.findParentWithScrolling(this._constructedHtmlElement.parentElement).getBoundingClientRect();
const elementRect = this._constructedHtmlElement.getBoundingClientRect();
const parentRect = Utils.findParentWithScrolling(
this._constructedHtmlElement.parentElement
).getBoundingClientRect()
const elementRect = this._constructedHtmlElement.getBoundingClientRect()
// Check if the element is within the vertical bounds of the parent element
const topIsVisible = elementRect.top >= parentRect.top
const bottomIsVisible = elementRect.bottom <= parentRect.bottom
const inView = topIsVisible && bottomIsVisible ;
if(inView){
const inView = topIsVisible && bottomIsVisible
if (inView) {
return
}
if(topIsVisible){
if (topIsVisible) {
alignToTop = false
}
}
this._constructedHtmlElement?.scrollIntoView({
behavior: "smooth",
block: "start"
block: "start",
})
}
/**

View file

@ -1,7 +1,7 @@
import FeaturePipelineState from "../Logic/State/FeaturePipelineState"
import State from "../State"
import {Utils} from "../Utils"
import {UIEventSource} from "../Logic/UIEventSource"
import { Utils } from "../Utils"
import { UIEventSource } from "../Logic/UIEventSource"
import FullWelcomePaneWithTabs from "./BigComponents/FullWelcomePaneWithTabs"
import MapControlButton from "./MapControlButton"
import Svg from "../Svg"
@ -16,7 +16,7 @@ import ScrollableFullScreen from "./Base/ScrollableFullScreen"
import Translations from "./i18n/Translations"
import SimpleAddUI from "./BigComponents/SimpleAddUI"
import StrayClickHandler from "../Logic/Actors/StrayClickHandler"
import {DefaultGuiState} from "./DefaultGuiState"
import { DefaultGuiState } from "./DefaultGuiState"
import LayerConfig from "../Models/ThemeConfig/LayerConfig"
import * as home_location_json from "../assets/layers/home_location/home_location.json"
import NewNoteUi from "./Popup/NewNoteUi"
@ -24,11 +24,11 @@ import Combine from "./Base/Combine"
import AddNewMarker from "./BigComponents/AddNewMarker"
import FilteredLayer from "../Models/FilteredLayer"
import ExtraLinkButton from "./BigComponents/ExtraLinkButton"
import {VariableUiElement} from "./Base/VariableUIElement";
import Img from "./Base/Img";
import UserInformationPanel from "./BigComponents/UserInformation";
import {LoginToggle} from "./Popup/LoginButton";
import {FixedUiElement} from "./Base/FixedUiElement";
import { VariableUiElement } from "./Base/VariableUIElement"
import Img from "./Base/Img"
import UserInformationPanel from "./BigComponents/UserInformation"
import { LoginToggle } from "./Popup/LoginButton"
import { FixedUiElement } from "./Base/FixedUiElement"
/**
* The default MapComplete GUI initializer
@ -127,7 +127,7 @@ export default class DefaultGUI {
addNewPoint,
hasPresets ? new AddNewMarker(state.filteredLayers) : noteMarker
)
state.LastClickLocation.addCallbackAndRunD(_ => {
state.LastClickLocation.addCallbackAndRunD((_) => {
ScrollableFullScreen.collapse()
})
}
@ -167,7 +167,7 @@ export default class DefaultGUI {
leafletMap: state.leafletMap,
layerToShow: selectedElement.layerDef,
features: state.selectedElementsLayer,
state
state,
})
state.leafletMap.addCallbackAndRunD((_) => {
@ -185,34 +185,36 @@ export default class DefaultGUI {
const self = this
new Combine([
Toggle.If(state.featureSwitchUserbadge, () => {
const userInfo = new UserInformationPanel(state)
const mapControl = new MapControlButton(
new VariableUiElement(state.osmConnection.userDetails.map(ud => {
new VariableUiElement(
state.osmConnection.userDetails.map((ud) => {
if (ud?.img === undefined) {
return Svg.person_ui().SetClass("mt-1 block")
}
return new Img(ud?.img);
})).SetClass("block rounded-full overflow-hidden"),
{
dontStyle: true
}
).onClick(() => userInfo.Activate());
return new Img(ud?.img)
})
).SetClass("block rounded-full overflow-hidden"),
{
dontStyle: true,
}
).onClick(() => userInfo.Activate())
return new LoginToggle(
mapControl, Translations.t.general.loginWithOpenStreetMap, state
mapControl,
Translations.t.general.loginWithOpenStreetMap,
state
)
}),
Toggle.If(
state.featureSwitchExtraLinkEnabled,
() => new ExtraLinkButton(state, state.layoutToUse.extraLink)
),
Toggle.If(state.featureSwitchWelcomeMessage, () => self.InitWelcomeMessage()),
Toggle.If(state.featureSwitchIsTesting, () => new FixedUiElement("TESTING").SetClass("alert m-2 border-2 border-black"))
Toggle.If(state.featureSwitchIsTesting, () =>
new FixedUiElement("TESTING").SetClass("alert m-2 border-2 border-black")
),
])
.SetClass("flex flex-col")
.AttachTo("top-left")
@ -229,8 +231,11 @@ export default class DefaultGUI {
.SetClass("flex items-center justify-center normal-background h-full")
.AttachTo("on-small-screen")
Toggle.If(state.featureSwitchSearch, () => new SearchAndGo(state).SetClass("shadow rounded-full h-min w-full overflow-hidden sm:max-w-sm pointer-events-auto")).AttachTo("top-right")
Toggle.If(state.featureSwitchSearch, () =>
new SearchAndGo(state).SetClass(
"shadow rounded-full h-min w-full overflow-hidden sm:max-w-sm pointer-events-auto"
)
).AttachTo("top-right")
new LeftControls(state, guiState).AttachTo("bottom-left")
new RightControls(state).AttachTo("bottom-right")
@ -256,11 +261,7 @@ export default class DefaultGUI {
private InitWelcomeMessage(): BaseUIElement {
const isOpened = this.guiState.welcomeMessageIsOpened
new FullWelcomePaneWithTabs(
isOpened,
this.guiState.welcomeMessageOpenedTab,
this.state
)
new FullWelcomePaneWithTabs(isOpened, this.guiState.welcomeMessageOpenedTab, this.state)
// ?-Button on Desktop, opens panel with close-X.
const help = new MapControlButton(Svg.help_svg())
@ -280,6 +281,6 @@ export default class DefaultGUI {
isOpened.setData(false)
})
return help.SetClass("pointer-events-auto")
return help.SetClass("pointer-events-auto")
}
}

View file

@ -1,11 +1,11 @@
{
"contributors": [
{
"commits": 4686,
"commits": 4735,
"contributor": "Pieter Vander Vennet"
},
{
"commits": 259,
"commits": 300,
"contributor": "Robin van der Linde"
},
{
@ -81,12 +81,12 @@
"contributor": "ToastHawaii"
},
{
"commits": 13,
"contributor": "Nicole"
"commits": 14,
"contributor": "dependabot[bot]"
},
{
"commits": 12,
"contributor": "dependabot[bot]"
"commits": 13,
"contributor": "Nicole"
},
{
"commits": 12,

View file

@ -127,7 +127,9 @@
"tagRenderings": [
"images",
{
"labels": ["artwork-question"],
"labels": [
"artwork-question"
],
"render": {
"en": "This is a {artwork_type}",
"nl": "Dit is een {artwork_type}",
@ -449,7 +451,9 @@
},
{
"id": "artwork-artist-wikidata",
"labels": ["artwork-question"],
"labels": [
"artwork-question"
],
"render": {
"en": "This artwork was made by {wikidata_label(artist:wikidata):font-weight:bold}<br/>{wikipedia(artist:wikidata)}",
"de": "Dieses Kunstwerk wurde geschaffen von {wikidata_label(artist:wikidata):font-weight:bold}<br/>{wikipedia(artist:wikidata)}",
@ -521,7 +525,9 @@
},
"condition": "artist:wikidata=",
"id": "artwork-artist_name",
"labels": ["artwork-question"]
"labels": [
"artwork-question"
]
},
{
"question": {
@ -565,7 +571,9 @@
"type": "url"
},
"id": "artwork-website",
"labels": ["artwork-question"]
"labels": [
"artwork-question"
]
},
"wikipedia",
{
@ -591,7 +599,9 @@
"pt": "A obra de arte representa {wikidata_label(subject:wikidata)}{wikipedia(subject:wikidata)}",
"es": "Esta obra de arte representa {wikidata_label(subject:wikidata)}{wikipedia(subject:wikidata)}"
},
"labels": ["artwork-question"]
"labels": [
"artwork-question"
]
},
{
"id": "doubles_as_bench",
@ -662,4 +672,4 @@
"filter": [
"has_image"
]
}
}

View file

@ -84,4 +84,4 @@
]
}
]
}
}

View file

@ -839,7 +839,6 @@
"condition": "tourism=artwork"
}
}
],
"presets": [
{
@ -943,4 +942,4 @@
},
"has_image"
]
}
}

View file

@ -233,7 +233,10 @@
}
],
"softDeletionTags": {
"and": ["disused:highway=bus_stop","bench=no"]
"and": [
"disused:highway=bus_stop",
"bench=no"
]
}
},
"description": {
@ -245,4 +248,4 @@
"da": "Et lag, der viser alle offentlige stoppesteder, som har en bænk",
"cs": "Vrstva zobrazující všechny zastávky veřejné dopravy, které mají lavičku"
}
}
}

View file

@ -78,7 +78,7 @@
},
"opening_hours",
"climbing.toprope",
{
{
"builtin": "climbing.average_length",
"override": {
"condition": "climbing:toprope!=no"
@ -171,4 +171,4 @@
}
}
]
}
}

View file

@ -454,4 +454,4 @@
}
}
]
}
}

View file

@ -62,7 +62,7 @@
"options": [
{
"question": {
"en":"With and without images",
"en": "With and without images",
"nl": "Met en zonder afbeelding"
}
},
@ -175,4 +175,4 @@
]
}
]
}
}

View file

@ -12,9 +12,12 @@
{
"icon": "circle:red",
"iconSize": "1,1,center",
"location": ["point","projected_centerpoint"],
"location": [
"point",
"projected_centerpoint"
],
"css": "box-shadow: red 0 0 20px 20px; z-index: -1; height: 1px; width: 1px;",
"cssClasses": "block relative rounded-full"
}
]
}
}

View file

@ -689,14 +689,16 @@
"if": "opening_hours=\"by appointment\"",
"then": {
"en": "Only by appointment",
"de": "Nur nach Vereinbarung"
"de": "Nur nach Vereinbarung",
"nl": "Alleen op afspraak"
}
},
{
"if": "opening_hours~i~\"by appointment\"|by appointment",
"then": {
"en": "Only by appointment",
"de": "Nur nach Vereinbarung"
"de": "Nur nach Vereinbarung",
"nl": "Alleen op afspraak"
},
"hideInAnswer": true
}

View file

@ -13,4 +13,4 @@
"layers": [
"atm"
]
}
}

View file

@ -63,4 +63,4 @@
"bench_at_pt"
],
"credits": "Florian Edelmann"
}
}

View file

@ -2,11 +2,13 @@
"id": "blind_osm",
"title": {
"en": "OSM for the blind",
"de": "OSM für Blinde"
"de": "OSM für Blinde",
"nl": "OSM voor blinden"
},
"description": {
"en": "Help to map features relevant for the blind",
"de": "Hilfe zur Kartierung blindenrelevanter Merkmale"
"de": "Hilfe zur Kartierung blindenrelevanter Merkmale",
"nl": "Help zaken die relevant zijn voor blinden in kaart te brengen"
},
"icon": "./assets/themes/blind_osm/Blindicon.svg",
"startLat": 52.99238,

View file

@ -732,7 +732,7 @@
"de": "Es sind nur Plätze für Dauercamper vorhanden (wenn Sie diese Antwort auswählen, verschwindet der Ort von der Karte)",
"es": "Solo es posible permanecer aquí si tienes un contrato a largo plazo (este lugar desaparecerá de este mapa si escoges esto)",
"da": "Det er kun muligt at bo her, hvis du har en langtidskontrakt (dette sted forsvinder fra kortet, hvis du vælger dette)",
"nl": "Hier kan je enkel verblijven met een langetermijnscontract (deze plaats zal verborgen worden van deze kaart als je dit kiest)",
"nl": "Hier kan je enkel verblijven met een langetermijnscontract (deze plaats verdwijnt van deze kaart als je dit kiest)",
"ca": "Només és possible romandre aquí si teniu un contracte a llarg termini (aquest lloc desapareixerà d'aquest mapa si trieu això)",
"nb_NO": "Det er kun mulig å bo her hvis man har en langtidskontrakt (dette stedet vil forsvinne fra kartet hvis du velger dette)"
}

View file

@ -122,6 +122,10 @@
"if": "theme=artwork",
"then": "./assets/themes/artwork/artwork.svg"
},
{
"if": "theme=atm",
"then": "./assets/themes/atm/logo.svg"
},
{
"if": "theme=bag",
"then": "./assets/themes/bag/logo.svg"

View file

@ -45,4 +45,4 @@
"layers": [
"map"
]
}
}

View file

@ -21,7 +21,8 @@
"en": "This map shows the legally allowed maximum speed on every road. If a maxspeed is missing or wrong, you can correct it here.",
"de": "Diese Karte zeigt die zulässige Höchstgeschwindigkeit auf jeder Straße. Wenn eine Höchstgeschwindigkeit fehlt oder falsch ist, können Sie dies hier korrigieren.",
"fr": "Cette carte montre la vitesse maximale autorisée sur les routes. Si la vitesse maximale est manquante ou erronée, vous pouvez la corriger ici.",
"da": "Dette kort viser den lovligt tilladte maksimale hastighed på hver vej. Hvis en maxspeed mangler eller er forkert, kan du rette den her."
"da": "Dette kort viser den lovligt tilladte maksimale hastighed på hver vej. Hvis en maxspeed mangler eller er forkert, kan du rette den her.",
"nl": "Deze kaart toont de maximum toegestane snelheid voor elke weg. Als er een maximumsnelheid mist of niet klopt, kan je hem hier aanpassen."
},
"icon": "./assets/themes/maxspeed/maxspeed_logo.svg",
"startLat": 0,

View file

@ -2,15 +2,18 @@
"id": "osm_community_index",
"title": {
"en": "OSM Community Index",
"de": "OSM-Community-Index"
"de": "OSM-Community-Index",
"nl": "OSM Community Overzicht"
},
"description": {
"en": "A list of resources for users of OpenStreetMap. 'Resources' can be links to forums, meetups, Slack groups, IRC channels, mailing lists, and so on. Anything that mappers, especially beginners, might find interesting or helpful.",
"de": "Eine Liste von Ressourcen für Nutzer von OpenStreetMap. 'Ressourcen' können Links zu Foren, Treffen, Slack-Gruppen, IRC-Kanälen, Mailinglisten und so weiter sein. Alles, was Mapper, insbesondere Anfänger, interessant oder hilfreich finden könnten."
"de": "Eine Liste von Ressourcen für Nutzer von OpenStreetMap. 'Ressourcen' können Links zu Foren, Treffen, Slack-Gruppen, IRC-Kanälen, Mailinglisten und so weiter sein. Alles, was Mapper, insbesondere Anfänger, interessant oder hilfreich finden könnten.",
"nl": "Een lijst van hulpmiddelen van gebruikers van OpenStreetMap. 'Hulpmiddelen' kunnen fora, meetups, Slack groepen, IRC kanalen, mailinglijsten, en meer zijn. Alles dat mappers, vooral beginners, nuttig of behulpzaam kunnen vinden."
},
"shortDescription": {
"en": "An index of community resources for OpenStreetMap.",
"de": "Ein Index von Community-Ressourcen für OpenStreetMap."
"de": "Ein Index von Community-Ressourcen für OpenStreetMap.",
"nl": "Een overzicht van hulpbronnen voor OpenStreetMap van de community."
},
"icon": "./assets/themes/osm_community_index/osm.svg",
"startLat": 50.8465573,

View file

@ -1,11 +1,11 @@
{
"contributors": [
{
"commits": 213,
"commits": 214,
"contributor": "Pieter Vander Vennet"
},
{
"commits": 190,
"commits": 191,
"contributor": "kjon"
},
{
@ -17,7 +17,7 @@
"contributor": "danieldegroot2"
},
{
"commits": 45,
"commits": 48,
"contributor": "Robin van der Linde"
},
{

View file

@ -86,6 +86,7 @@
"add": {
"addNew": "{category} hinzufügen",
"addNewMapLabel": "Hier klicken, um ein neues Element hinzuzufügen",
"backToSelect": "Wählen Sie eine andere Kategorie",
"confirmButton": "Eine {category} hinzufügen.<br><div class=\"alert\">Ihre Ergänzung ist für alle sichtbar</div>",
"confirmIntro": "<h3>Einen {title} hinzufügen?</h3>Das Objekt, das Sie erstellen wird <b>für alle sichtbar sein</b>. Bitte nur Dinge hinzufügen, die wirklich existieren. Viele Anwendungen verwenden diese Daten.",
"disableFilters": "Alle Filter deaktivieren",
@ -111,8 +112,7 @@
"warnVisibleForEveryone": "Ihre Ergänzung wird für alle sichtbar sein",
"wrongType": "Dieses Objekt ist weder ein Punkt noch ein Weg und kann nicht importiert werden",
"zoomInFurther": "Ausschnitt vergrößern, um ein Objekt hinzuzufügen.",
"zoomInMore": "Ansicht vergrößern, um dieses Element zu importieren",
"backToSelect": "Wählen Sie eine andere Kategorie"
"zoomInMore": "Ansicht vergrößern, um dieses Element zu importieren"
},
"apply_button": {
"appliedOnAnotherObject": "Das Objekt {id} erhält {tags}",

View file

@ -142,6 +142,20 @@
"artwork_subject": {
"question": "What does this artwork depict?",
"render": "This artwork depicts {wikidata_label(subject:wikidata)}{wikipedia(subject:wikidata)}"
},
"doubles_as_bench": {
"mappings": {
"0": {
"then": "This artwork also serves as a bench"
},
"1": {
"then": "This artwork does not serve as a bench"
},
"2": {
"then": "This artwork does not serve as a bench"
}
},
"question": "Does this artwork serve as a bench?"
}
},
"title": {
@ -292,6 +306,28 @@
},
"bench": {
"description": "A bench is a wooden, metal, stone, … surface where a human can sit. This layers visualises them and asks a few questions about them.",
"filter": {
"0": {
"options": {
"0": {
"question": "is a memorial"
}
}
},
"1": {
"options": {
"0": {
"question": "With and without backrest"
},
"1": {
"question": "Has a backrest"
},
"2": {
"question": "Has no backrest"
}
}
}
},
"name": "Benches",
"presets": {
"0": {
@ -299,6 +335,17 @@
}
},
"tagRenderings": {
"bench-artwork": {
"mappings": {
"0": {
"then": "This bench has an integrated artwork"
},
"1": {
"then": "This bench does not have an integrated artwork"
}
},
"question": "Does this bench have an artistic element?<div class='subtle text-lg'>E.g. it has an integrated painting, statue or other non-trivial, creative work</div>"
},
"bench-backrest": {
"mappings": {
"0": {
@ -344,6 +391,18 @@
"question": "In which direction are you looking when sitting on the bench?",
"render": "When sitting on the bench, one looks towards {direction}°."
},
"bench-inscription": {
"mappings": {
"0": {
"then": "This bench does not have an inscription"
},
"1": {
"then": "This bench does <span class='subtle'>(probably)</span> not have an inscription"
}
},
"question": "Does this bench have an inscription?<div class='subtle text-lg'>E.g. on a mounted plaque, in the backrest, ...</div>",
"render": "This bench does have the following inscription:<br/><p><i>{inscription}</i></p>"
},
"bench-material": {
"mappings": {
"0": {
@ -368,11 +427,32 @@
"question": "What is the bench (seating) made from?",
"render": "Material: {material}"
},
"bench-memorial": {
"mappings": {
"0": {
"then": "This bench is a memorial for someone or something"
},
"1": {
"then": "This bench is a <b>not</b> a memorial for someone or something"
}
},
"question": "Does this bench act as memorial for someone or something?"
},
"bench-seats": {
"mappings": {
"0": {
"then": "This bench does not have separated seats"
}
},
"question": "How many seats does this bench have?",
"render": "{seats} seats"
},
"bench-survey:date": {
"mappings": {
"0": {
"then": "Surveyed today!"
}
},
"question": "When was this bench last surveyed?",
"render": "This bench was last surveyed on {survey:date}"
}
@ -382,6 +462,18 @@
}
},
"bench_at_pt": {
"deletion": {
"extraDeleteReasons": {
"0": {
"explanation": "This bus stop is not used anymore"
}
},
"nonDeleteMappings": {
"0": {
"then": "This bus stop does not have a bench (there never was one or it has been removed)"
}
}
},
"description": "A layer showing all public-transport-stops which do have a bench",
"name": "Benches at public transport stops",
"tagRenderings": {
@ -3768,6 +3860,9 @@
},
"3": {
"options": {
"0": {
"question": "With and without images"
},
"1": {
"question": "Has at least one image"
},
@ -6507,6 +6602,9 @@
"render": "School <i>{name}</i>"
}
},
"selected_element": {
"description": "Highlights the currently selected element. Override this layer to have different colors"
},
"shelter": {
"description": "Layer showing shelter structures",
"name": "Shelter",
@ -7288,6 +7386,11 @@
"freeform": {
"placeholder": "Name of the operator"
},
"mappings": {
"0": {
"then": "Dutch Railways (NS)"
}
},
"question": "Who is the operator of this ticket machine?",
"render": "This ticket machine is operated by {operator}"
}

View file

@ -256,6 +256,28 @@
},
"bench": {
"description": "Een zitbank is een houten, metalen, stenen, … oppervlak waar een mens kan zitten. Deze laag toont ze en stelt er enkele vragen over.",
"filter": {
"0": {
"options": {
"0": {
"question": "is een gedenkteken"
}
}
},
"1": {
"options": {
"0": {
"question": "Met en zonder rugleuning"
},
"1": {
"question": "Heeft een rugleuning"
},
"2": {
"question": "Heeft geen rugleuning"
}
}
}
},
"name": "Zitbanken",
"presets": {
"0": {
@ -263,6 +285,17 @@
}
},
"tagRenderings": {
"bench-artwork": {
"mappings": {
"0": {
"then": "Deze bank heeft een geïntegreerd kunstwerk"
},
"1": {
"then": "Deze bank heeft geen geïntegreerd kunstwerk"
}
},
"question": "Heeft deze bank een geïntegreerd kunstwerk?<div class='subtle text-lg'>Bijvoorbeeld een standbeeld, schildering of ander, niet-triviaal kunstwerk</div>"
},
"bench-backrest": {
"mappings": {
"0": {
@ -308,6 +341,18 @@
"question": "In welke richting kijk je wanneer je op deze zitbank zit?",
"render": "Wanneer je op deze bank zit, dan kijk je in {direction}°."
},
"bench-inscription": {
"mappings": {
"0": {
"then": "Deze bank heeft geen inscriptie"
},
"1": {
"then": "Deze bank heeft <span class='subtle'>(waarschijnlijk)</span> geen inscriptie"
}
},
"question": "Heeft deze bank een inscriptie?<div class='subtle text-lg'>Bijvoorbeeld op een aangebracht plakkaat, ingesneden in de rugleuning, ...</div>",
"render": "Deze bank heeft een inscriptie: <br/><p><i>{inscription}</i></p>"
},
"bench-material": {
"mappings": {
"0": {
@ -332,11 +377,32 @@
"question": "Uit welk materiaal is het zitgedeelte van deze zitbank gemaakt?",
"render": "Gemaakt van {material}"
},
"bench-memorial": {
"mappings": {
"0": {
"then": "Deze bank is een gedenkteken aan iemand of iets"
},
"1": {
"then": "Deze bank is <b>geen</b> gedenkteken aan iemand of iets"
}
},
"question": "Is deze bank een gedenkteken voor iemand of iets?"
},
"bench-seats": {
"mappings": {
"0": {
"then": "Deze bank is niet ingedeeld in aparte zitplaatsen"
}
},
"question": "Hoeveel zitplaatsen heeft deze bank?",
"render": "{seats} zitplaatsen"
},
"bench-survey:date": {
"mappings": {
"0": {
"then": "Vandaag nagekeken!"
}
},
"question": "Wanneer is deze laatste bank laatst gesurveyed?",
"render": "Deze bank is laatst gesurveyd op {survey:date}"
}
@ -3662,6 +3728,9 @@
},
"3": {
"options": {
"0": {
"question": "Met en zonder afbeelding"
},
"1": {
"question": "Heeft minstens één afbeelding"
},
@ -6133,6 +6202,9 @@
"render": "School <i>{name}</i>"
}
},
"selected_element": {
"description": "Toont het geselecteerde element"
},
"shelter": {
"name": "Schuilplaats",
"tagRenderings": {
@ -6844,6 +6916,17 @@
}
}
},
"ticket_machine": {
"tagRenderings": {
"operator": {
"mappings": {
"0": {
"then": "Nederlandse Spoorwegen (NS)"
}
}
}
}
},
"toilet": {
"description": "Een laag die publieke toiletten toont",
"filter": {

View file

@ -86,6 +86,7 @@
"add": {
"addNew": "Voeg {category} toe",
"addNewMapLabel": "Klik hier om een item toe te voegen",
"backToSelect": "Selecteer een andere categorie",
"confirmButton": "Voeg een {category} toe<br><div class=\"alert\">Je toevoeging is voor iedereen zichtbaar</div>",
"confirmIntro": "<h3>Voeg een {title} toe?</h3>Het object dat je toevoegt, is <b>zichtbaar voor iedereen</b>. Veel applicaties gebruiken deze data, voeg dus enkel punten toe die echt bestaan.",
"disableFilters": "Zet alle filters af",
@ -111,8 +112,7 @@
"warnVisibleForEveryone": "Je toevoeging is voor iedereen zichtbaar",
"wrongType": "Dit object is geen punt of lijn en kan daarom niet geïmporteerd worden",
"zoomInFurther": "Gelieve verder in te zoomen om een object toe te voegen.",
"zoomInMore": "Zoom meer in om dit object te importeren",
"backToSelect": "Selecteer een andere categorie"
"zoomInMore": "Zoom meer in om dit object te importeren"
},
"apply_button": {
"appliedOnAnotherObject": "Object {id} zal deze tags ontvangen: {tags}",
@ -281,7 +281,17 @@
"skippedQuestions": "Enkele vragen werden overgeslaan",
"testing": "Testmode - wijzigingen worden niet opgeslaan",
"uploadGpx": {
"choosePermission": "Kies hieronder of je traject gedeeld moet worden:",
"confirm": "Bevestig upload",
"intro0": "Door het uploaden van je traject, bewaart OpenStreetMap.org een volledige kopie van je traject.",
"intro1": "Je kan je traject weer downloaden en laden in OpenStreetMap editor",
"meta": {
"descriptionIntro": "Optioneel, kan je hier een beschrijving van je traject toevoegen:",
"descriptionPlaceHolder": "Voer een beschrijving in van je traject",
"intro": "Voeg een titel toe aan je traject:",
"title": "Titel en beschrijving",
"titlePlaceholder": "Vul de titel van je traject in"
},
"modes": {
"private": {
"name": "Anoniem"
@ -289,17 +299,7 @@
"public": {
"name": "Publiek"
}
},
"intro0": "Door het uploaden van je traject, bewaart OpenStreetMap.org een volledige kopie van je traject.",
"intro1": "Je kan je traject weer downloaden en laden in OpenStreetMap editor",
"meta": {
"descriptionIntro": "Optioneel, kan je hier een beschrijving van je traject toevoegen:",
"title": "Titel en beschrijving",
"descriptionPlaceHolder": "Voer een beschrijving in van je traject",
"intro": "Voeg een titel toe aan je traject:",
"titlePlaceholder": "Vul de titel van je traject in"
},
"choosePermission": "Kies hieronder of je traject gedeeld moet worden:"
}
},
"weekdays": {
"abbreviations": {

View file

@ -1,5 +1,34 @@
{
"shared_questions": {
"denominations-coins": {
"mappings": {
"0": {
"then": "1 cent coins are accepted"
},
"1": {
"then": "2 cent coins are accepted"
},
"2": {
"then": "5 cent coins are accepted"
},
"3": {
"then": "10 cent coins are accepted"
},
"4": {
"then": "20 cent coins are accepted"
},
"5": {
"then": "50 cent coins are accepted"
},
"6": {
"then": "1 euro coins are accepted"
},
"7": {
"then": "2 euro coins are accepted"
}
},
"question": "Whith what coins can you pay here?"
},
"description": {
"question": "Is there still something relevant you couldn't give in the previous questions? Add it here.<br/><span style='font-size: small'>Don't repeat already stated facts</span>"
},
@ -150,6 +179,24 @@
}
}
},
"payment-options-split": {
"override": {
"mappings+": {
"0": {
"then": "Coins are accepted here"
},
"1": {
"then": "Bank notes are accepted here"
},
"2": {
"then": "Debit cards are accepted here"
},
"3": {
"then": "Credit cards are accepted here"
}
}
}
},
"phone": {
"question": "What is the phone number of {title()}?"
},

View file

@ -115,6 +115,18 @@
}
}
},
"opening_hours_by_appointment": {
"override": {
"mappings": {
"0": {
"then": "Alleen op afspraak"
},
"1": {
"then": "Alleen op afspraak"
}
}
}
},
"payment-options": {
"mappings": {
"0": {
@ -210,18 +222,6 @@
}
},
"question": "Welk Wikipedia-artikel beschrijft dit object?"
},
"opening_hours_by_appointment": {
"override": {
"mappings": {
"1": {
"then": "Alleen op afspraak"
},
"0": {
"then": "Alleen op afspraak"
}
}
}
}
}
}
}

View file

@ -7,6 +7,10 @@
"description": "An open map of statues, busts, graffitis and other artwork all over the world",
"title": "Open Artwork Map"
},
"atm": {
"description": "This map shows ATMs to withdraw or deposit money",
"title": "ATM Machines"
},
"bag": {
"description": "This theme helps with importing data from BAG",
"layers": {

View file

@ -76,6 +76,10 @@
"shortDescription": "Een kaart met publieke verrekijker",
"title": "Verrekijkers"
},
"blind_osm": {
"description": "Help zaken die relevant zijn voor blinden in kaart te brengen",
"title": "OSM voor blinden"
},
"bookcases": {
"description": "Een boekenruilkast is een kastje waar iedereen een boek kan nemen of achterlaten. Op deze kaart kan je deze boekenruilkasten terugvinden en met een gratis OpenStreetMap-account, ook boekenruilkasten toevoegen of informatie verbeteren",
"title": "Open boekenruilkasten-kaart"
@ -973,9 +977,9 @@
"title": "Een kaart van kaarten"
},
"maxspeed": {
"description": "Deze kaart toont de maximum toegestane snelheid voor elke weg. Als er een maximumsnelheid mist of niet klopt, kan je hem hier aanpassen.",
"shortDescription": "Deze kaart toont de maximumsnelheid voor elke straat.",
"title": "Maximale snelheden",
"description": "Deze kaart toont de maximum toegestane snelheid voor elke weg. Als er een maximumsnelheid mist of niet klopt, kan je hem hier aanpassen."
"title": "Maximale snelheden"
},
"nature": {
"description": "Op deze kaart vind je informatie voor natuurliefhebbers, zoals info over het natuurgebied waar je inzit, vogelkijkhutten, informatieborden, ...",
@ -1066,6 +1070,11 @@
"description": "Een kaart om windturbines te tonen en te bewerken.",
"title": "Windmolens"
},
"osm_community_index": {
"description": "Een lijst van hulpmiddelen van gebruikers van OpenStreetMap. 'Hulpmiddelen' kunnen fora, meetups, Slack groepen, IRC kanalen, mailinglijsten, en meer zijn. Alles dat mappers, vooral beginners, nuttig of behulpzaam kunnen vinden.",
"shortDescription": "Een overzicht van hulpbronnen voor OpenStreetMap van de community.",
"title": "OSM Community Overzicht"
},
"parkings": {
"description": "Deze kaart toont verschillende parkeerplekken",
"shortDescription": "Deze kaart toont verschillende parkeerplekken",
@ -1350,14 +1359,5 @@
"description": "Op deze kaart vind je vuilnisbakken waar je afval in kan smijten. Ontbreekt er een vuilnisbak? Dan kan je die zelf toevoegen",
"shortDescription": "Een kaart met vuilnisbakken",
"title": "Vuilnisbak"
},
"osm_community_index": {
"description": "Een lijst van hulpmiddelen van gebruikers van OpenStreetMap. 'Hulpmiddelen' kunnen fora, meetups, Slack groepen, IRC kanalen, mailinglijsten, en meer zijn. Alles dat mappers, vooral beginners, nuttig of behulpzaam kunnen vinden.",
"shortDescription": "Een overzicht van hulpbronnen voor OpenStreetMap van de community.",
"title": "OSM Community Overzicht"
},
"blind_osm": {
"title": "OSM voor blinden",
"description": "Help zaken die relevant zijn voor blinden in kaart te brengen"
}
}
}

View file

@ -1,23 +1,22 @@
import ScriptUtils from "./ScriptUtils";
import {Utils} from "../Utils";
import ScriptUtils from "./ScriptUtils"
import { Utils } from "../Utils"
import * as fs from "fs"
async function main(args: string[]){
if(args.length !== 1){
async function main(args: string[]) {
if (args.length !== 1) {
console.log("Usage: first argument is the fully qualified key of the string to remove")
return
}
const path = args[0].split(".")
console.log("Removing translation string ", path, 'from the general translations')
const files = ScriptUtils.readDirRecSync("./langs", 1).filter(f => f.endsWith(".json"))
console.log("Removing translation string ", path, "from the general translations")
const files = ScriptUtils.readDirRecSync("./langs", 1).filter((f) => f.endsWith(".json"))
for (const file of files) {
const json = JSON.parse(fs.readFileSync(file, "UTF-8"))
Utils.WalkPath(path, json, (_ => undefined))
fs.writeFileSync(file, JSON.stringify(json, null, " ")+"\n")
Utils.WalkPath(path, json, (_) => undefined)
fs.writeFileSync(file, JSON.stringify(json, null, " ") + "\n")
}
}
const args = [...process.argv]
args.splice(0, 2)
main(args).then((_) => {