Compare commits

..

No commits in common. "main" and "v0.6.0" have entirely different histories.
main ... v0.6.0

18 changed files with 193 additions and 495 deletions

View file

@ -6,12 +6,7 @@
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge"> <meta http-equiv="X-UA-Compatible" content="ie=edge">
<link href="style.css" rel="stylesheet"> <link href="style.css" rel="stylesheet">
<link rel="icon" type="image/png" sizes="512" href="/icons/512.png"> <title>Barrierefreie Aufzugs-Liste | Was ist das?</title>
<link rel="icon" type="image/png" sizes="192" href="/icons/192.png">
<link rel="shortcut icon" href="/icons/favicon.svg">
<link rel="manifest" href="/manifest.json">
<link rel="mask-icon" href="/icons/favicon-transparent.svg" color="#65a30d">
<title>hvvstuhl.de | Was ist das?</title>
</head> </head>
<body> <body>
<h1>Barrierefreie Aufzugs-Liste</h1> <h1>Barrierefreie Aufzugs-Liste</h1>
@ -33,13 +28,12 @@
<section> <section>
<h2>Worum geht's hier?</h2> <h2>Worum geht's hier?</h2>
<p> <p>
Diese Seite ermöglicht einen barrierefreien Zugang zu den Aufzugs-Informationen im HVV. Diese Seite ermöglicht einen barrierefreien Zugang zu den Aufzugs informationen im HVV.
Der HVV selbst zeigt diese Informationen nur auf einer (vor allem ohne Ortskenntnis) schwer zu navigierenden Der HVV selbst zeigt diese Informationen nur auf einer (vor allem ohne Ortskenntnis) schwer zu navigierenden Karte an:
Karte an:
<a href="https://www.hvv.de/de/aufzuege">HVV Webseite zu Aufzügen</a> <a href="https://www.hvv.de/de/aufzuege">HVV Webseite zu Aufzügen</a>
</p> </p>
<p> <p>
Dieses Projekt wurde unter der AGPL-3 Lizenz entwickelt und ist hier zu finden: Dieses Projekt wurde unter AGPL-3 entwickelt und ist hier zu finden:
<a href="https://git.kritzl.dev/kritzl/hvvstuhl.de" target="_blank">git.kritzl.dev</a> <a href="https://git.kritzl.dev/kritzl/hvvstuhl.de" target="_blank">git.kritzl.dev</a>
</p> </p>
</section> </section>

View file

