CaseProgress.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. import React, { Component, useState, useEffect } from "react";
  2. import { Progress } from "reactstrap";
  3. import Sparkline from "@/components/Common/Sparklines";
  4. import { Container, Row, Col, Card, CardHeader, CardBody } from "reactstrap";
  5. import FlotChart from "@/components/Charts/Flot.js";
  6. import { ChartSpline, ChartArea, ChartBarStacked, ChartDonut, ChartLine } from "@/components/Config/flot.setup.js";
  7. import Datatable from "@/components/Tables/Datatable";
  8. import MorrisChart from "@/components/Charts//Morris";
  9. import { Button } from "reactstrap";
  10. import Dropdown from 'react-bootstrap/Dropdown';
  11. function CaseProgress({ data, nextButton, prevButton, tahun, excelSemua, excelMenu,user }) {
  12. const Perkembangan = {
  13. data: [
  14. {
  15. // "label": "Complete",
  16. color: "#1EA457",
  17. data: [["Sudah ada jadwal", data.jadwal.hasJadwal]],
  18. },
  19. {
  20. // "label": "In Progress",
  21. color: "#FD4233",
  22. data: [["Belum ada jadwal", data.jadwal.notHasJadwal]],
  23. },
  24. ],
  25. options: {
  26. series: {
  27. bars: {
  28. align: "center",
  29. lineWidth: 0,
  30. show: true,
  31. barWidth: 0.2,
  32. fill: 0.9,
  33. },
  34. },
  35. grid: {
  36. borderColor: "#eee",
  37. borderWidth: 1,
  38. hoverable: true,
  39. backgroundColor: "#fcfcfc",
  40. },
  41. tooltip: true,
  42. tooltipOpts: {
  43. content: (label, x, y) => x + " : " + y,
  44. },
  45. xaxis: {
  46. tickColor: "#fcfcfc",
  47. mode: "categories",
  48. },
  49. yaxis: {
  50. // position: 'right' or 'left'
  51. tickColor: "#eee",
  52. },
  53. shadowSize: 0,
  54. },
  55. };
  56. const Rekapitulasi = {
  57. data: [
  58. {
  59. label: "Sudah ada jadwal",
  60. color: "#1EA457",
  61. data: [data.jadwal.hasJadwal],
  62. },
  63. {
  64. label: "Belum ada jadwal",
  65. color: "#FD4233",
  66. data: [data.jadwal.notHasJadwal],
  67. },
  68. ],
  69. options: {
  70. series: {
  71. pie: {
  72. show: true,
  73. innerRadius: 0,
  74. label: {
  75. show: true,
  76. radius: 0.8,
  77. formatter: function (label, series) {
  78. return (
  79. '<div class="flot-pie-label">' +
  80. //label + ' : ' +
  81. Math.round(series.percent) +
  82. "%</div>"
  83. );
  84. },
  85. background: {
  86. opacity: 0.8,
  87. color: "#222",
  88. },
  89. },
  90. },
  91. },
  92. },
  93. };
  94. return (
  95. <div className="card b">
  96. <div className="card-body bb">
  97. <div className="margin-botton-20 text-tahun">
  98. <Button className="float-left button-hidden icon-next" onClick={prevButton}>
  99. <img src="/static/img/previous.png"></img>
  100. </Button>
  101. <Button className="float-left button-hidden icon-next" onClick={nextButton}>
  102. <img src="/static/img/next.png"></img>
  103. </Button>
  104. <b className="text-tahun">Tahun {tahun}</b>
  105. {user?.role?.id !== 2071 && ( // ⬅️ sembunyikan dropdown untuk role 2071
  106. <Dropdown className="float-right">
  107. <Dropdown.Toggle variant="success" id="dropdown-basic">
  108. Unduh
  109. </Dropdown.Toggle>
  110. <Dropdown.Menu>
  111. <Dropdown.Item onClick={excelMenu}>Unduh dokumen pelaporan</Dropdown.Item>
  112. <Dropdown.Item onClick={excelSemua}>Unduh dokumen semua menu</Dropdown.Item>
  113. </Dropdown.Menu>
  114. </Dropdown>
  115. )}
  116. </div>
  117. <div className="header-1">
  118. <h2 className="card-title-1">Perkembangan</h2>
  119. </div>
  120. <div className="w-401">
  121. <FlotChart options={Perkembangan.options} data={Perkembangan.data} className="flot-chart" height="200px" />
  122. </div>
  123. </div>
  124. <div className="card-body">
  125. <div className="header-1">
  126. <h2 className="card-title-1">Rekapitulasi</h2>
  127. </div>
  128. <FlotChart options={Rekapitulasi.options} data={Rekapitulasi.data} className="flot-chart" height="250px" />
  129. </div>
  130. </div>
  131. );
  132. }
  133. export default CaseProgress;