fix dates ant TZ, cleanup
This commit is contained in:
@ -1,4 +1,4 @@
|
||||
import React, { useState, useEffect } from 'react';
|
||||
import React, { useState, useEffect, use } from 'react';
|
||||
import { Calendar, momentLocalizer, dateFnsLocalizer } from 'react-big-calendar';
|
||||
import 'react-big-calendar/lib/css/react-big-calendar.css';
|
||||
import AvailabilityForm from '../availability/AvailabilityForm';
|
||||
@ -18,11 +18,13 @@ import { MdToday } from 'react-icons/md';
|
||||
|
||||
import { useSwipeable } from 'react-swipeable';
|
||||
import axiosInstance from '../../src/axiosSecure';
|
||||
import { set } from 'date-fns';
|
||||
import { get } from 'http';
|
||||
|
||||
// import { set, format, addDays } from 'date-fns';
|
||||
// import { isEqual, isSameDay, getHours, getMinutes } from 'date-fns';
|
||||
import { filter } from 'jszip';
|
||||
import e from 'express';
|
||||
// import { filter } from 'jszip';
|
||||
// import e from 'express';
|
||||
|
||||
|
||||
|
||||
@ -46,7 +48,7 @@ const messages = {
|
||||
// Any other labels you want to translate...
|
||||
};
|
||||
|
||||
const AvCalendar = ({ publisherId, events, selectedDate }) => {
|
||||
const AvCalendar = ({ publisherId, events, selectedDate, cartEvents }) => {
|
||||
|
||||
const isAdmin = ProtectedRoute.IsInRole(UserRole.ADMIN);
|
||||
|
||||
@ -65,7 +67,15 @@ const AvCalendar = ({ publisherId, events, selectedDate }) => {
|
||||
return { start, end };
|
||||
});
|
||||
|
||||
const [cartEvent, setCartEvent] = useState(null);
|
||||
function getCartEvent(date) {
|
||||
const dayOfWeek = common.getDayOfWeekNameEnEnumForDate(date);
|
||||
const ce = cartEvents?.find(e => e.dayofweek === dayOfWeek);
|
||||
return ce;
|
||||
}
|
||||
|
||||
useEffect(() => { setCartEvent(getCartEvent(date)); },
|
||||
[date, selectedEvents]);
|
||||
|
||||
// Update internal state when `events` prop changes
|
||||
useEffect(() => {
|
||||
@ -113,6 +123,7 @@ const AvCalendar = ({ publisherId, events, selectedDate }) => {
|
||||
//setDisplayedEvents(evts);
|
||||
}, [visibleRange, evts, currentView]);
|
||||
|
||||
// todo: review that
|
||||
const handlers = useSwipeable({
|
||||
onSwipedLeft: () => navigate('NEXT'),
|
||||
onSwipedRight: () => navigate('PREV'),
|
||||
@ -201,18 +212,13 @@ const AvCalendar = ({ publisherId, events, selectedDate }) => {
|
||||
return existingEvents;
|
||||
};
|
||||
|
||||
// Define min and max times
|
||||
const minHour = 8; // 8:00 AM
|
||||
const maxHour = 20; // 8:00 PM
|
||||
const minTime = new Date();
|
||||
minTime.setHours(minHour, 0, 0);
|
||||
const maxTime = new Date();
|
||||
maxTime.setHours(maxHour, 0, 0);
|
||||
const totalHours = maxHour - minHour;
|
||||
|
||||
// const totalHours = maxHour - minHour;
|
||||
|
||||
const handleSelect = ({ mode, start, end }) => {
|
||||
const startdate = typeof start === 'string' ? new Date(start) : start;
|
||||
const enddate = typeof end === 'string' ? new Date(end) : end;
|
||||
//we set the time to proper timezone
|
||||
const startdate = common.setTimezone(start);
|
||||
const enddate = common.setTimezone(end);
|
||||
|
||||
if (!start || !end) return;
|
||||
//readonly for past dates (ToDo: if not admin)
|
||||
@ -224,27 +230,10 @@ const AvCalendar = ({ publisherId, events, selectedDate }) => {
|
||||
end = common.setTimeHHmm(startdate, "23:59");
|
||||
}
|
||||
|
||||
const startMinutes = common.getTimeInMinutes(start);
|
||||
const endMinutes = common.getTimeInMinutes(end);
|
||||
|
||||
// Adjust start and end times to be within min and max hours
|
||||
if (startMinutes < common.getTimeInMinutes(common.setTimeHHmm(start, minHour))) {
|
||||
start = common.setTimeHHmm(start, minHour);
|
||||
}
|
||||
if (endMinutes > common.getTimeInMinutes(common.setTimeHHmm(end, maxHour))) {
|
||||
end = common.setTimeHHmm(end, maxHour);
|
||||
}
|
||||
|
||||
setDate(start);
|
||||
|
||||
// get exising events for the selected date
|
||||
//ToDo: properly fix this. filterEvents does not return the expcted results
|
||||
let existingEvents = filterEvents(evts, publisherId, startdate);
|
||||
// if existingEvents is empty - create new with the selected range
|
||||
// if (existingEvents.length === 0) {
|
||||
// existingEvents = [{ startTime: start, endTime: end }];
|
||||
// }
|
||||
console.log("handleSelect: " + existingEvents);
|
||||
setCartEvent(getCartEvent(date));
|
||||
setSelectedEvents(existingEvents);
|
||||
setIsModalOpen(true);
|
||||
};
|
||||
@ -509,8 +498,8 @@ const AvCalendar = ({ publisherId, events, selectedDate }) => {
|
||||
onSelectSlot={handleSelect}
|
||||
onSelectEvent={handleEventClick}
|
||||
style={{ height: '100%', width: '100%' }}
|
||||
min={minTime} // Set minimum time
|
||||
max={maxTime} // Set maximum time
|
||||
min={cartEvent?.startTime} // Set minimum time
|
||||
max={cartEvent?.endTime} // Set maximum time
|
||||
messages={messages}
|
||||
view={currentView}
|
||||
views={['month', 'week', 'agenda']}
|
||||
@ -541,6 +530,7 @@ const AvCalendar = ({ publisherId, events, selectedDate }) => {
|
||||
date={date}
|
||||
onDone={handleDialogClose}
|
||||
inline={true}
|
||||
cartEvent={cartEvent}
|
||||
// Pass other props as needed
|
||||
/>
|
||||
</div>
|
||||
|
Reference in New Issue
Block a user