Merge branch 'master' into develop

This commit is contained in:
Pieter Vander Vennet 2023-03-13 20:12:07 +01:00
commit f12b79754e
53 changed files with 315 additions and 259 deletions

View file

@ -14,7 +14,6 @@ import { LoginToggle } from "./Popup/LoginButton"
export default class AllThemesGui {
setup() {
try {
new FixedUiElement("").AttachTo("centermessage")
const state = new UserRelatedState(undefined)
const intro = new Combine([
new LanguagePicker1(Translations.t.index.title.SupportedLanguages(), "").SetClass(
@ -42,7 +41,7 @@ export default class AllThemesGui {
"Seems like no layers are compiled - check the output of `npm run generate:layeroverview`. Is this visible online? Contact pietervdvn immediately!"
)
.SetClass("alert")
.AttachTo("centermessage")
.AttachTo("top-left")
}
}
}

View file

@ -1,62 +1,63 @@
<script lang="ts">
import { onMount } from "svelte";
import { Store } from "../../Logic/UIEventSource";
import BaseUIElement from "../BaseUIElement";
import Img from "./Img";
import Translations from "../i18n/Translations";
import { ImmutableStore } from "../../Logic/UIEventSource.js";
import { onMount } from "svelte"
import { Store } from "../../Logic/UIEventSource"
import BaseUIElement from "../BaseUIElement"
import Img from "./Img"
import Translations from "../i18n/Translations"
import { ImmutableStore } from "../../Logic/UIEventSource.js"
export let imageUrl: string | BaseUIElement = undefined;
export let message: string | BaseUIElement = undefined;
export let imageUrl: string | BaseUIElement = undefined
export let message: string | BaseUIElement = undefined
export let options: {
url?: string | Store<string>
newTab?: boolean
imgSize?: string
extraClasses?: string
} = {};
} = {}
// Website to open when clicked
let href : Store<string> = undefined
if(options?.url){
href = typeof options?.url == "string" ? new ImmutableStore(options.url) : options.url;
let href: Store<string> = undefined
if (options?.url) {
href = typeof options?.url == "string" ? new ImmutableStore(options.url) : options.url
}
let imgElem: HTMLElement;
let msgElem: HTMLElement;
let imgClasses = "block justify-center shrink-0 mr-4 " + (options?.imgSize ?? "h-11 w-11");
let imgElem: HTMLElement
let msgElem: HTMLElement
let imgClasses = "block justify-center shrink-0 mr-4 " + (options?.imgSize ?? "h-11 w-11")
onMount(() => {
// Image
if (imgElem && imageUrl) {
let img: BaseUIElement;
let img: BaseUIElement
if ((imageUrl ?? "") === "") {
img = undefined;
img = undefined
} else if (typeof imageUrl !== "string") {
img = imageUrl?.SetClass(imgClasses);
img = imageUrl?.SetClass(imgClasses)
}
if (img) imgElem.replaceWith(img.ConstructElement());
if (img) imgElem.replaceWith(img.ConstructElement())
}
// Message
if (msgElem && message) {
let msg = Translations.W(message)?.SetClass("block text-ellipsis no-images flex-shrink");
msgElem.replaceWith(msg.ConstructElement());
let msg = Translations.W(message)?.SetClass("block text-ellipsis no-images flex-shrink")
msgElem.replaceWith(msg.ConstructElement())
}
});
})
</script>
<svelte:element
class={(options.extraClasses??"") + 'flex hover:shadow-xl transition-[color,background-color,box-shadow] hover:bg-unsubtle'}
this={href === undefined ? "span" : "a"}
class={(options.extraClasses ?? "") +
"flex hover:shadow-xl transition-[color,background-color,box-shadow] hover:bg-unsubtle"}
href={$href}
target={options?.newTab ? "_blank" : ""}
this={href === undefined ? "span" : "a"}
>
<slot name="image">
{#if imageUrl !== undefined}
{#if typeof imageUrl === "string"}
<Img src={imageUrl} class={imgClasses+ " bg-red border border-black"}></Img>
{:else }
<Img src={imageUrl} class={imgClasses + " bg-red border border-black"} />
{:else}
<template bind:this={imgElem} />
{/if}
{/if}
@ -68,7 +69,6 @@
</svelte:element>
<style lang="scss">
span,
a {
@apply flex p-3 my-2 py-4 rounded-lg shrink-0;

View file

@ -13,7 +13,7 @@ export class SubtleButton extends UIElement {
private readonly options: {
url?: string | Store<string>
newTab?: boolean
imgSize?: string,
imgSize?: string
extraClasses?: string
}
@ -23,7 +23,7 @@ export class SubtleButton extends UIElement {
options: {
url?: string | Store<string>
newTab?: boolean
imgSize?: "h-11 w-11" | string,
imgSize?: "h-11 w-11" | string
extraClasses?: string
} = {}
) {

View file

@ -29,8 +29,8 @@
url: "https://pietervdvn.github.io/mc/legacy/070/customGenerator.html",
}}
>
<span slot="image" class="h-11 w-11 mx-4 bg-red" >
<ToSvelte construct={Svg.pencil_ui()}/>
<span slot="image" class="h-11 w-11 mx-4 bg-red">
<ToSvelte construct={Svg.pencil_ui()} />
</span>
<span slot="message">{t.createYourOwnTheme.toString()}</span>
</SubtleButton>

View file

@ -6,7 +6,7 @@
import UserDetails, { OsmConnection } from "../../Logic/Osm/OsmConnection"
import Constants from "../../Models/Constants"
import type Loc from "../../Models/Loc"
import type { LayoutInformation } from "../../Models/ThemeConfig/LayoutConfig";
import type { LayoutInformation } from "../../Models/ThemeConfig/LayoutConfig"
export let theme: LayoutInformation
export let isCustom: boolean = false

View file

@ -40,14 +40,13 @@ const mode = QueryParameters.GetQueryParameter(
"map",
"The mode the application starts in, e.g. 'statistics'"
)
const cm = document.getElementById("centermessage")
cm.parentElement.removeChild(cm)
if (mode.data === "statistics") {
console.log("Statistics mode!")
new FixedUiElement("").AttachTo("centermessage")
new StatisticsGUI().SetClass("w-full h-full pointer-events-auto").AttachTo("topleft-tools")
} else if (mode.data === "pdf") {
MinimapImplementation.initialize()
new FixedUiElement("").AttachTo("centermessage")
const div = document.createElement("div")
div.id = "extra_div_for_maps"
new PdfExportGui(div.id).SetClass("pointer-events-auto").AttachTo("topleft-tools")

View file

@ -1,11 +1,11 @@
{
"contributors": [
{
"commits": 5097,
"commits": 5182,
"contributor": "Pieter Vander Vennet"
},
{
"commits": 339,
"commits": 341,
"contributor": "Robin van der Linde"
},
{
@ -44,6 +44,10 @@
"commits": 24,
"contributor": "Ward"
},
{
"commits": 21,
"contributor": "wjtje"
},
{
"commits": 21,
"contributor": "AlexanderRebai"
@ -88,10 +92,6 @@
"commits": 13,
"contributor": "Nicole"
},
{
"commits": 12,
"contributor": "wjtje"
},
{
"commits": 12,
"contributor": "Tobias Jordans"

View file

@ -345,4 +345,4 @@
}
],
"deletion": true
}
}

View file

@ -315,4 +315,4 @@
"cs": "Vrstva zobrazující automaty na cyklistické duše (buď speciální automaty na cyklistické duše, nebo klasické automaty s cyklistickými dušemi a případně dalšími předměty souvisejícími s jízdními koly, jako jsou světla, rukavice, zámky, ...)",
"ca": "Una capa que mostra màquines expenedores per a tubs de bicicleta (ja siguin màquines expenedores de tubs de bicicleta o màquines expenedores clàssiques amb tubs de bicicleta i opcionalment objectes addicionals relacionats amb la bicicleta com ara llums, guants, panys, ...)"
}
}
}

View file

@ -1015,4 +1015,4 @@
"fr": "Une couche montrant les pompes à vélo et les centres de réparation",
"cs": "Vrstva zobrazující vzduchové kompresory na jízdní kola a stojany na nářadí pro opravu jízdních kol"
}
}
}

