1
0
Fork 0
mirror of https://github.com/Findus23/RainbowRoad.git synced 2024-09-16 12:33:51 +02:00

old changes

This commit is contained in:
Lukas Winkler 2022-08-25 22:21:20 +02:00
parent 80cbd705fe
commit ce98f31056
Signed by: lukas
GPG key ID: 54DE4D798D244853
14 changed files with 303 additions and 60 deletions

BIN
assets/favicons/linz.at.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 B

View file

@ -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>

View file

@ -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
}
}
]

View file

@ -119,6 +119,9 @@
"set": {
"type": "string"
},
"unknownLocation": {
"type": "boolean"
},
"sources": {
"type": "array",
"items": {

View file

@ -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>

View file

@ -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
View file

@ -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": {

View file

@ -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": "",

View file

@ -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

View file

@ -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
View 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"
}
}
}

View file

@ -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;

View file

@ -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;
}
}
}

View file

@ -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
}