diff --git a/assets/favicons/linz.at.png b/assets/favicons/linz.at.png
new file mode 100644
index 0000000..6d3b67c
Binary files /dev/null and b/assets/favicons/linz.at.png differ
diff --git a/canvastest.html b/canvastest.html
index 3f75545..6e0e4ad 100644
--- a/canvastest.html
+++ b/canvastest.html
@@ -4,7 +4,6 @@
Rainbow Road
-
diff --git a/data/Oberösterreich.json b/data/Oberösterreich.json
index 9206687..da88f23 100644
--- a/data/Oberösterreich.json
+++ b/data/Oberösterreich.json
@@ -27,5 +27,143 @@
],
"length": 9.45
}
+ },
+ {
+ "id": 2,
+ "name": "Mozartkreuzung 1/2",
+ "type": "prideFlag",
+ "set": "Mozartkreuzung",
+ "sources": [
+ {
+ "type": "official",
+ "url": "https://www.linz.at/medienservice/2022/202205_115199.php",
+ "date": "2022-05-12"
+ }
+ ],
+ "geosource": {
+ "type": "OSMway",
+ "wayID": 140335416
+ },
+ "geo": {
+ "coords": [
+ [
+ 14.2926493,
+ 48.3014648
+ ],
+ [
+ 14.2927263,
+ 48.3013794
+ ]
+ ],
+ "length": 11.07
+ }
+ },
+ {
+ "id": 3,
+ "name": "Mozartkreuzung 2/2",
+ "type": "prideFlag",
+ "set": "Mozartkreuzung",
+ "sources": [
+ {
+ "type": "official",
+ "url": "https://www.linz.at/medienservice/2022/202205_115199.php",
+ "date": "2022-05-12"
+ }
+ ],
+ "geosource": {
+ "type": "OSMway",
+ "wayID": 142813763
+ },
+ "geo": {
+ "coords": [
+ [
+ 14.2925177,
+ 48.3013095
+ ],
+ [
+ 14.2923495,
+ 48.3014183
+ ]
+ ],
+ "length": 17.35
+ }
+ },
+ {
+ "id": 4,
+ "name": "Grieskirchen",
+ "type": "prideFlag",
+ "sources": [
+ {
+ "type": "news",
+ "url": "https://www.tips.at/nachrichten/grieskirchen/wirtschaft-politik/572149-alle-parteien-stimmten-fuer-grieskirchner-regenbogenzebrastreifen",
+ "date": "2022-07-01"
+ }
+ ],
+ "unknownLocation": true,
+ "comment": "Standort unbekannt/einstimmig im Gemeinderat angenommen",
+ "geosource": {
+ "type": "RawCoords",
+ "coords": [
+ [
+ 13.82711,
+ 48.236
+ ],
+ [
+ 13.82775,
+ 48.236
+ ]
+ ]
+ },
+ "geo": {
+ "coords": [
+ [
+ 13.82711,
+ 48.236
+ ],
+ [
+ 13.82775,
+ 48.236
+ ]
+ ],
+ "length": 47.4
+ }
+ },
+ {
+ "id": 5,
+ "name": "Bad Ischl",
+ "type": "prideFlag",
+ "sources": [
+ {
+ "type": "news",
+ "url": "https://www.meinbezirk.at/salzkammergut/c-lokales/erster-regenbogen-zebrastreifen-im-salzkammergut_a5321260",
+ "date": "2022-05-04"
+ }
+ ],
+ "geosource": {
+ "type": "RawCoords",
+ "coords": [
+ [
+ 13.62115,
+ 47.71034
+ ],
+ [
+ 13.62126,
+ 47.71038
+ ]
+ ]
+ },
+ "geo": {
+ "coords": [
+ [
+ 13.62115,
+ 47.71034
+ ],
+ [
+ 13.62126,
+ 47.71038
+ ]
+ ],
+ "length": 9.36
+ }
}
]
diff --git a/data/schema.json b/data/schema.json
index 7f60c17..1479d7b 100644
--- a/data/schema.json
+++ b/data/schema.json
@@ -119,6 +119,9 @@
"set": {
"type": "string"
},
+ "unknownLocation": {
+ "type": "boolean"
+ },
"sources": {
"type": "array",
"items": {
diff --git a/index.html b/index.html
index bb0a335..e7156dd 100644
--- a/index.html
+++ b/index.html
@@ -4,7 +4,6 @@
Rainbow Road
-
diff --git a/missing.md b/missing.md
index 1a8ffca..dd79572 100644
--- a/missing.md
+++ b/missing.md
@@ -11,3 +11,8 @@ Linz:
https://www.weekend.at/bundesland/oberoesterreich/neue-regenbogen-zebrastreifen-linz
https://www.linzwiki.at/wiki/Datei:Regenbogen-Zebrastreifen_Mozartkreuzung.jpg/
https://www.linz.at/medienservice/2022/202206_115655.php
+
+OÖ:
+- Ried
+- Steyr
+- Steyregg (https://www.meinbezirk.at/linz/c-politik/steyregg-setzt-buntes-zeichen-gegen-identitaere-bewegung_a4793903)
diff --git a/package-lock.json b/package-lock.json
index 08fa864..c84be33 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -15,7 +15,7 @@
"micromodal": "^0.4.10",
"navigo": "^8.11.1",
"node-fetch": "^3.2.10",
- "ol": "^6.14.1",
+ "ol": "^7.0.0",
"ts-node": "^10.9.1"
},
"devDependencies": {
@@ -84,16 +84,16 @@
}
},
"node_modules/@mapbox/mapbox-gl-style-spec": {
- "version": "13.25.0",
- "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-style-spec/-/mapbox-gl-style-spec-13.25.0.tgz",
- "integrity": "sha512-ukBk13MyI/X4tjRfPaNCo4rJLrRJ7ZbANxjeQyGeLYJTF1DZxqkX9C8qlxnQlxYllBBDBWiYYX5lU1fIsm2jwg==",
+ "version": "13.26.0",
+ "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-style-spec/-/mapbox-gl-style-spec-13.26.0.tgz",
+ "integrity": "sha512-Ya1WiNz1qYau7xPYPQUbionrw9pjgZAIebGQdDXgwJuSAWeVCr02P7rqbYFHbXqX5TeAaq4qVpcaJb9oZtgaVQ==",
"dependencies": {
"@mapbox/jsonlint-lines-primitives": "~2.0.2",
"@mapbox/point-geometry": "^0.1.0",
"@mapbox/unitbezier": "^0.0.0",
"csscolorparser": "~1.0.2",
"json-stringify-pretty-compact": "^2.0.0",
- "minimist": "^1.2.5",
+ "minimist": "^1.2.6",
"rw": "^1.3.3",
"sort-object": "^0.3.2"
},
@@ -146,9 +146,9 @@
"dev": true
},
"node_modules/@types/node": {
- "version": "18.7.1",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.1.tgz",
- "integrity": "sha512-GKX1Qnqxo4S+Z/+Z8KKPLpH282LD7jLHWJcVryOflnsnH+BtSDfieR6ObwBMwpnNws0bUK8GI7z0unQf9bARNQ=="
+ "version": "18.7.13",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.13.tgz",
+ "integrity": "sha512-46yIhxSe5xEaJZXWdIBP7GU4HDTG8/eo0qd9atdiL+lFpA03y8KS+lkTN834TWJj5767GbWv4n/P6efyTFt1Dw=="
},
"node_modules/acorn": {
"version": "8.8.0",
@@ -361,6 +361,11 @@
"node": ">=0.3.1"
}
},
+ "node_modules/earcut": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz",
+ "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ=="
+ },
"node_modules/esbuild": {
"version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz",
@@ -1183,12 +1188,13 @@
}
},
"node_modules/ol": {
- "version": "6.15.1",
- "resolved": "https://registry.npmjs.org/ol/-/ol-6.15.1.tgz",
- "integrity": "sha512-ZG2CKTpJ8Q+tPywYysVwPk+yevwJzlbwjRKhoCvd7kLVWMbfBl1O/+Kg/yrZZrhG9FNXbFH4GeOZ5yVRqo3P4w==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/ol/-/ol-7.0.0.tgz",
+ "integrity": "sha512-7kCUKeWXopFPuEE0iuNXTasMi4wgvoM/Ri7pHW74/0lPfdWrrjrYAn2hOuIdfSIiMxdjifwQqpC9hhTFGxmH7A==",
"dependencies": {
+ "earcut": "^2.2.3",
"geotiff": "2.0.4",
- "ol-mapbox-style": "^8.0.5",
+ "ol-mapbox-style": "9.0.0",
"pbf": "3.2.1",
"rbush": "^3.0.1"
},
@@ -1198,9 +1204,9 @@
}
},
"node_modules/ol-mapbox-style": {
- "version": "8.2.1",
- "resolved": "https://registry.npmjs.org/ol-mapbox-style/-/ol-mapbox-style-8.2.1.tgz",
- "integrity": "sha512-3kBBuZC627vDL8vnUdfVbCbfkhkcZj2kXPHQcuLhC4JJEA+XkEVEtEde8x8+AZctRbHwBkSiubTPaRukgLxIRw==",
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/ol-mapbox-style/-/ol-mapbox-style-9.0.0.tgz",
+ "integrity": "sha512-smixniNq2N4nTLAYf8ouIcBI4dOd1P6p3CWd/cmuP6ai85s84vOGUVbCa1jcS40oDRlOakWRP3XqtEQhEv7Wbw==",
"dependencies": {
"@mapbox/mapbox-gl-style-spec": "^13.23.1",
"mapbox-to-css-font": "^2.4.1"
@@ -1384,9 +1390,9 @@
"integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="
},
"node_modules/sass": {
- "version": "1.54.4",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.4.tgz",
- "integrity": "sha512-3tmF16yvnBwtlPrNBHw/H907j8MlOX8aTBnlNX1yrKx24RKcJGPyLhFUwkoKBKesR3unP93/2z14Ll8NicwQUA==",
+ "version": "1.54.5",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.5.tgz",
+ "integrity": "sha512-p7DTOzxkUPa/63FU0R3KApkRHwcVZYC0PLnLm5iyZACyp15qSi32x7zVUhRdABAATmkALqgGrjCJAcWvobmhHw==",
"dev": true,
"dependencies": {
"chokidar": ">=3.0.0 <4.0.0",
@@ -1534,15 +1540,15 @@
"integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg=="
},
"node_modules/vite": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/vite/-/vite-3.0.5.tgz",
- "integrity": "sha512-bRvrt9Tw8EGW4jj64aYFTnVg134E8hgDxyl/eEHnxiGqYk7/pTPss6CWlurqPOUzqvEoZkZ58Ws+Iu8MB87iMA==",
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-3.0.9.tgz",
+ "integrity": "sha512-waYABTM+G6DBTCpYAxvevpG50UOlZuynR0ckTK5PawNVt7ebX6X7wNXHaGIO6wYYFXSM7/WcuFuO2QzhBB6aMw==",
"dev": true,
"dependencies": {
"esbuild": "^0.14.47",
"postcss": "^8.4.16",
"resolve": "^1.22.1",
- "rollup": "^2.75.6"
+ "rollup": ">=2.75.6 <2.77.0 || ~2.77.0"
},
"bin": {
"vite": "bin/vite.js"
@@ -1652,16 +1658,16 @@
"integrity": "sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ=="
},
"@mapbox/mapbox-gl-style-spec": {
- "version": "13.25.0",
- "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-style-spec/-/mapbox-gl-style-spec-13.25.0.tgz",
- "integrity": "sha512-ukBk13MyI/X4tjRfPaNCo4rJLrRJ7ZbANxjeQyGeLYJTF1DZxqkX9C8qlxnQlxYllBBDBWiYYX5lU1fIsm2jwg==",
+ "version": "13.26.0",
+ "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-style-spec/-/mapbox-gl-style-spec-13.26.0.tgz",
+ "integrity": "sha512-Ya1WiNz1qYau7xPYPQUbionrw9pjgZAIebGQdDXgwJuSAWeVCr02P7rqbYFHbXqX5TeAaq4qVpcaJb9oZtgaVQ==",
"requires": {
"@mapbox/jsonlint-lines-primitives": "~2.0.2",
"@mapbox/point-geometry": "^0.1.0",
"@mapbox/unitbezier": "^0.0.0",
"csscolorparser": "~1.0.2",
"json-stringify-pretty-compact": "^2.0.0",
- "minimist": "^1.2.5",
+ "minimist": "^1.2.6",
"rw": "^1.3.3",
"sort-object": "^0.3.2"
}
@@ -1708,9 +1714,9 @@
"dev": true
},
"@types/node": {
- "version": "18.7.1",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.1.tgz",
- "integrity": "sha512-GKX1Qnqxo4S+Z/+Z8KKPLpH282LD7jLHWJcVryOflnsnH+BtSDfieR6ObwBMwpnNws0bUK8GI7z0unQf9bARNQ=="
+ "version": "18.7.13",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.13.tgz",
+ "integrity": "sha512-46yIhxSe5xEaJZXWdIBP7GU4HDTG8/eo0qd9atdiL+lFpA03y8KS+lkTN834TWJj5767GbWv4n/P6efyTFt1Dw=="
},
"acorn": {
"version": "8.8.0",
@@ -1867,6 +1873,11 @@
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
"integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A=="
},
+ "earcut": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz",
+ "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ=="
+ },
"esbuild": {
"version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz",
@@ -2353,20 +2364,21 @@
"dev": true
},
"ol": {
- "version": "6.15.1",
- "resolved": "https://registry.npmjs.org/ol/-/ol-6.15.1.tgz",
- "integrity": "sha512-ZG2CKTpJ8Q+tPywYysVwPk+yevwJzlbwjRKhoCvd7kLVWMbfBl1O/+Kg/yrZZrhG9FNXbFH4GeOZ5yVRqo3P4w==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/ol/-/ol-7.0.0.tgz",
+ "integrity": "sha512-7kCUKeWXopFPuEE0iuNXTasMi4wgvoM/Ri7pHW74/0lPfdWrrjrYAn2hOuIdfSIiMxdjifwQqpC9hhTFGxmH7A==",
"requires": {
+ "earcut": "^2.2.3",
"geotiff": "2.0.4",
- "ol-mapbox-style": "^8.0.5",
+ "ol-mapbox-style": "9.0.0",
"pbf": "3.2.1",
"rbush": "^3.0.1"
}
},
"ol-mapbox-style": {
- "version": "8.2.1",
- "resolved": "https://registry.npmjs.org/ol-mapbox-style/-/ol-mapbox-style-8.2.1.tgz",
- "integrity": "sha512-3kBBuZC627vDL8vnUdfVbCbfkhkcZj2kXPHQcuLhC4JJEA+XkEVEtEde8x8+AZctRbHwBkSiubTPaRukgLxIRw==",
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/ol-mapbox-style/-/ol-mapbox-style-9.0.0.tgz",
+ "integrity": "sha512-smixniNq2N4nTLAYf8ouIcBI4dOd1P6p3CWd/cmuP6ai85s84vOGUVbCa1jcS40oDRlOakWRP3XqtEQhEv7Wbw==",
"requires": {
"@mapbox/mapbox-gl-style-spec": "^13.23.1",
"mapbox-to-css-font": "^2.4.1"
@@ -2504,9 +2516,9 @@
"integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="
},
"sass": {
- "version": "1.54.4",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.4.tgz",
- "integrity": "sha512-3tmF16yvnBwtlPrNBHw/H907j8MlOX8aTBnlNX1yrKx24RKcJGPyLhFUwkoKBKesR3unP93/2z14Ll8NicwQUA==",
+ "version": "1.54.5",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.5.tgz",
+ "integrity": "sha512-p7DTOzxkUPa/63FU0R3KApkRHwcVZYC0PLnLm5iyZACyp15qSi32x7zVUhRdABAATmkALqgGrjCJAcWvobmhHw==",
"dev": true,
"requires": {
"chokidar": ">=3.0.0 <4.0.0",
@@ -2598,16 +2610,16 @@
"integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg=="
},
"vite": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/vite/-/vite-3.0.5.tgz",
- "integrity": "sha512-bRvrt9Tw8EGW4jj64aYFTnVg134E8hgDxyl/eEHnxiGqYk7/pTPss6CWlurqPOUzqvEoZkZ58Ws+Iu8MB87iMA==",
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-3.0.9.tgz",
+ "integrity": "sha512-waYABTM+G6DBTCpYAxvevpG50UOlZuynR0ckTK5PawNVt7ebX6X7wNXHaGIO6wYYFXSM7/WcuFuO2QzhBB6aMw==",
"dev": true,
"requires": {
"esbuild": "^0.14.47",
"fsevents": "~2.3.2",
"postcss": "^8.4.16",
"resolve": "^1.22.1",
- "rollup": "^2.75.6"
+ "rollup": ">=2.75.6 <2.77.0 || ~2.77.0"
}
},
"web-streams-polyfill": {
diff --git a/package.json b/package.json
index 90f7983..21ac733 100644
--- a/package.json
+++ b/package.json
@@ -24,7 +24,7 @@
"micromodal": "^0.4.10",
"navigo": "^8.11.1",
"node-fetch": "^3.2.10",
- "ol": "^6.14.1",
+ "ol": "^7.0.0",
"ts-node": "^10.9.1"
},
"author": "",
diff --git a/publish.sh b/publish.sh
index e0909c0..48084d5 100755
--- a/publish.sh
+++ b/publish.sh
@@ -1,2 +1,2 @@
#!/bin/bash
-rsync -rvzP ./dist/ lukas@lw1.at:/var/www/static/tmp/rainbowroad/ --fuzzy --delete-after -v
+rsync -rvzP ./dist/ lukas@lw1.at:/var/www/rainbowroad/ --fuzzy --delete-after -v
diff --git a/src/areaData.ts b/src/areaData.ts
index fa1d9f1..24c1f64 100644
--- a/src/areaData.ts
+++ b/src/areaData.ts
@@ -39,3 +39,7 @@ export function viewFromArea(area: Area): View {
constrainOnlyCenter: true
})
}
+
+export function buildAttribution(dataURL: string) {
+ return ["Rohdaten"]
+}
diff --git a/src/controls.ts b/src/controls.ts
new file mode 100644
index 0000000..98462d5
--- /dev/null
+++ b/src/controls.ts
@@ -0,0 +1,56 @@
+import {Control} from "ol/control"
+import {Options} from "ol/control/Control"
+import Navigo from "navigo";
+import {router} from "./map";
+
+interface CustomOptions extends Options {
+ router: Navigo
+}
+
+export class AreaControl extends Control {
+ private textbox: HTMLDivElement
+
+ constructor(opt_options: CustomOptions) {
+ const options = opt_options || {}
+
+ const button = document.createElement('button')
+ button.innerText = 'c'
+
+ const element = document.createElement('div')
+ element.id = "city-selector"
+ element.className = 'ol-unselectable ol-control'
+ element.appendChild(button)
+
+ const textbox = document.createElement('div')
+
+ textbox.classList.add("textbox")
+ textbox.classList.add("ol-control")
+
+ const test = ["Wien", "Oberösterreich"]
+ test.forEach(n => {
+ const a = document.createElement('a')
+ a.href = "/" + encodeURIComponent(n)
+ a.innerText = n
+ a.dataset.navigo = ""
+ textbox.appendChild(a)
+ })
+ // textbox.style.display = "none"
+ element.appendChild(textbox)
+ router.updatePageLinks()
+
+ super({
+ element: element,
+ target: options.target,
+ });
+ this.textbox = textbox
+ button.addEventListener('click', this.handleClick.bind(this), false)
+ }
+
+ handleClick() {
+ if (this.textbox.style.display === "block") {
+ this.textbox.style.display = "none"
+ } else {
+ this.textbox.style.display = "block"
+ }
+ }
+}
diff --git a/src/map.ts b/src/map.ts
index f6ac067..fcbcf45 100644
--- a/src/map.ts
+++ b/src/map.ts
@@ -7,22 +7,19 @@ import {Coordinate} from "ol/coordinate";
import {State} from "ol/render";
import {Line, Vector2d} from "./vectorUtils";
import {drawZebraCrossing, zebraPatterns} from "./zebraUtils";
-// @ts-ignore
-import dataURL from "../data/Wien.json?url"
import prideFlag from "../assets/prideflag.svg"
import transFlag from "../assets/transflag.svg"
import {loadData, MetaData} from "./features";
-// @ts-ignore
-import importdata from "../data/Wien.json?inline"
import Navigo from "navigo";
import {redirect} from "./router";
-import {areas, viewFromArea, Wien} from "./areaData";
+import {areas, buildAttribution, viewFromArea, Wien} from "./areaData";
import {Crossing} from "../interfaces";
+import {defaults as defaultControls} from 'ol/control';
+import {AreaControl} from "./controls";
-const root = import.meta.env.PROD ? "/s/tmp/rainbowroad/" : "/"
-export const router = new Navigo(root)
-
+export const router = new Navigo("/")
const map = new Map({
+ controls: defaultControls().extend([new AreaControl({router: router})]),
target: 'map',
layers: [
new TileLayer({
@@ -31,17 +28,19 @@ const map = new Map({
],
view: viewFromArea(Wien)
});
-const vectorSource = new VectorSource({
- attributions: ["Rohdaten"]
-});
+const vectorSource = new VectorSource();
let metaData: MetaData
-
router.on("/Wien", () => {
map.setView(viewFromArea(Wien))
// @ts-ignore
import("../data/Wien.json?inline").then((data) => {
metaData = loadData(data.default as unknown as Crossing[], vectorSource)
})
+
+ import("../data/Wien.json?url").then(importdata => {
+ vectorSource.setAttributions(buildAttribution(importdata.default))
+ })
+
})
router.on("/Ober%C3%B6sterreich", () => {
map.setView(viewFromArea(areas.OOE))
@@ -50,6 +49,10 @@ router.on("/Ober%C3%B6sterreich", () => {
import("../data/Oberösterreich.json?inline").then((data) => {
metaData = loadData(data.default as unknown as Crossing[], vectorSource)
})
+ import("../data/Oberösterreich.json?url").then(importdata => {
+ vectorSource.setAttributions(buildAttribution(importdata.default))
+ })
+
})
redirect(router, "/", "/Wien")
router.resolve()
@@ -116,6 +119,9 @@ const vectorLineLayer = new VectorLayer({
return
}
const crossing = metaData[featureID]
+ if (typeof crossing==="undefined") {
+ return
+ }
switch (crossing.type) {
case "prideFlag":
return prideFlagStyle;
diff --git a/src/style.scss b/src/style.scss
index f6191e4..e7538b3 100644
--- a/src/style.scss
+++ b/src/style.scss
@@ -99,3 +99,20 @@ p {
margin-top: 0;
margin-bottom: .5rem;
}
+
+#city-selector {
+ right: 0.5em;
+ top: 0.5em;
+
+ .textbox {
+ position: absolute;
+ right: 1em;
+ top: 1em;
+display: flex;
+ flex-direction: column;
+ margin: .5rem;
+ a {
+ display: block;
+ }
+ }
+}
diff --git a/src/text.ts b/src/text.ts
index b1e0a1a..f052caf 100644
--- a/src/text.ts
+++ b/src/text.ts
@@ -6,6 +6,7 @@ import spoeIcon from "../assets/favicons/spoe.png"
import neosIcon from "../assets/favicons/neos.png"
import WienIcon from "../assets/favicons/wien.gv.at.png"
import derStandardIcon from "../assets/favicons/derstandard.at.png"
+import linzIcon from "../assets/favicons/linz.at.png"
import {createElement} from "./domutils";
export function prettyDate(isoDate: string): string {
@@ -48,7 +49,10 @@ export function displaySources(sources: Source[]) {
img.src = WienIcon
break
case "www.derstandard.at":
- img.src=derStandardIcon
+ img.src = derStandardIcon
+ break
+ case "www.linz.at":
+ img.src = linzIcon
break
}