View file

@ -815,4 +815,4 @@
}
}
]
}
}

View file

@ -360,4 +360,4 @@
"da": "Et lag med caféer og pubber, hvor man kan samles omkring en drink. Laget stiller nogle relevante spørgsmål",
"fr": "Une couche montrants les cafés et pubs où lon peut prendre un verre. Cette couche pose des questions y afférentes."
}
}
}

View file

@ -5065,4 +5065,4 @@
},
"neededChangesets": 10
}
}
}

View file

@ -324,7 +324,6 @@
"hideInAnswer": true
}
]
},
{
"id": "max_bolts",
@ -404,4 +403,4 @@
}
],
"mapRendering": null
}
}

View file

@ -186,4 +186,4 @@
}
}
]
}
}

View file

@ -246,4 +246,4 @@
]
}
]
}
}

View file

@ -177,4 +177,4 @@
]
}
]
}
}

View file

@ -102,4 +102,4 @@
"filter": [
"open_now"
]
}
}

View file

@ -410,4 +410,4 @@
"filter": [
"open_now"
]
}
}

View file

@ -239,4 +239,4 @@
"nl": "Een laag die herdenkingsplaatsen voor verongelukte fietsers toont",
"de": "Eine Ebene mit Gedenkstätten für Radfahrer, die bei Verkehrsunfällen ums Leben gekommen sind"
}
}
}

