import { useState, useEffect } from 'react' import dayjs from 'dayjs' import { EventCard } from './event' function genDates(start, numDays) { const days = [] const d = dayjs(start) for (let i = 0; i < numDays; i++) { days.push(d.add(i, 'day')) } return days } function dayOffset(start, date) { return dayjs(date).diff(dayjs(start), 'days') } function EventCardWrapper({event, index, urlHash}) { if (!event.isWithinRange) { return null } return (
) } export function ScheduleTable({ events, config }) { const [urlHash, setUrlHash] = useState(''); const [hashChangeEventRegistered, setHashChangeEventRegistered] = useState(false); useEffect(() => { setUrlHash(window.location.hash) if (!hashChangeEventRegistered) { window.addEventListener('hashchange', (hashChangeEvent) => { setUrlHash( (new URL(hashChangeEvent.newURL)).hash) }); setHashChangeEventRegistered(true) } }, []); const startDate = dayjs(config.dateStart) const endDate = dayjs(config.dateEnd) const numDays = Number(dayOffset(startDate, endDate) + 1) const days = genDates(startDate, numDays) const publicEvents = events.filter(item => item.difficulty !== "Private") const privateEvents = events.filter(item => item.difficulty === "Private") const sortedEvents = [...publicEvents, ...privateEvents] const prioritizedEvents = sortedEvents.sort((a, b) => { const aPriority = a.priority || 10 const bPriority = b.priority || 10 return aPriority - bPriority }) return ( <>
{days.map((d, i) => (

{d.format('ddd')}

{d.format('MMM DD')}

))} {prioritizedEvents.map((event, index) => ())}
{/* trick tailwindcss to generate the required columns */}
) } export default ScheduleTable