Skip to content
This repository has been archived by the owner on Jul 30, 2023. It is now read-only.

E2333 : Implement Courses with React #9

Open
wants to merge 17 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added public/assets/actions/360-dashboard-24.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/actions/Copy-icon-24.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/actions/add-assignment-24.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/actions/add-participant-24.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/actions/add-ta-24.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/actions/create-teams-24.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/actions/delete-icon-24.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/actions/edit-icon-24.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 8 additions & 0 deletions src/App.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
import React from "react";
import { createBrowserRouter, RouterProvider } from "react-router-dom";
import AssignmentForm from "./components/Assignments/AssignmentForm/AssignmentForm";
import Rubrics from "./components/Assignments/AssignmentForm/Rubrics";
import Assignments from "./components/Assignments/Assignments";
import Home from "./components/Layout/Home";
import RootLayout from "./components/Layout/Root";
import Users from "./components/Users/Users";
import Courses from "./components/Courses/Courses";

function App() {
const router = createBrowserRouter([
Expand All @@ -12,6 +16,10 @@ function App() {
children: [
{ index: true, element: <Home /> },
{ path: "users", element: <Users /> },
{ path: "assignments", element: <Assignments /> },
{ path: "assignments/new", element: <AssignmentForm /> },
{ path: "assignments/card", element: <Rubrics /> },
{ path: "courses", element: <Courses />},
],
},
]);
Expand Down
120 changes: 120 additions & 0 deletions src/components/Assignments/AssignmentForm/AssignmentForm.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
import { Form, Formik } from "formik";
import React, { useState } from "react";
import { Button, Col, Container, Row, Tab, Tabs } from "react-bootstrap";
import * as Yup from "yup";
import Badges from "./Badges";
import Calibration from "./Calibration";
import DueDate from "./DueDate";
import {
General,
generalInitialValues,
generalValidationSchema,
} from "./General";
import Miscellaneous from "./Miscellaneous";
import ReviewStrategy, {
reviewStrategyInitialValues,
reviewStrategyValidationSchema,
} from "./ReviewStrategy";
import Rubrics, { rubricInitialValues } from "./Rubrics";
import { topicInitialValues, Topics, topicValidationSchema } from "./Topics";

const initialValues = {
...generalInitialValues,
...topicInitialValues,
...reviewStrategyInitialValues,
...rubricInitialValues,
};

const validationSchema = Yup.object().shape({
...generalValidationSchema,
...topicValidationSchema,
...reviewStrategyValidationSchema,
});

const onSubmit = (values, submitProps) => {
console.log("Form data", values);
console.log("Submit props", submitProps);
submitProps.setSubmitting(false);
submitProps.resetForm();
};

const AssignmentForm = () => {
const [key, setKey] = useState("general");

return (
<Container fluid className="px-md-4">
<Row className="my-md-2">
<Col md={{ span: 4, offset: 4 }}>
<h2>Create New Assignment</h2>
</Col>
</Row>
<Row>
<Formik
initialValues={initialValues}
onSubmit={onSubmit}
validationSchema={validationSchema}
validateOnChange={false}
enableReinitialize={true}
>
{(formik) => {
console.log("Formik props", formik.values);
return (
<Form>
<Tabs
fill
id="controlled-tab"
activeKey={key}
onSelect={(k) => setKey(k)}
className="mb-3"
>
<Tab eventKey="general" title="General">
<General values={formik.values} />
</Tab>
{formik.values.hasTopics && (
<Tab eventKey="topics" title="Topics">
<Topics values={formik.values} />
</Tab>
)}
<Tab eventKey="reviewStrategy" title="Review Strategy">
<ReviewStrategy values={formik.values} />
</Tab>
<Tab eventKey="rubrics" title="Rubrics">
<Rubrics values={formik.values} />
</Tab>

<Tab eventKey="dueDate" title="Due Date">
<DueDate />
</Tab>
<Tab eventKey="calibration" title="Calibration">
<Calibration />
</Tab>
<Tab eventKey="badges" title="Badges">
<Badges />
</Tab>
<Tab eventKey="misc" title="Misc">
<Miscellaneous />
</Tab>
</Tabs>
<Row>
<Col md={{ offset: 8 }}>
<Button
variant="success"
type="submit"
disabled={
!(formik.isValid && formik.dirty) || formik.isSubmitting
}
>
Create
</Button>
</Col>
</Row>
</Form>
);
}}
</Formik>
</Row>
</Container>
);
};

export default AssignmentForm;
9 changes: 9 additions & 0 deletions src/components/Assignments/AssignmentForm/Badges.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
const Badges = () => {
return (
<div>
<h1>Badges</h1>
</div>
);
};

export default Badges;
9 changes: 9 additions & 0 deletions src/components/Assignments/AssignmentForm/Calibration.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
const Calibration = () => {
return (
<div>
<h1>Calibration</h1>
</div>
);
};

export default Calibration;
9 changes: 9 additions & 0 deletions src/components/Assignments/AssignmentForm/DueDate.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
const DueDate = () => {
return (
<div>
<h1>DueDate</h1>
</div>
);
};

export default DueDate;
Loading