View file

@ -47,4 +47,4 @@
}
],
"syncSelection": "global"
}
}

View file

@ -99,4 +99,4 @@
"width": 1
}
]
}
}

View file

@ -78,25 +78,6 @@
"key": "colour"
},
"mappings": [
{
"if": {
"and": [
"colour="
]
},
"then": {
"en": "The hydrant color is unknown.",
"ja": "消火栓の色は不明です。",
"ru": "Цвет гидранта не определён.",
"fr": "La borne est de couleur inconnue.",
"de": "Die Farbe des Hydranten ist unbekannt.",
"it": "Il colore dellidrante è sconosciuto.",
"nl": "De kleur van de brandkraan is onbekend.",
"es": "Se desconoce el color de la boca de incendios.",
"ca": "El color de l'hidrant és desconegut."
},
"hideInAnswer": true
},
{
"if": {
"and": [
@ -162,24 +143,6 @@
"es": " Tipo de boca de incendios: {fire_hydrant:type}"
},
"mappings": [
{
"if": {
"and": [
"fire_hydrant:type="
]
},
"then": {
"en": "The hydrant type is unknown.",
"ja": "消火栓の種類は不明です。",
"it": "Il tipo di idrante è sconosciuto.",
"ru": "Тип гидранта не определён.",
"fr": "La borne est de type inconnu.",
"de": "Der Typ des Hydranten ist unbekannt.",
"nl": "Het type brandkraan is onbekend.",
"es": "Se desconoce el tipo de la boca de incendios"
},
"hideInAnswer": true
},
{
"if": {
"and": [
@ -569,4 +532,4 @@
]
}
]
}
}

View file

@ -1,7 +1,8 @@
{
"id": "icons",
"description": {
"en": "A layer acting as library for icon-tagrenderings, especially to show as badge next to a POI"
"en": "A layer acting as library for icon-tagrenderings, especially to show as badge next to a POI",
"de": "Eine Ebene, die als Bibliothek für Symbol-Tag-Renderings dient, insbesondere um als Abzeichen neben einem POI angezeigt zu werden"
},
"source": {
"osmTags": "id~*"

View file

@ -269,4 +269,4 @@
]
}
]
}
}

View file

@ -174,4 +174,4 @@
}
}
]
}
}

View file

@ -451,4 +451,4 @@
"width": "1"
}
]
}
}

View file

@ -316,7 +316,8 @@
],
"questionHint": {
"en": "Ad-hoc measures are not enough to count as a special-needs school",
"nl": "Ad-hoc maatregelen zijn niet voldoende "
"nl": "Ad-hoc maatregelen zijn niet voldoende ",
"de": "Ad-hoc-Maßnahmen reichen nicht aus, um als Förderschule zu gelten"
}
},
"website",
@ -397,4 +398,4 @@
"width": 1
}
]
}
}

View file

@ -411,4 +411,4 @@
"accepts_cards",
"has_organic"
]
}
}

View file

@ -670,4 +670,4 @@
},
"open_now"
]
}
}

View file

@ -68,4 +68,4 @@
"filter": [
"open_now"
]
}
}

View file

@ -755,4 +755,4 @@
]
}
]
}
}

View file

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

View file

@ -116,4 +116,4 @@
"id": "vetName"
}
]
}
}

View file

@ -613,4 +613,4 @@
]
},
"credits": "Pieter Vander Vennet"
}
}

View file

@ -1,13 +1,16 @@
{
"id": "mapcomplete-changes",
"title": {
"en": "Changes made with MapComplete"
"en": "Changes made with MapComplete",
"de": "Mit MapComplete vorgenommene Änderungen"
},
"shortDescription": {
"en": "Shows changes made by MapComplete"
"en": "Shows changes made by MapComplete",
"de": "Zeigt Änderungen, die von MapComplete vorgenommen wurden"
},
"description": {
"en": "This maps shows all the changes made with MapComplete"
"en": "This maps shows all the changes made with MapComplete",
"de": "Diese Karte zeigt alle mit MapComplete vorgenommenen Änderungen"
},
"icon": "./assets/svg/logo.svg",
"hideFromOverview": true,
@ -20,7 +23,8 @@
{
"id": "mapcomplete-changes",
"name": {
"en": "Changeset centers"
"en": "Changeset centers",
"de": "Zentrum der Änderungssätze"
},
"minzoom": 0,
"source": {
@ -31,41 +35,48 @@
},
"title": {
"render": {
"en": "Changeset for {theme}"
"en": "Changeset for {theme}",
"de": "Änderungssatz für {theme}"
}
},
"description": {
"en": "Shows all MapComplete changes"
"en": "Shows all MapComplete changes",
"de": "Zeigt alle MapComplete-Änderungen"
},
"tagRenderings": [
{
"id": "show_changeset_id",
"render": {
"en": "Changeset <a href='https://openstreetmap.org/changeset/{id}' target='_blank'>{id}</a>"
"en": "Changeset <a href='https://openstreetmap.org/changeset/{id}' target='_blank'>{id}</a>",
"de": "Änderungssatz <a href='https://openstreetmap.org/changeset/{id}' target='_blank'>{id}</a>"
}
},
{
"id": "contributor",
"question": {
"en": "What contributor did make this change?"
"en": "What contributor did make this change?",
"de": "Welcher Mitwirkende hat diese Änderung vorgenommen?"
},
"freeform": {
"key": "user"
},
"render": {
"en": "Change made by <a href='https://openstreetmap.org/user/{user}' target='_blank'>{user}</a>"
"en": "Change made by <a href='https://openstreetmap.org/user/{user}' target='_blank'>{user}</a>",
"de": "Änderung vorgenommen von <a href='https://openstreetmap.org/user/{user}' target='_blank'>{user}</a>"
}
},
{
"id": "theme-id",
"question": {
"en": "What theme was used to make this change?"
"en": "What theme was used to make this change?",
"de": "Welches Thema wurde für diese Änderung verwendet?"
},
"freeform": {
"key": "theme"
},
"render": {
"en": "Change with theme <a href='https://mapcomplete.osm.be/{theme}'>{theme}</a>"
"en": "Change with theme <a href='https://mapcomplete.osm.be/{theme}'>{theme}</a>",
"de": "Geändert mit Thema <a href='https://mapcomplete.osm.be/{theme}'>{theme}</a>"
}
},
{
@ -74,19 +85,23 @@
"key": "locale"
},
"question": {
"en": "What locale (language) was this change made in?"
"en": "What locale (language) was this change made in?",
"de": "In welchem Gebietsschema (Sprache) wurde diese Änderung vorgenommen?"
},
"render": {
"en": "User locale is {locale}"
"en": "User locale is {locale}",
"de": "Benutzergebietsschema ist {locale}"
}
},
{
"id": "host",
"render": {
"en": "Change with with <a href='{host}'>{host}</a>"
"en": "Change with with <a href='{host}'>{host}</a>",
"de": "Geändert über <a href='{host}'>{host}</a>"
},
"question": {
"en": "What host (website) was this change made with?"
"en": "What host (website) was this change made with?",
"de": "Über welchen Host (Webseite) wurde diese Änderung vorgenommen?"
},
"freeform": {
"key": "host"
@ -431,7 +446,8 @@
}
],
"question": {
"en": "Themename contains {search}"
"en": "Themename contains {search}",
"de": "Themename enthält {search}"
}
}
]
@ -447,7 +463,8 @@
}
],
"question": {
"en": "Made by contributor {search}"
"en": "Made by contributor {search}",
"de": "Erstellt von {search}"
}
}
]
@ -463,7 +480,8 @@
}
],
"question": {
"en": "<b>Not</b> made by contributor {search}"
"en": "<b>Not</b> made by contributor {search}",
"de": "<b>Nicht</b> erstellt von {search}"
}
}
]
@ -480,7 +498,8 @@
}
],
"question": {
"en": "Made before {search}"
"en": "Made before {search}",
"de": "Erstellt vor {search}"
}
}
]
@ -497,7 +516,8 @@
}
],
"question": {
"en": "Made after {search}"
"en": "Made after {search}",
"de": "Erstellt nach {search}"
}
}
]
@ -513,7 +533,8 @@
}
],
"question": {
"en": "User language (iso-code) {search}"
"en": "User language (iso-code) {search}",
"de": "Benutzersprache (ISO-Code) {search}"
}
}
]
@ -529,7 +550,8 @@
}
],
"question": {
"en": "Made with host {search}"
"en": "Made with host {search}",
"de": "Erstellt mit host {search}"
}
}
]
@ -540,7 +562,8 @@
{
"osmTags": "add-image>0",
"question": {
"en": "Changeset added at least one image"
"en": "Changeset added at least one image",
"de": "Im Änderungssatz wurde mindestens ein Bild hinzugefügt"
}
}
]
@ -555,7 +578,8 @@
{
"id": "link_to_more",
"render": {
"en": "More statistics can be found <a href='https://github.com/pietervdvn/MapComplete/tree/develop/Docs/Tools/graphs' target='_blank'>here</a>"
"en": "More statistics can be found <a href='https://github.com/pietervdvn/MapComplete/tree/develop/Docs/Tools/graphs' target='_blank'>here</a>",
"de": "Weitere Statistiken <a href='https://github.com/pietervdvn/MapComplete/tree/develop/Docs/Tools/graphs' target='_blank'>hier</a>"
}
},
{

View file

@ -1,7 +1,7 @@
{
"contributors": [
{
"commits": 250,
"commits": 253,
"contributor": "kjon"
},
{
@ -176,6 +176,10 @@
"commits": 6,
"contributor": "lvgx"
},
{
"commits": 5,
"contributor": "Ettore Atalan"
},
{
"commits": 5,
"contributor": "ⵣⵓⵀⵉⵔ ⴰⵎⴰⵣⵉⵖ ZOUHIR DEHBI"
@ -212,10 +216,6 @@
"commits": 5,
"contributor": "Alexey Shabanov"
},
{
"commits": 4,
"contributor": "Ettore Atalan"
},
{
"commits": 4,
"contributor": "gallegonovato"

View file

@ -5,6 +5,12 @@
"retrying": "Laden von Daten fehlgeschlagen. Erneuter Versuch in {count} Sekunden…",
"zoomIn": "Ausschnitt vergrößern, um Daten anzuzeigen oder zu bearbeiten"
},
"communityIndex": {
"available": "Diese Gemeinschaft spricht {native}",
"intro": "Treten Sie mit anderen Menschen in Kontakt, um sie kennen zu lernen, von ihnen zu lernen, ...",
"notAvailable": "Diese Gemeinschaft spricht nicht {native}",
"title": "Community index"
},
"delete": {
"cancel": "Abbrechen",
"cannotBeDeleted": "Dieses Element kann nicht gelöscht werden",

View file

@ -1859,12 +1859,9 @@
"hydrant-color": {
"mappings": {
"0": {
"then": "El color de l'hidrant és desconegut."
},
"1": {
"then": "L'hidrant és de color groc."
},
"2": {
"1": {
"then": "L'hidrant és de color roig."
}
},
@ -1909,16 +1906,16 @@
},
"hydrant-type": {
"mappings": {
"1": {
"0": {
"then": "De pilar."
},
"2": {
"1": {
"then": "De tuberia."
},
"3": {
"2": {
"then": "De paret."
},
"4": {
"3": {
"then": "Subterrani."
}
},

View file

@ -4907,12 +4907,9 @@
"hydrant-color": {
"mappings": {
"0": {
"then": "Die Farbe des Hydranten ist unbekannt."
},
"1": {
"then": "Die Farbe des Hydranten ist gelb."
},
"2": {
"1": {
"then": "Die Farbe des Hydranten ist rot."
}
},
@ -4975,18 +4972,15 @@
"hydrant-type": {
"mappings": {
"0": {
"then": "Der Typ des Hydranten ist unbekannt."
},
"1": {
"then": "Überflurhydrant."
},
"2": {
"1": {
"then": "Druckloses Rohr."
},
"3": {
"2": {
"then": "Wandhydrant."
},
"4": {
"3": {
"then": "Unterflurhydrant."
}
},
@ -5008,6 +5002,9 @@
}
}
},
"icons": {
"description": "Eine Ebene, die als Bibliothek für Symbol-Tag-Renderings dient, insbesondere um als Abzeichen neben einem POI angezeigt zu werden"
},
"indoors": {
"description": "Grundlegende Innenraumkartierung: zeigt Umrisse von Räumen",
"name": "Innenräume",
@ -6990,6 +6987,7 @@
}
},
"question": "Richtet sich diese Schule an Schüler mit besonderem Förderbedarf? Über welche strukturellen Einrichtungen verfügt diese Schule?",
"questionHint": "Ad-hoc-Maßnahmen reichen nicht aus, um als Förderschule zu gelten",
"render": "Diese Schule verfügt über Einrichtungen für Schüler mit {school:for}"
}
},

View file

@ -4907,12 +4907,9 @@
"hydrant-color": {
"mappings": {
"0": {
"then": "The hydrant color is unknown."
},
"1": {
"then": "The hydrant color is yellow."
},
"2": {
"1": {
"then": "The hydrant color is red."
}
},
@ -4975,18 +4972,15 @@
"hydrant-type": {
"mappings": {
"0": {
"then": "The hydrant type is unknown."
},
"1": {
"then": "Pillar type."
},
"2": {
"1": {
"then": "Pipe type."
},
"3": {
"2": {
"then": "Wall type."
},
"4": {
"3": {
"then": "Underground type."
}
},

View file

@ -2617,12 +2617,9 @@
"hydrant-color": {
"mappings": {
"0": {
"then": "Se desconoce el color de la boca de incendios."
},
"1": {
"then": "La boca de incendios es amarilla."
},
"2": {
"1": {
"then": "La boca de incendios es roja."
}
},
@ -2646,18 +2643,15 @@
"hydrant-type": {
"mappings": {
"0": {
"then": "Se desconoce el tipo de la boca de incendios"
},
"1": {
"then": "De pilar."
},
"2": {
"1": {
"then": "De tubería."
},
"3": {
"2": {
"then": "De pared."
},
"4": {
"3": {
"then": "Bajo tierra."
}
},

View file

@ -3193,12 +3193,9 @@
"hydrant-color": {
"mappings": {
"0": {
"then": "La borne est de couleur inconnue."
},
"1": {
"then": "La borne est jaune."
},
"2": {
"1": {
"then": "La borne est rouge."
}
},
@ -3222,18 +3219,15 @@
"hydrant-type": {
"mappings": {
"0": {
"then": "La borne est de type inconnu."
},
"1": {
"then": "Pilier."
},
"2": {
"1": {
"then": "Tuyau."
},
"3": {
"2": {
"then": "Mural."
},
"4": {
"3": {
"then": "Enterré."
}
},

View file

@ -349,7 +349,7 @@
"tagRenderings": {
"hydrant-type": {
"mappings": {
"3": {
"2": {
"then": "Jenis dinding."
}
}

View file

@ -1354,12 +1354,9 @@
"hydrant-color": {
"mappings": {
"0": {
"then": "Il colore dellidrante è sconosciuto."
},
"1": {
"then": "Il colore dellidrante è giallo."
},
"2": {
"1": {
"then": "L'idrante è rosso."
}
},
@ -1383,18 +1380,15 @@
"hydrant-type": {
"mappings": {
"0": {
"then": "Il tipo di idrante è sconosciuto."
},
"1": {
"then": "Soprasuolo."
},
"2": {
"1": {
"then": "Tubo."
},
"3": {
"2": {
"then": "A muro."
},
"4": {
"3": {
"then": "Sottosuolo."
}
},

View file

@ -454,12 +454,9 @@
"hydrant-color": {
"mappings": {
"0": {
"then": "消火栓の色は不明です。"
},
"1": {
"then": "消火栓の色は黄色です。"
},
"2": {
"1": {
"then": "消火栓の色は赤です。"
}
},
@ -483,18 +480,15 @@
"hydrant-type": {
"mappings": {
"0": {
"then": "消火栓の種類は不明です。"
},
"1": {
"then": "ピラー型。"
},
"2": {
"1": {
"then": "パイプ型。"
},
"3": {
"2": {
"then": "壁型。"
},
"4": {
"3": {
"then": "地下式。"
}
},

View file

@ -4811,12 +4811,9 @@
"hydrant-color": {
"mappings": {
"0": {
"then": "De kleur van de brandkraan is onbekend."
},
"1": {
"then": "De brandkraan is geel."
},
"2": {
"1": {
"then": "De brandkraan is rood."
}
},
@ -4879,18 +4876,15 @@
"hydrant-type": {
"mappings": {
"0": {
"then": "Het type brandkraan is onbekend."
},
"1": {
"then": "Pillaar type."
},
"2": {
"1": {
"then": "Buis type."
},
"3": {
"2": {
"then": "Muur type."
},
"4": {
"3": {
"then": "Ondergronds type."
}
},

View file

@ -1059,12 +1059,9 @@
"hydrant-color": {
"mappings": {
"0": {
"then": "Цвет гидранта не определён."
},
"1": {
"then": "Гидрант жёлтого цвета."
},
"2": {
"1": {
"then": "Гидрант красного цвета."
}
},
@ -1120,18 +1117,15 @@
"hydrant-type": {
"mappings": {
"0": {
"then": "Тип гидранта не определён."
},
"1": {
"then": "Наземный."
},
"2": {
"1": {
"then": "Труба."
},
"3": {
"2": {
"then": "Настенный."
},
"4": {
"3": {
"then": "Подземный."
}
},

View file

@ -766,6 +766,108 @@
"description": "Eine Karte mit Bordsteinen und Überwegen.",
"title": "Bordsteine und Überwege"
},
"mapcomplete-changes": {
"description": "Diese Karte zeigt alle mit MapComplete vorgenommenen Änderungen",
"layers": {
"0": {
"description": "Zeigt alle MapComplete-Änderungen",
"filter": {
"0": {
"options": {
"0": {
"question": "Themename enthält {search}"
}
}
},
"1": {
"options": {
"0": {
"question": "Erstellt von {search}"
}
}
},
"2": {
"options": {
"0": {
"question": "<b>Nicht</b> erstellt von {search}"
}
}
},
"3": {
"options": {
"0": {
"question": "Erstellt vor {search}"
}
}
},
"4": {
"options": {
"0": {
"question": "Erstellt nach {search}"
}
}
},
"5": {
"options": {
"0": {
"question": "Benutzersprache (ISO-Code) {search}"
}
}
},
"6": {
"options": {
"0": {
"question": "Erstellt mit host {search}"
}
}
},
"7": {
"options": {
"0": {
"question": "Im Änderungssatz wurde mindestens ein Bild hinzugefügt"
}
}
}
},
"name": "Zentrum der Änderungssätze",
"tagRenderings": {
"contributor": {
"question": "Welcher Mitwirkende hat diese Änderung vorgenommen?",
"render": "Änderung vorgenommen von <a href='https://openstreetmap.org/user/{user}' target='_blank'>{user}</a>"
},
"host": {
"question": "Über welchen Host (Webseite) wurde diese Änderung vorgenommen?",
"render": "Geändert über <a href='{host}'>{host}</a>"
},
"locale": {
"question": "In welchem Gebietsschema (Sprache) wurde diese Änderung vorgenommen?",
"render": "Benutzergebietsschema ist {locale}"
},
"show_changeset_id": {
"render": "Änderungssatz <a href='https://openstreetmap.org/changeset/{id}' target='_blank'>{id}</a>"
},
"theme-id": {
"question": "Welches Thema wurde für diese Änderung verwendet?",
"render": "Geändert mit Thema <a href='https://mapcomplete.osm.be/{theme}'>{theme}</a>"
}
},
"title": {
"render": "Änderungssatz für {theme}"
}
},
"1": {
"override": {
"tagRenderings": {
"link_to_more": {
"render": "Weitere Statistiken <a href='https://github.com/pietervdvn/MapComplete/tree/develop/Docs/Tools/graphs' target='_blank'>hier</a>"
}
}
}
}
},
"shortDescription": "Zeigt Änderungen, die von MapComplete vorgenommen wurden",
"title": "Mit MapComplete vorgenommene Änderungen"
},
"maproulette": {
"description": "Thema mit MapRoulette-Aufgaben, die Sie suchen, filtern und beheben können.",
"title": "MapRoulette-Aufgaben"

View file

@ -57,7 +57,9 @@ describe("ChangesetHanlder", () => {
const d = Utils.asDict(rewritten)
expect(d.size).toEqual(10)
expect(d.get("answer")).toEqual("5")
expect(d.get("comment")).toEqual("Adding data with #MapComplete for theme #toerisme_vlaanderen")
expect(d.get("comment")).toEqual(
"Adding data with #MapComplete for theme #toerisme_vlaanderen"
)
expect(d.get("created_by")).toEqual("MapComplete 0.16.6")
expect(d.get("host")).toEqual("https://mapcomplete.osm.be/toerisme_vlaanderen.html")
expect(d.get("imagery")).toEqual("osm")
@ -115,7 +117,9 @@ describe("ChangesetHanlder", () => {
expect(d.size).toEqual(9)
expect(d.get("answer")).toEqual("42")
expect(d.get("comment")).toEqual("Adding data with #MapComplete for theme #toerisme_vlaanderen")
expect(d.get("comment")).toEqual(
"Adding data with #MapComplete for theme #toerisme_vlaanderen"
)
expect(d.get("created_by")).toEqual("MapComplete 0.16.6")
expect(d.get("host")).toEqual("https://mapcomplete.osm.be/toerisme_vlaanderen.html")
expect(d.get("imagery")).toEqual("osm")
@ -166,7 +170,9 @@ describe("ChangesetHanlder", () => {
expect(d.size).toEqual(9)
expect(d.get("answer")).toEqual("5")
expect(d.get("comment")).toEqual("Adding data with #MapComplete for theme #toerisme_vlaanderen")
expect(d.get("comment")).toEqual(
"Adding data with #MapComplete for theme #toerisme_vlaanderen"
)
expect(d.get("created_by")).toEqual("MapComplete 0.16.6")
expect(d.get("host")).toEqual("https://mapcomplete.osm.be/toerisme_vlaanderen.html")
expect(d.get("imagery")).toEqual("osm")

View file

@ -258,31 +258,33 @@ describe("Tag optimalization", () => {
)
*/
expect(opt).toEqual(TagUtils.Tag({
or: [
"club=climbing",
{
and: ["sport=climbing", { or: ["club~*", "office~*"] }],
},
{
and: [
"sport=climbing",
{
or: [
"leisure=sports_centre",
{
and: [
"climbing!~route",
"climbing!=route_top",
"climbing!=route_bottom",
"leisure!~sports_centre",
],
},
],
},
],
},
],
}))
expect(opt).toEqual(
TagUtils.Tag({
or: [
"club=climbing",
{
and: ["sport=climbing", { or: ["club~*", "office~*"] }],
},
{
and: [
"sport=climbing",
{
or: [
"leisure=sports_centre",
{
and: [
"climbing!~route",
"climbing!=route_top",
"climbing!=route_bottom",
"leisure!~sports_centre",
],
},
],
},
],
},
],
})
)
})
})

View file

@ -2,7 +2,6 @@ import { TagUtils } from "../../../Logic/Tags/TagUtils"
import { equal } from "assert"
import { describe, expect, it } from "vitest"
describe("TagUtils", () => {
describe("ParseTag", () => {
it("should refuse a key!=* tag", () => {

View file

@ -23,7 +23,9 @@ describe("CreateNoteImportLayer", () => {
layer,
"ImportLayerGeneratorTest: convert"
)
expect(generatedLayer.isShown["and"][1].or[0].and[0]).toEqual("_tags~(^|.*;)amenity=public_bookcase($|;.*)")
expect(generatedLayer.isShown["and"][1].or[0].and[0]).toEqual(
"_tags~(^|.*;)amenity=public_bookcase($|;.*)"
)
// "Zoomlevel is to high"
expect(generatedLayer.minzoom <= layer.minzoom).toBe(true)
let renderings = Utils.NoNull(