@nualang/nualang-ui-components 0.1.1237 → 0.1.1238
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Assignments/AssignmentCard/AssignmentCard.js +22 -26
- package/dist/Assignments/AssignmentCardsList/AssignmentCardsList.js +11 -1
- package/dist/Assignments/AssignmentCourseSelection/AssignmentCourseSelection.js +39 -1
- package/dist/Assignments/AssignmentExerciseSelection/AssignmentExerciseSelection.js +194 -30
- package/dist/Assignments/AssignmentExerciseSelector/AssignmentExerciseSelector.js +6 -0
- package/dist/Assignments/AssignmentRoleplaySelection/AssignmentRoleplaySelection.js +108 -18
- package/dist/Assignments/AssignmentSelectExercise/AssignmentSelectExercise.js +10 -2
- package/dist/Assignments/CreateAssignmentDialog/CreateAssignmentDialog.js +1 -1
- package/dist/Lists/CourseOutline/CourseOutline.js +3 -15
- package/dist/Lists/Exercises/Exercises.js +2 -0
- package/dist/Misc/ColorLinearProgress/ColorLinearProgress.js +35 -0
- package/dist/Misc/ColorLinearProgress/package.json +6 -0
- package/dist/Screens/Classrooms/ViewClassroom/ViewClassroom.js +28 -24
- package/dist/Screens/Courses/ViewCourse/ViewTopic/ViewTopic.js +2 -14
- package/dist/Tables/Progress/Progress.js +18 -37
- package/dist/Tables/Progress/ProgressList.js +4 -4
- package/dist/Tables/Progress/ProgressTable.js +166 -21
- package/dist/Tables/Progress/utils.js +43 -2
- package/dist/utils/index.js +27 -25
- package/package.json +1 -1
|
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _react = require("react");
|
|
8
8
|
var _material = require("@mui/material");
|
|
9
|
-
var _PlayCircleOutline = _interopRequireDefault(require("@mui/icons-material/PlayCircleOutline"));
|
|
10
9
|
var _Message = _interopRequireDefault(require("@mui/icons-material/Message"));
|
|
11
10
|
var _RateReview = _interopRequireDefault(require("@mui/icons-material/RateReview"));
|
|
12
11
|
var _ExpandMore = _interopRequireDefault(require("@mui/icons-material/ExpandMore"));
|
|
@@ -16,9 +15,77 @@ var _Forum = _interopRequireDefault(require("@mui/icons-material/Forum"));
|
|
|
16
15
|
var _Headphones = _interopRequireDefault(require("@mui/icons-material/Headphones"));
|
|
17
16
|
var _RecordVoiceOver = _interopRequireDefault(require("@mui/icons-material/RecordVoiceOver"));
|
|
18
17
|
var _SpaceBar = _interopRequireDefault(require("@mui/icons-material/SpaceBar"));
|
|
18
|
+
var _iconsMaterial = require("@mui/icons-material");
|
|
19
19
|
var _reactRouterDom = require("react-router-dom");
|
|
20
20
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
21
21
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
22
|
+
const sxGreenColor = theme => ({
|
|
23
|
+
color: theme.palette.success ? theme.palette.success.dark : ""
|
|
24
|
+
});
|
|
25
|
+
const sxInfoColor = theme => ({
|
|
26
|
+
color: theme.palette.info ? theme.palette.info.main : ""
|
|
27
|
+
});
|
|
28
|
+
function ProgressBadge({
|
|
29
|
+
completions,
|
|
30
|
+
t,
|
|
31
|
+
gameName
|
|
32
|
+
}) {
|
|
33
|
+
let completionCounter = 0;
|
|
34
|
+
if (completions && completions.length > 0) {
|
|
35
|
+
for (let i = 0; i < completions.length; i++) {
|
|
36
|
+
if (completions[i].exercise === gameName) {
|
|
37
|
+
completionCounter += 1;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return completionCounter > 0 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Badge, {
|
|
42
|
+
sx: sxGreenColor,
|
|
43
|
+
badgeContent: completionCounter,
|
|
44
|
+
color: "default",
|
|
45
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_iconsMaterial.Done, {
|
|
46
|
+
titleAccess: completionCounter === 1 ? t("roleplay_game_completed_icon", {
|
|
47
|
+
counter: `${completionCounter}`,
|
|
48
|
+
roleplay_name: `${gameName}`
|
|
49
|
+
}) : t("roleplay_games_completed_icon", {
|
|
50
|
+
counter: `${completionCounter}`,
|
|
51
|
+
roleplay_name: `${gameName}`
|
|
52
|
+
}),
|
|
53
|
+
"aria-label": completionCounter === 1 ? t("roleplay_game_completed_icon", {
|
|
54
|
+
counter: `${completionCounter}`,
|
|
55
|
+
roleplay_name: `${gameName}`
|
|
56
|
+
}) : t("roleplay_games_completed_icon", {
|
|
57
|
+
counter: `${completionCounter}`,
|
|
58
|
+
roleplay_name: `${gameName}`
|
|
59
|
+
})
|
|
60
|
+
})
|
|
61
|
+
}) : null;
|
|
62
|
+
}
|
|
63
|
+
function InProgressBadge({
|
|
64
|
+
roleplayProgress,
|
|
65
|
+
t,
|
|
66
|
+
gameName
|
|
67
|
+
}) {
|
|
68
|
+
let progressCount = 0;
|
|
69
|
+
if (roleplayProgress && roleplayProgress.length > 0) {
|
|
70
|
+
for (let i = 0; i < roleplayProgress.length; i++) {
|
|
71
|
+
if (roleplayProgress[i].exercise === gameName && roleplayProgress[i].existingMessages && roleplayProgress[i].existingMessages !== null && Object.keys(roleplayProgress[i].existingMessages).length) {
|
|
72
|
+
progressCount = Object.keys(roleplayProgress[i].existingMessages).length;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return progressCount > 0 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Badge, {
|
|
77
|
+
sx: sxInfoColor,
|
|
78
|
+
color: "default",
|
|
79
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_iconsMaterial.Timelapse, {
|
|
80
|
+
titleAccess: t("roleplay_game_in_progress_icon", {
|
|
81
|
+
roleplay_name: `${gameName}`
|
|
82
|
+
}),
|
|
83
|
+
"aria-label": t("roleplay_game_in_progress_icon", {
|
|
84
|
+
roleplay_name: `${gameName}`
|
|
85
|
+
})
|
|
86
|
+
})
|
|
87
|
+
}) : null;
|
|
88
|
+
}
|
|
22
89
|
function Roleplay({
|
|
23
90
|
roleplay,
|
|
24
91
|
courseSectionTopicId,
|
|
@@ -29,13 +96,18 @@ function Roleplay({
|
|
|
29
96
|
selectedExercises,
|
|
30
97
|
useCase,
|
|
31
98
|
assignment,
|
|
32
|
-
|
|
99
|
+
memberCourseCompletions,
|
|
100
|
+
topicProgress,
|
|
101
|
+
isCreator,
|
|
102
|
+
lastClickedExerciseId,
|
|
103
|
+
topics
|
|
33
104
|
}) {
|
|
34
105
|
const navigate = (0, _reactRouterDom.useNavigate)();
|
|
35
106
|
const params = (0, _reactRouterDom.useParams)();
|
|
36
107
|
const {
|
|
37
108
|
classroomId
|
|
38
109
|
} = params;
|
|
110
|
+
const [selectedGames, setSelectedGames] = (0, _react.useState)([]);
|
|
39
111
|
const [courseId, sectionId, topicId] = courseSectionTopicId ? courseSectionTopicId.split("|") : "";
|
|
40
112
|
const [lasClickedCourseId, lasClickedSectionId, lasClickedTopicId, lastClickedAssignmentId, lastClickedRoleplayId] = lastClickedExerciseId?.split("|") || [];
|
|
41
113
|
const addSearchParams = exercise => {
|
|
@@ -47,7 +119,6 @@ function Roleplay({
|
|
|
47
119
|
courseSectionTopicId: `${courseSectionTopicId}|${assignment.assignmentId}|${roleplay.roleplayId}`
|
|
48
120
|
};
|
|
49
121
|
localStorage.setItem("lastClickedExercise", JSON.stringify(lastClickedExercise));
|
|
50
|
-
const assignmentParam = encodeURIComponent(JSON.stringify(assignment));
|
|
51
122
|
navigate(`/classrooms/${classroomId}/${courseId}/${sectionId}/${topicId}/roleplays/${roleplay?.roleplayId}?game=${encodeURIComponent(exercise)}&assignmentId=${assignment.assignmentId}`);
|
|
52
123
|
};
|
|
53
124
|
const [open, setOpen] = (0, _react.useState)(lastClickedRoleplayId === roleplay.roleplayId && lastClickedAssignmentId === assignment.assignmentId);
|
|
@@ -56,6 +127,8 @@ function Roleplay({
|
|
|
56
127
|
(0, _react.useEffect)(() => {
|
|
57
128
|
const count = selectedExercises?.filter(exercise => exercise.roleplayId === roleplay.roleplayId).length;
|
|
58
129
|
setIsSelectAllChecked(count === games.length);
|
|
130
|
+
const roleplayNames = selectedExercises?.filter(ex => ex.roleplayId === roleplay.roleplayId).map(ex => ex.game);
|
|
131
|
+
setSelectedGames(roleplayNames);
|
|
59
132
|
}, [selectedExercises, roleplay.roleplayId, games.length]);
|
|
60
133
|
const handleSelectAll = () => {
|
|
61
134
|
if (isSelectAllChecked) {
|
|
@@ -92,22 +165,22 @@ function Roleplay({
|
|
|
92
165
|
fontSize: "small"
|
|
93
166
|
})]
|
|
94
167
|
});
|
|
95
|
-
const
|
|
168
|
+
const getIconAndStatusForGame = game => {
|
|
96
169
|
switch (game) {
|
|
97
170
|
case "roleplay-story":
|
|
98
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_AutoStories.default, {});
|
|
171
|
+
return [/*#__PURE__*/(0, _jsxRuntime.jsx)(_AutoStories.default, {}), selectedGames?.includes(game)];
|
|
99
172
|
case "roleplay-fill-in-the-blanks":
|
|
100
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_SpaceBar.default, {});
|
|
173
|
+
return [/*#__PURE__*/(0, _jsxRuntime.jsx)(_SpaceBar.default, {}), selectedGames?.includes(game)];
|
|
101
174
|
case "roleplay-act-it-out":
|
|
102
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Message.default, {});
|
|
175
|
+
return [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Message.default, {}), selectedGames?.includes(game)];
|
|
103
176
|
case "roleplay-act-it-out-listening":
|
|
104
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Headphones.default, {});
|
|
177
|
+
return [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Headphones.default, {}), selectedGames?.includes(game)];
|
|
105
178
|
case "roleplay-act-it-out-speaking":
|
|
106
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_RecordVoiceOver.default, {});
|
|
179
|
+
return [/*#__PURE__*/(0, _jsxRuntime.jsx)(_RecordVoiceOver.default, {}), selectedGames?.includes(game)];
|
|
107
180
|
case "roleplay-act-it-out-listening-speaking":
|
|
108
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(ActItOutListeningSpeakingIcon, {});
|
|
181
|
+
return [/*#__PURE__*/(0, _jsxRuntime.jsx)(ActItOutListeningSpeakingIcon, {}), selectedGames?.includes(game)];
|
|
109
182
|
default:
|
|
110
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Forum.default, {});
|
|
183
|
+
return [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Forum.default, {}), true];
|
|
111
184
|
}
|
|
112
185
|
};
|
|
113
186
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
@@ -235,7 +308,7 @@ function Roleplay({
|
|
|
235
308
|
}
|
|
236
309
|
},
|
|
237
310
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.ListItemIcon, {
|
|
238
|
-
children:
|
|
311
|
+
children: getIconAndStatusForGame(game)[0]
|
|
239
312
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.ListItemText, {
|
|
240
313
|
primary: t(game.replace(/roleplay-/, "").replace(/-/g, "_")),
|
|
241
314
|
secondary: t(game.replace(/roleplay-/, "").replace(/-/g, "_") + "_description")
|
|
@@ -244,7 +317,10 @@ function Roleplay({
|
|
|
244
317
|
checked: selectedExercises?.some(e => e.roleplayId === roleplay.roleplayId && e.game === game)
|
|
245
318
|
})
|
|
246
319
|
})]
|
|
247
|
-
}, `${roleplay.roleplayId}-${game}-${index}`)), useCase === "assignment-view" || useCase === "assignment-start" ? games.map(game =>
|
|
320
|
+
}, `${roleplay.roleplayId}-${game}-${index}`)), useCase === "assignment-view" || useCase === "assignment-start" ? games.map(game => getIconAndStatusForGame(game)[1] &&
|
|
321
|
+
/*#__PURE__*/
|
|
322
|
+
// eslint-disable-next-line react/jsx-key
|
|
323
|
+
(0, _jsxRuntime.jsxs)(_material.ListItemButton, {
|
|
248
324
|
onClick: () => {
|
|
249
325
|
useCase === "assignment-start" ? addSearchParams(game.replace(/roleplay-/, "")) : null;
|
|
250
326
|
},
|
|
@@ -258,14 +334,20 @@ function Roleplay({
|
|
|
258
334
|
}
|
|
259
335
|
},
|
|
260
336
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.ListItemIcon, {
|
|
261
|
-
children:
|
|
337
|
+
children: getIconAndStatusForGame(game)[0]
|
|
262
338
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.ListItemText, {
|
|
263
339
|
primary: t(game.replace(/roleplay-/, "").replace(/-/g, "_")),
|
|
264
340
|
secondary: t(game.replace(/roleplay-/, "").replace(/-/g, "_") + "_description")
|
|
265
|
-
}), useCase === "assignment-start" && /*#__PURE__*/(0, _jsxRuntime.
|
|
266
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
267
|
-
|
|
268
|
-
|
|
341
|
+
}), useCase === "assignment-start" && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
342
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(InProgressBadge, {
|
|
343
|
+
roleplayProgress: topicProgress,
|
|
344
|
+
t: t,
|
|
345
|
+
gameName: game
|
|
346
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(ProgressBadge, {
|
|
347
|
+
completions: memberCourseCompletions,
|
|
348
|
+
t: t,
|
|
349
|
+
gameName: game
|
|
350
|
+
})]
|
|
269
351
|
})]
|
|
270
352
|
})) : null]
|
|
271
353
|
})
|
|
@@ -281,6 +363,10 @@ function AssignmentRoleplaySelection({
|
|
|
281
363
|
selectedExercises,
|
|
282
364
|
useCase,
|
|
283
365
|
assignment,
|
|
366
|
+
memberCourseCompletions,
|
|
367
|
+
topicProgress,
|
|
368
|
+
topics,
|
|
369
|
+
isCreator,
|
|
284
370
|
lastClickedExerciseId
|
|
285
371
|
}) {
|
|
286
372
|
const [isRoleplaySelected, setIsRoleplaySelected] = (0, _react.useState)(false);
|
|
@@ -295,6 +381,10 @@ function AssignmentRoleplaySelection({
|
|
|
295
381
|
selectedExercises: selectedExercises,
|
|
296
382
|
useCase: useCase,
|
|
297
383
|
assignment: assignment,
|
|
384
|
+
memberCourseCompletions: memberCourseCompletions,
|
|
385
|
+
topicProgress: topicProgress,
|
|
386
|
+
topics: topics,
|
|
387
|
+
isCreator: isCreator,
|
|
298
388
|
lastClickedExerciseId: lastClickedExerciseId
|
|
299
389
|
}, index));
|
|
300
390
|
}
|
|
@@ -22,7 +22,11 @@ function AssignmentSelectExercise({
|
|
|
22
22
|
useCase,
|
|
23
23
|
selectedExercises = [],
|
|
24
24
|
setSelectedExercises,
|
|
25
|
-
setSubmittedExercises
|
|
25
|
+
setSubmittedExercises,
|
|
26
|
+
completions,
|
|
27
|
+
preferred_username,
|
|
28
|
+
progressHelpers,
|
|
29
|
+
memberCourseCompletions
|
|
26
30
|
}) {
|
|
27
31
|
const [isExerciseSelected, setIsExerciseSelected] = (0, _react.useState)(false);
|
|
28
32
|
const handleSelectExercise = (exercises = []) => {
|
|
@@ -71,7 +75,11 @@ function AssignmentSelectExercise({
|
|
|
71
75
|
useCase: useCase,
|
|
72
76
|
selectedExercises: selectedExercises,
|
|
73
77
|
handleSelectExercise: useCase === "assignment-select" ? handleSelectExercise : null,
|
|
74
|
-
viewOnly: false
|
|
78
|
+
viewOnly: false,
|
|
79
|
+
completions: completions,
|
|
80
|
+
preferred_username: preferred_username,
|
|
81
|
+
progressHelpers: progressHelpers,
|
|
82
|
+
memberCourseCompletions: memberCourseCompletions
|
|
75
83
|
})
|
|
76
84
|
})]
|
|
77
85
|
});
|
|
@@ -60,7 +60,7 @@ function CreateAssignmentDialog({
|
|
|
60
60
|
const {
|
|
61
61
|
classes
|
|
62
62
|
} = useStyles();
|
|
63
|
-
const [selectedExercises, setSelectedExercises] = (0, _react.useState)([]);
|
|
63
|
+
const [selectedExercises, setSelectedExercises] = (0, _react.useState)(initialData.exercises ? initialData.exercises : []);
|
|
64
64
|
const [submittedExercises, setSubmittedExercises] = (0, _react.useState)(initialData.exercises ? initialData.exercises : []);
|
|
65
65
|
const [members, setMembers] = (0, _react.useState)([]);
|
|
66
66
|
const [assignment, setAssignment] = (0, _react.useState)({
|
|
@@ -30,24 +30,12 @@ var _FileCopy = _interopRequireDefault(require("@mui/icons-material/FileCopy"));
|
|
|
30
30
|
var _ImageSearch = _interopRequireDefault(require("@mui/icons-material/ImageSearch"));
|
|
31
31
|
var _Skeleton = _interopRequireDefault(require("@mui/material/Skeleton"));
|
|
32
32
|
var _OndemandVideo = _interopRequireDefault(require("@mui/icons-material/OndemandVideo"));
|
|
33
|
+
var _ColorLinearProgress = _interopRequireDefault(require("../../Misc/ColorLinearProgress/ColorLinearProgress"));
|
|
33
34
|
var _index = require("../../utils/index");
|
|
34
35
|
var _SelectClassroom = _interopRequireDefault(require("../../Dialogs/SelectClassroom/SelectClassroom"));
|
|
35
36
|
var _CardElements = require("../../Cards/CardElements");
|
|
36
37
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
37
38
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
38
|
-
const ColorLinearProgress = (0, _mui.withStyles)(_material.LinearProgress, theme => ({
|
|
39
|
-
root: {
|
|
40
|
-
height: 8,
|
|
41
|
-
borderRadius: 4,
|
|
42
|
-
border: `1px solid ${theme.palette.success.main}`
|
|
43
|
-
},
|
|
44
|
-
colorPrimary: {
|
|
45
|
-
backgroundColor: (0, _styles.alpha)(theme.palette.success.light, 0.25)
|
|
46
|
-
},
|
|
47
|
-
barColorPrimary: {
|
|
48
|
-
backgroundColor: theme.palette.success.main
|
|
49
|
-
}
|
|
50
|
-
}));
|
|
51
39
|
const useStyles = (0, _mui.makeStyles)()(theme => ({
|
|
52
40
|
root: {
|
|
53
41
|
width: "100%"
|
|
@@ -546,7 +534,7 @@ function Topic({
|
|
|
546
534
|
flexGrow: 1,
|
|
547
535
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Tooltip, {
|
|
548
536
|
title: `Completed ${completion.completed} / ${completion.total} exercises`,
|
|
549
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
537
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ColorLinearProgress.default, {
|
|
550
538
|
variant: "determinate",
|
|
551
539
|
value: completion.percentage
|
|
552
540
|
})
|
|
@@ -1285,7 +1273,7 @@ function CourseOutline({
|
|
|
1285
1273
|
ml: 6,
|
|
1286
1274
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Tooltip, {
|
|
1287
1275
|
title: `Completed ${completed} / ${total} exercises`,
|
|
1288
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
1276
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ColorLinearProgress.default, {
|
|
1289
1277
|
variant: "determinate",
|
|
1290
1278
|
value: percentage
|
|
1291
1279
|
})
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.InProgressBadge = InProgressBadge;
|
|
7
|
+
exports.ProgressBadge = ProgressBadge;
|
|
6
8
|
exports.default = exports.UnStyledComponent = void 0;
|
|
7
9
|
var _react = require("react");
|
|
8
10
|
var _reactRouterDom = require("react-router-dom");
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _material = require("@mui/material");
|
|
9
|
+
var _mui = require("tss-react/mui");
|
|
10
|
+
var _system = require("@mui/system");
|
|
11
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
const ProgressBar = (0, _mui.withStyles)(_material.LinearProgress, theme => ({
|
|
14
|
+
root: {
|
|
15
|
+
height: 8,
|
|
16
|
+
borderRadius: 4,
|
|
17
|
+
border: `1px solid ${theme.palette.success.main}`
|
|
18
|
+
},
|
|
19
|
+
colorPrimary: {
|
|
20
|
+
backgroundColor: (0, _system.alpha)(theme.palette.success.light, 0.25)
|
|
21
|
+
},
|
|
22
|
+
barColorPrimary: {
|
|
23
|
+
backgroundColor: theme.palette.success.main
|
|
24
|
+
}
|
|
25
|
+
}));
|
|
26
|
+
function ColorLinearProgress({
|
|
27
|
+
value,
|
|
28
|
+
variant
|
|
29
|
+
}) {
|
|
30
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(ProgressBar, {
|
|
31
|
+
variant: variant,
|
|
32
|
+
value: value
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
var _default = exports.default = ColorLinearProgress;
|
|
@@ -392,6 +392,8 @@ function Classroom({
|
|
|
392
392
|
handleEditAssignment,
|
|
393
393
|
getCourses,
|
|
394
394
|
refreshAssignments,
|
|
395
|
+
progressHelpers,
|
|
396
|
+
preferred_username,
|
|
395
397
|
isUserInternal,
|
|
396
398
|
...otherProps
|
|
397
399
|
}) {
|
|
@@ -851,28 +853,6 @@ function Classroom({
|
|
|
851
853
|
onClick: handleReturnToClassrooms
|
|
852
854
|
})]
|
|
853
855
|
}, `tab-content-courses`)
|
|
854
|
-
}, {
|
|
855
|
-
label: t("progress"),
|
|
856
|
-
disabled: !(isMember || isCreator) || isMember && isSubscriptionExpired,
|
|
857
|
-
id: "Progress",
|
|
858
|
-
TabContent: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
|
|
859
|
-
py: 1,
|
|
860
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Progress.default, {
|
|
861
|
-
t: t,
|
|
862
|
-
courses: courses,
|
|
863
|
-
members: members,
|
|
864
|
-
courseIds: courseIds,
|
|
865
|
-
fetchMemberCourseCompletions: fetchMemberCourseCompletions,
|
|
866
|
-
classroomId: classroomId,
|
|
867
|
-
memberId: !isCreator && username,
|
|
868
|
-
username: username,
|
|
869
|
-
getCourseSections: getCourseSections,
|
|
870
|
-
assignments: assignments,
|
|
871
|
-
submissions: submissionsTableData,
|
|
872
|
-
featureFlags: featureFlags,
|
|
873
|
-
isVideoChatEnabled: isVideoChatEnabled && isVideoChatEnabledInSettings
|
|
874
|
-
})
|
|
875
|
-
}, `tab-content-progress`)
|
|
876
856
|
}, ...(isUserInternal && process.env.REACT_APP_STAGE === "dev" ? [{
|
|
877
857
|
label: t("assignments"),
|
|
878
858
|
disabled: isMember && isSubscriptionExpired,
|
|
@@ -896,7 +876,9 @@ function Classroom({
|
|
|
896
876
|
handleEditAssignment: handleEditAssignment,
|
|
897
877
|
getRoleplays: getRoleplays,
|
|
898
878
|
getCourses: getCourses,
|
|
899
|
-
refreshAssignments: refreshAssignments
|
|
879
|
+
refreshAssignments: refreshAssignments,
|
|
880
|
+
progressHelpers: progressHelpers,
|
|
881
|
+
preferred_username: preferred_username
|
|
900
882
|
})
|
|
901
883
|
}, `tab-content-assignments`)
|
|
902
884
|
}] : []), ...(isVideoChatEnabled && isNualangLiveEnabled && (isMember && isVideoChatEnabledInSettings || isCreator) ? [{
|
|
@@ -1036,7 +1018,29 @@ function Classroom({
|
|
|
1036
1018
|
})
|
|
1037
1019
|
})
|
|
1038
1020
|
})
|
|
1039
|
-
}] : []),
|
|
1021
|
+
}] : []), {
|
|
1022
|
+
label: t("progress"),
|
|
1023
|
+
disabled: !(isMember || isCreator) || isMember && isSubscriptionExpired,
|
|
1024
|
+
id: "Progress",
|
|
1025
|
+
TabContent: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
|
|
1026
|
+
py: 1,
|
|
1027
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Progress.default, {
|
|
1028
|
+
t: t,
|
|
1029
|
+
courses: courses,
|
|
1030
|
+
members: members,
|
|
1031
|
+
courseIds: courseIds,
|
|
1032
|
+
fetchMemberCourseCompletions: fetchMemberCourseCompletions,
|
|
1033
|
+
classroomId: classroomId,
|
|
1034
|
+
memberId: !isCreator && username,
|
|
1035
|
+
username: username,
|
|
1036
|
+
getCourseSections: getCourseSections,
|
|
1037
|
+
assignments: assignments,
|
|
1038
|
+
submissions: submissionsTableData,
|
|
1039
|
+
featureFlags: featureFlags,
|
|
1040
|
+
isVideoChatEnabled: isVideoChatEnabled && isVideoChatEnabledInSettings
|
|
1041
|
+
})
|
|
1042
|
+
}, `tab-content-progress`)
|
|
1043
|
+
}, ...(isCreator ? [{
|
|
1040
1044
|
label: `${t("members")} (${members.length < 1000 ? members.length : "999+"})`,
|
|
1041
1045
|
id: "Members",
|
|
1042
1046
|
disabled: !(isMember || isCreator),
|
|
@@ -51,21 +51,9 @@ var _iconsMaterial = require("@mui/icons-material");
|
|
|
51
51
|
var _Delete = _interopRequireDefault(require("@mui/icons-material/Delete"));
|
|
52
52
|
var _FileCopy = _interopRequireDefault(require("@mui/icons-material/FileCopy"));
|
|
53
53
|
var _logger = _interopRequireDefault(require("../../../../logger"));
|
|
54
|
+
var _ColorLinearProgress = _interopRequireDefault(require("../../../../Misc/ColorLinearProgress/ColorLinearProgress"));
|
|
54
55
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
55
56
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
56
|
-
const ColorLinearProgress = (0, _mui.withStyles)(_LinearProgress.default, theme => ({
|
|
57
|
-
root: {
|
|
58
|
-
height: 8,
|
|
59
|
-
borderRadius: 4,
|
|
60
|
-
border: `1px solid ${theme.palette.success.main}`
|
|
61
|
-
},
|
|
62
|
-
colorPrimary: {
|
|
63
|
-
backgroundColor: (0, _styles.alpha)(theme.palette.success.light, 0.25)
|
|
64
|
-
},
|
|
65
|
-
barColorPrimary: {
|
|
66
|
-
backgroundColor: theme.palette.success.main
|
|
67
|
-
}
|
|
68
|
-
}));
|
|
69
57
|
const useStyles = (0, _mui.makeStyles)()(theme => ({
|
|
70
58
|
root: {
|
|
71
59
|
height: "100%",
|
|
@@ -1087,7 +1075,7 @@ function Topic({
|
|
|
1087
1075
|
flexGrow: 1,
|
|
1088
1076
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Tooltip, {
|
|
1089
1077
|
title: `Completed ${completed} / ${total} exercises`,
|
|
1090
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
1078
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ColorLinearProgress.default, {
|
|
1091
1079
|
variant: "determinate",
|
|
1092
1080
|
value: percentage
|
|
1093
1081
|
})
|
|
@@ -42,9 +42,6 @@ const TableToolbar = ({
|
|
|
42
42
|
reportTypes,
|
|
43
43
|
setReportType,
|
|
44
44
|
reportType,
|
|
45
|
-
assignments,
|
|
46
|
-
selectedAssignment,
|
|
47
|
-
setSelectedAssignment,
|
|
48
45
|
currentView
|
|
49
46
|
}) => {
|
|
50
47
|
const {
|
|
@@ -106,26 +103,6 @@ const TableToolbar = ({
|
|
|
106
103
|
},
|
|
107
104
|
children: reportFilterOptions
|
|
108
105
|
})
|
|
109
|
-
}), reportType === "assignments" && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Grid.default, {
|
|
110
|
-
item: true,
|
|
111
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.TextField, {
|
|
112
|
-
select: true,
|
|
113
|
-
id: "assignment",
|
|
114
|
-
name: t("assignment"),
|
|
115
|
-
"data-cy": "assignment",
|
|
116
|
-
label: t("assignment"),
|
|
117
|
-
value: selectedAssignment?.assignmentId,
|
|
118
|
-
onChange: e => setSelectedAssignment(assignments.find(a => a.assignmentId === e.target.value)),
|
|
119
|
-
margin: "dense",
|
|
120
|
-
variant: "outlined",
|
|
121
|
-
sx: {
|
|
122
|
-
minWidth: 250
|
|
123
|
-
},
|
|
124
|
-
children: assignments.map((assignment, idx) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_MenuItem.default, {
|
|
125
|
-
value: assignment.assignmentId,
|
|
126
|
-
children: t(assignment.title)
|
|
127
|
-
}, `assignment_${idx}`))
|
|
128
|
-
})
|
|
129
106
|
}), reportType !== "discuss" && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Grid.default, {
|
|
130
107
|
item: true,
|
|
131
108
|
mt: 0.5,
|
|
@@ -218,11 +195,6 @@ function Progress({
|
|
|
218
195
|
setBots(selectedTopic?.bots);
|
|
219
196
|
}
|
|
220
197
|
}, [selectedTopic]);
|
|
221
|
-
(0, _react.useEffect)(() => {
|
|
222
|
-
if (!selectedAssignment && assignments && assignments.length) {
|
|
223
|
-
setSelectedAssignment(assignments[0]);
|
|
224
|
-
}
|
|
225
|
-
}, [selectedAssignment, assignments]);
|
|
226
198
|
const courseSectionsQueries = useQueries({
|
|
227
199
|
queries: (courses || []).map(({
|
|
228
200
|
courseId
|
|
@@ -259,6 +231,15 @@ function Progress({
|
|
|
259
231
|
window.history.pushState(null, "", newRelativePathQuery);
|
|
260
232
|
}
|
|
261
233
|
};
|
|
234
|
+
const deleteAssignmentId = () => {
|
|
235
|
+
if ("URLSearchParams" in window) {
|
|
236
|
+
const searchParams = (0, _utils2.searchStringToObj)(window.location.search);
|
|
237
|
+
delete searchParams["assignmentId"];
|
|
238
|
+
setSelectedAssignment(null);
|
|
239
|
+
const newRelativePathQuery = window.location.pathname + "?" + (0, _utils2.objToSearchString)(searchParams) + window.location.hash;
|
|
240
|
+
window.history.pushState(null, "", newRelativePathQuery);
|
|
241
|
+
}
|
|
242
|
+
};
|
|
262
243
|
(0, _react.useEffect)(() => {
|
|
263
244
|
if ("URLSearchParams" in window) {
|
|
264
245
|
const searchParams = (0, _utils2.searchStringToObj)(window.location.search);
|
|
@@ -308,8 +289,6 @@ function Progress({
|
|
|
308
289
|
}
|
|
309
290
|
if (selectedAssignment) {
|
|
310
291
|
searchParams["assignmentId"] = selectedAssignment.assignmentId;
|
|
311
|
-
} else {
|
|
312
|
-
delete searchParams["assignmentId"];
|
|
313
292
|
}
|
|
314
293
|
if (selectedCourse) {
|
|
315
294
|
searchParams["courseId"] = selectedCourse.courseId;
|
|
@@ -356,8 +335,10 @@ function Progress({
|
|
|
356
335
|
currentView = "assignment-roleplay";
|
|
357
336
|
} else if (reportType === "assignments" && selectedTopic) {
|
|
358
337
|
currentView = "assignment-topic";
|
|
359
|
-
} else if (reportType === "assignments") {
|
|
338
|
+
} else if (reportType === "assignments" && selectedAssignment) {
|
|
360
339
|
currentView = "assignment-topics";
|
|
340
|
+
} else if (reportType === "assignments") {
|
|
341
|
+
currentView = "assignments";
|
|
361
342
|
} else if (selectedCourse && selectedSection && selectedTopic && selectedRoleplay) {
|
|
362
343
|
currentView = "roleplay";
|
|
363
344
|
} else if (selectedCourse && selectedSection && selectedTopic) {
|
|
@@ -476,9 +457,6 @@ function Progress({
|
|
|
476
457
|
reportTypes: reportTypes,
|
|
477
458
|
setReportType: setReportType,
|
|
478
459
|
reportType: reportType,
|
|
479
|
-
assignments: assignments,
|
|
480
|
-
selectedAssignment: selectedAssignment,
|
|
481
|
-
setSelectedAssignment: setSelectedAssignment,
|
|
482
460
|
currentView: currentView
|
|
483
461
|
}), reportType === "discuss" ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Grid.default, {
|
|
484
462
|
container: true,
|
|
@@ -511,6 +489,7 @@ function Progress({
|
|
|
511
489
|
currentView: currentView,
|
|
512
490
|
selectedCourse: selectedCourse,
|
|
513
491
|
deleteCourseId: deleteCourseId,
|
|
492
|
+
deleteAssignmentId: deleteAssignmentId,
|
|
514
493
|
setSelectedCourse: setSelectedCourse,
|
|
515
494
|
selectedSection: selectedSection,
|
|
516
495
|
setSelectedSection: setSelectedSection,
|
|
@@ -519,6 +498,8 @@ function Progress({
|
|
|
519
498
|
selectedRoleplay: selectedRoleplay,
|
|
520
499
|
setSelectedRoleplay: setSelectedRoleplay,
|
|
521
500
|
selectedAssignment: selectedAssignment,
|
|
501
|
+
setSelectedAssignment: setSelectedAssignment,
|
|
502
|
+
assignments: assignments,
|
|
522
503
|
courses: coursesWithSections,
|
|
523
504
|
members: classroomMembers,
|
|
524
505
|
courseIds: courseIds,
|
|
@@ -545,9 +526,6 @@ function Progress({
|
|
|
545
526
|
reportTypes: reportTypes,
|
|
546
527
|
setReportType: setReportType,
|
|
547
528
|
reportType: reportType,
|
|
548
|
-
assignments: assignments,
|
|
549
|
-
selectedAssignment: selectedAssignment,
|
|
550
|
-
setSelectedAssignment: setSelectedAssignment,
|
|
551
529
|
currentView: currentView
|
|
552
530
|
}), reportType === "discuss" ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Grid.default, {
|
|
553
531
|
container: true,
|
|
@@ -583,6 +561,7 @@ function Progress({
|
|
|
583
561
|
currentView: currentView,
|
|
584
562
|
selectedCourse: selectedCourse,
|
|
585
563
|
deleteCourseId: deleteCourseId,
|
|
564
|
+
deleteAssignmentId: deleteAssignmentId,
|
|
586
565
|
setSelectedCourse: setSelectedCourse,
|
|
587
566
|
selectedSection: selectedSection,
|
|
588
567
|
setSelectedSection: setSelectedSection,
|
|
@@ -591,6 +570,8 @@ function Progress({
|
|
|
591
570
|
selectedRoleplay: selectedRoleplay,
|
|
592
571
|
setSelectedRoleplay: setSelectedRoleplay,
|
|
593
572
|
selectedAssignment: selectedAssignment,
|
|
573
|
+
setSelectedAssignment: setSelectedAssignment,
|
|
574
|
+
assignments: assignments,
|
|
594
575
|
courses: coursesWithSections,
|
|
595
576
|
members: classroomMembers,
|
|
596
577
|
fetchMemberCourseCompletions: fetchMemberCourseCompletions,
|
|
@@ -659,7 +659,7 @@ function ProgressList({
|
|
|
659
659
|
sx: () => ({
|
|
660
660
|
fontWeight: "bold"
|
|
661
661
|
}),
|
|
662
|
-
children: t("
|
|
662
|
+
children: t("courses")
|
|
663
663
|
})
|
|
664
664
|
}), currentView === "course" && /*#__PURE__*/(0, _jsxRuntime.jsx)(_ListSubheader.default, {
|
|
665
665
|
component: "div",
|
|
@@ -691,7 +691,7 @@ function ProgressList({
|
|
|
691
691
|
sx: {
|
|
692
692
|
fontWeight: "bold"
|
|
693
693
|
},
|
|
694
|
-
children: t("
|
|
694
|
+
children: t("courses")
|
|
695
695
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
|
|
696
696
|
variant: "subtitle1",
|
|
697
697
|
sx: {
|
|
@@ -731,7 +731,7 @@ function ProgressList({
|
|
|
731
731
|
sx: {
|
|
732
732
|
fontWeight: "bold"
|
|
733
733
|
},
|
|
734
|
-
children: [t("
|
|
734
|
+
children: [t("courses"), " | ", selectedCourse.courseName]
|
|
735
735
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
|
|
736
736
|
variant: "subtitle1",
|
|
737
737
|
sx: {
|
|
@@ -771,7 +771,7 @@ function ProgressList({
|
|
|
771
771
|
sx: {
|
|
772
772
|
fontWeight: "bold"
|
|
773
773
|
},
|
|
774
|
-
children: [t("
|
|
774
|
+
children: [t("courses"), " | ", selectedCourse.courseName]
|
|
775
775
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Typography.default, {
|
|
776
776
|
variant: "subtitle1",
|
|
777
777
|
sx: {
|