Skip to content

Frontend MVP for Source Academy Rook #1878

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 161 commits into from
Aug 3, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
161 commits
Select commit Hold shift + click to select a range
3999046
Remove game and achievements toggle in .env
chownces Jun 11, 2021
90a9a62
Added CourseRegistration and CourseConfiguration to session types
chownces Jun 11, 2021
9fa8214
Added achievements and game toggle from store
chownces Jun 11, 2021
4dd33a2
Updated Application routes for Source Academy @NUS and playground-onl…
chownces Jun 12, 2021
03d9c36
Updated Academy Assessment routes and changed Assessment category to …
chownces Jun 12, 2021
412dc99
Updated academy navbar routing and included assessment types from bac…
chownces Jun 12, 2021
c8c4655
Handle conditional rendering of sourcecast and playground in navbar
chownces Jun 12, 2021
4d59fb2
Handle notifications filter in navbar
chownces Jun 13, 2021
aa980a0
Updated to AssessmentType instead of string
chownces Jun 13, 2021
a54c7cb
Update SessionState and default SessionState
chownces Jun 13, 2021
6e1be61
Fix AchievementSaga.ts compilation errors
chownces Jun 13, 2021
0c8d9ee
Updated FETCH_AUTH in BackendSaga.ts, and made BackendSaga compilable
chownces Jun 13, 2021
12f2cf4
Refactor AchievementSaga
chownces Jun 13, 2021
191aebb
RequestsSaga, and added /user and config update endpoints
chownces Jun 13, 2021
26e60f3
Commented out sublanguages related reducers and sagas
chownces Jun 13, 2021
b536946
Yarn format
chownces Jun 13, 2021
fb7c79f
Updated AssessmentMocks to reflect new AssessmentTypes
chownces Jun 13, 2021
6cfacc6
Updated UserMocks notifications to reflect new AssessmentTypes
chownces Jun 13, 2021
8846024
Make EditingOverviewCard compilable, and updated navbar assessment ty…
chownces Jun 13, 2021
e4e5551
Make Profile compilable
chownces Jun 13, 2021
eadd5c3
Renamed AssessmentTypes to AssessmentType[]
chownces Jun 13, 2021
acf0fe8
Make ProfileCard compilable
chownces Jun 13, 2021
0601330
Make AssessmentWorkspace compilable
chownces Jun 13, 2021
1abe67f
Commented out deprecated achievements reducers. Those in RequestsSaga…
chownces Jun 13, 2021
7072c82
Make DefaultChapterSelect compilable. Updated changeSublanguage reduc…
chownces Jun 13, 2021
54d1e18
Make Playground compilable. Removed effect which fetches default subl…
chownces Jun 13, 2021
691b66f
Yarn format
chownces Jun 13, 2021
051d3db
Make InsertFakeAchievements compilable. Note that achievements might …
chownces Jun 13, 2021
e4398e9
Make EditingWorkspace compilable
chownces Jun 13, 2021
133d7c5
Make BackendMocks compilable
chownces Jun 13, 2021
a21fbb5
Make GradingMocks compilable
chownces Jun 13, 2021
e7691ea
Updated SessionTypes default types
chownces Jun 13, 2021
7cd7d66
Make RemoteExecutionSaga compilable
chownces Jun 13, 2021
905420a
Make SideContentRemoteExecution compilable
chownces Jun 13, 2021
d0d49e2
Make XMLParserHelper compilable
chownces Jun 13, 2021
5235d61
Make index.tsx compilable
chownces Jun 13, 2021
2939d61
Make Game and StorySimulator compilable
chownces Jun 13, 2021
0dde4fa
Updated SessionState typing and make localStorage compilable
chownces Jun 13, 2021
e86c9b6
Refactor SessionTypes and fix compilation errors
chownces Jun 13, 2021
89ed1a6
Handle routing to Welcome page when user has no course
chownces Jun 13, 2021
399321b
Handle stories request URLs
chownces Jun 13, 2021
d63ed8d
Use courseName and courseShortname. Hide Playground when user has no …
chownces Jun 15, 2021
d1c8999
Merge branch 'master' into multitenant/dev
chownces Jun 15, 2021
a9cc8fa
Removed playground button from Login component
chownces Jun 15, 2021
e77d4cf
Updated localStorage to include course config info
chownces Jun 15, 2021
44907b2
Updated routing, and added hover secondary navbar for playground and …
chownces Jun 15, 2021
0efb89f
Added Card to welcome page
chownces Jun 15, 2021
c790d3a
Updated Backend and Requests sagas
chownces Jun 16, 2021
78f3a2e
Yarn format
chownces Jun 16, 2021
6402792
Fix Achievements routing
chownces Jun 16, 2021
164c532
Implemented course selection
chownces Jun 16, 2021
0ad5eee
Updated tests for Backend saga, Sessions actions and reducers
chownces Jun 16, 2021
2f6a48b
Update readme
chownces Jun 16, 2021
b074393
Update dropdown logic
chownces Jun 16, 2021
0c175b7
Updated backend mocks
chownces Jun 16, 2021
1c83622
Updated assessment types url handling
chownces Jun 16, 2021
776dccb
Compile
chownces Jun 16, 2021
1cced51
Remove capitalization of assessment types from backend
chownces Jun 16, 2021
f910505
Edit ContributorsDetails and remove 'contributor' word from navbar
chownces Jun 17, 2021
6ddd97a
Hide SICP navbar button behind login and update to courseShortName
chownces Jun 17, 2021
d6cba81
added admin panel
YaleChen299 Jun 19, 2021
b8ffbaa
added assessment config panel
YaleChen299 Jun 20, 2021
886bc56
Update endpoints
chownces Jun 20, 2021
a6d86c1
Update localStorage tests
chownces Jun 20, 2021
2f540ee
Updated AdminPanel data fetching
chownces Jun 20, 2021
767bdff
Added /config endpoint
chownces Jun 20, 2021
57dd255
Update postLatestViewedCourse
chownces Jun 20, 2021
683a751
Updated to endpoints to /courses
chownces Jun 20, 2021
66c7de1
Update config endpoints
chownces Jun 20, 2021
3552237
Update naming to match backend
chownces Jun 20, 2021
1bcafc7
Updated Welcome page
chownces Jun 20, 2021
33e54e2
Updated content loading for admin panel
chownces Jun 20, 2021
b82fe27
updating to match backend
YaleChen299 Jun 21, 2021
f406571
Merge branch 'multitenant/dev' of https://github.com/chownces/cadet-f…
YaleChen299 Jun 21, 2021
a84ca3f
Merge branch 'master' into multitenant/dev
chownces Jun 24, 2021
e8a1173
Fix tests
chownces Jun 24, 2021
b538f65
Fix merge error in navbar
chownces Jun 24, 2021
c6a6b76
Updated AdminPanel UI and local state
chownces Jun 24, 2021
f195fd3
Added add row and delete row for assessment types
chownces Jun 25, 2021
9cbf0a4
Added fetch userCourseRegistrations sagas and reducers
chownces Jun 25, 2021
c338cdd
Added admin user management page
chownces Jun 25, 2021
9df3061
Added submit button
chownces Jun 25, 2021
f00dfb6
remove decay rate and change config
YaleChen299 Jun 25, 2021
dc0d06f
Added add user UI
chownces Jun 27, 2021
70ef37c
Added add users submit button and sagas
chownces Jun 27, 2021
1036260
Added create course sagas
chownces Jun 27, 2021
558f410
Added create course UI
chownces Jun 27, 2021
bd76750
Merge branch 'master' into multitenant/dev
chownces Jun 27, 2021
9135dcf
Updated mobile navbar ui test
chownces Jun 27, 2021
94664fb
Updated assessment config panel UI
chownces Jun 28, 2021
c1b7fff
Updated dropdown tests
chownces Jun 28, 2021
fdef0ce
Updated user panel UI to show actions column
chownces Jun 30, 2021
72a7fa5
Added assessment config deletion endpoint and logic
chownces Jun 30, 2021
ae1af7e
Added /user endpoint call whenever page is refreshed to get updated c…
chownces Jul 2, 2021
8a5f9dc
Fix outdated test mocks
chownces Jul 2, 2021
557dc16
Updated routing for mission control component. Now only accessible by…
chownces Jul 2, 2021
7f18bf8
Update XML upload workflow
chownces Jul 2, 2021
d251851
Updated frontend assessmentConfig type to match backend (build_hidden…
chownces Jul 2, 2021
cebfa5a
Updated /user endpoint return values, and updated Sessions store to r…
chownces Jul 2, 2021
e0075b8
Replace 'Path' hardcode in assessment workspace
chownces Jul 2, 2021
10a225d
Updated welcome page links
chownces Jul 2, 2021
686a5d6
Fix tests
chownces Jul 2, 2021
5d4f31f
Reorganised admin panel components
chownces Jul 3, 2021
665dfa7
Updated assessment config to match backend
chownces Jul 3, 2021
c7dff80
Updated computeGradingStatus in RequestsSaga
chownces Jul 3, 2021
fbec14d
Updated tests
chownces Jul 3, 2021
325f948
Update add user csv file upload
chownces Jul 3, 2021
0fd2326
Fix more tests
chownces Jul 3, 2021
e588837
Fix popover with ag-grid hover bug on safari and chrome
chownces Jul 3, 2021
02ca516
Remove grade metric from frontend
chownces Jul 4, 2021
2bbc81a
Updated assessment config and question types in frontend
chownces Jul 5, 2021
ec54ea1
Updated devices routes
chownces Jul 5, 2021
6ffc6cc
Update failing tests
chownces Jul 5, 2021
9da9dee
Added dynamic dashboard table rendering
chownces Jul 5, 2021
061aab2
Updated Profile and other bugs
chownces Jul 6, 2021
3541548
Reverted mission control routing
chownces Jul 6, 2021
2f9a015
Fix course switching bug
chownces Jul 6, 2021
a188432
Fix miscellaneous stuff
chownces Jul 6, 2021
341d4dd
Updated create course saga
chownces Jul 6, 2021
306e74e
Merge branch 'master' into multitenant/dev
chownces Jul 6, 2021
fe95eeb
Add picture_mse to CURVES library
chownces Jul 6, 2021
1a00d49
Update .env.example
chownces Jul 6, 2021
283bb0d
Remove picture_mse
chownces Jul 6, 2021
693b504
Updated luminus tootip for add users panel
chownces Jul 8, 2021
3c1198d
Update Requests saga naming
chownces Jul 8, 2021
a98163a
Updated frontend mocks
chownces Jul 8, 2021
4b0a823
Refactored backendsaga fetch auth
chownces Jul 8, 2021
c1e3e70
Rename crId to courseRegId
chownces Jul 8, 2021
2773267
fix grading table field name
YaleChen299 Jul 8, 2021
6a642b4
Simplify dashboard rendering
chownces Jul 9, 2021
416e839
Remove activeTab state from Redux store
chownces Jul 10, 2021
cba3d86
Fix GithubWorkspace tab bug
chownces Jul 10, 2021
8343c59
Fix tests
chownces Jul 10, 2021
93b1385
Merge branch 'master' into multi
chownces Jul 11, 2021
a26a765
Merge branch 'playground' into multi
chownces Jul 11, 2021
98d7227
Fix assessment routing bug when navigating directly with url to an as…
chownces Jul 11, 2021
cb5c474
Update course viewability
chownces Jul 11, 2021
a5a0094
tests
chownces Jul 11, 2021
4d48a97
Added markdown for course help text
chownces Jul 11, 2021
677b73e
Updated handling of large courses and large user uploads
chownces Jul 12, 2021
495a4ca
Fix grading summary userId bug
chownces Jul 13, 2021
47c5289
Update to new testcase types requirements
chownces Jul 13, 2021
eaef80d
Merge branch 'master' into multitenant/dev
chownces Jul 14, 2021
aaca32d
Fix assets endpoint
chownces Jul 15, 2021
8c27dac
Fix sublanguage bug for shared links
chownces Jul 15, 2021
1506ec3
Fix playground shared links bug
chownces Jul 16, 2021
68be07e
Merge branch 'master' into multitenant/dev
chownces Jul 16, 2021
c30af18
Merge branch 'shared-links' into multitenant/dev
chownces Jul 16, 2021
47e94ee
Update achievement goals update endpoint
chownces Jul 18, 2021
5526247
Update request saga endpoints
chownces Jul 20, 2021
0af1e9a
Fix miscellaneous stuff after self-review
chownces Jul 28, 2021
f853e59
Updated MCQ blocking and no solution progress. Other Miscellaneous fixes
chownces Jul 28, 2021
d6e1d7e
Merge branch 'master' into multitenant/dev
chownces Jul 28, 2021
bb8c585
Merge branch 'master' into multitenant/dev
chownces Jul 29, 2021
5608e68
Update delete assessment config endpoint
chownces Jul 29, 2021
bdef2b0
Handle case where user has courses, but backend has no latestViewedCo…
chownces Jul 29, 2021
89363e0
Refactor AdminPanel typing with KeysOfType helper
chownces Aug 2, 2021
acae905
Remove NUS hardcoded stuff. Added deployment name config in .env. use…
chownces Aug 2, 2021
563ae6d
Add CSV error line number
chownces Aug 2, 2021
47a4b6e
Refactor playground language switching
chownces Aug 2, 2021
1703a6f
Merge branch 'master' into multitenant/dev
chownces Aug 2, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
REACT_APP_DEPLOYMENT_NAME=Source Academy

REACT_APP_BACKEND_URL=http://localhost:4000
REACT_APP_USE_BACKEND=TRUE
REACT_APP_PLAYGROUND_ONLY=FALSE
REACT_APP_ENABLE_GAME=TRUE
REACT_APP_ENABLE_ACHIEVEMENTS=TRUE
REACT_APP_ENABLE_GITHUB_ASSESSMENTS=TRUE

REACT_APP_URL_SHORTENER_SIGNATURE=
Expand All @@ -24,7 +24,7 @@ REACT_APP_OAUTH2_PROVIDER3_ENDPOINT=http://localhost:8000/login?provider=test&co

## LumiNUS example
## the provider ID, must be URL-friendly (must match the backend configuration)
# REACT_APP_OAUTH2_PROVIDER1=nusnet_id
# REACT_APP_OAUTH2_PROVIDER1=luminus
## the name shown on the login screen: "Log in with ..."
# REACT_APP_OAUTH2_PROVIDER1_NAME=LumiNUS
## the OAuth2 endpoint (which must include a client_id, as part of the OAuth2 specification)
Expand Down
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,9 +83,8 @@ The frontend can be configured to disable itself (based on user's system time) d

#### Other configuration

1. `REACT_APP_DEPLOYMENT_NAME`: The name of the Source Academy deployment. This will be shown in the `/welcome` route. Defaults to 'Source Academy'.
1. `REACT_APP_PLAYGROUND_ONLY`: Whether to build the "playground-only" version, which disables the Academy components, so only the Playground is available. This is what we deploy onto [GitHub Pages](https://source-academy.github.io).
1. `REACT_APP_ENABLE_GAME`: Whether to enable the game. Off by default.
1. `REACT_APP_ENABLE_ACHIEVEMENTS`: Whether to enable the incentives/achievements system. Off by default.
1. `REACT_APP_ENABLE_GITHUB_ASSESSMENTS`: Whether to enable the GitHub Assessments feature. Off by default.

## Development
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@
"react-konva": "^17.0.2-4",
"react-latex-next": "^2.0.0",
"react-mde": "^11.5.0",
"react-papaparse": "^3.16.1",
"react-redux": "^7.2.4",
"react-responsive": "^8.2.0",
"react-router": "^5.2.0",
Expand Down
34 changes: 11 additions & 23 deletions src/commons/XMLParser/XMLParserHelper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ import { Builder } from 'xml2js';
import { ExternalLibraryName } from '../application/types/ExternalTypes';
import {
Assessment,
AssessmentCategories,
AssessmentOverview,
AssessmentStatuses,
AssessmentType,
BaseQuestion,
GradingStatuses,
IMCQQuestion,
Expand Down Expand Up @@ -60,24 +60,18 @@ export const storeLocalAssessmentOverview = (overview: AssessmentOverview): void

export const makeEntireAssessment = (result: any): [AssessmentOverview, Assessment] => {
const assessmentArr = makeAssessment(result);
const overview = makeAssessmentOverview(result, assessmentArr[1], assessmentArr[2]);
const overview = makeAssessmentOverview(result, assessmentArr[1]);
return [overview, assessmentArr[0]];
};

const makeAssessmentOverview = (
result: any,
maxGradeVal: number,
maxXpVal: number
): AssessmentOverview => {
const makeAssessmentOverview = (result: any, maxXpVal: number): AssessmentOverview => {
const task: XmlParseStrTask = result.CONTENT.TASK[0];
const rawOverview: XmlParseStrOverview = task.$;
return {
category: capitalizeFirstLetter(rawOverview.kind) as AssessmentCategories,
type: capitalizeFirstLetter(rawOverview.kind) as AssessmentType,
closeAt: rawOverview.duedate,
coverImage: rawOverview.coverimage,
grade: 1,
id: EDITING_ID,
maxGrade: maxGradeVal,
maxXp: maxXpVal,
number: rawOverview.number || '',
openAt: rawOverview.startdate,
Expand All @@ -91,13 +85,13 @@ const makeAssessmentOverview = (
};
};

const makeAssessment = (result: any): [Assessment, number, number] => {
const makeAssessment = (result: any): [Assessment, number] => {
const task: XmlParseStrTask = result.CONTENT.TASK[0];
const rawOverview: XmlParseStrOverview = task.$;
const questionArr = makeQuestions(task);
return [
{
category: capitalizeFirstLetter(rawOverview.kind) as AssessmentCategories,
type: capitalizeFirstLetter(rawOverview.kind) as AssessmentType,
id: EDITING_ID,
globalDeployment: makeLibrary(task.DEPLOYMENT),
graderDeployment: makeLibrary(task.GRADERDEPLOYMENT),
Expand All @@ -106,8 +100,7 @@ const makeAssessment = (result: any): [Assessment, number, number] => {
questions: questionArr[0],
title: rawOverview.title
},
questionArr[1],
questionArr[2]
questionArr[1]
];
};

Expand Down Expand Up @@ -147,8 +140,7 @@ const makeLibrary = (deploymentArr: XmlParseStrDeployment[] | undefined): Librar
}
};

const makeQuestions = (task: XmlParseStrTask): [Question[], number, number] => {
let maxGrade = 0;
const makeQuestions = (task: XmlParseStrTask): [Question[], number] => {
let maxXp = 0;
const questions: Array<IProgrammingQuestion | IMCQQuestion> = [];
task.PROBLEMS[0].PROBLEM.forEach((problem: XmlParseStrProblem, curId: number) => {
Expand All @@ -161,11 +153,8 @@ const makeQuestions = (task: XmlParseStrTask): [Question[], number, number] => {
graderLibrary: makeLibrary(problem.GRADERDEPLOYMENT),
type: problem.$.type,
xp: 0,
grade: 0,
maxGrade: parseInt(problem.$.maxgrade, 10),
maxXp: localMaxXp
};
maxGrade += parseInt(problem.$.maxgrade, 10);
maxXp += localMaxXp;
if (question.type === 'programming') {
questions.push(makeProgramming(problem as XmlParseStrPProblem, question));
Expand All @@ -174,7 +163,7 @@ const makeQuestions = (task: XmlParseStrTask): [Question[], number, number] => {
questions.push(makeMCQ(problem as XmlParseStrCProblem, question));
}
});
return [questions, maxGrade, maxXp];
return [questions, maxXp];
};

const makeMCQ = (problem: XmlParseStrCProblem, question: BaseQuestion): IMCQQuestion => {
Expand Down Expand Up @@ -306,7 +295,7 @@ export const assessmentToXml = (
const rawOverview: XmlParseStrOverview = {
coverimage: overview.coverImage,
duedate: overview.closeAt,
kind: overview.category.toLowerCase(),
kind: overview.type.toLowerCase(),
number: overview.number || '',
startdate: overview.openAt,
story: overview.story,
Expand All @@ -331,8 +320,7 @@ export const assessmentToXml = (
assessment.questions.forEach((question: Question) => {
const problem = {
$: {
type: question.type,
maxgrade: question.maxGrade
type: question.type
},
SNIPPET: {
SOLUTION: question.answer
Expand Down
13 changes: 8 additions & 5 deletions src/commons/achievement/AchievementManualEditor.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ type AchievementManualEditorProps = {
studio: string;
users: AchievementUser[];
getUsers: () => void;
updateGoalProgress: (studentId: number, progress: GoalProgress) => void;
updateGoalProgress: (studentCourseRegId: number, progress: GoalProgress) => void;
};

const GoalSelect = Select.ofType<AchievementGoal>();
Expand All @@ -24,10 +24,13 @@ function AchievementManualEditor(props: AchievementManualEditorProps) {
const { studio, getUsers, updateGoalProgress } = props;
const users =
studio === 'Staff'
? [...props.users].sort((user1, user2) => user1.name.localeCompare(user2.name))
? // The name can be null for users who have yet to log in. We push these to the back of the array.
[...props.users].sort((user1, user2) =>
user1.name ? user1.name.localeCompare(user2.name) : 1
)
: props.users
.filter(user => user.group === studio)
.sort((user1, user2) => user1.name.localeCompare(user2.name));
.sort((user1, user2) => (user1.name ? user1.name.localeCompare(user2.name) : 1));

useEffect(getUsers, [getUsers]);

Expand All @@ -42,7 +45,7 @@ function AchievementManualEditor(props: AchievementManualEditorProps) {

const UserSelect = Select.ofType<AchievementUser>();
const userRenderer: ItemRenderer<AchievementUser> = (user, { handleClick }) => (
<MenuItem key={user.userId} onClick={handleClick} text={user.name} />
<MenuItem key={user.courseRegId} onClick={handleClick} text={user.name} />
);

const updateGoal = () => {
Expand All @@ -53,7 +56,7 @@ function AchievementManualEditor(props: AchievementManualEditorProps) {
targetCount: goal.targetCount,
completed: count >= goal.targetCount
};
updateGoalProgress(selectedUser.userId, progress);
updateGoalProgress(selectedUser.courseRegId, progress);
}
};

Expand Down
8 changes: 4 additions & 4 deletions src/commons/achievement/utils/InsertFakeAchievements.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ function insertFakeAchievements(
inferencer.insertFakeGoalDefinition(
{
uuid: idString + '0',
text: `Submitted ${assessmentOverview.category.toLowerCase()}`,
text: `Submitted ${assessmentOverview.type}`,
achievementUuids: [idString],
meta: {
type: GoalType.ASSESSMENT,
Expand All @@ -38,7 +38,7 @@ function insertFakeAchievements(
inferencer.insertFakeGoalDefinition(
{
uuid: idString + '1',
text: `Graded ${assessmentOverview.category.toLowerCase()}`,
text: `Graded ${assessmentOverview.type}`,
achievementUuids: [idString],
meta: {
type: GoalType.ASSESSMENT,
Expand All @@ -53,7 +53,7 @@ function insertFakeAchievements(
uuid: idString,
title: assessmentOverview.title,
ability:
assessmentOverview.category === 'Mission' || assessmentOverview.category === 'Path'
assessmentOverview.type === 'Missions' || assessmentOverview.type === 'Paths'
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

probably need the achievements team to remove this hardcode

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This may need a new assessment flag: "Show in achievements?"

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will be removing this categorisation as discussed. Probably in #1886

? AchievementAbility.CORE
: AchievementAbility.EFFORT,
xp:
Expand All @@ -71,7 +71,7 @@ function insertFakeAchievements(
view: {
coverImage: `${coverImageUrl}/default.png`,
description: assessmentOverview.shortSummary,
completionText: `Grade: ${assessmentOverview.grade} / ${assessmentOverview.maxGrade}`
completionText: `XP: ${assessmentOverview.xp} / ${assessmentOverview.maxXp}`
}
});
}
Expand Down
Loading