@ -232,8 +232,7 @@ async function loadOsmData() {
if (!internalData.stations[stationIndex].hasOwnProperty('coordinates')) { if (!internalData.stations[stationIndex].hasOwnProperty('coordinates')) {
const substitute = substituteData.filter(subs => subs.name === internalData.stations[stationIndex].name) const substitute = substituteData.filter(subs => subs.name === internalData.stations[stationIndex].name)
console.log(substitute) if (substitute.length && substitute.hasOwnProperty('coordinates')) {
if (substitute.length && substitute[0].hasOwnProperty('coordinates')) {
internalData.stations[stationIndex]['coordinates'] = substitute[0].coordinates; internalData.stations[stationIndex]['coordinates'] = substitute[0].coordinates;
} }
} }
@ -317,23 +316,9 @@ function sortStations(stationA, stationB) {
return 0; return 0;
} }
function sortInt(valueA, valueB) {
const a = parseInt(valueA)
const b = parseInt(valueB)
if (a < b) {
return -1;
}
if (a > b) {
return 1;
}
// names must be equal
return 0;
}
function sortStationsByDistance(stationA, stationB) { function sortStationsByDistance(stationA, stationB) {
const distanceA = stationA.distance ?? 0; // ignore upper and lowercase const distanceA = stationA.distance; // ignore upper and lowercase
const distanceB = stationB.distance ?? 0; // ignore upper and lowercase const distanceB = stationB.distance; // ignore upper and lowercase
if (distanceA < distanceB) { if (distanceA < distanceB) {
return -1; return -1;
} }
@ -430,9 +415,7 @@ function renderData(location = null) {
} }
} }
if (sortByDistance) {
stations = stations.sort(sortStationsByDistance); stations = stations.sort(sortStationsByDistance);
}
for (const stationIndex in stations) { for (const stationIndex in stations) {
const station = stations[stationIndex]; const station = stations[stationIndex];
@ -495,7 +478,7 @@ function renderData(location = null) {
osmTemplate += `<div><dt><span data-icon="info" class="size-l"></span>Beschreibung</dt><dd>${node.tags['description']}</dd></div>`; osmTemplate += `<div><dt><span data-icon="info" class="size-l"></span>Beschreibung</dt><dd>${node.tags['description']}</dd></div>`;
} }
if (node.tags.hasOwnProperty('level')) { if (node.tags.hasOwnProperty('level')) {
osmTemplate += `<div><dt><span data-icon="up-down" class="size-l"></span>Ebenen</dt><dd>${node.tags['level'].split(';').sort(sortInt).join(', ')}</dd></div>`; osmTemplate += `<div><dt><span data-icon="up-down" class="size-l"></span>Ebenen</dt><dd>${node.tags['level'].split(';').sort().join(', ')}</dd></div>`;
} }
if (node.tags.hasOwnProperty('wheelchair')) { if (node.tags.hasOwnProperty('wheelchair')) {
osmTemplate += `<div><dt><span data-icon="wheelchair" class="size-l"></span>Rollstühle</dt><dd>${node.tags['wheelchair'] === 'yes' ? 'Ja' : 'Nein'}</dd></div>`; osmTemplate += `<div><dt><span data-icon="wheelchair" class="size-l"></span>Rollstühle</dt><dd>${node.tags['wheelchair'] === 'yes' ? 'Ja' : 'Nein'}</dd></div>`;
@ -568,11 +551,7 @@ function renderData(location = null) {
<div class="typeList"> <div class="typeList">
${station.types.sort().map(t => `<span class="typeChip" data-type="${t}">${t}</span>`).join('')} ${station.types.sort().map(t => `<span class="typeChip" data-type="${t}">${t}</span>`).join('')}
</div> </div>
${sortByDistance ${typeof station.distance !== 'undefined' ? `<div class="distance"><b>${Math.round(station.distance / 100) / 10}</b><br>km</div>` : ''}
? typeof station.distance !== 'undefined'
? `<div class="distance"><b>${Math.round(station.distance / 100) / 10}</b><br>km</div>`
: '<div class="distance">? km</div>'
: ''}
</div> </div>
<div class="stationTitle"> <div class="stationTitle">
<h3>${station.name}</h3> <h3>${station.name}</h3>
@ -667,13 +646,12 @@ document.querySelector('#stationsNearMe')
if (geolocationPermission !== 'granted') { if (geolocationPermission !== 'granted') {
allowGeolocation(); allowGeolocation();
} else { } else {
sortByDistance = e.target.ariaPressed = true;
// If geolocation is already set. // If geolocation is already set.
// If not the location watcher will re-render our data. // If not the location watcher will re-render our data.
if (geolocation !== null) { if (geolocation !== null) {
renderData(geolocation) renderData(geolocation)
} }
sortByDistance = e.target.ariaPressed = true;
} }
} }
} else { } else {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

Before After
Before After

View file

@ -8,43 +8,9 @@
version="1.1" version="1.1"
id="svg1" id="svg1"
xml:space="preserve" xml:space="preserve"
inkscape:version="1.3 (1:1.3+202307231459+0e150ed6c4)"
sodipodi:docname="favicon_source.svg"
inkscape:export-filename="favicon-transparent.png"
inkscape:export-xdpi="130.048"
inkscape:export-ydpi="130.048"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview xmlns:svg="http://www.w3.org/2000/svg"><defs
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="0.9145201"
inkscape:cx="549.46851"
inkscape:cy="179.87576"
inkscape:window-width="1920"
inkscape:window-height="1085"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"><inkscape:page
x="0"
y="0"
width="100"
height="100"
id="page3"
margin="0"
bleed="0" /></sodipodi:namedview><defs
id="defs1" /><g id="defs1" /><g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1" id="layer1"
transform="translate(-104.49603,0.25552651)"><rect transform="translate(-104.49603,0.25552651)"><rect
style="fill:#65a30d;fill-opacity:1;stroke:none;stroke-width:0.499507;stroke-linejoin:round;paint-order:markers stroke fill" style="fill:#65a30d;fill-opacity:1;stroke:none;stroke-width:0.499507;stroke-linejoin:round;paint-order:markers stroke fill"

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Before After
Before After

View file

@ -8,48 +8,11 @@
version="1.1" version="1.1"
id="svg1" id="svg1"
xml:space="preserve" xml:space="preserve"
inkscape:version="1.3 (1:1.3+202307231459+0e150ed6c4)"
sodipodi:docname="favicon_source.svg"
inkscape:export-filename="favicon-transparent.png"
inkscape:export-xdpi="130.048"
inkscape:export-ydpi="130.048"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview xmlns:svg="http://www.w3.org/2000/svg"><defs
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="0.9145201"
inkscape:cx="549.46851"
inkscape:cy="179.87576"
inkscape:window-width="1920"
inkscape:window-height="1085"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"><inkscape:page
x="0"
y="0"
width="100"
height="100"
id="page4"
inkscape:export-filename="favicon-maskable.svg"
inkscape:export-xdpi="130.048"
inkscape:export-ydpi="130.048"
margin="0"
bleed="0" /></sodipodi:namedview><defs
id="defs1" /><g id="defs1" /><g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1" id="layer1"
transform="translate(-214.49603)"><path transform="translate(-214.49603)"><path
d="m 249.23591,69.79696 h 9.89848 V 56.598986 h 3.29945 v -8.248729 q 0,-2.722078 -1.93842,-4.660534 -1.93841,-1.938444 -4.66048,-1.938444 h -3.29958 q -2.72207,0 -4.66048,1.938444 -1.93842,1.938456 -1.93842,4.660534 v 8.248729 h 3.29945 z m 4.9493,-31.345184 q 1.73216,0 2.9282,-1.196048 1.19593,-1.196047 1.19593,-2.928304 0,-1.73223 -1.19593,-2.928291 -1.19591,-1.196048 -2.9282,-1.196048 -1.73228,0 -2.92832,1.196048 -1.19593,1.196048 -1.19593,2.928291 0,1.732244 1.19593,2.928304 1.19591,1.196048 2.92832,1.196048 z m 12.9504,8.24873 h 16.49751 l -8.24876,-13.197957 z m 8.24875,19.796961 8.24876,-13.19797 h -16.49751 z m -32.9949,16.002526 q -4.37178,0 -7.38255,-3.010781 -3.01088,-3.010782 -3.01088,-7.382617 V 27.893406 q 0,-4.37183 3.01088,-7.382614 3.01077,-3.010784 7.38255,-3.010784 h 44.21326 q 4.37179,0 7.38255,3.010784 3.01076,3.010784 3.01076,7.382614 v 44.213189 q 0,4.371835 -3.01076,7.382617 -3.01076,3.010781 -7.38255,3.010781 z" d="m 248.06205,71.319802 h 10.65991 V 57.1066 h 3.55325 v -8.883247 q 0,-2.931469 -2.08753,-5.019037 -2.08752,-2.087555 -5.01898,-2.087555 h -3.55339 q -2.93146,0 -5.01898,2.087555 -2.08753,2.087568 -2.08753,5.019037 V 57.1066 h 3.55325 z m 5.33002,-33.756351 q 1.8654,0 3.15345,-1.288052 1.28792,-1.288051 1.28792,-3.153558 0,-1.865479 -1.28792,-3.153545 -1.28791,-1.288051 -3.15345,-1.288051 -1.86553,0 -3.15358,1.288051 -1.28792,1.288052 -1.28792,3.153545 0,1.865493 1.28792,3.153558 1.28791,1.288052 3.15358,1.288052 z m 13.94658,8.883247 h 17.76655 l -8.88328,-14.213184 z m 8.88327,21.319804 8.88328,-14.213198 h -17.76655 z m -35.53296,17.23349 q -4.70808,0 -7.95044,-3.24238 -3.24249,-3.24238 -3.24249,-7.95051 V 26.192898 q 0,-4.708124 3.24249,-7.950507 3.24236,-3.242383 7.95044,-3.242383 h 47.61427 q 4.70809,0 7.95044,3.242383 3.24236,3.242383 3.24236,7.950507 v 47.614204 q 0,4.70813 -3.24236,7.95051 -3.24235,3.24238 -7.95044,3.24238 z"
id="path1-3" id="path1-3"
style="fill:#000000;fill-opacity:1;stroke-width:0.0824873" /></g></svg> style="fill:#000000;fill-opacity:1;stroke-width:0.0888325" /></g></svg>

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Before After
Before After

View file

@ -8,51 +8,16 @@
version="1.1" version="1.1"
id="svg1" id="svg1"
xml:space="preserve" xml:space="preserve"
inkscape:version="1.3 (1:1.3+202307231459+0e150ed6c4)"
sodipodi:docname="favicon_source.svg"
inkscape:export-filename="favicon-transparent.png"
inkscape:export-xdpi="130.048"
inkscape:export-ydpi="130.048"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview xmlns:svg="http://www.w3.org/2000/svg"><defs
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="0.9145201"
inkscape:cx="549.46851"
inkscape:cy="179.87576"
inkscape:window-width="1920"
inkscape:window-height="1085"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"><inkscape:page
x="0"
y="0"
width="100"
height="100"
id="page2"
margin="0"
bleed="0" /></sodipodi:namedview><defs
id="defs1" /><g id="defs1" /><g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"><rect id="layer1"><rect
style="fill:#65a30d;fill-opacity:1;stroke:#ffffff;stroke-width:9.49992e-05;stroke-linecap:round;stroke-linejoin:round;-inkscape-stroke:none;paint-order:stroke fill markers" style="opacity:1;fill:#65a30d;fill-opacity:1;stroke:none;stroke-width:0.499507;stroke-linejoin:round;paint-order:markers stroke fill"
id="rect1" id="rect1"
width="94.999908" width="100"
height="94.999908" height="100.00012"
x="2.5000463" x="-3.3306691e-15"
y="2.5000463" y="-6.1035156e-05" /><path
ry="31.407814" /><path d="M 33.56602,71.319802 H 44.22593 V 57.1066 h 3.55325 v -8.883247 q 0,-2.931469 -2.08753,-5.019037 -2.08752,-2.087555 -5.01898,-2.087555 h -3.55339 q -2.93146,0 -5.01898,2.087555 -2.08753,2.087568 -2.08753,5.019037 V 57.1066 h 3.55325 z m 5.33002,-33.756351 q 1.8654,0 3.15345,-1.288052 1.28792,-1.288051 1.28792,-3.153558 0,-1.865479 -1.28792,-3.153545 -1.28791,-1.288051 -3.15345,-1.288051 -1.86553,0 -3.15358,1.288051 -1.28792,1.288052 -1.28792,3.153545 0,1.865493 1.28792,3.153558 1.28791,1.288052 3.15358,1.288052 z m 13.94658,8.883247 H 70.60917 L 61.72589,32.233514 Z m 8.88327,21.319804 8.88328,-14.213198 H 52.84262 Z m -35.53296,17.23349 q -4.70808,0 -7.95044,-3.24238 Q 15,78.515232 15,73.807102 V 26.192898 q 0,-4.708124 3.24249,-7.950507 3.24236,-3.242383 7.95044,-3.242383 H 73.8072 q 4.70809,0 7.95044,3.242383 Q 85,21.484774 85,26.192898 v 47.614204 q 0,4.70813 -3.24236,7.95051 -3.24235,3.24238 -7.95044,3.24238 z"
d="m 34.739876,69.796959 h 9.898488 V 56.598987 h 3.299445 v -8.248731 q 0,-2.722078 -1.93842,-4.660533 -1.938411,-1.938445 -4.660481,-1.938445 H 38.03933 q -2.72207,0 -4.66048,1.938445 -1.93842,1.938455 -1.93842,4.660533 v 8.248731 h 3.299446 z M 39.68918,38.451776 q 1.732156,0 2.928204,-1.196048 1.195925,-1.196048 1.195925,-2.928304 0,-1.732231 -1.195925,-2.928292 -1.195916,-1.196048 -2.928204,-1.196048 -1.732278,0 -2.928325,1.196048 -1.195925,1.196049 -1.195925,2.928292 0,1.732244 1.195925,2.928304 1.195916,1.196048 2.928325,1.196048 z m 12.950396,8.24873 H 69.137087 L 60.888325,33.502549 Z m 8.248749,19.796962 8.248762,-13.197971 H 52.639576 Z M 27.893434,82.499994 q -4.371788,0 -7.382551,-3.010781 Q 17.5,76.478431 17.5,72.106595 V 27.893406 q 0,-4.37183 3.010883,-7.382615 3.010763,-3.010784 7.382551,-3.010784 h 44.213252 q 4.371798,0 7.382553,3.010784 Q 82.5,23.521576 82.5,27.893406 v 44.213189 q 0,4.371836 -3.010761,7.382618 -3.010755,3.010781 -7.382553,3.010781 z"
id="path1-3-7" id="path1-3-7"
style="fill:#ffffff;fill-opacity:1;stroke-width:0.0824873" /></g></svg> style="fill:#ffffff;fill-opacity:1;stroke-width:0.0888325" /></g></svg>

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Before After
Before After

View file

@ -1,85 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="100mm"
height="100mm"
viewBox="0 0 100 100"
version="1.1"
id="svg1"
xml:space="preserve"
inkscape:version="1.3 (1:1.3+202307231459+0e150ed6c4)"
sodipodi:docname="favicon_source.svg"
inkscape:export-filename="favicon-transparent.png"
inkscape:export-xdpi="130.048"
inkscape:export-ydpi="130.048"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="0.9145201"
inkscape:cx="549.46851"
inkscape:cy="179.87576"
inkscape:window-width="1920"
inkscape:window-height="1085"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"><inkscape:page
x="0"
y="0"
width="100"
height="100"
id="page2"
margin="0"
bleed="0" /><inkscape:page
x="104.49603"
y="-0.25552651"
width="100"
height="100"
id="page3"
margin="0"
bleed="0" /><inkscape:page
x="214.49603"
y="0"
width="100"
height="100"
id="page4"
inkscape:export-filename="favicon-transparent.svg"
inkscape:export-xdpi="130.048"
inkscape:export-ydpi="130.048" /></sodipodi:namedview><defs
id="defs1" /><g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"><rect
style="fill:#65a30d;fill-opacity:1;stroke:#ffffff;stroke-width:9.49992e-05;stroke-linecap:round;stroke-linejoin:round;-inkscape-stroke:none;paint-order:stroke fill markers"
id="rect1"
width="94.999908"
height="94.999908"
x="2.5000463"
y="2.5000463"
ry="31.407814" /><rect
style="fill:#65a30d;fill-opacity:1;stroke:none;stroke-width:0.499507;stroke-linejoin:round;paint-order:markers stroke fill"
id="rect1-1"
width="100"
height="100.00012"
x="104.49603"
y="-0.25558716" /><path
d="m 249.23591,69.79696 h 9.89848 V 56.598986 h 3.29945 v -8.248729 q 0,-2.722078 -1.93842,-4.660534 -1.93841,-1.938444 -4.66048,-1.938444 h -3.29958 q -2.72207,0 -4.66048,1.938444 -1.93842,1.938456 -1.93842,4.660534 v 8.248729 h 3.29945 z m 4.9493,-31.345184 q 1.73216,0 2.9282,-1.196048 1.19593,-1.196047 1.19593,-2.928304 0,-1.73223 -1.19593,-2.928291 -1.19591,-1.196048 -2.9282,-1.196048 -1.73228,0 -2.92832,1.196048 -1.19593,1.196048 -1.19593,2.928291 0,1.732244 1.19593,2.928304 1.19591,1.196048 2.92832,1.196048 z m 12.9504,8.24873 h 16.49751 l -8.24876,-13.197957 z m 8.24875,19.796961 8.24876,-13.19797 h -16.49751 z m -32.9949,16.002526 q -4.37178,0 -7.38255,-3.010781 -3.01088,-3.010782 -3.01088,-7.382617 V 27.893406 q 0,-4.37183 3.01088,-7.382614 3.01077,-3.010784 7.38255,-3.010784 h 44.21326 q 4.37179,0 7.38255,3.010784 3.01076,3.010784 3.01076,7.382614 v 44.213189 q 0,4.371835 -3.01076,7.382617 -3.01076,3.010781 -7.38255,3.010781 z"
id="path1-3"
style="fill:#000000;fill-opacity:1;stroke-width:0.0824873" /><path
d="m 34.739876,69.796959 h 9.898488 V 56.598987 h 3.299445 v -8.248731 q 0,-2.722078 -1.93842,-4.660533 -1.938411,-1.938445 -4.660481,-1.938445 H 38.03933 q -2.72207,0 -4.66048,1.938445 -1.93842,1.938455 -1.93842,4.660533 v 8.248731 h 3.299446 z M 39.68918,38.451776 q 1.732156,0 2.928204,-1.196048 1.195925,-1.196048 1.195925,-2.928304 0,-1.732231 -1.195925,-2.928292 -1.195916,-1.196048 -2.928204,-1.196048 -1.732278,0 -2.928325,1.196048 -1.195925,1.196049 -1.195925,2.928292 0,1.732244 1.195925,2.928304 1.195916,1.196048 2.928325,1.196048 z m 12.950396,8.24873 H 69.137087 L 60.888325,33.502549 Z m 8.248749,19.796962 8.248762,-13.197971 H 52.639576 Z M 27.893434,82.499994 q -4.371788,0 -7.382551,-3.010781 Q 17.5,76.478431 17.5,72.106595 V 27.893406 q 0,-4.37183 3.010883,-7.382615 3.010763,-3.010784 7.382551,-3.010784 h 44.213252 q 4.371798,0 7.382553,3.010784 Q 82.5,23.521576 82.5,27.893406 v 44.213189 q 0,4.371836 -3.010761,7.382618 -3.010755,3.010781 -7.382553,3.010781 z"
id="path1-3-7"
style="fill:#ffffff;fill-opacity:1;stroke-width:0.0824873" /><path
d="m 142.75747,64.972903 h 7.61422 V 54.820616 h 2.53804 V 48.47544 q 0,-2.093907 -1.49109,-3.585027 -1.49109,-1.49111 -3.58499,-1.49111 h -2.53813 q -2.0939,0 -3.58499,1.49111 -1.49109,1.49112 -1.49109,3.585027 v 6.345176 h 2.53803 z m 3.80716,-24.111679 q 1.33243,0 2.25246,-0.920037 0.91995,-0.920037 0.91995,-2.252542 0,-1.332485 -0.91995,-2.252532 -0.91993,-0.920036 -2.25246,-0.920036 -1.33252,0 -2.25256,0.920036 -0.91994,0.920037 -0.91994,2.252532 0,1.332495 0.91994,2.252542 0.91994,0.920037 2.25256,0.920037 z m 9.96184,6.345176 h 12.6904 l -6.3452,-10.152274 z m 6.3452,15.228432 6.3452,-10.152284 h -12.6904 z m -25.38069,12.309636 q -3.36291,0 -5.67889,-2.315986 -2.31606,-2.315986 -2.31606,-5.678936 V 32.7394 q 0,-3.362945 2.31606,-5.678933 2.31598,-2.315988 5.67889,-2.315988 h 34.01019 q 3.36292,0 5.67889,2.315988 2.31597,2.315988 2.31597,5.678933 v 34.010146 q 0,3.36295 -2.31597,5.678936 -2.31597,2.315986 -5.67889,2.315986 z"
id="path1-3-2"
style="fill:#ffffff;stroke-width:0.0634518;fill-opacity:1" /></g></svg>

Before

Width:  |  Height:  |  Size: 5.5 KiB

View file

@ -10,8 +10,8 @@
<link rel="icon" type="image/png" sizes="192" href="/icons/192.png"> <link rel="icon" type="image/png" sizes="192" href="/icons/192.png">
<link rel="shortcut icon" href="/icons/favicon.svg"> <link rel="shortcut icon" href="/icons/favicon.svg">
<link rel="manifest" href="/manifest.json"> <link rel="manifest" href="/manifest.json">
<link rel="mask-icon" href="/icons/favicon-transparent.svg" color="#65a30d"> <link rel="mask-icon" href="/icons/favicon-transparent.svg" color="#047857">
<title>hvvstuhl.de</title> <title>Barrierefreie Aufzugs-Liste</title>
</head> </head>
<body> <body>
<h1>Barrierefreie Aufzugs-Liste</h1> <h1>Barrierefreie Aufzugs-Liste</h1>
@ -37,14 +37,15 @@
<button id="loadElevators" class="hidden"> <button id="loadElevators" class="hidden">
Aktualisieren Aktualisieren
<span data-icon="load" class="size-s spinner hidden"></span> <span data-icon="load" class="size-s spinner hidden"></span>
</button> </button><br>
</div> </div>
<br>
<div class="hidden" id="filters"> <div class="hidden" id="filters">
<input placeholder="Station suchen" id="searchStation"> <input placeholder="Station suchen" id="searchStation">
<button id="stationsNearMe" aria-pressed="false"> <button id="stationsNearMe" aria-pressed="false">
<span data-icon="location-searching" class="size-m"></span> <span data-icon="location-searching" class="size-m"></span>
Standort Nach Entfernung sortieren
<span data-icon="load" class="size-m spinner hidden"></span> <span data-icon="load" class="size-m spinner hidden"></span>
</button> </button>
<div id="typeFilter"> <div id="typeFilter">
@ -79,14 +80,11 @@
<div id="dialog_layer" class="dialogs"> <div id="dialog_layer" class="dialogs">
<div role="dialog" id="dialog_osm" aria-labelledby="dialog_osm_label" aria-modal="true" class=""> <div role="dialog" id="dialog_osm" aria-labelledby="dialog_osm_label" aria-modal="true" class="">
<h2 id="dialog_osm_label"> <h2 id="dialog_osm_label" class="dialog_label">IPv4 RDAP Info</h2>
Fehlende Daten abrufen <button onclick="closeDialog('#dialog_osm')" class="close-modal">x</button>
</h2> <hr>
<button onclick="closeDialog('#dialog_osm')" class="close-modal">
<span data-icon="close" class="size-m"></span>
</button>
<p> <p>
Um die Stationen nach Entfernung sortieren zu können, müssen zusätzliche Daten von OpenStreetMap geladen Um die Stationen nach Entfernung sortieren zu können müssen zusätzliche Daten von OpenStreetMap geladen
werden. werden.
</p> </p>
<button id="loadOsm"> <button id="loadOsm">

18
main.js
View file

@ -1,4 +1,4 @@
const version = '0.6.4' const version = '0.6.0'
const minorVersion = version.split('.').splice(0, 2).join('.'); const minorVersion = version.split('.').splice(0, 2).join('.');
const numberFormat = new Intl.NumberFormat('de-DE', { const numberFormat = new Intl.NumberFormat('de-DE', {
maximumFractionDigits: 1 maximumFractionDigits: 1
@ -34,18 +34,8 @@ function closeDialog(selector) {
} }
if ("serviceWorker" in navigator) { if ("serviceWorker" in navigator) {
navigator.serviceWorker.register("/sw.js") console.log('installing sw');
.then((registration) => { navigator.serviceWorker.register("/sw.js").then((registration) => {
if (registration.installing) { console.log('done installing sw');
console.log('New Service Worker is installing...');
} else if (registration.waiting) {
console.log('Installed new service worker. Waiting for Update (up to 24h).');
} else if (registration.active) {
console.log('Service Worker is up to date.');
}
})
.catch((error) => {
// registration failed
console.error(`Registration failed with ${error}`);
}); });
} }

View file

@ -4,7 +4,7 @@
"start_url": ".", "start_url": ".",
"display": "standalone", "display": "standalone",
"background_color": "#030712", "background_color": "#030712",
"theme_color": "#65a30d", "theme_color": "#047857",
"description": "Barrierefreie Aufzugs-Liste", "description": "Barrierefreie Aufzugs-Liste",
"icons": [ "icons": [
{ {

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed"><path d="m256-168-88-88 224-224-224-224 88-88 224 224 224-224 88 88-224 224 224 224-88 88-224-224-224 224Z"/></svg>

Before

Width:  |  Height:  |  Size: 222 B

149
style.css
View file

@ -301,7 +301,6 @@
--station-border: var(--color-gray-400); --station-border: var(--color-gray-400);
--station-border-hover: var(--color-gray-600); --station-border-hover: var(--color-gray-600);
--elevator-bg: var(--color-gray-100); --elevator-bg: var(--color-gray-100);
--backdrop: rgb(0 0 0 / 20%);
--elevator-list-gap: 3rem; --elevator-list-gap: 3rem;
--item-radius: 1.5rem; --item-radius: 1.5rem;
--btn-radius: 0.8rem; --btn-radius: 0.8rem;
@ -333,7 +332,6 @@
--station-border: var(--color-gray-600); --station-border: var(--color-gray-600);
--station-border-hover: var(--color-gray-400); --station-border-hover: var(--color-gray-400);
--elevator-bg: var(--color-gray-900); --elevator-bg: var(--color-gray-900);
--backdrop: rgb(100% 100% 100% / 20%);
} }
} }
@ -351,39 +349,26 @@ body.has-dialog {
right: 0; right: 0;
bottom: 0; bottom: 0;
left: 0; left: 0;
z-index: 99; background: rgba(0, 0, 0, 0.3);
background: var(--backdrop);
} }
.dialogs.active { .dialogs.active {
display: block; display: block;
} }
.dialogs [role=dialog] {
[role=dialog] {
box-sizing: border-box; box-sizing: border-box;
max-width: 800px; max-width: 800px;
margin: 0 auto; margin: 0 auto;
padding: var(--space-xl); padding: 15px;
padding-bottom: var(--space-2xl); border-radius: 1rem;
background-color: var(--bg); background-color: var(--background);
color: var(--text); color: var(--color);
overflow: hidden;
position: absolute;
right: 0;
bottom: 0;
left: 0;
border-radius: var(--item-radius) var(--item-radius) 0 0;
}
@media screen and (min-width: 576px) {
.dialogs [role=dialog] {
position: relative; position: relative;
border-radius: var(--item-radius);
} }
} [role=dialog] button.close-modal {
.dialogs [role=dialog] button.close-modal {
position: absolute; position: absolute;
top: 0; top: 0;
right: 0; right: 0;
border-radius: 0 0 0 var(--btn-radius);
border: none;
} }
.hidden { .hidden {
@ -404,7 +389,7 @@ body.has-dialog {
body { body {
font-family: system-ui, ui-sans-serif, sans-serif; font-family: system-ui, ui-sans-serif, sans-serif;
font-size: 1rem; font-size: 1.2rem;
background-color: var(--bg); background-color: var(--bg);
color: var(--text); color: var(--text);
} }
@ -500,13 +485,6 @@ div#updateInfo {
align-items: center; align-items: center;
gap: var(--space-m); gap: var(--space-m);
justify-content: end; justify-content: end;
flex-direction: column;
margin-bottom: var(--space-l);
}
@media screen and (min-width: 576px) {
div#updateInfo {
flex-direction: row;
}
} }
div#updateInfo #oldDataWarning { div#updateInfo #oldDataWarning {
color: var(--color-red-600); color: var(--color-red-600);
@ -517,7 +495,10 @@ div#filters {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
gap: var(--space-m); gap: var(--space-m);
justify-content: center; justify-content: stretch;
}
div#filters button, div#filters input {
font-size: 1.5rem;
} }
div#filters > * { div#filters > * {
width: 100%; width: 100%;
@ -527,63 +508,8 @@ div#filters > * {
@media screen and (min-width: 576px) { @media screen and (min-width: 576px) {
div#filters > * { div#filters > * {
width: auto; width: auto;
min-width: 0;
} }
} }
div#filters input#searchStation {
flex-grow: 1;
font-size: 1.5rem;
min-width: 10ch;
}
div#filters button#stationsNearMe {
font-size: 1.5rem;
}
div#filters div#typeFilter {
font-size: 1.5rem;
display: flex;
justify-content: center;
flex-shrink: 0;
min-height: var(--space-2xl);
gap: var(--space-m);
}
div#filters div#typeFilter button.typeChip {
flex-shrink: 0;
padding: 0;
height: var(--space-2xl);
aspect-ratio: 1/1;
justify-content: center;
align-items: center;
position: relative;
overflow: hidden;
border-radius: 9999px;
}
div#filters div#typeFilter button.typeChip[data-type=U], div#filters div#typeFilter button.typeChip[data-type=S], div#filters div#typeFilter button.typeChip[data-type=A], div#filters div#typeFilter button.typeChip[data-type=R] {
border: solid 2px var(--text);
}
div#filters div#typeFilter button.typeChip[data-type=U][data-pressed=false], div#filters div#typeFilter button.typeChip[data-type=S][data-pressed=false], div#filters div#typeFilter button.typeChip[data-type=A][data-pressed=false], div#filters div#typeFilter button.typeChip[data-type=R][data-pressed=false] {
background-color: var(--color-gray-500);
color: var(--color-type-disabled);
}
div#filters div#typeFilter button.typeChip[data-type=U][data-pressed=false][data-type=U], div#filters div#typeFilter button.typeChip[data-type=S][data-pressed=false][data-type=U], div#filters div#typeFilter button.typeChip[data-type=A][data-pressed=false][data-type=U], div#filters div#typeFilter button.typeChip[data-type=R][data-pressed=false][data-type=U] {
background-color: var(--bg-type-u-disabled);
}
div#filters div#typeFilter button.typeChip[data-type=U][data-pressed=false][data-type=S], div#filters div#typeFilter button.typeChip[data-type=S][data-pressed=false][data-type=S], div#filters div#typeFilter button.typeChip[data-type=A][data-pressed=false][data-type=S], div#filters div#typeFilter button.typeChip[data-type=R][data-pressed=false][data-type=S] {
background-color: var(--bg-type-s-disabled);
}
div#filters div#typeFilter button.typeChip[data-type=U][data-pressed=false][data-type=A], div#filters div#typeFilter button.typeChip[data-type=S][data-pressed=false][data-type=A], div#filters div#typeFilter button.typeChip[data-type=A][data-pressed=false][data-type=A], div#filters div#typeFilter button.typeChip[data-type=R][data-pressed=false][data-type=A] {
background-color: var(--bg-type-a-disabled);
}
div#filters div#typeFilter button.typeChip[data-type=U][data-pressed=false][data-type=R], div#filters div#typeFilter button.typeChip[data-type=S][data-pressed=false][data-type=R], div#filters div#typeFilter button.typeChip[data-type=A][data-pressed=false][data-type=R], div#filters div#typeFilter button.typeChip[data-type=R][data-pressed=false][data-type=R] {
background-color: var(--bg-type-r-disabled);
}
div#filters div#typeFilter button.typeChip[data-type=U][data-pressed=false]::after, div#filters div#typeFilter button.typeChip[data-type=S][data-pressed=false]::after, div#filters div#typeFilter button.typeChip[data-type=A][data-pressed=false]::after, div#filters div#typeFilter button.typeChip[data-type=R][data-pressed=false]::after {
position: absolute;
content: "";
width: 144%;
height: 0.4rem;
background-color: var(--color-gray-700);
transform: rotate(-45deg);
}
button#initialLoad { button#initialLoad {
font-size: 1.5rem; font-size: 1.5rem;
@ -972,6 +898,52 @@ span.lineChip[data-type=R], span.typeChip[data-type=R], button.typeChip[data-typ
} }
} }
div#typeFilter {
display: flex;
flex-grow: 1;
flex-wrap: nowrap;
flex-shrink: 0;
min-height: var(--space-2xl);
gap: var(--space-m);
}
div#typeFilter button.typeChip {
padding: 0;
height: 100%;
aspect-ratio: 1/1;
justify-content: center;
align-items: center;
position: relative;
overflow: hidden;
}
div#typeFilter button.typeChip[data-type=U], div#typeFilter button.typeChip[data-type=S], div#typeFilter button.typeChip[data-type=A], div#typeFilter button.typeChip[data-type=R] {
border: solid 2px var(--station-border);
}
div#typeFilter button.typeChip[data-type=U][data-pressed=false], div#typeFilter button.typeChip[data-type=S][data-pressed=false], div#typeFilter button.typeChip[data-type=A][data-pressed=false], div#typeFilter button.typeChip[data-type=R][data-pressed=false] {
background-color: var(--color-gray-500);
color: var(--color-type-disabled);
}
div#typeFilter button.typeChip[data-type=U][data-pressed=false][data-type=U], div#typeFilter button.typeChip[data-type=S][data-pressed=false][data-type=U], div#typeFilter button.typeChip[data-type=A][data-pressed=false][data-type=U], div#typeFilter button.typeChip[data-type=R][data-pressed=false][data-type=U] {
background-color: var(--bg-type-u-disabled);
}
div#typeFilter button.typeChip[data-type=U][data-pressed=false][data-type=S], div#typeFilter button.typeChip[data-type=S][data-pressed=false][data-type=S], div#typeFilter button.typeChip[data-type=A][data-pressed=false][data-type=S], div#typeFilter button.typeChip[data-type=R][data-pressed=false][data-type=S] {
background-color: var(--bg-type-s-disabled);
}
div#typeFilter button.typeChip[data-type=U][data-pressed=false][data-type=A], div#typeFilter button.typeChip[data-type=S][data-pressed=false][data-type=A], div#typeFilter button.typeChip[data-type=A][data-pressed=false][data-type=A], div#typeFilter button.typeChip[data-type=R][data-pressed=false][data-type=A] {
background-color: var(--bg-type-a-disabled);
}
div#typeFilter button.typeChip[data-type=U][data-pressed=false][data-type=R], div#typeFilter button.typeChip[data-type=S][data-pressed=false][data-type=R], div#typeFilter button.typeChip[data-type=A][data-pressed=false][data-type=R], div#typeFilter button.typeChip[data-type=R][data-pressed=false][data-type=R] {
background-color: var(--bg-type-r-disabled);
}
div#typeFilter button.typeChip[data-type=U][data-pressed=false]::after, div#typeFilter button.typeChip[data-type=S][data-pressed=false]::after, div#typeFilter button.typeChip[data-type=A][data-pressed=false]::after, div#typeFilter button.typeChip[data-type=R][data-pressed=false]::after {
position: absolute;
content: "";
width: 144%;
height: 0.4rem;
background-color: var(--color-gray-500);
opacity: 80%;
transform: rotate(-45deg);
}
span.lineChip { span.lineChip {
padding: 0.3em 0.6em; padding: 0.3em 0.6em;
min-width: 4ch; min-width: 4ch;
@ -1081,9 +1053,6 @@ span[data-icon][data-icon=location-searching] {
span[data-icon][data-icon=load] { span[data-icon][data-icon=load] {
mask-image: url(/md_icons/load.svg); mask-image: url(/md_icons/load.svg);
} }
span[data-icon][data-icon=close] {
mask-image: url(/md_icons/close.svg);
}
span[data-icon].spinner { span[data-icon].spinner {
animation-delay: 0s; animation-delay: 0s;
animation-direction: normal; animation-direction: normal;

View file

@ -1 +1 @@
{"version":3,"sourceRoot":"","sources":["style.scss","colors.scss"],"names":[],"mappings":"AAMA;ACLE;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAwBA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;ED/PA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAIA;EACA;EACA;EAEA;EACA;EACA;EAEA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EAEA;EAgCA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAtCA;EApDF;IAsDI;IACA;IACA;IACA;IACA;IAGA;IACA;IACA;IAEA;IACA;IACA;IAEA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IAEA;;;;AAeF;EACE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAfF;IAgBI;IACA;;;AAIA;EACE;EACA;EACA;EACA;EACA;;;AAMR;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EAGA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;;AAKF;EACE;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;EACA;EACA;EAEA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;;AAOV;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EARF;IASI;;;AAGF;EACE;EACA;;;AAIJ;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AACA;EAJF;IAKI;IACA;;;AAIJ;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAQZ;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAEA;EACE;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EAEA;EACA;EACA;;AAKJ;EACE;EACA;EAEA;EACA;EACA;;AAEA;EACE;EACA;EACA;EAEA;;AAEA;EAPF;IAQI;;;AAIJ;EACE;EAEA;EACA;EACA;EACA;;AAEA;EARF;IASI;IACA;IACA;;;AAMR;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAIA;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EAjCF;IAkCI;;;AAIJ;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EAEA;EACA;;AACA;EATF;IAUI;IACA;IACA;;;AAIF;EACE;EACA;;AACA;EAHF;IAII;;;AAKJ;EACE;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EAEA;;AACA;EARF;IASI;;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;;AAGE;EADF;IAEI;;;AAKF;EADF;IAEI;;;AAKJ;EACE;EACA;EACA;EACA;;AAKJ;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAOA;EACE;;AAMR;EACE;EACA;EACA;EAEA;EACA;;AAEA;EACE;EAEA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAIA;EACE;;AAKF;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAKN;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EARF;IASI;;;AAIJ;EACE;EACA;EAEA;;AAEA;EANF;IAOI;;;;AAYpB;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAGF;EACE;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;;AAIJ;EACE;EACA;;AAGF;EACE;EACA;;AAEA;EAJF;IAKI;;;;AAMN;EACE;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EAEE;EAMA;EACA;EACA;EACA;EACA;EACA;EACA;;AAVA;EACE;;AAWF;EAIE;EACA;;;AAMJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIJ;EACE;IACE","file":"style.css"} {"version":3,"sourceRoot":"","sources":["style.scss","colors.scss"],"names":[],"mappings":"AAMA;ACLE;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAwBA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;ED/PA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAIA;EACA;EACA;EAEA;EACA;EACA;EAEA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EA8BA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AApCA;EAlDF;IAoDI;IACA;IACA;IACA;IACA;IAGA;IACA;IACA;IAEA;IACA;IACA;IAEA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;;;;AAeF;EACE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;EACA;EACA;;;AAKN;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EAGA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;;AAKF;EACE;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;EACA;EACA;EAEA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;;AAOV;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;;AAIJ;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;;AAIJ;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;;AACA;EAJF;IAKI;;;;AAKN;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAEA;EACE;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EAEA;EACA;EACA;;AAKJ;EACE;EACA;EAEA;EACA;EACA;;AAEA;EACE;EACA;EACA;EAEA;;AAEA;EAPF;IAQI;;;AAIJ;EACE;EAEA;EACA;EACA;EACA;;AAEA;EARF;IASI;IACA;IACA;;;AAMR;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAIA;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EAjCF;IAkCI;;;AAIJ;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EAEA;EACA;;AACA;EATF;IAUI;IACA;IACA;;;AAIF;EACE;EACA;;AACA;EAHF;IAII;;;AAKJ;EACE;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EAEA;;AACA;EARF;IASI;;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;;AAGE;EADF;IAEI;;;AAKF;EADF;IAEI;;;AAKJ;EACE;EACA;EACA;EACA;;AAKJ;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAOA;EACE;;AAMR;EACE;EACA;EACA;EAEA;EACA;;AAEA;EACE;EAEA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAIA;EACE;;AAKF;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAKN;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EARF;IASI;;;AAIJ;EACE;EACA;EAEA;;AAEA;EANF;IAOI;;;;AAYpB;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAGF;EACE;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;;AAIJ;EACE;EACA;;AAGF;EACE;EACA;;AAEA;EAJF;IAKI;;;;AAMN;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAQV;EACE;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EAEE;EAMA;EACA;EACA;EACA;EACA;EACA;EACA;;AAVA;EACE;;AAWF;EAIE;EACA;;;AAMJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIJ;EACE;IACE","file":"style.css"}

View file

@ -54,8 +54,6 @@ $mediumBreakpoint: 800px;
--station-border-hover: var(--color-gray-600); --station-border-hover: var(--color-gray-600);
--elevator-bg: var(--color-gray-100); --elevator-bg: var(--color-gray-100);
--backdrop: rgb(0 0 0 / 20%);
@media (prefers-color-scheme: dark) { @media (prefers-color-scheme: dark) {
// LineType Colors // LineType Colors
--bg-type-u-disabled: #{scale-color($colorTypeU, $saturation: -80%, $lightness: +20%)}; --bg-type-u-disabled: #{scale-color($colorTypeU, $saturation: -80%, $lightness: +20%)};
@ -82,8 +80,6 @@ $mediumBreakpoint: 800px;
--station-border: var(--color-gray-600); --station-border: var(--color-gray-600);
--station-border-hover: var(--color-gray-400); --station-border-hover: var(--color-gray-400);
--elevator-bg: var(--color-gray-900); --elevator-bg: var(--color-gray-900);
--backdrop: rgb(100% 100% 100% / 20%);
} }
--elevator-list-gap: 3rem; --elevator-list-gap: 3rem;
@ -113,42 +109,29 @@ body {
right: 0; right: 0;
bottom: 0; bottom: 0;
left: 0; left: 0;
z-index: 99; background: rgb(0 0 0 / 30%);
background: var(--backdrop);
&.active { &.active {
display: block; display: block;
} }
}
[role="dialog"] { [role="dialog"] {
box-sizing: border-box; box-sizing: border-box;
max-width: 800px; max-width: 800px;
margin: 0 auto; margin: 0 auto;
padding: var(--space-xl); padding: 15px;
padding-bottom: var(--space-2xl); border-radius: 1rem;
background-color: var(--bg); background-color: var(--background);
color: var(--text); color: var(--color);
overflow: hidden;
position: absolute;
right: 0;
bottom: 0;
left: 0;
border-radius: var(--item-radius) var(--item-radius) 0 0;
@media screen and (min-width: $mobileBreakpoint) {
position: relative; position: relative;
border-radius: var(--item-radius);
}
button { button {
&.close-modal { &.close-modal {
position: absolute; position: absolute;
top: 0; top: 0;
right: 0; right: 0;
border-radius: 0 0 0 var(--btn-radius);
border: none;
}
} }
} }
} }
@ -171,7 +154,7 @@ body {
body { body {
font-family: system-ui, ui-sans-serif, sans-serif; font-family: system-ui, ui-sans-serif, sans-serif;
font-size: 1rem; font-size: 1.2rem;
// colors // colors
background-color: var(--bg); background-color: var(--bg);
@ -284,12 +267,6 @@ div#updateInfo {
align-items: center; align-items: center;
gap: var(--space-m); gap: var(--space-m);
justify-content: end; justify-content: end;
flex-direction: column;
margin-bottom: var(--space-l);
@media screen and (min-width: $mobileBreakpoint) {
flex-direction: row;
}
#oldDataWarning { #oldDataWarning {
color: var(--color-red-600); color: var(--color-red-600);
@ -301,7 +278,11 @@ div#filters {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
gap: var(--space-m); gap: var(--space-m);
justify-content: center; justify-content: stretch;
button, input {
font-size: 1.5rem;
}
> * { > * {
width: 100%; width: 100%;
@ -309,72 +290,6 @@ div#filters {
text-align: center; text-align: center;
@media screen and (min-width: $mobileBreakpoint) { @media screen and (min-width: $mobileBreakpoint) {
width: auto; width: auto;
min-width: 0;
}
}
input#searchStation {
flex-grow: 1;
font-size: 1.5rem;
min-width: 10ch;
}
button#stationsNearMe {
font-size: 1.5rem;
}
div#typeFilter {
font-size: 1.5rem;
display: flex;
justify-content: center;
flex-shrink: 0;
min-height: var(--space-2xl);
gap: var(--space-m);
button.typeChip {
flex-shrink: 0;
padding: 0;
height: var(--space-2xl);
aspect-ratio: 1/1;
justify-content: center;
align-items: center;
position: relative;
overflow: hidden;
border-radius: 9999px;
&[data-type="U"], &[data-type="S"], &[data-type="A"], &[data-type="R"] {
border: solid 2px var(--text);
&[data-pressed="false"] {
background-color: var(--color-gray-500);
color: var(--color-type-disabled);
&[data-type="U"] {
background-color: var(--bg-type-u-disabled);
}
&[data-type="S"] {
background-color: var(--bg-type-s-disabled);
}
&[data-type="A"] {
background-color: var(--bg-type-a-disabled);
}
&[data-type="R"] {
background-color: var(--bg-type-r-disabled);
}
&::after {
position: absolute;
content: '';
width: 144%;
height: 0.4rem;
background-color: var(--color-gray-700);
transform: rotate(-45deg);
}
}
}
} }
} }
} }
@ -839,6 +754,61 @@ span.lineChip, span.typeChip, button.typeChip {
} }
div#typeFilter {
display: flex;
flex-grow: 1;
flex-wrap: nowrap;
flex-shrink: 0;
min-height: var(--space-2xl);
gap: var(--space-m);
button.typeChip {
padding: 0;
height: 100%;
aspect-ratio: 1/1;
justify-content: center;
align-items: center;
position: relative;
overflow: hidden;
&[data-type="U"], &[data-type="S"], &[data-type="A"], &[data-type="R"] {
border: solid 2px var(--station-border);
&[data-pressed="false"] {
background-color: var(--color-gray-500);
color: var(--color-type-disabled);
&[data-type="U"] {
background-color: var(--bg-type-u-disabled);
}
&[data-type="S"] {
background-color: var(--bg-type-s-disabled);
}
&[data-type="A"] {
background-color: var(--bg-type-a-disabled);
}
&[data-type="R"] {
background-color: var(--bg-type-r-disabled);
}
&::after {
position: absolute;
content: '';
width: 144%;
height: 0.4rem;
background-color: var(--color-gray-500);
opacity: 80%;
transform: rotate(-45deg);
}
}
}
}
}
span.lineChip { span.lineChip {
padding: 0.3em 0.6em; padding: 0.3em 0.6em;
min-width: 4ch; min-width: 4ch;
@ -978,10 +948,6 @@ span[data-icon] {
mask-image: url(/md_icons/load.svg); mask-image: url(/md_icons/load.svg);
} }
&[data-icon="close"] {
mask-image: url(/md_icons/close.svg);
}
&.spinner { &.spinner {
animation-delay: 0s; animation-delay: 0s;
animation-direction: normal; animation-direction: normal;

21
sw.js
View file

@ -1,4 +1,4 @@
const version = '0.6.4' const version = '0.6.0'
const consolePrefix = `[SW v${version}] ` const consolePrefix = `[SW v${version}] `
const cacheName = `hvvstuhl-${version}`; const cacheName = `hvvstuhl-${version}`;
@ -36,16 +36,13 @@ const contentToCache = [
// Service worker Install: Cache all files // Service worker Install: Cache all files
self.addEventListener("install", (e) => { self.addEventListener("install", (e) => {
console.log(`${consolePrefix}Wird installiert....`); console.log("[Service Worker] Wird installiert....");
e.waitUntil( e.waitUntil(
(async () => { (async () => {
const cache = await caches.open(cacheName); const cache = await caches.open(cacheName);
console.log(`${consolePrefix} Cache wird aufgebaut...`); console.log("[Service Worker] Cache wird aufgebaut...");
await cache.addAll(contentToCache); await cache.addAll(contentToCache);
console.log(`${consolePrefix} > FERTIG`); console.log("[Service Worker] FERTIG");
console.log(`${consolePrefix} Versuche Wartezeit zu überspringen...`);
await self.skipWaiting();
console.log(`${consolePrefix} > Erfolgreich`);
})(), })(),
); );
}); });
@ -63,10 +60,8 @@ const deleteOldCaches = async () => {
self.addEventListener("activate", (event) => { self.addEventListener("activate", (event) => {
event.waitUntil( event.waitUntil(
(async () => { (async () => {
await deleteOldCaches(); await deleteOldCaches()
console.log(`${consolePrefix}Versuche Clients zu beanspruchen...`); await clients.claim();
await self.clients.claim();
console.log(`${consolePrefix} > Erfolgreich`);
})(), })(),
); );
}); });
@ -84,12 +79,12 @@ self.addEventListener("fetch", (e) => {
const r = await caches.match(e.request); const r = await caches.match(e.request);
if (r) { if (r) {
console.log(`${consolePrefix} > Im Cache gefunden.`); console.log(`${consolePrefix} Im Cache gefunden.`);
return r; return r;
} }
const response = await fetch(e.request); const response = await fetch(e.request);
const cache = await caches.open(cacheName); const cache = await caches.open(cacheName);
console.log(`${consolePrefix} > Nicht gefunden. Aktualisiere Cache: ${path}`); console.log(`${consolePrefix} Nicht gefunden. Aktualisiere Cache: ${path}`);
await cache.put(e.request, response.clone()); await cache.put(e.request, response.clone());
return response; return response;
}else{ }else{