yazid138 3 年之前
父节点
当前提交
1f52e08d44

+ 6 - 6
components/Layout/Menu.js

@@ -3,6 +3,12 @@ const Menu = [
 		heading: "Main Navigation",
 		translate: "sidebar.heading.HEADER",
 	},
+	{
+		name: "Pemantauan",
+		path: "/app/pemantauan",
+		icon: "icon-notebook",
+		translate: "sidebar.nav.PEMANTAUAN",
+	},
 	{
 		name: "Pelaporan",
 		path: "/app/pelaporan",
@@ -31,12 +37,6 @@ const Menu = [
 		heading: "Dikti Ristek/LLDIKTI",
 		translate: "sidebar.heading.DIKTI_RISTEK",
 	},
-	{
-		name: "Pemantauan",
-		path: "/app/pemantauan",
-		icon: "icon-notebook",
-		translate: "sidebar.nav.PEMANTAUAN",
-	},
 	{
 		name: "Keberatan",
 		path: "/app/keberatan",

+ 4 - 2
components/Layout/SidebarUserBlock.js

@@ -8,10 +8,12 @@ class SidebarUserBlock extends Component {
 	state = {
 		showUserBlock: true,
 		user: {},
+		role: "",
 	};
 
 	componentDidMount() {
 		this.setState({ user: JSON.parse(sessionStorage.getItem("user")) });
+		this.setState({ role: JSON.parse(sessionStorage.getItem("user")).peran[0].peran.nama });
 	}
 
 	componentDidUpdate(oldProps) {
@@ -21,7 +23,7 @@ class SidebarUserBlock extends Component {
 	}
 
 	render() {
-		const { user } = this.state;
+		const { user, role } = this.state;
 		return (
 			<Collapse id="user-block" isOpen={this.state.showUserBlock}>
 				<div>
@@ -36,7 +38,7 @@ class SidebarUserBlock extends Component {
 						{/* Name and Job */}
 						<div className="user-block-info">
 							<span className="user-block-name">{user.nama}</span>
-							{/* <span className="user-block-role">{user.nama}</span> */}
+							<span className="user-block-role">{role}</span>
 						</div>
 					</div>
 				</div>

+ 1 - 1
components/Main/DetailSanksi.js

@@ -77,7 +77,7 @@ function DetailSanksi({ data, noTitle = false }) {
 															<div>
 																<p>{jp.pelanggaran}</p>
 																<p>TMT : {jp.tmt_bulan} Bulan</p>
-																<p>Level Pelanggaran : {jp.label_sanksi}</p>
+																<p>Jenis Sanksi Administratif : {jp.label_sanksi}</p>
 															</div>
 														</div>
 													</div>

+ 46 - 39
components/Main/Timeline.js

@@ -1,50 +1,57 @@
 import moment from "moment";
 
 function Timeline({ data }) {
+	const date = [...new Set(data.data.map((e) => moment(e.createdAt).format("DD MMMM YYYY")))];
 	return (
 		<ul className="timeline">
-			{data.data.map((data, i) => (
+			{date.map((value) => (
 				<>
-					<li className="timeline-separator" data-datetime={moment(data.createdAt).format("DD MMMM YYYY")}></li>
-					<li className={data.role === "PT" ? "timeline-inverted" : ""}>
-						<div className="timeline-badge info">
-							<em className="far fa-file"></em>
-						</div>
-
-						<div className="timeline-card">
-							<div className="popover right">
-								<div className="arrow"></div>
-								<div className="popover-body">
-									<div className="d-flex align-items-center mb-3">
-										<img className="mr-3 rounded-circle thumb48" src="/static/img/user/admin.png" alt="Avatar" />
-										<p className="m-0">
-											<strong>{data.role}</strong>
-											<br />
-											{data.description}
-										</p>
+					<li className="timeline-separator" data-datetime={value}></li>
+					{data.data
+						.filter((e) => moment(e.createdAt).format("DD MMMM YYYY") === value)
+						.map((data, i) => (
+							<>
+								<li className={data.role === "PT" ? "timeline-inverted" : ""}>
+									<div className="timeline-badge info">
+										<em className="far fa-file"></em>
 									</div>
-									{data.data.files ? (
-										<>
-											<p className="text-muted my-2">Dokumen</p>
-											{data.data.files.map((e) => (
-												<div className="media bb p-2">
-													<div className="media-body">
-														<p className="m-0">
-															<a href={`data:${e.type};base64, ${Buffer.from(e.data).toString("base64")}`} download={e.name}>
-																<strong>{e.name}</strong>
-															</a>
-														</p>
-													</div>
+
+									<div className="timeline-card">
+										<div className="popover right">
+											<div className="arrow"></div>
+											<div className="popover-body">
+												<div className="d-flex align-items-center mb-3">
+													<img className="mr-3 rounded-circle thumb48" src="/static/img/user/admin.png" alt="Avatar" />
+													<p className="m-0">
+														<strong>{data.role}</strong>
+														<br />
+														{data.description}
+													</p>
 												</div>
-											))}
-										</>
-									) : (
-										""
-									)}
-								</div>
-							</div>
-						</div>
-					</li>
+												{data.data.files ? (
+													<>
+														<p className="text-muted my-2">Dokumen</p>
+														{data.data.files.map((e) => (
+															<div className="media bb p-2">
+																<div className="media-body">
+																	<p className="m-0">
+																		<a href={`data:${e.type};base64, ${Buffer.from(e.data).toString("base64")}`} download={e.name}>
+																			<strong>{e.name}</strong>
+																		</a>
+																	</p>
+																</div>
+															</div>
+														))}
+													</>
+												) : (
+													""
+												)}
+											</div>
+										</div>
+									</div>
+								</li>
+							</>
+						))}
 				</>
 			))}
 

+ 50 - 44
components/PT/Timeline.js

@@ -1,54 +1,60 @@
 import moment from "moment";
 
-function Timeline({ data }) {
+function Timeline({ data, dataPelaporan }) {
+	const jadwal = dataPelaporan;
+	const date = [...new Set(data.data.map((e) => moment(e.createdAt).format("DD MMMM YYYY")))];
 	return (
 		<ul className="timeline">
-			{data.data
-				.filter((e) => e.for_pt)
-				.map((data, i) => (
-					<>
-						<li className="timeline-separator" data-datetime={moment(data.createdAt).format("DD MMMM YYYY")}></li>
-						<li className={data.role === "PT" ? "timeline-inverted" : ""}>
-							<div className="timeline-badge info">
-								<em className="far fa-file"></em>
-							</div>
+			{date.map((value) => (
+				<>
+					<li className="timeline-separator" data-datetime={value}></li>
+					{data.data
+						.filter((e) => e.for_pt && moment(e.createdAt).format("DD MMMM YYYY") === value)
+						.map((data, i) => (
+							<>
+								<li className={data.role === "PT" ? "timeline-inverted" : ""}>
+									<div className="timeline-badge info">
+										<em className="far fa-file"></em>
+									</div>
 
-							<div className="timeline-card">
-								<div className="popover right">
-									<div className="arrow"></div>
-									<div className="popover-body">
-										<div className="d-flex align-items-center mb-3">
-											<img className="mr-3 rounded-circle thumb48" src="/static/img/user/admin.png" alt="Avatar" />
-											<p className="m-0">
-												<strong>{data.role}</strong>
-												<br />
-												{data.description}
-											</p>
+									<div className="timeline-card">
+										<div className="popover right">
+											<div className="arrow"></div>
+											<div className="popover-body">
+												<div className="d-flex align-items-center mb-3">
+													<img className="mr-3 rounded-circle thumb48" src="/static/img/user/admin.png" alt="Avatar" />
+													<p className="m-0">
+														<strong>{data.role}</strong>
+														<br />
+														{data.description}
+													</p>
+												</div>
+												{data.data.files ? (
+													<>
+														<p className="text-muted my-2">Dokumen</p>
+														{data.data.files.map((e) => (
+															<div className="media bb p-2">
+																<div className="media-body">
+																	<p className="m-0">
+																		<a href={`data:${e.type};base64, ${Buffer.from(e.data).toString("base64")}`} download={e.name}>
+																			<strong>{e.name}</strong>
+																		</a>
+																	</p>
+																</div>
+															</div>
+														))}
+													</>
+												) : (
+													""
+												)}
+											</div>
 										</div>
-										{data.data.files ? (
-											<>
-												<p className="text-muted my-2">Dokumen</p>
-												{data.data.files.map((e) => (
-													<div className="media bb p-2">
-														<div className="media-body">
-															<p className="m-0">
-																<a href={`data:${e.type};base64, ${Buffer.from(e.data).toString("base64")}`} download={e.name}>
-																	<strong>{e.name}</strong>
-																</a>
-															</p>
-														</div>
-													</div>
-												))}
-											</>
-										) : (
-											""
-										)}
 									</div>
-								</div>
-							</div>
-						</li>
-					</>
-				))}
+								</li>
+							</>
+						))}
+				</>
+			))}
 
 			<li className="timeline-end">
 				<a className="timeline-badge">

+ 2 - 2
json/dataUser.js

@@ -20,7 +20,7 @@ module.exports = [
 				},
 				peran: {
 					id: 1,
-					nama: "Admin Lemkerma",
+					nama: "Admin Dikti",
 					menu: null,
 				},
 			},
@@ -30,7 +30,7 @@ module.exports = [
 		id: "2A080F42-AE7F-407B-976E-DE5FA87BD278",
 		username: "satyagama",
 		password: "123",
-		nama: "Univertisa Satyagama",
+		nama: "Universitas Satyagama",
 		no_telp: "02157946063",
 		no_hp: "197903302008011007",
 		jabatan: null,

+ 5 - 3
pages/app/pt/pemantauan.js

@@ -3,6 +3,7 @@ import ContentWrapper from "@/components/Layout/ContentWrapper";
 import Header from "@/components/Main/Header";
 import DetailPT from "@/components/Main/DetailPT";
 import { getLog } from "@/actions/log";
+import { getPelaporan } from "@/actions/pelaporan";
 import { Row, Col } from "reactstrap";
 import Timeline from "@/components/PT/Timeline";
 
@@ -13,18 +14,19 @@ class Pemantauan extends Component {
 
 	static async getInitialProps({ query }) {
 		const log = await getLog({ ptId: "0BCE4DB7-B207-445D-8D03-0C54B7688252" });
-		return { log };
+		const pelaporan = await getPelaporan({ ptId: "0BCE4DB7-B207-445D-8D03-0C54B7688252" });
+		return { log, pelaporan };
 	}
 
 	render() {
-		const { log } = this.props;
+		const { log, pelaporan } = this.props;
 		return (
 			<ContentWrapper unwrap>
 				<Header />
 				<div className="p-3">
 					<Row>
 						<Col xl="9">
-							<Timeline data={log} />
+							<Timeline data={log} dataPelaporan={pelaporan.data[0]} />
 						</Col>
 						<Col xl="3">
 							<DetailPT />

+ 2 - 2
pages/index.js

@@ -1,9 +1,9 @@
 import React from "react";
 import Router from "next/router";
 
-//const defaultPage = 'login';
+const defaultPage = 'login';
 //const defaultPage = 'app/profile';
-const defaultPage = "app/pemantauan";
+//const defaultPage = "app/pemantauan";
 //const defaultPage = 'singleview';
 
 export default class extends React.Component {