mirror of
https://github.com/BetterSEQTA/BetterSEQTA-Plus.git
synced 2026-06-16 08:27:07 +00:00
fix: fix assement overview not choosing actuve subjects and improve styling
This commit is contained in:
@@ -1,9 +1,10 @@
|
||||
interface Subject {
|
||||
code: string;
|
||||
programme: number;
|
||||
metaclass: number;
|
||||
title: string;
|
||||
}
|
||||
import {
|
||||
activeSubjectsFromLearnPayload,
|
||||
assessmentBelongsToActiveSubjects,
|
||||
filterAssessmentsForActiveSubjects,
|
||||
type OverviewSubject,
|
||||
} from "./utils";
|
||||
|
||||
interface PrefItem {
|
||||
name: string;
|
||||
value: string;
|
||||
@@ -31,11 +32,9 @@ async function fetchJSON(url: string, body: any) {
|
||||
return res.json();
|
||||
}
|
||||
|
||||
async function loadSubjects() {
|
||||
async function loadSubjects(): Promise<OverviewSubject[]> {
|
||||
const res = await fetchJSON("/seqta/student/load/subjects?", {});
|
||||
return res.payload
|
||||
.filter((s: any) => s.active === 1)
|
||||
.flatMap((s: any) => s.subjects);
|
||||
return activeSubjectsFromLearnPayload(res.payload);
|
||||
}
|
||||
|
||||
async function loadPrefs(student: number) {
|
||||
@@ -61,7 +60,7 @@ async function loadUpcoming(student: number) {
|
||||
return res.payload;
|
||||
}
|
||||
|
||||
function normalizeAssessmentDates(t: any, subject: Subject): any {
|
||||
function normalizeAssessmentDates(t: any, subject: OverviewSubject): any {
|
||||
const normalized = { ...t };
|
||||
if (!normalized.due && (t.date || t.dueDate || t.created || t.submittedDate)) {
|
||||
normalized.due = t.date || t.dueDate || t.created || t.submittedDate;
|
||||
@@ -72,7 +71,7 @@ function normalizeAssessmentDates(t: any, subject: Subject): any {
|
||||
return normalized;
|
||||
}
|
||||
|
||||
async function loadPast(student: number, subjects: Subject[]) {
|
||||
async function loadPast(student: number, subjects: OverviewSubject[]) {
|
||||
const map: Record<number, any> = {};
|
||||
await Promise.all(
|
||||
subjects.map(async (s) => {
|
||||
@@ -141,14 +140,20 @@ async function getLearnAssessmentsData(studentId: number) {
|
||||
const pastMap = await loadPast(studentId, subjects);
|
||||
const map: Record<number, any> = {};
|
||||
upcoming.forEach((a: any) => {
|
||||
map[a.id] = { ...a };
|
||||
if (assessmentBelongsToActiveSubjects(a, subjects)) {
|
||||
map[a.id] = { ...a };
|
||||
}
|
||||
});
|
||||
Object.values(pastMap).forEach((t: any) => {
|
||||
if (!assessmentBelongsToActiveSubjects(t, subjects)) return;
|
||||
if (map[t.id]) Object.assign(map[t.id], t);
|
||||
else map[t.id] = t;
|
||||
});
|
||||
|
||||
const allAssessments = Object.values(map);
|
||||
const allAssessments = filterAssessmentsForActiveSubjects(
|
||||
Object.values(map),
|
||||
subjects,
|
||||
);
|
||||
const submissions = await loadSubmissions(studentId, allAssessments);
|
||||
|
||||
allAssessments.forEach((assessment: any) => {
|
||||
|
||||
Reference in New Issue
Block a user