import React, { useState } from "react";
import { formatDate } from "@fullcalendar/core";
import FullCalendar from "@fullcalendar/react";
import dayGridPlugin from "@fullcalendar/daygrid";
import timeGridPlugin from "@fullcalendar/timegrid";
import interactionPlugin from "@fullcalendar/interaction";
import { getEvents, createEventId } from "./TaskDataHandler";
import axiosInstance from "../../api/configs/AxiosConfig";
export default class Calendar extends React.Component {
state = {
weekendsVisible: true,
currentEvents: [],
};
render() {
return (
);
}
renderSidebar() {
return (
{/* Description Zone */}
Instructions
- Select dates and you will be prompted to create a new event
- Drag, drop, and resize events
- Click an event to delete it
{/* Toggle */}
{/* Show all task */}
All Events ({this.state.currentEvents.length})
{this.state.currentEvents.map(renderSidebarEvent)}
);
}
handleWeekendsToggle = () => {
this.setState({
weekendsVisible: !this.state.weekendsVisible,
});
};
handleDateSelect = selectInfo => {
let title = prompt("Please enter a new title for your event");
let calendarApi = selectInfo.view.calendar;
calendarApi.unselect(); // clear date selection
if (title) {
calendarApi.addEvent({
id: createEventId(),
title,
start: selectInfo.startStr,
end: selectInfo.endStr,
allDay: selectInfo.allDay,
});
}
};
handleEventClick = clickInfo => {
if (confirm(`Are you sure you want to delete the event '${clickInfo.event.title}'`)) {
axiosInstance
.delete(`todo/${clickInfo.event.id}/`)
.then(response => {
clickInfo.event.remove();
})
.catch(error => {
console.error("Error deleting Task:", error);
});
}
};
handleEvents = events => {
this.setState({
currentEvents: events,
});
};
}
function renderEventContent(eventInfo) {
return (
<>
{eventInfo.timeText}
{eventInfo.event.title}
>
);
}
function renderSidebarEvent(event) {
return (
{formatDate(event.start, { year: "numeric", month: "short", day: "numeric" })}
{event.title}
);
}