import { useCallback, useMemo, useState } from 'react'; import { IconButton, Modal, ModalContent, ModalOverlay, useDisclosure } from '@chakra-ui/react'; import { IoApps } from '@react-icons/all-files/io5/IoApps'; import { IoSettingsOutline } from '@react-icons/all-files/io5/IoSettingsOutline'; import NavigationMenu from '../../common/components/navigation-menu/NavigationMenu'; import useViewEditor from '../../common/components/navigation-menu/useViewEditor'; import EmptyPage from '../../common/components/state/EmptyPage'; import ViewParamsEditor from '../../common/components/view-params-editor/ViewParamsEditor'; import { useWindowTitle } from '../../common/hooks/useWindowTitle'; import useCustomFields from '../../common/hooks-query/useCustomFields'; import { useFlatRundown } from '../../common/hooks-query/useRundown'; import { CuesheetOverview } from '../../features/overview/Overview'; import CuesheetEventEditor from '../../features/rundown/event-editor/CuesheetEventEditor'; import CuesheetDnd from './cuesheet-dnd/CuesheetDnd'; import CuesheetProgress from './cuesheet-progress/CuesheetProgress'; import { makeCuesheetColumns } from './cuesheet-table/cuesheet-table-elements/cuesheetCols'; import CuesheetTable from './cuesheet-table/CuesheetTable'; import { cuesheetOptions } from './cuesheet.options'; import styles from './CuesheetPage.module.scss'; export default function CuesheetPage() { // TODO: can we use the normalised rundown for the table? const { data: flatRundown, status: rundownStatus } = useFlatRundown(); const { data: customFields, status: customFieldStatus } = useCustomFields(); const { showEditFormDrawer, isViewLocked } = useViewEditor({ isLockable: true }); const { isOpen: isMenuOpen, onOpen, onClose } = useDisclosure(); const { isOpen: isEventEditorOpen, onOpen: onEventEditorOpen, onClose: onEventEditorClose } = useDisclosure(); const [eventId, setEventId] = useState(null); const columns = useMemo(() => makeCuesheetColumns(customFields), [customFields]); useWindowTitle('Cuesheet'); /** * Handles setting the edit modal target and visibility */ const setShowModal = useCallback( (eventId: string | null) => { if (eventId) { setEventId(eventId); onEventEditorOpen(); } else { setEventId(null); onEventEditorClose(); } }, [onEventEditorClose, onEventEditorOpen], ); if (!customFields || !flatRundown || rundownStatus === 'pending' || customFieldStatus === 'pending') { return ; } return ( <>
} onClick={onOpen} isDisabled={isViewLocked} /> } onClick={showEditFormDrawer} isDisabled={isViewLocked} />
); }