Timeline.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import moment from "moment";
  2. import { API_URL } from "@/env";
  3. function Timeline({ data, noFile = false }) {
  4. const date = data && [...new Set(data.map((e) => moment(e.createdAt).format("DD MMMM YYYY")))];
  5. return (
  6. <ul className="timeline-alt">
  7. {date.map((value) => (
  8. <>
  9. <li className="timeline-separator" data-datetime={value}></li>
  10. {data
  11. .filter((e) => moment(e.createdAt).format("DD MMMM YYYY") === value)
  12. .map((data, i) => (
  13. <>
  14. <li className={data.role === "PT" ? "timeline-inverted" : ""}>
  15. <div className={`timeline-badge ${data.role === "PT" ? " danger" : "info"}`}>
  16. <em className={`fas fa-${data.role === "PT" ? "graduation-cap" : "file"}`}></em>
  17. </div>
  18. <div className="timeline-card">
  19. <div className="popover right">
  20. <div className="arrow"></div>
  21. <div className="popover-body">
  22. <div className="d-flex align-items-center mb-3">
  23. <img
  24. className="mr-3 rounded-circle thumb48"
  25. src={`/static/img${data.user.role.id === "2022" ? "/univ-avatar.png" : data.user.role.id === "2023" ? "/user/user.png" : "/logo-single.png"}`}
  26. alt="Avatar"
  27. />
  28. <p className="m-0">
  29. <strong>{data.user.nama}</strong>
  30. <br />
  31. {data.keterangan}
  32. <br />
  33. <p className="text-muted">{moment(data.createdAt).format("hh:mm")}</p>
  34. </p>
  35. </div>
  36. {!noFile && data.dokumen.length ? (
  37. <>
  38. <p className="text-muted my-2">Dokumen</p>
  39. {data.dokumen.map((e) => (
  40. <div className="media bb p-2">
  41. <div className="media-body">
  42. <p className="m-0">
  43. <a href={e.path} target="_blank" download={e.judul}>
  44. <strong>{e.judul}</strong>
  45. </a>
  46. </p>
  47. </div>
  48. </div>
  49. ))}
  50. </>
  51. ) : (
  52. ""
  53. )}
  54. </div>
  55. </div>
  56. </div>
  57. </li>
  58. </>
  59. ))}
  60. </>
  61. ))}
  62. <li className="timeline-end">
  63. <a className="timeline-badge">
  64. <em className="fa fa-plus"></em>
  65. </a>
  66. </li>
  67. </ul>
  68. );
  69. }
  70. export default Timeline;