TableLaporan.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. import Datatable from "@/components/Tables/Datatable";
  2. import { Button } from "reactstrap";
  3. import Link from "next/link";
  4. import moment from "moment";
  5. function TableLaporan({ listData, to, linkName, status = false }) {
  6. const data = listData;
  7. return (
  8. <div className="card b">
  9. <div className="card-body">
  10. <Datatable options={{ responsive: true }}>
  11. <table className="table w-100">
  12. <thead>
  13. <tr>
  14. <th>#ID</th>
  15. <th>Deskripsi Laporan</th>
  16. {status ? <th>Status</th> : ""}
  17. <th>Created</th>
  18. <th></th>
  19. </tr>
  20. </thead>
  21. <tbody>
  22. {Array.isArray(listData) ? (
  23. listData.length ? (
  24. listData.map((data) => {
  25. if (data.pelaporan) {
  26. return (
  27. <tr key={data.pelaporan._id}>
  28. <td>{data.pelaporan._number}</td>
  29. <td className="text-nowrap">
  30. <div className="media align-items-center">
  31. <div className="media-body d-flex">
  32. <div>
  33. <h4 className="m-0">Universitas Satyagama</h4>
  34. <p>{data.pelaporan.description}</p>
  35. </div>
  36. </div>
  37. </div>
  38. </td>
  39. {status ? <td>{data.pelaporan.status}</td> : ""}
  40. <td>{moment(data.pelaporan.createdAt).fromNow()}</td>
  41. <td>
  42. <div className="ml-auto">
  43. <Link
  44. href={{
  45. pathname: to,
  46. query: { ptId: data.pelaporan.pt_id, number: data.pelaporan._number },
  47. }}
  48. >
  49. <Button color="primary" size="sm">
  50. {linkName}
  51. </Button>
  52. </Link>
  53. </div>
  54. </td>
  55. </tr>
  56. );
  57. } else {
  58. return (
  59. <tr key={data._id}>
  60. <td>{data._number}</td>
  61. <td className="text-nowrap">
  62. <div className="media align-items-center">
  63. <div className="media-body d-flex">
  64. <div>
  65. <h4 className="m-0">Universitas Satyagama</h4>
  66. <p>{data.description}</p>
  67. </div>
  68. </div>
  69. </div>
  70. </td>
  71. {status ? <td>{data.status}</td> : ""}
  72. <td>{moment(data.createdAt).fromNow()}</td>
  73. <td>
  74. <div className="ml-auto">
  75. <Link
  76. href={{
  77. pathname: to,
  78. query: { ptId: data.pt_id, number: data._number },
  79. }}
  80. >
  81. <Button color="primary" size="sm">
  82. {linkName}
  83. </Button>
  84. </Link>
  85. </div>
  86. </td>
  87. </tr>
  88. );
  89. }
  90. })
  91. ) : (
  92. ""
  93. )
  94. ) : listData ? (
  95. <tr key={listData._id}>
  96. <td>{listData._number}</td>
  97. <td className="text-nowrap">
  98. <div className="media align-items-center">
  99. <div className="media-body d-flex">
  100. <div>
  101. <h4 className="m-0">Universitas Satyagama</h4>
  102. <p>{listData.description}</p>
  103. </div>
  104. </div>
  105. </div>
  106. </td>
  107. {status ? <td>{listData.status}</td> : ""}
  108. <td>{moment(listData.createdAt).fromNow()}</td>
  109. <td>
  110. <div className="ml-auto">
  111. <Link
  112. href={{
  113. pathname: to,
  114. query: { ptId: listData.pt_id, number: listData._number },
  115. }}
  116. >
  117. <Button color="primary" size="sm">
  118. {linkName}
  119. </Button>
  120. </Link>
  121. </div>
  122. </td>
  123. </tr>
  124. ) : (
  125. ""
  126. )}
  127. </tbody>
  128. </table>
  129. </Datatable>
  130. </div>
  131. </div>
  132. );
  133. }
  134. export default TableLaporan;