diff --git a/Logic/MetaTagging.ts b/Logic/MetaTagging.ts index f4878ad..e4eb43c 100644 --- a/Logic/MetaTagging.ts +++ b/Logic/MetaTagging.ts @@ -7,10 +7,9 @@ import CountryCoder from "latlon2country" import {UIEventSource} from "./UIEventSource"; class SimpleMetaTagger { - private _f: (feature: any, index: number) => void; public readonly keys: string[]; public readonly doc: string; - + private _f: (feature: any, index: number) => void; constructor(keys: string[], doc: string, f: ((feature: any, index: number) => void)) { this.keys = keys; @@ -90,39 +89,39 @@ export default class MetaTagging { if (tags.opening_hours === undefined || tags._country === undefined) { return; } - try{ - - const oh = new opening_hours(tags["opening_hours"], { - lat: tags._lat, - lon: tags._lon, - address: { - country_code: tags._country.toLowerCase() - } - }, {tag_key: "opening_hours"}); - // AUtomatically triggered on the next change + try { + + const oh = new opening_hours(tags["opening_hours"], { + lat: tags._lat, + lon: tags._lon, + address: { + country_code: tags._country.toLowerCase() + } + }, {tag_key: "opening_hours"}); + // AUtomatically triggered on the next change const updateTags = () => { - const oldValueIsOpen = tags["_isOpen"]; - tags["_isOpen"] = oh.getState() ? "yes" : "no"; - const comment = oh.getComment(); - if (comment) { - tags["_isOpen:description"] = comment; - } + const oldValueIsOpen = tags["_isOpen"]; + tags["_isOpen"] = oh.getState() ? "yes" : "no"; + const comment = oh.getComment(); + if (comment) { + tags["_isOpen:description"] = comment; + } - if (oldValueIsOpen !== tags._isOpen) { - tagsSource.ping(); - } + if (oldValueIsOpen !== tags._isOpen) { + tagsSource.ping(); + } - const nextChange = oh.getNextChange(); + const nextChange = oh.getNextChange(); if (nextChange !== undefined) { - window.setTimeout( - updateTags, - (nextChange.getTime() - (new Date()).getTime()) - ) + window.setTimeout( + updateTags, + (nextChange.getTime() - (new Date()).getTime()) + ) + } } - } - updateTags(); - }catch(e){ - console.error(e); + updateTags(); + } catch (e) { + console.error("Error while parsing opening hours of ", tags.id, e); tags["_isOpen"] = "parse_error"; } @@ -235,8 +234,8 @@ export default class MetaTagging { let carWidthUsed = (onewayCar ? 1 : 2) * carWidth; properties["_width:needed:cars"] = Utils.Round(carWidthUsed); properties["_width:needed:parking"] = Utils.Round(parallelParkingCount * carWidth) - - + + let cyclistWidthUsed = 0; if (cyclingAllowed) { cyclistWidthUsed = (onewayBike ? 1 : 2) * cyclistWidth; @@ -251,16 +250,16 @@ export default class MetaTagging { carWidthUsed + cyclistWidthUsed + parallelParkingCount * carWidthUsed; - properties["_width:needed:no_pedestrians"] =Utils.Round(targetWidthIgnoringPedestrians); - + properties["_width:needed:no_pedestrians"] = Utils.Round(targetWidthIgnoringPedestrians); + const pedestriansNeed = Math.max(0, pedestrianFlowNeeded) * pedestrianWidth; - const targetWidth = targetWidthIgnoringPedestrians + pedestriansNeed ; + const targetWidth = targetWidthIgnoringPedestrians + pedestriansNeed; properties["_width:needed"] = Utils.Round(targetWidth); properties["_width:needed:pedestrians"] = Utils.Round(pedestriansNeed) - properties["_width:difference"] = Utils.Round(targetWidth - width ); - properties["_width:difference:no_pedestrians"] = Utils.Round(targetWidthIgnoringPedestrians - width) ; + properties["_width:difference"] = Utils.Round(targetWidth - width); + properties["_width:difference:no_pedestrians"] = Utils.Round(targetWidthIgnoringPedestrians - width); } ); diff --git a/assets/layers/cycling_themed_object/cycling_themed_objects.json b/assets/layers/cycling_themed_object/cycling_themed_objects.json index 7e57106..8396ea5 100644 --- a/assets/layers/cycling_themed_object/cycling_themed_objects.json +++ b/assets/layers/cycling_themed_object/cycling_themed_objects.json @@ -7,7 +7,15 @@ "de": "Mit Fahrrad zusammenhängendes Objekt" }, "minzoom": 13, - "overpassTags": {"or": ["theme~cycling|bicycle", "sport=cycling"]}, + "overpassTags": { + "or": [ + "theme~cycling|bicycle", + "sport=cycling", + "association~cycling|bicycle", + "ngo~cycling|bicycle", + "club~bicycle|cycling" + ] + }, "title": { "render": { "en": "Bike related object", @@ -18,7 +26,7 @@ "mappings": [ { "if": "name~*", - "then":"{name}" + "then": "{name}" }, { "if": "leisure=track", @@ -30,32 +38,13 @@ ] }, "description": {}, - "tagRenderings": [ "images", - - { - "render": "{website}", - "freeform": { - "key": "website" - } - }, - { - "render": "{phone}", - "freeform": { - "key": "phone" - } - }, - { - "render": "{email}", - "freeform": { - "key": "email" - } - }, - { - "render": "{opening_hours_table(opening_hours)}", - "freeform": { - "key": "opening_hours" - } - } + "tagRenderings": [ + "images", + "description", + "website", + "email", + "phone", + "opening_hours" ], "hideUnderlayingFeaturesMinPercentage": 0, "icon": {