moved date helper functions from schedule helper to helpers/date-helper
This commit is contained in:
parent
055859aa73
commit
d030ae4196
7 changed files with 71 additions and 112 deletions
|
|
@ -106,10 +106,7 @@ import loader from '@/ux-components/loader/loader.vue';
|
||||||
import { useMainStore } from '@/store';
|
import { useMainStore } from '@/store';
|
||||||
import { useField, ErrorMessage } from 'vee-validate';
|
import { useField, ErrorMessage } from 'vee-validate';
|
||||||
import { deepClone } from '@/helpers/object-helper';
|
import { deepClone } from '@/helpers/object-helper';
|
||||||
import {
|
import { convertDateStringToDate, convertDateToDateString } from '@/helpers/date-helper';
|
||||||
convertDateToDateString,
|
|
||||||
convertDateStringToDate
|
|
||||||
} from '@/layouts/schedule-page/helpers/schedule-helper';
|
|
||||||
import { TIMINGFUNC_MAP, BUFFER_OFFSET, MONTHS_OF_YEAR } from './mixins/constants';
|
import { TIMINGFUNC_MAP, BUFFER_OFFSET, MONTHS_OF_YEAR } from './mixins/constants';
|
||||||
import { selectableDaysOptions, requiredParameter } from './mixins/helpers';
|
import { selectableDaysOptions, requiredParameter } from './mixins/helpers';
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,30 @@
|
||||||
const getDateDifferenceInDays = (startDate, endDate) => {
|
export function calcDaysBetweenDates(dateString1, dateString2) {
|
||||||
|
const date1 = new Date(dateString1);
|
||||||
|
const date2 = new Date(dateString2);
|
||||||
|
const timeDifference = Math.abs(date2 - date1); // Calculate the time difference in milliseconds
|
||||||
|
return Math.ceil(timeDifference / (1000 * 60 * 60 * 24)); // Convert milliseconds to days
|
||||||
|
}
|
||||||
|
|
||||||
|
export function convertDateToDateString(date) {
|
||||||
|
// returns YYYY-MM-DD format
|
||||||
|
if (date instanceof Date !== true) return null;
|
||||||
|
return (
|
||||||
|
`${date.getFullYear()
|
||||||
|
}-${
|
||||||
|
(`0${date.getMonth() + 1}`).slice(-2)
|
||||||
|
}-${
|
||||||
|
(`0${date.getDate()}`).slice(-2)}`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function convertDateStringToDate(dateString) {
|
||||||
|
// dateString must be YYYY-MM-DD format
|
||||||
|
if (typeof dateString !== 'string') return null;
|
||||||
|
const dateParts = dateString.split('-');
|
||||||
|
return new Date(dateParts[0], parseInt(dateParts[1], 10) - 1, dateParts[2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getDateDifferenceInDays(startDate, endDate) {
|
||||||
const date1 = new Date(endDate);
|
const date1 = new Date(endDate);
|
||||||
date1.setHours(0, 0, 0, 0);
|
date1.setHours(0, 0, 0, 0);
|
||||||
const date2 = new Date(startDate);
|
const date2 = new Date(startDate);
|
||||||
|
|
@ -7,6 +33,42 @@ const getDateDifferenceInDays = (startDate, endDate) => {
|
||||||
const DifferenceInTime = date1.getTime() - date2.getTime();
|
const DifferenceInTime = date1.getTime() - date2.getTime();
|
||||||
// To calculate the no. of days between two dates
|
// To calculate the no. of days between two dates
|
||||||
return DifferenceInTime / (1000 * 3600 * 24);
|
return DifferenceInTime / (1000 * 3600 * 24);
|
||||||
};
|
}
|
||||||
|
|
||||||
export default getDateDifferenceInDays;
|
export function getDisplayTextForDurationLength(durationMinimum, durationMaximum) {
|
||||||
|
const isLongAppointment = durationMaximum >= 120;
|
||||||
|
const isDurationRange = durationMinimum !== durationMaximum;
|
||||||
|
|
||||||
|
const adjustedMinimum = isLongAppointment ? durationMinimum / 60 : durationMinimum;
|
||||||
|
const adjustedMaximum = isLongAppointment ? durationMaximum / 60 : durationMaximum;
|
||||||
|
|
||||||
|
const durationText = isDurationRange
|
||||||
|
? `${adjustedMinimum} - ${adjustedMaximum}`
|
||||||
|
: adjustedMinimum;
|
||||||
|
|
||||||
|
const unitText = isLongAppointment ? 'hours' : 'minutes';
|
||||||
|
|
||||||
|
return `${durationText} ${unitText}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function militaryToTwelveHourTime(timeString) {
|
||||||
|
// Expected input: "HH:MM"
|
||||||
|
if (typeof timeString !== 'string') return null;
|
||||||
|
let hours = parseInt(timeString.split(':')[0], 10);
|
||||||
|
const minutes = timeString.split(':')[1];
|
||||||
|
const meridianNotation = hours > 11 ? 'PM' : 'AM';
|
||||||
|
|
||||||
|
if (hours > 12) {
|
||||||
|
hours -= 12;
|
||||||
|
}
|
||||||
|
|
||||||
|
return `${hours}:${minutes} ${meridianNotation}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function sumDateString(dateString, daysToAdd) {
|
||||||
|
// dateString must be YYYY-MM-DD format
|
||||||
|
if (typeof dateString !== 'string') return null;
|
||||||
|
const date = convertDateStringToDate(dateString);
|
||||||
|
date.setDate(date.getDate() + daysToAdd);
|
||||||
|
return convertDateToDateString(date);
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,72 +1,8 @@
|
||||||
import { useMainStore } from '@/store';
|
import { useMainStore } from '@/store';
|
||||||
|
|
||||||
export async function getAlertReasons(ctu) {
|
export default async function getAlertReasons(ctu) {
|
||||||
const store = useMainStore();
|
const store = useMainStore();
|
||||||
const alertReasons = await store.getAlertReasonsByCtu(ctu);
|
const alertReasons = await store.getAlertReasonsByCtu(ctu);
|
||||||
|
|
||||||
return Promise.resolve(alertReasons);
|
return Promise.resolve(alertReasons);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function calcDaysBetweenDates(dateString1, dateString2) {
|
|
||||||
const date1 = new Date(dateString1);
|
|
||||||
const date2 = new Date(dateString2);
|
|
||||||
const timeDifference = Math.abs(date2 - date1); // Calculate the time difference in milliseconds
|
|
||||||
return Math.ceil(timeDifference / (1000 * 60 * 60 * 24)); // Convert milliseconds to days
|
|
||||||
}
|
|
||||||
|
|
||||||
export function convertDateToDateString(date) {
|
|
||||||
// returns YYYY-MM-DD format
|
|
||||||
if (date instanceof Date !== true) return null;
|
|
||||||
return (
|
|
||||||
`${date.getFullYear()
|
|
||||||
}-${
|
|
||||||
(`0${date.getMonth() + 1}`).slice(-2)
|
|
||||||
}-${
|
|
||||||
(`0${date.getDate()}`).slice(-2)}`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function convertDateStringToDate(dateString) {
|
|
||||||
// dateString must be YYYY-MM-DD format
|
|
||||||
if (typeof dateString !== 'string') return null;
|
|
||||||
const dateParts = dateString.split('-');
|
|
||||||
return new Date(dateParts[0], parseInt(dateParts[1], 10) - 1, dateParts[2]);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function sumDateString(dateString, daysToAdd) {
|
|
||||||
// dateString must be YYYY-MM-DD format
|
|
||||||
if (typeof dateString !== 'string') return null;
|
|
||||||
const date = convertDateStringToDate(dateString);
|
|
||||||
date.setDate(date.getDate() + daysToAdd);
|
|
||||||
return convertDateToDateString(date);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function militaryToTwelveHourTime(timeString) {
|
|
||||||
// Expected input: "HH:MM"
|
|
||||||
if (typeof timeString !== 'string') return null;
|
|
||||||
let hours = parseInt(timeString.split(':')[0], 10);
|
|
||||||
const minutes = timeString.split(':')[1];
|
|
||||||
const meridianNotation = hours > 11 ? 'PM' : 'AM';
|
|
||||||
|
|
||||||
if (hours > 12) {
|
|
||||||
hours -= 12;
|
|
||||||
}
|
|
||||||
|
|
||||||
return `${hours}:${minutes} ${meridianNotation}`;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getDisplayTextForDurationLength(durationMinimum, durationMaximum) {
|
|
||||||
const isLongAppointment = durationMaximum >= 120;
|
|
||||||
const isDurationRange = durationMinimum !== durationMaximum;
|
|
||||||
|
|
||||||
const adjustedMinimum = isLongAppointment ? durationMinimum / 60 : durationMinimum;
|
|
||||||
const adjustedMaximum = isLongAppointment ? durationMaximum / 60 : durationMaximum;
|
|
||||||
|
|
||||||
const durationText = isDurationRange
|
|
||||||
? `${adjustedMinimum} - ${adjustedMaximum}`
|
|
||||||
: adjustedMinimum;
|
|
||||||
|
|
||||||
const unitText = isLongAppointment ? 'hours' : 'minutes';
|
|
||||||
|
|
||||||
return `${durationText} ${unitText}`;
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import alert from '@/ux-components/alert/alert.vue';
|
import alert from '@/ux-components/alert/alert.vue';
|
||||||
import { getAlertReasons } from '@/layouts/schedule-page/helpers/schedule-helper';
|
import getAlertReasons from '@/layouts/schedule-page/helpers/schedule-helper';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'location-alerts',
|
name: 'location-alerts',
|
||||||
|
|
|
||||||
|
|
@ -70,11 +70,6 @@ import siteFooter from '@/iss-components/site-footer/site-footer.vue';
|
||||||
import textBlock from '@/digital-components/text-block/text-block.vue';
|
import textBlock from '@/digital-components/text-block/text-block.vue';
|
||||||
|
|
||||||
// Supporting files
|
// Supporting files
|
||||||
import {
|
|
||||||
calcDaysBetweenDates,
|
|
||||||
convertDateStringToDate,
|
|
||||||
sumDateString
|
|
||||||
} from '@/layouts/schedule-page/helpers/schedule-helper';
|
|
||||||
import {
|
import {
|
||||||
AppointmentTypeStrings,
|
AppointmentTypeStrings,
|
||||||
GET_MOBILE_TIME_SLOTS,
|
GET_MOBILE_TIME_SLOTS,
|
||||||
|
|
@ -82,6 +77,7 @@ import {
|
||||||
PREMIUM_FEE_PART_TYPE
|
PREMIUM_FEE_PART_TYPE
|
||||||
} from '@/constants/schedule-constants.js';
|
} from '@/constants/schedule-constants.js';
|
||||||
import { fetchCmsContentForPage, splitCopyOnCMSPlaceHolder } from '@/helpers/cms-content-helper';
|
import { fetchCmsContentForPage, splitCopyOnCMSPlaceHolder } from '@/helpers/cms-content-helper';
|
||||||
|
import { calcDaysBetweenDates, convertDateStringToDate, sumDateString } from '@/helpers/date-helper';
|
||||||
import settleAllPromises from '@/helpers/layout-helper';
|
import settleAllPromises from '@/helpers/layout-helper';
|
||||||
import { Form, defineRule } from 'vee-validate';
|
import { Form, defineRule } from 'vee-validate';
|
||||||
import BaseFormMixin from '@/mixins/base-form-mixin.js';
|
import BaseFormMixin from '@/mixins/base-form-mixin.js';
|
||||||
|
|
|
||||||
|
|
@ -60,11 +60,7 @@ import {
|
||||||
PREMIUM_TIME_SLOT_ID_FLAG,
|
PREMIUM_TIME_SLOT_ID_FLAG,
|
||||||
PREMIUM_FEE_PART_TYPE
|
PREMIUM_FEE_PART_TYPE
|
||||||
} from '@/constants/schedule-constants';
|
} from '@/constants/schedule-constants';
|
||||||
import {
|
import { convertDateStringToDate, getDisplayTextForDurationLength, militaryToTwelveHourTime } from '@/helpers/date-helper';
|
||||||
convertDateStringToDate,
|
|
||||||
militaryToTwelveHourTime,
|
|
||||||
getDisplayTextForDurationLength
|
|
||||||
} from '@/layouts/schedule-page/helpers/schedule-helper';
|
|
||||||
import timeSlotModalListButton from './time-slot-modal-list-button/time-slot-modal-list-button.vue';
|
import timeSlotModalListButton from './time-slot-modal-list-button/time-slot-modal-list-button.vue';
|
||||||
|
|
||||||
const cmsWidgetFieldMappings = {
|
const cmsWidgetFieldMappings = {
|
||||||
|
|
|
||||||
|
|
@ -11,34 +11,12 @@ import applicationConfig from '@/constants/application-config';
|
||||||
import issPageValues from '@/router/router-constants/issPage-values';
|
import issPageValues from '@/router/router-constants/issPage-values';
|
||||||
import damageLocationsSelected from '@/constants/damage-locations-selected';
|
import damageLocationsSelected from '@/constants/damage-locations-selected';
|
||||||
import coverageStatuses from '@/constants/coverage-statuses';
|
import coverageStatuses from '@/constants/coverage-statuses';
|
||||||
import { deepEqual } from '@/helpers/object-helper';
|
|
||||||
import { AppointmentTypeStrings, PREMIUM_FEE_PART_TYPE } from '@/constants/schedule-constants';
|
import { AppointmentTypeStrings, PREMIUM_FEE_PART_TYPE } from '@/constants/schedule-constants';
|
||||||
import getDateDifferenceInDays from '@/helpers/date-helper';
|
import { convertDateStringToDate, getDateDifferenceInDays, militaryToTwelveHourTime } from '@/helpers/date-helper';
|
||||||
// import endorsementOptions from '@/constants/endorsement-options';
|
// import endorsementOptions from '@/constants/endorsement-options';
|
||||||
|
|
||||||
const storeId = 'main';
|
const storeId = 'main';
|
||||||
|
|
||||||
function convertDateStringToDate(dateString) {
|
|
||||||
// dateString must be YYYY-MM-DD format
|
|
||||||
if (typeof dateString !== 'string') return null;
|
|
||||||
const dateParts = dateString.split('-');
|
|
||||||
return new Date(dateParts[0], parseInt(dateParts[1], 10) - 1, dateParts[2]);
|
|
||||||
}
|
|
||||||
|
|
||||||
function militaryToTwelveHourTime(timeString) {
|
|
||||||
// Expected input: "HH:MM"
|
|
||||||
if (typeof timeString !== 'string') return null;
|
|
||||||
let hours = parseInt(timeString.split(':')[0], 10);
|
|
||||||
const minutes = timeString.split(':')[1];
|
|
||||||
const meridianNotation = hours > 11 ? 'PM' : 'AM';
|
|
||||||
|
|
||||||
if (hours > 12) {
|
|
||||||
hours -= 12;
|
|
||||||
}
|
|
||||||
|
|
||||||
return `${hours}:${minutes} ${meridianNotation}`;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getDisplayTextForDurationLength(durationMinimum, durationMaximum) {
|
function getDisplayTextForDurationLength(durationMinimum, durationMaximum) {
|
||||||
const isLongAppointment = durationMaximum >= 120;
|
const isLongAppointment = durationMaximum >= 120;
|
||||||
const isDurationRange = durationMinimum !== durationMaximum;
|
const isDurationRange = durationMinimum !== durationMaximum;
|
||||||
|
|
@ -1712,15 +1690,9 @@ export const useMainStore = defineStore({
|
||||||
this.updateCapabilityQuestionAnswers(capabilityQuestionAnswersArray);
|
this.updateCapabilityQuestionAnswers(capabilityQuestionAnswersArray);
|
||||||
},
|
},
|
||||||
saveGlassParts(glassParts) {
|
saveGlassParts(glassParts) {
|
||||||
// if (!deepEqual(glassParts, this.order.lineItems.glassParts)) {
|
|
||||||
// this.resetServiceLocationAndDependencies();
|
|
||||||
// }
|
|
||||||
this.order.lineItems.glassParts = glassParts;
|
this.order.lineItems.glassParts = glassParts;
|
||||||
},
|
},
|
||||||
saveSupportingItems(supportingItems) {
|
saveSupportingItems(supportingItems) {
|
||||||
// if (!deepEqual(supportingItems, this.order.lineItems.supportingItems)) {
|
|
||||||
// this.resetServiceLocationAndDependencies();
|
|
||||||
// }
|
|
||||||
this.order.lineItems.supportingItems = supportingItems;
|
this.order.lineItems.supportingItems = supportingItems;
|
||||||
},
|
},
|
||||||
saveSupportingItemsSuppressingStateResetting(supportingItems) {
|
saveSupportingItemsSuppressingStateResetting(supportingItems) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue