diff --git a/src/component/calendar/Calendar.jsx b/src/component/calendar/Calendar.jsx index be4f2ee..4524662 100644 --- a/src/component/calendar/Calendar.jsx +++ b/src/component/calendar/Calendar.jsx @@ -1,8 +1,13 @@ import React, { useCallback, useState } from "react"; +import { useQuery } from '@tanstack/react-query' + import BreadcrumbComBS from "../breadcrumb/BreadcrumbComBS"; import EventCalendar from "./EventCalendar"; import ExternalDraggable from "./ExternalDraggable"; +import { getCalendarEvents } from '../../services/services' +import queryKeys from '../../services/queryKeys' + export default function Calendar(){ @@ -11,6 +16,15 @@ export default function Calendar(){ // setDraggedEvent(event) // } + const {data, isFetching, isError, error} = useQuery({ + queryKey: queryKeys.calendar_events, + queryFn: () => getCalendarEvents() + }) + + const receievedEvents = data?.data?.bar_data + const category = receievedEvents?.category //EVENT CATEGORIES FROM API + const eventList = receievedEvents?.list //EVENT LIST FROM API + const events = [ {id: '1111', title: 'Family Vacation', color: 'fc-event-primary', start: new Date('2025-01-18')}, {id: '2222', title: 'Meeting In Office', color: 'fc-event-warning', start: new Date('2025-01-19')}, @@ -52,42 +66,56 @@ export default function Calendar(){
-
-
- {/* -

- Drag and drop your event or click in the calendar. -

*/} - {/* {dummyEvents.map((item, index) => ( -
- handleDragStart({...item}) - } - > - {item.title} -
- ))} */} - - {/*
- setRemoveAfterDrop(prev => !prev)} /> - -
*/} + {isFetching ? + <> +
+

Loading...

+ + : isError ? +
+

{error.message}

-
-
- + : + <> +
+
+ {/* +

+ Drag and drop your event or click in the calendar. +

*/} + {/* {dummyEvents.map((item, index) => ( +
+ handleDragStart({...item}) + } + > + {item.title} +
+ ))} */} + + {/*
+ setRemoveAfterDrop(prev => !prev)} /> + +
*/} +
-
+
+
+ +
+
+ + }
diff --git a/src/component/calendar/EventCalendar.jsx b/src/component/calendar/EventCalendar.jsx index fe3da40..73c17b2 100644 --- a/src/component/calendar/EventCalendar.jsx +++ b/src/component/calendar/EventCalendar.jsx @@ -1,4 +1,4 @@ -import React, { useCallback, useState } from 'react'; +import React, { useCallback, useEffect, useState } from 'react'; import { formatDate } from '@fullcalendar/core'; import FullCalendar from '@fullcalendar/react'; import dayGridPlugin from '@fullcalendar/daygrid'; @@ -6,9 +6,9 @@ import timeGridPlugin from '@fullcalendar/timegrid'; import interactionPlugin from '@fullcalendar/interaction'; import { INITIAL_EVENTS, createEventId } from './event-utils'; -export default function EventCalendar({draggedEvent, setDraggedEvent, removeAfterDrop, setDummyEvents}) { +export default function EventCalendar({removeAfterDrop, eventList}) { const [weekendsVisible, setWeekendsVisible] = useState(true); - const [currentEvents, setCurrentEvents] = useState(INITIAL_EVENTS); + const [currentEvents, setCurrentEvents] = useState([]); function handleWeekendsToggle() { setWeekendsVisible(!weekendsVisible); @@ -51,9 +51,9 @@ export default function EventCalendar({draggedEvent, setDraggedEvent, removeAfte ...event } setCurrentEvents(prev => ([...prev, newEvent])) - if(removeAfterDrop){ - setDummyEvents(prev => prev.filter(item => item.title != newEvent.title)) - } + // if(removeAfterDrop){ + // setDummyEvents(prev => prev.filter(item => item.title != newEvent.title)) + // } } } @@ -78,13 +78,18 @@ export default function EventCalendar({draggedEvent, setDraggedEvent, removeAfte // setCurrentEvents(events); } + useEffect(()=>{ + let newEventList = eventList.map(item => ({...item, start: new Date(item?.start)})) + setCurrentEvents(newEventList) + },[eventList]) + return (
diff --git a/src/component/calendar/ExternalDraggable.jsx b/src/component/calendar/ExternalDraggable.jsx index fff304d..9b84e69 100644 --- a/src/component/calendar/ExternalDraggable.jsx +++ b/src/component/calendar/ExternalDraggable.jsx @@ -1,9 +1,16 @@ import React, { useEffect, useRef } from "react"; import { Draggable } from "@fullcalendar/interaction"; -const ExternalDraggable = ({dummyEvents}) => { +const ExternalDraggable = ({category}) => { const eventContainerRef = useRef(null); + const events = [ + {id: '1111', title: 'Family Vacation', color: 'fc-event-primary', start: new Date('2025-01-18')}, + {id: '2222', title: 'Meeting In Office', color: 'fc-event-warning', start: new Date('2025-01-19')}, + {id: '3333', title: 'Client Call', color: 'fc-event-danger', start: new Date('2025-01-22')}, + {id: '4444', title: 'Interview', color: 'fc-event-success', start: new Date('2025-01-1')} +] + useEffect(() => { // Make the external events draggable const draggable = new Draggable(eventContainerRef.current, { @@ -21,11 +28,15 @@ const ExternalDraggable = ({dummyEvents}) => { return (
- {dummyEvents.map((item, index) => ( -
- {item.title} -
- ))} + {category && category.map((item, index) => { + let color = index % 4 === 0 ? 'fc-event-success' : index % 3 === 0 ? 'fc-event-danger' : index % 2 === 0 ? 'fc-event-warning' : 'fc-event-primary' + return ( +
+ {item.description} +
+ ) + } + )}
); }; diff --git a/src/component/calendar/event-utils.js b/src/component/calendar/event-utils.js index b4453d8..70f85e8 100644 --- a/src/component/calendar/event-utils.js +++ b/src/component/calendar/event-utils.js @@ -2,19 +2,19 @@ let eventGuid = 0; let todayStr = new Date().toISOString().replace(/T.*$/, ''); // YYYY-MM-DD of today export const INITIAL_EVENTS = [ - // { - // id: createEventId(), - // title: 'All-day event', - // start: new Date('2025-01-19'), - // end: new Date('2025-01-20'), - // // color: 'blue' - // }, - // { - // id: createEventId(), - // title: 'Timed event', - // start: todayStr + 'T12:00:00', - // // color: 'red' - // }, + { + id: createEventId(), + title: 'All-day event', + start: new Date('2025-01-19'), + end: new Date('2025-01-20'), + // color: 'blue' + }, + { + id: createEventId(), + title: 'Timed event', + start: todayStr + 'T12:00:00', + // color: 'red' + }, ]; export function createEventId() { diff --git a/src/component/layout/layoutcom/UserHeader.jsx b/src/component/layout/layoutcom/UserHeader.jsx index 88d210c..da6df48 100644 --- a/src/component/layout/layoutcom/UserHeader.jsx +++ b/src/component/layout/layoutcom/UserHeader.jsx @@ -89,7 +89,7 @@ export default function UserHeader(){ Inbox 6 - + Settings diff --git a/src/css/style.scss b/src/css/style.scss index 39f9815..93b5a74 100644 --- a/src/css/style.scss +++ b/src/css/style.scss @@ -138,14 +138,28 @@ $event-padding: 10px; .fc-today-button.fc-button, .fc-timeGridWeek-button.fc-button-active, .fc-timeGridDay-button.fc-button-active, .fc-dayGridMonth-button.fc-button-active{ - color: #fff!important; + color: #fff !important; border: none; - background-color: #8E54E9!important; + background-color: #8E54E9 !important; text-transform: capitalize !important; } +.fc-h-event, .fc-event.fc-event-draggable.fc-event-start.fc-event-end.fc-daygrid-event, .fc-event.fc-event-draggable.fc-event-start.fc-event-end.fc-daygrid-event{ padding: 10px 2px !important; + background-color: #3788d8 !important; + color: white; } + +.fc-theme-standard .fc-popover{ + overflow-y: auto !important; + // height: calc(100% - 50px); +} + +.fc .fc-more-popover .fc-popover-body { + overflow-y: auto; + height: 100px !important; +} + /* END OF CALENDER STYLE */ \ No newline at end of file diff --git a/src/services/queryKeys.js b/src/services/queryKeys.js index 374cebe..0de8804 100644 --- a/src/services/queryKeys.js +++ b/src/services/queryKeys.js @@ -4,7 +4,8 @@ const queryKeys = { recentAction: ['recent-action'], product: ['product-data'], product_url: ['product_url'], - myproduct_provision: ['myproduct_provision'] + myproduct_provision: ['myproduct_provision'], + calendar_events: ['calendar_events'] } export default queryKeys \ No newline at end of file diff --git a/src/services/services.js b/src/services/services.js index c843224..7cfbdb1 100644 --- a/src/services/services.js +++ b/src/services/services.js @@ -101,6 +101,11 @@ export const topBar = () => { return getAuxEnd(`/panel/account/bar`) } +// FUNCTION TO GET CALENDAR EVENTS +export const getCalendarEvents = () => { + return getAuxEnd(`/panel/account/calendar`) +} + // FUNCTION TO GET DASHBOARD RECENT ACTIONS SECTION export const recentActions = () => { return getAuxEnd(`/panel/account/actions`)