Skip to content
Snippets Groups Projects
Verified Commit c2729e5f authored by Dorian Koch's avatar Dorian Koch
Browse files

Group upcoming recordings by date, closes #69

parent 491d3649
No related branches found
No related tags found
No related merge requests found
Pipeline #6828 passed
...@@ -158,29 +158,38 @@ function UpcomingUploads({ homepageData }: { homepageData: ResourceType<GetHomep ...@@ -158,29 +158,38 @@ function UpcomingUploads({ homepageData }: { homepageData: ResourceType<GetHomep
); );
} }
return ( let dates = []; // group by day/date
<ul className="list-group"> for (let lecture of data.upcoming_lectures) {
{data.upcoming_lectures.map((lecture, index) => {
let date_parsed = new Date(lecture.time); let date_parsed = new Date(lecture.time);
let course_data = data.courses_context[lecture.course_id]; let date_string = date_parsed.toLocaleDateString([], {
return (
<li className="list-group-item" key={index}>
<strong>
{
//TODO splitting the date and time only makes sense, if the same dates are grouped
// format: Mo, 29.01.2024
date_parsed.toLocaleDateString([], {
weekday: "short", weekday: "short",
year: "numeric", year: "numeric",
month: "2-digit", month: "2-digit",
day: "2-digit", day: "2-digit",
}) });
let date_index = dates.findIndex((date) => date.date === date_string);
if (date_index === -1) {
dates.push({ date: date_string, lectures: [lecture] });
} else {
dates[date_index].lectures.push(lecture);
} }
</strong> }
return (
<ul className="list-group">
{dates.map((date, index) => (
<li className="list-group-item" key={index}>
<strong>{date.date}</strong>
<ul className="list-group"> <ul className="list-group">
{date.lectures.map((lecture, index) => {
let date_parsed = new Date(lecture.time);
let course_data = data.courses_context[lecture.course_id];
return (
<li <li
className="list-group-item list-group-item-condensed" className="list-group-item list-group-item-condensed"
style={{ border: "none" }} style={{ border: "none" }}
key={index}
> >
{ {
// only time (HH:MM) // only time (HH:MM)
...@@ -189,7 +198,9 @@ function UpcomingUploads({ homepageData }: { homepageData: ResourceType<GetHomep ...@@ -189,7 +198,9 @@ function UpcomingUploads({ homepageData }: { homepageData: ResourceType<GetHomep
minute: "2-digit", minute: "2-digit",
}) })
}{" "} }{" "}
<a href={`/${course_data.id_string}`}>{course_data.full_name}</a> <a href={`/${course_data.id_string}`}>
{course_data.full_name}
</a>
{": "} {": "}
<a href={`/${course_data.id_string}#lecture-${lecture.id}`}> <a href={`/${course_data.id_string}#lecture-${lecture.id}`}>
{lecture.title} {lecture.title}
...@@ -197,11 +208,12 @@ function UpcomingUploads({ homepageData }: { homepageData: ResourceType<GetHomep ...@@ -197,11 +208,12 @@ function UpcomingUploads({ homepageData }: { homepageData: ResourceType<GetHomep
{lecture.location.length > 0 && ` (${lecture.location})`}{" "} {lecture.location.length > 0 && ` (${lecture.location})`}{" "}
<LectureLiveLabel lecture={lecture} /> <LectureLiveLabel lecture={lecture} />
</li> </li>
</ul>
</li>
); );
})} })}
</ul> </ul>
</li>
))}
</ul>
); );
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment