TablePenetapanSanksi.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import React, { Component } from "react";
  2. import { Card, Table } from "reactstrap";
  3. import { getPelanggaran } from "@/actions/pelanggaran";
  4. import { connect } from "react-redux";
  5. export class TablePenetapanSanksi extends Component {
  6. checkedData = [];
  7. constructor(props) {
  8. super(props);
  9. this.state = {
  10. pelanggaran: null,
  11. checkedData: [],
  12. };
  13. }
  14. componentDidMount = async () => {
  15. const { token } = this.props;
  16. const pelanggaran = await getPelanggaran(token);
  17. this.setState({ pelanggaran });
  18. };
  19. onHandleChange = (evt) => {
  20. const checked = evt.target.checked;
  21. const item = evt.target.value;
  22. if (checked) this.checkedData.push(evt.target.value);
  23. else this.checkedData = this.checkedData.filter((e) => e != item);
  24. this.props.setCheckedData(this.checkedData);
  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>Jenis Sanksi Administratif : {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" value={jp._id} onChange={this.onHandleChange} />
  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. const mapStateToProps = (state) => ({ user: state.user, token: state.token });
  85. export default connect(mapStateToProps)(TablePenetapanSanksi);