Skip to content
Snippets Groups Projects
Commit 591105ed authored by Niklas Schrötler's avatar Niklas Schrötler
Browse files

Merge branch 'master' into 'master'

MensaJetzt marquee text now completely displaying + smaller refactorings

See merge request !12
parents d77b2977 b4b6aa0c
No related branches found
No related tags found
No related merge requests found
...@@ -98,57 +98,3 @@ ...@@ -98,57 +98,3 @@
font-weight: 800; font-weight: 800;
src: url('./../public/fonts/inter/inter-v13-latin-800.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ src: url('./../public/fonts/inter/inter-v13-latin-800.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
} }
/* Marquee */
.marquee {
height: 50px;
overflow: hidden;
position: relative;
color: white;
}
.marquee p {
position: absolute;
width: 100%;
height: 100%;
margin: 0;
line-height: 50px;
text-align: center;
-moz-transform: translateX(100%);
-webkit-transform: translateX(100%);
transform: translateX(100%);
-moz-animation: scroll-left 2s linear infinite;
-webkit-animation: scroll-left 2s linear infinite;
animation: scroll-left 20s linear infinite;
}
@-moz-keyframes scroll-left {
0% {
-moz-transform: translateX(100%);
}
100% {
-moz-transform: translateX(-100%);
}
}
@-webkit-keyframes scroll-left {
0% {
-webkit-transform: translateX(100%);
}
100% {
-webkit-transform: translateX(-100%);
}
}
@keyframes scroll-left {
0% {
-moz-transform: translateX(100%);
-webkit-transform: translateX(100%);
transform: translateX(100%);
}
100% {
-moz-transform: translateX(-100%);
-webkit-transform: translateX(-100%);
transform: translateX(-100%);
}
}
\ No newline at end of file
...@@ -173,8 +173,6 @@ async function getStopData(stop: string): Promise<StationResponse> { ...@@ -173,8 +173,6 @@ async function getStopData(stop: string): Promise<StationResponse> {
} }
})) }))
console.log(data);
return data as StationResponse; return data as StationResponse;
} }
......
...@@ -24,8 +24,6 @@ const GremiumPanel = (props: {definition: GremiumPanelDefinition}) => { ...@@ -24,8 +24,6 @@ const GremiumPanel = (props: {definition: GremiumPanelDefinition}) => {
useEffect(() => { useEffect(() => {
const update = async () => { const update = async () => {
setGremium(props.definition.gremien[cycle.current++ % props.definition.gremien.length]); setGremium(props.definition.gremien[cycle.current++ % props.definition.gremien.length]);
console.log(gremium);
console.log(cycle.current);
} }
update(); update();
......
import React, { useEffect, useState } from 'react'; import { useEffect, useState } from "react";
import PanelWrapper from "../../meta/PanelWrapper"; import PanelWrapper from "../../meta/PanelWrapper";
import PanelTitle from "../../meta/PanelTitle"; import PanelTitle from "../../meta/PanelTitle";
import PanelContent from "../../meta/PanelContent"; import PanelContent from "../../meta/PanelContent";
...@@ -28,43 +28,33 @@ const MensaJetztPanel = () => { ...@@ -28,43 +28,33 @@ const MensaJetztPanel = () => {
const request = await fetch(`https://mensa.jetzt/api/entries/`); const request = await fetch(`https://mensa.jetzt/api/entries/`);
if (request.status !== 200) { if (request.status !== 200) {
setMarqueeContent("Niemand :("); setMarqueeContent("API Error :(");
console.error("mensa.jetzt API returned error code");
return; return;
} }
const data = await request.json() as MensaJetztAPIResponse; const data = await request.json() as MensaJetztAPIResponse;
const attendance = data.attendance.reduce<Attendance>((accu, curr) => { let marquee = Object.entries(
const keys = Object.keys(accu); data.attendance
.sort((a, b) => a.time.localeCompare(b.time))
if (keys.includes(curr.time)) { .reduce((acc, curr) => {
return { if (acc[curr.time]) {
...accu, acc[curr.time].push(curr);
[curr.time]: [
...accu[curr.time],
curr,
]
}
} else { } else {
return { acc[curr.time] = [curr];
...accu,
[curr.time]: [curr],
}
}
}, {});
let marquee = "";
for (const time of Object.keys(attendance).sort()) {
marquee += " | " + time + " - " + (attendance[time].map(a => a.name).join(", "));
} }
return acc;
}, {} as Attendance)
).map(([time, attendees]) => `${time} - ${attendees.map(a => a.name).join(", ")}`)
.join(" | ");
if (marquee !== "") { if (marquee) {
marquee += " |"; marquee += " |";
} else {
marquee = "Niemand :(";
} }
marquee = marquee.trim(); setMarqueeContent(marquee.trim());
let marqueeContent = marquee ? marquee : 'Niemand :(';
setMarqueeContent(marqueeContent);
} }
catch (e) { catch (e) {
console.warn("mensa.jetzt not showing data because", e); console.warn("mensa.jetzt not showing data because", e);
...@@ -73,23 +63,29 @@ const MensaJetztPanel = () => { ...@@ -73,23 +63,29 @@ const MensaJetztPanel = () => {
} }
update(); update();
const interval = setInterval(update, 60 * 1000); const interval = setInterval(update, 5 * 60 * 1000);
return () => { return () => {
clearInterval(interval); clearInterval(interval);
} }
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []); }, []);
return ( return (
<PanelWrapper className={"relative"}> <PanelWrapper className={"relative"}>
<PanelTitle title={"Mensa.jetzt"}/> <PanelTitle title={"Mensa.jetzt"}/>
<PanelContent> <PanelContent>
{/* @ts-ignore */} {marqueeContent.includes("Uhr") ? (
<div class="marquee"> {/* eslint-disable-line jsx-a11y/no-distracting-elements */} <div className={"flex overflow-hidden whitespace-nowrap"}>
<p>{marqueeContent}</p> <div className={"animate-marquee"}>
{/* @ts-ignore */} {marqueeContent}
</div>
<div className={"animate-marquee ml-1"}>
{marqueeContent}
</div>
</div> </div>
) : (
<div className={"text-center"}>{marqueeContent}</div>
)}
</PanelContent> </PanelContent>
</PanelWrapper> </PanelWrapper>
); );
......
...@@ -67,8 +67,6 @@ const MensaplanPanel = (props: {definition: MensaPanelDefinition}) => { ...@@ -67,8 +67,6 @@ const MensaplanPanel = (props: {definition: MensaPanelDefinition}) => {
const data = await request.json() as CanteenAPIResponse; const data = await request.json() as CanteenAPIResponse;
console.log(data);
const old_menus_count = menus.current.length; const old_menus_count = menus.current.length;
const old_specials_count = menus.current.length; const old_specials_count = menus.current.length;
......
...@@ -17,7 +17,16 @@ module.exports = { ...@@ -17,7 +17,16 @@ module.exports = {
'3xl': '1.953rem', '3xl': '1.953rem',
'4xl': '2.441rem', '4xl': '2.441rem',
'5xl': '3.052rem' '5xl': '3.052rem'
},
animation: {
marquee: 'marquee 20s linear infinite'
},
keyframes: {
marquee: {
'0%': { transform: 'translateX(0)' },
'100%': { transform: 'translateX(-100%)' },
} }
},
} }
}, },
plugins: [], plugins: [],
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment