mirror of
https://github.com/Findus23/RainbowRoad.git
synced 2024-09-18 14:53:51 +02:00
old changes
This commit is contained in:
parent
80cbd705fe
commit
ce98f31056
14 changed files with 303 additions and 60 deletions
BIN
assets/favicons/linz.at.png
Normal file
BIN
assets/favicons/linz.at.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 396 B |
|
@ -4,7 +4,6 @@
|
|||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Rainbow Road</title>
|
||||
<meta name="description" content="Eine Karte aller momentan verfügbaren Fahrräder bei WienMobilRad">
|
||||
</head>
|
||||
<body>
|
||||
<canvas id="canvas" width="300" height="300"></canvas>
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
@ -119,6 +119,9 @@
|
|||
"set": {
|
||||
"type": "string"
|
||||
},
|
||||
"unknownLocation": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"sources": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
<meta charset="UTF-8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||
<title>Rainbow Road</title>
|
||||
<meta name="description" content="Eine Karte aller momentan verfügbaren Fahrräder bei WienMobilRad">
|
||||
</head>
|
||||
<body>
|
||||
<div id="map"></div>
|
||||
|
|
|
@ -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)
|
||||
|
|
98
package-lock.json
generated
98
package-lock.json
generated
|
@ -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": {
|
||||
|
|
|
@ -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": "",
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -39,3 +39,7 @@ export function viewFromArea(area: Area): View {
|
|||
constrainOnlyCenter: true
|
||||
})
|
||||
}
|
||||
|
||||
export function buildAttribution(dataURL: string) {
|
||||
return ["<a target='_blank' href='" + dataURL + "'>Rohdaten</a>"]
|
||||
}
|
||||
|
|
56
src/controls.ts
Normal file
56
src/controls.ts
Normal file
|
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
30
src/map.ts
30
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: ["<a target='_blank' href='" + dataURL + "'>Rohdaten</a>"]
|
||||
});
|
||||
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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
@ -50,6 +51,9 @@ export function displaySources(sources: Source[]) {
|
|||
case "www.derstandard.at":
|
||||
img.src = derStandardIcon
|
||||
break
|
||||
case "www.linz.at":
|
||||
img.src = linzIcon
|
||||
break
|
||||
}
|
||||
|
||||
if (a.hostname.includes("spoe")) {
|
||||
|
|
Loading…
Reference in a new issue