From 37cdf0f01ac9a3dfea919a786712902cfe75ec90 Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Sat, 2 Dec 2023 03:18:53 +0100 Subject: [PATCH] Add title icons to favourites layer --- assets/layers/favourite/favourite.proto.json | 1 + assets/layers/icons/icons.json | 12 +++--- scripts/generateFavouritesLayer.ts | 44 +++++++++++++++++--- 3 files changed, 45 insertions(+), 12 deletions(-) diff --git a/assets/layers/favourite/favourite.proto.json b/assets/layers/favourite/favourite.proto.json index 57ff79f1f..7ad0e3d25 100644 --- a/assets/layers/favourite/favourite.proto.json +++ b/assets/layers/favourite/favourite.proto.json @@ -1,5 +1,6 @@ { "#":"no-translations", + "#dont-translate": "*", "pointRendering": [ { "location": [ diff --git a/assets/layers/icons/icons.json b/assets/layers/icons/icons.json index 72a387f9e..16edab759 100644 --- a/assets/layers/icons/icons.json +++ b/assets/layers/icons/icons.json @@ -14,7 +14,7 @@ { "id": "wikipedialink", "labels": [ - "defaults" + "defaults", "in_favourite" ], "render": "Wikipedia", "condition": { @@ -69,7 +69,7 @@ { "id": "phonelink", "labels": [ - "defaults" + "defaults", "in_favourite" ], "render": "phone", "mappings": [ @@ -89,7 +89,7 @@ { "id": "emaillink", "labels": [ - "defaults" + "defaults", "in_favourite" ], "render": "email", "mappings": [ @@ -109,7 +109,7 @@ { "id": "websitelink", "labels": [ - "defaults" + "defaults", "in_favourite" ], "render": "website", "condition": "website~*" @@ -117,7 +117,7 @@ { "id": "smokingicon", "labels": [ - "defaults" + "defaults", "in_favourite" ], "mappings": [ { @@ -171,7 +171,7 @@ { "id": "dogicon", "labels": [ - "defaults" + "defaults", "in_favourite" ], "mappings": [ { diff --git a/scripts/generateFavouritesLayer.ts b/scripts/generateFavouritesLayer.ts index 2cc0abf9d..a60e9f22c 100644 --- a/scripts/generateFavouritesLayer.ts +++ b/scripts/generateFavouritesLayer.ts @@ -13,7 +13,7 @@ import { TagConfigJson } from "../src/Models/ThemeConfig/Json/TagConfigJson" import { TagUtils } from "../src/Logic/Tags/TagUtils" import { TagRenderingConfigJson } from "../src/Models/ThemeConfig/Json/TagRenderingConfigJson" import { Translatable } from "../src/Models/ThemeConfig/Json/Translatable" - +import icons from "../src/assets/generated/layers/icons.json" export class GenerateFavouritesLayer extends Script { private readonly layers: LayerConfigJson[] = [] @@ -51,10 +51,11 @@ export class GenerateFavouritesLayer extends Script { "move-button", "delete-button", "all-tags", + "all_tags", ...AddEditingElements.addedElements, ]) - const generateTagRenderings: (string | QuestionableTagRenderingConfigJson)[] = [] + const generatedTagRenderings: (string | QuestionableTagRenderingConfigJson)[] = [] const trPerId = new Map< string, { conditions: TagConfigJson[]; tr: QuestionableTagRenderingConfigJson } @@ -68,7 +69,7 @@ export class GenerateFavouritesLayer extends Script { if (blacklistedIds.has(tagRendering)) { continue } - generateTagRenderings.push(tagRendering) + generatedTagRenderings.push(tagRendering) blacklistedIds.add(tagRendering) continue } @@ -97,14 +98,14 @@ export class GenerateFavouritesLayer extends Script { newTr.condition = { and: Utils.NoNull([(newTr.condition, layerConfig.source["osmTags"])]), } - generateTagRenderings.push(newTr) + generatedTagRenderings.push(newTr) blacklistedIds.add(newTr.id) continue } } if (!trPerId.has(id)) { const newTr = Utils.Clone(tagRendering) - generateTagRenderings.push(newTr) + generatedTagRenderings.push(newTr) trPerId.set(newTr.id, { tr: newTr, conditions: [] }) } const conditions = trPerId.get(id).conditions @@ -142,13 +143,43 @@ export class GenerateFavouritesLayer extends Script { }, } proto.tagRenderings = [ - ...generateTagRenderings, + "images", + ...generatedTagRenderings, ...proto.tagRenderings, "questions", allTags, ] } + private addTitleIcons(proto: LayerConfigJson) { + proto.titleIcons = [] + const seenTitleIcons = new Set() + for (const layer of this.layers) { + for (const titleIcon of layer.titleIcons) { + if (typeof titleIcon === "string") { + continue + } + if (titleIcon["labels"]?.indexOf("defaults") >= 0) { + continue + } + if (titleIcon.id === "rating") { + if (!seenTitleIcons.has("rating")) { + proto.titleIcons.unshift("icons.rating") + seenTitleIcons.add("rating") + } + continue + } + if (seenTitleIcons.has(titleIcon.id)) { + continue + } + seenTitleIcons.add(titleIcon.id) + console.log("Adding ", titleIcon.id) + proto.titleIcons.push(titleIcon) + } + } + proto.titleIcons.push("icons.defaults") + } + private addTitle(proto: LayerConfigJson) { const mappings: MappingConfigJson[] = [] for (const layer of this.layers) { @@ -227,6 +258,7 @@ export class GenerateFavouritesLayer extends Script { const proto = this.readLayer("favourite/favourite.proto.json") this.addTagRenderings(proto) this.addTitle(proto) + this.addTitleIcons(proto) writeFileSync("./assets/layers/favourite/favourite.json", JSON.stringify(proto, null, " ")) }