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