1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Refactor into enums

This commit is contained in:
viown 2025-02-23 17:13:56 +03:00
parent 40cb7c6f65
commit dd539b89ca
2 changed files with 22 additions and 30 deletions

View file

@ -23,13 +23,13 @@ type IProps = {
const NewTriggerForm: FunctionComponent<IProps> = ({ open, title, onClose, onAdd }: IProps) => { const NewTriggerForm: FunctionComponent<IProps> = ({ open, title, onClose, onAdd }: IProps) => {
const { dateFnsLocale } = useLocale(); const { dateFnsLocale } = useLocale();
const [triggerType, setTriggerType] = useState('DailyTrigger'); const [triggerType, setTriggerType] = useState<TaskTriggerInfoType>(TaskTriggerInfoType.DailyTrigger);
const timeOfDayOptions = useMemo(() => getTimeOfDayOptions(dateFnsLocale), [dateFnsLocale]); const timeOfDayOptions = useMemo(() => getTimeOfDayOptions(dateFnsLocale), [dateFnsLocale]);
const intervalOptions = useMemo(() => getIntervalOptions(dateFnsLocale), [dateFnsLocale]); const intervalOptions = useMemo(() => getIntervalOptions(dateFnsLocale), [dateFnsLocale]);
const onTriggerTypeChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => { const onTriggerTypeChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {
setTriggerType(e.target.value); setTriggerType(e.target.value as TaskTriggerInfoType);
}, []); }, []);
const onSubmit = useCallback((e: React.FormEvent<HTMLFormElement>) => { const onSubmit = useCallback((e: React.FormEvent<HTMLFormElement>) => {
@ -54,13 +54,13 @@ const NewTriggerForm: FunctionComponent<IProps> = ({ open, title, onClose, onAdd
} }
if (data.TimeLimit.toString()) { if (data.TimeLimit.toString()) {
trigger.MaxRuntimeTicks = parseFloat(data.TimeLimit.toString()) * 3600000 * 1e4; trigger.MaxRuntimeTicks = parseFloat(data.TimeLimit.toString()) * 36e9;
} }
if (onAdd) { if (onAdd) {
onAdd(trigger); onAdd(trigger);
} }
}, [onAdd]); }, [ onAdd ]);
return ( return (
<Dialog <Dialog
@ -84,31 +84,31 @@ const NewTriggerForm: FunctionComponent<IProps> = ({ open, title, onClose, onAdd
onChange={onTriggerTypeChange} onChange={onTriggerTypeChange}
label={globalize.translate('LabelTriggerType')} label={globalize.translate('LabelTriggerType')}
> >
<MenuItem value='DailyTrigger'>{globalize.translate('OptionDaily')}</MenuItem> <MenuItem value={TaskTriggerInfoType.DailyTrigger}>{globalize.translate('OptionDaily')}</MenuItem>
<MenuItem value='WeeklyTrigger'>{globalize.translate('OptionWeekly')}</MenuItem> <MenuItem value={TaskTriggerInfoType.WeeklyTrigger}>{globalize.translate('OptionWeekly')}</MenuItem>
<MenuItem value='IntervalTrigger'>{globalize.translate('OptionOnInterval')}</MenuItem> <MenuItem value={TaskTriggerInfoType.IntervalTrigger}>{globalize.translate('OptionOnInterval')}</MenuItem>
<MenuItem value='StartupTrigger'>{globalize.translate('OnApplicationStartup')}</MenuItem> <MenuItem value={TaskTriggerInfoType.StartupTrigger}>{globalize.translate('OnApplicationStartup')}</MenuItem>
</TextField> </TextField>
{triggerType == 'WeeklyTrigger' && ( {triggerType == TaskTriggerInfoType.WeeklyTrigger && (
<TextField <TextField
name='DayOfWeek' name='DayOfWeek'
select select
fullWidth fullWidth
defaultValue={'Sunday'} defaultValue={DayOfWeek.Sunday}
label={globalize.translate('LabelDay')} label={globalize.translate('LabelDay')}
> >
<MenuItem value='Sunday'>{globalize.translate('Sunday')}</MenuItem> <MenuItem value={DayOfWeek.Sunday}>{globalize.translate('Sunday')}</MenuItem>
<MenuItem value='Monday'>{globalize.translate('Monday')}</MenuItem> <MenuItem value={DayOfWeek.Monday}>{globalize.translate('Monday')}</MenuItem>
<MenuItem value='Tuesday'>{globalize.translate('Tuesday')}</MenuItem> <MenuItem value={DayOfWeek.Tuesday}>{globalize.translate('Tuesday')}</MenuItem>
<MenuItem value='Wednesday'>{globalize.translate('Wednesday')}</MenuItem> <MenuItem value={DayOfWeek.Wednesday}>{globalize.translate('Wednesday')}</MenuItem>
<MenuItem value='Thursday'>{globalize.translate('Thursday')}</MenuItem> <MenuItem value={DayOfWeek.Thursday}>{globalize.translate('Thursday')}</MenuItem>
<MenuItem value='Friday'>{globalize.translate('Friday')}</MenuItem> <MenuItem value={DayOfWeek.Friday}>{globalize.translate('Friday')}</MenuItem>
<MenuItem value='Saturday'>{globalize.translate('Saturday')}</MenuItem> <MenuItem value={DayOfWeek.Saturday}>{globalize.translate('Saturday')}</MenuItem>
</TextField> </TextField>
)} )}
{['DailyTrigger', 'WeeklyTrigger'].includes(triggerType) && ( {(triggerType == TaskTriggerInfoType.DailyTrigger || triggerType == TaskTriggerInfoType.WeeklyTrigger) && (
<TextField <TextField
name='TimeOfDay' name='TimeOfDay'
select select
@ -125,7 +125,7 @@ const NewTriggerForm: FunctionComponent<IProps> = ({ open, title, onClose, onAdd
</TextField> </TextField>
)} )}
{triggerType == 'IntervalTrigger' && ( {triggerType == TaskTriggerInfoType.IntervalTrigger && (
<TextField <TextField
name='Interval' name='Interval'
select select

View file

@ -2,11 +2,9 @@ import React, { FunctionComponent, useCallback } from 'react';
import ListItem from '@mui/material/ListItem'; import ListItem from '@mui/material/ListItem';
import Avatar from '@mui/material/Avatar'; import Avatar from '@mui/material/Avatar';
import AccessTimeIcon from '@mui/icons-material/AccessTime'; import AccessTimeIcon from '@mui/icons-material/AccessTime';
import ListItemButton from '@mui/material/ListItemButton';
import ListItemAvatar from '@mui/material/ListItemAvatar'; import ListItemAvatar from '@mui/material/ListItemAvatar';
import ListItemText from '@mui/material/ListItemText'; import ListItemText from '@mui/material/ListItemText';
import Typography from '@mui/material/Typography'; import Typography from '@mui/material/Typography';
import Dashboard from 'utils/dashboard';
import { TaskProps } from '../types/taskProps'; import { TaskProps } from '../types/taskProps';
import TaskProgress from './TaskProgress'; import TaskProgress from './TaskProgress';
import TaskLastRan from './TaskLastRan'; import TaskLastRan from './TaskLastRan';
@ -15,18 +13,12 @@ import PlayArrow from '@mui/icons-material/PlayArrow';
import Stop from '@mui/icons-material/Stop'; import Stop from '@mui/icons-material/Stop';
import { useStartTask } from '../api/useStartTask'; import { useStartTask } from '../api/useStartTask';
import { useStopTask } from '../api/useStopTask'; import { useStopTask } from '../api/useStopTask';
import ListItemLink from 'components/ListItemLink';
const Task: FunctionComponent<TaskProps> = ({ task }: TaskProps) => { const Task: FunctionComponent<TaskProps> = ({ task }: TaskProps) => {
const startTask = useStartTask(); const startTask = useStartTask();
const stopTask = useStopTask(); const stopTask = useStopTask();
const navigateTaskEdit = useCallback(() => {
Dashboard.navigate(`/dashboard/tasks/edit?id=${task.Id}`)
.catch(err => {
console.error('[Task] failed to navigate to task edit page', err);
});
}, [task]);
const handleStartTask = useCallback(() => { const handleStartTask = useCallback(() => {
if (task.Id) { if (task.Id) {
startTask.mutate({ taskId: task.Id }); startTask.mutate({ taskId: task.Id });
@ -48,7 +40,7 @@ const Task: FunctionComponent<TaskProps> = ({ task }: TaskProps) => {
</IconButton> </IconButton>
} }
> >
<ListItemButton onClick={navigateTaskEdit}> <ListItemLink to={`/dashboard/tasks/edit?id=${task.Id}`}>
<ListItemAvatar> <ListItemAvatar>
<Avatar sx={{ bgcolor: 'primary.main' }}> <Avatar sx={{ bgcolor: 'primary.main' }}>
<AccessTimeIcon sx={{ color: '#fff' }} /> <AccessTimeIcon sx={{ color: '#fff' }} />
@ -59,7 +51,7 @@ const Task: FunctionComponent<TaskProps> = ({ task }: TaskProps) => {
secondary={task.State == 'Running' ? <TaskProgress task={task} /> : <TaskLastRan task={task} />} secondary={task.State == 'Running' ? <TaskProgress task={task} /> : <TaskLastRan task={task} />}
disableTypography disableTypography
/> />
</ListItemButton> </ListItemLink>
</ListItem> </ListItem>
); );
}; };