@@ -2,13 +2,12 @@ import '@tremor/react/dist/esm/tremor.css';
22
33import { Icon as BpIcon , NonIdealState , Position , Spinner , SpinnerSize } from '@blueprintjs/core' ;
44import { IconNames } from '@blueprintjs/icons' ;
5- import { Button , Card , Col , ColGrid , Flex , Text , Title } from '@tremor/react' ;
5+ import { Button , Card , Flex , Text , Title } from '@tremor/react' ;
66import React , { useEffect , useState } from 'react' ;
77import { useDispatch } from 'react-redux' ;
88import { Navigate , useParams } from 'react-router' ;
99import { fetchGradingOverviews } from 'src/commons/application/actions/SessionActions' ;
1010import { Role } from 'src/commons/application/ApplicationTypes' ;
11- import { GradingStatuses } from 'src/commons/assessment/AssessmentTypes' ;
1211import SimpleDropdown from 'src/commons/SimpleDropdown' ;
1312import { useSession } from 'src/commons/utils/Hooks' ;
1413import { numberRegExp } from 'src/features/academy/AcademyTypes' ;
@@ -17,39 +16,31 @@ import { exportGradingCSV, isSubmissionUngraded } from 'src/features/grading/Gra
1716import ContentDisplay from '../../../commons/ContentDisplay' ;
1817import { convertParamToInt } from '../../../commons/utils/ParamParseHelper' ;
1918import GradingSubmissionsTable from './subcomponents/GradingSubmissionsTable' ;
20- import GradingSummary from './subcomponents/GradingSummary' ;
2119import GradingWorkspace from './subcomponents/GradingWorkspace' ;
2220
21+ const groupOptions = [
22+ { value : false , label : 'my groups' } ,
23+ { value : true , label : 'all groups' }
24+ ] ;
25+
26+ const showOptions = [
27+ { value : false , label : 'ungraded' } ,
28+ { value : true , label : 'all' }
29+ ] ;
30+
2331const Grading : React . FC = ( ) => {
24- const {
25- courseId,
26- gradingOverviews,
27- role,
28- group,
29- assessmentOverviews : assessments = [ ]
30- } = useSession ( ) ;
31- const params = useParams < {
32- submissionId : string ;
33- questionId : string ;
34- } > ( ) ;
32+ const { courseId, gradingOverviews, role, group } = useSession ( ) ;
33+ const params = useParams < { submissionId : string ; questionId : string } > ( ) ;
3534
3635 const isAdmin = role === Role . Admin ;
3736 const [ showAllGroups , setShowAllGroups ] = useState ( isAdmin || group === null ) ;
38- const groupOptions = [
39- { value : false , label : 'my groups' } ,
40- { value : true , label : 'all groups' }
41- ] ;
4237
4338 const dispatch = useDispatch ( ) ;
4439 useEffect ( ( ) => {
4540 dispatch ( fetchGradingOverviews ( ! showAllGroups ) ) ;
4641 } , [ dispatch , role , showAllGroups ] ) ;
4742
4843 const [ showAllSubmissions , setShowAllSubmissions ] = useState ( false ) ;
49- const showOptions = [
50- { value : false , label : 'ungraded' } ,
51- { value : true , label : 'all' }
52- ] ;
5344
5445 // If submissionId or questionId is defined but not numeric, redirect back to the Grading overviews page
5546 if (
@@ -88,63 +79,42 @@ const Grading: React.FC = () => {
8879 gradingOverviews === undefined ? (
8980 loadingDisplay
9081 ) : (
91- < ColGrid numColsLg = { 8 } gapX = "gap-x-4" gapY = "gap-y-2" >
92- < Col numColSpanLg = { 6 } >
93- < Card >
94- < Flex justifyContent = "justify-between" >
95- < Flex justifyContent = "justify-start" spaceX = "space-x-6" >
96- < Title > Submissions</ Title >
97- < Button
98- variant = "light"
99- size = "xs"
100- icon = { ( ) => (
101- < BpIcon icon = { IconNames . EXPORT } style = { { marginRight : '0.5rem' } } />
102- ) }
103- onClick = { ( ) => exportGradingCSV ( gradingOverviews ) }
104- >
105- Export to CSV
106- </ Button >
107- </ Flex >
108- </ Flex >
109- < Flex justifyContent = "justify-start" marginTop = "mt-2" spaceX = "space-x-2" >
110- < Text > Viewing</ Text >
111- < SimpleDropdown
112- options = { showOptions }
113- selectedValue = { showAllSubmissions }
114- onClick = { setShowAllSubmissions }
115- popoverProps = { { position : Position . BOTTOM } }
116- buttonProps = { { minimal : true , rightIcon : 'caret-down' } }
117- />
118- < Text > submissions from</ Text >
119- < SimpleDropdown
120- options = { groupOptions }
121- selectedValue = { showAllGroups }
122- onClick = { setShowAllGroups }
123- popoverProps = { { position : Position . BOTTOM } }
124- buttonProps = { { minimal : true , rightIcon : 'caret-down' } }
125- />
126- </ Flex >
127- < GradingSubmissionsTable
128- submissions = { submissions . filter (
129- s => showAllSubmissions || isSubmissionUngraded ( s )
130- ) }
131- />
132- </ Card >
133- </ Col >
134-
135- < Col numColSpanLg = { 2 } >
136- < Card hFull >
137- < GradingSummary
138- // Only include submissions from the same group in the summary
139- submissions = { submissions . filter (
140- ( { groupName, gradingStatus } ) =>
141- groupName === group && gradingStatus !== GradingStatuses . excluded
142- ) }
143- assessments = { assessments }
144- />
145- </ Card >
146- </ Col >
147- </ ColGrid >
82+ < Card >
83+ < Flex justifyContent = "justify-between" >
84+ < Flex justifyContent = "justify-start" spaceX = "space-x-6" >
85+ < Title > Submissions</ Title >
86+ < Button
87+ variant = "light"
88+ size = "xs"
89+ icon = { ( ) => < BpIcon icon = { IconNames . EXPORT } style = { { marginRight : '0.5rem' } } /> }
90+ onClick = { ( ) => exportGradingCSV ( gradingOverviews ) }
91+ >
92+ Export to CSV
93+ </ Button >
94+ </ Flex >
95+ </ Flex >
96+ < Flex justifyContent = "justify-start" marginTop = "mt-2" spaceX = "space-x-2" >
97+ < Text > Viewing</ Text >
98+ < SimpleDropdown
99+ options = { showOptions }
100+ selectedValue = { showAllSubmissions }
101+ onClick = { setShowAllSubmissions }
102+ popoverProps = { { position : Position . BOTTOM } }
103+ buttonProps = { { minimal : true , rightIcon : 'caret-down' } }
104+ />
105+ < Text > submissions from</ Text >
106+ < SimpleDropdown
107+ options = { groupOptions }
108+ selectedValue = { showAllGroups }
109+ onClick = { setShowAllGroups }
110+ popoverProps = { { position : Position . BOTTOM } }
111+ buttonProps = { { minimal : true , rightIcon : 'caret-down' } }
112+ />
113+ </ Flex >
114+ < GradingSubmissionsTable
115+ submissions = { submissions . filter ( s => showAllSubmissions || isSubmissionUngraded ( s ) ) }
116+ />
117+ </ Card >
148118 )
149119 }
150120 fullWidth = { true }
0 commit comments