@nualang/nualang-ui-components 0.1.1327 → 0.1.1329
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/Cards/FeedbackCard/FeedbackCard.js +115 -11
- package/dist/Dialogs/GenerateBot/GenerateBot.js +2 -1
- package/dist/Dialogs/GroupedFeedbackDialog/GroupedFeedbackDialog.js +27 -3
- package/dist/Exercises/Listener/Listener.js +2 -1
- package/dist/Exercises/Translator/Translator.js +2 -1
- package/dist/Forms/AppContact/AppContact.js +19 -1
- package/dist/Forms/InputHelper/InputHelper.js +3 -3
- package/dist/Live/LiveListener/LiveListener.js +1 -1
- package/dist/Live/LiveTranslator/LiveTranslator.js +2 -1
- package/dist/Misc/NualaCreating/NualaCreating.js +5 -6
- package/dist/Screens/Classrooms/ViewClassroom/ViewClassroom.js +10 -1
- package/dist/Tables/Progress/Progress.js +16 -12
- package/package.json +1 -1
|
@@ -4,6 +4,8 @@ import { grey, green } from "@mui/material/colors";
|
|
|
4
4
|
import AutoFixHighIcon from "@mui/icons-material/AutoFixHigh";
|
|
5
5
|
import ErrorOutlineIcon from "@mui/icons-material/ErrorOutline";
|
|
6
6
|
import CheckCircleIcon from "@mui/icons-material/CheckCircle";
|
|
7
|
+
import TrendingUpIcon from "@mui/icons-material/TrendingUp";
|
|
8
|
+
import TrendingDownIcon from "@mui/icons-material/TrendingDown";
|
|
7
9
|
import { Formik } from "formik";
|
|
8
10
|
import * as Yup from "yup";
|
|
9
11
|
import RecordingDialog from "../../Dialogs/RecordingDialog/RecordingDialog";
|
|
@@ -14,6 +16,38 @@ import level3Rubric from "../../Dialogs/PDFViewer/rubrics/level3Rubric.pdf";
|
|
|
14
16
|
import level4Rubric from "../../Dialogs/PDFViewer/rubrics/level4Rubric.pdf";
|
|
15
17
|
import HelpOutlineIcon from "@mui/icons-material/HelpOutline";
|
|
16
18
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
19
|
+
const getPerformanceLevel = (student, aiGrade) => {
|
|
20
|
+
if (!aiGrade || Object.keys(aiGrade).length === 0) return null;
|
|
21
|
+
const keyVariants = [student.username, `${student.username}Student`, student.username?.replace(/\s+/g, "")];
|
|
22
|
+
const aiData = keyVariants.map(k => aiGrade?.[k]).find(v => v && typeof v === "object") || null;
|
|
23
|
+
return aiData?.LevelPerformance || null;
|
|
24
|
+
};
|
|
25
|
+
const getPerformanceChipProps = (level, t) => {
|
|
26
|
+
switch (level?.toLowerCase()) {
|
|
27
|
+
case 'above':
|
|
28
|
+
return {
|
|
29
|
+
label: t('above_level'),
|
|
30
|
+
color: 'success',
|
|
31
|
+
icon: /*#__PURE__*/_jsx(TrendingUpIcon, {
|
|
32
|
+
sx: {
|
|
33
|
+
fontSize: 16
|
|
34
|
+
}
|
|
35
|
+
})
|
|
36
|
+
};
|
|
37
|
+
case 'below':
|
|
38
|
+
return {
|
|
39
|
+
label: t('below_level'),
|
|
40
|
+
color: 'warning',
|
|
41
|
+
icon: /*#__PURE__*/_jsx(TrendingDownIcon, {
|
|
42
|
+
sx: {
|
|
43
|
+
fontSize: 16
|
|
44
|
+
}
|
|
45
|
+
})
|
|
46
|
+
};
|
|
47
|
+
default:
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
17
51
|
export default function FeedbackCard({
|
|
18
52
|
t = x => x,
|
|
19
53
|
discussionData = {},
|
|
@@ -82,18 +116,21 @@ export default function FeedbackCard({
|
|
|
82
116
|
attendedMembers.forEach(student => {
|
|
83
117
|
const existingStudentFeedback = existingFeedback[student.memberId];
|
|
84
118
|
feedbackData[student.memberId] = {
|
|
85
|
-
feedbackText: existingStudentFeedback?.feedbackText || ""
|
|
119
|
+
feedbackText: existingStudentFeedback?.feedbackText || "",
|
|
120
|
+
levelPerformance: existingStudentFeedback?.levelPerformance || null
|
|
86
121
|
};
|
|
87
122
|
});
|
|
88
123
|
notAttendedMembers.forEach(student => {
|
|
89
124
|
feedbackData[student.memberId] = {
|
|
90
|
-
feedbackText: existingFeedback[student.memberId]?.feedbackText || t("not_present")
|
|
125
|
+
feedbackText: existingFeedback[student.memberId]?.feedbackText || t("not_present"),
|
|
126
|
+
levelPerformance: existingFeedback[student.memberId]?.levelPerformance || null
|
|
91
127
|
};
|
|
92
128
|
});
|
|
93
129
|
} else {
|
|
94
130
|
selectedMembers.forEach(student => {
|
|
95
131
|
feedbackData[student.memberId] = {
|
|
96
|
-
feedbackText: existingFeedback[student.memberId]?.feedbackText || ""
|
|
132
|
+
feedbackText: existingFeedback[student.memberId]?.feedbackText || "",
|
|
133
|
+
levelPerformance: existingFeedback[student.memberId]?.levelPerformance || null
|
|
97
134
|
};
|
|
98
135
|
});
|
|
99
136
|
}
|
|
@@ -133,6 +170,9 @@ export default function FeedbackCard({
|
|
|
133
170
|
if (aiData?.Feedback) {
|
|
134
171
|
formik.setFieldValue(`feedbackData.${student.memberId}.feedbackText`, aiData.Feedback);
|
|
135
172
|
}
|
|
173
|
+
if (aiData?.LevelPerformance) {
|
|
174
|
+
formik.setFieldValue(`feedbackData.${student.memberId}.levelPerformance`, aiData.LevelPerformance);
|
|
175
|
+
}
|
|
136
176
|
});
|
|
137
177
|
setHasBeenEdited(true);
|
|
138
178
|
setIsSubmitted(false);
|
|
@@ -190,9 +230,18 @@ export default function FeedbackCard({
|
|
|
190
230
|
const feedbackDataWithAbsent = {
|
|
191
231
|
...values.feedbackData
|
|
192
232
|
};
|
|
233
|
+
selectedMembers.forEach(student => {
|
|
234
|
+
const existingLevel = feedbackDataWithAbsent[student.memberId]?.levelPerformance;
|
|
235
|
+
const aiLevel = getPerformanceLevel(student, aiGrade);
|
|
236
|
+
feedbackDataWithAbsent[student.memberId] = {
|
|
237
|
+
...feedbackDataWithAbsent[student.memberId],
|
|
238
|
+
levelPerformance: existingLevel ?? aiLevel ?? null
|
|
239
|
+
};
|
|
240
|
+
});
|
|
193
241
|
notAttendedMembers.forEach(student => {
|
|
194
242
|
feedbackDataWithAbsent[student.memberId] = {
|
|
195
|
-
feedbackText: t("not_present")
|
|
243
|
+
feedbackText: t("not_present"),
|
|
244
|
+
levelPerformance: feedbackDataWithAbsent[student.memberId]?.levelPerformance ?? null
|
|
196
245
|
};
|
|
197
246
|
});
|
|
198
247
|
await onSubmitFeedback({
|
|
@@ -314,6 +363,8 @@ export default function FeedbackCard({
|
|
|
314
363
|
const isAbsent = hasSubmission && !joinedMembers.includes(student.memberId);
|
|
315
364
|
const disabled = !hasSubmission || isAbsent;
|
|
316
365
|
const studentFeedback = values.feedbackData[student.memberId] || {};
|
|
366
|
+
const perfLevel = studentFeedback.levelPerformance || getPerformanceLevel(student, aiGrade);
|
|
367
|
+
const chipProps = getPerformanceChipProps(perfLevel, t);
|
|
317
368
|
return /*#__PURE__*/_jsx(Box, {
|
|
318
369
|
sx: {
|
|
319
370
|
py: 2
|
|
@@ -330,7 +381,7 @@ export default function FeedbackCard({
|
|
|
330
381
|
children: /*#__PURE__*/_jsxs(Box, {
|
|
331
382
|
display: "flex",
|
|
332
383
|
alignItems: "center",
|
|
333
|
-
gap:
|
|
384
|
+
gap: 1.5,
|
|
334
385
|
children: [/*#__PURE__*/_jsx(Avatar, {
|
|
335
386
|
alt: student.username,
|
|
336
387
|
src: student.userImage,
|
|
@@ -339,12 +390,65 @@ export default function FeedbackCard({
|
|
|
339
390
|
height: 48,
|
|
340
391
|
filter: isAbsent ? "grayscale(100%)" : "none"
|
|
341
392
|
}
|
|
342
|
-
}), /*#__PURE__*/
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
393
|
+
}), /*#__PURE__*/_jsxs(Box, {
|
|
394
|
+
display: "flex",
|
|
395
|
+
flexDirection: "column",
|
|
396
|
+
gap: 0.5,
|
|
397
|
+
children: [/*#__PURE__*/_jsx(Typography, {
|
|
398
|
+
fontWeight: 600,
|
|
399
|
+
sx: {
|
|
400
|
+
color: isAbsent ? grey[500] : "text.primary"
|
|
401
|
+
},
|
|
402
|
+
children: student.username
|
|
403
|
+
}), chipProps && hasSubmission && !isAbsent && /*#__PURE__*/_jsx(Tooltip, {
|
|
404
|
+
title: /*#__PURE__*/_jsxs(Box, {
|
|
405
|
+
sx: {
|
|
406
|
+
p: 0.5
|
|
407
|
+
},
|
|
408
|
+
children: [/*#__PURE__*/_jsx(Typography, {
|
|
409
|
+
variant: "body2",
|
|
410
|
+
fontWeight: "bold",
|
|
411
|
+
sx: {
|
|
412
|
+
mb: 0.5
|
|
413
|
+
},
|
|
414
|
+
children: t('ai_performance_assessment')
|
|
415
|
+
}), /*#__PURE__*/_jsx(Typography, {
|
|
416
|
+
variant: "caption",
|
|
417
|
+
sx: {
|
|
418
|
+
display: 'block',
|
|
419
|
+
mb: 0.5
|
|
420
|
+
},
|
|
421
|
+
children: t('performance_chip_tooltip')
|
|
422
|
+
}), /*#__PURE__*/_jsx(Typography, {
|
|
423
|
+
variant: "caption",
|
|
424
|
+
sx: {
|
|
425
|
+
fontStyle: 'italic',
|
|
426
|
+
opacity: 0.9
|
|
427
|
+
},
|
|
428
|
+
children: t('performance_chip_note')
|
|
429
|
+
})]
|
|
430
|
+
}),
|
|
431
|
+
placement: "top",
|
|
432
|
+
children: /*#__PURE__*/_jsx(Chip, {
|
|
433
|
+
label: chipProps.label,
|
|
434
|
+
color: chipProps.color,
|
|
435
|
+
size: "small",
|
|
436
|
+
icon: chipProps.icon,
|
|
437
|
+
sx: {
|
|
438
|
+
width: 'fit-content',
|
|
439
|
+
fontWeight: 600,
|
|
440
|
+
fontSize: '0.7rem',
|
|
441
|
+
height: '22px',
|
|
442
|
+
'& .MuiChip-label': {
|
|
443
|
+
paddingLeft: '8px',
|
|
444
|
+
paddingRight: '8px'
|
|
445
|
+
},
|
|
446
|
+
'&:hover': {
|
|
447
|
+
opacity: 0.9
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
})
|
|
451
|
+
})]
|
|
348
452
|
})]
|
|
349
453
|
})
|
|
350
454
|
}), /*#__PURE__*/_jsx(Grid, {
|
|
@@ -122,8 +122,23 @@ export default function GroupFeedbackDialog({
|
|
|
122
122
|
const progress = totalDiscussions > 0 ? Math.round(submittedCount / totalDiscussions * 100) : 0;
|
|
123
123
|
const ratio = totalDiscussions > 0 ? submittedCount / totalDiscussions : 0;
|
|
124
124
|
const ringColor = ratio === 0 ? grey[500] : ratio > 0 && ratio <= 1 / 3 ? red[600] : ratio > 1 / 3 && ratio <= 2 / 3 ? orange[600] : ratio > 2 / 3 && ratio < 1 ? green[600] : green[600];
|
|
125
|
+
const getJoinedMembersNames = (joinedMemberIds, userData) => {
|
|
126
|
+
if (!joinedMemberIds || !Array.isArray(joinedMemberIds)) {
|
|
127
|
+
return [];
|
|
128
|
+
}
|
|
129
|
+
return joinedMemberIds.map(memberId => {
|
|
130
|
+
const user = userData.find(u => u.memberId === memberId);
|
|
131
|
+
return {
|
|
132
|
+
memberId: memberId,
|
|
133
|
+
name: user?.username || user?.createdByName || 'Unknown',
|
|
134
|
+
username: user?.username,
|
|
135
|
+
createdByName: user?.createdByName
|
|
136
|
+
};
|
|
137
|
+
}).filter(member => member.name !== 'Unknown');
|
|
138
|
+
};
|
|
125
139
|
const handleGenerateFeedback = async discussionData => {
|
|
126
140
|
if (handleBatchGradeConversations) {
|
|
141
|
+
const joinedMembersWithNames = getJoinedMembersNames(discussionData.joinedMembers || [], userData);
|
|
127
142
|
await handleBatchGradeConversations([{
|
|
128
143
|
meetingId: discussionData.meetingId || discussionData.meetingID,
|
|
129
144
|
extMeetingId: discussionData.extMeetingId,
|
|
@@ -131,7 +146,9 @@ export default function GroupFeedbackDialog({
|
|
|
131
146
|
meetingCreator: discussionData.meetingCreator,
|
|
132
147
|
conversation: discussionData.conversation,
|
|
133
148
|
meetingPrompt: discussionData.meetingPrompt,
|
|
134
|
-
learnLang: learnLang
|
|
149
|
+
learnLang: learnLang,
|
|
150
|
+
joinedMembers: discussionData.joinedMembers || [],
|
|
151
|
+
joinedMembersNames: joinedMembersWithNames
|
|
135
152
|
}]);
|
|
136
153
|
}
|
|
137
154
|
};
|
|
@@ -144,13 +161,17 @@ export default function GroupFeedbackDialog({
|
|
|
144
161
|
}).map(discussion => {
|
|
145
162
|
const discMeetingId = discussion.meetingID || discussion.meetingId;
|
|
146
163
|
const submissionForThisDiscussion = submissionsByMeetingId[discMeetingId];
|
|
164
|
+
const joinedMembersWithNames = getJoinedMembersNames(submissionForThisDiscussion.joinedMembers || [], userData);
|
|
147
165
|
return {
|
|
148
166
|
meetingId: submissionForThisDiscussion.meetingId || submissionForThisDiscussion.meetingID,
|
|
149
167
|
extMeetingId: submissionForThisDiscussion.extMeetingId,
|
|
150
168
|
creator: submissionForThisDiscussion.creator,
|
|
151
169
|
meetingCreator: submissionForThisDiscussion.meetingCreator,
|
|
152
170
|
conversation: submissionForThisDiscussion.conversation || [],
|
|
153
|
-
meetingPrompt: discussion.meetingPrompt || submissionForThisDiscussion.meetingPrompt
|
|
171
|
+
meetingPrompt: discussion.meetingPrompt || submissionForThisDiscussion.meetingPrompt,
|
|
172
|
+
learnLang: learnLang,
|
|
173
|
+
joinedMembers: submissionForThisDiscussion.joinedMembers || [],
|
|
174
|
+
joinedMembersNames: joinedMembersWithNames
|
|
154
175
|
};
|
|
155
176
|
});
|
|
156
177
|
if (conversationsToGrade.length > 0 && handleBatchGradeConversations) {
|
|
@@ -189,6 +210,7 @@ export default function GroupFeedbackDialog({
|
|
|
189
210
|
selectedAttendee: studentId,
|
|
190
211
|
selectedAttendeeName: student?.username || student?.createdByName,
|
|
191
212
|
feedbackText: feedbackData[studentId]?.feedbackText || "",
|
|
213
|
+
levelPerformance: feedbackData[studentId]?.levelPerformance || "",
|
|
192
214
|
gradingOption: "Individual Grade"
|
|
193
215
|
};
|
|
194
216
|
await handleCreateFeedback(values, recordingData);
|
|
@@ -205,12 +227,14 @@ export default function GroupFeedbackDialog({
|
|
|
205
227
|
const meetingId = submission.meetingId || submission.meetingID;
|
|
206
228
|
const userId = submission.userId || submission.selectedAttendee;
|
|
207
229
|
const feedbackText = submission.feedbackText || "";
|
|
230
|
+
const levelPerformance = submission.levelPerformance || null;
|
|
208
231
|
if (meetingId && userId) {
|
|
209
232
|
if (!feedbackMap[meetingId]) {
|
|
210
233
|
feedbackMap[meetingId] = {};
|
|
211
234
|
}
|
|
212
235
|
feedbackMap[meetingId][userId] = {
|
|
213
|
-
feedbackText: feedbackText
|
|
236
|
+
feedbackText: feedbackText,
|
|
237
|
+
levelPerformance: levelPerformance
|
|
214
238
|
};
|
|
215
239
|
}
|
|
216
240
|
});
|
|
@@ -863,7 +863,8 @@ function Listener({
|
|
|
863
863
|
fullWidth: true,
|
|
864
864
|
multiline: true,
|
|
865
865
|
autoComplete: "off",
|
|
866
|
-
characters: learnLangCharacters ? learnLangCharacters : null
|
|
866
|
+
characters: learnLangCharacters ? learnLangCharacters : null,
|
|
867
|
+
autoFocus: true
|
|
867
868
|
})
|
|
868
869
|
})
|
|
869
870
|
}), isWordBankEnabled && /*#__PURE__*/_jsx(Grid, {
|
|
@@ -896,7 +896,8 @@ function Translator({
|
|
|
896
896
|
multiline: true,
|
|
897
897
|
fullWidth: true,
|
|
898
898
|
autoComplete: "off",
|
|
899
|
-
characters: forLangCharacters ? forLangCharacters : null
|
|
899
|
+
characters: forLangCharacters ? forLangCharacters : null,
|
|
900
|
+
autoFocus: true
|
|
900
901
|
})]
|
|
901
902
|
})
|
|
902
903
|
}), isWordBankEnabled && /*#__PURE__*/_jsx(Grid, {
|
|
@@ -30,7 +30,8 @@ function AppContact({
|
|
|
30
30
|
};
|
|
31
31
|
const {
|
|
32
32
|
email,
|
|
33
|
-
message
|
|
33
|
+
message,
|
|
34
|
+
jobTitle
|
|
34
35
|
} = values;
|
|
35
36
|
const isGenerated = checkIsGeneratedEmail(authEmail);
|
|
36
37
|
return /*#__PURE__*/_jsx("form", {
|
|
@@ -97,6 +98,23 @@ function AppContact({
|
|
|
97
98
|
},
|
|
98
99
|
required: true
|
|
99
100
|
})
|
|
101
|
+
}), /*#__PURE__*/_jsx(Grid, {
|
|
102
|
+
size: 12,
|
|
103
|
+
children: /*#__PURE__*/_jsx(TextField, {
|
|
104
|
+
name: "jobTitle",
|
|
105
|
+
value: jobTitle || "",
|
|
106
|
+
onChange: handleChange,
|
|
107
|
+
autoComplete: "off",
|
|
108
|
+
tabIndex: -1,
|
|
109
|
+
sx: {
|
|
110
|
+
position: "absolute",
|
|
111
|
+
left: "-10000px",
|
|
112
|
+
top: "auto",
|
|
113
|
+
width: "1px",
|
|
114
|
+
height: "1px",
|
|
115
|
+
overflow: "hidden"
|
|
116
|
+
}
|
|
117
|
+
})
|
|
100
118
|
}), /*#__PURE__*/_jsx(Grid, {
|
|
101
119
|
size: 12,
|
|
102
120
|
children: /*#__PURE__*/_jsx(Button, {
|
|
@@ -172,7 +172,7 @@ function InputHelper(props) {
|
|
|
172
172
|
margin,
|
|
173
173
|
inputRef,
|
|
174
174
|
maxLength,
|
|
175
|
-
|
|
175
|
+
autoFocus,
|
|
176
176
|
learnLang
|
|
177
177
|
} = props;
|
|
178
178
|
const textInput = useRef(null);
|
|
@@ -214,7 +214,7 @@ function InputHelper(props) {
|
|
|
214
214
|
startAdornment: adornmentPosition === "start" ? adornment : null,
|
|
215
215
|
endAdornment: adornmentPosition === "end" ? adornment : null,
|
|
216
216
|
inputRef: activeRef,
|
|
217
|
-
autoFocus:
|
|
217
|
+
autoFocus: autoFocus,
|
|
218
218
|
inputProps: {
|
|
219
219
|
maxLength
|
|
220
220
|
},
|
|
@@ -226,7 +226,7 @@ function InputHelper(props) {
|
|
|
226
226
|
endAdornment: adornmentPosition === "end" ? adornment : null,
|
|
227
227
|
labelWidth: 150,
|
|
228
228
|
inputRef: activeRef,
|
|
229
|
-
autoFocus:
|
|
229
|
+
autoFocus: autoFocus,
|
|
230
230
|
inputProps: {
|
|
231
231
|
maxLength
|
|
232
232
|
},
|
|
@@ -409,7 +409,7 @@ function LiveListener({
|
|
|
409
409
|
fullWidth: true,
|
|
410
410
|
multiline: true,
|
|
411
411
|
autoComplete: "off",
|
|
412
|
-
|
|
412
|
+
autoFocus: true,
|
|
413
413
|
characters: learnLangCharacters ? learnLangCharacters : null
|
|
414
414
|
})
|
|
415
415
|
}), !isWordBankHidden && !isCreator && wordBankEnabled && keyboardEnabled && /*#__PURE__*/_jsx(Grid, {
|
|
@@ -609,7 +609,8 @@ function LiveTranslator({
|
|
|
609
609
|
multiline: true,
|
|
610
610
|
fullWidth: true,
|
|
611
611
|
autoComplete: "off",
|
|
612
|
-
characters: forLangCharacters ? forLangCharacters : null
|
|
612
|
+
characters: forLangCharacters ? forLangCharacters : null,
|
|
613
|
+
autoFocus: true
|
|
613
614
|
})]
|
|
614
615
|
}), !isWordBankHidden && wordBankEnabled && keyboardEnabled && /*#__PURE__*/_jsx(Grid, {
|
|
615
616
|
children: /*#__PURE__*/_jsx(Tooltip, {
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import { useState } from "react";
|
|
2
2
|
import { Box } from "@mui/material";
|
|
3
|
-
import Nuala from "./Nuala1";
|
|
4
3
|
import Nuala2 from "./Nuala2";
|
|
5
4
|
import Nuala3 from "./Nuala3";
|
|
6
5
|
import "./styles.css";
|
|
7
6
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
7
|
export default function NualaCreating() {
|
|
9
|
-
//
|
|
10
|
-
const images = [
|
|
8
|
+
// Store the component references, not elements
|
|
9
|
+
const images = [Nuala2, Nuala3];
|
|
11
10
|
|
|
12
|
-
//
|
|
13
|
-
const [
|
|
11
|
+
// Pick a random component on mount
|
|
12
|
+
const [RandomImage] = useState(() => {
|
|
14
13
|
return images[Math.floor(Math.random() * images.length)];
|
|
15
14
|
});
|
|
16
15
|
return /*#__PURE__*/_jsx(Box, {
|
|
@@ -19,6 +18,6 @@ export default function NualaCreating() {
|
|
|
19
18
|
marginLeft: "auto",
|
|
20
19
|
marginRight: "auto"
|
|
21
20
|
},
|
|
22
|
-
children:
|
|
21
|
+
children: /*#__PURE__*/_jsx(RandomImage, {})
|
|
23
22
|
});
|
|
24
23
|
}
|
|
@@ -567,6 +567,11 @@ function Classroom({
|
|
|
567
567
|
searchParams = new URLSearchParams(location.search);
|
|
568
568
|
courseSectionTopicId = searchParams.get("courseSectionTopicId") || "";
|
|
569
569
|
}
|
|
570
|
+
const removeCourseSectionTopicIdFromUrl = () => {
|
|
571
|
+
const url = new URL(window.location);
|
|
572
|
+
url.searchParams.delete('courseSectionTopicId');
|
|
573
|
+
window.history.replaceState({}, '', url);
|
|
574
|
+
};
|
|
570
575
|
useEffect(() => {
|
|
571
576
|
if (createLiveGame && isNualangLiveEnabled) {
|
|
572
577
|
handleOpenSelectExercise();
|
|
@@ -1598,10 +1603,14 @@ function Classroom({
|
|
|
1598
1603
|
t: t,
|
|
1599
1604
|
stage: import.meta.env.REACT_APP_STAGE,
|
|
1600
1605
|
imageLoading: imageLoading,
|
|
1601
|
-
handleClose: () =>
|
|
1606
|
+
handleClose: () => {
|
|
1607
|
+
setIsCreateMeetingDialogOpen(false);
|
|
1608
|
+
removeCourseSectionTopicIdFromUrl();
|
|
1609
|
+
},
|
|
1602
1610
|
handleSubmit: async props => {
|
|
1603
1611
|
await formattedScheduleMeeting(props);
|
|
1604
1612
|
setIsCreateMeetingDialogOpen(false);
|
|
1613
|
+
removeCourseSectionTopicIdFromUrl();
|
|
1605
1614
|
},
|
|
1606
1615
|
values: {
|
|
1607
1616
|
members: classroomMembers,
|
|
@@ -35,7 +35,8 @@ const TableToolbar = ({
|
|
|
35
35
|
reportTypes,
|
|
36
36
|
setReportType,
|
|
37
37
|
reportType,
|
|
38
|
-
currentView
|
|
38
|
+
currentView,
|
|
39
|
+
memberId
|
|
39
40
|
}) => {
|
|
40
41
|
const {
|
|
41
42
|
useQueryClient
|
|
@@ -94,7 +95,7 @@ const TableToolbar = ({
|
|
|
94
95
|
},
|
|
95
96
|
children: reportFilterOptions
|
|
96
97
|
})
|
|
97
|
-
}), reportType !== "discuss" && /*#__PURE__*/_jsx(Grid, {
|
|
98
|
+
}), reportType !== "discuss" && !memberId && /*#__PURE__*/_jsx(Grid, {
|
|
98
99
|
mt: 0.5,
|
|
99
100
|
mr: 1,
|
|
100
101
|
children: /*#__PURE__*/_jsx(SelectMembers, {
|
|
@@ -105,7 +106,7 @@ const TableToolbar = ({
|
|
|
105
106
|
})
|
|
106
107
|
}), /*#__PURE__*/_jsx(Box, {
|
|
107
108
|
flexGrow: 1
|
|
108
|
-
}), reportType !== "discuss" && /*#__PURE__*/_jsx(Grid, {
|
|
109
|
+
}), reportType !== "discuss" && !memberId && /*#__PURE__*/_jsx(Grid, {
|
|
109
110
|
children: /*#__PURE__*/_jsxs(Grid, {
|
|
110
111
|
container: true,
|
|
111
112
|
spacing: 1,
|
|
@@ -177,7 +178,8 @@ function Progress({
|
|
|
177
178
|
const reportFilters = ["percentage_complete", "correct_answer_percentage", "avg_pronunciation_score"];
|
|
178
179
|
const [filter, setFilter] = useState(reportFilters[0]);
|
|
179
180
|
const reportTypes = isVideoChatEnabled ? ["courses", "assignments", "discuss"] : ["courses", "assignments"];
|
|
180
|
-
const [
|
|
181
|
+
const availableReportTypes = memberId ? ["courses", "assignments"] : reportTypes;
|
|
182
|
+
const [reportType, setReportType] = useState(availableReportTypes[0]);
|
|
181
183
|
useEffect(() => {
|
|
182
184
|
if (selectedTopic) {
|
|
183
185
|
setRoleplays(selectedTopic?.roleplays);
|
|
@@ -233,7 +235,7 @@ function Progress({
|
|
|
233
235
|
useEffect(() => {
|
|
234
236
|
if ("URLSearchParams" in window) {
|
|
235
237
|
const searchParams = searchStringToObj(window.location.search);
|
|
236
|
-
if (searchParams.reportType && searchParams.reportType !==
|
|
238
|
+
if (searchParams.reportType && searchParams.reportType !== availableReportTypes[0] && availableReportTypes.includes(searchParams.reportType) && reportType !== searchParams.reportType) {
|
|
237
239
|
setReportType(searchParams.reportType);
|
|
238
240
|
}
|
|
239
241
|
}
|
|
@@ -277,7 +279,7 @@ function Progress({
|
|
|
277
279
|
useEffect(() => {
|
|
278
280
|
if ("URLSearchParams" in window) {
|
|
279
281
|
const searchParams = searchStringToObj(window.location.search);
|
|
280
|
-
if (reportType && reportType !==
|
|
282
|
+
if (reportType && reportType !== availableReportTypes[0]) {
|
|
281
283
|
searchParams["reportType"] = reportType;
|
|
282
284
|
} else {
|
|
283
285
|
delete searchParams["reportType"];
|
|
@@ -520,7 +522,7 @@ function Progress({
|
|
|
520
522
|
}
|
|
521
523
|
if (isSmallScreen) {
|
|
522
524
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
523
|
-
children: [
|
|
525
|
+
children: [/*#__PURE__*/_jsx(TableToolbar, {
|
|
524
526
|
t: t,
|
|
525
527
|
members: members,
|
|
526
528
|
selectedMembers: selectedMembers,
|
|
@@ -529,10 +531,11 @@ function Progress({
|
|
|
529
531
|
reportFilters: reportFilters,
|
|
530
532
|
filter: filter,
|
|
531
533
|
setFilter: setFilter,
|
|
532
|
-
reportTypes:
|
|
534
|
+
reportTypes: availableReportTypes,
|
|
533
535
|
setReportType: setReportType,
|
|
534
536
|
reportType: reportType,
|
|
535
|
-
currentView: currentView
|
|
537
|
+
currentView: currentView,
|
|
538
|
+
memberId: memberId
|
|
536
539
|
}), reportType === "discuss" ? /*#__PURE__*/_jsxs(Grid, {
|
|
537
540
|
container: true,
|
|
538
541
|
spacing: 2,
|
|
@@ -593,7 +596,7 @@ function Progress({
|
|
|
593
596
|
});
|
|
594
597
|
}
|
|
595
598
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
596
|
-
children: [
|
|
599
|
+
children: [/*#__PURE__*/_jsx(TableToolbar, {
|
|
597
600
|
t: t,
|
|
598
601
|
members: members,
|
|
599
602
|
selectedMembers: selectedMembers,
|
|
@@ -602,10 +605,11 @@ function Progress({
|
|
|
602
605
|
reportFilters: reportFilters,
|
|
603
606
|
filter: filter,
|
|
604
607
|
setFilter: setFilter,
|
|
605
|
-
reportTypes:
|
|
608
|
+
reportTypes: availableReportTypes,
|
|
606
609
|
setReportType: setReportType,
|
|
607
610
|
reportType: reportType,
|
|
608
|
-
currentView: currentView
|
|
611
|
+
currentView: currentView,
|
|
612
|
+
memberId: memberId
|
|
609
613
|
}), reportType === "discuss" ? /*#__PURE__*/_jsxs(Grid, {
|
|
610
614
|
container: true,
|
|
611
615
|
spacing: 2,
|