Updated the condition to close assignment: to be end date or when all students finish the assignment

This commit is contained in:
Tiago Ribeiro
2024-01-21 00:30:44 +00:00
parent 3de0357369
commit f6bb69f994
4 changed files with 45 additions and 51 deletions

View File

@@ -151,8 +151,9 @@ export default function TeacherDashboard({user}: Props) {
}; };
const AssignmentsPage = () => { const AssignmentsPage = () => {
const activeFilter = (a: Assignment) => moment(a.endDate).isAfter(moment()) && moment(a.startDate).isBefore(moment()); const activeFilter = (a: Assignment) =>
const pastFilter = (a: Assignment) => moment(a.endDate).isBefore(moment()); moment(a.endDate).isAfter(moment()) && moment(a.startDate).isBefore(moment()) && a.assignees.length > a.results.length;
const pastFilter = (a: Assignment) => moment(a.endDate).isBefore(moment()) || a.assignees.length === a.results.length;
const futureFilter = (a: Assignment) => moment(a.startDate).isAfter(moment()); const futureFilter = (a: Assignment) => moment(a.startDate).isAfter(moment());
return ( return (

View File

@@ -1,24 +1,17 @@
/* eslint-disable jsx-a11y/alt-text */ /* eslint-disable jsx-a11y/alt-text */
import React from "react"; import React from "react";
import { View, Text, Image } from "@react-pdf/renderer"; import {View, Text, Image} from "@react-pdf/renderer";
import { styles } from "../styles"; import {styles} from "../styles";
import { ModuleScore } from "@/interfaces/module.scores"; import {ModuleScore} from "@/interfaces/module.scores";
export const RadialResult = ({ export const RadialResult = ({module, score, total, png}: ModuleScore) => (
module, <View style={[styles.textFont, styles.radialContainer]}>
score, <Text style={[styles.textColor, styles.textBold, {fontSize: 10}]}>{module}</Text>
total, <Image src={png} style={styles.image64}></Image>
png, <View style={[styles.textColor, styles.radialResultContainer]}>
}: ModuleScore) => ( <Text style={styles.textBold}>{score.toFixed(2)}</Text>
<View style={[styles.textFont, styles.radialContainer]}> <Text style={{fontSize: 8}}>out of {total}</Text>
<Text style={[styles.textColor, styles.textBold, { fontSize: 10 }]}> </View>
{module} </View>
</Text>
<Image src={png} style={styles.image64}></Image>
<View style={[styles.textColor, styles.radialResultContainer]}>
<Text style={styles.textBold}>{score}</Text>
<Text style={{ fontSize: 8 }}>out of {total}</Text>
</View>
</View>
); );

View File

@@ -1,20 +1,20 @@
import React from "react"; import React from "react";
import { View, StyleSheet } from "@react-pdf/renderer"; import {View, StyleSheet} from "@react-pdf/renderer";
import { ModuleScore } from "@/interfaces/module.scores"; import {ModuleScore} from "@/interfaces/module.scores";
import { RadialResult } from "./radial.result"; import {RadialResult} from "./radial.result";
interface Props { interface Props {
testDetails: ModuleScore[]; testDetails: ModuleScore[];
} }
const customStyles = StyleSheet.create({ const customStyles = StyleSheet.create({
container: { display: "flex", flexDirection: "row", gap: 30 }, container: {display: "flex", flexDirection: "row", gap: 30},
}); });
export const SkillExamDetails = ({ testDetails }: Props) => ( export const SkillExamDetails = ({testDetails}: Props) => (
<View style={customStyles.container}> <View style={customStyles.container}>
{testDetails.map((detail) => { {testDetails.map((detail) => {
const { module } = detail; const {module} = detail;
return <RadialResult key={module} {...detail} />; return <RadialResult key={module} {...detail} />;
})} })}
</View> </View>
); );

View File

@@ -1,22 +1,22 @@
import {Module} from "@/interfaces"; import {Module} from "@/interfaces";
export interface ModuleScore { export interface ModuleScore {
score: number; score: number;
total: number; total: number;
code: Module; code: Module;
module: Module | 'Overall'; module: Module | "Overall";
png?: string, png?: string;
evaluation?: string, evaluation?: string;
suggestions?: string, suggestions?: string;
} }
export interface StudentData { export interface StudentData {
id: string; id: string;
name: string; name: string;
email: string; email: string;
gender: string; gender: string;
date: string; date: string;
result: string; result: string;
level?: string; level?: string;
bandScore: number; bandScore: number;
} }