TableRiwayatCatatan.js 10 KB

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