Skip to content

Commit 6a123b6

Browse files
committed
prettier changes
1 parent 4e24010 commit 6a123b6

File tree

22 files changed

+606
-502
lines changed

22 files changed

+606
-502
lines changed

src/commons/application/ApplicationTypes.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Chapter, Language, SourceError, Variant } from 'js-slang/dist/types';
2-
32
import { LeaderboardState } from 'src/features/leaderboard/LeaderboardTypes';
3+
44
import { AchievementState } from '../../features/achievement/AchievementTypes';
55
import { DashboardState } from '../../features/dashboard/DashboardTypes';
66
import { PlaygroundState } from '../../features/playground/PlaygroundTypes';
@@ -357,8 +357,8 @@ export const defaultLeaderboard: LeaderboardState = {
357357
userXp: [],
358358
contestScore: [],
359359
contestPopularVote: [],
360-
code: "Initial code"
361-
}
360+
code: 'Initial code'
361+
};
362362

363363
const getDefaultLanguageConfig = (): SALanguage => {
364364
const languageConfig = ALL_LANGUAGES.find(

src/commons/application/reducers/RootReducer.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { combineReducers, Reducer } from '@reduxjs/toolkit';
22
import { SourceActionType } from 'src/commons/utils/ActionsHelper';
3-
43
import { LeaderboardReducer as leaderboard } from 'src/features/leaderboard/LeaderboardReducer';
4+
55
import { AchievementReducer as achievement } from '../../../features/achievement/AchievementReducer';
66
import { DashboardReducer as dashboard } from '../../../features/dashboard/DashboardReducer';
77
import { PlaygroundReducer as playground } from '../../../features/playground/PlaygroundReducer';

src/commons/application/types/SessionTypes.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ export type SessionState = {
4040
readonly enableSourcecast?: boolean;
4141
readonly enableStories?: boolean;
4242
readonly enableOverallLeaderboard?: boolean;
43-
readonly enableContestLeaderboard?: boolean;
43+
readonly enableContestLeaderboard?: boolean;
4444
readonly topLeaderboardDisplay?: number;
4545
readonly sourceChapter?: Chapter;
4646
readonly sourceVariant?: Variant;

src/commons/assessmentWorkspace/AssessmentWorkspace.tsx

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { useDispatch, useStore } from 'react-redux';
1919
import { useNavigate } from 'react-router';
2020
import { showSimpleConfirmDialog } from 'src/commons/utils/DialogHelper';
2121
import { onClickProgress } from 'src/features/assessments/AssessmentUtils';
22+
import LeaderboardActions from 'src/features/leaderboard/LeaderboardActions';
2223
import { mobileOnlyTabIds } from 'src/pages/playground/PlaygroundTabs';
2324

2425
import { initSession, log } from '../../features/eventLogging';
@@ -76,7 +77,6 @@ import Workspace, { WorkspaceProps } from '../workspace/Workspace';
7677
import WorkspaceActions from '../workspace/WorkspaceActions';
7778
import { WorkspaceLocation, WorkspaceState } from '../workspace/WorkspaceTypes';
7879
import AssessmentWorkspaceGradingResult from './AssessmentWorkspaceGradingResult';
79-
import LeaderboardActions from 'src/features/leaderboard/LeaderboardActions';
8080

8181
export type AssessmentWorkspaceProps = {
8282
assessmentId: number;
@@ -191,17 +191,20 @@ const AssessmentWorkspace: React.FC<AssessmentWorkspaceProps> = props => {
191191
// eslint-disable-next-line react-hooks/exhaustive-deps
192192
}, []);
193193

194-
const code = useTypedSelector(store =>store.leaderboard.code) || "Initial code";
194+
const code = useTypedSelector(store => store.leaderboard.code) || 'Initial code';
195195
const state = useStore<OverallState>();
196196
useEffect(() => {
197-
console.log("CODE: ", code);
197+
console.log('CODE: ', code);
198198
const timeoutId = setTimeout(() => {
199-
if (code !== "Initial code") {
200-
console.log("UPDATING");
199+
if (code !== 'Initial code') {
200+
console.log('UPDATING');
201201
dispatch(WorkspaceActions.updateEditorValue(workspaceLocation, 0, code));
202-
console.log("UPDATED EDITOR VALUE WORKSPACE: ", state.getState().workspaces[workspaceLocation].editorTabs[0].value);
202+
console.log(
203+
'UPDATED EDITOR VALUE WORKSPACE: ',
204+
state.getState().workspaces[workspaceLocation].editorTabs[0].value
205+
);
203206
}
204-
207+
205208
// Clear the code after the delay
206209
dispatch(LeaderboardActions.clearCode());
207210
}, 0);
@@ -254,7 +257,7 @@ const AssessmentWorkspace: React.FC<AssessmentWorkspaceProps> = props => {
254257
} else {
255258
answer = (question as IProgrammingQuestion).solutionTemplate;
256259
}
257-
} else if (question.type === QuestionTypes.voting && code !== "Initial code") {
260+
} else if (question.type === QuestionTypes.voting && code !== 'Initial code') {
258261
answer = code;
259262
}
260263

src/commons/dropdown/DropdownCreateCourse.tsx

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -267,16 +267,16 @@ const DropdownCreateCourse: React.FC<Props> = props => {
267267
labelInfo="(configurable later on)"
268268
labelFor="leaderboard-top-display"
269269
>
270-
<InputGroup
271-
id="topLeaderboardDisplay"
272-
value={String(courseConfig.topLeaderboardDisplay)}
273-
onChange={e =>
274-
setCourseConfig({
275-
...courseConfig,
276-
topLeaderboardDisplay: Number(e.target.value)
277-
})
278-
}
279-
/>
270+
<InputGroup
271+
id="topLeaderboardDisplay"
272+
value={String(courseConfig.topLeaderboardDisplay)}
273+
onChange={e =>
274+
setCourseConfig({
275+
...courseConfig,
276+
topLeaderboardDisplay: Number(e.target.value)
277+
})
278+
}
279+
/>
280280
</FormGroup>
281281
</div>
282282
<div>
Lines changed: 40 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,48 @@
1-
import LeaderboardActions from "src/features/leaderboard/LeaderboardActions";
2-
import { combineSagaHandlers } from "../redux/utils";
31
import { call, put } from 'redux-saga/effects';
2+
import LeaderboardActions from 'src/features/leaderboard/LeaderboardActions';
3+
44
import { Tokens } from '../application/types/SessionTypes';
5+
import { combineSagaHandlers } from '../redux/utils';
6+
import { actions } from '../utils/ActionsHelper';
57
import { selectTokens } from './BackendSaga';
6-
import { getAllTotalXp, getContestScoreLeaderboard, getContestPopularVoteLeaderboard } from "./RequestsSaga";
7-
import { actions } from "../utils/ActionsHelper";
8+
import {
9+
getAllTotalXp,
10+
getContestPopularVoteLeaderboard,
11+
getContestScoreLeaderboard
12+
} from './RequestsSaga';
813

914
const LeaderboardSaga = combineSagaHandlers(LeaderboardActions, {
10-
getAllUsersXp: function* (action) {
11-
const tokens: Tokens = yield selectTokens();
12-
13-
const usersXp = yield call(getAllTotalXp, tokens);
14-
15-
if (usersXp) {
16-
yield put(actions.saveAllUsersXp(usersXp))
17-
}
18-
},
19-
20-
getAllContestScores: function* (action) {
21-
const tokens: Tokens = yield selectTokens();
22-
const assessmentId = action.payload;
23-
24-
const contestScores = yield call(getContestScoreLeaderboard, assessmentId, tokens);
25-
26-
if (contestScores) {
27-
yield put(actions.saveAllContestScores(contestScores))
28-
}
29-
},
30-
31-
getAllContestPopularVotes: function* (action) {
32-
const tokens: Tokens = yield selectTokens();
33-
const assessmentId = action.payload;
34-
35-
const contestPopularVotes = yield call(getContestPopularVoteLeaderboard, assessmentId, tokens);
36-
37-
if (contestPopularVotes) {
38-
yield put(actions.saveAllContestPopularVotes(contestPopularVotes))
39-
}
15+
getAllUsersXp: function* (action) {
16+
const tokens: Tokens = yield selectTokens();
17+
18+
const usersXp = yield call(getAllTotalXp, tokens);
19+
20+
if (usersXp) {
21+
yield put(actions.saveAllUsersXp(usersXp));
22+
}
23+
},
24+
25+
getAllContestScores: function* (action) {
26+
const tokens: Tokens = yield selectTokens();
27+
const assessmentId = action.payload;
28+
29+
const contestScores = yield call(getContestScoreLeaderboard, assessmentId, tokens);
30+
31+
if (contestScores) {
32+
yield put(actions.saveAllContestScores(contestScores));
33+
}
34+
},
35+
36+
getAllContestPopularVotes: function* (action) {
37+
const tokens: Tokens = yield selectTokens();
38+
const assessmentId = action.payload;
39+
40+
const contestPopularVotes = yield call(getContestPopularVoteLeaderboard, assessmentId, tokens);
41+
42+
if (contestPopularVotes) {
43+
yield put(actions.saveAllContestPopularVotes(contestPopularVotes));
4044
}
45+
}
4146
});
4247

43-
export default LeaderboardSaga
48+
export default LeaderboardSaga;

src/commons/sagas/MainSaga.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import { all, fork } from 'redux-saga/effects';
44
import { mockBackendSaga } from '../mocks/BackendMocks';
55
import Constants from '../utils/Constants';
66
import AchievementSaga from './AchievementSaga';
7-
import LeaderboardSaga from './LeaderboardSaga';
87
import BackendSaga from './BackendSaga';
98
import GitHubPersistenceSaga from './GitHubPersistenceSaga';
9+
import LeaderboardSaga from './LeaderboardSaga';
1010
import LoginSaga from './LoginSaga';
1111
import PersistenceSaga from './PersistenceSaga';
1212
import PlaygroundSaga from './PlaygroundSaga';

src/commons/sagas/RequestsSaga.ts

Lines changed: 32 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { call } from 'redux-saga/effects';
22
import { backendParamsToProgressStatus } from 'src/features/grading/GradingUtils';
3+
import { ContestLeaderboardRow, LeaderboardRow } from 'src/features/leaderboard/LeaderboardTypes';
34
import { OptionType } from 'src/pages/academy/teamFormation/subcomponents/TeamFormationForm';
45

56
import {
@@ -56,7 +57,6 @@ import { castLibrary } from '../utils/CastBackend';
5657
import Constants from '../utils/Constants';
5758
import { showWarningMessage } from '../utils/notifications/NotificationsHelper';
5859
import { request } from '../utils/RequestHelper';
59-
import { ContestLeaderboardRow, LeaderboardRow } from 'src/features/leaderboard/LeaderboardTypes';
6060

6161
// eslint-disable-next-line @typescript-eslint/no-require-imports
6262
const XLSX = require('xlsx');
@@ -462,15 +462,14 @@ export const getTotalXp = async (tokens: Tokens, courseRegId?: number): Promise<
462462
* GET /courses/{courseId}/all_user_xp
463463
*/
464464
export const getAllTotalXp = async (tokens: Tokens): Promise<number | null> => {
465-
let resp;
466-
resp = await request(`${courseId()}/all_users_xp`, 'GET', {
465+
const resp = await request(`${courseId()}/all_users_xp`, 'GET', {
467466
...tokens
468467
});
469468

470469
if (!resp || !resp.ok) {
471470
return null; // invalid accessToken _and_ refreshToken
472471
}
473-
472+
474473
const rows = await resp.json();
475474

476475
return rows.users.map(
@@ -479,8 +478,8 @@ export const getAllTotalXp = async (tokens: Tokens): Promise<number | null> => {
479478
name: row.name,
480479
username: row.username,
481480
xp: row.total_xp,
482-
avatar: "",
483-
achievements: ""
481+
avatar: '',
482+
achievements: ''
484483
})
485484
);
486485
};
@@ -492,15 +491,18 @@ export const getContestScoreLeaderboard = async (
492491
assessmentId: number,
493492
tokens: Tokens
494493
): Promise<number | null> => {
495-
let resp;
496-
resp = await request(`${courseId()}/leaderboard/contests/${assessmentId}/get_score_leaderboard`, 'GET', {
497-
...tokens
498-
});
494+
const resp = await request(
495+
`${courseId()}/leaderboard/contests/${assessmentId}/get_score_leaderboard`,
496+
'GET',
497+
{
498+
...tokens
499+
}
500+
);
499501

500502
if (!resp || !resp.ok) {
501503
return null; // invalid accessToken _and_ refreshToken
502504
}
503-
505+
504506
const rows = await resp.json();
505507

506508
return rows.contest_score.map(
@@ -509,7 +511,7 @@ export const getContestScoreLeaderboard = async (
509511
name: row.name,
510512
username: row.username,
511513
score: row.score,
512-
avatar: "",
514+
avatar: '',
513515
code: row.code,
514516
submissionId: row.submission_id,
515517
votingId: rows.voting_id
@@ -524,15 +526,18 @@ export const getContestPopularVoteLeaderboard = async (
524526
assessmentId: number,
525527
tokens: Tokens
526528
): Promise<number | null> => {
527-
let resp;
528-
resp = await request(`${courseId()}/leaderboard/contests/${assessmentId}/get_popular_vote_leaderboard`, 'GET', {
529-
...tokens
530-
});
529+
const resp = await request(
530+
`${courseId()}/leaderboard/contests/${assessmentId}/get_popular_vote_leaderboard`,
531+
'GET',
532+
{
533+
...tokens
534+
}
535+
);
531536

532537
if (!resp || !resp.ok) {
533538
return null; // invalid accessToken _and_ refreshToken
534539
}
535-
540+
536541
const rows = await resp.json();
537542

538543
return rows.contest_popular.map(
@@ -541,7 +546,7 @@ export const getContestPopularVoteLeaderboard = async (
541546
name: row.name,
542547
username: row.username,
543548
score: row.score,
544-
avatar: "",
549+
avatar: '',
545550
code: row.code,
546551
submissionId: row.submission_id,
547552
votingId: rows.voting_id
@@ -1239,11 +1244,15 @@ export const deleteSourcecastEntry = async (
12391244
export const calculateContestScore = async (
12401245
assessmentId: number,
12411246
tokens: Tokens
1242-
) : Promise<Response | null> => {
1243-
const resp = await request(`${courseId()}/admin/assessments/${assessmentId}/calculateContestScore`, 'POST', {
1244-
...tokens
1245-
});
1246-
1247+
): Promise<Response | null> => {
1248+
const resp = await request(
1249+
`${courseId()}/admin/assessments/${assessmentId}/calculateContestScore`,
1250+
'POST',
1251+
{
1252+
...tokens
1253+
}
1254+
);
1255+
12471256
return resp;
12481257
};
12491258

src/commons/sagas/__tests__/BackendSaga.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ const mockCourseConfiguration1: CourseConfiguration = {
135135
enableContestLeaderboard: true,
136136
enableSourcecast: true,
137137
enableStories: false,
138+
topLeaderboardDisplay: 100,
138139
sourceChapter: Chapter.SOURCE_1,
139140
sourceVariant: Variant.DEFAULT,
140141
moduleHelpText: 'Help text',
@@ -166,6 +167,7 @@ const mockCourseConfiguration2: CourseConfiguration = {
166167
enableAchievements: true,
167168
enableOverallLeaderboard: true,
168169
enableContestLeaderboard: true,
170+
topLeaderboardDisplay: 100,
169171
enableSourcecast: true,
170172
enableStories: false,
171173
sourceChapter: Chapter.SOURCE_4,
@@ -934,6 +936,7 @@ describe('Test UPDATE_COURSE_CONFIG action', () => {
934936
enableAchievements: false,
935937
enableOverallLeaderboard: true,
936938
enableContestLeaderboard: true,
939+
topLeaderboardDisplay: 100,
937940
enableSourcecast: false,
938941
enableStories: false,
939942
sourceChapter: Chapter.SOURCE_4,

src/commons/utils/ActionsHelper.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import LeaderboardActions from 'src/features/leaderboard/LeaderboardActions';
2+
23
import CommonsActions from '../../commons/application/actions/CommonsActions';
34
import InterpreterActions from '../../commons/application/actions/InterpreterActions';
45
import SessionActions from '../../commons/application/actions/SessionActions';

0 commit comments

Comments
 (0)