TablePenetapanSanksi.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import React, { Component } from "react";
  2. import { Card, Table } from "reactstrap";
  3. import { getPelanggaran } from "@/actions/pelanggaran";
  4. export class TablePenetapanSanksi extends Component {
  5. constructor(props) {
  6. super(props);
  7. this.state = {
  8. tbljenisPelanggaran: [],
  9. pelanggaran: null,
  10. };
  11. }
  12. componentDidMount = async () => {
  13. const pelanggaran = await getPelanggaran();
  14. this.setState({ pelanggaran });
  15. };
  16. onHandleChange = (index) => {
  17. const { pelanggaran } = this.state;
  18. this.setState((prevState) => ({
  19. ...prevState,
  20. pelanggaran: {
  21. data: prevState.pelanggaran.data.map((item, i) => (index !== i ? item : { ...item, checked: !pelanggaran.data[index].checked })),
  22. },
  23. }));
  24. this.props.setCheckedData(pelanggaran.data.filter((e) => e.checked));
  25. };
  26. render() {
  27. const { pelanggaran } = this.state;
  28. return (
  29. <Card className="card-default">
  30. <Table bordered hover responsive>
  31. <thead>
  32. <tr>
  33. <th>No</th>
  34. <th>Jenis Pelanggaran</th>
  35. <th>Sanksi</th>
  36. <th></th>
  37. </tr>
  38. </thead>
  39. <tbody>
  40. {pelanggaran
  41. ? pelanggaran.data.map((jp, index) => (
  42. <tr key={jp._id}>
  43. <td>
  44. <label>{index + 1}</label>
  45. </td>
  46. <td>
  47. <div className="media align-items-center">
  48. <div className="media-body d-flex">
  49. <div>
  50. <p>{jp.pelanggaran}</p>
  51. <p>TMT : {jp.tmt_bulan} Bulan</p>
  52. <p>Level Pelanggaran : {jp.label_sanksi}</p>
  53. </div>
  54. </div>
  55. </div>
  56. </td>
  57. <td>
  58. <div className="media align-items-center">
  59. <div className="media-body d-flex">
  60. <div>
  61. <p>{jp.sanksi}</p>
  62. <p>Keterangan : {jp.keterangan_sanksi}</p>
  63. </div>
  64. </div>
  65. </div>
  66. </td>
  67. <td>
  68. <div className="checkbox c-checkbox">
  69. <label>
  70. <input type="checkbox" onChange={(e) => this.onHandleChange(index)} />
  71. <span className="fa fa-check"></span>
  72. </label>
  73. </div>
  74. </td>
  75. </tr>
  76. ))
  77. : ""}
  78. </tbody>
  79. </Table>
  80. </Card>
  81. );
  82. }
  83. }
  84. export default TablePenetapanSanksi;