ChartDonutDisk.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. import React, { Component } from "react";
  2. import ContentWrapper from "@/components/Layout/ContentWrapper";
  3. import { Container, Row, Col, Card, CardHeader, CardBody } from "reactstrap";
  4. import Sparkline from "@/components/Common/Sparklines.js";
  5. import MorrisChart from "@/components/Charts/Morris.js";
  6. import { getDiskSpace } from "../../actions/disk";
  7. import moment from "moment";
  8. class ChartDonutDisk extends Component {
  9. constructor(props) {
  10. super(props);
  11. this.state = {
  12. use_disk: undefined,
  13. free_disk: undefined,
  14. loading: true,
  15. };
  16. }
  17. componentDidMount = async () => {
  18. const { token } = this.props;
  19. const dataDisk = await getDiskSpace(token);
  20. try {
  21. const dataDisk = await getDiskSpace(token);
  22. const use_disk = parseFloat(`${dataDisk?.data?.map(e => e.use_percent)}`.replace('%', ''));
  23. const free_disk = parseFloat(100 - use_disk);
  24. this.setState({ use_disk, free_disk, loading: false });
  25. } catch (error) {
  26. console.error("Error fetching disk space data: ", error);
  27. this.setState({ loading: false });
  28. }
  29. this.setState({ dataDisk })
  30. };
  31. ChartDonut = {
  32. options: {
  33. element: 'morris-donut',
  34. colors: ['#3e3a8e', '#fad732'],
  35. resize: true,
  36. formatter: function (value, data) {
  37. return value + '%';
  38. }
  39. },
  40. };
  41. render() {
  42. const { use_disk, free_disk, loading, dataDisk } = this.state;
  43. console.log(dataDisk?.data?.map(e => e.timestamp))
  44. if (loading) {
  45. return <div>Loading...</div>;
  46. }
  47. const chartData = [
  48. {
  49. label: "Terpakai",
  50. color: "#3e3a8e",
  51. value: use_disk
  52. },
  53. {
  54. label: "Tidak Terpakai",
  55. color: "#b0adfe",
  56. value: free_disk
  57. }
  58. ];
  59. return (
  60. <Col lg={12}>
  61. <Card className="card-default">
  62. <CardBody>
  63. <MorrisChart type={'Donut'} id="morris-donut" options={this.ChartDonut.options} data={chartData} className="flot-chart" />
  64. </CardBody>
  65. <div align="center" className=" mb-2 mr-3 ml-3">
  66. <span>Data Statistik Kapasitas Hardisk Per {moment(dataDisk?.data?.map(e => e.timestamp)).utc().format('HH:mm')} WIB {moment().locale("id").format("DD MMMM YYYY")}</span>
  67. </div>
  68. </Card>
  69. </Col>
  70. );
  71. }
  72. }
  73. export default ChartDonutDisk;