Skip to content

Commit d7076bb

Browse files
author
Ben Warzeski
authored
Merge pull request #4 from openedx/bw/initial_api_arch
Bw/initial api arch
2 parents b334057 + 29d3829 commit d7076bb

File tree

24 files changed

+992
-390
lines changed

24 files changed

+992
-390
lines changed

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,7 @@ temp/babel-plugin-react-intl
1717
*~
1818
/temp
1919
/.vscode
20+
21+
### Vi ###
22+
**/*.swp
23+
**/*.swo

package-lock.json

Lines changed: 708 additions & 54 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
"@edx/frontend-component-header": "4.2.3",
3939
"@edx/frontend-platform": "4.5.1",
4040
"@edx/paragon": "^20.20.0",
41+
"@edx/react-unit-test-utils": "npm:@edx/[email protected]",
4142
"@fortawesome/fontawesome-svg-core": "1.2.36",
4243
"@fortawesome/free-brands-svg-icons": "5.15.4",
4344
"@fortawesome/free-regular-svg-icons": "5.15.4",
@@ -48,6 +49,7 @@
4849
"query-string": "^8.1.0",
4950
"react": "16.14.0",
5051
"react-dom": "16.14.0",
52+
"react-query": "^3.39.3",
5153
"react-redux": "7.2.9",
5254
"react-router": "5.3.4",
5355
"react-router-dom": "5.3.4",

public/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<!doctype html>
22
<html lang="en-us">
33
<head>
4-
<title>Application Template | <%= process.env.SITE_NAME %></title>
4+
<title>Open Response Assessment| <%= process.env.SITE_NAME %></title>
55
<meta charset="utf-8">
66
<meta name="viewport" content="width=device-width, initial-scale=1.0">
77
<link rel="shortcut icon" href="<%=htmlWebpackPlugin.options.FAVICON_URL%>" type="image/x-icon" />

src/routes/index.jsx renamed to src/App.jsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import { BrowserRouter as Router, Switch, Route } from 'react-router-dom';
22
import { ErrorPage } from '@edx/frontend-platform/react';
33
import { useIntl } from '@edx/frontend-platform/i18n';
44

5-
import Assessment from './assessment';
6-
import Submission from './submission';
5+
import AssessmentView from 'views/AssessmentView';
6+
import SubmissionView from 'views/SubmissionView';
77
import messages from './messages';
88

