blob: b723530b2d01e56a3c66299a8165f3504dba7d8a [file] [log] [blame]
Dixsie Wolmers739e4592020-06-05 07:00:06 -05001<template>
2 <b-container fluid="xl">
3 <page-title />
4 <b-row>
5 <b-col md="8" xl="6">
6 <alert variant="info" class="mb-4">
7 <span>
Sandeepa Singhf67f7692021-07-19 18:04:18 +05308 {{ $t('pageDateTime.alert.message') }}
Dixsie Wolmers739e4592020-06-05 07:00:06 -05009 <b-link to="/profile-settings">
Sandeepa Singhf67f7692021-07-19 18:04:18 +053010 {{ $t('pageDateTime.alert.link') }}</b-link
Dixsie Wolmers739e4592020-06-05 07:00:06 -050011 >
12 </span>
13 </alert>
14 </b-col>
15 </b-row>
16 <page-section>
17 <b-row>
18 <b-col lg="3">
19 <dl>
Sandeepa Singhf67f7692021-07-19 18:04:18 +053020 <dt>{{ $t('pageDateTime.form.date') }}</dt>
Surya Vde23ea22024-07-11 15:19:46 +053021 <dd v-if="bmcTime">{{ $filters.formatDate(bmcTime) }}</dd>
Dixsie Wolmers739e4592020-06-05 07:00:06 -050022 <dd v-else>--</dd>
23 </dl>
24 </b-col>
25 <b-col lg="3">
26 <dl>
Sandeepa Singhf67f7692021-07-19 18:04:18 +053027 <dt>{{ $t('pageDateTime.form.time.label') }}</dt>
Surya Vde23ea22024-07-11 15:19:46 +053028 <dd v-if="bmcTime">{{ $filters.formatTime(bmcTime) }}</dd>
Dixsie Wolmers739e4592020-06-05 07:00:06 -050029 <dd v-else>--</dd>
30 </dl>
31 </b-col>
32 </b-row>
33 </page-section>
Sandeepa Singhf67f7692021-07-19 18:04:18 +053034 <page-section :section-title="$t('pageDateTime.configureSettings')">
Dixsie Wolmers739e4592020-06-05 07:00:06 -050035 <b-form novalidate @submit.prevent="submitForm">
Mateusz Gapski471f2e02020-07-27 14:43:26 +020036 <b-form-group
37 label="Configure date and time"
38 :disabled="loading"
39 label-sr-only
40 >
Dixsie Wolmers739e4592020-06-05 07:00:06 -050041 <b-form-radio
42 v-model="form.configurationSelected"
43 value="manual"
Sandeepa Singhf67f7692021-07-19 18:04:18 +053044 data-test-id="dateTime-radio-configureManual"
Dixsie Wolmers739e4592020-06-05 07:00:06 -050045 >
Sandeepa Singhf67f7692021-07-19 18:04:18 +053046 {{ $t('pageDateTime.form.manual') }}
Dixsie Wolmers739e4592020-06-05 07:00:06 -050047 </b-form-radio>
48 <b-row class="mt-3 ml-3">
49 <b-col sm="6" lg="4" xl="3">
50 <b-form-group
Sandeepa Singhf67f7692021-07-19 18:04:18 +053051 :label="$t('pageDateTime.form.date')"
Dixsie Wolmers739e4592020-06-05 07:00:06 -050052 label-for="input-manual-date"
53 >
Dixsie Wolmersfcda2002020-07-29 14:18:44 -050054 <b-form-text id="date-format-help">YYYY-MM-DD</b-form-text>
Dixsie Wolmers739e4592020-06-05 07:00:06 -050055 <b-input-group>
56 <b-form-input
57 id="input-manual-date"
58 v-model="form.manual.date"
Surya Vde23ea22024-07-11 15:19:46 +053059 :state="getValidationState(v$.form.manual.date)"
Sukanya Pandey6b5ff102021-05-10 14:07:15 +053060 :disabled="ntpOptionSelected"
Sandeepa Singhf67f7692021-07-19 18:04:18 +053061 data-test-id="dateTime-input-manualDate"
Dixsie Wolmers5ea16782020-07-27 17:50:43 -050062 class="form-control-with-button"
Surya Vde23ea22024-07-11 15:19:46 +053063 @blur="v$.form.manual.date.$touch()"
Dixsie Wolmers739e4592020-06-05 07:00:06 -050064 />
65 <b-form-invalid-feedback role="alert">
Surya Venkatesan1b89e592024-09-25 11:59:49 +053066 <div v-if="v$.form.manual.date.pattern.$invalid">
Dixsie Wolmers739e4592020-06-05 07:00:06 -050067 {{ $t('global.form.invalidFormat') }}
68 </div>
Surya Venkatesan1b89e592024-09-25 11:59:49 +053069 <div v-if="v$.form.manual.date.required.$invalid">
Dixsie Wolmers739e4592020-06-05 07:00:06 -050070 {{ $t('global.form.fieldRequired') }}
71 </div>
72 </b-form-invalid-feedback>
73 <b-form-datepicker
74 v-model="form.manual.date"
Dixsie Wolmers30f11f82020-11-10 16:07:56 -060075 class="btn-datepicker btn-icon-only"
Dixsie Wolmers739e4592020-06-05 07:00:06 -050076 button-only
Dixsie Wolmers30f11f82020-11-10 16:07:56 -060077 right
Dixsie Wolmers739e4592020-06-05 07:00:06 -050078 :hide-header="true"
79 :locale="locale"
80 :label-help="
81 $t('global.calendar.useCursorKeysToNavigateCalendarDates')
82 "
Dixsie Wolmers30f11f82020-11-10 16:07:56 -060083 :title="$t('global.calendar.selectDate')"
Sukanya Pandey6b5ff102021-05-10 14:07:15 +053084 :disabled="ntpOptionSelected"
Dixsie Wolmers739e4592020-06-05 07:00:06 -050085 button-variant="link"
86 aria-controls="input-manual-date"
87 >
Derick Montague602e98a2020-10-21 16:20:00 -050088 <template #button-content>
Dixsie Wolmers30f11f82020-11-10 16:07:56 -060089 <icon-calendar />
Dixsie Wolmerse9116eb2020-11-18 19:38:18 -060090 <span class="sr-only">
91 {{ $t('global.calendar.selectDate') }}
92 </span>
Dixsie Wolmers739e4592020-06-05 07:00:06 -050093 </template>
94 </b-form-datepicker>
95 </b-input-group>
96 </b-form-group>
97 </b-col>
98 <b-col sm="6" lg="4" xl="3">
99 <b-form-group
Sandeepa Singhf67f7692021-07-19 18:04:18 +0530100 :label="$t('pageDateTime.form.time.timezone', { timezone })"
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500101 label-for="input-manual-time"
102 >
Dixsie Wolmersfcda2002020-07-29 14:18:44 -0500103 <b-form-text id="time-format-help">HH:MM</b-form-text>
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500104 <b-input-group>
105 <b-form-input
106 id="input-manual-time"
107 v-model="form.manual.time"
Surya Vde23ea22024-07-11 15:19:46 +0530108 :state="getValidationState(v$.form.manual.time)"
Sukanya Pandey6b5ff102021-05-10 14:07:15 +0530109 :disabled="ntpOptionSelected"
Sandeepa Singhf67f7692021-07-19 18:04:18 +0530110 data-test-id="dateTime-input-manualTime"
Surya Vde23ea22024-07-11 15:19:46 +0530111 @blur="v$.form.manual.time.$touch()"
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500112 />
113 <b-form-invalid-feedback role="alert">
Surya Venkatesan1b89e592024-09-25 11:59:49 +0530114 <div v-if="v$.form.manual.time.pattern.$invalid">
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500115 {{ $t('global.form.invalidFormat') }}
116 </div>
Surya Venkatesan1b89e592024-09-25 11:59:49 +0530117 <div v-if="v$.form.manual.time.required.$invalid">
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500118 {{ $t('global.form.fieldRequired') }}
119 </div>
120 </b-form-invalid-feedback>
121 </b-input-group>
122 </b-form-group>
123 </b-col>
124 </b-row>
125 <b-form-radio
126 v-model="form.configurationSelected"
127 value="ntp"
Sandeepa Singhf67f7692021-07-19 18:04:18 +0530128 data-test-id="dateTime-radio-configureNTP"
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500129 >
130 NTP
131 </b-form-radio>
132 <b-row class="mt-3 ml-3">
133 <b-col sm="6" lg="4" xl="3">
134 <b-form-group
Sandeepa Singhf67f7692021-07-19 18:04:18 +0530135 :label="$t('pageDateTime.form.ntpServers.server1')"
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500136 label-for="input-ntp-1"
137 >
138 <b-input-group>
139 <b-form-input
140 id="input-ntp-1"
141 v-model="form.ntp.firstAddress"
Surya Vde23ea22024-07-11 15:19:46 +0530142 :state="getValidationState(v$.form.ntp.firstAddress)"
Sukanya Pandey6b5ff102021-05-10 14:07:15 +0530143 :disabled="manualOptionSelected"
Sandeepa Singhf67f7692021-07-19 18:04:18 +0530144 data-test-id="dateTime-input-ntpServer1"
Surya Vde23ea22024-07-11 15:19:46 +0530145 @blur="v$.form.ntp.firstAddress.$touch()"
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500146 />
147 <b-form-invalid-feedback role="alert">
Surya Venkatesan1b89e592024-09-25 11:59:49 +0530148 <div v-if="v$.form.ntp.firstAddress.required.$invalid">
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500149 {{ $t('global.form.fieldRequired') }}
150 </div>
151 </b-form-invalid-feedback>
152 </b-input-group>
153 </b-form-group>
154 </b-col>
155 <b-col sm="6" lg="4" xl="3">
156 <b-form-group
Sandeepa Singhf67f7692021-07-19 18:04:18 +0530157 :label="$t('pageDateTime.form.ntpServers.server2')"
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500158 label-for="input-ntp-2"
159 >
160 <b-input-group>
161 <b-form-input
162 id="input-ntp-2"
163 v-model="form.ntp.secondAddress"
Sukanya Pandey6b5ff102021-05-10 14:07:15 +0530164 :disabled="manualOptionSelected"
Sandeepa Singhf67f7692021-07-19 18:04:18 +0530165 data-test-id="dateTime-input-ntpServer2"
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500166 />
167 </b-input-group>
168 </b-form-group>
169 </b-col>
170 <b-col sm="6" lg="4" xl="3">
171 <b-form-group
Sandeepa Singhf67f7692021-07-19 18:04:18 +0530172 :label="$t('pageDateTime.form.ntpServers.server3')"
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500173 label-for="input-ntp-3"
174 >
175 <b-input-group>
176 <b-form-input
177 id="input-ntp-3"
178 v-model="form.ntp.thirdAddress"
Sukanya Pandey6b5ff102021-05-10 14:07:15 +0530179 :disabled="manualOptionSelected"
Sandeepa Singhf67f7692021-07-19 18:04:18 +0530180 data-test-id="dateTime-input-ntpServer3"
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500181 />
182 </b-input-group>
183 </b-form-group>
184 </b-col>
185 </b-row>
Mateusz Gapski471f2e02020-07-27 14:43:26 +0200186 <b-button
187 variant="primary"
188 type="submit"
Sandeepa Singhf67f7692021-07-19 18:04:18 +0530189 data-test-id="dateTime-button-saveSettings"
Mateusz Gapski471f2e02020-07-27 14:43:26 +0200190 >
191 {{ $t('global.action.saveSettings') }}
192 </b-button>
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500193 </b-form-group>
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500194 </b-form>
195 </page-section>
196 </b-container>
197</template>
198
199<script>
200import Alert from '@/components/Global/Alert';
201import IconCalendar from '@carbon/icons-vue/es/calendar/20';
202import PageTitle from '@/components/Global/PageTitle';
203import PageSection from '@/components/Global/PageSection';
204
205import BVToastMixin from '@/components/Mixins/BVToastMixin';
Yoshie Muranaka645250b2020-12-09 12:04:05 -0800206import LoadingBarMixin, { loading } from '@/components/Mixins/LoadingBarMixin';
207import LocalTimezoneLabelMixin from '@/components/Mixins/LocalTimezoneLabelMixin';
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500208import VuelidateMixin from '@/components/Mixins/VuelidateMixin.js';
Ed Tanous7d6b44c2024-03-23 14:56:34 -0700209import { useVuelidate } from '@vuelidate/core';
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500210
211import { mapState } from 'vuex';
Surya Venkatesan1b89e592024-09-25 11:59:49 +0530212import { requiredIf } from '@vuelidate/validators';
213import { helpers } from 'vuelidate/lib/validators';
Surya Vde23ea22024-07-11 15:19:46 +0530214import { useI18n } from 'vue-i18n';
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500215
Huy Le Anhb2ca5a52024-12-04 09:16:01 +0000216const isoDateRegex = /([12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$)/;
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500217const isoTimeRegex = /^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/;
218
219export default {
Sandeepa Singhf67f7692021-07-19 18:04:18 +0530220 name: 'DateTime',
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500221 components: { Alert, IconCalendar, PageTitle, PageSection },
Dixsie Wolmersfcda2002020-07-29 14:18:44 -0500222 mixins: [
223 BVToastMixin,
224 LoadingBarMixin,
225 LocalTimezoneLabelMixin,
Derick Montague602e98a2020-10-21 16:20:00 -0500226 VuelidateMixin,
Dixsie Wolmersfcda2002020-07-29 14:18:44 -0500227 ],
Derick Montague602e98a2020-10-21 16:20:00 -0500228 beforeRouteLeave(to, from, next) {
229 this.hideLoader();
230 next();
231 },
Ed Tanous7d6b44c2024-03-23 14:56:34 -0700232 setup() {
233 return {
234 v$: useVuelidate(),
235 };
236 },
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500237 data() {
238 return {
Surya Vde23ea22024-07-11 15:19:46 +0530239 $t: useI18n().t,
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500240 locale: this.$store.getters['global/languagePreference'],
241 form: {
Sukanya Pandey6b5ff102021-05-10 14:07:15 +0530242 configurationSelected: 'manual',
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500243 manual: {
244 date: '',
Derick Montague602e98a2020-10-21 16:20:00 -0500245 time: '',
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500246 },
Derick Montague602e98a2020-10-21 16:20:00 -0500247 ntp: { firstAddress: '', secondAddress: '', thirdAddress: '' },
248 },
Yoshie Muranakad73f4962020-12-09 08:52:23 -0800249 loading,
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500250 };
251 },
252 validations() {
253 return {
254 form: {
255 manual: {
256 date: {
Derick Montague602e98a2020-10-21 16:20:00 -0500257 required: requiredIf(function () {
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500258 return this.form.configurationSelected === 'manual';
259 }),
Derick Montague602e98a2020-10-21 16:20:00 -0500260 pattern: helpers.regex('pattern', isoDateRegex),
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500261 },
262 time: {
Derick Montague602e98a2020-10-21 16:20:00 -0500263 required: requiredIf(function () {
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500264 return this.form.configurationSelected === 'manual';
265 }),
Derick Montague602e98a2020-10-21 16:20:00 -0500266 pattern: helpers.regex('pattern', isoTimeRegex),
267 },
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500268 },
269 ntp: {
270 firstAddress: {
Derick Montague602e98a2020-10-21 16:20:00 -0500271 required: requiredIf(function () {
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500272 return this.form.configurationSelected === 'ntp';
Derick Montague602e98a2020-10-21 16:20:00 -0500273 }),
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500274 },
Derick Montague602e98a2020-10-21 16:20:00 -0500275 },
276 },
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500277 };
278 },
279 computed: {
280 ...mapState('dateTime', ['ntpServers', 'isNtpProtocolEnabled']),
281 bmcTime() {
282 return this.$store.getters['global/bmcTime'];
Dixsie Wolmersfcda2002020-07-29 14:18:44 -0500283 },
Sukanya Pandey6b5ff102021-05-10 14:07:15 +0530284 ntpOptionSelected() {
285 return this.form.configurationSelected === 'ntp';
286 },
287 manualOptionSelected() {
288 return this.form.configurationSelected === 'manual';
289 },
Dixsie Wolmersfcda2002020-07-29 14:18:44 -0500290 isUtcDisplay() {
291 return this.$store.getters['global/isUtcDisplay'];
292 },
293 timezone() {
294 if (this.isUtcDisplay) {
295 return 'UTC';
296 }
297 return this.localOffset();
Derick Montague602e98a2020-10-21 16:20:00 -0500298 },
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500299 },
300 watch: {
301 ntpServers() {
302 this.setNtpValues();
303 },
304 manualDate() {
305 this.emitChange();
Sukanya Pandeyce33f212020-08-28 13:13:05 +0530306 },
307 bmcTime() {
Surya Vde23ea22024-07-11 15:19:46 +0530308 this.form.manual.date = this.$filters.formatDate(
Ed Tanous81323992024-02-27 11:26:24 -0800309 this.$store.getters['global/bmcTime'],
Sukanya Pandeyce33f212020-08-28 13:13:05 +0530310 );
Surya Vde23ea22024-07-11 15:19:46 +0530311 this.form.manual.time = this.$filters
Sukanya Pandeyce33f212020-08-28 13:13:05 +0530312 .formatTime(this.$store.getters['global/bmcTime'])
313 .slice(0, 5);
Derick Montague602e98a2020-10-21 16:20:00 -0500314 },
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500315 },
316 created() {
317 this.startLoader();
Sukanya Pandey6b5ff102021-05-10 14:07:15 +0530318 this.setNtpValues();
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500319 Promise.all([
320 this.$store.dispatch('global/getBmcTime'),
Derick Montague602e98a2020-10-21 16:20:00 -0500321 this.$store.dispatch('dateTime/getNtpData'),
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500322 ]).finally(() => this.endLoader());
323 },
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500324 methods: {
325 emitChange() {
Surya Vde23ea22024-07-11 15:19:46 +0530326 if (this.v$.$invalid) return;
327 this.v$.$reset(); //reset to re-validate on blur
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500328 this.$emit('change', {
Derick Montague602e98a2020-10-21 16:20:00 -0500329 manualDate: this.manualDate ? new Date(this.manualDate) : null,
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500330 });
331 },
332 setNtpValues() {
333 this.form.configurationSelected = this.isNtpProtocolEnabled
334 ? 'ntp'
335 : 'manual';
Sukanya Pandey6b5ff102021-05-10 14:07:15 +0530336 [
337 this.form.ntp.firstAddress = '',
338 this.form.ntp.secondAddress = '',
339 this.form.ntp.thirdAddress = '',
340 ] = [this.ntpServers[0], this.ntpServers[1], this.ntpServers[2]];
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500341 },
342 submitForm() {
Surya Vde23ea22024-07-11 15:19:46 +0530343 this.v$.$touch();
344 if (this.v$.$invalid) return;
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500345 this.startLoader();
346
347 let dateTimeForm = {};
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500348 let isNTPEnabled = this.form.configurationSelected === 'ntp';
349
350 if (!isNTPEnabled) {
Sukanya Pandeyb5c161b2020-07-30 21:56:03 +0530351 const isUtcDisplay = this.$store.getters['global/isUtcDisplay'];
352 let date;
353
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500354 dateTimeForm.ntpProtocolEnabled = false;
Sukanya Pandeyb5c161b2020-07-30 21:56:03 +0530355
356 if (isUtcDisplay) {
357 // Create UTC Date
358 date = this.getUtcDate(this.form.manual.date, this.form.manual.time);
359 } else {
360 // Create local Date
361 date = new Date(`${this.form.manual.date} ${this.form.manual.time}`);
362 }
363
364 dateTimeForm.updatedDateTime = date.toISOString();
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500365 } else {
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500366 dateTimeForm.ntpProtocolEnabled = true;
Sukanya Pandey6b5ff102021-05-10 14:07:15 +0530367
Kenneth84ec88f2021-11-11 14:41:04 -0600368 const ntpArray = [
Sukanya Pandey6b5ff102021-05-10 14:07:15 +0530369 this.form.ntp.firstAddress,
370 this.form.ntp.secondAddress,
371 this.form.ntp.thirdAddress,
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500372 ];
Kenneth84ec88f2021-11-11 14:41:04 -0600373
374 // Filter the ntpArray to remove empty strings,
375 // per Redfish spec there should be no empty strings or null on the ntp array.
376 const ntpArrayFiltered = ntpArray.filter((x) => x);
377
378 dateTimeForm.ntpServersArray = [...ntpArrayFiltered];
379
380 [this.ntpServers[0], this.ntpServers[1], this.ntpServers[2]] = [
381 ...dateTimeForm.ntpServersArray,
382 ];
383
384 this.setNtpValues();
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500385 }
386
387 this.$store
Sandeepa Singhf67f7692021-07-19 18:04:18 +0530388 .dispatch('dateTime/updateDateTime', dateTimeForm)
Derick Montague602e98a2020-10-21 16:20:00 -0500389 .then((success) => {
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500390 this.successToast(success);
391 if (!isNTPEnabled) return;
392 // Shift address up if second address is empty
393 // to avoid refreshing after delay when updating NTP
Sukanya Pandey6b5ff102021-05-10 14:07:15 +0530394 if (!this.form.ntp.secondAddress && this.form.ntp.thirdAddres) {
395 this.form.ntp.secondAddress = this.form.ntp.thirdAddres;
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500396 this.form.ntp.thirdAddress = '';
397 }
398 })
Dixsie Wolmersecd45a82020-07-14 17:07:26 -0500399 .then(() => {
400 this.$store.dispatch('global/getBmcTime');
401 })
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500402 .catch(({ message }) => this.errorToast(message))
403 .finally(() => {
Surya Vde23ea22024-07-11 15:19:46 +0530404 this.v$.form.$reset();
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500405 this.endLoader();
406 });
Sukanya Pandeyb5c161b2020-07-30 21:56:03 +0530407 },
408 getUtcDate(date, time) {
409 // Split user input string values to create
410 // a UTC Date object
411 const datesArray = date.split('-');
412 const timeArray = time.split(':');
413 let utcDate = Date.UTC(
414 datesArray[0], // User input year
Sukanya Pandey5a705962020-08-05 00:52:28 +0530415 //UTC expects zero-index month value 0-11 (January-December)
416 //for reference https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/UTC#Parameters
417 parseInt(datesArray[1]) - 1, // User input month
Sukanya Pandeyb5c161b2020-07-30 21:56:03 +0530418 datesArray[2], // User input day
419 timeArray[0], // User input hour
Ed Tanous81323992024-02-27 11:26:24 -0800420 timeArray[1], // User input minute
Sukanya Pandeyb5c161b2020-07-30 21:56:03 +0530421 );
422 return new Date(utcDate);
Derick Montague602e98a2020-10-21 16:20:00 -0500423 },
424 },
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500425};
426</script>