TablePenetapanSanksi.js 2.4 KB

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