@nualang/nualang-ui-components 0.1.1172 → 0.1.1173

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.
@@ -24,7 +24,6 @@ const StyledDiv = (0, _material.styled)("div")(() => ({
24
24
  }));
25
25
  function CreateFeedbackDialog({
26
26
  handleSubmit = () => {},
27
- attendees = [],
28
27
  attendeesData = [],
29
28
  data = {},
30
29
  handleGradeConversation = () => {},
@@ -95,7 +94,6 @@ function CreateFeedbackDialog({
95
94
  handleGradeConversation: handleGradeConversation,
96
95
  aiGrade: aiGrade,
97
96
  attendeesData: attendeesData,
98
- attendees: attendees,
99
97
  handleClosefeedbackForm: handleClosefeedbackForm,
100
98
  handleSubmit: handleSubmit,
101
99
  initialValues: values,
@@ -119,7 +117,6 @@ CreateFeedbackDialog.propTypes = {
119
117
  saveTranscript: _propTypes.default.func,
120
118
  attendeesData: _propTypes.default.array,
121
119
  t: _propTypes.default.func,
122
- attendees: _propTypes.default.object,
123
120
  data: _propTypes.default.object,
124
121
  handleGradeConversation: _propTypes.default.func,
125
122
  aiGrade: _propTypes.default.string,
@@ -78,7 +78,6 @@ function RecordingDialog({
78
78
  open,
79
79
  handleClose,
80
80
  meetingID,
81
- attendees,
82
81
  meetingPrompt,
83
82
  isTeacher,
84
83
  goToTimestamp,
@@ -95,7 +94,7 @@ function RecordingDialog({
95
94
  handleCreateFeedback,
96
95
  attendeesData
97
96
  }) {
98
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_ResponsiveDialog.default, {
97
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, attendeesData.length > 0 && /*#__PURE__*/_react.default.createElement(_ResponsiveDialog.default, {
99
98
  open: open,
100
99
  handleClose: handleClose,
101
100
  maxWidth: 1,
@@ -145,16 +144,15 @@ function RecordingDialog({
145
144
  }, /*#__PURE__*/_react.default.createElement(_RecordingInfo.default, {
146
145
  t: t,
147
146
  meetingID: meetingID,
148
- attendees: attendees,
149
147
  attendeesData: attendeesData,
150
148
  meetingPrompt: meetingPrompt,
151
- meetingTopic: meetingTopic
149
+ meetingTopic: meetingTopic,
150
+ isTeacher: isTeacher
152
151
  }), isTeacher ? /*#__PURE__*/_react.default.createElement(_FeedbackDialog.default, {
153
152
  t: t,
154
153
  loading: loading,
155
154
  saveTranscript: saveTranscript,
156
155
  attendeesData: attendeesData,
157
- attendees: attendees,
158
156
  data: selectedRecording,
159
157
  selectedRecording: selectedRecording,
160
158
  handleGradeConversation: handleGradeConversation,
@@ -172,8 +170,7 @@ RecordingDialog.propTypes = {
172
170
  open: _propTypes.default.bool,
173
171
  handleClose: _propTypes.default.func,
174
172
  meetingID: _propTypes.default.string,
175
- attendees: _propTypes.default.object,
176
- attendeesData: _propTypes.default.object,
173
+ attendeesData: _propTypes.default.array,
177
174
  meetingTopic: _propTypes.default.string,
178
175
  meetingPrompt: _propTypes.default.string,
179
176
  isTeacher: _propTypes.default.bool,
@@ -744,9 +744,9 @@ FeedbackForm.propTypes = {
744
744
  handleChange: _propTypes.default.func,
745
745
  handleBlur: _propTypes.default.func,
746
746
  handleSubmit: _propTypes.default.func,
747
- attendees: _propTypes.default.object,
748
747
  aiGrade: _propTypes.default.object,
749
- t: _propTypes.default.func
748
+ t: _propTypes.default.func,
749
+ attendeesData: _propTypes.default.array
750
750
  };
751
751
  function CreateFeedbackForm({
752
752
  initialValues = {
@@ -780,7 +780,6 @@ function CreateFeedbackForm({
780
780
  },
781
781
  handleSubmit: handleSubmitFeedback,
782
782
  enableReinitialize,
783
- attendees,
784
783
  attendeesData,
785
784
  handleGradeConversation,
786
785
  aiGrade = {},
@@ -839,7 +838,6 @@ function CreateFeedbackForm({
839
838
  handleClosefeedbackForm: handleClosefeedbackForm,
840
839
  handleChange: handleChange,
841
840
  values: values,
842
- attendees: attendees,
843
841
  attendeesData: attendeesData,
844
842
  handleGradeConversation: handleGradeConversation,
845
843
  conversation: conversation,
@@ -869,7 +867,7 @@ CreateFeedbackForm.propTypes = {
869
867
  onSubmit: _propTypes.default.func,
870
868
  handleSubmit: _propTypes.default.func,
871
869
  handleGradeConversation: _propTypes.default.func,
872
- attendees: _propTypes.default.object,
873
870
  aiGrade: _propTypes.default.object,
874
- conversation: _propTypes.default.object
871
+ conversation: _propTypes.default.object,
872
+ attendeesData: _propTypes.default.array
875
873
  };
@@ -4,19 +4,34 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = RecordingInfo;
7
- var _react = _interopRequireDefault(require("react"));
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _FeedbackInfoDialog = _interopRequireDefault(require("../../Dialogs/FeedbackInfoDialog/FeedbackInfoDialog"));
8
9
  var _material = require("@mui/material");
9
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
10
11
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
13
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
11
14
  // eslint-disable-next-line no-unused-vars
12
15
 
13
16
  function RecordingInfo({
14
17
  meetingPrompt = "",
15
18
  meetingTopic = "",
16
19
  t = text => text,
17
- attendeesData
20
+ attendeesData,
21
+ isTeacher
18
22
  }) {
19
- return /*#__PURE__*/_react.default.createElement(_material.Box, {
23
+ const [viewFeedbackOpen, setViewFeedbackOpen] = (0, _react.useState)(false);
24
+ const [recordingFeedback, setRecordingFeedback] = (0, _react.useState)({});
25
+ const theme = (0, _material.useTheme)();
26
+ const isLgUp = (0, _material.useMediaQuery)(theme.breakpoints.up("lg"));
27
+ const handleCloseViewFeedback = () => {
28
+ setViewFeedbackOpen(false);
29
+ };
30
+ const handleViewFeedbackOpen = attendee => {
31
+ setRecordingFeedback(attendee.feedback);
32
+ setViewFeedbackOpen(true);
33
+ };
34
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_material.Box, {
20
35
  p: 3
21
36
  }, /*#__PURE__*/_react.default.createElement(_material.Box, null, /*#__PURE__*/_react.default.createElement(_material.Typography, {
22
37
  fontWeight: "bold",
@@ -30,31 +45,71 @@ function RecordingInfo({
30
45
  variant: "h6"
31
46
  }, t("discussion_prompt")), /*#__PURE__*/_react.default.createElement(_material.Typography, {
32
47
  variant: "body1"
33
- }, meetingPrompt)), /*#__PURE__*/_react.default.createElement(_material.Box, {
34
- mt: 3
48
+ }, meetingPrompt)), /*#__PURE__*/_react.default.createElement(_material.Grid, {
49
+ container: true,
50
+ spacing: 1,
51
+ sx: {
52
+ mt: 2
53
+ },
54
+ alignItems: "center"
55
+ }, /*#__PURE__*/_react.default.createElement(_material.Grid, {
56
+ item: true,
57
+ xs: 12
35
58
  }, /*#__PURE__*/_react.default.createElement(_material.Typography, {
36
59
  fontWeight: "bold",
37
60
  variant: "h6"
38
- }, t("attendees")), /*#__PURE__*/_react.default.createElement(_material.List, null, [attendeesData].flat()?.map((attendee, index) => /*#__PURE__*/_react.default.createElement(_material.Box, {
39
- key: attendee?.memberId,
61
+ }, t("attendees"))), [attendeesData].flat()?.map((attendee, index) => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, {
62
+ key: attendee.memberId
63
+ }, /*#__PURE__*/_react.default.createElement(_material.Grid, {
64
+ item: true,
65
+ xs: 12,
66
+ lg: isTeacher ? 4 : 12
67
+ }, /*#__PURE__*/_react.default.createElement(_material.Box, {
40
68
  display: "flex",
41
69
  alignItems: "center",
42
- sx: {
43
- marginBottom: 2
44
- }
70
+ sx: isLgUp || !isTeacher ? {
71
+ mb: 2
72
+ } : {}
45
73
  }, /*#__PURE__*/_react.default.createElement(_material.Avatar, {
46
- alt: attendee?.username,
47
- src: attendee?.userImage
74
+ alt: attendee.username,
75
+ src: attendee.userImage
48
76
  }), /*#__PURE__*/_react.default.createElement(_material.Typography, {
49
77
  sx: {
50
78
  marginLeft: 2
51
79
  }
52
- }, attendee?.username))))));
80
+ }, attendee.username))), isTeacher && /*#__PURE__*/_react.default.createElement(_material.Grid, {
81
+ item: true,
82
+ xs: 12,
83
+ lg: 8,
84
+ sx: isLgUp ? {
85
+ display: "flex",
86
+ justifyContent: "flex-end",
87
+ alignItems: "center"
88
+ } : {}
89
+ }, /*#__PURE__*/_react.default.createElement(_material.Tooltip, {
90
+ title: Object.keys(attendee.feedback).length === 0 ? t("no_feedback") : "",
91
+ placement: "top",
92
+ arrow: true
93
+ }, /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_material.Button, {
94
+ "aria-label": t("view_feedback"),
95
+ variant: "outlined",
96
+ onClick: () => handleViewFeedbackOpen(attendee),
97
+ disabled: Object.keys(attendee.feedback).length === 0,
98
+ sx: isLgUp ? {
99
+ mb: 2
100
+ } : {
101
+ mb: 1
102
+ }
103
+ }, t("view_feedback"))))))))), /*#__PURE__*/_react.default.createElement(_FeedbackInfoDialog.default, {
104
+ feedbackOpen: viewFeedbackOpen,
105
+ feedbackHandleClose: handleCloseViewFeedback,
106
+ recordingFeedback: recordingFeedback,
107
+ t: t
108
+ }));
53
109
  }
54
110
  RecordingInfo.propTypes = {
55
111
  meetingPrompt: _propTypes.default.string,
56
112
  meetingTopic: _propTypes.default.string,
57
- meetingID: _propTypes.default.string,
58
- attendees: _propTypes.default.array,
59
- t: _propTypes.default.func
113
+ t: _propTypes.default.func,
114
+ attendeesData: _propTypes.default.array
60
115
  };
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.props = exports.default = exports.Default = void 0;
6
+ exports.props = exports.default = exports.Teacher = exports.Default = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
8
  var _RecordingInfo = _interopRequireDefault(require("./RecordingInfo"));
9
9
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -11,8 +11,58 @@ const Template = args => /*#__PURE__*/_react.default.createElement(_RecordingInf
11
11
  const props = exports.props = {
12
12
  meetingTopic: "The Beach",
13
13
  meetingPrompt: "Going to the beach with friends",
14
- emails: ["aaron.cullen@fathomtech.io", "connor.cawley@fathomtech.io", "stephen.kelly@fathomtech.io"],
15
- meetingID: "abcdef123456"
14
+ attendeesData: [{
15
+ classroomId: "test-classroom",
16
+ createdAt: 1719919556228,
17
+ createdBy: "user1",
18
+ memberId: "user1",
19
+ role: "student",
20
+ updatedAt: 1719919556228,
21
+ username: "Diego Maradona",
22
+ feedback: {
23
+ feedback1: [{
24
+ feedbackLevel: 0,
25
+ feedbackLevelName: "Novice Low",
26
+ methodCheck: "Teacher"
27
+ }],
28
+ feedback2: [{
29
+ feedbackLevel: 1,
30
+ feedbackLevelName: "Novice Mid",
31
+ methodCheck: "Teacher"
32
+ }],
33
+ feedback3: [{
34
+ feedbackLevel: 2,
35
+ feedbackLevelName: "Novice High",
36
+ methodCheck: "Teacher"
37
+ }],
38
+ feedback4: [{
39
+ feedbackLevel: 3,
40
+ feedbackLevelName: "Intermediate Low",
41
+ methodCheck: "Teacher"
42
+ }],
43
+ feedback5: [{
44
+ feedbackLevel: 3,
45
+ feedbackLevelName: "Intermediate Low",
46
+ methodCheck: "Teacher"
47
+ }],
48
+ feedback6: [{
49
+ feedbackLevel: 0,
50
+ feedbackLevelName: "Not Applicable",
51
+ fromTeacher: true
52
+ }],
53
+ feedbackText: "You did great!",
54
+ gradingOption: "Individual Grade"
55
+ }
56
+ }, {
57
+ classroomId: "test-classroom",
58
+ createdAt: 1719919556229,
59
+ createdBy: "user2",
60
+ memberId: "user2",
61
+ role: "student",
62
+ updatedAt: 1719919556229,
63
+ username: "Cristiano Ronaldofsdfsfsfsfdsfsdfds",
64
+ feedback: {}
65
+ }]
16
66
  };
17
67
  var _default = exports.default = {
18
68
  title: "Forms/RecordingInfo",
@@ -24,4 +74,10 @@ Default.args = {
24
74
  ...props,
25
75
  loading: false
26
76
  };
27
- Default.storyName = "default";
77
+ Default.storyName = "default";
78
+ const Teacher = exports.Teacher = Template.bind({});
79
+ Teacher.args = {
80
+ ...props,
81
+ isTeacher: true
82
+ };
83
+ Teacher.storyName = "teacher";
@@ -374,7 +374,8 @@ function Classroom({
374
374
  handleEditDiscussion,
375
375
  editBackgroundImages,
376
376
  editMeetingImages,
377
- setSelectedDiscussion
377
+ setSelectedDiscussion,
378
+ meetingRecsData
378
379
  } = vchatProps;
379
380
  const isSmallScreen = (0, _useMediaQuery.default)("(max-width:410px)");
380
381
  const {
@@ -837,7 +838,8 @@ function Classroom({
837
838
  getMeeting: getMeeting,
838
839
  getRecordings: getRecordings,
839
840
  selectedRecording: selectedRecording,
840
- setSelectedRecording: setSelectedRecording
841
+ setSelectedRecording: setSelectedRecording,
842
+ meetingRecsData: meetingRecsData
841
843
  }))), discussions?.length > 0 && /*#__PURE__*/_react.default.createElement("div", {
842
844
  id: "discussScheduled"
843
845
  }, /*#__PURE__*/_react.default.createElement(_ScheduleListCards.default, {
@@ -14,8 +14,6 @@ var _Forum = _interopRequireDefault(require("@mui/icons-material/Forum"));
14
14
  var _BubbleChart = _interopRequireDefault(require("@mui/icons-material/BubbleChart"));
15
15
  var _Add = _interopRequireDefault(require("@mui/icons-material/Add"));
16
16
  var _Courses = _interopRequireDefault(require("../../Lists/Courses"));
17
- var _Roleplays = _interopRequireDefault(require("../../Lists/Roleplays"));
18
- var _Bots = _interopRequireDefault(require("../../Lists/Bots"));
19
17
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
20
18
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
21
19
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
@@ -50,24 +48,12 @@ function Dashboard({
50
48
  t = text => text,
51
49
  completions = [],
52
50
  avatars = [],
53
- newRoleplays = [],
54
- handleSelectRoleplay,
55
- newBots = [],
56
- handleSelectBot,
57
- handleShareBot,
58
- handlePlayBot,
59
- handleShareRoleplay,
60
- handlePlayRoleplay,
61
51
  newCourses = [],
62
52
  recommendedCourses = [],
63
53
  popularCourses = [],
64
54
  isNewCoursesLoading,
65
55
  isRecommendedCoursesLoading,
66
- isNewRoleplaysLoading,
67
- isNewBotsLoading,
68
56
  isPopularCoursesLoading,
69
- handleDuplicateBot,
70
- handleDuplicateRoleplay,
71
57
  singleLineGrid = true,
72
58
  singleLineGridCols = 4,
73
59
  handleStartCourse,
@@ -91,7 +77,6 @@ function Dashboard({
91
77
  getCourseMember,
92
78
  getCourseMembers,
93
79
  username,
94
- subscription,
95
80
  memberId,
96
81
  handleDuplicateCourse
97
82
  }) {
@@ -317,98 +302,5 @@ function Dashboard({
317
302
  handleDuplicateCourse: handleDuplicateCourse
318
303
  })), /*#__PURE__*/_react.default.createElement(_material.Box, {
319
304
  pb: 2
320
- }, /*#__PURE__*/_react.default.createElement(_material.Divider, null))) : null, isNewRoleplaysLoading || newRoleplays.length > 0 ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_material.Box, {
321
- pb: 2
322
- }, /*#__PURE__*/_react.default.createElement("div", {
323
- className: classes.header
324
- }, /*#__PURE__*/_react.default.createElement("div", {
325
- className: classes.headerText
326
- }, /*#__PURE__*/_react.default.createElement(_material.Typography, {
327
- variant: "h5",
328
- component: "h2"
329
- }, newRoleplays.length > 0 ? t("new_roleplays") : /*#__PURE__*/_react.default.createElement(_Skeleton.default, {
330
- variant: "rectangular",
331
- height: 32,
332
- width: 250
333
- }))), /*#__PURE__*/_react.default.createElement(_material.Tooltip, {
334
- title: t("find_roleplay")
335
- }, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
336
- onClick: handleSearchRoleplays,
337
- "aria-label": t("find_roleplay"),
338
- color: "inherit",
339
- "data-cy": "search-roleplay-fab",
340
- size: "large",
341
- role: "link"
342
- }, /*#__PURE__*/_react.default.createElement(_Search.default, null))), /*#__PURE__*/_react.default.createElement(_material.Tooltip, {
343
- title: t("create_roleplay")
344
- }, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
345
- onClick: handleCreateRoleplay,
346
- "aria-label": t("create_roleplay"),
347
- color: "inherit",
348
- "data-cy": "add-roleplay-fab",
349
- size: "large",
350
- role: "link"
351
- }, /*#__PURE__*/_react.default.createElement(_Add.default, null)))), /*#__PURE__*/_react.default.createElement(_Roleplays.default, {
352
- t: t,
353
- roleplays: Array.isArray(newRoleplays) && newRoleplays.length ? newRoleplays : null,
354
- handleSelectRoleplay: handleSelectRoleplay,
355
- handlePlayRoleplay: handlePlayRoleplay,
356
- handleShareRoleplay: handleShareRoleplay,
357
- selectText: "play",
358
- avatars: avatars,
359
- handleDuplicateRoleplay: handleDuplicateRoleplay,
360
- singleLineGrid: singleLineGrid,
361
- singleLineGridCols: singleLineGridCols,
362
- handleViewUserProfile: handleViewUserProfile,
363
- subscription: subscription
364
- })), /*#__PURE__*/_react.default.createElement(_material.Box, {
365
- pb: 2
366
- }, /*#__PURE__*/_react.default.createElement(_material.Divider, null))) : null, isNewBotsLoading || newBots.length > 0 ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_material.Box, {
367
- pb: 2
368
- }, /*#__PURE__*/_react.default.createElement("div", {
369
- className: classes.header
370
- }, /*#__PURE__*/_react.default.createElement("div", {
371
- className: classes.headerText
372
- }, /*#__PURE__*/_react.default.createElement(_material.Typography, {
373
- variant: "h5",
374
- component: "h2"
375
- }, newBots.length > 0 ? t("new_bots") : /*#__PURE__*/_react.default.createElement(_Skeleton.default, {
376
- variant: "rectangular",
377
- height: 32,
378
- width: 250
379
- }))), /*#__PURE__*/_react.default.createElement(_material.Tooltip, {
380
- title: t("find_bot")
381
- }, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
382
- onClick: handleSearchBots,
383
- "aria-label": t("find_bot"),
384
- color: "inherit",
385
- "data-cy": "search-bot-fab",
386
- size: "large",
387
- role: "link"
388
- }, /*#__PURE__*/_react.default.createElement(_Search.default, null))), /*#__PURE__*/_react.default.createElement(_material.Tooltip, {
389
- title: t("create_bot")
390
- }, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
391
- onClick: handleCreateBot,
392
- "aria-label": t("create_bot"),
393
- color: "inherit",
394
- "data-cy": "add-bot-fab",
395
- size: "large",
396
- role: "link"
397
- }, /*#__PURE__*/_react.default.createElement(_Add.default, null)))), /*#__PURE__*/_react.default.createElement(_Bots.default, {
398
- t: t,
399
- bots: Array.isArray(newBots) && newBots.length ? newBots : null,
400
- handleSelectBot: handleSelectBot,
401
- handlePlayBot: handlePlayBot,
402
- handleShareBot: handleShareBot,
403
- selectText: "play",
404
- avatars: avatars,
405
- handleDuplicateBot: handleDuplicateBot,
406
- singleLineGrid: singleLineGrid,
407
- singleLineGridCols: singleLineGridCols,
408
- handleViewUserProfile: handleViewUserProfile,
409
- subscription: subscription,
410
- disablePreview: true
411
- })), /*#__PURE__*/_react.default.createElement(_material.Box, {
412
- pb: 2
413
305
  }, /*#__PURE__*/_react.default.createElement(_material.Divider, null))) : null);
414
306
  }
@@ -34,11 +34,13 @@ const SubmissionsTableCards = (0, _mui.withStyles)(({
34
34
  selectedRecording,
35
35
  setSelectedRecording,
36
36
  saveTranscript = () => {},
37
+ meetingRecsData,
37
38
  t = text => text
38
39
  }) => {
39
40
  const [open, setOpen] = (0, _react.useState)(false);
40
41
  const [feedbackOpen, setFeedbackOpen] = (0, _react.useState)(false);
41
42
  const [cardsToShow, setCardsToShow] = (0, _react.useState)(3);
43
+ const [attendeesData, setAttendeesData] = (0, _react.useState)([]);
42
44
 
43
45
  // const handleRefresh = async () => {
44
46
  // await getRecordings();
@@ -48,26 +50,23 @@ const SubmissionsTableCards = (0, _mui.withStyles)(({
48
50
  setSelectedRecording(recording);
49
51
  setOpen(true);
50
52
  };
51
- const handleFeedbackJoin = recording => {
52
- setSelectedRecording(recording);
53
- setFeedbackOpen(true);
54
- };
55
- const attendeeUsernames = [];
56
- userData.forEach(user => {
57
- [selectedRecording?.attendees].flat().forEach(attendee => {
58
- if (user.memberId === attendee) {
59
- attendeeUsernames.push(user?.username);
60
- }
61
- });
62
- });
63
- const attendeesData = [];
64
- userData.forEach(user => {
65
- [selectedRecording?.attendees].flat().forEach(attendee => {
66
- if (user.memberId === attendee) {
67
- attendeesData.push(user);
68
- }
69
- });
70
- });
53
+ (0, _react.useEffect)(() => {
54
+ if (open && meetingRecsData) {
55
+ const attendees = [selectedRecording?.attendees].flat();
56
+ const newAttendeesData = userData.filter(user => attendees.includes(user.memberId)).map(user => {
57
+ const recordingFeedback = meetingRecsData.find(rec => rec.userId === user.memberId);
58
+ return {
59
+ ...user,
60
+ feedback: recordingFeedback ? {
61
+ ...recordingFeedback,
62
+ userId: undefined
63
+ } : {}
64
+ };
65
+ });
66
+ setAttendeesData(newAttendeesData);
67
+ }
68
+ // eslint-disable-next-line react-hooks/exhaustive-deps
69
+ }, [open, meetingRecsData]);
71
70
  const uniqueMeetingIds = [];
72
71
  const uniqueSubmissions = submissionsTableData.filter(row => {
73
72
  const meetingId = row.meetingId;
@@ -77,6 +76,10 @@ const SubmissionsTableCards = (0, _mui.withStyles)(({
77
76
  }
78
77
  return false;
79
78
  });
79
+ const handleClose = () => {
80
+ setOpen(false);
81
+ setAttendeesData([]);
82
+ };
80
83
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_material.Box, {
81
84
  sx: {
82
85
  marginBottom: 2
@@ -89,19 +92,11 @@ const SubmissionsTableCards = (0, _mui.withStyles)(({
89
92
  className: classes.grow
90
93
  }), loading ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_LoadingCard.default, null), /*#__PURE__*/_react.default.createElement(_LoadingCard.default, null)) : uniqueSubmissions && uniqueSubmissions.length > 0 ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, uniqueSubmissions.slice(0, cardsToShow).map(row => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_SubmissionsCard.default, {
91
94
  t: t,
92
- userData: userData,
93
95
  submissionsTableData: row,
94
96
  handleView: () => handleJoin(row),
95
- handleViewFeedback: () => handleFeedbackJoin(row),
96
- selectedRecording: selectedRecording,
97
- setSelectedRecording: setSelectedRecording,
98
- open: open,
99
- handleClose: () => setOpen(false),
100
- feedbackOpen: feedbackOpen,
101
- feedbackHandleClose: () => setFeedbackOpen(false)
97
+ userData: userData
102
98
  }), /*#__PURE__*/_react.default.createElement(_RecordingDialog.default, {
103
99
  t: t,
104
- attendees: attendeeUsernames,
105
100
  attendeesData: attendeesData,
106
101
  open: open,
107
102
  row: row,
@@ -112,7 +107,7 @@ const SubmissionsTableCards = (0, _mui.withStyles)(({
112
107
  handleGradeConversation: handleGradeConversation,
113
108
  aiGrade: aiGrade,
114
109
  s3EventsUrl: s3EventsUrl,
115
- handleClose: () => setOpen(false),
110
+ handleClose: handleClose,
116
111
  emails: row?.attendees,
117
112
  meetingID: selectedRecording?.meetingId,
118
113
  meetingPrompt: selectedRecording?.meetingPrompt,
@@ -120,10 +115,10 @@ const SubmissionsTableCards = (0, _mui.withStyles)(({
120
115
  isTeacher: true,
121
116
  goToTimestamp: goToTimestamp,
122
117
  conversation: conversation,
123
- handleCreateFeedback: handleCreateFeedback
118
+ handleCreateFeedback: handleCreateFeedback,
119
+ meetingRecsData: meetingRecsData
124
120
  }), /*#__PURE__*/_react.default.createElement(_FeedbackInfoDialog.default, {
125
121
  t: t,
126
- attendees: attendeeUsernames,
127
122
  feedbackOpen: feedbackOpen,
128
123
  handleCreateFeedback: handleCreateFeedback,
129
124
  feedbackHandleClose: () => setFeedbackOpen(false),
@@ -167,6 +162,7 @@ SubmissionsTableCards.propTypes = {
167
162
  })),
168
163
  classes: _propTypes.default.object.isRequired,
169
164
  propsPageChange: _propTypes.default.func,
170
- propsRowChange: _propTypes.default.func
165
+ propsRowChange: _propTypes.default.func,
166
+ attendeesData: _propTypes.default.array
171
167
  };
172
168
  var _default = exports.default = SubmissionsTableCards;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nualang/nualang-ui-components",
3
- "version": "0.1.1172",
3
+ "version": "0.1.1173",
4
4
  "main": "dist/index.js",
5
5
  "files": [
6
6
  "dist",