From 583591bf4f84055f6dd64d3cf2623c6d3b4bbe42 Mon Sep 17 00:00:00 2001 From: Brock H Caldwell Date: Sat, 23 Aug 2025 21:43:44 -0500 Subject: [PATCH] fix: applies colors to calendar events --- .../Framework/Controller/ApiController.php | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/Monitor/Framework/Controller/ApiController.php b/src/Monitor/Framework/Controller/ApiController.php index e28fc37..466944a 100644 --- a/src/Monitor/Framework/Controller/ApiController.php +++ b/src/Monitor/Framework/Controller/ApiController.php @@ -71,13 +71,33 @@ class ApiController extends AbstractController #[Route('/api/monitor/upcoming-episodes', name: 'api.monitor.upcoming-episodes', methods: ['GET'])] public function upcomingEpisodes(MonitorRepository $repository): Response { + $colors = [ + 'blue' => '#007bff', + 'indigo' => '#6610f2', + 'purple' => '#6f42c1', + 'pink' => '#e83e8c', + 'red' => '#dc3545', + 'orange' => '#fd7e14', + 'yellow' => '#ffc107', + 'green' => '#28a745', + 'teal' => '#20c997', + 'cyan' => '#17a2b8', + ]; + + $eventColors = []; $monitors = $repository->whereAirDateNotNull(); - $monitors = Map::from($monitors)->map(function ($monitor) { + $monitors = Map::from($monitors)->map(function ($monitor) use (&$eventColors, $colors) { + if (!array_key_exists($monitor->getImdbId(), $eventColors)) { + $eventColors[$monitor->getImdbId()] = $colors[array_rand($colors)]; + } return [ 'id' => $monitor->getId(), 'title' => $monitor->getTitle() . ' (S' . str_pad($monitor->getSeason(), 2, '0', STR_PAD_LEFT) . 'E' . str_pad($monitor->getEpisode(), 2, '0', STR_PAD_LEFT) . ')', 'start' => $monitor->getAirDate()->format('Y-m-d H:i:s'), - 'allDay' => true + 'groupId' => $monitor->getImdbId(), + 'allDay' => true, + 'backgroundColor' => $eventColors[$monitor->getImdbId()], + 'borderColor' => $eventColors[$monitor->getImdbId()], ]; });