/** * Grades interface */ import {Ascending, Assignment, Page, Section, SortSettings} from "../interfaces"; import React, {useContext, useMemo, useState} from "react"; import AssignmentsTable, {AssignmentsTableColumn} from "../components/tables/AssignmentsTable"; import Button from "react-bootstrap/Button"; import {ArrowLeft} from "react-bootstrap-icons"; import Row from "react-bootstrap/Row"; import Col from "react-bootstrap/Col"; import Alert from "react-bootstrap/Alert"; import FinalGradesTable from "../components/tables/FinalGradesTable"; import {FormattedDate, TimeRange} from "../components/datetime"; import {globalContext} from "../contexts"; import {Accordion} from "react-bootstrap"; import Table from "react-bootstrap/Table"; import SortSelect from "../components/input/SortSelect"; const columns = [AssignmentsTableColumn.DUEDATE, AssignmentsTableColumn.NAME, AssignmentsTableColumn.CATEGORY, AssignmentsTableColumn.WEIGHT, AssignmentsTableColumn.SCORE]; // TODO: Sorting is fucked export default function GradesInterface({section}: { section: Section }) { const {setCurrentPage} = useContext(globalContext); // @ts-ignore const assignments: Assignment[] = section.assignments; const [sortSetings, setSortSettings] = useState>({ by: AssignmentsTableColumn.DUEDATE, order: Ascending }); const currentTime = useMemo(() => new Date(), []); const upcomingClasses = useMemo(() => section.startStopDates .filter(s => currentTime.getTime() < s.stop.getTime()) .sort((a, b) => a.start.getTime() - b.start.getTime()) , [section.startStopDates, currentTime]); return ( <> The current grades table does not show assignment flags (missing, late, etc)

{section.schoolCourseTitle}

Yeah this page is sorta ugly. This is temporary.

{/* Accordion with grades and upcoming classes. This is probably big enough to warrant a separate component */} Current Grades Upcoming Classes {upcomingClasses.map(c => )}
Date Time

Assignments

{/* Grade sort thing. Only display if the table also displays */} {assignments.length !== 0 && }
{assignments.length === 0 ?

No assignments!

: } // TODO: Display flags (missing, collected, incomplete, etc) // TODO: Deal with extra credit (2/0). That fucks everything up and I'm too tired to figure it out ) };