Update selected days to UTC before submit
This commit is contained in:
parent
e52af4858c
commit
db41acceff
2 changed files with 26 additions and 2 deletions
|
|
@ -17,7 +17,7 @@ import { Schedule, Shift } from 'models/schedule/schedule.types';
|
|||
import { getTzOffsetString } from 'models/timezone/timezone.helpers';
|
||||
import { Timezone } from 'models/timezone/timezone.types';
|
||||
import { User } from 'models/user/user.types';
|
||||
import { getDateTime, getStartOfWeek, getUTCString } from 'pages/schedule/Schedule.helpers';
|
||||
import { getDateTime, getStartOfWeek, getUTCByDay, getUTCString } from 'pages/schedule/Schedule.helpers';
|
||||
import { SelectOption } from 'state/types';
|
||||
import { useStore } from 'state/useStore';
|
||||
import { getCoords, waitForElement } from 'utils/DOM';
|
||||
|
|
@ -154,7 +154,7 @@ const RotationForm: FC<RotationFormProps> = observer((props) => {
|
|||
rolling_users: userGroups,
|
||||
interval: repeatEveryValue,
|
||||
frequency: repeatEveryPeriod,
|
||||
by_day: repeatEveryPeriod === 0 || repeatEveryPeriod === 1 ? selectedDays : null,
|
||||
by_day: repeatEveryPeriod === 0 || repeatEveryPeriod === 1 ? getUTCByDay(selectedDays, shiftStart) : null,
|
||||
priority_level: shiftId === 'new' ? layerPriority : shift?.priority_level,
|
||||
}),
|
||||
[
|
||||
|
|
|
|||
|
|
@ -18,6 +18,30 @@ 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'];
|
||||
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 offset = moment.utcOffset();
|
||||
by_day.forEach((element) => {
|
||||
let index = byDayOptions.indexOf(element);
|
||||
if (offset < 0) {
|
||||
// move one day after
|
||||
UTCDays.push(byDayOptions[(index + 1) % 7]);
|
||||
} else {
|
||||
// move one day before
|
||||
UTCDays.push(byDayOptions[(((index - 1) % 7) + 7) % 7]);
|
||||
}
|
||||
});
|
||||
return UTCDays;
|
||||
}
|
||||
return by_day;
|
||||
};
|
||||
|
||||
export const getColorSchemeMappingForUsers = (
|
||||
store: RootStore,
|
||||
scheduleId: string,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue