diff --git a/openapi/RelativeEvent.yaml b/openapi/RelativeEvent.yaml index 2e6833f1..10e910fb 100644 --- a/openapi/RelativeEvent.yaml +++ b/openapi/RelativeEvent.yaml @@ -19,6 +19,7 @@ components: - MINUTE - HOUR - DAY + RelativeDate: type: object description: A date relative to a specific base date (e.g study start) @@ -29,6 +30,10 @@ components: type: string format: time description: Follows ISO 8601 format for time + timezone: + type: string + description: Time Zone string for relative event + RelativeRecurrenceRule: type: object description: A recurrence rule relative to dtstart diff --git a/src/components/ObservationList.vue b/src/components/ObservationList.vue index 81f80ed4..f3043dd4 100644 --- a/src/components/ObservationList.vue +++ b/src/components/ObservationList.vue @@ -36,7 +36,6 @@ Licensed under the Elastic License 2.0. */ import { useErrorHandling } from '../composable/useErrorHandling'; import DeleteMoreTableRowDialog from './dialog/DeleteMoreTableRowDialog.vue'; import dayjs from 'dayjs'; - import { ZTimeStringToOffsetTimeString } from '../utils/dateUtils'; const loader = useLoader(); const { observationsApi } = useObservationsApi(); @@ -314,15 +313,13 @@ Licensed under the Elastic License 2.0. */ schedule.dtstart.offset?.unit ? `${t( `scheduler.preview.unit.${schedule.dtstart.offset.unit}` - )} ${ - schedule.dtstart.offset.value - }, ${ZTimeStringToOffsetTimeString(schedule.dtstart.time)}` + )} ${schedule.dtstart.offset.value}, ${schedule.dtstart.time}` : undefined; case 'dtend': return schedule.dtend.offset?.value && schedule.dtend.offset?.unit ? `${t(`scheduler.preview.unit.${schedule.dtend.offset.unit}`)} ${ schedule.dtend.offset.value - }, ${ZTimeStringToOffsetTimeString(schedule.dtend.time)} ` + }, ${schedule.dtend.time} ` : undefined; default: return undefined; diff --git a/src/components/shared/RelativeScheduler.vue b/src/components/shared/RelativeScheduler.vue index c3ae2d01..bf6ab58e 100644 --- a/src/components/shared/RelativeScheduler.vue +++ b/src/components/shared/RelativeScheduler.vue @@ -5,7 +5,6 @@ import InputNumber from 'primevue/inputnumber'; import Dropdown from 'primevue/dropdown'; import Checkbox from 'primevue/checkbox'; - import { ZTimeToOffsetTime } from '../../utils/dateUtils'; import { RelativeEvent, RelativeRecurrenceRule, @@ -28,6 +27,7 @@ unit: schedule.dtstart?.offset?.unit, }, time: schedule.dtstart?.time, + timezone: schedule.dtstart?.timezone, }, dtend: { offset: { @@ -35,6 +35,7 @@ unit: schedule.dtend?.offset?.unit, }, time: schedule.dtend?.time, + timezone: schedule.dtend?.timezone, }, rrrule: { frequency: { @@ -56,7 +57,6 @@ parseInt(schedule.dtstart.time?.substring(0, 2)), parseInt(schedule.dtstart.time?.substring(3, 5), 0) ); - startTime.value = ZTimeToOffsetTime(startTime.value); } else { startTime.value.setHours(10, 30); } @@ -65,14 +65,13 @@ parseInt(schedule.dtend.time?.substring(0, 2)), parseInt(schedule.dtend.time?.substring(3, 5), 0) ); - endTime.value = ZTimeToOffsetTime(endTime.value); } else { endTime.value.setHours(18, 30); } returnSchedule.value.dtstart.time = returnSchedule.value.dtstart.time ? returnSchedule.value.dtstart.time - : '10:10'; + : '10:00'; returnSchedule.value.dtend.time = returnSchedule.value.dtend.time ? returnSchedule.value.dtend.time : '18:00'; @@ -250,15 +249,24 @@ function save() { returnSchedule.value.dtstart.time = startTime.value - ?.toISOString() - .substring(11, 16); + ?.toTimeString() + .substring(0, 5); returnSchedule.value.dtend.time = endTime.value - ?.toISOString() - .substring(11, 16); + ?.toTimeString() + .substring(0, 5); returnSchedule.value.dtstart.offset = rDtstartOffset.value; returnSchedule.value.dtend.offset = rDtendOffset.value; + if (typeof returnSchedule.value.dtstart.time !== 'undefined') { + returnSchedule.value.dtstart.timezone = + Intl.DateTimeFormat().resolvedOptions().timeZone; + } + if (typeof returnSchedule.value.dtend.time !== 'undefined') { + returnSchedule.value.dtend.timezone = + Intl.DateTimeFormat().resolvedOptions().timeZone; + } + if (repeatChecked.value) { const rrrule: RelativeRecurrenceRule = { frequency: rFrequency.value, diff --git a/src/components/subComponents/SchedulerInfoBlock.vue b/src/components/subComponents/SchedulerInfoBlock.vue index aebca34e..35a1e766 100644 --- a/src/components/subComponents/SchedulerInfoBlock.vue +++ b/src/components/subComponents/SchedulerInfoBlock.vue @@ -14,7 +14,6 @@ Licensed under the Elastic License 2.0. */ import Button from 'primevue/button'; import { useI18n } from 'vue-i18n'; import dayjs from 'dayjs'; - import { ZTimeStringToOffsetTimeString } from '../../utils/dateUtils'; const { t } = useI18n(); @@ -79,16 +78,14 @@ Licensed under the Elastic License 2.0. */ schedule.dtstart.offset?.unit ? `${t( `scheduler.preview.unit.${schedule.dtstart.offset.unit}` - )} ${ - schedule.dtstart.offset.value - }, ${ZTimeStringToOffsetTimeString(schedule.dtstart.time)}` + )} ${schedule.dtstart.offset.value}, ${schedule.dtstart.time}` : undefined; } case 'dtend': return schedule.dtend.offset?.value && schedule.dtend.offset?.unit ? `${t(`scheduler.preview.unit.${schedule.dtend.offset.unit}`)} ${ schedule.dtend.offset.value - }, ${ZTimeStringToOffsetTimeString(schedule.dtend.time)} ` + }, ${schedule.dtend.time} ` : undefined; default: return undefined;