diff --git a/assets/layers/shops/shops.json b/assets/layers/shops/shops.json index d41defa33f..36b2e10ee5 100644 --- a/assets/layers/shops/shops.json +++ b/assets/layers/shops/shops.json @@ -637,12 +637,27 @@ "softDeletionTags": { "and": [ "shop=", + "phone=", + "website=", + "email=", + "opening_hours=", "disused:shop:={shop}" ] }, - "extraDeleteReasons": [ + "omitDefaultDeleteReasons": ["disused"], + "nonDeleteMappings": [ { - "explanation": { + "if": { + "and": [ + "shop=", + "phone=", + "website=", + "email=", + "opening_hours=", + "disused:shop:={shop}" + ] + }, + "then": { "nl": "{title()} is permanent gestopt", "en": "{title()} has closed down permanently", "de": "{title()} wurde dauerhaft geschlossen", @@ -650,8 +665,7 @@ "fr": "{title()} a fermé définitivement", "ca": "{title()} ha tancat permanentment", "cs": "{title()} je trvale uzavřen" - }, - "changesetMessage": "shop_closed" + } } ] }, diff --git a/src/Models/ThemeConfig/DeleteConfig.ts b/src/Models/ThemeConfig/DeleteConfig.ts index 81c5f07bde..4abcdfa167 100644 --- a/src/Models/ThemeConfig/DeleteConfig.ts +++ b/src/Models/ThemeConfig/DeleteConfig.ts @@ -35,11 +35,9 @@ export default class DeleteConfig { explanation: TypedTranslation | Translation changesetMessage: string }[] - - private readonly nonDeleteMappings?: { if: TagConfigJson; then: Translation }[] - public readonly softDeletionTags?: TagsFilter public readonly neededChangesets?: number + private readonly nonDeleteMappings?: { if: TagConfigJson; then: Translation }[] constructor(json: DeleteConfigJson, context: string) { this.deleteReasons = (json.extraDeleteReasons ?? []).map((reason, i) => { @@ -53,8 +51,17 @@ export default class DeleteConfig { } }) - if (!json.omitDefaultDeleteReasons) { - for (const defaultDeleteReason of DeleteConfig.defaultDeleteReasons) { + { + let deleteReasons = DeleteConfig.defaultDeleteReasons + if (json.omitDefaultDeleteReasons === true) { + deleteReasons = [] + } else if (json.omitDefaultDeleteReasons) { + const forbidden = json.omitDefaultDeleteReasons + deleteReasons = deleteReasons.filter( + (dl) => forbidden.indexOf(dl.changesetMessage) < 0 + ) + } + for (const defaultDeleteReason of deleteReasons) { this.deleteReasons.push({ changesetMessage: defaultDeleteReason.changesetMessage, explanation: @@ -117,6 +124,7 @@ export default class DeleteConfig { mappings, id: "why-delete", } + console.log("Delete config", config) return new TagRenderingConfig(config) } } diff --git a/src/Models/ThemeConfig/Json/DeleteConfigJson.ts b/src/Models/ThemeConfig/Json/DeleteConfigJson.ts index f5828fe179..3dcadd5917 100644 --- a/src/Models/ThemeConfig/Json/DeleteConfigJson.ts +++ b/src/Models/ThemeConfig/Json/DeleteConfigJson.ts @@ -1,4 +1,5 @@ import { TagConfigJson } from "./TagConfigJson" +import { UploadableTag } from "../../../Logic/Tags/TagUtils" export interface DeleteConfigJson { /*** @@ -100,5 +101,5 @@ export interface DeleteConfigJson { * iffalse: Show the default delete reasons * ifunset: Show the default delete reasons (default behaviour) */ - omitDefaultDeleteReasons?: false | boolean + omitDefaultDeleteReasons?: false | boolean | ("disused" | string)[] } diff --git a/src/UI/Popup/DeleteFlow/DeleteWizard.svelte b/src/UI/Popup/DeleteFlow/DeleteWizard.svelte index d1121b35d9..d6aa195fa0 100644 --- a/src/UI/Popup/DeleteFlow/DeleteWizard.svelte +++ b/src/UI/Popup/DeleteFlow/DeleteWizard.svelte @@ -10,8 +10,8 @@ import type { Feature } from "geojson" import { UIEventSource } from "../../../Logic/UIEventSource" import LayerConfig from "../../../Models/ThemeConfig/LayerConfig" - import { TagsFilter } from "../../../Logic/Tags/TagsFilter" - import { TagUtils } from "../../../Logic/Tags/TagUtils" + import { TagUtils } from "../../../Logic/Tags/TagUtils" + import type { UploadableTag } from "../../../Logic/Tags/TagUtils" import OsmChangeAction from "../../../Logic/Osm/Actions/OsmChangeAction" import DeleteAction from "../../../Logic/Osm/Actions/DeleteAction" import ChangeTagAction from "../../../Logic/Osm/Actions/ChangeTagAction" @@ -42,7 +42,7 @@ const t = Translations.t.delete - let selectedTags: TagsFilter + let selectedTags: UploadableTag let changedProperties = undefined $: changedProperties = TagUtils.changeAsProperties(selectedTags?.asChange(tags?.data ?? {}) ?? []) let isHardDelete = undefined diff --git a/src/UI/SpecialVisualizations.ts b/src/UI/SpecialVisualizations.ts index 5c75b91e92..28e216e45f 100644 --- a/src/UI/SpecialVisualizations.ts +++ b/src/UI/SpecialVisualizations.ts @@ -988,6 +988,7 @@ export default class SpecialVisualizations { return undefined } return new SvelteUIElement(SpecialTranslation, { + t: title, tags: tagsSource, state, feature,