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

Migrate tasks edit page to react

This commit is contained in:
viown 2025-02-22 16:45:48 +03:00
parent e80b890bd2
commit 524d1b6574
20 changed files with 501 additions and 330 deletions

View file

@ -0,0 +1,64 @@
import type { TaskTriggerInfo } from '@jellyfin/sdk/lib/generated-client/models/task-trigger-info';
import { format, Locale, parse } from 'date-fns';
import globalize from 'lib/globalize';
function getDisplayTime(ticks: number, locale: Locale) {
const ms = ticks / 1e4;
const now = new Date();
now.setHours(0, 0, 0, 0);
now.setTime(now.getTime() + ms);
return format(now, 'p', { locale: locale });
}
export function getTimeOfDayOptions(locale: Locale) {
const options = [];
for (let i = 0; i < 86400000; i += 900000) {
options.push({
name: getDisplayTime(i * 10000, locale),
value: i * 10000
});
}
return options;
}
function getIntervalTriggerTime(ticks: number) {
const hours = ticks / 36e9;
switch (hours) {
case 0.25:
return globalize.translate('EveryXMinutes', '15');
case 0.5:
return globalize.translate('EveryXMinutes', '30');
case 0.75:
return globalize.translate('EveryXMinutes', '45');
case 1:
return globalize.translate('EveryHour');
default:
return globalize.translate('EveryXHours', hours);
}
}
function localizeDayOfWeek(dayOfWeek: string | null | undefined, locale: Locale) {
if (!dayOfWeek) return '';
const parsedDayOfWeek = parse(dayOfWeek, 'cccc', new Date());
return format(parsedDayOfWeek, 'cccc', { locale: locale });
}
export function getTriggerFriendlyName(trigger: TaskTriggerInfo, locale: Locale) {
switch (trigger.Type) {
case 'DailyTrigger':
return globalize.translate('DailyAt', getDisplayTime(trigger.TimeOfDayTicks || 0, locale));
case 'WeeklyTrigger':
return globalize.translate('WeeklyAt', localizeDayOfWeek(trigger.DayOfWeek, locale), getDisplayTime(trigger.TimeOfDayTicks || 0, locale));
case 'IntervalTrigger':
return getIntervalTriggerTime(trigger.IntervalTicks || 0);
case 'StartupTrigger':
return globalize.translate('OnApplicationStartup');
default:
return trigger.Type;
}
}