Skip to content

Commit 30014c8

Browse files
authored
Merge pull request #5 from InfinityTwo/grading-filterable-columns
Merge changes cause I forgot to switch branch and this is easier
2 parents 34f8d9a + b22cb6f commit 30014c8

File tree

7 files changed

+247
-50
lines changed

7 files changed

+247
-50
lines changed

src/commons/application/ApplicationTypes.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -415,7 +415,8 @@ export const defaultWorkspaceManager: WorkspaceManagerState = {
415415
},
416416
currentSubmission: undefined,
417417
currentQuestion: undefined,
418-
hasUnsavedChanges: false
418+
hasUnsavedChanges: false,
419+
requestCounter: 0
419420
},
420421
playground: {
421422
...createDefaultWorkspace('playground'),

src/commons/workspace/WorkspaceActions.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ import {
6767
UPDATE_GRADING_COLUMN_VISIBILITY,
6868
UPDATE_HAS_UNSAVED_CHANGES,
6969
UPDATE_REPL_VALUE,
70+
UPDATE_REQUEST_COUNTER,
7071
UPDATE_STEPSTOTAL,
7172
UPDATE_SUBLANGUAGE,
7273
UPDATE_SUBMISSIONS_TABLE_FILTERS,
@@ -395,6 +396,11 @@ export const setIsEditorReadonly = createAction(
395396
})
396397
);
397398

399+
export const updateRequestCounter = createAction(
400+
UPDATE_REQUEST_COUNTER,
401+
(requestCount: number) => ({ payload: { requestCount } })
402+
);
403+
398404
export const updateSubmissionsTableFilters = createAction(
399405
UPDATE_SUBMISSIONS_TABLE_FILTERS,
400406
(filters: SubmissionsTableFilters) => ({ payload: { filters } })

src/commons/workspace/WorkspaceReducer.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ import {
7979
UPDATE_GRADING_COLUMN_VISIBILITY,
8080
UPDATE_HAS_UNSAVED_CHANGES,
8181
UPDATE_REPL_VALUE,
82+
UPDATE_REQUEST_COUNTER,
8283
UPDATE_STEPSTOTAL,
8384
UPDATE_SUBLANGUAGE,
8485
UPDATE_SUBMISSIONS_TABLE_FILTERS,
@@ -658,6 +659,14 @@ const oldWorkspaceReducer: Reducer<WorkspaceManagerState> = (
658659
currentQuestion: action.payload.questionId
659660
}
660661
};
662+
case UPDATE_REQUEST_COUNTER:
663+
return {
664+
...state,
665+
grading: {
666+
...state.grading,
667+
requestCounter: action.payload.requestCount
668+
}
669+
};
661670
case SET_FOLDER_MODE:
662671
return {
663672
...state,

src/commons/workspace/WorkspaceTypes.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ export const TOGGLE_EDITOR_AUTORUN = 'TOGGLE_EDITOR_AUTORUN';
4040
export const TOGGLE_USING_SUBST = 'TOGGLE_USING_SUBST';
4141
export const TOGGLE_USING_CSE = 'TOGGLE_USING_CSE';
4242
export const TOGGLE_UPDATE_CSE = 'TOGGLE_UPDATE_CSE';
43+
export const UPDATE_REQUEST_COUNTER = 'UPDATE_REQUEST_COUNTER';
4344
export const UPDATE_SUBMISSIONS_TABLE_FILTERS = 'UPDATE_SUBMISSIONS_TABLE_FILTERS';
4445
export const UPDATE_GRADING_COLUMN_VISIBILITY = 'UPDATE_GRADING_COLUMN_VISIBILITY';
4546
export const UPDATE_CURRENT_ASSESSMENT_ID = 'UPDATE_CURRENT_ASSESSMENT_ID';
@@ -82,6 +83,7 @@ type GradingWorkspaceAttr = {
8283
readonly currentSubmission?: number;
8384
readonly currentQuestion?: number;
8485
readonly hasUnsavedChanges: boolean;
86+
readonly requestCounter: number;
8587
};
8688
type GradingWorkspaceState = GradingWorkspaceAttr & WorkspaceState;
8789

src/pages/academy/grading/Grading.tsx

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@ import '@tremor/react/dist/esm/tremor.css';
33
import { Icon as BpIcon, NonIdealState, Position, Spinner, SpinnerSize } from '@blueprintjs/core';
44
import { IconNames } from '@blueprintjs/icons';
55
import { Button, Card, Flex, Text, Title } from '@tremor/react';
6-
import React, { useCallback, useState } from 'react';
6+
import React, { useCallback, useEffect, useState } from 'react';
77
import { useDispatch } from 'react-redux';
88
import { Navigate, useParams } from 'react-router';
99
import { fetchGradingOverviews } from 'src/commons/application/actions/SessionActions';
1010
import { Role } from 'src/commons/application/ApplicationTypes';
1111
import SimpleDropdown from 'src/commons/SimpleDropdown';
12-
import { useSession } from 'src/commons/utils/Hooks';
12+
import { useSession, useTypedSelector } from 'src/commons/utils/Hooks';
13+
import { updateRequestCounter } from 'src/commons/workspace/WorkspaceActions';
1314
import { numberRegExp } from 'src/features/academy/AcademyTypes';
1415
import {
1516
exportGradingCSV,
@@ -50,8 +51,12 @@ const Grading: React.FC = () => {
5051
const [showAllSubmissions, setShowAllSubmissions] = useState(false);
5152

5253
const dispatch = useDispatch();
54+
const requestCounter = useTypedSelector(state => state.workspaces.grading.requestCounter);
55+
5356
const updateGradingOverviewsCallback = useCallback(
5457
(page: number, filterParams: Object) => {
58+
console.log("+1 parent");
59+
dispatch(updateRequestCounter(requestCounter + 1));
5560
dispatch(
5661
fetchGradingOverviews(
5762
showAllGroups,
@@ -64,6 +69,10 @@ const Grading: React.FC = () => {
6469
[dispatch, showAllGroups, showAllSubmissions, pageSize]
6570
);
6671

72+
useEffect(() => {
73+
dispatch(updateRequestCounter(Math.max(0, requestCounter - 1)));
74+
}, [gradingOverviews]);
75+
6776
// If submissionId or questionId is defined but not numeric, redirect back to the Grading overviews page
6877
if (
6978
(params.submissionId && !params.submissionId?.match(numberRegExp)) ||

0 commit comments

Comments
 (0)