date issue 10
This commit is contained in:
@@ -116,6 +116,23 @@ export function AppointmentForm({
|
|||||||
color: colorMap[staff.name] || "bg-gray-400",
|
color: colorMap[staff.name] || "bg-gray-400",
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
function parseLocalDate(dateString: string): Date {
|
||||||
|
const parts = dateString.split("-");
|
||||||
|
if (parts.length !== 3) {
|
||||||
|
return new Date();
|
||||||
|
}
|
||||||
|
const year = parseInt(parts[0] ?? "", 10);
|
||||||
|
const month = parseInt(parts[1] ?? "", 10);
|
||||||
|
const day = parseInt(parts[2] ?? "", 10);
|
||||||
|
|
||||||
|
if (isNaN(year) || isNaN(month) || isNaN(day)) {
|
||||||
|
return new Date();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create date at UTC midnight instead of local midnight
|
||||||
|
return new Date(year, month - 1, day);
|
||||||
|
}
|
||||||
|
|
||||||
// Get the stored data from session storage
|
// Get the stored data from session storage
|
||||||
const storedDataString = sessionStorage.getItem("newAppointmentData");
|
const storedDataString = sessionStorage.getItem("newAppointmentData");
|
||||||
let parsedStoredData = null;
|
let parsedStoredData = null;
|
||||||
@@ -134,7 +151,10 @@ export function AppointmentForm({
|
|||||||
? {
|
? {
|
||||||
patientId: appointment.patientId,
|
patientId: appointment.patientId,
|
||||||
title: appointment.title,
|
title: appointment.title,
|
||||||
date: new Date(appointment.date),
|
date:
|
||||||
|
typeof appointment.date === "string"
|
||||||
|
? parseLocalDate(appointment.date)
|
||||||
|
: appointment.date,
|
||||||
startTime: appointment.startTime || "09:00", // Default "09:00"
|
startTime: appointment.startTime || "09:00", // Default "09:00"
|
||||||
endTime: appointment.endTime || "09:30", // Default "09:30"
|
endTime: appointment.endTime || "09:30", // Default "09:30"
|
||||||
type: appointment.type,
|
type: appointment.type,
|
||||||
@@ -148,7 +168,12 @@ export function AppointmentForm({
|
|||||||
: parsedStoredData
|
: parsedStoredData
|
||||||
? {
|
? {
|
||||||
patientId: Number(parsedStoredData.patientId),
|
patientId: Number(parsedStoredData.patientId),
|
||||||
date: new Date(parsedStoredData.date),
|
date: parsedStoredData.date
|
||||||
|
? typeof parsedStoredData.date === "string"
|
||||||
|
? parseLocalDate(parsedStoredData.date)
|
||||||
|
: new Date(parsedStoredData.date) // in case it’s a stringified date or timestamp
|
||||||
|
: new Date(),
|
||||||
|
|
||||||
title: parsedStoredData.title || "",
|
title: parsedStoredData.title || "",
|
||||||
startTime: parsedStoredData.startTime,
|
startTime: parsedStoredData.startTime,
|
||||||
endTime: parsedStoredData.endTime,
|
endTime: parsedStoredData.endTime,
|
||||||
@@ -211,7 +236,11 @@ export function AppointmentForm({
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (parsedStoredData.date) {
|
if (parsedStoredData.date) {
|
||||||
form.setValue("date", new Date(parsedStoredData.date));
|
const parsedDate =
|
||||||
|
typeof parsedStoredData.date === "string"
|
||||||
|
? parseLocalDate(parsedStoredData.date)
|
||||||
|
: new Date(parsedStoredData.date);
|
||||||
|
form.setValue("date", parsedDate);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clean up session storage
|
// Clean up session storage
|
||||||
@@ -259,7 +288,6 @@ export function AppointmentForm({
|
|||||||
|
|
||||||
const formattedDate = data.date.toLocaleDateString("en-CA");
|
const formattedDate = data.date.toLocaleDateString("en-CA");
|
||||||
|
|
||||||
|
|
||||||
onSubmit({
|
onSubmit({
|
||||||
...data,
|
...data,
|
||||||
title,
|
title,
|
||||||
@@ -404,8 +432,12 @@ export function AppointmentForm({
|
|||||||
<PopoverContent className="w-auto p-0" align="start">
|
<PopoverContent className="w-auto p-0" align="start">
|
||||||
<Calendar
|
<Calendar
|
||||||
mode="single"
|
mode="single"
|
||||||
selected={field.value ? new Date(field.value) : undefined}
|
selected={field.value}
|
||||||
onSelect={field.onChange}
|
onSelect={(date) => {
|
||||||
|
if (date) {
|
||||||
|
field.onChange(date);
|
||||||
|
}
|
||||||
|
}}
|
||||||
disabled={(date) =>
|
disabled={(date) =>
|
||||||
date < new Date(new Date().setHours(0, 0, 0, 0))
|
date < new Date(new Date().setHours(0, 0, 0, 0))
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user