From f026e6e2f1215a9c42a839a4c3f10d4e08f1a357 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 7 Jul 2022 17:46:40 +0200
Subject: [PATCH] cycle_routes: like main, but with all routes from z12

---
 cycle_routes.json | 190 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 190 insertions(+)
 create mode 100644 cycle_routes.json

diff --git a/cycle_routes.json b/cycle_routes.json
new file mode 100644
index 0000000..cf22af3
--- /dev/null
+++ b/cycle_routes.json
@@ -0,0 +1,190 @@
+{
+    "type": "overpass",
+    "name": {
+        "de": "Radrouten",
+        "en": "Cycle Routes",
+        "fr": "Itinéraires vélo",
+        "hu": "Kerékpáros útvonalak",
+        "pt": "Ciclovias",
+        "pt-br": "Ciclorrotas"
+    },
+    "query": {
+        "6": "relation[type=route][route~\"^(|.*;)bicycle(|;.*)$\"][network~'^(|.*;)(icn)(|;.*)$']",
+        "9": "relation[type=route][route~\"^(|.*;)bicycle(|;.*)$\"][network~'^(|.*;)(icn|ncn)(|;.*)$']",
+        "12": "relation[type=route][route~\"^(|.*;)bicycle(|;.*)$\"][network~'^(|.*;)(icn|ncn|rcn)(|;.*)$']",
+        "12": "relation[type=route][route~\"^(|.*;)bicycle(|;.*)$\"]"
+    },
+    "members": true,
+    "feature": {
+        "pre": [
+            "{% set network = tags.network %}",
+            "{% for n in tags.network|split(';') %}",
+            "{% if n|matches('cn$') %}{% set network = n %}{% endif %}",
+            "{% endfor %}"
+        ],
+        "title": "{% if tags.ref and tags.name %}{{ tags.ref }} - {{ tags.name }}{% elseif tags.ref %}{{ tags.ref }}{% elseif tags.name %}{{ tags.name }}{% endif %}",
+        "description": "{{ tagTrans('network', network) }}",
+        "markerSymbol": "",
+        "listMarkerSymbol": "{{ markerLine({ 'width': 4, 'color': const[network].color|default(const[''].color) })|raw }}",
+        "priority": "{{ const[network].priority|default(4) }}",
+        "styles": "",
+        "style:hover": {
+            "width": "0"
+        },
+        "style:selected": {
+            "width": "0"
+        }
+    },
+    "memberFeature": {
+        "pre": [
+            "{% set priority = 4 %}",
+            "{% set network = '' %}",
+            "{% set refs = [] %}",
+            "{% set dirForward = false %}",
+            "{% set dirBackward = false %}",
+            "{% set hover = false %}",
+            "{% set selected = false %}",
+            "",
+            "{% for master in masters %}",
+            "  {% set masterNetwork = '' %}",
+            "  {% for n in master.tags.network|split(';') %}",
+            "    {% if n|matches('cn$') %}{% set masterNetwork = n %}{% endif %}",
+            "  {% endfor %}",
+            "  {% set _p = const[masterNetwork].priority|default(4) %}",
+            "  {% if _p < priority %}",
+            "    {% set priority = _p %}",
+            "    {% set network = masterNetwork %}",
+            "  {% endif %}",
+            "  {% if master.tags.ref %}",
+            "    {% set refs = refs|merge([ master.tags.ref ]) %}",
+            "  {% endif %}",
+            "  {% if master.role == 'forward' %}{% set dirForward = true %}",
+            "  {% elseif master.role == 'backward' %}{% set dirBackward = true %}",
+            "  {% else %}{% set dirForward = true %}{% set dirBackward = true %}",
+            "  {% endif %}",
+            "  {% if master.flags.hover %}{% set hover = master.role|default('both') %}{% endif %}",
+            "  {% if master.flags.selected %}{% set selected = master.role|default('both') %}{% endif %}",
+            "{% endfor %}"
+        ],
+        "title": "",
+        "body": [
+            "<h4>Routes</h4>",
+            "<ul class='overpass-layer-list'>",
+            "{% for master in masters %}",
+            "  {% set masterNetwork = '' %}",
+            "  {% for n in master.tags.network|split(';') %}",
+            "    {% if n|matches('cn$') %}{% set masterNetwork = n %}{% endif %}",
+            "  {% endfor %}",
+            "  <li data-object=\"{{ master.id }}\"><a>",
+            "    <div class='marker'>",
+            "      <div class='symbol'>{{ markerLine({ width: 4, color: const[masterNetwork].color|default(const[''].color) })|raw }}</div>",
+            "    </div>",
+            "    <div class='content'>",
+            "      <div class='description'>{{ tagTrans('network', masterNetwork) }}</div>",
+            "      <div class='title'>{% if master.tags.ref and master.tags.name %}{{ master.tags.ref }} - {{ master.tags.name|default(master.tags.ref) }}{% elseif master.tags.ref %}{{ master.tags.ref }}{% elseif master.tags.name %}{{ master.tags.name }}{% else %}{{ trans('unnamed') }}{% endif %}</div>",
+            "    </div>",
+            "  </a></li>",
+            "{% endfor %}",
+            "</ul>"
+        ],
+        "listExclude": "1",
+        "styles": "default{% if hover %},hover{% endif %}{% if selected %},selected{% endif %}",
+        "style": {
+            "width": "4",
+            "color": "{{ const[network].color }}",
+            "opacity": "1",
+            "lineCap": "{% if not dirForward or not dirBackward %}butt{% else %}round{% endif %}",
+            "dashArray": "{% if not dirForward or not dirBackward %}27,8{% endif %}",
+            "dashOffset": "{% if dirBackward %}28{% else %}0{% endif %}",
+            "noClip": "{% if not dirForward or not dirBackward %}true{% else %}false{% endif %}",
+            "text": "{{ refs|join(' · ') }}             ",
+            "textRepeat": "1",
+            "textOffset": "12",
+            "pattern": "{% if dirForward and dirBackward %}{% else %}arrowHead{% endif %}",
+            "pattern-offset": "{% if dirBackward %}4{% else %}30.5{% endif %}",
+            "pattern-repeat": "35",
+            "pattern-polygon": "true",
+            "pattern-pixelSize": "9",
+            "pattern-angleCorrection": "{% if dirBackward %}180{% else %}0{% endif %}",
+            "pattern-path-width": "0",
+            "pattern-path-color": "{{ const[network].color }}",
+            "pattern-path-fillOpacity": "1",
+            "textFontWeight": "bold"
+        },
+        "style:hover": {
+            "pane": "hover",
+            "width": "4",
+            "color": "black",
+            "lineCap": "{% if hover == 'forward' or hover == 'backward' %}butt{% else %}round{% endif %}",
+            "dashArray": "{% if hover == 'forward' or hover == 'backward' %}27,8{% endif %}",
+            "dashOffset": "{% if hover == 'backward' %}28{% else %}0{% endif %}",
+            "noClip": "{% if hover == 'forward' or hover == 'backward' %}true{% else %}false{% endif %}",
+            "pattern": "{% if hover == 'forward' or hover == 'backward' %}arrowHead{% endif %}",
+            "pattern-offset": "{% if hover == 'backward' %}4{% else %}30.5{% endif %}",
+            "pattern-repeat": "35",
+            "pattern-polygon": "true",
+            "pattern-pixelSize": "9",
+            "pattern-angleCorrection": "{% if hover == 'backward' %}180{% else %}0{% endif %}",
+            "pattern-path-width": "0",
+            "pattern-path-color": "black",
+            "pattern-path-fillOpacity": "1"
+        },
+        "style:selected": {
+            "pane": "selected",
+            "width": "4",
+            "color": "#3f3f3f",
+            "lineCap": "{% if selected == 'forward' or selected == 'backward' %}butt{% else %}round{% endif %}",
+            "dashArray": "{% if selected == 'forward' or selected == 'backward' %}27,8{% endif %}",
+            "dashOffset": "{% if selected == 'backward' %}28{% else %}0{% endif %}",
+            "noClip": "{% if selected == 'forward' or selected == 'backward' %}true{% else %}false{% endif %}",
+            "pattern": "{% if selected == 'forward' or selected == 'backward' %}arrowHead{% endif %}",
+            "pattern-offset": "{% if selected == 'backward' %}4{% else %}30.5{% endif %}",
+            "pattern-repeat": "35",
+            "pattern-polygon": "true",
+            "pattern-pixelSize": "9",
+            "pattern-angleCorrection": "{% if selected == 'backward' %}180{% else %}0{% endif %}",
+            "pattern-path-width": "0",
+            "pattern-path-color": "#3f3f3f",
+            "pattern-path-fillOpacity": "1"
+        }
+    },
+    "const": {
+        "icn": {
+            "color": "#ff0000",
+            "priority": 0,
+            "zoom": 6
+        },
+        "ncn": {
+            "color": "#ff00ba",
+            "priority": 1,
+            "zoom": 9
+        },
+        "rcn": {
+            "color": "#ba00ff",
+            "priority": 2,
+            "zoom": 12
+        },
+        "lcn": {
+            "color": "#0000ff",
+            "priority": 3,
+            "zoom": 15
+        },
+        "": {
+            "color": "#007fff",
+            "priority": 4,
+            "zoom": 15
+        }
+    },
+    "info": [
+        "<table>",
+        "{% for value, data in const %}",
+        "{% if data.zoom <= map.zoom %}",
+        "  <tr>",
+        "    <td>{{ markerLine({ 'width': 4, color: data.color })|raw }}</td>",
+        "    <td>{% if value %}{{ tagTrans('network', value) }}{% else %}{{ trans('unknown') }}{% endif %}</td>",
+        "  </tr>",
+        "{% endif %}",
+        "{% endfor %}",
+        "</table>"
+    ]
+}