TablePenetapanSanksi.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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 { user } = this.props;
  16. const pelanggaran = await getPelanggaran();
  17. if (user.peran[0].peran.id === 2021) pelanggaran.data = pelanggaran.data.filter((e) => e.level_sanksi === 1);
  18. this.setState({ pelanggaran });
  19. };
  20. onHandleChange = (evt) => {
  21. const checked = evt.target.checked;
  22. const item = evt.target.value;
  23. if (checked) this.checkedData.push(evt.target.value);
  24. else this.checkedData = this.checkedData.filter((e) => e != item);
  25. this.props.setCheckedData(this.checkedData);
  26. };
  27. render() {
  28. const { pelanggaran } = this.state;
  29. return (
  30. <Card className="card-default">
  31. <Table bordered hover responsive>
  32. <thead>
  33. <tr>
  34. <th>No</th>
  35. <th>Jenis Pelanggaran</th>
  36. <th>Sanksi</th>
  37. <th></th>
  38. </tr>
  39. </thead>
  40. <tbody>
  41. {pelanggaran
  42. ? pelanggaran.data.map((jp, index) => (
  43. <tr key={jp._id}>
  44. <td>
  45. <label>{index + 1}</label>
  46. </td>
  47. <td>
  48. <div className="media align-items-center">
  49. <div className="media-body d-flex">
  50. <div>
  51. <p>{jp.pelanggaran}</p>
  52. <p>TMT : {jp.tmt_bulan} Bulan</p>
  53. <p>Jenis Sanksi Administratif : {jp.label_sanksi}</p>
  54. </div>
  55. </div>
  56. </div>
  57. </td>
  58. <td>
  59. <div className="media align-items-center">
  60. <div className="media-body d-flex">
  61. <div>
  62. <p>{jp.sanksi}</p>
  63. <p>Keterangan : {jp.keterangan_sanksi}</p>
  64. </div>
  65. </div>
  66. </div>
  67. </td>
  68. <td>
  69. <div className="checkbox c-checkbox">
  70. <label>
  71. <input type="checkbox" value={jp._id} onChange={this.onHandleChange} />
  72. <span className="fa fa-check"></span>
  73. </label>
  74. </div>
  75. </td>
  76. </tr>
  77. ))
  78. : ""}
  79. </tbody>
  80. </Table>
  81. </Card>
  82. );
  83. }
  84. }
  85. const mapStateToProps = (state) => ({ user: state.user });
  86. export default connect(mapStateToProps)(TablePenetapanSanksi);