@elice/material-assignment 1.230328.0 → 1.230418.1
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 +393 -0
- package/cjs/components/material-assignment/MaterialAssignment.js +12 -11
- package/cjs/components/material-assignment/MaterialAssignmentContent.js +100 -105
- package/cjs/components/material-assignment/MaterialAssignmentUploadModal.js +113 -93
- package/cjs/components/material-assignment/locales.js +2 -2
- package/cjs/components/material-assignment-admin/MaterialAssignmentAdmin.js +19 -20
- package/cjs/components/material-assignment-admin/MaterialAssignmentAdmin.styled.js +15 -9
- package/cjs/components/material-assignment-admin/MaterialAssignmentAdminContent.js +363 -281
- package/cjs/components/material-assignment-admin/MaterialAssignmentAdminContentTa.js +157 -126
- package/cjs/components/shared/MaterialAssignmentContainer.js +9 -9
- package/cjs/index.js +2 -2
- package/es/_virtual/_rollupPluginBabelHelpers.js +382 -0
- package/es/components/material-assignment/MaterialAssignment.js +8 -9
- package/es/components/material-assignment/MaterialAssignmentContent.js +95 -102
- package/es/components/material-assignment/MaterialAssignmentUploadModal.js +111 -93
- package/es/components/material-assignment/locales.js +2 -2
- package/es/components/material-assignment-admin/MaterialAssignmentAdmin.js +14 -17
- package/es/components/material-assignment-admin/MaterialAssignmentAdmin.styled.js +15 -9
- package/es/components/material-assignment-admin/MaterialAssignmentAdminContent.js +361 -281
- package/es/components/material-assignment-admin/MaterialAssignmentAdminContentTa.js +154 -125
- package/es/components/shared/MaterialAssignmentContainer.js +6 -8
- package/package.json +8 -8
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { slicedToArray as _slicedToArray } from '../../_virtual/_rollupPluginBabelHelpers.js';
|
|
1
2
|
import React from 'react';
|
|
2
3
|
import { useIntl, FormattedDate } from 'react-intl';
|
|
3
4
|
import { config, getOrgMaterialAssignmentGet, getOrgMaterialAssignmentGradeList, getOrgMaterialAssignmentGradeResultGet, getOrgMaterialAssignmentSubmissionGet } from '@elice/api-client';
|
|
@@ -7,67 +8,82 @@ import { enums } from '@elice/types';
|
|
|
7
8
|
import MaterialAssignmentContainer from '../shared/MaterialAssignmentContainer.js';
|
|
8
9
|
import MaterialAssignmentUploadModal from './MaterialAssignmentUploadModal.js';
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
11
|
+
var GRADE_LIST_COUNT = 20;
|
|
12
|
+
var MaterialAssignmentContent = function MaterialAssignmentContent(_ref) {
|
|
13
|
+
var materialAssignmentId = _ref.materialAssignmentId,
|
|
14
|
+
userId = _ref.userId;
|
|
15
|
+
var intl = useIntl();
|
|
16
|
+
var isReady = useMaterialConfigApiClientUpdate(config.init);
|
|
17
|
+
var _useMaterialFetchRaw = useMaterialFetchRaw(enums.LectureMaterialType.Assignment, React.useCallback(function (signal) {
|
|
18
|
+
return getOrgMaterialAssignmentGet({
|
|
19
|
+
materialAssignmentId: materialAssignmentId
|
|
20
|
+
}, {
|
|
21
|
+
signal: signal
|
|
22
|
+
});
|
|
23
|
+
}, [materialAssignmentId]), isReady),
|
|
24
|
+
materialAssignment = _useMaterialFetchRaw.materialAssignment,
|
|
25
|
+
materialLecturePage = _useMaterialFetchRaw.materialLecturePage,
|
|
26
|
+
assignmentGetStatus = _useMaterialFetchRaw.status,
|
|
27
|
+
doGetOrgMaterialAssignmentGet = _useMaterialFetchRaw.refetch;
|
|
28
|
+
var _React$useState = React.useState('idle'),
|
|
29
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
30
|
+
assignmentGradeListGetStatus = _React$useState2[0],
|
|
31
|
+
setAssignmentGradeListGetStatus = _React$useState2[1];
|
|
32
|
+
var _React$useState3 = React.useState('idle'),
|
|
33
|
+
_React$useState4 = _slicedToArray(_React$useState3, 2),
|
|
34
|
+
assignmentGradeResultGetStatus = _React$useState4[0],
|
|
35
|
+
setAssignmentGradeResultGetStatus = _React$useState4[1];
|
|
36
|
+
var _React$useState5 = React.useState('idle'),
|
|
37
|
+
_React$useState6 = _slicedToArray(_React$useState5, 2),
|
|
38
|
+
assignmentSubmissionGetStatus = _React$useState6[0],
|
|
39
|
+
setAssignmentSubmissionGetStatus = _React$useState6[1];
|
|
40
|
+
var _React$useState7 = React.useState(),
|
|
41
|
+
_React$useState8 = _slicedToArray(_React$useState7, 2),
|
|
42
|
+
materialAssignmentSubmission = _React$useState8[0],
|
|
43
|
+
setMaterialAssignmentSubmission = _React$useState8[1];
|
|
44
|
+
var _React$useState9 = React.useState(),
|
|
45
|
+
_React$useState10 = _slicedToArray(_React$useState9, 2),
|
|
46
|
+
materialAssignmentGradeResult = _React$useState10[0],
|
|
47
|
+
setMaterialAssignmentGradeResult = _React$useState10[1];
|
|
48
|
+
var _React$useState11 = React.useState(),
|
|
49
|
+
_React$useState12 = _slicedToArray(_React$useState11, 2),
|
|
50
|
+
materialAssignmentGradeList = _React$useState12[0],
|
|
51
|
+
setMaterialAssignmentGradeList = _React$useState12[1];
|
|
34
52
|
/** Is confirm modal visible? */
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
53
|
+
var _React$useState13 = React.useState(false),
|
|
54
|
+
_React$useState14 = _slicedToArray(_React$useState13, 2),
|
|
55
|
+
showAssignmentSubmitModal = _React$useState14[0],
|
|
56
|
+
setShowAssignmentSubmitModal = _React$useState14[1];
|
|
57
|
+
var isAssignmentSubmitted = Boolean(materialAssignment === null || materialAssignment === void 0 ? void 0 : materialAssignment.lastAssignmentSubmissionId);
|
|
58
|
+
var isAssignmentClosed = materialAssignment && Boolean(materialAssignment.closeDatetime < Date.now());
|
|
59
|
+
var isAssignmentResultVisible = Boolean(materialAssignment === null || materialAssignment === void 0 ? void 0 : materialAssignment.scoreFinalizedDatetime);
|
|
60
|
+
//
|
|
40
61
|
//
|
|
41
62
|
//
|
|
42
|
-
|
|
43
63
|
/**
|
|
44
64
|
* When Grade_result exist, a comment list is called.
|
|
45
65
|
*/
|
|
46
|
-
|
|
47
|
-
React.useEffect(() => {
|
|
66
|
+
React.useEffect(function () {
|
|
48
67
|
if (!isReady) {
|
|
49
68
|
return;
|
|
50
69
|
}
|
|
51
|
-
|
|
52
70
|
if (!isAssignmentResultVisible) {
|
|
53
71
|
return;
|
|
54
72
|
}
|
|
55
|
-
|
|
56
73
|
setAssignmentGradeListGetStatus('pending');
|
|
57
74
|
getOrgMaterialAssignmentGradeList({
|
|
58
75
|
offset: 0,
|
|
59
76
|
count: GRADE_LIST_COUNT,
|
|
60
|
-
materialAssignmentId,
|
|
77
|
+
materialAssignmentId: materialAssignmentId,
|
|
61
78
|
filterConditions: {
|
|
62
|
-
userId
|
|
79
|
+
userId: userId
|
|
63
80
|
}
|
|
64
|
-
}).then(({
|
|
65
|
-
materialAssignmentGrades
|
|
66
|
-
|
|
67
|
-
}) => {
|
|
81
|
+
}).then(function (_ref2) {
|
|
82
|
+
var materialAssignmentGrades = _ref2.materialAssignmentGrades;
|
|
83
|
+
_ref2.materialAssignmentGradeCount;
|
|
68
84
|
setAssignmentGradeListGetStatus('resolved');
|
|
69
85
|
setMaterialAssignmentGradeList(materialAssignmentGrades);
|
|
70
|
-
}).catch(error
|
|
86
|
+
}).catch(function (error) {
|
|
71
87
|
console.error(error);
|
|
72
88
|
setAssignmentGradeListGetStatus('rejected');
|
|
73
89
|
});
|
|
@@ -75,26 +91,22 @@ const MaterialAssignmentContent = ({
|
|
|
75
91
|
/**
|
|
76
92
|
* When Grade_result exist, a score is called.
|
|
77
93
|
*/
|
|
78
|
-
|
|
79
|
-
React.useEffect(() => {
|
|
94
|
+
React.useEffect(function () {
|
|
80
95
|
if (!isReady) {
|
|
81
96
|
return;
|
|
82
97
|
}
|
|
83
|
-
|
|
84
98
|
if (!isAssignmentResultVisible) {
|
|
85
99
|
return;
|
|
86
100
|
}
|
|
87
|
-
|
|
88
101
|
setAssignmentGradeResultGetStatus('pending');
|
|
89
102
|
getOrgMaterialAssignmentGradeResultGet({
|
|
90
|
-
materialAssignmentId,
|
|
91
|
-
userId
|
|
92
|
-
}).then(({
|
|
93
|
-
materialAssignmentGradeResult
|
|
94
|
-
}) => {
|
|
103
|
+
materialAssignmentId: materialAssignmentId,
|
|
104
|
+
userId: userId
|
|
105
|
+
}).then(function (_ref3) {
|
|
106
|
+
var materialAssignmentGradeResult = _ref3.materialAssignmentGradeResult;
|
|
95
107
|
setAssignmentGradeResultGetStatus('resolved');
|
|
96
108
|
setMaterialAssignmentGradeResult(materialAssignmentGradeResult);
|
|
97
|
-
}).catch(error
|
|
109
|
+
}).catch(function (error) {
|
|
98
110
|
console.error(error);
|
|
99
111
|
setAssignmentGradeResultGetStatus('rejected');
|
|
100
112
|
});
|
|
@@ -102,39 +114,32 @@ const MaterialAssignmentContent = ({
|
|
|
102
114
|
/**
|
|
103
115
|
* Get information on the assignment submitted
|
|
104
116
|
*/
|
|
105
|
-
|
|
106
|
-
React.useEffect(() => {
|
|
117
|
+
React.useEffect(function () {
|
|
107
118
|
var _a;
|
|
108
|
-
|
|
109
119
|
if (!isReady) {
|
|
110
120
|
return;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
|
|
121
|
+
}
|
|
122
|
+
// Get assignment response according to `lastAssignmentSubmissionId` of material.
|
|
114
123
|
if (!isAssignmentSubmitted) {
|
|
115
124
|
setMaterialAssignmentSubmission(undefined);
|
|
116
125
|
return;
|
|
117
126
|
}
|
|
118
|
-
|
|
119
127
|
setAssignmentSubmissionGetStatus('pending');
|
|
120
128
|
getOrgMaterialAssignmentSubmissionGet({
|
|
121
129
|
materialAssignmentSubmissionId: (_a = materialAssignment === null || materialAssignment === void 0 ? void 0 : materialAssignment.lastAssignmentSubmissionId) !== null && _a !== void 0 ? _a : 0
|
|
122
|
-
}).then(({
|
|
123
|
-
materialAssignmentSubmission
|
|
124
|
-
}) => {
|
|
130
|
+
}).then(function (_ref4) {
|
|
131
|
+
var materialAssignmentSubmission = _ref4.materialAssignmentSubmission;
|
|
125
132
|
setAssignmentSubmissionGetStatus('resolved');
|
|
126
133
|
setMaterialAssignmentSubmission(materialAssignmentSubmission);
|
|
127
|
-
}).catch(error
|
|
134
|
+
}).catch(function (error) {
|
|
128
135
|
console.error(error);
|
|
129
136
|
setAssignmentSubmissionGetStatus('rejected');
|
|
130
137
|
setMaterialAssignmentSubmission(undefined);
|
|
131
138
|
});
|
|
132
139
|
}, [isAssignmentSubmitted, isReady, materialAssignment]);
|
|
133
|
-
|
|
134
140
|
if (assignmentGetStatus === 'pending' || assignmentGradeListGetStatus === 'pending' || assignmentGradeResultGetStatus === 'pending' || assignmentSubmissionGetStatus === 'pending') {
|
|
135
141
|
return React.createElement(Spinner, null);
|
|
136
142
|
}
|
|
137
|
-
|
|
138
143
|
if (!materialAssignment || assignmentGetStatus === 'rejected') {
|
|
139
144
|
return React.createElement(Text, {
|
|
140
145
|
role: "white"
|
|
@@ -145,14 +150,10 @@ const MaterialAssignmentContent = ({
|
|
|
145
150
|
/**
|
|
146
151
|
*
|
|
147
152
|
*/
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
const renderAssignmentInfo = () => {
|
|
153
|
+
var renderAssignmentInfo = function renderAssignmentInfo() {
|
|
151
154
|
var _a;
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
const renderAssignmentStatus = () => {
|
|
155
|
+
var assignmentFilename = decodeURIComponent((materialAssignmentSubmission === null || materialAssignmentSubmission === void 0 ? void 0 : materialAssignmentSubmission.assignmentFileUrl) && new URL(materialAssignmentSubmission.assignmentFileUrl).pathname.split('/').pop() || '');
|
|
156
|
+
var renderAssignmentStatus = function renderAssignmentStatus() {
|
|
156
157
|
if (!isAssignmentSubmitted && isAssignmentClosed) {
|
|
157
158
|
return React.createElement(Text, {
|
|
158
159
|
bold: true,
|
|
@@ -162,7 +163,6 @@ const MaterialAssignmentContent = ({
|
|
|
162
163
|
id: 'materialAssignment.status.deadlineExpired'
|
|
163
164
|
}));
|
|
164
165
|
}
|
|
165
|
-
|
|
166
166
|
if (isAssignmentResultVisible) {
|
|
167
167
|
return React.createElement(Text, {
|
|
168
168
|
bold: true,
|
|
@@ -172,7 +172,6 @@ const MaterialAssignmentContent = ({
|
|
|
172
172
|
id: 'materialAssignment.status.graded'
|
|
173
173
|
}));
|
|
174
174
|
}
|
|
175
|
-
|
|
176
175
|
if (isAssignmentSubmitted) {
|
|
177
176
|
return React.createElement(Text, {
|
|
178
177
|
bold: true,
|
|
@@ -182,7 +181,6 @@ const MaterialAssignmentContent = ({
|
|
|
182
181
|
id: 'materialAssignment.status.submitted'
|
|
183
182
|
}));
|
|
184
183
|
}
|
|
185
|
-
|
|
186
184
|
return React.createElement(Text, {
|
|
187
185
|
bold: true,
|
|
188
186
|
role: "warning",
|
|
@@ -191,10 +189,8 @@ const MaterialAssignmentContent = ({
|
|
|
191
189
|
id: 'materialAssignment.status.noSubmitted'
|
|
192
190
|
}));
|
|
193
191
|
};
|
|
194
|
-
|
|
195
|
-
const renderAssignmentScore = () => {
|
|
192
|
+
var renderAssignmentScore = function renderAssignmentScore() {
|
|
196
193
|
var _a;
|
|
197
|
-
|
|
198
194
|
return React.createElement(React.Fragment, null, React.createElement(Text, {
|
|
199
195
|
bold: true,
|
|
200
196
|
role: "white",
|
|
@@ -207,8 +203,7 @@ const MaterialAssignmentContent = ({
|
|
|
207
203
|
width: 0.25
|
|
208
204
|
}));
|
|
209
205
|
};
|
|
210
|
-
|
|
211
|
-
const renderAssignmentAttachment = () => {
|
|
206
|
+
var renderAssignmentAttachment = function renderAssignmentAttachment() {
|
|
212
207
|
if (materialAssignmentSubmission === null || materialAssignmentSubmission === void 0 ? void 0 : materialAssignmentSubmission.assignmentFileUrl) {
|
|
213
208
|
return React.createElement("a", {
|
|
214
209
|
href: materialAssignmentSubmission.assignmentFileUrl,
|
|
@@ -222,7 +217,6 @@ const MaterialAssignmentContent = ({
|
|
|
222
217
|
size: "small"
|
|
223
218
|
}, assignmentFilename));
|
|
224
219
|
}
|
|
225
|
-
|
|
226
220
|
if (materialAssignmentSubmission === null || materialAssignmentSubmission === void 0 ? void 0 : materialAssignmentSubmission.assignmentUrl) {
|
|
227
221
|
return React.createElement("a", {
|
|
228
222
|
href: materialAssignmentSubmission.assignmentUrl,
|
|
@@ -235,10 +229,8 @@ const MaterialAssignmentContent = ({
|
|
|
235
229
|
size: "small"
|
|
236
230
|
}, materialAssignmentSubmission.assignmentUrl));
|
|
237
231
|
}
|
|
238
|
-
|
|
239
232
|
return '--';
|
|
240
233
|
};
|
|
241
|
-
|
|
242
234
|
return React.createElement(InfoTable, {
|
|
243
235
|
dark: true
|
|
244
236
|
}, React.createElement("tbody", null, React.createElement("tr", null, React.createElement("td", {
|
|
@@ -269,7 +261,9 @@ const MaterialAssignmentContent = ({
|
|
|
269
261
|
size: "tiny",
|
|
270
262
|
role: "lightpurple",
|
|
271
263
|
disabled: [isAssignmentResultVisible, !materialAssignment.isResubmitEnabled && isAssignmentSubmitted, isAssignmentClosed].some(Boolean),
|
|
272
|
-
onClick: ()
|
|
264
|
+
onClick: function onClick() {
|
|
265
|
+
return setShowAssignmentSubmitModal(true);
|
|
266
|
+
}
|
|
273
267
|
}, intl.formatMessage({
|
|
274
268
|
id: 'materialAssignment.button.upload'
|
|
275
269
|
}))))), React.createElement("tr", null, React.createElement("td", null, intl.formatMessage({
|
|
@@ -286,12 +280,9 @@ const MaterialAssignmentContent = ({
|
|
|
286
280
|
/**
|
|
287
281
|
*
|
|
288
282
|
*/
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
const renderAssignmentFeedback = () => {
|
|
283
|
+
var renderAssignmentFeedback = function renderAssignmentFeedback() {
|
|
292
284
|
var _a;
|
|
293
|
-
|
|
294
|
-
const tableColumns = [{
|
|
285
|
+
var tableColumns = [{
|
|
295
286
|
Header: intl.formatMessage({
|
|
296
287
|
id: 'materialAssignment.table.header.index'
|
|
297
288
|
}),
|
|
@@ -303,14 +294,18 @@ const MaterialAssignmentContent = ({
|
|
|
303
294
|
}),
|
|
304
295
|
accessor: 'feedback'
|
|
305
296
|
}];
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
297
|
+
var tableData = (_a = materialAssignmentGradeList === null || materialAssignmentGradeList === void 0 ? void 0 : materialAssignmentGradeList.filter(function (grade) {
|
|
298
|
+
return grade.comment.length;
|
|
299
|
+
}).map(function (grade, index) {
|
|
300
|
+
return {
|
|
301
|
+
index: index + 1,
|
|
302
|
+
feedback: React.createElement(Text, {
|
|
303
|
+
preWrap: true,
|
|
304
|
+
size: "small",
|
|
305
|
+
role: "navy1"
|
|
306
|
+
}, grade.comment)
|
|
307
|
+
};
|
|
308
|
+
})) !== null && _a !== void 0 ? _a : [];
|
|
314
309
|
return React.createElement(TableNext, {
|
|
315
310
|
dark: true,
|
|
316
311
|
columns: tableColumns,
|
|
@@ -323,20 +318,18 @@ const MaterialAssignmentContent = ({
|
|
|
323
318
|
/**
|
|
324
319
|
*
|
|
325
320
|
*/
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
const renderAssignmentUploadModal = () => {
|
|
321
|
+
var renderAssignmentUploadModal = function renderAssignmentUploadModal() {
|
|
329
322
|
if (!showAssignmentSubmitModal) {
|
|
330
323
|
return null;
|
|
331
324
|
}
|
|
332
|
-
|
|
333
325
|
return React.createElement(MaterialAssignmentUploadModal, {
|
|
334
326
|
materialAssignment: materialAssignment,
|
|
335
|
-
onClose: ()
|
|
327
|
+
onClose: function onClose() {
|
|
328
|
+
return setShowAssignmentSubmitModal(false);
|
|
329
|
+
},
|
|
336
330
|
onSubmitCallback: doGetOrgMaterialAssignmentGet
|
|
337
331
|
});
|
|
338
332
|
};
|
|
339
|
-
|
|
340
333
|
return React.createElement(MaterialAssignmentContainer, {
|
|
341
334
|
title: materialAssignment.title
|
|
342
335
|
}, React.createElement(Text, {
|
|
@@ -1,82 +1,99 @@
|
|
|
1
|
+
import { slicedToArray as _slicedToArray, asyncToGenerator as _asyncToGenerator, regeneratorRuntime as _regeneratorRuntime } from '../../_virtual/_rollupPluginBabelHelpers.js';
|
|
1
2
|
import React from 'react';
|
|
2
3
|
import { useForm, Controller } from 'react-hook-form';
|
|
3
4
|
import { useIntl } from 'react-intl';
|
|
4
5
|
import { postOrgMaterialAssignmentSubmissionAdd } from '@elice/api-client';
|
|
5
|
-
import { Files,
|
|
6
|
+
import { Files, Modal, Alert, Vspace, Radio, RadioButton, Input, Checkbox, Text, Notification } from '@elice/blocks';
|
|
6
7
|
import { base } from '@elice/design-tokens';
|
|
7
8
|
import { validateUrl } from '@elice/utils';
|
|
8
9
|
import styled from 'styled-components';
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
var StyledAssignmentContentFiles = styled(Files).withConfig({
|
|
11
12
|
componentId: "sc-9bizrf-0"
|
|
12
13
|
})(["width:100%;.eb-files__choose-button{border-color:", ";background-color:", ";}"], base.color.primary5, base.color.primary5);
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const intl = useIntl();
|
|
20
|
-
const abortCtrl = React.useRef(new AbortController());
|
|
14
|
+
var MaterialAssignmentUploadModal = function MaterialAssignmentUploadModal(_ref) {
|
|
15
|
+
var materialAssignment = _ref.materialAssignment,
|
|
16
|
+
onClose = _ref.onClose,
|
|
17
|
+
onSubmitCallback = _ref.onSubmitCallback;
|
|
18
|
+
var intl = useIntl();
|
|
19
|
+
var abortCtrl = React.useRef(new AbortController());
|
|
21
20
|
/** Select submission method */
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
var _React$useState = React.useState('attachment'),
|
|
22
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
23
|
+
assignmentMode = _React$useState2[0],
|
|
24
|
+
setAssignmentMode = _React$useState2[1];
|
|
24
25
|
/** Check "Once you submit it, you cannot submit it again." */
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
var _React$useState3 = React.useState(false),
|
|
27
|
+
_React$useState4 = _slicedToArray(_React$useState3, 2),
|
|
28
|
+
isAgreedSubmit = _React$useState4[0],
|
|
29
|
+
setAgreedSubmit = _React$useState4[1];
|
|
27
30
|
/** Check if the submission time is past */
|
|
28
|
-
|
|
29
|
-
const isAssignmentClosed = Boolean(materialAssignment.closeDatetime < Date.now());
|
|
31
|
+
var isAssignmentClosed = Boolean(materialAssignment.closeDatetime < Date.now());
|
|
30
32
|
/** Check if it is possible to resubmit */
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
mode: 'onChange'
|
|
40
|
-
});
|
|
33
|
+
var isAssignmentResubmitEnabled = Boolean(materialAssignment.isResubmitEnabled);
|
|
34
|
+
var _useForm = useForm({
|
|
35
|
+
mode: 'onChange'
|
|
36
|
+
}),
|
|
37
|
+
control = _useForm.control,
|
|
38
|
+
formState = _useForm.formState,
|
|
39
|
+
handleSubmit = _useForm.handleSubmit,
|
|
40
|
+
reset = _useForm.reset;
|
|
41
41
|
/**
|
|
42
42
|
* Submit assignment.
|
|
43
43
|
*/
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
44
|
+
var submitAssignment = handleSubmit( /*#__PURE__*/function () {
|
|
45
|
+
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(data) {
|
|
46
|
+
var _a;
|
|
47
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
48
|
+
while (1) switch (_context.prev = _context.next) {
|
|
49
|
+
case 0:
|
|
50
|
+
_context.prev = 0;
|
|
51
|
+
_context.next = 3;
|
|
52
|
+
return postOrgMaterialAssignmentSubmissionAdd(Object.assign(Object.assign({}, data), {
|
|
53
|
+
materialAssignmentId: (_a = materialAssignment === null || materialAssignment === void 0 ? void 0 : materialAssignment.id) !== null && _a !== void 0 ? _a : 0
|
|
54
|
+
}), {
|
|
55
|
+
signal: abortCtrl.current.signal
|
|
56
|
+
});
|
|
57
|
+
case 3:
|
|
58
|
+
onClose();
|
|
59
|
+
Notification.success(intl.formatMessage({
|
|
60
|
+
id: 'materialAssignment.notification.submit.success'
|
|
61
|
+
}));
|
|
62
|
+
if (typeof onSubmitCallback === 'function') {
|
|
63
|
+
onSubmitCallback();
|
|
64
|
+
}
|
|
65
|
+
_context.next = 13;
|
|
66
|
+
break;
|
|
67
|
+
case 8:
|
|
68
|
+
_context.prev = 8;
|
|
69
|
+
_context.t0 = _context["catch"](0);
|
|
70
|
+
if (!(_context.t0.name === 'AbortError')) {
|
|
71
|
+
_context.next = 12;
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
return _context.abrupt("return", Notification.error(intl.formatMessage({
|
|
75
|
+
id: 'materialAssignment.notification.submit.cancel'
|
|
76
|
+
})));
|
|
77
|
+
case 12:
|
|
78
|
+
Notification.error(intl.formatMessage({
|
|
79
|
+
id: 'materialAssignment.notification.submit.failure'
|
|
80
|
+
}));
|
|
81
|
+
case 13:
|
|
82
|
+
case "end":
|
|
83
|
+
return _context.stop();
|
|
84
|
+
}
|
|
85
|
+
}, _callee, null, [[0, 8]]);
|
|
86
|
+
}));
|
|
87
|
+
return function (_x) {
|
|
88
|
+
return _ref2.apply(this, arguments);
|
|
89
|
+
};
|
|
90
|
+
}());
|
|
74
91
|
//
|
|
75
92
|
//
|
|
76
|
-
|
|
77
|
-
React.useEffect(()
|
|
78
|
-
|
|
79
|
-
return ()
|
|
93
|
+
//
|
|
94
|
+
React.useEffect(function () {
|
|
95
|
+
var _abortCtrl = abortCtrl.current;
|
|
96
|
+
return function () {
|
|
80
97
|
_abortCtrl.abort();
|
|
81
98
|
};
|
|
82
99
|
}, []);
|
|
@@ -109,7 +126,7 @@ const MaterialAssignmentUploadModal = ({
|
|
|
109
126
|
purpleWhite: true,
|
|
110
127
|
borderRound: true,
|
|
111
128
|
value: assignmentMode,
|
|
112
|
-
onChange: value
|
|
129
|
+
onChange: function onChange(value) {
|
|
113
130
|
reset();
|
|
114
131
|
setAgreedSubmit(false);
|
|
115
132
|
setAssignmentMode(value);
|
|
@@ -130,46 +147,47 @@ const MaterialAssignmentUploadModal = ({
|
|
|
130
147
|
rules: {
|
|
131
148
|
required: true
|
|
132
149
|
},
|
|
133
|
-
render: ({
|
|
134
|
-
field
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
150
|
+
render: function render(_ref3) {
|
|
151
|
+
var field = _ref3.field;
|
|
152
|
+
return React.createElement(StyledAssignmentContentFiles, Object.assign({}, field, {
|
|
153
|
+
files: field.value ? [field.value] : undefined,
|
|
154
|
+
accept: "*",
|
|
155
|
+
maxCount: 1,
|
|
156
|
+
maxSize: 300,
|
|
157
|
+
disabled: isAssignmentClosed,
|
|
158
|
+
dropMessage: intl.formatMessage({
|
|
159
|
+
id: 'materialAssignment.attachment.dropMessage'
|
|
160
|
+
}),
|
|
161
|
+
buttonMessage: intl.formatMessage({
|
|
162
|
+
id: 'materialAssignment.attachment.button'
|
|
163
|
+
}),
|
|
164
|
+
maxSizeMessage: intl.formatMessage({
|
|
165
|
+
id: 'materialAssignment.attachment.maxSizeMessage'
|
|
166
|
+
}),
|
|
167
|
+
onChange: function onChange(newFiles) {
|
|
168
|
+
if (Array.isArray(newFiles) && newFiles[0] instanceof File) {
|
|
169
|
+
field.onChange(newFiles[0]);
|
|
170
|
+
} else {
|
|
171
|
+
field.onChange(undefined);
|
|
172
|
+
}
|
|
155
173
|
}
|
|
156
|
-
}
|
|
157
|
-
}
|
|
174
|
+
}));
|
|
175
|
+
}
|
|
158
176
|
}) : React.createElement(Controller, {
|
|
159
177
|
control: control,
|
|
160
178
|
name: "assignmentUrl",
|
|
161
179
|
rules: {
|
|
162
180
|
required: true,
|
|
163
|
-
validate:
|
|
164
|
-
|
|
165
|
-
|
|
181
|
+
validate: function validate(url) {
|
|
182
|
+
return validateUrl(url !== null && url !== void 0 ? url : '') ? true : intl.formatMessage({
|
|
183
|
+
id: 'materialAssignment.input.invalid'
|
|
184
|
+
});
|
|
185
|
+
}
|
|
166
186
|
},
|
|
167
|
-
render: ({
|
|
168
|
-
field,
|
|
169
|
-
|
|
170
|
-
}) => {
|
|
187
|
+
render: function render(_ref4) {
|
|
188
|
+
var field = _ref4.field,
|
|
189
|
+
fieldState = _ref4.fieldState;
|
|
171
190
|
var _a;
|
|
172
|
-
|
|
173
191
|
return React.createElement(Input, Object.assign({}, field, {
|
|
174
192
|
width: "full",
|
|
175
193
|
size: "small",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
var en = {
|
|
2
2
|
'materialAssignment.button.upload': 'Upload assignment',
|
|
3
3
|
'materialAssignment.error': 'Failed to fetch assignment',
|
|
4
4
|
'materialAssignment.status.noSubmitted': 'No submitted',
|
|
@@ -36,7 +36,7 @@ const en = {
|
|
|
36
36
|
'materialAssignment.attachment.checkbox.onceSubmit': 'I have checked all the circumstances and agree to submit the assignment.',
|
|
37
37
|
'materialAssignment.input.invalid': 'The URL is not of a valid format.'
|
|
38
38
|
};
|
|
39
|
-
|
|
39
|
+
var ko = {
|
|
40
40
|
'materialAssignment.button.upload': '과제 업로드',
|
|
41
41
|
'materialAssignment.error': '과제를 불러오는데 실패했습니다.\n잠시 후 다시 시도해주세요.',
|
|
42
42
|
'materialAssignment.status.noSubmitted': '미제출',
|