Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
28ea3e7
Base form changes to add bootstrap elements
KeyurGondhalekar Oct 28, 2025
9cd38fd
Added base form and bootstrap elements
KeyurGondhalekar Oct 28, 2025
d281439
Rubrics tab and variables
EPShea Oct 28, 2025
ff488f4
Add review strat tab
KeyurGondhalekar Oct 28, 2025
8160705
Added dates tab
KeyurGondhalekar Oct 28, 2025
ffd603d
Update AssignmentEditor.tsx
EPShea Oct 28, 2025
ae78032
General and topics tab
nishadtardalkar Oct 29, 2025
67d438f
Vars for general and topics tab
nishadtardalkar Oct 29, 2025
597462c
update app.tsx for correct routing to assignments page
KeyurGondhalekar Oct 29, 2025
e342116
remove api/v1 usage
KeyurGondhalekar Oct 29, 2025
5c99b68
removed another api/v1
KeyurGondhalekar Oct 29, 2025
819acb1
fixed alignment for tables
KeyurGondhalekar Oct 29, 2025
178e279
Added test file, started mocks
KeyurGondhalekar Dec 3, 2025
e000e28
Merge branch 'main' into main
KeyurGondhalekar Dec 3, 2025
3ea2ffc
Added render component test and mock tables
KeyurGondhalekar Dec 3, 2025
17beb71
Saving, Creation, Calibration tab
nishadtardalkar Dec 3, 2025
45555c5
Refactored interface and removed unnecessary transformations of form …
nishadtardalkar Dec 3, 2025
203c5d5
Correct routing for Assignment creation
nishadtardalkar Dec 3, 2025
08c06a5
Add custom styles for assignment tabs
nishadtardalkar Dec 3, 2025
a280141
added initial testing checkboxes
KeyurGondhalekar Dec 3, 2025
ecac74b
other tests
KeyurGondhalekar Dec 3, 2025
dc69973
Update Login.tsx
EPShea Dec 3, 2025
5848f0a
Maintainer cleanup: remove unrelated code from PR #129
Dec 22, 2025
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
135 changes: 71 additions & 64 deletions src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,46 +1,46 @@
import React from "react";
import { createBrowserRouter, Navigate, RouterProvider } from "react-router-dom";
import AdministratorLayout from "./layout/Administrator";
import RootLayout from "./layout/Root";
import ManageUserTypes, { loader as loadUsers } from "./pages/Administrator/ManageUserTypes";
import Assignment from "./pages/Assignments/Assignment";
import AssignmentEditor from "./pages/Assignments/AssignmentEditor";
import { loadAssignment } from "./pages/Assignments/AssignmentUtil";
import ResponseMappings from "./pages/ResponseMappings/ResponseMappings";
import CreateTeams from "./pages/Assignments/CreateTeams";
import ViewDelayedJobs from "./pages/Assignments/ViewDelayedJobs";
import ViewReports from "./pages/Assignments/ViewReports";
import ViewScores from "./pages/Assignments/ViewScores";
import ViewSubmissions from "./pages/Assignments/ViewSubmissions";
import Login from "./pages/Authentication/Login";
import Logout from "./pages/Authentication/Logout";
import Courses from "./pages/Courses/Course";
import CourseEditor from "./pages/Courses/CourseEditor";
import { loadCourseInstructorDataAndInstitutions } from "./pages/Courses/CourseUtil";
import Questionnaire from "./pages/EditQuestionnaire/Questionnaire";
import Email_the_author from "./pages/Email_the_author/email_the_author";
import Home from "./pages/Home";
import InstitutionEditor, { loadInstitution } from "./pages/Institutions/InstitutionEditor";
import Institutions, { loadInstitutions } from "./pages/Institutions/Institutions";
import RoleEditor, { loadAvailableRole } from "./pages/Roles/RoleEditor";
import Roles, { loadRoles } from "./pages/Roles/Roles";
import Assignment from "./pages/Assignments/Assignment";
import AssignmentEditor from "./pages/Assignments/AssignmentEditor";
import { loadAssignment } from "./pages/Assignments/AssignmentUtil";
import ErrorPage from "./router/ErrorPage";
import ProtectedRoute from "./router/ProtectedRoute";
import { ROLE } from "./utils/interfaces";
import NotFound from "./router/NotFound";
import Participants from "./pages/Participants/Participant";
import ParticipantEditor from "./pages/Participants/ParticipantEditor";
import ParticipantsAPI from "./pages/Participants/ParticipantsAPI";
import ParticipantsDemo from "./pages/Participants/ParticipantsDemo";
import { loadParticipantDataRolesAndInstitutions } from "./pages/Participants/participantUtil";
import EditProfile from "./pages/Profile/Edit";
import Reviews from "./pages/Reviews/reviews";
import RoleEditor, { loadAvailableRole } from "./pages/Roles/RoleEditor";
import Roles, { loadRoles } from "./pages/Roles/Roles";
import RootLayout from "./layout/Root";
import UserEditor from "./pages/Users/UserEditor";
import Users from "./pages/Users/User";
import { loadUserDataRolesAndInstitutions } from "./pages/Users/userUtil";
import Home from "./pages/Home";
import Questionnaire from "./pages/EditQuestionnaire/Questionnaire";
import Courses from "./pages/Courses/Course";
import CourseEditor from "./pages/Courses/CourseEditor";
import { loadCourseInstructorDataAndInstitutions } from "./pages/Courses/CourseUtil";
import TA from "./pages/TA/TA";
import TAEditor from "./pages/TA/TAEditor";
import { loadTAs } from "./pages/TA/TAUtil";
import Users from "./pages/Users/User";
import UserEditor from "./pages/Users/UserEditor";
import { loadUserDataRolesAndInstitutions } from "./pages/Users/userUtil";
import ReviewTable from "./pages/ViewTeamGrades/ReviewTable";
import ErrorPage from "./router/ErrorPage";
import NotFound from "./router/NotFound";
import ProtectedRoute from "./router/ProtectedRoute";
import { ROLE } from "./utils/interfaces";
import EditProfile from "./pages/Profile/Edit";
import Reviews from "./pages/Reviews/reviews";
import Email_the_author from "./pages/Email_the_author/email_the_author";
import CreateTeams from "./pages/Assignments/CreateTeams";
import AssignReviewer from "./pages/Assignments/AssignReviewer";
import ViewSubmissions from "./pages/Assignments/ViewSubmissions";
import ViewScores from "./pages/Assignments/ViewScores";
import ViewReports from "./pages/Assignments/ViewReports";
import ViewDelayedJobs from "./pages/Assignments/ViewDelayedJobs";
import ResponseMappings from "./pages/ResponseMappings/ResponseMappings";
function App() {
const router = createBrowserRouter([
{
Expand All @@ -51,7 +51,7 @@ function App() {
{ index: true, element: <ProtectedRoute element={<Home />} /> },
{ path: "login", element: <Login /> },
{ path: "logout", element: <ProtectedRoute element={<Logout />} /> },

// Add the ViewTeamGrades route
{
path: "view-team-grades",
element: <ProtectedRoute element={<ReviewTable />} />,
Expand All @@ -60,7 +60,6 @@ function App() {
path: "edit-questionnaire",
element: <ProtectedRoute element={<Questionnaire />} />,
},

{
path: "assignments/edit/:id",
element: <AssignmentEditor mode="update" />,
Expand All @@ -71,13 +70,17 @@ function App() {
element: <CreateTeams />,
loader: loadAssignment,
},

// Assign Reviewer: no route loader (component handles localStorage/URL id)
// Assign Reviewer: no route loader (component handles localStorage/URL id)
{
path: "assignments/edit/:id/responsemappings",
element: <ResponseMappings />,
},

{
path: "assignments/edit/:id/assignreviewer",
element: <AssignReviewer />,
loader: loadAssignment,
},
{
path: "assignments/edit/:id/viewsubmissions",
element: <ViewSubmissions />,
Expand All @@ -98,19 +101,22 @@ function App() {
element: <ViewDelayedJobs />,
loader: loadAssignment,
},

{
path: "assignments/new",
element: <AssignmentEditor mode="create" />,
loader: loadAssignment,
},
{
path: "assignments",
element: <ProtectedRoute element={<Assignment />} leastPrivilegeRole={ROLE.TA} />,
children: [
{
path: "new",
element: <AssignmentEditor mode="create" />,
loader: loadAssignment,
},
],
// children: [
// {
// path: "new",
// element: <AssignmentEditor mode="create" />,
// loader: loadAssignment,
// },
// ],
},

{
path: "users",
element: <ProtectedRoute element={<Users />} leastPrivilegeRole={ROLE.TA} />,
Expand All @@ -127,7 +133,6 @@ function App() {
},
],
},

{
path: "student_tasks/participants",
element: <Participants type="student_tasks" id={1} />,
Expand All @@ -144,12 +149,10 @@ function App() {
},
],
},

{
path: "profile",
element: <ProtectedRoute element={<EditProfile />} />,
},

{
path: "assignments/edit/:assignmentId/participants",
element: <Participants type="student_tasks" id={1} />,
Expand All @@ -166,7 +169,6 @@ function App() {
},
],
},

{
path: "student_tasks/edit/:assignmentId/participants",
element: <Participants type="student_tasks" id={1} />,
Expand All @@ -183,7 +185,6 @@ function App() {
},
],
},

{
path: "courses/participants",
element: <Participants type="courses" id={1} />,
Expand All @@ -204,14 +205,6 @@ function App() {
path: "reviews",
element: <Reviews />,
},
{
path: "demo/participants",
element: <ParticipantsDemo />,
},
{
path: "participants",
element: <ProtectedRoute element={<ParticipantsAPI />} />,
},
{
path: "email_the_author",
element: <Email_the_author />,
Expand Down Expand Up @@ -244,7 +237,6 @@ function App() {
},
],
},

{
path: "administrator",
element: (
Expand All @@ -257,7 +249,10 @@ function App() {
element: <Roles />,
loader: loadRoles,
children: [
{ path: "new", element: <RoleEditor mode="create" /> },
{
path: "new",
element: <RoleEditor mode="create" />,
},
{
id: "edit-role",
path: "edit/:id",
Expand All @@ -271,7 +266,10 @@ function App() {
element: <Institutions />,
loader: loadInstitutions,
children: [
{ path: "new", element: <InstitutionEditor mode="create" /> },
{
path: "new",
element: <InstitutionEditor mode="create" />,
},
{
path: "edit/:id",
element: <InstitutionEditor mode="update" />,
Expand All @@ -284,21 +282,30 @@ function App() {
element: <ManageUserTypes />,
loader: loadUsers,
children: [
{ path: "new", element: <Navigate to="/users/new" /> },
{ path: "edit/:id", element: <Navigate to="/users/edit/:id" /> },
{
path: "new",
element: <Navigate to="/users/new" />,
},

{
path: "edit/:id",
element: <Navigate to="/users/edit/:id" />,
},
],
},
{ path: "questionnaire", element: <Questionnaire /> },
{
path: "questionnaire",
element: <Questionnaire />,
},
],
},

{ path: "*", element: <NotFound /> },
{ path: "questionnaire", element: <Questionnaire /> },
{ path: "questionnaire", element: <Questionnaire /> }, // Added the Questionnaire route
],
},
]);

return <RouterProvider router={router} />;
}

export default App;
export default App;
20 changes: 19 additions & 1 deletion src/custom.scss
Original file line number Diff line number Diff line change
Expand Up @@ -85,5 +85,23 @@ $theme-colors: (
margin-bottom: 10px; // Space between stacked buttons
}
}

// Custom styles for assignment tabs
#assignment-tabs {
.nav-link {
color: #333; // Default tab text color
transition: color 0.2s ease;

&:hover {
color: #fff; // Hover text color (you can change this to any color)
}

&.active {
color: #333; // Active tab text color (you can change this to any color)
font-weight: 600; // Optional: make active tab bold
}
}
}

// import bootstrap styles at the bottom!
@import 'bootstrap/scss/bootstrap.scss';
@import 'bootstrap/scss/bootstrap.scss';
Loading