@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.
@@ -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
- lastClickedExerciseId
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 getIconForGame = game => {
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: getIconForGame(game)
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 => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.ListItemButton, {
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: getIconForGame(game)
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.jsx)(_material.ListItemIcon, {
266
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PlayCircleOutline.default, {
267
- color: "primary"
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)(ColorLinearProgress, {
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)(ColorLinearProgress, {
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;
@@ -0,0 +1,6 @@
1
+ {
2
+ "name": "ColorLinearProgress",
3
+ "version": "0.0.0",
4
+ "private": true,
5
+ "main": "./ColorLinearProgress.js"
6
+ }
@@ -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
- }] : []), ...(isCreator ? [{
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)(ColorLinearProgress, {
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("student_progress")
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("student_progress")
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("student_progress"), " | ", selectedCourse.courseName]
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("student_progress"), " | ", selectedCourse.courseName]
774
+ children: [t("courses"), " | ", selectedCourse.courseName]
775
775
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Typography.default, {
776
776
  variant: "subtitle1",
777
777
  sx: {