From ce98f310569c49a78618efa4487d871d912042d6 Mon Sep 17 00:00:00 2001 From: Lukas Winkler Date: Thu, 25 Aug 2022 22:21:20 +0200 Subject: [PATCH] old changes --- assets/favicons/linz.at.png | Bin 0 -> 396 bytes canvastest.html | 1 - data/Oberösterreich.json | 138 ++++++++++++++++++++++++++++++++++++ data/schema.json | 3 + index.html | 1 - missing.md | 5 ++ package-lock.json | 98 ++++++++++++++----------- package.json | 2 +- publish.sh | 2 +- src/areaData.ts | 4 ++ src/controls.ts | 56 +++++++++++++++ src/map.ts | 30 ++++---- src/style.scss | 17 +++++ src/text.ts | 6 +- 14 files changed, 303 insertions(+), 60 deletions(-) create mode 100644 assets/favicons/linz.at.png create mode 100644 src/controls.ts diff --git a/assets/favicons/linz.at.png b/assets/favicons/linz.at.png new file mode 100644 index 0000000000000000000000000000000000000000..6d3b67ca87f40304882d5c67a144d4d8da678ab0 GIT binary patch literal 396 zcmV;70dxL|P)L&~2t_=5^CW^dpQ10(R}r5?Z+iA1620XCN<%1$2PJA_y5mXk zPlAfEZeTvhWmty!b|%>kAP9mW2*UqCWx>Iqw`&YG-$(Vt_x-atj&qv?oU$OZ8YzX* zhv;#drk4P$5>TaWA#MX$dHXPP+w+)g8zI&7cR&P0Km2h|6g^uZz>E_j_2jyI2=GRp>n^~R z-P4+Gk|Y@eh^-JH!VbWD0C@n2sPb?0l@uttHjPm4i-P4dT5|{J3V{EMybnaqRuBYh zbrtHmxSmdD=btM5i(MHGSJ(4g9}!`@uAIy`P1D)FTqT-%ko|}(16nN<0M~ht6-yJ) qTHgUUV5WY3S$P6M5ClOGEaL?|D_U4Wo!g550000 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 }