Compare commits
No commits in common. "b5816155a4a0c3d8dfa17dc03799e6dba1f0c910" and "49affe118b2bc5d46654b1ac3f78f42bd58bfa1d" have entirely different histories.
b5816155a4
...
49affe118b
3 changed files with 9 additions and 55 deletions
|
|
@ -67,19 +67,12 @@ export default function Home({ user }: { user: User }) {
|
||||||
isLoading,
|
isLoading,
|
||||||
} = useColles(startDate);
|
} = useColles(startDate);
|
||||||
|
|
||||||
// Fetch upcoming colles from API
|
|
||||||
const {
|
|
||||||
classColles: upcomingClassColles,
|
|
||||||
error: upcomingError,
|
|
||||||
isLoading: upcomingIsLoading,
|
|
||||||
} = useColles(DateTime.now());
|
|
||||||
|
|
||||||
// Error handling (after all hooks)
|
// Error handling (after all hooks)
|
||||||
if (error || upcomingError)
|
if (error)
|
||||||
return (
|
return (
|
||||||
<Error
|
<Error
|
||||||
title="Impossible de charger les colles"
|
title="Impossible de charger les colles"
|
||||||
message={error?.toString() || upcomingError?.toString()}
|
message={error?.toString()}
|
||||||
code={500}
|
code={500}
|
||||||
description="Une erreur s'est produite lors du chargement de la liste des colles."
|
description="Une erreur s'est produite lors du chargement de la liste des colles."
|
||||||
/>
|
/>
|
||||||
|
|
@ -105,14 +98,6 @@ export default function Home({ user }: { user: User }) {
|
||||||
updateQuery("examiner", examiner);
|
updateQuery("examiner", examiner);
|
||||||
setExaminerFilter(examiner == "all" ? "" : examiner);
|
setExaminerFilter(examiner == "all" ? "" : examiner);
|
||||||
};
|
};
|
||||||
const rawStudent = query.get("student");
|
|
||||||
const [studentFilter, setStudentFilter] = useState<string>(
|
|
||||||
rawStudent === "all" ? "" : rawStudent || ""
|
|
||||||
);
|
|
||||||
const setStudent = (student: string) => {
|
|
||||||
updateQuery("student", student);
|
|
||||||
setStudentFilter(student == "all" ? "" : student);
|
|
||||||
};
|
|
||||||
const [sorted, setSort] = useState<string>(query.get("sort") || "desc");
|
const [sorted, setSort] = useState<string>(query.get("sort") || "desc");
|
||||||
const toggleSort = () => {
|
const toggleSort = () => {
|
||||||
const newSort = sorted === "asc" ? "desc" : "asc";
|
const newSort = sorted === "asc" ? "desc" : "asc";
|
||||||
|
|
@ -121,29 +106,21 @@ export default function Home({ user }: { user: User }) {
|
||||||
};
|
};
|
||||||
|
|
||||||
const generateFilter = (arr: string[], value: string) => {
|
const generateFilter = (arr: string[], value: string) => {
|
||||||
const unique = [...new Set(arr.filter(Boolean))];
|
const unique = [...new Set(arr)];
|
||||||
if (value && !unique.includes(value)) {
|
if (value && !unique.includes(value)) {
|
||||||
unique.push(value);
|
unique.push(value);
|
||||||
}
|
}
|
||||||
unique.sort((a, b) => a.localeCompare(b));
|
unique.sort((a, b) => a.localeCompare(b));
|
||||||
return unique;
|
return unique;
|
||||||
};
|
};
|
||||||
|
|
||||||
const currentClassColles =
|
|
||||||
activeTab === "upcoming" ? upcomingClassColles : classColles;
|
|
||||||
|
|
||||||
const subjects = generateFilter(
|
const subjects = generateFilter(
|
||||||
currentClassColles.map((colle) => colle.subject?.name),
|
classColles.map((colle) => colle.subject?.name),
|
||||||
subjectFilter
|
subjectFilter
|
||||||
);
|
);
|
||||||
const examiners = generateFilter(
|
const examiners = generateFilter(
|
||||||
currentClassColles.map((colle) => colle.examiner?.name),
|
classColles.map((colle) => colle.examiner?.name),
|
||||||
examinerFilter
|
examinerFilter
|
||||||
);
|
);
|
||||||
const students = generateFilter(
|
|
||||||
upcomingClassColles.map((colle) => colle.student?.fullName),
|
|
||||||
studentFilter
|
|
||||||
);
|
|
||||||
|
|
||||||
const applyFilters = (colles: any[]) => {
|
const applyFilters = (colles: any[]) => {
|
||||||
return colles
|
return colles
|
||||||
|
|
@ -156,11 +133,7 @@ export default function Home({ user }: { user: User }) {
|
||||||
examinerFilter === "all" || !examinerFilter
|
examinerFilter === "all" || !examinerFilter
|
||||||
? true
|
? true
|
||||||
: colle.examiner?.name === examinerFilter;
|
: colle.examiner?.name === examinerFilter;
|
||||||
const studentMatch =
|
return subjectMatch && examinerMatch;
|
||||||
activeTab !== "upcoming" || studentFilter === "all" || !studentFilter
|
|
||||||
? true
|
|
||||||
: colle.student?.fullName === studentFilter;
|
|
||||||
return subjectMatch && examinerMatch && studentMatch;
|
|
||||||
})
|
})
|
||||||
.sort((a, b) => {
|
.sort((a, b) => {
|
||||||
if (sorted === "asc") {
|
if (sorted === "asc") {
|
||||||
|
|
@ -245,22 +218,6 @@ export default function Home({ user }: { user: User }) {
|
||||||
</SelectContent>
|
</SelectContent>
|
||||||
</Select>
|
</Select>
|
||||||
|
|
||||||
{activeTab === "upcoming" && (
|
|
||||||
<Select value={studentFilter} onValueChange={setStudent}>
|
|
||||||
<SelectTrigger className="rounded-full data-[placeholder]:text-primary">
|
|
||||||
<SelectValue placeholder="Élève" />
|
|
||||||
</SelectTrigger>
|
|
||||||
<SelectContent>
|
|
||||||
<SelectItem value="all">Tous</SelectItem>
|
|
||||||
{students.map((student) => (
|
|
||||||
<SelectItem key={student} value={student}>
|
|
||||||
{student}
|
|
||||||
</SelectItem>
|
|
||||||
))}
|
|
||||||
</SelectContent>
|
|
||||||
</Select>
|
|
||||||
)}
|
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
variant="outline"
|
variant="outline"
|
||||||
size="sm"
|
size="sm"
|
||||||
|
|
@ -314,10 +271,10 @@ export default function Home({ user }: { user: User }) {
|
||||||
{activeTab === "upcoming" && (
|
{activeTab === "upcoming" && (
|
||||||
<TabContent
|
<TabContent
|
||||||
tabTitle="Toutes les colles à venir"
|
tabTitle="Toutes les colles à venir"
|
||||||
emptyCollesText="Aucune colle à venir n'a été trouvée."
|
emptyCollesText="Cette fonctionnalité est en cours de développement. Bientôt, vous verrez ici toutes les colles à venir pour votre classe."
|
||||||
isLoading={upcomingIsLoading}
|
isLoading={false}
|
||||||
isSorted={sorted === "desc"}
|
isSorted={sorted === "desc"}
|
||||||
colles={applyFilters(upcomingClassColles)}
|
colles={[]}
|
||||||
preferences={user.preferences}
|
preferences={user.preferences}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,6 @@ export function MatchStudent({
|
||||||
<p>
|
<p>
|
||||||
Correspondance trouvée: {matchedStudent.fullName}
|
Correspondance trouvée: {matchedStudent.fullName}
|
||||||
</p>
|
</p>
|
||||||
{/* TODO: Improve UI */}
|
|
||||||
<button onClick={handleValidate}>Valider</button>
|
<button onClick={handleValidate}>Valider</button>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
|
||||||
|
|
@ -203,7 +203,6 @@ interface CollePayload {
|
||||||
classColles: Colle[];
|
classColles: Colle[];
|
||||||
studentColles: Colle[];
|
studentColles: Colle[];
|
||||||
favoriteColles: Colle[];
|
favoriteColles: Colle[];
|
||||||
upcomingClassColles: Colle[];
|
|
||||||
healthyUntil: Date;
|
healthyUntil: Date;
|
||||||
lastSync: Date;
|
lastSync: Date;
|
||||||
}
|
}
|
||||||
|
|
@ -239,7 +238,6 @@ export const useColles = (startDate: DateTime) => {
|
||||||
classColles: [],
|
classColles: [],
|
||||||
studentColles: [],
|
studentColles: [],
|
||||||
favoriteColles: [],
|
favoriteColles: [],
|
||||||
upcomingClassColles: [],
|
|
||||||
healthyUntil: new Date(0),
|
healthyUntil: new Date(0),
|
||||||
lastSync: new Date(0),
|
lastSync: new Date(0),
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue