TableLaporan.js 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  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, noBy = false }) {
  6. return (
  7. <div className="card b ">
  8. <div className="card-body card-over">
  9. <div className="margin-left-auto">
  10. <Link href="/app/pelaporan/search">
  11. <Button className="btn-login" color>
  12. <span className="font-color-white">
  13. Laporan baru
  14. </span>
  15. <img className="icon-laporan-baru" src="/static/img/icon-laporan-baru.png"></img>
  16. </Button>
  17. </Link>
  18. </div>
  19. {listData && (
  20. <Datatable options={
  21. {
  22. 'paging': true, responsive: false, ordering: true, keys: false,
  23. oLanguage: {
  24. sSearch: '<em class="fa fa-search"></em>',
  25. sLengthMenu: '_MENU_ records per page',
  26. info: 'Showing page _PAGE_ of _PAGES_',
  27. zeroRecords: 'Nothing found - sorry',
  28. infoEmpty: 'No records available',
  29. infoFiltered: '(filtered from _MAX_ total records)',
  30. oPaginate: {
  31. sNext: '<em class="fa fa-caret-right"></em>',
  32. sPrevious: '<em class="fa fa-caret-left"></em>',
  33. color: '#ffff'
  34. }
  35. },
  36. }
  37. }>
  38. <table className="table w-100" data-order='[[3, "desc"]]'>
  39. <thead>
  40. <tr>
  41. <th>No.Laporan</th>
  42. <th>Deskripsi Laporan</th>
  43. {status && <th>Status</th>}
  44. {!noBy && <th>Dibuat Oleh</th>}
  45. {/* <th>Created</th> */}
  46. <th></th>
  47. </tr>
  48. </thead>
  49. <tbody>
  50. {listData.map((data) => {
  51. return (
  52. <tr key={data._id}>
  53. <td>
  54. {/* <td>{data.no_laporan}</td> */}
  55. <div className="media align-items-center">
  56. <div className="media-body d-flex">
  57. <div>
  58. <h4>{data.no_laporan}</h4>
  59. <p>{moment(data.createdAt).format("MM-DD-YYYY")}</p>
  60. </div>
  61. </div>
  62. </div>
  63. </td>
  64. <td>
  65. <div className="table-desc">
  66. <div className="media align-items-center">
  67. <div className="media-body d-flex">
  68. <div>
  69. <h4 className="m-0">{data.pt.nama.length > 64 ? data.pt.nama.substring(0, 64) + "..." : data.pt.nama}</h4>
  70. {/* <h4 className="m-0">{data.pt.nama}</h4> */}
  71. {/* <p className="w-105">{data.keterangan.length > 150 ? data.keterangan.substring(0, 150) + "..." : data.keterangan}</p> */}
  72. <p className="w-105">{data.keterangan}</p>
  73. </div>
  74. </div>
  75. </div>
  76. </div>
  77. </td>
  78. {status ? (
  79. <td>
  80. <div className="badge badge-info">{data.role_data === "dikti" ? "Ditindaklanjuti DIKTI" : "Ditindaklanjuti LLDIKTI"}</div>
  81. </td>
  82. ) : (
  83. ""
  84. )}
  85. {!noBy && <td>{data.user.isPrivate ? "" : data.user.nama}</td>}
  86. <td>
  87. <div className="ml-auto">
  88. <Link
  89. href={{
  90. pathname: to,
  91. query: { id: data._id },
  92. }}
  93. >
  94. <Button className="btn-login" color>
  95. <span className="font-color-white">
  96. {linkName}
  97. </span>
  98. </Button>
  99. </Link>
  100. </div>
  101. </td>
  102. </tr>
  103. );
  104. })}
  105. </tbody>
  106. </table>
  107. </Datatable>
  108. )}
  109. </div>
  110. </div>
  111. );
  112. }
  113. export default TableLaporan;