vision refactor
This commit is contained in:
parent
b185c130c9
commit
925fa95da4
@ -499,6 +499,16 @@ export default function VisionPage() {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Format date-time to local format (YYYY-MM-DDTHH:mm) preserving local time
|
||||||
|
const formatLocalDateTime = (date: Date): string => {
|
||||||
|
const year = date.getFullYear();
|
||||||
|
const month = String(date.getMonth() + 1).padStart(2, '0');
|
||||||
|
const day = String(date.getDate()).padStart(2, '0');
|
||||||
|
const hours = String(date.getHours()).padStart(2, '0');
|
||||||
|
const minutes = String(date.getMinutes()).padStart(2, '0');
|
||||||
|
return `${year}-${month}-${day}T${hours}:${minutes}`;
|
||||||
|
};
|
||||||
|
|
||||||
// Handle open meeting dialog
|
// Handle open meeting dialog
|
||||||
const handleOpenMeetingDialog = (type: "group" | "mission", id: string, name: string) => {
|
const handleOpenMeetingDialog = (type: "group" | "mission", id: string, name: string) => {
|
||||||
const defaultDate = selectedDate || new Date();
|
const defaultDate = selectedDate || new Date();
|
||||||
@ -512,8 +522,8 @@ export default function VisionPage() {
|
|||||||
entityId: id,
|
entityId: id,
|
||||||
entityName: name,
|
entityName: name,
|
||||||
title: "",
|
title: "",
|
||||||
start: startDate.toISOString().slice(0, 16),
|
start: formatLocalDateTime(startDate),
|
||||||
end: endDate.toISOString().slice(0, 16),
|
end: formatLocalDateTime(endDate),
|
||||||
allDay: false,
|
allDay: false,
|
||||||
description: "",
|
description: "",
|
||||||
recurrence: "none",
|
recurrence: "none",
|
||||||
@ -706,6 +716,21 @@ export default function VisionPage() {
|
|||||||
return date.toLocaleDateString('fr-FR', { weekday: 'long', day: 'numeric', month: 'long' });
|
return date.toLocaleDateString('fr-FR', { weekday: 'long', day: 'numeric', month: 'long' });
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Format time range for display (start - end)
|
||||||
|
const formatTimeRange = (meeting: ScheduledMeeting): string => {
|
||||||
|
if (meeting.isAllDay) {
|
||||||
|
return "Toute la journée";
|
||||||
|
}
|
||||||
|
if (!meeting.start || !meeting.end) {
|
||||||
|
return meeting.time || "";
|
||||||
|
}
|
||||||
|
const start = new Date(meeting.start);
|
||||||
|
const end = new Date(meeting.end);
|
||||||
|
const startTime = start.toTimeString().slice(0, 5);
|
||||||
|
const endTime = end.toTimeString().slice(0, 5);
|
||||||
|
return `${startTime} - ${endTime}`;
|
||||||
|
};
|
||||||
|
|
||||||
// Show loading state
|
// Show loading state
|
||||||
if (status === "loading" || loading) {
|
if (status === "loading" || loading) {
|
||||||
return (
|
return (
|
||||||
@ -794,7 +819,10 @@ export default function VisionPage() {
|
|||||||
{meeting.title || `${meeting.type === "group" ? "Groupe" : "Mission"}: ${meeting.entityName}`}
|
{meeting.title || `${meeting.type === "group" ? "Groupe" : "Mission"}: ${meeting.entityName}`}
|
||||||
</h3>
|
</h3>
|
||||||
<p className="text-sm text-gray-500">
|
<p className="text-sm text-gray-500">
|
||||||
{meeting.time} - {formatDate(meeting.date)}
|
{meeting.type === "group" ? "Groupe" : "Mission"}: {meeting.entityName}
|
||||||
|
</p>
|
||||||
|
<p className="text-sm text-gray-500">
|
||||||
|
{formatTimeRange(meeting)}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -976,12 +1004,17 @@ export default function VisionPage() {
|
|||||||
<h4 className="font-medium text-gray-900">
|
<h4 className="font-medium text-gray-900">
|
||||||
{meeting.title || `${meeting.type === "group" ? "Groupe" : "Mission"}: ${meeting.entityName}`}
|
{meeting.title || `${meeting.type === "group" ? "Groupe" : "Mission"}: ${meeting.entityName}`}
|
||||||
</h4>
|
</h4>
|
||||||
<p className="text-sm text-gray-500">{meeting.time}</p>
|
<p className="text-sm text-gray-500">
|
||||||
|
{meeting.type === "group" ? "Groupe" : "Mission"}: {meeting.entityName}
|
||||||
|
</p>
|
||||||
|
<p className="text-sm text-gray-500">
|
||||||
|
{formatTimeRange(meeting)}
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
{canJoinMeeting(meeting) && (
|
{canJoinMeeting(meeting) && meeting.location && (
|
||||||
<Button
|
<Button
|
||||||
size="sm"
|
size="sm"
|
||||||
variant="outline"
|
className="bg-blue-600 hover:bg-blue-700 text-white"
|
||||||
onClick={() => handleConferenceClick(meeting.type, meeting.entityId, meeting.entityName, meeting.location)}
|
onClick={() => handleConferenceClick(meeting.type, meeting.entityId, meeting.entityName, meeting.location)}
|
||||||
>
|
>
|
||||||
<Video className="h-4 w-4 mr-1" />
|
<Video className="h-4 w-4 mr-1" />
|
||||||
@ -1029,9 +1062,6 @@ export default function VisionPage() {
|
|||||||
<h3 className="font-medium text-gray-900 truncate">
|
<h3 className="font-medium text-gray-900 truncate">
|
||||||
{group.name}
|
{group.name}
|
||||||
</h3>
|
</h3>
|
||||||
<p className="text-sm text-gray-500 truncate">
|
|
||||||
{group.path}
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex items-center gap-2 ml-2">
|
<div className="flex items-center gap-2 ml-2">
|
||||||
@ -1198,8 +1228,8 @@ export default function VisionPage() {
|
|||||||
}
|
}
|
||||||
setMeetingForm({
|
setMeetingForm({
|
||||||
...meetingForm,
|
...meetingForm,
|
||||||
start: newStart.toISOString().slice(0, 16),
|
start: formatLocalDateTime(newStart),
|
||||||
end: newEnd.toISOString().slice(0, 16)
|
end: formatLocalDateTime(newEnd)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
@ -1228,8 +1258,8 @@ export default function VisionPage() {
|
|||||||
}
|
}
|
||||||
setMeetingForm({
|
setMeetingForm({
|
||||||
...meetingForm,
|
...meetingForm,
|
||||||
start: newStart.toISOString().slice(0, 16),
|
start: formatLocalDateTime(newStart),
|
||||||
end: newEnd.toISOString().slice(0, 16)
|
end: formatLocalDateTime(newEnd)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
@ -1260,7 +1290,7 @@ export default function VisionPage() {
|
|||||||
newEnd.setHours(currentEnd.getHours(), currentEnd.getMinutes());
|
newEnd.setHours(currentEnd.getHours(), currentEnd.getMinutes());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setMeetingForm({ ...meetingForm, end: newEnd.toISOString().slice(0, 16) });
|
setMeetingForm({ ...meetingForm, end: formatLocalDateTime(newEnd) });
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
dateFormat="dd/MM/yyyy"
|
dateFormat="dd/MM/yyyy"
|
||||||
@ -1279,7 +1309,7 @@ export default function VisionPage() {
|
|||||||
const currentEnd = getDateFromString(meetingForm.end) || new Date();
|
const currentEnd = getDateFromString(meetingForm.end) || new Date();
|
||||||
const newEnd = new Date(currentEnd);
|
const newEnd = new Date(currentEnd);
|
||||||
newEnd.setHours(date.getHours(), date.getMinutes());
|
newEnd.setHours(date.getHours(), date.getMinutes());
|
||||||
setMeetingForm({ ...meetingForm, end: newEnd.toISOString().slice(0, 16) });
|
setMeetingForm({ ...meetingForm, end: formatLocalDateTime(newEnd) });
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
showTimeSelect
|
showTimeSelect
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user