TableRiwayatCatatan.js 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. import Datatable from "@/components/Tables/Datatable";
  2. import { Button, Dropdown, DropdownToggle, DropdownMenu, DropdownItem, Modal, ModalBody, ModalFooter, ModalHeader } from "reactstrap";
  3. import Link from "next/link";
  4. import moment from "moment";
  5. import { ENV } from '../../env.js';
  6. import CopyToClipboard from "react-copy-to-clipboard";
  7. import { useState } from "react";
  8. import { deleteCatatan } from "../../actions/catatan.js";
  9. import { toast } from "react-toastify";
  10. import { useSelector } from "react-redux";
  11. import Router from "next/router";
  12. function TableRiwayatCatatan({ listData, query, editFilePage, newFilePage, readOnly, role }) {
  13. const [dropdownState, setDropdownState] = useState(false);
  14. const [seledtedID, setSelectedID] = useState("")
  15. const [modalIsOpen, setModalIsOpen] = useState(false)
  16. const token = useSelector((state) => state.token)
  17. const toggleDD = (dd) => {
  18. setDropdownState(prevState => ({
  19. ...prevState,
  20. [dd]: !prevState[dd]
  21. }));
  22. };
  23. const setmodal = (id) => {
  24. setModalIsOpen(!modalIsOpen)
  25. setSelectedID(id)
  26. }
  27. return (
  28. <div className="card b ">
  29. <Modal isOpen={modalIsOpen} >
  30. <ModalBody>Apakah Anda yakin akan menghapus catatan ini?</ModalBody>
  31. <ModalFooter>
  32. <Button color className="btn-login" onClick={async () => {
  33. if (role === 2024) {
  34. Swal.fire({
  35. icon: 'error',
  36. title: 'Oops...',
  37. html: 'Maaf anda tidak memiliki akses untuk menyelesaikan<p> proses ini.</p>',
  38. confirmButtonColor: "#3e3a8e",
  39. confirmButtonText: 'Oke'
  40. })
  41. } else {
  42. await toast.promise(deleteCatatan(token, seledtedID), {
  43. pending: "Loading",
  44. success: "Success",
  45. error: "Error",
  46. });
  47. Router.push(`/app/perpanjangan-sanksi/detail?id=${query.id}`);
  48. setModalIsOpen(false)
  49. }
  50. }}>
  51. <span className="font-color-white">Ya</span>
  52. </Button>
  53. <Button color className="btn-v2" onClick={setmodal}>
  54. Tidak
  55. </Button>
  56. </ModalFooter>
  57. </Modal>
  58. <div className=" card-header">
  59. <div className=" card-title">Riwayat Catatan</div>
  60. </div>
  61. <div className=" card-body">
  62. <div className="margin-right-auto float-right">
  63. <Link
  64. href={{
  65. pathname: newFilePage,
  66. query: { id: query?.id },
  67. }}
  68. >
  69. <Button className="btn-login" color>
  70. <img className="icon-laporan-baru" src="/static/img/icon-laporan-baru.png"></img>
  71. <span className="font-color-white m-2">
  72. Tambah Catatan
  73. </span>
  74. </Button>
  75. </Link>
  76. </div>
  77. <Datatable options={{
  78. responsive: false, ordering: true,
  79. // paging: false,
  80. searching: false,
  81. // ordering: false,
  82. // info: false,
  83. }}>
  84. <table className="table w-100" data-order='[[0, "desc"]]'>
  85. <thead>
  86. <tr>
  87. <th>Tanggal dibuat</th>
  88. <th>Nama File</th>
  89. <th>Terakhir diedit</th>
  90. <th>Aksi</th>
  91. </tr>
  92. </thead>
  93. <tbody>
  94. {listData?.length
  95. ? listData.map((data, i) => (
  96. <tr>
  97. <td>{moment(data.createdAt).format("D MMMM YYYY")}</td>
  98. <td>
  99. {data.judul}
  100. </td>
  101. <td>{moment(data.updatedAt).format("D MMMM YYYY")}</td>
  102. <td
  103. // style={{ width: "30%" }}
  104. >
  105. <span className="">
  106. <Dropdown isOpen={dropdownState[`ddSplit${i}`]}
  107. toggle={() => toggleDD(`ddSplit${i}`)} >
  108. <DropdownToggle
  109. data-toggle="dropdown"
  110. tag="span"
  111. >
  112. <Button color className="btn-v3">
  113. Info
  114. </Button>
  115. {/* <em className="fas fa-ellipsis-v" /> */}
  116. </DropdownToggle>
  117. <DropdownMenu>
  118. {ENV === "local" &&
  119. <CopyToClipboard
  120. text={`http://localhost:3000/signature/letter/${data?._id}`}
  121. options={{ asHtml: true }}
  122. ><DropdownItem>
  123. Link Dokumen Berita Acara
  124. </DropdownItem>
  125. </CopyToClipboard>
  126. }
  127. {ENV === "development" &&
  128. <CopyToClipboard
  129. text={`http://dev.sidali.kemdikbud.go.id/signature/letter/${data?._id}`}
  130. options={{ asHtml: true }}
  131. ><DropdownItem>
  132. Link Dokumen Berita Acara
  133. </DropdownItem>
  134. </CopyToClipboard>
  135. }
  136. <Link
  137. href={{
  138. pathname: readOnly,
  139. query: { id: data?._id },
  140. }}
  141. >
  142. <DropdownItem>
  143. <span className=" font-color-black">Lihat</span>
  144. </DropdownItem>
  145. </Link>
  146. <Link
  147. href={{
  148. pathname: editFilePage,
  149. query: { id: data?._id },
  150. }}
  151. ><DropdownItem>
  152. <span className=" font-color-black">Edit</span>
  153. </DropdownItem>
  154. </Link>
  155. <DropdownItem onClick={() => { setmodal(data._id) }}>
  156. <span >
  157. Hapus
  158. </span>
  159. </DropdownItem>
  160. </DropdownMenu>
  161. </Dropdown>
  162. </span>
  163. </td>
  164. </tr>
  165. )) : (
  166. ""
  167. )}
  168. </tbody>
  169. </table>
  170. </Datatable>
  171. </div>
  172. </div>
  173. )
  174. }
  175. export default TableRiwayatCatatan;