@elice/material-assignment 1.240718.0-trasncript.1 → 1.240718.0-trasncript.2
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/cjs/_virtual/_rollupPluginBabelHelpers.js +383 -0
- package/cjs/components/index.js +9 -0
- package/cjs/components/material-assignment/MaterialAssignment.js +23 -17
- package/cjs/components/material-assignment/MaterialAssignmentContent.js +281 -194
- package/cjs/components/material-assignment/MaterialAssignmentUploadModal.js +181 -138
- package/cjs/components/material-assignment/constants/color.js +1 -1
- package/cjs/components/material-assignment/index.js +7 -0
- package/cjs/components/material-assignment/locales/index.js +13 -0
- package/cjs/components/material-assignment-admin/MaterialAssignmentAdmin.js +32 -24
- package/cjs/components/material-assignment-admin/MaterialAssignmentAdmin.styled.js +19 -9
- package/cjs/components/material-assignment-admin/MaterialAssignmentAdminContent.js +774 -548
- package/cjs/components/material-assignment-admin/MaterialAssignmentAdminContentTa.js +436 -303
- package/cjs/components/material-assignment-admin/index.js +7 -0
- package/cjs/components/shared/MaterialAssignmentContainer.js +23 -13
- package/es/_virtual/_rollupPluginBabelHelpers.js +374 -0
- package/es/components/index.js +2 -0
- package/es/components/material-assignment/MaterialAssignment.js +18 -17
- package/es/components/material-assignment/MaterialAssignmentContent.js +276 -194
- package/es/components/material-assignment/MaterialAssignmentUploadModal.js +177 -139
- package/es/components/material-assignment/constants/color.js +1 -1
- package/es/components/material-assignment/index.js +1 -0
- package/es/components/material-assignment/locales/index.js +4 -0
- package/es/components/material-assignment-admin/MaterialAssignmentAdmin.js +29 -25
- package/es/components/material-assignment-admin/MaterialAssignmentAdmin.styled.js +15 -9
- package/es/components/material-assignment-admin/MaterialAssignmentAdminContent.js +770 -549
- package/es/components/material-assignment-admin/MaterialAssignmentAdminContentTa.js +432 -304
- package/es/components/material-assignment-admin/index.js +1 -0
- package/es/components/shared/MaterialAssignmentContainer.js +19 -13
- package/package.json +9 -12
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { slicedToArray as _slicedToArray, asyncToGenerator as _asyncToGenerator, regeneratorRuntime as _regeneratorRuntime } from '../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
1
3
|
import React from 'react';
|
|
2
4
|
import { useForm, Controller } from 'react-hook-form';
|
|
3
5
|
import { config, getOrgUserGet, getOrgMaterialAssignmentGet, getOrgMaterialAssignmentSubmissionList, getOrgMaterialAssignmentGradeResultGet, getOrgMaterialAssignmentGradeList, postOrgMaterialAssignmentGradeEdit } from '@elice/api-client';
|
|
4
|
-
import {
|
|
6
|
+
import { Flex, Vspace, Notification, ProfileImage, Hspace, Text, Tooltip, Icon, InfoTable, Button, TableNext, Modal, Label, Input, Textarea } from '@elice/blocks';
|
|
5
7
|
import { base } from '@elice/design-tokens';
|
|
6
8
|
import { eilStatusInfo } from '@elice/icons';
|
|
7
9
|
import { FormattedDate } from '@elice/intl';
|
|
@@ -10,14 +12,13 @@ import dayjs from 'dayjs';
|
|
|
10
12
|
import MaterialAssignmentContainer from '../shared/MaterialAssignmentContainer.js';
|
|
11
13
|
import { StyledMaterialAssignmentAdminHeader, StyledMaterialAssignmentAdminHeaderCell, StyledMaterialAssignmentAdminGradeWrapper } from './MaterialAssignmentAdmin.styled.js';
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
materialAssignmentId,
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}) => {
|
|
15
|
+
var MaterialAssignmentAdminContentTa = function MaterialAssignmentAdminContentTa(_ref) {
|
|
16
|
+
var materialAssignmentId = _ref.materialAssignmentId,
|
|
17
|
+
userId = _ref.userId,
|
|
18
|
+
adminUserId = _ref.adminUserId;
|
|
18
19
|
var _a;
|
|
19
20
|
// Form
|
|
20
|
-
|
|
21
|
+
var gradeEditFormMethods = useForm({
|
|
21
22
|
defaultValues: {
|
|
22
23
|
score: 0,
|
|
23
24
|
comment: ''
|
|
@@ -25,67 +26,100 @@ const MaterialAssignmentAdminContentTa = ({
|
|
|
25
26
|
mode: 'onChange'
|
|
26
27
|
});
|
|
27
28
|
// State related with component
|
|
28
|
-
|
|
29
|
+
var _React$useState = React.useState(false),
|
|
30
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
31
|
+
showGradeEditModal = _React$useState2[0],
|
|
32
|
+
setShowGradeEditModal = _React$useState2[1];
|
|
29
33
|
// State related with api
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
var _React$useState3 = React.useState(null),
|
|
35
|
+
_React$useState4 = _slicedToArray(_React$useState3, 2),
|
|
36
|
+
user = _React$useState4[0],
|
|
37
|
+
setUser = _React$useState4[1];
|
|
38
|
+
var _React$useState5 = React.useState(null),
|
|
39
|
+
_React$useState6 = _slicedToArray(_React$useState5, 2),
|
|
40
|
+
materialAssignment = _React$useState6[0],
|
|
41
|
+
setMaterialAssignment = _React$useState6[1];
|
|
42
|
+
var _React$useState7 = React.useState(null),
|
|
43
|
+
_React$useState8 = _slicedToArray(_React$useState7, 2),
|
|
44
|
+
userSubmission = _React$useState8[0],
|
|
45
|
+
setUserSubmission = _React$useState8[1];
|
|
46
|
+
var _React$useState9 = React.useState(null),
|
|
47
|
+
_React$useState10 = _slicedToArray(_React$useState9, 2),
|
|
48
|
+
gradeResult = _React$useState10[0],
|
|
49
|
+
setGradeResult = _React$useState10[1];
|
|
50
|
+
var _React$useState11 = React.useState(null),
|
|
51
|
+
_React$useState12 = _slicedToArray(_React$useState11, 2),
|
|
52
|
+
myGrade = _React$useState12[0],
|
|
53
|
+
setMyGrade = _React$useState12[1];
|
|
54
|
+
var isAssignmentClosed = dayjs().isAfter(dayjs(materialAssignment === null || materialAssignment === void 0 ? void 0 : materialAssignment.closeDatetime));
|
|
55
|
+
var isScoreFinalized = Boolean(materialAssignment === null || materialAssignment === void 0 ? void 0 : materialAssignment.scoreFinalizedDatetime);
|
|
56
|
+
var isUserSubmitted = Boolean(userSubmission);
|
|
38
57
|
// API Status
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
58
|
+
var isReady = useMaterialConfigApiClientUpdate(config.init);
|
|
59
|
+
var _React$useState13 = React.useState('idle'),
|
|
60
|
+
_React$useState14 = _slicedToArray(_React$useState13, 2),
|
|
61
|
+
submissionListGetStatus = _React$useState14[0],
|
|
62
|
+
setSubmissionListGetStatus = _React$useState14[1];
|
|
63
|
+
var fetchUserGet = React.useCallback(function () {
|
|
42
64
|
void getOrgUserGet({
|
|
43
|
-
userId
|
|
44
|
-
}).then(
|
|
65
|
+
userId: userId
|
|
66
|
+
}).then(function (res) {
|
|
67
|
+
return res.user;
|
|
68
|
+
}).then(setUser);
|
|
45
69
|
}, [userId]);
|
|
46
|
-
|
|
70
|
+
var fetchMaterialAssignmentGet = React.useCallback(function () {
|
|
47
71
|
void getOrgMaterialAssignmentGet({
|
|
48
|
-
materialAssignmentId
|
|
49
|
-
}).then(
|
|
72
|
+
materialAssignmentId: materialAssignmentId
|
|
73
|
+
}).then(function (res) {
|
|
74
|
+
return res.materialAssignment;
|
|
75
|
+
}).then(setMaterialAssignment);
|
|
50
76
|
}, [materialAssignmentId]);
|
|
51
|
-
|
|
77
|
+
var fetchSubmissionList = React.useCallback(function () {
|
|
52
78
|
setSubmissionListGetStatus('pending');
|
|
53
79
|
void getOrgMaterialAssignmentSubmissionList({
|
|
54
|
-
materialAssignmentId,
|
|
80
|
+
materialAssignmentId: materialAssignmentId,
|
|
55
81
|
offset: 0,
|
|
56
82
|
count: 1,
|
|
57
83
|
filterConditions: {
|
|
58
84
|
isLast: true,
|
|
59
85
|
userIds: [userId]
|
|
60
86
|
}
|
|
61
|
-
}).then(
|
|
87
|
+
}).then(function (res) {
|
|
88
|
+
return res.materialAssignmentSubmissions[0];
|
|
89
|
+
}).then(function (submission) {
|
|
62
90
|
setUserSubmission(submission !== null && submission !== void 0 ? submission : null);
|
|
63
91
|
setSubmissionListGetStatus('resolved');
|
|
64
|
-
}).catch(err
|
|
92
|
+
}).catch(function (err) {
|
|
65
93
|
console.error(err);
|
|
66
94
|
setSubmissionListGetStatus('rejected');
|
|
67
95
|
});
|
|
68
96
|
}, [materialAssignmentId, userId]);
|
|
69
|
-
|
|
97
|
+
var fetchGradeResult = React.useCallback(function () {
|
|
70
98
|
void getOrgMaterialAssignmentGradeResultGet({
|
|
71
|
-
materialAssignmentId,
|
|
72
|
-
userId
|
|
73
|
-
}).then(
|
|
99
|
+
materialAssignmentId: materialAssignmentId,
|
|
100
|
+
userId: userId
|
|
101
|
+
}).then(function (res) {
|
|
102
|
+
return res.materialAssignmentGradeResult;
|
|
103
|
+
}).then(setGradeResult).catch(function () {
|
|
74
104
|
setGradeResult(null);
|
|
75
105
|
});
|
|
76
106
|
}, [materialAssignmentId, userId]);
|
|
77
|
-
|
|
107
|
+
var fetchMyGrade = React.useCallback(function () {
|
|
78
108
|
void getOrgMaterialAssignmentGradeList({
|
|
79
|
-
materialAssignmentId,
|
|
109
|
+
materialAssignmentId: materialAssignmentId,
|
|
80
110
|
offset: 0,
|
|
81
111
|
count: 1,
|
|
82
112
|
filterConditions: {
|
|
83
|
-
userId,
|
|
113
|
+
userId: userId,
|
|
84
114
|
gradeUserId: adminUserId
|
|
85
115
|
}
|
|
86
|
-
}).then(
|
|
116
|
+
}).then(function (res) {
|
|
117
|
+
return res.materialAssignmentGrades[0];
|
|
118
|
+
}).then(function (grade) {
|
|
119
|
+
return setMyGrade(grade !== null && grade !== void 0 ? grade : null);
|
|
120
|
+
});
|
|
87
121
|
}, [adminUserId, materialAssignmentId, userId]);
|
|
88
|
-
|
|
122
|
+
var handleGradeEditClick = function handleGradeEditClick() {
|
|
89
123
|
var _a, _b;
|
|
90
124
|
setShowGradeEditModal(true);
|
|
91
125
|
gradeEditFormMethods.reset({
|
|
@@ -93,28 +127,47 @@ const MaterialAssignmentAdminContentTa = ({
|
|
|
93
127
|
comment: (_b = myGrade === null || myGrade === void 0 ? void 0 : myGrade.comment) !== null && _b !== void 0 ? _b : ''
|
|
94
128
|
});
|
|
95
129
|
};
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
130
|
+
var handleGradeEditSubmit = gradeEditFormMethods.handleSubmit( /*#__PURE__*/function () {
|
|
131
|
+
var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref2) {
|
|
132
|
+
var score, comment;
|
|
133
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
134
|
+
while (1) switch (_context.prev = _context.next) {
|
|
135
|
+
case 0:
|
|
136
|
+
score = _ref2.score, comment = _ref2.comment;
|
|
137
|
+
_context.prev = 1;
|
|
138
|
+
_context.next = 4;
|
|
139
|
+
return postOrgMaterialAssignmentGradeEdit({
|
|
140
|
+
materialAssignmentGradeId: myGrade === null || myGrade === void 0 ? void 0 : myGrade.id,
|
|
141
|
+
materialAssignmentId: materialAssignmentId,
|
|
142
|
+
userId: userId,
|
|
143
|
+
score: score,
|
|
144
|
+
comment: comment
|
|
145
|
+
});
|
|
146
|
+
case 4:
|
|
147
|
+
fetchMyGrade();
|
|
148
|
+
Notification.success('저장되었습니다');
|
|
149
|
+
_context.next = 12;
|
|
150
|
+
break;
|
|
151
|
+
case 8:
|
|
152
|
+
_context.prev = 8;
|
|
153
|
+
_context.t0 = _context["catch"](1);
|
|
154
|
+
console.error(_context.t0);
|
|
155
|
+
Notification.error('오류가 발생했습니다.');
|
|
156
|
+
case 12:
|
|
157
|
+
_context.prev = 12;
|
|
158
|
+
setShowGradeEditModal(false);
|
|
159
|
+
return _context.finish(12);
|
|
160
|
+
case 15:
|
|
161
|
+
case "end":
|
|
162
|
+
return _context.stop();
|
|
163
|
+
}
|
|
164
|
+
}, _callee, null, [[1, 8, 12, 15]]);
|
|
165
|
+
}));
|
|
166
|
+
return function (_x) {
|
|
167
|
+
return _ref3.apply(this, arguments);
|
|
168
|
+
};
|
|
169
|
+
}());
|
|
170
|
+
React.useEffect(function () {
|
|
118
171
|
if (!isReady) {
|
|
119
172
|
return;
|
|
120
173
|
}
|
|
@@ -124,148 +177,199 @@ const MaterialAssignmentAdminContentTa = ({
|
|
|
124
177
|
fetchSubmissionList();
|
|
125
178
|
fetchMaterialAssignmentGet();
|
|
126
179
|
}, [isReady, fetchUserGet, fetchMyGrade, fetchGradeResult, fetchSubmissionList, fetchMaterialAssignmentGet]);
|
|
127
|
-
|
|
180
|
+
var renderHeader = function renderHeader() {
|
|
128
181
|
var _a;
|
|
129
|
-
return
|
|
182
|
+
return jsxs(StyledMaterialAssignmentAdminHeader, {
|
|
130
183
|
align: "center",
|
|
131
184
|
padding: "1rem",
|
|
132
|
-
width: "100%"
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
185
|
+
width: "100%",
|
|
186
|
+
children: [jsxs(Flex, {
|
|
187
|
+
auto: true,
|
|
188
|
+
align: "center",
|
|
189
|
+
children: [jsx(ProfileImage, {
|
|
190
|
+
src: (_a = user === null || user === void 0 ? void 0 : user.profileUrl) !== null && _a !== void 0 ? _a : '',
|
|
191
|
+
width: "2.5rem",
|
|
192
|
+
height: "2.5rem"
|
|
193
|
+
}), jsx(Hspace, {
|
|
194
|
+
width: 1
|
|
195
|
+
}), jsx(Text, {
|
|
196
|
+
size: "small",
|
|
197
|
+
role: "warmwhite",
|
|
198
|
+
children: user === null || user === void 0 ? void 0 : user.fullname
|
|
199
|
+
})]
|
|
200
|
+
}), jsxs(StyledMaterialAssignmentAdminHeaderCell, {
|
|
201
|
+
children: [jsx(Text, {
|
|
202
|
+
size: "tiny",
|
|
203
|
+
role: "gray4",
|
|
204
|
+
children: "\uC810\uC218"
|
|
205
|
+
}), jsx(Text, {
|
|
206
|
+
size: "small",
|
|
207
|
+
role: "white",
|
|
208
|
+
children: (gradeResult === null || gradeResult === void 0 ? void 0 : gradeResult.score) && isScoreFinalized ? "".concat(gradeResult.score, "\uC810(\uACF5\uAC1C\uB428)") : '--'
|
|
209
|
+
})]
|
|
210
|
+
}), jsxs(StyledMaterialAssignmentAdminHeaderCell, {
|
|
211
|
+
children: [jsx(Text, {
|
|
212
|
+
size: "tiny",
|
|
213
|
+
role: "gray4",
|
|
214
|
+
children: "\uC81C\uCD9C \uC77C\uC2DC"
|
|
215
|
+
}), jsx(Text, {
|
|
216
|
+
size: "small",
|
|
217
|
+
role: "white",
|
|
218
|
+
children: userSubmission ? jsx(FormattedDate, {
|
|
219
|
+
value: userSubmission.createdDatetime,
|
|
220
|
+
dateStyle: "medium",
|
|
221
|
+
timeStyle: "short"
|
|
222
|
+
}) : '--'
|
|
223
|
+
})]
|
|
224
|
+
})]
|
|
225
|
+
});
|
|
162
226
|
};
|
|
163
|
-
|
|
164
|
-
return
|
|
227
|
+
var renderGradeResult = function renderGradeResult() {
|
|
228
|
+
return jsx(StyledMaterialAssignmentAdminGradeWrapper, {
|
|
165
229
|
wrap: true,
|
|
166
230
|
width: "100%",
|
|
167
|
-
align: "center"
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
231
|
+
align: "center",
|
|
232
|
+
children: jsxs(Flex, {
|
|
233
|
+
auto: true,
|
|
234
|
+
align: "center",
|
|
235
|
+
children: [jsx(Text, {
|
|
236
|
+
role: "navy1",
|
|
237
|
+
size: "small",
|
|
238
|
+
lineHeight: "1.375rem",
|
|
239
|
+
children: user ? "".concat(user.fullname, " \uB2D8\uC758 \uC810\uC218") : null
|
|
240
|
+
}), jsx(Hspace, {
|
|
241
|
+
width: 0.25
|
|
242
|
+
}), jsx(Tooltip, {
|
|
243
|
+
useMaxWidth: true,
|
|
244
|
+
placement: "top",
|
|
245
|
+
title: '최종 점수는 관리자가 모든 채점자의 점수를 고려하여 반영한 후 공개됩니다.',
|
|
246
|
+
children: jsx(Icon, {
|
|
247
|
+
icon: eilStatusInfo,
|
|
248
|
+
color: base.color.navy1
|
|
249
|
+
})
|
|
250
|
+
}), jsx(Hspace, {
|
|
251
|
+
width: 0.75
|
|
252
|
+
}), jsx(Text, {
|
|
253
|
+
bold: true,
|
|
254
|
+
role: "white",
|
|
255
|
+
children: (gradeResult === null || gradeResult === void 0 ? void 0 : gradeResult.score) && isScoreFinalized ? "".concat(gradeResult.score, "\uC810(\uACF5\uAC1C\uB428)") : '--'
|
|
256
|
+
})]
|
|
257
|
+
})
|
|
258
|
+
});
|
|
190
259
|
};
|
|
191
|
-
|
|
192
|
-
|
|
260
|
+
var renderSubmissionInfo = function renderSubmissionInfo() {
|
|
261
|
+
var statusText = function () {
|
|
193
262
|
if (submissionListGetStatus === 'pending') {
|
|
194
263
|
return null;
|
|
195
264
|
}
|
|
196
265
|
switch (true) {
|
|
197
266
|
case !isUserSubmitted && isAssignmentClosed:
|
|
198
|
-
return
|
|
267
|
+
return jsx(Text, {
|
|
199
268
|
bold: true,
|
|
200
269
|
role: "danger",
|
|
201
|
-
size: "small"
|
|
202
|
-
|
|
270
|
+
size: "small",
|
|
271
|
+
children: "\uC81C\uCD9C \uAE30\uD55C \uB9CC\uB8CC"
|
|
272
|
+
});
|
|
203
273
|
case isScoreFinalized:
|
|
204
|
-
return
|
|
274
|
+
return jsx(Text, {
|
|
205
275
|
bold: true,
|
|
206
276
|
role: "lightpurple",
|
|
207
|
-
size: "small"
|
|
208
|
-
|
|
277
|
+
size: "small",
|
|
278
|
+
children: "\uCC44\uC810 \uC644\uB8CC"
|
|
279
|
+
});
|
|
209
280
|
case isUserSubmitted:
|
|
210
|
-
return
|
|
281
|
+
return jsx(Text, {
|
|
211
282
|
bold: true,
|
|
212
283
|
role: "success",
|
|
213
|
-
size: "small"
|
|
214
|
-
|
|
284
|
+
size: "small",
|
|
285
|
+
children: "\uC81C\uCD9C\uB428"
|
|
286
|
+
});
|
|
215
287
|
case !isUserSubmitted:
|
|
216
|
-
return
|
|
288
|
+
return jsx(Text, {
|
|
217
289
|
bold: true,
|
|
218
290
|
role: "warning",
|
|
219
|
-
size: "small"
|
|
220
|
-
|
|
291
|
+
size: "small",
|
|
292
|
+
children: "\uBBF8\uC81C\uCD9C"
|
|
293
|
+
});
|
|
221
294
|
}
|
|
222
|
-
}
|
|
223
|
-
|
|
295
|
+
}();
|
|
296
|
+
var submissionAttachment = function () {
|
|
224
297
|
if (!userSubmission) {
|
|
225
298
|
return '--';
|
|
226
299
|
}
|
|
227
300
|
if (userSubmission.assignmentFileUrl) {
|
|
228
|
-
|
|
229
|
-
return
|
|
301
|
+
var assignmentFilename = decodeURIComponent(userSubmission.assignmentFileUrl && new URL(userSubmission.assignmentFileUrl).pathname.split('/').pop() || '');
|
|
302
|
+
return jsx("a", {
|
|
230
303
|
href: userSubmission.assignmentFileUrl,
|
|
231
304
|
download: assignmentFilename,
|
|
232
305
|
target: "_blank",
|
|
233
|
-
rel: "noopener noreferrer"
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
306
|
+
rel: "noopener noreferrer",
|
|
307
|
+
children: jsx(Text, {
|
|
308
|
+
hoverable: true,
|
|
309
|
+
underline: true,
|
|
310
|
+
role: "white",
|
|
311
|
+
size: "small",
|
|
312
|
+
children: assignmentFilename
|
|
313
|
+
})
|
|
314
|
+
});
|
|
240
315
|
}
|
|
241
316
|
if (userSubmission === null || userSubmission === void 0 ? void 0 : userSubmission.assignmentUrl) {
|
|
242
|
-
return
|
|
317
|
+
return jsx("a", {
|
|
243
318
|
href: userSubmission.assignmentUrl,
|
|
244
319
|
target: "_blank",
|
|
245
|
-
rel: "noopener noreferrer"
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
320
|
+
rel: "noopener noreferrer",
|
|
321
|
+
children: jsx(Text, {
|
|
322
|
+
hoverable: true,
|
|
323
|
+
underline: true,
|
|
324
|
+
role: "white",
|
|
325
|
+
size: "small",
|
|
326
|
+
children: userSubmission.assignmentUrl
|
|
327
|
+
})
|
|
328
|
+
});
|
|
252
329
|
}
|
|
253
|
-
}
|
|
254
|
-
return
|
|
255
|
-
dark: true
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
330
|
+
}();
|
|
331
|
+
return jsx(InfoTable, {
|
|
332
|
+
dark: true,
|
|
333
|
+
children: jsxs("tbody", {
|
|
334
|
+
children: [jsxs("tr", {
|
|
335
|
+
children: [jsx("td", {
|
|
336
|
+
children: "\uC0C1\uD0DC"
|
|
337
|
+
}), jsx("td", {
|
|
338
|
+
children: statusText
|
|
339
|
+
})]
|
|
340
|
+
}), jsxs("tr", {
|
|
341
|
+
children: [jsx("td", {
|
|
342
|
+
children: "\uACFC\uC81C \uC81C\uCD9C \uAE30\uD55C"
|
|
343
|
+
}), jsx("td", {
|
|
344
|
+
children: jsx(FormattedDate, {
|
|
345
|
+
value: materialAssignment === null || materialAssignment === void 0 ? void 0 : materialAssignment.closeDatetime,
|
|
346
|
+
dateStyle: "medium",
|
|
347
|
+
timeStyle: "short"
|
|
348
|
+
})
|
|
349
|
+
})]
|
|
350
|
+
}), jsxs("tr", {
|
|
351
|
+
children: [jsx("td", {
|
|
352
|
+
children: "\uC81C\uCD9C \uC77C\uC2DC"
|
|
353
|
+
}), jsx("td", {
|
|
354
|
+
children: userSubmission ? jsx(FormattedDate, {
|
|
355
|
+
value: userSubmission.createdDatetime,
|
|
356
|
+
dateStyle: "medium",
|
|
357
|
+
timeStyle: "short"
|
|
358
|
+
}) : '--'
|
|
359
|
+
})]
|
|
360
|
+
}), jsxs("tr", {
|
|
361
|
+
children: [jsx("td", {
|
|
362
|
+
children: "\uC5C5\uB85C\uB4DC\uB41C \uACFC\uC81C"
|
|
363
|
+
}), jsx("td", {
|
|
364
|
+
children: submissionAttachment
|
|
365
|
+
})]
|
|
366
|
+
})]
|
|
367
|
+
})
|
|
368
|
+
});
|
|
265
369
|
};
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
370
|
+
var renderGrade = function renderGrade() {
|
|
371
|
+
var isGradeEditDisabled = !isAssignmentClosed || !isUserSubmitted || isScoreFinalized;
|
|
372
|
+
var tooltipTitle = function () {
|
|
269
373
|
switch (true) {
|
|
270
374
|
case isScoreFinalized:
|
|
271
375
|
return '공개 이후 채점이 불가합니다.';
|
|
@@ -274,79 +378,91 @@ const MaterialAssignmentAdminContentTa = ({
|
|
|
274
378
|
case !isUserSubmitted:
|
|
275
379
|
return '미제출인 경우 채점할 수 없습니다.';
|
|
276
380
|
}
|
|
277
|
-
}
|
|
278
|
-
return
|
|
381
|
+
}();
|
|
382
|
+
return jsxs(Flex, {
|
|
279
383
|
column: true,
|
|
280
|
-
align: "center"
|
|
281
|
-
}, React.createElement(Flex, {
|
|
282
384
|
align: "center",
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
385
|
+
children: [jsxs(Flex, {
|
|
386
|
+
align: "center",
|
|
387
|
+
width: "100%",
|
|
388
|
+
children: [jsxs(Flex, {
|
|
389
|
+
column: true,
|
|
390
|
+
auto: true,
|
|
391
|
+
children: [jsx(Text, {
|
|
392
|
+
block: true,
|
|
393
|
+
bold: true,
|
|
394
|
+
role: "white",
|
|
395
|
+
lineHeight: 1.375,
|
|
396
|
+
children: "\uB0B4 \uCC44\uC810"
|
|
397
|
+
}), jsx(Text, {
|
|
398
|
+
block: true,
|
|
399
|
+
size: "tiny",
|
|
400
|
+
role: "navy3",
|
|
401
|
+
lineHeight: 1.6,
|
|
402
|
+
children: "\uB0B4\uAC00 \uB9E4\uAE34 \uD3C9\uAC00\uC640 \uAD00\uB828\uB41C \uC815\uBCF4\uB97C \uBCFC \uC218 \uC788\uC2B5\uB2C8\uB2E4."
|
|
403
|
+
})]
|
|
404
|
+
}), jsx(Tooltip, {
|
|
405
|
+
placement: "top",
|
|
406
|
+
title: tooltipTitle,
|
|
407
|
+
visible: isGradeEditDisabled ? undefined : false,
|
|
408
|
+
children: jsx("span", {
|
|
409
|
+
children: jsx(Button, {
|
|
410
|
+
size: "small",
|
|
411
|
+
role: "lightpurple",
|
|
412
|
+
disabled: isGradeEditDisabled,
|
|
413
|
+
onClick: handleGradeEditClick,
|
|
414
|
+
children: Boolean(myGrade) ? '내 채점 수정' : '내 채점 시작'
|
|
415
|
+
})
|
|
416
|
+
})
|
|
417
|
+
})]
|
|
418
|
+
}), jsx(Vspace, {
|
|
419
|
+
height: 0.75
|
|
420
|
+
}), jsx(TableNext, {
|
|
421
|
+
dark: true,
|
|
422
|
+
emptyMessage: "\uC544\uC9C1 \uCC44\uC810\uC744 \uC2DC\uC791\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.",
|
|
423
|
+
columns: [{
|
|
424
|
+
Header: '채점자명',
|
|
425
|
+
accessor: 'fullname'
|
|
426
|
+
}, {
|
|
427
|
+
Header: '과제 점수',
|
|
428
|
+
accessor: 'grade'
|
|
429
|
+
}, {
|
|
430
|
+
Header: '채점 일시',
|
|
431
|
+
accessor: 'created',
|
|
432
|
+
textAlign: 'left'
|
|
433
|
+
}],
|
|
434
|
+
data: myGrade ? [{
|
|
435
|
+
fullname: jsxs(Flex, {
|
|
436
|
+
paddingy: "0.25rem",
|
|
437
|
+
children: [jsx(Text, {
|
|
438
|
+
noWrap: true,
|
|
439
|
+
role: "navy0",
|
|
440
|
+
size: "small",
|
|
441
|
+
children: myGrade.gradeUser.fullname
|
|
442
|
+
}), jsx(Hspace, {
|
|
443
|
+
width: 0.25
|
|
444
|
+
}), jsx(Text, {
|
|
445
|
+
ellipsis: true,
|
|
446
|
+
role: "navy3",
|
|
447
|
+
size: "small",
|
|
448
|
+
children: myGrade.gradeUser.email
|
|
449
|
+
})]
|
|
450
|
+
}),
|
|
451
|
+
grade: myGrade.score,
|
|
452
|
+
created: jsx(FormattedDate, {
|
|
453
|
+
value: myGrade.createdDatetime,
|
|
454
|
+
dateStyle: "medium",
|
|
455
|
+
timeStyle: "short"
|
|
456
|
+
})
|
|
457
|
+
}] : []
|
|
458
|
+
})]
|
|
459
|
+
});
|
|
344
460
|
};
|
|
345
|
-
|
|
461
|
+
var renderGradeEditModal = function renderGradeEditModal() {
|
|
346
462
|
if (!showGradeEditModal) {
|
|
347
463
|
return null;
|
|
348
464
|
}
|
|
349
|
-
return
|
|
465
|
+
return jsxs(Modal, {
|
|
350
466
|
title: Boolean(myGrade) ? '내 채점 수정' : '과제 채점',
|
|
351
467
|
footerButtons: [{
|
|
352
468
|
label: '확인',
|
|
@@ -359,85 +475,97 @@ const MaterialAssignmentAdminContentTa = ({
|
|
|
359
475
|
label: '취소',
|
|
360
476
|
size: 'small',
|
|
361
477
|
role: 'gray1',
|
|
362
|
-
onClick: ()
|
|
478
|
+
onClick: function onClick() {
|
|
363
479
|
setShowGradeEditModal(false);
|
|
364
480
|
}
|
|
365
481
|
}],
|
|
366
|
-
onHide: ()
|
|
482
|
+
onHide: function onHide() {
|
|
367
483
|
setShowGradeEditModal(false);
|
|
368
|
-
}
|
|
369
|
-
}, React.createElement(Label, {
|
|
370
|
-
bold: true,
|
|
371
|
-
block: true,
|
|
372
|
-
required: true
|
|
373
|
-
}, "\uC810\uC218"), React.createElement(Vspace, {
|
|
374
|
-
height: 0.5
|
|
375
|
-
}), React.createElement(Flex, {
|
|
376
|
-
align: "center"
|
|
377
|
-
}, React.createElement(Controller, {
|
|
378
|
-
control: gradeEditFormMethods.control,
|
|
379
|
-
name: "score",
|
|
380
|
-
rules: {
|
|
381
|
-
required: true,
|
|
382
|
-
min: 0,
|
|
383
|
-
max: 100
|
|
384
|
-
},
|
|
385
|
-
render: ({
|
|
386
|
-
field,
|
|
387
|
-
fieldState
|
|
388
|
-
}) => React.createElement(Input, Object.assign({}, field, {
|
|
389
|
-
invalid: fieldState.invalid,
|
|
390
|
-
size: "small",
|
|
391
|
-
width: "xsmall",
|
|
392
|
-
type: "number"
|
|
393
|
-
}))
|
|
394
|
-
}), React.createElement(Hspace, {
|
|
395
|
-
width: 0.5
|
|
396
|
-
}), React.createElement(Text, {
|
|
397
|
-
bold: true,
|
|
398
|
-
role: "gray9",
|
|
399
|
-
size: "small"
|
|
400
|
-
}, "\uC810"), React.createElement(Text, {
|
|
401
|
-
role: "gray6",
|
|
402
|
-
size: "small"
|
|
403
|
-
}, ' / 100점 만점')), React.createElement(Vspace, {
|
|
404
|
-
height: 1.25
|
|
405
|
-
}), React.createElement(Label, {
|
|
406
|
-
bold: true,
|
|
407
|
-
block: true
|
|
408
|
-
}, "\uD53C\uB4DC\uBC31"), React.createElement(Vspace, {
|
|
409
|
-
height: 0.5
|
|
410
|
-
}), React.createElement(Controller, {
|
|
411
|
-
control: gradeEditFormMethods.control,
|
|
412
|
-
name: "comment",
|
|
413
|
-
rules: {
|
|
414
|
-
maxLength: 1000
|
|
415
484
|
},
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
})
|
|
424
|
-
|
|
485
|
+
children: [jsx(Label, {
|
|
486
|
+
bold: true,
|
|
487
|
+
block: true,
|
|
488
|
+
required: true,
|
|
489
|
+
children: "\uC810\uC218"
|
|
490
|
+
}), jsx(Vspace, {
|
|
491
|
+
height: 0.5
|
|
492
|
+
}), jsxs(Flex, {
|
|
493
|
+
align: "center",
|
|
494
|
+
children: [jsx(Controller, {
|
|
495
|
+
control: gradeEditFormMethods.control,
|
|
496
|
+
name: "score",
|
|
497
|
+
rules: {
|
|
498
|
+
required: true,
|
|
499
|
+
min: 0,
|
|
500
|
+
max: 100
|
|
501
|
+
},
|
|
502
|
+
render: function render(_ref4) {
|
|
503
|
+
var field = _ref4.field,
|
|
504
|
+
fieldState = _ref4.fieldState;
|
|
505
|
+
return jsx(Input, Object.assign({}, field, {
|
|
506
|
+
invalid: fieldState.invalid,
|
|
507
|
+
size: "small",
|
|
508
|
+
width: "xsmall",
|
|
509
|
+
type: "number"
|
|
510
|
+
}));
|
|
511
|
+
}
|
|
512
|
+
}), jsx(Hspace, {
|
|
513
|
+
width: 0.5
|
|
514
|
+
}), jsx(Text, {
|
|
515
|
+
bold: true,
|
|
516
|
+
role: "gray9",
|
|
517
|
+
size: "small",
|
|
518
|
+
children: "\uC810"
|
|
519
|
+
}), jsx(Text, {
|
|
520
|
+
role: "gray6",
|
|
521
|
+
size: "small",
|
|
522
|
+
children: ' / 100점 만점'
|
|
523
|
+
})]
|
|
524
|
+
}), jsx(Vspace, {
|
|
525
|
+
height: 1.25
|
|
526
|
+
}), jsx(Label, {
|
|
527
|
+
bold: true,
|
|
528
|
+
block: true,
|
|
529
|
+
children: "\uD53C\uB4DC\uBC31"
|
|
530
|
+
}), jsx(Vspace, {
|
|
531
|
+
height: 0.5
|
|
532
|
+
}), jsx(Controller, {
|
|
533
|
+
control: gradeEditFormMethods.control,
|
|
534
|
+
name: "comment",
|
|
535
|
+
rules: {
|
|
536
|
+
maxLength: 1000
|
|
537
|
+
},
|
|
538
|
+
render: function render(_ref5) {
|
|
539
|
+
var field = _ref5.field;
|
|
540
|
+
return jsx(Textarea, {
|
|
541
|
+
value: field.value,
|
|
542
|
+
wordLimit: 1000,
|
|
543
|
+
rows: 8,
|
|
544
|
+
onChange: field.onChange
|
|
545
|
+
});
|
|
546
|
+
}
|
|
547
|
+
})]
|
|
548
|
+
});
|
|
425
549
|
};
|
|
426
|
-
return
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
550
|
+
return jsxs(Fragment, {
|
|
551
|
+
children: [renderHeader(), jsx(Flex, {
|
|
552
|
+
column: true,
|
|
553
|
+
auto: true,
|
|
554
|
+
padding: "3.625rem",
|
|
555
|
+
width: "100%",
|
|
556
|
+
height: "100%",
|
|
557
|
+
overflow: "hidden",
|
|
558
|
+
align: "center",
|
|
559
|
+
children: jsxs(MaterialAssignmentContainer, {
|
|
560
|
+
title: (_a = materialAssignment === null || materialAssignment === void 0 ? void 0 : materialAssignment.title) !== null && _a !== void 0 ? _a : '',
|
|
561
|
+
children: [renderGradeResult(), jsx(Vspace, {
|
|
562
|
+
height: 1.25
|
|
563
|
+
}), renderSubmissionInfo(), jsx(Vspace, {
|
|
564
|
+
height: 1.5
|
|
565
|
+
}), renderGrade()]
|
|
566
|
+
})
|
|
567
|
+
}), renderGradeEditModal()]
|
|
568
|
+
});
|
|
441
569
|
};
|
|
442
570
|
|
|
443
571
|
export { MaterialAssignmentAdminContentTa as default };
|