import React, { Component } from "react"; import ContentWrapper from "@/components/Layout/ContentWrapper"; import { Card, CardBody, CardHeader, CardTitle } from "reactstrap"; import { updateJadwal } from "../../actions/penjadwalan"; import { getPelaporan } from "../../actions/pelaporan"; import Link from "next/link"; import Scrollable from "@/components/Common/Scrollable"; import FullCalendar from "@fullcalendar/react"; import dayGridPlugin from "@fullcalendar/daygrid"; import timeGridPlugin from "@fullcalendar/timegrid"; import interactionPlugin, { Draggable } from "@fullcalendar/interaction"; import listPlugin from "@fullcalendar/list"; import bootstrapPlugin from "@fullcalendar/bootstrap"; import events from "./calendar.events"; class Calendar extends Component { calendarEvents = events; calendarPlugins = [interactionPlugin, dayGridPlugin, timeGridPlugin, listPlugin, bootstrapPlugin]; calendarHeader = { left: "prev,next today", center: "title", right: "dayGridMonth,timeGridWeek,timeGridDay,listWeek", }; constructor(props) { super(props); this.state = { selectedEvent: null, evRemoveOnDrop: true, evNewName: "", externalEvents: [], dataLaporan: [], larporan: {}, dataEvent: [], }; } async componentDidMount() { /* initialize the external events */ new Draggable(this.refs.externalEventsList, { itemSelector: ".fce-event", eventData: function (eventEl) { return { title: eventEl.innerText.trim(), }; }, }); const dataLaporan = await getPelaporan({ penjadwalan: true }); const { data } = await getPelaporan({ number: this.props.query.number, ptId: this.props.query.ptId }); this.setState({ dataLaporan }); this.getDataEvent(); // const cek = this.state.dataLaporan.data.filter((e) => e._number === this.props.query.number && e.pt_id == this.props.query.ptId)[0]; this.setState({ laporan: data[0] }); let color = "#" + Math.floor(Math.random() * 16777215).toString(16); if (data[0].penjadwalan) { color = data[0].penjadwalan.background_color; } this.setState({ externalEvents: [{ id: this.props.query.number, color: color, name: "Jadwal Pemeriksaan - BI:" + this.props.query.number }] }); } getDataEvent = () => { const dataEvent = this.state.dataLaporan.data .filter((e) => e.penjadwalan) .map((e) => ({ title: e.penjadwalan.title, start: new Date(e.penjadwalan.from_date), end: new Date(e.penjadwalan.to_date), backgroundColor: e.penjadwalan.background_color, //red borderColor: e.penjadwalan.background_color, })); this.setState({ dataEvent }); }; dayClick = (date) => { this.setState({ selectedEvent: { date: date.dateStr, }, }); }; addEvent(event) { this.calendarEvents.push(event); } handleEventReceive = (info) => { var styles = getComputedStyle(info.draggedEl); info.event.setProp("backgroundColor", styles.backgroundColor); info.event.setProp("borderColor", styles.borderColor); this.handleEventCalendar(info); }; handleEventCalendar = async ({ event }) => { const number = this.props.query.number; const ptId = this.props.query.ptId; const data = { title: event.title, from_date: event.start, to_date: event.end || event.start, background_color: event.backgroundColor, }; const update = await updateJadwal({ number, ptId }, data); }; render() { const { externalEvents, selectedEvent, laporan } = this.state; return (
Jadwal Pemeriksaan Format pembuatan jadwal pemeriksaan v.0.1
Daftar Pemeriksaan
{externalEvents.map((ev) => (
{ev.name}
))}
{/* Aside card */}
Detail Laporan
Nomor Pelaporan 1155937274981
Perguruan Tinggi Satyagama
Keterangan Laporan

tes

File Pendukung
database.controller.js
baground-lg.png
picture.controller.js
applicat-diagrams.docx
database.controller.js
database.controller.js

Open repository

{/* end Aside card */}
{/* START calendar */}
); } } export default Calendar;