import { Box, Sheet } from '@mui/joy' import { useMediaQuery } from '@mui/material' import { useEffect, useState } from 'react' import { useChoresHistory } from '../../queries/ChoreQueries' import { ChoresGrouper } from '../../utils/Chores' import { getSidepanelConfig } from '../../utils/SidepanelConfig' import CalendarCard from '../components/CalendarCard' import ActivitiesCard from './ActivitesCard' import SmartInsightsCard from './SmartInsightsCard' import TasksByAssigneeCard from './TasksByAssigneeCard' import UserSwitcher from './UserSwitcher' const Sidepanel = ({ allChores, applyTempFilter, chores, clearTempFilter, tempFilter, }) => { const isLargeScreen = useMediaQuery(theme => theme.breakpoints.up('lg')) const [dueDatePieChartData, setDueDatePieChartData] = useState([]) const [sidepanelConfig, setSidepanelConfig] = useState([]) const { data: choresHistory, handleLimitChange: refetchHistory, isChoresHistoryLoading, } = useChoresHistory(7, true) useEffect(() => { setDueDatePieChartData(generateChoreDuePieChartData(chores)) setSidepanelConfig(getSidepanelConfig()) }, []) useEffect(() => { const handleConfigChange = () => { setSidepanelConfig(getSidepanelConfig()) } window.addEventListener('sidepanelConfigChanged', handleConfigChange) return () => { window.removeEventListener('sidepanelConfigChanged', handleConfigChange) } }, []) const generateChoreDuePieChartData = chores => { const groups = ChoresGrouper('due_date', chores, null) return groups .map(group => { return { label: group.name, value: group.content.length, color: group.color, id: group.name, } }) .filter(item => item.value > 0) } const renderCard = cardConfig => { if (!cardConfig.enabled) return null switch (cardConfig.id) { case 'welcome': return case 'smartInsights': return ( ) case 'assignees': return case 'calendar': return ( ) case 'activities': return ( ) default: return null } } if (!isLargeScreen) { return null } const sortedCards = [...sidepanelConfig].sort((a, b) => a.order - b.order) return {sortedCards.map(cardConfig => renderCard(cardConfig))} } export default Sidepanel