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 Laporan 1155937274981
Perguruan Tinggi Universitas Satyagama
Jenis Pelanggaran
  • Lorem ipsum dolor sit amet.
  • Lorem, ipsum dolor.
  • Lorem ipsum dolor sit.
Keterangan Laporan

Lorem ipsum dolor sit amet consectetur adipisicing elit. Dicta iusto facilis ab animi molestiae totam quibusdam eveniet aperiam vitae! Voluptas, laboriosam tempore? Vitae, modi asperiores.

File Pendukung
database.controller.js
baground-lg.png
picture.controller.js
applicat-diagrams.docx
database.controller.js
database.controller.js
{/* end Aside card */}
{/* START calendar */}
); } } export default Calendar;