CaseProgress.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. import { Pagination, Progress, PaginationItem, PaginationLink, Button } from "reactstrap";
  2. import Sparkline from "@/components/Common/Sparklines";
  3. import { Container, Row, Col, Card, CardHeader, CardBody } from "reactstrap";
  4. import FlotChart from "@/components/Charts/Flot.js";
  5. import { ChartSpline, ChartArea, ChartBar, ChartBarStacked, ChartDonut, ChartLine, ChartPie } from "@/components/Config/flot.setup.js";
  6. import Datatable from "@/components/Tables/Datatable";
  7. import { useState, useEffect } from "react";
  8. import Dropdown from 'react-bootstrap/Dropdown';
  9. function CaseProgress({ data, nextButton, prevButton, tahun, newLaporan, excelSemua, excelMenu }) {
  10. const laporan_pertahun = data.laporan_perTahun;
  11. const [chartData, setChartData] = useState([
  12. {
  13. // "label": "sales",
  14. color: "#287DAD",
  15. data: [],
  16. },
  17. ]);
  18. useEffect(() => {
  19. laporan_pertahun.forEach((e) => {
  20. chartData[0].data.push([convertMonth(e._id.bulan), e.jumlah_laporan]);
  21. });
  22. }, []);
  23. const convertMonth = (int) => {
  24. switch (int) {
  25. case 1:
  26. return "Januari";
  27. break;
  28. case 2:
  29. return "Februari";
  30. break;
  31. case 3:
  32. return "Maret";
  33. break;
  34. case 4:
  35. return "April";
  36. break;
  37. case 5:
  38. return "Mei";
  39. break;
  40. case 6:
  41. return "Juni";
  42. break;
  43. case 7:
  44. return "Juli";
  45. break;
  46. case 8:
  47. return "Agustus";
  48. break;
  49. case 9:
  50. return "September";
  51. break;
  52. case 10:
  53. return "Oktober";
  54. break;
  55. case 11:
  56. return "November";
  57. break;
  58. case 12:
  59. return "Desember";
  60. break;
  61. default:
  62. break;
  63. }
  64. };
  65. const Rekapitulasi = {
  66. data: [
  67. {
  68. label: "Pelaporan masuk",
  69. color: "#287DAD",
  70. data: [data.jumlah_laporan.ditutup + data.jumlah_laporan.dikti + data.jumlah_laporan.lldikti],
  71. },
  72. {
  73. label: "Pelaporan selesai",
  74. color: "#52D489",
  75. data: [data.jumlah_laporan.ditutup],
  76. },
  77. ],
  78. options: {
  79. series: {
  80. pie: {
  81. show: true,
  82. innerRadius: 0,
  83. label: {
  84. show: true,
  85. radius: 0.8,
  86. formatter: function (label, series) {
  87. return (
  88. '<div class="flot-pie-label">' +
  89. //label + ' : ' +
  90. Math.round(series.percent) +
  91. "%</div>"
  92. );
  93. },
  94. background: {
  95. opacity: 0.8,
  96. color: "#222",
  97. },
  98. },
  99. },
  100. },
  101. },
  102. };
  103. return (
  104. <div className="card b">
  105. <div className="card-body bb">
  106. <div className="margin-botton-20 text-tahun">
  107. <Button className="float-left button-hidden icon-next" onClick={prevButton}>
  108. <img src="/static/img/previous.png"></img>
  109. </Button>
  110. <Button className="float-left button-hidden icon-next" onClick={nextButton}>
  111. <img src="/static/img/next.png"></img>
  112. </Button>
  113. <b className="text-tahun">Tahun {tahun} </b>
  114. <Dropdown className="float-right">
  115. <Dropdown.Toggle variant="success" id="dropdown-basic">
  116. Unduh
  117. </Dropdown.Toggle>
  118. <Dropdown.Menu>
  119. <Dropdown.Item onClick={excelMenu}>Unduh dokumen pelaporan</Dropdown.Item>
  120. <Dropdown.Item onClick={excelSemua}>Unduh dokumen semua menu</Dropdown.Item>
  121. </Dropdown.Menu>
  122. </Dropdown>
  123. {/* <Button className="float-right button-hidden icon-eksport" onClick={excel}>
  124. <img src="/static/img/eksport.png"></img>
  125. </Button> */}
  126. </div>
  127. <div className="header-1">
  128. <h2 className="card-title-1">Perkembangan</h2>
  129. </div>
  130. <div className="w-400">
  131. <FlotChart options={ChartBar.options} data={chartData} className="flot-chart" height="200px" />
  132. </div>
  133. </div>
  134. <div className="card-body">
  135. <div className="header-1">
  136. <h2 className="card-title-1">Rekapitulasi</h2>
  137. </div>
  138. <FlotChart options={Rekapitulasi.options} data={Rekapitulasi.data} className="flot-chart" height="250px" />
  139. </div>
  140. <div className="card-body">
  141. <div className="header-1">
  142. <h2 className="card-title-1">Laporan Terbaru</h2>
  143. </div>
  144. {newLaporan.map((value) => (
  145. <h5 className="card-title text-left py-2 bg-gray border-radius-login">
  146. <b className="f-size">{`${value.no_laporan} - ${value.pt.nama}`}</b>
  147. </h5>
  148. ))}
  149. </div>
  150. </div>
  151. );
  152. }
  153. export default CaseProgress;