Fix same-day events incorrectly showing Upcoming instead of Results Pending

String date comparison (eventDate < today) is strictly less-than, so events
on the current day always showed Upcoming regardless of time. When eventStartsAt
is available, use timestamp comparison (new Date(eventStartsAt) < new Date())
for accurate past/future determination.

Fixed in three locations: admin events list (getStatusBadge call site),
admin event detail isPast check, and EventSchedule upcoming badge.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Chris Parsons 2026-03-15 12:24:26 -07:00
parent 2c1fe16fa9
commit b8d51e9798
3 changed files with 18 additions and 12 deletions

View file

@ -107,11 +107,16 @@ export function EventSchedule({ upcomingEvents, recentEvents }: EventSchedulePro
</p>
</div>
{event.eventType === "schedule_event" ? (
!event.isComplete && event.eventDate && event.eventDate < new Date().toISOString().split("T")[0] && (
<Badge variant="outline" className="text-xs shrink-0 border-amber-500/30 text-amber-400">
Results Pending
</Badge>
)
!event.isComplete && (() => {
const isPast = event.eventStartsAt
? new Date(event.eventStartsAt) < new Date()
: event.eventDate != null && event.eventDate < new Date().toISOString().split("T")[0];
return isPast && (
<Badge variant="outline" className="text-xs shrink-0 border-amber-500/30 text-amber-400">
Results Pending
</Badge>
);
})()
) : (
<Badge variant="outline" className="text-xs shrink-0">
{getEventTypeLabel(event.eventType)}

View file

@ -118,9 +118,9 @@ export default function EventResults({
// Non-scoring events have a simple view — edit name/date and toggle updated status
if (event.eventType === "schedule_event") {
const today = new Date().toISOString().split("T")[0];
const eventDateStr = event.eventDate ? String(event.eventDate).slice(0, 10) : null;
const isPast = eventDateStr != null && eventDateStr < today;
const isPast = event.eventStartsAt
? new Date(event.eventStartsAt) < new Date()
: event.eventDate != null && String(event.eventDate).slice(0, 10) < new Date().toISOString().split("T")[0];
return (
<div className="p-8">

View file

@ -60,7 +60,7 @@ export default function SportsSeasonEvents({
? "schedule_event"
: "playoff_game";
const getStatusBadge = (isComplete: boolean, eventType: string, eventDate?: string | null) => {
const getStatusBadge = (isComplete: boolean, eventType: string, eventDate?: string | null, eventStartsAt?: Date | string | null) => {
if (isComplete) {
return (
<Badge variant="default" className="bg-emerald-500">
@ -69,8 +69,9 @@ export default function SportsSeasonEvents({
);
}
if (eventType === "schedule_event") {
const today = new Date().toISOString().split("T")[0];
const isPast = eventDate && eventDate < today;
const isPast = eventStartsAt
? new Date(eventStartsAt) < new Date()
: eventDate != null && eventDate < new Date().toISOString().split("T")[0];
return isPast ? (
<Badge variant="outline" className="text-muted-foreground">Results Pending</Badge>
) : (
@ -276,7 +277,7 @@ export default function SportsSeasonEvents({
>
<div className="flex items-center gap-2 mb-1">
<h3 className="font-semibold">{event.name}</h3>
{getStatusBadge(event.isComplete, event.eventType, event.eventDate)}
{getStatusBadge(event.isComplete, event.eventType, event.eventDate, event.eventStartsAt)}
</div>
<div className="flex items-center gap-4 text-sm text-muted-foreground">
<span>