index.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. import React, { Component } from "react";
  2. import BasePage from "@/components/Layout/BasePage";
  3. import { Row, Col, Navbar, NavItem, NavLink, NavbarBrand, NavbarToggler, Nav, Collapse, Jumbotron, Button } from "reactstrap";
  4. import ContentWrapper from "@/components/Layout/ContentWrapper";
  5. import Link from "next/link";
  6. import Login from "@/components/Main/Login";
  7. import { connect } from "react-redux";
  8. import { createPengunjung } from "@/actions/pengunjung";
  9. import ChartdataHome from "../../components/Main/ChartdataHome";
  10. import { getCsrf } from "../../actions/security";
  11. const menu = [
  12. {
  13. title: "Home",
  14. path: "/app",
  15. },
  16. {
  17. title: "Buat Laporan",
  18. path: "/laporan/new",
  19. },
  20. {
  21. title: "Pemantauan",
  22. path: "/pemantauan",
  23. },
  24. ];
  25. class App extends Component {
  26. constructor(props) {
  27. super(props);
  28. this.state = {
  29. isOpen: false,
  30. };
  31. }
  32. static getInitialProps = ({ pathname }) => ({ pathname });
  33. async componentDidMount() {
  34. const { token } = this.props;
  35. const getToken = await getCsrf();
  36. const _csrf = getToken.token;
  37. if (!token) {
  38. await createPengunjung(_csrf);
  39. }
  40. }
  41. toggleCollapse = () => {
  42. this.setState({
  43. isOpen: !this.state.isOpen,
  44. });
  45. };
  46. render() {
  47. return (
  48. <div>
  49. <h1>PTB</h1>
  50. <Navbar className="navbar-color" expand="md" dark>
  51. <NavbarBrand href="/">
  52. <img className="width-133" src="/static/img/Logo-Sidali.png" alt="App Logo" />
  53. </NavbarBrand>
  54. <NavbarToggler onClick={this.toggleCollapse} />
  55. <Collapse isOpen={this.state.isOpen} navbar>
  56. <Nav className="ml-auto" navbar>
  57. {menu.map((e) => (
  58. <NavItem active={e.path === this.props.pathname ? true : false}>
  59. <Link href={e.path}>
  60. <NavLink style={{ cursor: "pointer" }}>{e.title}</NavLink>
  61. </Link>
  62. </NavItem>
  63. ))}
  64. </Nav>
  65. </Collapse>
  66. </Navbar>
  67. <ContentWrapper>
  68. <Jumbotron>
  69. <Row className="home-1">
  70. <Col lg={8} className="d-flex flex-column justify-content-center align-items-start">
  71. <h1 className="display-5 home-2 txt-size">Sistem Informasi Pengendalian Kelembagaan Perguruan Tinggi</h1>
  72. <p className="lead txt-size">Layanan Pelaporan Pelanggaran Perguruan Tinggi Penyelenggara Pendidikan Tinggi</p>
  73. <hr className="my-4" />
  74. <p className="txt-size">Disediakan kepada masyarakat untuk melaporkan dugaan pelanggaran dalam penyelenggaraan pendidikan tinggi</p>
  75. <p className="lead">
  76. {/* <Link href="/laporan/new">
  77. <button className="btn btn-info btn-lg"><img className="icon-buatlaporan" src="/static/img/icon-buat-laporan.png" alt="icon"/>Buat Laporan</button>
  78. </Link> */}
  79. <Link href="/laporan/new">
  80. <span className="btn-radius">
  81. <Button color="" className="btn-labeled">
  82. <span className="btn-label">
  83. <img className="icon-buatlaporan" src="/static/img/icon-buat-laporan.png" alt="icon" />
  84. </span>
  85. <text className="text-button-home-1 font-color-white">Buat Laporan</text>
  86. </Button>
  87. </span>
  88. </Link>
  89. <Link href="/pemantauan">
  90. <span className="btn-radius">
  91. <Button color className="btn-labeled-2">
  92. <span className="btn-label">
  93. <img className="icon-pemantauan" src="/static/img/icon-pemantauan.png" alt="icon" />
  94. </span>
  95. <text className="text-button-home-1 font-color-white">Pemantauan</text>
  96. </Button>
  97. </span>
  98. </Link>
  99. </p>
  100. <div id="video-css">
  101. <video controls>
  102. <source src="/static/img/video/video_buat_laporan_v3.mp4" type="video/mp4" />
  103. </video>
  104. <div className="d-flex flex-column">
  105. <div>
  106. <ChartdataHome />
  107. </div>
  108. <div>
  109. <img className="pl-5" src="/static/img/ditbaga-logo.png" alt="applogo" />
  110. </div>
  111. </div>
  112. </div>
  113. </Col>
  114. <Col>
  115. <Login />
  116. {/* <ChartdataHome /> */}
  117. </Col>
  118. </Row>
  119. </Jumbotron>
  120. <span>Version 3.0 ~ 3.0</span>
  121. </ContentWrapper>
  122. </div>
  123. );
  124. }
  125. }
  126. App.Layout = BasePage;
  127. const MapStateToProps = (state) => ({ token: state.token });
  128. export default connect(MapStateToProps)(App);