diff --git a/frontend/src/App.js b/frontend/src/App.js
index 242083c..88dffa6 100644
--- a/frontend/src/App.js
+++ b/frontend/src/App.js
@@ -9,6 +9,7 @@ import AssignmentPage from "./pages/AssignmentPage";
import ManagePage from "./pages/ManagePage";
import ManageStudentsPage from "./pages/ManageStudentsPage";
import AuthenticatedRoute from "./components/AuthenticatedRoute";
+import ManageAssignmentsPage from "./pages/ManageAssignmentsPage";
const AuthRoute = ({ isAuthenticated = true, path, children }) => {
return (
@@ -70,6 +71,17 @@ function App() {
);
}}
+
+
+ {(params) => {
+ return (
+
+
+
+ );
+ }}
+
+
);
}
diff --git a/frontend/src/pages/ManageAssignmentsPage.jsx b/frontend/src/pages/ManageAssignmentsPage.jsx
new file mode 100644
index 0000000..08f5518
--- /dev/null
+++ b/frontend/src/pages/ManageAssignmentsPage.jsx
@@ -0,0 +1,159 @@
+import { useEffect, useState } from "react";
+import { Container, Table, Button, Form } from "react-bootstrap";
+import MyNavbar from "../components/MyNavbar";
+import { makeRequest } from "../utils.ts";
+
+const ManageAssignmentsPage = ({ cid }) => {
+ const [courseData, setCourseData] = useState({});
+ const [assignmentData, setAssignmentData] = useState([]);
+ const [showAddAssignmentForm, setShowAddAssignmentForm] = useState(false);
+
+ const AddAssignmentForm = () => {
+ const [name, setName] = useState("");
+ const [description, setDescription] = useState("");
+ const [duedate, setDuedate] = useState("");
+
+ return (
+
+
+ Name
+ setName(e.target.value)}
+ />
+
+
+ Description
+ setDescription(e.target.value)}
+ />
+
+
+ Due Date
+ setDuedate(e.target.value)}
+ />
+
+
+
+
+ );
+ };
+
+ const submitAssignmentForm = (name, description, duedate) => {
+ makeRequest({
+ endpoint: "assignment",
+ method: "POST",
+ body: {
+ name,
+ description,
+ course_id: cid,
+ due_date: duedate,
+ },
+ });
+ };
+
+ const sendDeleteAssignmentRequest = (id) => {
+ makeRequest({
+ endpoint: `assignment/${id}`,
+ method: "DELETE",
+ }).then((resp) => {
+ window.location.reload();
+ });
+ };
+
+ useEffect(() => {
+ makeRequest({
+ endpoint: `course/${cid}/assignments`,
+ method: "GET",
+ })
+ .then((req) => req.json())
+ .then(async (data) => {
+ setAssignmentData(data.assignments);
+ })
+ .catch((err) => {
+ console.error(err);
+ });
+
+ makeRequest({
+ endpoint: `course/${cid}`,
+ method: "GET",
+ })
+ .then((req) => req.json())
+ .then(async (data) => {
+ setCourseData(data);
+ })
+ .catch((err) => {
+ console.error(err);
+ });
+ }, []);
+
+ return (
+
+
+
+ {courseData.name}
+ Manage Assignments
+
+ {showAddAssignmentForm && }
+
+
+
+ | # |
+ Name |
+ Due date |
+ Manage |
+
+
+
+ {assignmentData.map((assignment, k) => {
+ return (
+
+ | {assignment.id} |
+ {assignment.name} |
+ {assignment.due_date} |
+
+
+
+
+ |
+
+ );
+ })}
+
+
+
+
+ );
+};
+
+export default ManageAssignmentsPage;