index.js 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import React, { Component } from "react";
  2. import ContentWrapper from "@/components/Layout/ContentWrapper";
  3. import { Row, Col } from "reactstrap";
  4. import { getPelaporan } from "@/actions/pelaporan";
  5. import { getGraph, getExcel,getlaporanselesai } from "@/actions/graph";
  6. import CaseProgress from "@/components/PelaporanTuntas/CaseProgress";
  7. import TableLaporan from "@/components/PelaporanTuntas/TableLaporan";
  8. import { connect } from "react-redux";
  9. import Loader from "@/components/Common/Loader";
  10. import Link from "next/link";
  11. import Button from "reactstrap/lib/Button";
  12. import Router from "next/router";
  13. class PelaporanTuntas extends Component {
  14. constructor(props) {
  15. super(props);
  16. this.state = {
  17. pelaporan: {},
  18. graph: {},
  19. tahun: new Date().getFullYear(),
  20. laporanSelesai: {}
  21. };
  22. }
  23. componentDidMount = async () => {
  24. const { token } = this.props;
  25. let laporanSelesai = await getlaporanselesai(token);
  26. laporanSelesai = {...laporanSelesai, data: {
  27. ...laporanSelesai.data, laporan: [...laporanSelesai.data.laporan, ...laporanSelesai.data.sanksi], sanksi: null
  28. }}
  29. const pelaporan = await getPelaporan(token, { jadwal: true, aktif: false });
  30. const graph = await getGraph(this.props.token, { evaluasi: true, listJadwal: true, aktif: false });
  31. this.setState({ pelaporan, graph, laporanSelesai });
  32. };
  33. nextButton = async () => {
  34. const tahun = this.state.tahun + 1;
  35. const graph = await getGraph(this.props.token, { evaluasi: true, listJadwal: true, tahun });
  36. this.setState({ graph, tahun });
  37. };
  38. prevButton = async () => {
  39. const tahun = this.state.tahun - 1;
  40. const graph = await getGraph(this.props.token, { evaluasi: true, listJadwal: true, tahun });
  41. this.setState({ graph, tahun });
  42. };
  43. shouldComponentUpdate = (prevProps, prevState) => {
  44. if (prevState.graph !== this.state.graph) return true;
  45. };
  46. excel = () => {
  47. const url = getExcel(this.props.token, "Laporan", { tahun: this.state.tahun });
  48. Router.push(url);
  49. };
  50. render() {
  51. const { pelaporan, graph, laporanSelesai } = this.state;
  52. return (
  53. <ContentWrapper>
  54. <div className="content-heading">
  55. <span className="font-color-white">
  56. Pelaporan Tuntas
  57. </span>
  58. </div>
  59. <Row>
  60. <Col lg="4">{laporanSelesai?.data ? <CaseProgress data={laporanSelesai.data} nextButton={this.nextButton} prevButton={this.prevButton} tahun={this.state.tahun} excel={this.excel} /> : <Loader />}</Col>
  61. <Col lg="8">{laporanSelesai?.data?.laporan ? <TableLaporan status noBy listData={laporanSelesai.data.laporan} to="/app/tuntas/detail" linkName="Detail" /> : <Loader />}</Col>
  62. </Row>
  63. </ContentWrapper>
  64. );
  65. }
  66. }
  67. const mapStateToProps = (state) => ({ user: state.user, token: state.token });
  68. export default connect(mapStateToProps)(PelaporanTuntas);