diff --git a/helper.ts b/helper.ts index b1125e6..8e195b8 100644 --- a/helper.ts +++ b/helper.ts @@ -1,53 +1,63 @@ -import { legacyOverlayDefinitions } from './src/components/overlays/overlay-definitions'; - -let filters: any[] = ['any']; - -Object.keys(legacyOverlayDefinitions).forEach((key) => { - const definition = legacyOverlayDefinitions[key]; - let filter: any[] = ['in', key]; - Object.keys(definition).forEach((subKey) => { - filter = [...filter, subKey]; - }); - filters = [...filters, filter]; -}); +import { + overlayDefinitions, + osmTags, +} from './src/components/overlays/overlay-definitions'; // One timer -let tags = {}; -let overlays = {}; +// let tags = {}; +// let overlays = {}; -for (const tagName of Object.keys(legacyOverlayDefinitions)) { - for (const tagValue of Object.keys(legacyOverlayDefinitions[tagName])) { - tags[tagValue] = { name: tagName, value: tagValue }; - for (const activity of Object.keys( - legacyOverlayDefinitions[tagName][tagValue] - )) { - if (!overlays[activity]) { - overlays[activity] = {}; - } - for (const category of Object.keys( - legacyOverlayDefinitions[tagName][tagValue][activity] - )) { - if (!overlays[activity][category]) { - overlays[activity][category] = []; - } - overlays[activity][category].push(tagValue); - } - } - } -} +// for (const tagName of Object.keys(legacyOverlayDefinitions)) { +// for (const tagValue of Object.keys(legacyOverlayDefinitions[tagName])) { +// tags[tagValue] = { name: tagName, value: tagValue }; +// for (const activity of Object.keys( +// legacyOverlayDefinitions[tagName][tagValue] +// )) { +// if (!overlays[activity]) { +// overlays[activity] = {}; +// } +// for (const category of Object.keys( +// legacyOverlayDefinitions[tagName][tagValue][activity] +// )) { +// if (!overlays[activity][category]) { +// overlays[activity][category] = []; +// } +// overlays[activity][category].push(tagValue); +// } +// } +// } +// } -console.log({ - caller: 'onetimer / result', - tags: JSON.stringify(tags), - overlays: JSON.stringify(overlays), -}); +// console.log({ +// caller: 'onetimer / result', +// tags: JSON.stringify(tags), +// overlays: JSON.stringify(overlays), +// }); // End of one timer -// console.log({ -// legacyOverlayDefinitions, -// filters, -// json: JSON.stringify(filters), -// overlays: JSON.stringify(overlays), -// }); +for (const overlayCategory of Object.keys(overlayDefinitions)) { + let filters: any[] = ['any']; + const definitions = overlayDefinitions[overlayCategory]; + let tags = {}; + for (const category of Object.keys(definitions)) { + //console.log({ category }); + for (const tagId of definitions[category]) { + //console.log({ tagId }); + const tag = osmTags[tagId]; + if (!tags[tag.name]) { + tags[tag.name] = []; + } + tags[tag.name].push(tag.value); + } + } + for (const tagName of Object.keys(tags)) { + let filter = ['in', tagName]; + for (const tagValue of tags[tagName]) { + filter.push(tagValue); + } + filters.push(filter); + } + console.log({ overlayCategory, filters: JSON.stringify(filters) }); +} diff --git a/src/components/gpx/styles.ts b/src/components/gpx/styles.ts index aa785bc..35bc1c8 100644 --- a/src/components/gpx/styles.ts +++ b/src/components/gpx/styles.ts @@ -20,12 +20,12 @@ import { createDefaultStyle } from 'ol/style/Style'; import osmIcons from './osm-icons'; import { getZoomInteger } from '../map/Map'; -import { - getTagType, - isHighlightedTagType, -} from '../map-tile-provider/MapTileProvider'; +import { isHighlightedTagType } from '../map-tile-provider/MapTileProvider'; import { getCenter } from 'ol/extent'; -import { getVectorTileFeatureType } from '../overlays/overlay-definitions'; +import { + getVectorTileFeatureType, + getTagType, +} from '../overlays/overlay-definitions'; import { Category } from '../wpt/WptEditDialog'; interface StyleParameters { diff --git a/src/components/infos/Infos.tsx b/src/components/infos/Infos.tsx index ef19ea8..bd7d08e 100644 --- a/src/components/infos/Infos.tsx +++ b/src/components/infos/Infos.tsx @@ -13,14 +13,11 @@ import Dialog from '../dialog'; import Tree from '../tree'; import { GpxViewer } from '../gpx'; import { Browser } from '@capacitor/browser'; -import { isHighlighted } from '../map-tile-provider'; -import { - isHighlightedTagType, - getTagType, -} from '../map-tile-provider/MapTileProvider'; +import { isHighlightedTagType } from '../map-tile-provider/MapTileProvider'; import style from '../gpx/styles'; import OsmFindAll from './OsmFindAll'; import { toLonLat } from 'ol/proj'; +import { getTagType } from '../overlays/overlay-definitions'; const Item = styled(Paper)(({ theme }) => ({ ...theme.typography.body2, diff --git a/src/components/map-tile-provider/MapTileProvider.tsx b/src/components/map-tile-provider/MapTileProvider.tsx index 6a293ad..e2f88a5 100644 --- a/src/components/map-tile-provider/MapTileProvider.tsx +++ b/src/components/map-tile-provider/MapTileProvider.tsx @@ -1,9 +1,7 @@ import OSM from 'ol/source/OSM'; import XYZ from 'ol/source/XYZ'; import { Component, createEffect, createSignal, For, Show } from 'solid-js'; -import { - useI18n, -} from '@solid-primitives/i18n'; +import { useI18n } from '@solid-primitives/i18n'; import style from './MapTileProvider.module.css'; import LayersIcon from '@suid/icons-material/Layers'; @@ -25,6 +23,7 @@ import { overlayDefinitions, osmTags, OsmTag, + getTagType, } from '../overlays/overlay-definitions'; import { cloneDeep } from 'lodash'; @@ -152,17 +151,6 @@ const currentOverlayHighlightedKey = () => ? currentOverlay().highlighted : 'none'; -export const getTagType = (feature: Feature) => { - for (const tagType of Object.keys(osmTags)) { - const tag: OsmTag = osmTags[tagType]; - const tagValue = feature.get(tag.name); - if (tagValue === tag.value) { - return tagType; - } - } - return false; -}; - export const isHighlightedTagType = (tagType: string) => { const currentOverlayHighlightedDefinition: string[] = overlayDefinitions[currentOverlayKey()][currentOverlayHighlightedKey()]; diff --git a/src/components/overlays/index.ts b/src/components/overlays/index.ts index 4b62ab5..576286f 100644 --- a/src/components/overlays/index.ts +++ b/src/components/overlays/index.ts @@ -1 +1,6 @@ -import { overlayDefinitions, OsmTag, osmTags } from './overlay-definitions'; +import { + overlayDefinitions, + OsmTag, + osmTags, + getTagType, +} from './overlay-definitions'; diff --git a/src/components/overlays/overlay-definitions.ts b/src/components/overlays/overlay-definitions.ts index 1c0a828..3d40180 100644 --- a/src/components/overlays/overlay-definitions.ts +++ b/src/components/overlays/overlay-definitions.ts @@ -1,5 +1,4 @@ import { Feature } from 'ol'; -import { getTagType } from '../map-tile-provider/MapTileProvider'; export interface OsmTag { name: string; @@ -270,6 +269,17 @@ export const overlayDefinitions = { }, }; +export const getTagType = (feature: Feature) => { + for (const tagType of Object.keys(osmTags)) { + const tag: OsmTag = osmTags[tagType]; + const tagValue = feature.get(tag.name); + if (tagValue === tag.value) { + return tagType; + } + } + return false; +}; + export const getVectorTileFeatureType = (feature: Feature) => { if ( ['hiking'].includes(feature.get('route')) || diff --git a/src/styles/hiking.json b/src/styles/hiking.json index a1406ed..3177033 100644 --- a/src/styles/hiking.json +++ b/src/styles/hiking.json @@ -49,27 +49,31 @@ "in", "amenity", "bar", + "pub", + "cafe", + "drinking_water", + "water_point", "fast_food", "food_court", "pub", "restaurant", - "cafe", "atm", "bank", + "atm", + "bank", + "waste_basket", + "waste_disposal", + "vending_machine", "doctors", "hospital", "pharmacy", "police", - "fire_station", - "drinking_water", - "water_point", - "waste_basket", - "waste_disposal", - "vending_machine" + "fire_station" ], [ "in", "shop", + "water", "bakery", "butcher", "cheese", @@ -82,13 +86,12 @@ "pasta", "pastry", "seafood", - "water", - "department_store", - "general", - "mall", "supermarket", "wholesale", "outdoor", + "department_store", + "general", + "mall", "laundry" ], [