99
const RouterRoot = () => {
@@ -13,10 +13,10 @@ const RouterRoot = () => {
1313
<Router>
1414
<Switch>
1515
<Route path="/assessment/:id">
16-
<Assessment />
16+
<AssessmentView />
1717
</Route>
1818
<Route path="/submission/:id">
19-
<Submission />
19+
<SubmissionView />
2020
</Route>
2121
<Route path="/*">
2222
<ErrorPage message={formatMessage(messages.error404Message)} />

src/data/services/lms/api.js

Lines changed: 0 additions & 45 deletions
This file was deleted.

src/data/services/lms/constants.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { StrictDict } from '@edx/react-unit-test-utils';
2+
3+
export const queryKeys = StrictDict({
4+
oraConfig: 'oraConfig',
5+
submissionData: 'submissionData',
6+
});
7+
8+
export default { queryKeys };

src/data/services/lms/dataLoaders.js

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
// ORA Config loaders
2+
export const loadAssessmentConfig = ({
3+
assessmentSteps: {
4+
order,
5+
settings: {
6+
peer,
7+
self,
8+
training,
9+
staff,
10+
},
11+
},
12+
}) => ({
13+
order,
14+
peer: peer && {
15+
startTime: peer.startTime,
16+
endTime: peer.endTime,
17+
required: peer.required,
18+
data: {
19+
minNumberToGrade: peer.data.minNumberToGrade,
20+
minNumberToBeGradedBy: peer.data.minNumberToBeGradedBy,
21+
enableFlexibleGrading: peer.data.enableFlexibleGrading,
22+
},
23+
},
24+
self: self && {
25+
startTime: self.startTime,
26+
endTime: self.endTime,
27+
required: self.required,
28+
},
29+
training: training && {
30+
required: training.required,
31+
data: { examples: training.data.examples },
32+
},
33+
staff: staff && { required: staff.required },
34+
});
35+
36+
export const loadSubmissionConfig = ({
37+
submissionConfig: {
38+
textResponseConfig: text,
39+
fileResponseConfig: file,
40+
teamsConfig,
41+
...config
42+
},
43+
}) => ({
44+
startDatetime: config.startDatetime,
45+
endDatetime: config.endDatetime,
46+
textResponseConfig: text && {
47+
enabled: text.enabled,
48+
optional: text.optional,
49+
editorType: text.editorType,
50+
allowLatexPreview: text.allowLatexPreview,
51+
},
52+
fileResponseConfig: file && {
53+
enabled: file.enabled,
54+
optional: file.optional,
55+
fileUploadType: file.fileUploadType,
56+
allowedExtensions: file.allowedExtensions,
57+
blockedExtensions: file.blockedExtensions,
58+
fileTypeDescription: file.fileTypeDescription,
59+
},
60+
teamsConfig: teamsConfig && {
61+
enabled: teamsConfig.enabled,
62+
teamsetName: teamsConfig.teamsetName,
63+
},
64+
});
65+
66+
export const loadRubricConfig = ({ rubric }) => ({
67+
showDuringResponse: rubric.showDuringResponse,
68+
feedbackConfig: {
69+
description: rubric.feedbackConfig.description,
70+
defaultText: rubric.feedbackConfig.defaultText,
71+
},
72+
criteria: rubric.criteria.map(criterion => ({
73+
name: criterion.name,
74+
description: criterion.description,
75+
feedbackEnabled: criterion.feedbackEnabled,
76+
feedbackRequired: criterion.feedbackRequired,
77+
options: criterion.options.map(option => ({
78+
name: option.name,
79+
points: option.points,
80+
description: option.description,
81+
})),
82+
})),
83+
});
84+
85+
export const loadORAConfigData = (data) => {
86+
console.log({ oraConfig: data });
87+
return {
88+
title: data.title,
89+
prompts: data.prompts,
90+
baseAssetUrl: data.baseAssetUrl,
91+
submissionConfig: loadSubmissionConfig(data),
92+
assessmentSteps: loadAssessmentConfig(data),
93+
rubric: loadRubricConfig(data),
94+
leaderboardConfig: {
95+
enabled: data.leaderboardConfig.enabled,
96+
numberOfEntries: data.leaderboardConfig.numberOfEntries,
97+
},
98+
};
99+
};
100+
101+
// Submission loaders
102+
export const loadFile = (file) => ({
103+
url: file.fileUrl,
104+
description: file.fileDescription,
105+
name: file.fileName,
106+
size: file.fileSize,
107+
uploadedBy: file.uploadedBy,
108+
});
109+
110+
export const loadSubmissionData = ({ teamInfo, submissionStatus, submission }) => ({
111+
teamInfo: {
112+
teamName: teamInfo.teamName,
113+
teamUsernames: teamInfo.teamUsernames,
114+
previousTeamName: teamInfo.previousTeamName,
115+
hasSubmitted: teamInfo.hasSubmitted,
116+
uploadedFiles: teamInfo.teamUploadedFiles.map(loadFile),
117+
},
118+
submissionStatus: {
119+
hasSubmitted: submissionStatus.hasSubmitted,
120+
hasCancelled: submissionStatus.hasCancelled,
121+
hasReceivedGrade: submissionStatus.hasReceivedGrade,
122+
},
123+
submission: {
124+
textResponses: submission.textResponses,
125+
uploadedFiles: submission.uploadedFiles.map(loadFile),
126+
},
127+
});
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import assessment from './assessment';
1+
import oraConfig from './oraConfig';
22
import submission from './submission';
33

44
export default {
5-
assessment,
5+
oraConfig,
66
submission,
77
};

src/data/services/lms/fakeData/assessment.js renamed to src/data/services/lms/fakeData/oraConfig.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
/* eslint-disable camelcase */
2+
23
const submissionConfig = {
34
start_datetime: '2023-04-14T20:00:00Z',
45
end_datetime: '2023-04-14T20:00:00Z',
@@ -92,7 +93,7 @@ const assessmentSteps = {
9293
},
9394
};
9495

95-
export const createAssessment = ({
96+
export const createORAConfig = ({
9697
title = 'Assessment title',
9798
prompts = ['<h1>ORA Prompt</h1>', '<p>ORA Prompt</p>'],
9899
base_asset_url = '/assets',
@@ -111,8 +112,8 @@ export const createAssessment = ({
111112
});
112113

113114
export default {
114-
assessmentText: createAssessment(),
115-
assessmentTinyMCE: createAssessment({
115+
assessmentText: createORAConfig(),
116+
assessmentTinyMCE: createORAConfig({
116117
submission_config: {
117118
...submissionConfig,
118119
text_response_config: {

0 commit comments

Comments
 (0)