From 68253fa4974f76fa798f8b9e820a16b666a96b06 Mon Sep 17 00:00:00 2001 From: isUnknown Date: Mon, 29 Jul 2024 09:57:01 +0200 Subject: [PATCH] merged dates working --- assets/js/calendar.js | 2 +- site/config/routes/month-dates.php | 47 ++++++++++++++++++++++++------ site/snippets/calendar-strip.php | 7 ++--- 3 files changed, 42 insertions(+), 14 deletions(-) diff --git a/assets/js/calendar.js b/assets/js/calendar.js index 5b82276..3cac83a 100644 --- a/assets/js/calendar.js +++ b/assets/js/calendar.js @@ -114,7 +114,7 @@ function getId(eventData) { return id; } -async function getKirbyDates(monthNumb, dates) { +async function getMergedDates(monthNumb, dates) { const month = dayjs().month(monthNumb).format("YYYY-MM"); const requestParams = { month, diff --git a/site/config/routes/month-dates.php b/site/config/routes/month-dates.php index ebb57d8..a8fab71 100644 --- a/site/config/routes/month-dates.php +++ b/site/config/routes/month-dates.php @@ -1,4 +1,30 @@ children()->filter( + fn ($season) => str_contains($season->title()->value(), $year) + ); +} + +function getEventsByDay($eventsFromSameMonth) { + $eventsByDay = []; + foreach ($eventsFromSameMonth as $event) { + $day = $event->startDate()->toDate('d'); + if (!isset($eventsByDay[$day])) { + $eventsByDay[$day] = []; + } + $eventsByDay[$day][] = [ + "day" => $day, + "title" => $event->title()->value(), + "id" => null, + "startTime" => null, + "ticketingUrl" => null, + ]; + } + return $eventsByDay; +} + return [ 'pattern' => '/month-dates.json', 'method' => 'POST', @@ -6,20 +32,23 @@ return [ $jsonRequest = file_get_contents("php://input"); $request = json_decode($jsonRequest, true); - $dates = $request['dates']; - $year = explode('-', $request['month'])[0]; - $correspondingSeasons = page('programme')->children()->filter( - fn ($season) => str_contains($season->title()->value(), $year) - ); + $mapadoDates = $request['dates']; + $requestMonth = $request['month']; + + $correspondingSeasons = getCorrespondingSeasons($request); $eventsFromSameMonth = $correspondingSeasons->children()->filter( - fn ($event) => $event->isNotEmpty() && $event->startDate()->toDate('Y-m') == $request['month'] + fn ($event) => $event->isNotEmpty() && $event->startDate()->toDate('Y-m') == $requestMonth ); - foreach ($eventsFromSameMonth as $event) { - $day = $event->startDate()->toDate('d'); + $eventsByDay = getEventsByDay($eventsFromSameMonth); + + foreach ($mapadoDates as $day => $mapadoDate) { + if (isset($eventsByDay[$day])) { + $mapadoDates[$day] = array_merge($mapadoDates[$day], $eventsByDay[$day]); + } } - return json_encode($eventsFromSameMonth); + return json_encode($mapadoDates); } ]; diff --git a/site/snippets/calendar-strip.php b/site/snippets/calendar-strip.php index 57dbde5..22b39dc 100644 --- a/site/snippets/calendar-strip.php +++ b/site/snippets/calendar-strip.php @@ -24,11 +24,10 @@ this.dates[day].push(mapadoDate) }) - const kirbyDates = await getKirbyDates(this.monthNumb, this.dates) + const mergedDates = await getMergedDates(this.monthNumb, this.dates) + this.dates = mergedDates - console.log('kirby dates', kirbyDates) - - console.log('dates', this.dates) + console.log('Merged dates', this.dates) document.body.classList.toggle('progress') },