import React, { useEffect, useState } from 'react'; import { RouteComponentProps } from 'react-router-dom'; import { Schedule } from '@/api/server/schedules/getServerSchedules'; import getServerSchedule from '@/api/server/schedules/getServerSchedule'; import { ServerContext } from '@/state/server'; import Spinner from '@/components/elements/Spinner'; import FlashMessageRender from '@/components/FlashMessageRender'; import { Actions, useStoreActions } from 'easy-peasy'; import { ApplicationStore } from '@/state'; import { httpErrorToHuman } from '@/api/http'; import ScheduleRow from '@/components/server/schedules/ScheduleRow'; import ScheduleTaskRow from '@/components/server/schedules/ScheduleTaskRow'; import EditScheduleModal from '@/components/server/schedules/EditScheduleModal'; interface Params { id: string; } interface State { schedule?: Schedule; } export default ({ match, location: { state } }: RouteComponentProps) => { const uuid = ServerContext.useStoreState(state => state.server.data!.uuid); const [ isLoading, setIsLoading ] = useState(true); const [ showEditModal, setShowEditModal ] = useState(false); const [ schedule, setSchedule ] = useState(state?.schedule); const { clearFlashes, addError } = useStoreActions((actions: Actions) => actions.flashes); useEffect(() => { if (schedule?.id === Number(match.params.id)) { setIsLoading(false); return; } clearFlashes('schedules'); getServerSchedule(uuid, Number(match.params.id)) .then(schedule => setSchedule(schedule)) .catch(error => { console.error(error); addError({ message: httpErrorToHuman(error), key: 'schedules' }); }) .then(() => setIsLoading(false)); }, [ schedule, match ]); return (
{!schedule || isLoading ? : <>
setShowEditModal(false)} />

Schedule Tasks

{schedule?.tasks.length > 0 ? <> { schedule.tasks .sort((a, b) => a.sequenceId - b.sequenceId) .map(task => (
setSchedule(s => ({ ...s!, tasks: s!.tasks.filter(t => t.id !== task.id), }))} />
)) } {schedule.tasks.length > 1 &&

Task delays are relative to the previous task in the listing.

} :

There are no tasks configured for this schedule. Consider adding a new one using the button above.

} }
); };