Timeline.js 2.3 KB

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