From c5514ecf1d9d51f78325e3cef7f70ef9dc0b7dd8 Mon Sep 17 00:00:00 2001
From: albadrun <ra.giel1998@gmail.com>
Date: Sun, 28 Jul 2019 14:21:17 +0700
Subject: [PATCH] Show detail on conflict

---
 frontend/package-lock.json                    | 17 +++++++++++----
 .../src/containers/BuildSchedule/Checkout.js  | 13 ++++--------
 .../src/containers/BuildSchedule/Detail.js    | 21 +++++++++++--------
 .../src/containers/BuildSchedule/index.js     | 21 +++++++++++++------
 4 files changed, 44 insertions(+), 28 deletions(-)

diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index 093d597..fce1c8b 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -6891,7 +6891,8 @@
             },
             "code-point-at": {
               "version": "1.1.0",
-              "bundled": true
+              "bundled": true,
+              "optional": true
             },
             "concat-map": {
               "version": "0.0.1",
@@ -6900,7 +6901,8 @@
             },
             "console-control-strings": {
               "version": "1.1.0",
-              "bundled": true
+              "bundled": true,
+              "optional": true
             },
             "core-util-is": {
               "version": "1.0.2",
@@ -7003,7 +7005,8 @@
             },
             "inherits": {
               "version": "2.0.3",
-              "bundled": true
+              "bundled": true,
+              "optional": true
             },
             "ini": {
               "version": "1.3.5",
@@ -7013,6 +7016,7 @@
             "is-fullwidth-code-point": {
               "version": "1.0.0",
               "bundled": true,
+              "optional": true,
               "requires": {
                 "number-is-nan": "^1.0.0"
               }
@@ -7038,6 +7042,7 @@
             "minipass": {
               "version": "2.3.5",
               "bundled": true,
+              "optional": true,
               "requires": {
                 "safe-buffer": "^5.1.2",
                 "yallist": "^3.0.0"
@@ -7054,6 +7059,7 @@
             "mkdirp": {
               "version": "0.5.1",
               "bundled": true,
+              "optional": true,
               "requires": {
                 "minimist": "0.0.8"
               }
@@ -7126,7 +7132,8 @@
             },
             "number-is-nan": {
               "version": "1.0.1",
-              "bundled": true
+              "bundled": true,
+              "optional": true
             },
             "object-assign": {
               "version": "4.1.1",
@@ -7136,6 +7143,7 @@
             "once": {
               "version": "1.4.0",
               "bundled": true,
+              "optional": true,
               "requires": {
                 "wrappy": "1"
               }
@@ -7241,6 +7249,7 @@
             "string-width": {
               "version": "1.0.2",
               "bundled": true,
+              "optional": true,
               "requires": {
                 "code-point-at": "^1.0.0",
                 "is-fullwidth-code-point": "^1.0.0",
diff --git a/frontend/src/containers/BuildSchedule/Checkout.js b/frontend/src/containers/BuildSchedule/Checkout.js
index 5f11e5f..a7c94d5 100644
--- a/frontend/src/containers/BuildSchedule/Checkout.js
+++ b/frontend/src/containers/BuildSchedule/Checkout.js
@@ -4,7 +4,6 @@ import { useSelector } from "react-redux";
 import { isScheduleConflict } from "containers/SelectedCourses/utils";
 
 function Checkout({ onClickDetail }) {
-  //TODO: Account for agenda tambahan
   const isMobile = useSelector(state => state.appState.isMobile);
   const schedules = useSelector(state => state.schedules);
   if (!isMobile || schedules.length === 0) {
@@ -17,9 +16,7 @@ function Checkout({ onClickDetail }) {
   );
 
   function goToDetail() {
-    if (!conflict) {
-      onClickDetail();
-    }
+    onClickDetail(conflict);
   }
   return (
     <CheckoutContainer conflict={conflict} onClick={goToDetail}>
@@ -33,11 +30,9 @@ function Checkout({ onClickDetail }) {
             : "Tidak ada konflik jadwal."}
         </p>
       </div>
-      {!conflict && (
-        <div>
-          <h2>Lihat</h2>
-        </div>
-      )}
+      <div>
+        <h2>Lihat</h2>
+      </div>
     </CheckoutContainer>
   );
 }
diff --git a/frontend/src/containers/BuildSchedule/Detail.js b/frontend/src/containers/BuildSchedule/Detail.js
index a4a6894..c4ad66f 100644
--- a/frontend/src/containers/BuildSchedule/Detail.js
+++ b/frontend/src/containers/BuildSchedule/Detail.js
@@ -23,7 +23,7 @@ function transformSchedules(schedules) {
     .reduce((prev, now) => [...prev, ...now], []);
 }
 
-function Detail({ closeDetail }) {
+function Detail({ closeDetail, isConflict }) {
   const schedules = useSelector(state => state.schedules);
 
   function performCloseDetail() {
@@ -34,14 +34,17 @@ function Detail({ closeDetail }) {
     <Container>
       <ImageButton src={backImg} onClick={performCloseDetail} />
       <HideBodyOverflow />
-      <Schedule
-        schedule={{ schedule_items: transformSchedules(schedules) }}
-        pxPerMinute={0.3}
-        width="100%"
-        startHour={7}
-        endHour={21}
-        mobile
-      />
+      {console.log(isConflict)}
+      {!isConflict && (
+        <Schedule
+          schedule={{ schedule_items: transformSchedules(schedules) }}
+          pxPerMinute={0.3}
+          width="100%"
+          startHour={7}
+          endHour={21}
+          mobile
+        />
+      )}
       <SelectedCourses />
     </Container>
   );
diff --git a/frontend/src/containers/BuildSchedule/index.js b/frontend/src/containers/BuildSchedule/index.js
index 1e7ce05..2092b48 100644
--- a/frontend/src/containers/BuildSchedule/index.js
+++ b/frontend/src/containers/BuildSchedule/index.js
@@ -15,19 +15,19 @@ import Detail from "./Detail";
 function BuildSchedule({ history }) {
   const auth = useSelector(state => state.auth);
   const isMobile = useSelector(state => state.appState.isMobile);
-  const [isDetailOpened, setDetailOpened] = useState(false);
+  const [detailData, setDetailData] = useState(null);
 
   const dispatch = useDispatch();
 
   const [courses, setCourses] = useState(null);
-  const [isDetail, setIsDetail] = useState(null);
+  const [isCoursesDetail, setCoursesDetail] = useState(null);
 
   const fetchCourses = useCallback(
     async majorId => {
       dispatch(setLoading(true));
       const { data } = await getCourses(majorId);
       setCourses(data.courses);
-      setIsDetail(data.is_detail);
+      setCoursesDetail(data.is_detail);
       dispatch(reduxSetCourses(data.courses));
       setTimeout(() => dispatch(setLoading(false)), 1000);
     },
@@ -44,7 +44,7 @@ function BuildSchedule({ history }) {
       <Helmet title="Buat Jadwal" />
       <CoursePickerContainer isMobile={isMobile}>
         <h1>Buat Jadwal</h1>
-        {!isDetail && (
+        {!isCoursesDetail && (
           <InfoContent>
             Halo! Jadwal kamu belum detail nih, kalo kamu ingin membantu kami
             agar jadwal ini detail, kamu dapat mengubungi Ristek Fasilkom UI di
@@ -63,9 +63,18 @@ function BuildSchedule({ history }) {
       )}
       <Checkout
         isMobile={isMobile}
-        onClickDetail={() => setDetailOpened(true)}
+        onClickDetail={isConflict =>
+          setDetailData({ opened: true, isConflict: isConflict })
+        }
       />
-      {isDetailOpened && <Detail closeDetail={() => setDetailOpened(false)} />}
+      {detailData && detailData.opened && (
+        <Detail
+          closeDetail={() =>
+            setDetailData({ opened: false, isConflict: detailData.isConflict })
+          }
+          isConflict={detailData && detailData.isConflict}
+        />
+      )}
     </Container>
   );
 }
-- 
GitLab