From c3a4b03eb2bfa2ec563f9850d7260a2898f2a9fe Mon Sep 17 00:00:00 2001 From: danieldeng2 <danieldeng223@gmail.com> Date: Thu, 27 Aug 2020 14:09:58 +0100 Subject: [PATCH] Change order of module outline --- .../organisms/LeftBarModule/index.tsx | 22 ++++--- src/components/pages/ModuleOverview/index.tsx | 36 +---------- .../pages/ModuleOverview/style.module.scss | 44 -------------- src/components/pages/ModuleProgress/index.tsx | 54 +++++++++++++++++ .../pages/ModuleProgress/style.module.scss | 59 +++++++++++++++++++ src/components/pages/StandardView/index.tsx | 5 ++ 6 files changed, 135 insertions(+), 85 deletions(-) create mode 100644 src/components/pages/ModuleProgress/index.tsx create mode 100644 src/components/pages/ModuleProgress/style.module.scss diff --git a/src/components/organisms/LeftBarModule/index.tsx b/src/components/organisms/LeftBarModule/index.tsx index 8f68199db..9cab049bc 100644 --- a/src/components/organisms/LeftBarModule/index.tsx +++ b/src/components/organisms/LeftBarModule/index.tsx @@ -1,7 +1,7 @@ import React from "react"; import LeftBar from "components/organisms/LeftBar"; import SideBarTabGroup from "components/molecules/SideBarTabGroup"; -import { faUserFriends } from "@fortawesome/free-solid-svg-icons"; +import { faUserFriends, faList, faTasks, faSpinner, faArchive, faHighlighter } from "@fortawesome/free-solid-svg-icons"; import { useParams } from "react-router-dom"; import WorkDueGroup from "components/molecules/WorkDueGroup"; @@ -30,15 +30,23 @@ const LeftBarModule: React.FC = () => { let outlineButtons = [ { title: "Overview", - activeURL: `/modules/${id}/overview` - }, - { - title: "Feedback", - activeURL: `/modules/${id}/feedback` + activeURL: `/modules/${id}/overview`, + icon: faList, + }, + { + title: "Progress", + activeURL: `/modules/${id}/progress`, + icon: faSpinner, }, { title: "Resources", - activeURL: `/modules/${id}/resources` + activeURL: `/modules/${id}/resources`, + icon: faArchive, + }, + { + title: "Feedback", + activeURL: `/modules/${id}/feedback`, + icon: faHighlighter, }, { title: "Piazza", diff --git a/src/components/pages/ModuleOverview/index.tsx b/src/components/pages/ModuleOverview/index.tsx index 41fffcfe2..1a4c6a00b 100644 --- a/src/components/pages/ModuleOverview/index.tsx +++ b/src/components/pages/ModuleOverview/index.tsx @@ -9,9 +9,6 @@ import PageButtonGroup from "components/molecules/PageButtonGroup"; import { request } from "../../../utils/api"; import { api, methods } from "../../../constants/routes"; -import ProgressBar from "react-bootstrap/ProgressBar"; -import Accordion from "react-bootstrap/Accordion"; -import Card from "react-bootstrap/Card"; import TutorCard from "components/atoms/TutorCard"; import tutorImage1 from "assets/images/tutor-1.png"; @@ -106,42 +103,13 @@ const ModuleOverview: React.FC = () => { </ul> </p> - <h4 className={classNames(styles.moduleSectionHeader)}>Links</h4> - <PageButtonGroup buttons={buttons} style={{ marginTop: "1.25rem" }} /> - <h4 className={classNames(styles.moduleSectionHeader)}>Module Leaders</h4> <Row> - {leaderCards} </Row> - <h4 className={classNames(styles.moduleSectionHeader)}>Progress</h4> - { <ProgressBar - now={50} - className={styles.progress} - /> } - <Accordion - defaultActiveKey="0" - style={{ marginTop: "1.25rem", borderRadius: ".5rem" }} - className={styles.progressAccordion} - > - {[...Array(9)].map((e, i) => ( - <Card className={styles.weekCard}> - <Accordion.Toggle - className={styles.weekCardHeader} - as={Card.Header} - eventKey={`${i}`} - > - Week {i + 1} - </Accordion.Toggle> - <Accordion.Collapse eventKey={`${i}`}> - <Card.Body className={styles.weekCardBody}> - Hello! I'm the body of week {i + 1} - </Card.Body> - </Accordion.Collapse> - </Card> - ))} - </Accordion> + <h4 className={classNames(styles.moduleSectionHeader)}>Links</h4> + <PageButtonGroup buttons={buttons} style={{ marginTop: "1.25rem" }} /> </> ); }; diff --git a/src/components/pages/ModuleOverview/style.module.scss b/src/components/pages/ModuleOverview/style.module.scss index 09456cf28..0df877f84 100644 --- a/src/components/pages/ModuleOverview/style.module.scss +++ b/src/components/pages/ModuleOverview/style.module.scss @@ -8,50 +8,6 @@ margin-top: 1rem; } -.progress { - background-color: $gray-100; - margin-top: 1.25rem; - border-radius: 0.5rem; - height: 0.75rem; -} - -:global(.progress-bar) { - background-color: $teal-500; - border-radius: 0.5rem; -} - -.progressAccordion { - border-radius: 0.5rem; -} - -.weekCard { - background: $white; - border-width: 0rem; - margin-bottom: 0.5rem; - transition: 0.2s transform; - border-radius: 0.5rem !important; -} - -.weekCardHeader { - background: $gray-100; - transition: 0.2s background; - -webkit-transition: 0.2s background; - -moz-transition: 0.2s background; - border-radius: 0.5rem !important; - font-size: 1.125rem; - margin-bottom: 0px !important; - padding: 0.5rem 0.75rem; - border-width: 0px; -} - -.weekCardHeader:hover { - background: $gray-200; -} - -.weekCardBody { - border-radius: 0.5rem; -} - @media (max-width: 62rem) { } diff --git a/src/components/pages/ModuleProgress/index.tsx b/src/components/pages/ModuleProgress/index.tsx new file mode 100644 index 000000000..feb3157f4 --- /dev/null +++ b/src/components/pages/ModuleProgress/index.tsx @@ -0,0 +1,54 @@ +import React, { useEffect, useState } from "react"; +import Dandruff from "components/molecules/Dandruff"; +import { useParams } from "react-router-dom"; +import styles from "./style.module.scss"; +import classNames from "classnames"; + +import { request } from "../../../utils/api"; +import { api, methods } from "../../../constants/routes"; + +import ProgressBar from "react-bootstrap/ProgressBar"; +import Accordion from "react-bootstrap/Accordion"; +import Card from "react-bootstrap/Card"; +import MyBreadcrumbs from "components/atoms/MyBreadcrumbs"; + +const ModuleProgress: React.FC = () => { + let { id } = useParams(); + let moduleCode = id.startsWith("CO") ? id.slice(2) : id; + + return ( + <> + <MyBreadcrumbs /> + <h3>Progress</h3> + + <ProgressBar + now={50} + className={styles.progress} + /> + <Accordion + defaultActiveKey="0" + style={{ marginTop: "1.25rem", borderRadius: ".5rem" }} + className={styles.progressAccordion} + > + {[...Array(9)].map((e, i) => ( + <Card className={styles.weekCard}> + <Accordion.Toggle + className={styles.weekCardHeader} + as={Card.Header} + eventKey={`${i}`} + > + Week {i + 1} + </Accordion.Toggle> + <Accordion.Collapse eventKey={`${i}`}> + <Card.Body className={styles.weekCardBody}> + Hello! I'm the body of week {i + 1} + </Card.Body> + </Accordion.Collapse> + </Card> + ))} + </Accordion> + </> + ); +}; + +export default ModuleProgress; \ No newline at end of file diff --git a/src/components/pages/ModuleProgress/style.module.scss b/src/components/pages/ModuleProgress/style.module.scss new file mode 100644 index 000000000..09456cf28 --- /dev/null +++ b/src/components/pages/ModuleProgress/style.module.scss @@ -0,0 +1,59 @@ +@import "assets/scss/custom"; + +.moduleSectionHeader { + margin-top: 1.875rem; +} + +.moduleParagraph { + margin-top: 1rem; +} + +.progress { + background-color: $gray-100; + margin-top: 1.25rem; + border-radius: 0.5rem; + height: 0.75rem; +} + +:global(.progress-bar) { + background-color: $teal-500; + border-radius: 0.5rem; +} + +.progressAccordion { + border-radius: 0.5rem; +} + +.weekCard { + background: $white; + border-width: 0rem; + margin-bottom: 0.5rem; + transition: 0.2s transform; + border-radius: 0.5rem !important; +} + +.weekCardHeader { + background: $gray-100; + transition: 0.2s background; + -webkit-transition: 0.2s background; + -moz-transition: 0.2s background; + border-radius: 0.5rem !important; + font-size: 1.125rem; + margin-bottom: 0px !important; + padding: 0.5rem 0.75rem; + border-width: 0px; +} + +.weekCardHeader:hover { + background: $gray-200; +} + +.weekCardBody { + border-radius: 0.5rem; +} + +@media (max-width: 62rem) { +} + +@media (min-width: 62rem) { +} diff --git a/src/components/pages/StandardView/index.tsx b/src/components/pages/StandardView/index.tsx index dbc6e9c71..793c8f60b 100644 --- a/src/components/pages/StandardView/index.tsx +++ b/src/components/pages/StandardView/index.tsx @@ -20,6 +20,7 @@ import Container from "react-bootstrap/esm/Container"; import ExamRubrics from "../Exams/Rubrics"; import ExamGrading from "../Exams/Grading"; import ExamPastPapers from "../Exams/PastPapers"; +import ModuleProgress from "../ModuleProgress"; interface StandardViewProps { toggledLeft: boolean; @@ -82,6 +83,10 @@ const StandardView: React.FC<StandardViewProps> = ({ <ModuleOverview /> </Route> + <Route path="/modules/:id/progress"> + <ModuleProgress /> + </Route> + <Route path="/modules/:id/resources/:scope?" render={props => ( -- GitLab