From 6ef4073e03bae0a129e9fd054e60c26680ceeffa Mon Sep 17 00:00:00 2001 From: Matias Bordese Date: Thu, 24 Nov 2022 17:49:15 -0300 Subject: [PATCH] Refactoring to use options from backend --- .../src/containers/RotationForm/RotationForm.tsx | 5 ++++- grafana-plugin/src/pages/schedule/Schedule.helpers.ts | 9 +++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/grafana-plugin/src/containers/RotationForm/RotationForm.tsx b/grafana-plugin/src/containers/RotationForm/RotationForm.tsx index 42c31696..c84be627 100644 --- a/grafana-plugin/src/containers/RotationForm/RotationForm.tsx +++ b/grafana-plugin/src/containers/RotationForm/RotationForm.tsx @@ -154,7 +154,10 @@ const RotationForm: FC = observer((props) => { rolling_users: userGroups, interval: repeatEveryValue, frequency: repeatEveryPeriod, - by_day: repeatEveryPeriod === 0 || repeatEveryPeriod === 1 ? getUTCByDay(selectedDays, shiftStart) : null, + by_day: + repeatEveryPeriod === 0 || repeatEveryPeriod === 1 + ? getUTCByDay(store.scheduleStore.byDayOptions, selectedDays, shiftStart) + : null, priority_level: shiftId === 'new' ? layerPriority : shift?.priority_level, }), [ diff --git a/grafana-plugin/src/pages/schedule/Schedule.helpers.ts b/grafana-plugin/src/pages/schedule/Schedule.helpers.ts index ba8ceb47..ea71a908 100644 --- a/grafana-plugin/src/pages/schedule/Schedule.helpers.ts +++ b/grafana-plugin/src/pages/schedule/Schedule.helpers.ts @@ -5,6 +5,7 @@ import { getLayersFromStore, getOverridesFromStore, getShiftsFromStore } from 'm import { Event, Layer } from 'models/schedule/schedule.types'; import { Timezone } from 'models/timezone/timezone.types'; import { RootStore } from 'state'; +import { SelectOption } from 'state/types'; export const getStartOfWeek = (tz: Timezone) => { return dayjs().tz(tz).utcOffset() === 0 ? dayjs().utc().startOf('isoWeek') : dayjs().tz(tz).startOf('isoWeek'); @@ -18,14 +19,14 @@ export const getDateTime = (date: string) => { return dayjs(date); }; -export const getUTCByDay = (by_day: string[], moment: dayjs.Dayjs) => { - let UTCDays = []; - // FIXME: do this in a proper way - let byDayOptions = ['MO', 'TU', 'WE', 'TH', 'FR', 'SA', 'SU']; +export const getUTCByDay = (dayOptions: SelectOption[], by_day: string[], moment: dayjs.Dayjs) => { if (by_day.length > 0 && moment.day() !== moment.utc().day()) { // when converting to UTC, shift starts on a different day, // so we need to update the by_day list // depending on the UTC side, move one day before or after + let UTCDays = []; + let byDayOptions = []; + Object.entries(dayOptions).forEach(([, option]) => byDayOptions.push(option.value)); let offset = moment.utcOffset(); by_day.forEach((element) => { let index = byDayOptions.indexOf(element);