@@ -2,7 +2,7 @@ import React, { ChangeEvent, useState } from 'react';
2
2
import { selectors , useAppSelector } from '../../state' ;
3
3
import { Button , Card , Col , Row } from 'reactstrap' ;
4
4
import { Link } from 'react-router-dom' ;
5
- import { BookInfo , extractTeacherName , ISAAC_BOOKS , isDefined , isOverdue , isTutor , sortUpcomingAssignments , Subject , useDeviceSize } from '../../services' ;
5
+ import { BookInfo , extractTeacherName , ISAAC_BOOKS , isOverdue , isTutor , sortUpcomingAssignments , Subject , useDeviceSize } from '../../services' ;
6
6
import { AssignmentDTO , QuizAssignmentDTO , UserSummaryDTO } from '../../../IsaacApiTypes' ;
7
7
import StyledToggle from './inputs/StyledToggle' ;
8
8
import { AssignmentCard , StudentDashboard } from './StudentDashboard' ;
@@ -11,6 +11,7 @@ import { Spacer } from './Spacer';
11
11
import { AppGroup , UserSnapshot } from '../../../IsaacAppTypes' ;
12
12
import { useStatefulElementRef } from './markup/portals/utils' ;
13
13
import { ScrollShadows } from './ScrollShadows' ;
14
+ import { ShowLoading } from '../handlers/ShowLoading' ;
14
15
15
16
interface GroupsPanelProps {
16
17
groups : AppGroup [ ] | undefined ;
@@ -44,10 +45,6 @@ interface AssignmentsPanelProps {
44
45
45
46
const AssignmentsPanel = ( { assignments, quizzes, groups } : AssignmentsPanelProps ) => {
46
47
const user = useAppSelector ( selectors . user . orNull ) ;
47
-
48
- if ( ! isDefined ( assignments ) || ! isDefined ( quizzes ) ) {
49
- return < div className = "dashboard-panel" /> ;
50
- }
51
48
52
49
const upcomingAssignments = assignments ?. filter ( a => ! isOverdue ( a ) ) ; // Filter out past assignments
53
50
const sortedAssignments = upcomingAssignments ? sortUpcomingAssignments ( upcomingAssignments ) : [ ] ;
@@ -63,15 +60,19 @@ const AssignmentsPanel = ({ assignments, quizzes, groups }: AssignmentsPanelProp
63
60
64
61
return < div className = "dashboard-panel" >
65
62
< h4 > View scheduled work</ h4 >
66
- { soonestDeadlines . length ?
67
- < div className = "overflow-y-auto px-1 pt-1 mx-n1 mt-m1 mb-2" >
68
- { soonestDeadlines . map ( ( assignment , i ) =>
69
- < div className = { i + 1 < soonestDeadlines . length ? "mb-3" : "mb-1" } key = { assignment . id } >
70
- < AssignmentCard assignment = { assignment } isTeacherDashboard groups = { groups } />
71
- </ div > ) }
72
- </ div >
73
- : < div className = "text-center mt-lg-3" > You have no assignments with upcoming due dates.</ div >
74
- }
63
+ < ShowLoading
64
+ until = { assignments && quizzes }
65
+ thenRender = { ( ) => {
66
+ return soonestDeadlines . length
67
+ ? < div className = "overflow-y-auto px-1 pt-1 mx-n1 mt-m1 mb-2" >
68
+ { soonestDeadlines . map ( ( assignment , i ) =>
69
+ < div className = { i + 1 < soonestDeadlines . length ? "mb-3" : "mb-1" } key = { assignment . id } >
70
+ < AssignmentCard assignment = { assignment } isTeacherDashboard groups = { groups } />
71
+ </ div > ) }
72
+ </ div >
73
+ : < div className = "text-center mt-lg-3" > You have no assignments with upcoming due dates.</ div > ;
74
+ } }
75
+ />
75
76
< Spacer />
76
77
< div className = "d-flex align-items-center" >
77
78
< Link to = "/assignment_schedule" className = "d-inline text-center panel-link me-3" >
0 commit comments