mirror of
https://github.com/Findus23/RainbowRoad.git
synced 2024-09-19 16:03:52 +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 charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>Rainbow Road</title>
|
<title>Rainbow Road</title>
|
||||||
<meta name="description" content="Eine Karte aller momentan verfügbaren Fahrräder bei WienMobilRad">
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<canvas id="canvas" width="300" height="300"></canvas>
|
<canvas id="canvas" width="300" height="300"></canvas>
|
||||||
|
|
|
@ -27,5 +27,143 @@
|
||||||
],
|
],
|
||||||
"length": 9.45
|
"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": {
|
"set": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
|
"unknownLocation": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
"sources": {
|
"sources": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"items": {
|
"items": {
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
<meta charset="UTF-8"/>
|
<meta charset="UTF-8"/>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||||
<title>Rainbow Road</title>
|
<title>Rainbow Road</title>
|
||||||
<meta name="description" content="Eine Karte aller momentan verfügbaren Fahrräder bei WienMobilRad">
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="map"></div>
|
<div id="map"></div>
|
||||||
|
|
|
@ -11,3 +11,8 @@ Linz:
|
||||||
https://www.weekend.at/bundesland/oberoesterreich/neue-regenbogen-zebrastreifen-linz
|
https://www.weekend.at/bundesland/oberoesterreich/neue-regenbogen-zebrastreifen-linz
|
||||||
https://www.linzwiki.at/wiki/Datei:Regenbogen-Zebrastreifen_Mozartkreuzung.jpg/
|
https://www.linzwiki.at/wiki/Datei:Regenbogen-Zebrastreifen_Mozartkreuzung.jpg/
|
||||||
https://www.linz.at/medienservice/2022/202206_115655.php
|
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",
|
"micromodal": "^0.4.10",
|
||||||
"navigo": "^8.11.1",
|
"navigo": "^8.11.1",
|
||||||
"node-fetch": "^3.2.10",
|
"node-fetch": "^3.2.10",
|
||||||
"ol": "^6.14.1",
|
"ol": "^7.0.0",
|
||||||
"ts-node": "^10.9.1"
|
"ts-node": "^10.9.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
@ -84,16 +84,16 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@mapbox/mapbox-gl-style-spec": {
|
"node_modules/@mapbox/mapbox-gl-style-spec": {
|
||||||
"version": "13.25.0",
|
"version": "13.26.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-style-spec/-/mapbox-gl-style-spec-13.25.0.tgz",
|
"resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-style-spec/-/mapbox-gl-style-spec-13.26.0.tgz",
|
||||||
"integrity": "sha512-ukBk13MyI/X4tjRfPaNCo4rJLrRJ7ZbANxjeQyGeLYJTF1DZxqkX9C8qlxnQlxYllBBDBWiYYX5lU1fIsm2jwg==",
|
"integrity": "sha512-Ya1WiNz1qYau7xPYPQUbionrw9pjgZAIebGQdDXgwJuSAWeVCr02P7rqbYFHbXqX5TeAaq4qVpcaJb9oZtgaVQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@mapbox/jsonlint-lines-primitives": "~2.0.2",
|
"@mapbox/jsonlint-lines-primitives": "~2.0.2",
|
||||||
"@mapbox/point-geometry": "^0.1.0",
|
"@mapbox/point-geometry": "^0.1.0",
|
||||||
"@mapbox/unitbezier": "^0.0.0",
|
"@mapbox/unitbezier": "^0.0.0",
|
||||||
"csscolorparser": "~1.0.2",
|
"csscolorparser": "~1.0.2",
|
||||||
"json-stringify-pretty-compact": "^2.0.0",
|
"json-stringify-pretty-compact": "^2.0.0",
|
||||||
"minimist": "^1.2.5",
|
"minimist": "^1.2.6",
|
||||||
"rw": "^1.3.3",
|
"rw": "^1.3.3",
|
||||||
"sort-object": "^0.3.2"
|
"sort-object": "^0.3.2"
|
||||||
},
|
},
|
||||||
|
@ -146,9 +146,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "18.7.1",
|
"version": "18.7.13",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.1.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.13.tgz",
|
||||||
"integrity": "sha512-GKX1Qnqxo4S+Z/+Z8KKPLpH282LD7jLHWJcVryOflnsnH+BtSDfieR6ObwBMwpnNws0bUK8GI7z0unQf9bARNQ=="
|
"integrity": "sha512-46yIhxSe5xEaJZXWdIBP7GU4HDTG8/eo0qd9atdiL+lFpA03y8KS+lkTN834TWJj5767GbWv4n/P6efyTFt1Dw=="
|
||||||
},
|
},
|
||||||
"node_modules/acorn": {
|
"node_modules/acorn": {
|
||||||
"version": "8.8.0",
|
"version": "8.8.0",
|
||||||
|
@ -361,6 +361,11 @@
|
||||||
"node": ">=0.3.1"
|
"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": {
|
"node_modules/esbuild": {
|
||||||
"version": "0.14.54",
|
"version": "0.14.54",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz",
|
||||||
|
@ -1183,12 +1188,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/ol": {
|
"node_modules/ol": {
|
||||||
"version": "6.15.1",
|
"version": "7.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/ol/-/ol-6.15.1.tgz",
|
"resolved": "https://registry.npmjs.org/ol/-/ol-7.0.0.tgz",
|
||||||
"integrity": "sha512-ZG2CKTpJ8Q+tPywYysVwPk+yevwJzlbwjRKhoCvd7kLVWMbfBl1O/+Kg/yrZZrhG9FNXbFH4GeOZ5yVRqo3P4w==",
|
"integrity": "sha512-7kCUKeWXopFPuEE0iuNXTasMi4wgvoM/Ri7pHW74/0lPfdWrrjrYAn2hOuIdfSIiMxdjifwQqpC9hhTFGxmH7A==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"earcut": "^2.2.3",
|
||||||
"geotiff": "2.0.4",
|
"geotiff": "2.0.4",
|
||||||
"ol-mapbox-style": "^8.0.5",
|
"ol-mapbox-style": "9.0.0",
|
||||||
"pbf": "3.2.1",
|
"pbf": "3.2.1",
|
||||||
"rbush": "^3.0.1"
|
"rbush": "^3.0.1"
|
||||||
},
|
},
|
||||||
|
@ -1198,9 +1204,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/ol-mapbox-style": {
|
"node_modules/ol-mapbox-style": {
|
||||||
"version": "8.2.1",
|
"version": "9.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/ol-mapbox-style/-/ol-mapbox-style-8.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/ol-mapbox-style/-/ol-mapbox-style-9.0.0.tgz",
|
||||||
"integrity": "sha512-3kBBuZC627vDL8vnUdfVbCbfkhkcZj2kXPHQcuLhC4JJEA+XkEVEtEde8x8+AZctRbHwBkSiubTPaRukgLxIRw==",
|
"integrity": "sha512-smixniNq2N4nTLAYf8ouIcBI4dOd1P6p3CWd/cmuP6ai85s84vOGUVbCa1jcS40oDRlOakWRP3XqtEQhEv7Wbw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@mapbox/mapbox-gl-style-spec": "^13.23.1",
|
"@mapbox/mapbox-gl-style-spec": "^13.23.1",
|
||||||
"mapbox-to-css-font": "^2.4.1"
|
"mapbox-to-css-font": "^2.4.1"
|
||||||
|
@ -1384,9 +1390,9 @@
|
||||||
"integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="
|
"integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="
|
||||||
},
|
},
|
||||||
"node_modules/sass": {
|
"node_modules/sass": {
|
||||||
"version": "1.54.4",
|
"version": "1.54.5",
|
||||||
"resolved": "https://registry.npmjs.org/sass/-/sass-1.54.4.tgz",
|
"resolved": "https://registry.npmjs.org/sass/-/sass-1.54.5.tgz",
|
||||||
"integrity": "sha512-3tmF16yvnBwtlPrNBHw/H907j8MlOX8aTBnlNX1yrKx24RKcJGPyLhFUwkoKBKesR3unP93/2z14Ll8NicwQUA==",
|
"integrity": "sha512-p7DTOzxkUPa/63FU0R3KApkRHwcVZYC0PLnLm5iyZACyp15qSi32x7zVUhRdABAATmkALqgGrjCJAcWvobmhHw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"chokidar": ">=3.0.0 <4.0.0",
|
"chokidar": ">=3.0.0 <4.0.0",
|
||||||
|
@ -1534,15 +1540,15 @@
|
||||||
"integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg=="
|
"integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg=="
|
||||||
},
|
},
|
||||||
"node_modules/vite": {
|
"node_modules/vite": {
|
||||||
"version": "3.0.5",
|
"version": "3.0.9",
|
||||||
"resolved": "https://registry.npmjs.org/vite/-/vite-3.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/vite/-/vite-3.0.9.tgz",
|
||||||
"integrity": "sha512-bRvrt9Tw8EGW4jj64aYFTnVg134E8hgDxyl/eEHnxiGqYk7/pTPss6CWlurqPOUzqvEoZkZ58Ws+Iu8MB87iMA==",
|
"integrity": "sha512-waYABTM+G6DBTCpYAxvevpG50UOlZuynR0ckTK5PawNVt7ebX6X7wNXHaGIO6wYYFXSM7/WcuFuO2QzhBB6aMw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"esbuild": "^0.14.47",
|
"esbuild": "^0.14.47",
|
||||||
"postcss": "^8.4.16",
|
"postcss": "^8.4.16",
|
||||||
"resolve": "^1.22.1",
|
"resolve": "^1.22.1",
|
||||||
"rollup": "^2.75.6"
|
"rollup": ">=2.75.6 <2.77.0 || ~2.77.0"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"vite": "bin/vite.js"
|
"vite": "bin/vite.js"
|
||||||
|
@ -1652,16 +1658,16 @@
|
||||||
"integrity": "sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ=="
|
"integrity": "sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ=="
|
||||||
},
|
},
|
||||||
"@mapbox/mapbox-gl-style-spec": {
|
"@mapbox/mapbox-gl-style-spec": {
|
||||||
"version": "13.25.0",
|
"version": "13.26.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-style-spec/-/mapbox-gl-style-spec-13.25.0.tgz",
|
"resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-style-spec/-/mapbox-gl-style-spec-13.26.0.tgz",
|
||||||
"integrity": "sha512-ukBk13MyI/X4tjRfPaNCo4rJLrRJ7ZbANxjeQyGeLYJTF1DZxqkX9C8qlxnQlxYllBBDBWiYYX5lU1fIsm2jwg==",
|
"integrity": "sha512-Ya1WiNz1qYau7xPYPQUbionrw9pjgZAIebGQdDXgwJuSAWeVCr02P7rqbYFHbXqX5TeAaq4qVpcaJb9oZtgaVQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@mapbox/jsonlint-lines-primitives": "~2.0.2",
|
"@mapbox/jsonlint-lines-primitives": "~2.0.2",
|
||||||
"@mapbox/point-geometry": "^0.1.0",
|
"@mapbox/point-geometry": "^0.1.0",
|
||||||
"@mapbox/unitbezier": "^0.0.0",
|
"@mapbox/unitbezier": "^0.0.0",
|
||||||
"csscolorparser": "~1.0.2",
|
"csscolorparser": "~1.0.2",
|
||||||
"json-stringify-pretty-compact": "^2.0.0",
|
"json-stringify-pretty-compact": "^2.0.0",
|
||||||
"minimist": "^1.2.5",
|
"minimist": "^1.2.6",
|
||||||
"rw": "^1.3.3",
|
"rw": "^1.3.3",
|
||||||
"sort-object": "^0.3.2"
|
"sort-object": "^0.3.2"
|
||||||
}
|
}
|
||||||
|
@ -1708,9 +1714,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@types/node": {
|
"@types/node": {
|
||||||
"version": "18.7.1",
|
"version": "18.7.13",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.1.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.13.tgz",
|
||||||
"integrity": "sha512-GKX1Qnqxo4S+Z/+Z8KKPLpH282LD7jLHWJcVryOflnsnH+BtSDfieR6ObwBMwpnNws0bUK8GI7z0unQf9bARNQ=="
|
"integrity": "sha512-46yIhxSe5xEaJZXWdIBP7GU4HDTG8/eo0qd9atdiL+lFpA03y8KS+lkTN834TWJj5767GbWv4n/P6efyTFt1Dw=="
|
||||||
},
|
},
|
||||||
"acorn": {
|
"acorn": {
|
||||||
"version": "8.8.0",
|
"version": "8.8.0",
|
||||||
|
@ -1867,6 +1873,11 @@
|
||||||
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
|
||||||
"integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A=="
|
"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": {
|
"esbuild": {
|
||||||
"version": "0.14.54",
|
"version": "0.14.54",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz",
|
||||||
|
@ -2353,20 +2364,21 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"ol": {
|
"ol": {
|
||||||
"version": "6.15.1",
|
"version": "7.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/ol/-/ol-6.15.1.tgz",
|
"resolved": "https://registry.npmjs.org/ol/-/ol-7.0.0.tgz",
|
||||||
"integrity": "sha512-ZG2CKTpJ8Q+tPywYysVwPk+yevwJzlbwjRKhoCvd7kLVWMbfBl1O/+Kg/yrZZrhG9FNXbFH4GeOZ5yVRqo3P4w==",
|
"integrity": "sha512-7kCUKeWXopFPuEE0iuNXTasMi4wgvoM/Ri7pHW74/0lPfdWrrjrYAn2hOuIdfSIiMxdjifwQqpC9hhTFGxmH7A==",
|
||||||
"requires": {
|
"requires": {
|
||||||
|
"earcut": "^2.2.3",
|
||||||
"geotiff": "2.0.4",
|
"geotiff": "2.0.4",
|
||||||
"ol-mapbox-style": "^8.0.5",
|
"ol-mapbox-style": "9.0.0",
|
||||||
"pbf": "3.2.1",
|
"pbf": "3.2.1",
|
||||||
"rbush": "^3.0.1"
|
"rbush": "^3.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ol-mapbox-style": {
|
"ol-mapbox-style": {
|
||||||
"version": "8.2.1",
|
"version": "9.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/ol-mapbox-style/-/ol-mapbox-style-8.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/ol-mapbox-style/-/ol-mapbox-style-9.0.0.tgz",
|
||||||
"integrity": "sha512-3kBBuZC627vDL8vnUdfVbCbfkhkcZj2kXPHQcuLhC4JJEA+XkEVEtEde8x8+AZctRbHwBkSiubTPaRukgLxIRw==",
|
"integrity": "sha512-smixniNq2N4nTLAYf8ouIcBI4dOd1P6p3CWd/cmuP6ai85s84vOGUVbCa1jcS40oDRlOakWRP3XqtEQhEv7Wbw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@mapbox/mapbox-gl-style-spec": "^13.23.1",
|
"@mapbox/mapbox-gl-style-spec": "^13.23.1",
|
||||||
"mapbox-to-css-font": "^2.4.1"
|
"mapbox-to-css-font": "^2.4.1"
|
||||||
|
@ -2504,9 +2516,9 @@
|
||||||
"integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="
|
"integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="
|
||||||
},
|
},
|
||||||
"sass": {
|
"sass": {
|
||||||
"version": "1.54.4",
|
"version": "1.54.5",
|
||||||
"resolved": "https://registry.npmjs.org/sass/-/sass-1.54.4.tgz",
|
"resolved": "https://registry.npmjs.org/sass/-/sass-1.54.5.tgz",
|
||||||
"integrity": "sha512-3tmF16yvnBwtlPrNBHw/H907j8MlOX8aTBnlNX1yrKx24RKcJGPyLhFUwkoKBKesR3unP93/2z14Ll8NicwQUA==",
|
"integrity": "sha512-p7DTOzxkUPa/63FU0R3KApkRHwcVZYC0PLnLm5iyZACyp15qSi32x7zVUhRdABAATmkALqgGrjCJAcWvobmhHw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"chokidar": ">=3.0.0 <4.0.0",
|
"chokidar": ">=3.0.0 <4.0.0",
|
||||||
|
@ -2598,16 +2610,16 @@
|
||||||
"integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg=="
|
"integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg=="
|
||||||
},
|
},
|
||||||
"vite": {
|
"vite": {
|
||||||
"version": "3.0.5",
|
"version": "3.0.9",
|
||||||
"resolved": "https://registry.npmjs.org/vite/-/vite-3.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/vite/-/vite-3.0.9.tgz",
|
||||||
"integrity": "sha512-bRvrt9Tw8EGW4jj64aYFTnVg134E8hgDxyl/eEHnxiGqYk7/pTPss6CWlurqPOUzqvEoZkZ58Ws+Iu8MB87iMA==",
|
"integrity": "sha512-waYABTM+G6DBTCpYAxvevpG50UOlZuynR0ckTK5PawNVt7ebX6X7wNXHaGIO6wYYFXSM7/WcuFuO2QzhBB6aMw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"esbuild": "^0.14.47",
|
"esbuild": "^0.14.47",
|
||||||
"fsevents": "~2.3.2",
|
"fsevents": "~2.3.2",
|
||||||
"postcss": "^8.4.16",
|
"postcss": "^8.4.16",
|
||||||
"resolve": "^1.22.1",
|
"resolve": "^1.22.1",
|
||||||
"rollup": "^2.75.6"
|
"rollup": ">=2.75.6 <2.77.0 || ~2.77.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"web-streams-polyfill": {
|
"web-streams-polyfill": {
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
"micromodal": "^0.4.10",
|
"micromodal": "^0.4.10",
|
||||||
"navigo": "^8.11.1",
|
"navigo": "^8.11.1",
|
||||||
"node-fetch": "^3.2.10",
|
"node-fetch": "^3.2.10",
|
||||||
"ol": "^6.14.1",
|
"ol": "^7.0.0",
|
||||||
"ts-node": "^10.9.1"
|
"ts-node": "^10.9.1"
|
||||||
},
|
},
|
||||||
"author": "",
|
"author": "",
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
#!/bin/bash
|
#!/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
|
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 {State} from "ol/render";
|
||||||
import {Line, Vector2d} from "./vectorUtils";
|
import {Line, Vector2d} from "./vectorUtils";
|
||||||
import {drawZebraCrossing, zebraPatterns} from "./zebraUtils";
|
import {drawZebraCrossing, zebraPatterns} from "./zebraUtils";
|
||||||
// @ts-ignore
|
|
||||||
import dataURL from "../data/Wien.json?url"
|
|
||||||
import prideFlag from "../assets/prideflag.svg"
|
import prideFlag from "../assets/prideflag.svg"
|
||||||
import transFlag from "../assets/transflag.svg"
|
import transFlag from "../assets/transflag.svg"
|
||||||
import {loadData, MetaData} from "./features";
|
import {loadData, MetaData} from "./features";
|
||||||
// @ts-ignore
|
|
||||||
import importdata from "../data/Wien.json?inline"
|
|
||||||
import Navigo from "navigo";
|
import Navigo from "navigo";
|
||||||
import {redirect} from "./router";
|
import {redirect} from "./router";
|
||||||
import {areas, viewFromArea, Wien} from "./areaData";
|
import {areas, buildAttribution, viewFromArea, Wien} from "./areaData";
|
||||||
import {Crossing} from "../interfaces";
|
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("/")
|
||||||
export const router = new Navigo(root)
|
|
||||||
|
|
||||||
const map = new Map({
|
const map = new Map({
|
||||||
|
controls: defaultControls().extend([new AreaControl({router: router})]),
|
||||||
target: 'map',
|
target: 'map',
|
||||||
layers: [
|
layers: [
|
||||||
new TileLayer({
|
new TileLayer({
|
||||||
|
@ -31,17 +28,19 @@ const map = new Map({
|
||||||
],
|
],
|
||||||
view: viewFromArea(Wien)
|
view: viewFromArea(Wien)
|
||||||
});
|
});
|
||||||
const vectorSource = new VectorSource({
|
const vectorSource = new VectorSource();
|
||||||
attributions: ["<a target='_blank' href='" + dataURL + "'>Rohdaten</a>"]
|
|
||||||
});
|
|
||||||
let metaData: MetaData
|
let metaData: MetaData
|
||||||
|
|
||||||
router.on("/Wien", () => {
|
router.on("/Wien", () => {
|
||||||
map.setView(viewFromArea(Wien))
|
map.setView(viewFromArea(Wien))
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import("../data/Wien.json?inline").then((data) => {
|
import("../data/Wien.json?inline").then((data) => {
|
||||||
metaData = loadData(data.default as unknown as Crossing[], vectorSource)
|
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", () => {
|
router.on("/Ober%C3%B6sterreich", () => {
|
||||||
map.setView(viewFromArea(areas.OOE))
|
map.setView(viewFromArea(areas.OOE))
|
||||||
|
@ -50,6 +49,10 @@ router.on("/Ober%C3%B6sterreich", () => {
|
||||||
import("../data/Oberösterreich.json?inline").then((data) => {
|
import("../data/Oberösterreich.json?inline").then((data) => {
|
||||||
metaData = loadData(data.default as unknown as Crossing[], vectorSource)
|
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")
|
redirect(router, "/", "/Wien")
|
||||||
router.resolve()
|
router.resolve()
|
||||||
|
@ -116,6 +119,9 @@ const vectorLineLayer = new VectorLayer({
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
const crossing = metaData[featureID]
|
const crossing = metaData[featureID]
|
||||||
|
if (typeof crossing==="undefined") {
|
||||||
|
return
|
||||||
|
}
|
||||||
switch (crossing.type) {
|
switch (crossing.type) {
|
||||||
case "prideFlag":
|
case "prideFlag":
|
||||||
return prideFlagStyle;
|
return prideFlagStyle;
|
||||||
|
|
|
@ -99,3 +99,20 @@ p {
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
margin-bottom: .5rem;
|
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 neosIcon from "../assets/favicons/neos.png"
|
||||||
import WienIcon from "../assets/favicons/wien.gv.at.png"
|
import WienIcon from "../assets/favicons/wien.gv.at.png"
|
||||||
import derStandardIcon from "../assets/favicons/derstandard.at.png"
|
import derStandardIcon from "../assets/favicons/derstandard.at.png"
|
||||||
|
import linzIcon from "../assets/favicons/linz.at.png"
|
||||||
import {createElement} from "./domutils";
|
import {createElement} from "./domutils";
|
||||||
|
|
||||||
export function prettyDate(isoDate: string): string {
|
export function prettyDate(isoDate: string): string {
|
||||||
|
@ -50,6 +51,9 @@ export function displaySources(sources: Source[]) {
|
||||||
case "www.derstandard.at":
|
case "www.derstandard.at":
|
||||||
img.src = derStandardIcon
|
img.src = derStandardIcon
|
||||||
break
|
break
|
||||||
|
case "www.linz.at":
|
||||||
|
img.src = linzIcon
|
||||||
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
if (a.hostname.includes("spoe")) {
|
if (a.hostname.includes("spoe")) {
|
||||||
|
|
Loading…
Reference in a new issue