diff --git a/src/digital-components/date-picker/date-picker.vue b/src/digital-components/date-picker/date-picker.vue index feaa430d..712919e2 100644 --- a/src/digital-components/date-picker/date-picker.vue +++ b/src/digital-components/date-picker/date-picker.vue @@ -106,10 +106,7 @@ import loader from '@/ux-components/loader/loader.vue'; import { useMainStore } from '@/store'; import { useField, ErrorMessage } from 'vee-validate'; import { deepClone } from '@/helpers/object-helper'; -import { - convertDateToDateString, - convertDateStringToDate -} from '@/layouts/schedule-page/helpers/schedule-helper'; +import { convertDateStringToDate, convertDateToDateString } from '@/helpers/date-helper'; import { TIMINGFUNC_MAP, BUFFER_OFFSET, MONTHS_OF_YEAR } from './mixins/constants'; import { selectableDaysOptions, requiredParameter } from './mixins/helpers'; diff --git a/src/helpers/date-helper.js b/src/helpers/date-helper.js index ed943174..1b062c85 100644 --- a/src/helpers/date-helper.js +++ b/src/helpers/date-helper.js @@ -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); date1.setHours(0, 0, 0, 0); const date2 = new Date(startDate); @@ -7,6 +33,42 @@ const getDateDifferenceInDays = (startDate, endDate) => { const DifferenceInTime = date1.getTime() - date2.getTime(); // To calculate the no. of days between two dates 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); +} diff --git a/src/layouts/schedule-page/helpers/schedule-helper.js b/src/layouts/schedule-page/helpers/schedule-helper.js index eb5657f8..a2e1fae9 100644 --- a/src/layouts/schedule-page/helpers/schedule-helper.js +++ b/src/layouts/schedule-page/helpers/schedule-helper.js @@ -1,72 +1,8 @@ import { useMainStore } from '@/store'; -export async function getAlertReasons(ctu) { +export default async function getAlertReasons(ctu) { const store = useMainStore(); const alertReasons = await store.getAlertReasonsByCtu(ctu); 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}`; -} diff --git a/src/layouts/schedule-page/location-alerts/location-alerts.vue b/src/layouts/schedule-page/location-alerts/location-alerts.vue index 1730320e..f47b3704 100644 --- a/src/layouts/schedule-page/location-alerts/location-alerts.vue +++ b/src/layouts/schedule-page/location-alerts/location-alerts.vue @@ -9,7 +9,7 @@