@elice/material-runbox 1.231107.0-gstta.1 → 1.231128.0

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.
@@ -46,7 +46,7 @@ var MaterialRunboxFooter = function MaterialRunboxFooter(_ref2) {
46
46
  orientation: "vertical",
47
47
  flexItem: true
48
48
  })
49
- }, React__default["default"].createElement(runboxClient.EliceRunboxNetworkStat, null), React__default["default"].createElement(runboxClient.EliceRunboxRunningStatus, null));
49
+ }, React__default["default"].createElement(runboxClient.EliceRunboxRemainingTimer, null), React__default["default"].createElement(runboxClient.EliceRunboxNetworkStat, null), React__default["default"].createElement(runboxClient.EliceRunboxRunningStatus, null));
50
50
  };
51
51
  //
52
52
  //
@@ -12,6 +12,7 @@ var styled = require('@emotion/styled');
12
12
  var iconsMaterial = require('@mui/icons-material');
13
13
  var lab = require('@mui/lab');
14
14
  var material = require('@mui/material');
15
+ var reactQuery = require('@tanstack/react-query');
15
16
  var notistack = require('notistack');
16
17
  var MaterialRunboxApiContext = require('../contexts/MaterialRunboxApiContext.js');
17
18
  var MaterialRunboxCommandContext = require('../contexts/MaterialRunboxCommandContext.js');
@@ -68,6 +69,7 @@ var StyledTerminal = styled__default["default"].textarea(_templateObject3 || (_t
68
69
  var MaterialRunboxActionGrade = function MaterialRunboxActionGrade(_ref5) {
69
70
  var runtime = _ref5.runtime,
70
71
  courseId = _ref5.courseId;
72
+ var _a;
71
73
  var _useSnackbar = notistack.useSnackbar(),
72
74
  enqueueSnackbar = _useSnackbar.enqueueSnackbar;
73
75
  var intl = reactIntl.useIntl();
@@ -78,6 +80,24 @@ var MaterialRunboxActionGrade = function MaterialRunboxActionGrade(_ref5) {
78
80
  setCommandIdToPing = _useMaterialRunboxCom.setCommandIdToPing;
79
81
  var _useEliceRunboxRunnin = runboxClient.useEliceRunboxRunning(),
80
82
  status = _useEliceRunboxRunnin.status;
83
+ var leaderboardSubmitInfoQuery = reactQuery.useQuery({
84
+ queryKey: ['eliceMaterialRunboxRunboxApi.runboxRunboxIdSubmitInfoGet', {
85
+ courseId: courseId,
86
+ runtime: runtime
87
+ }],
88
+ queryFn: function queryFn(_ref6) {
89
+ var signal = _ref6.signal;
90
+ return materialRunboxApi.runbox.runboxRunboxIdSubmitInfoGet({
91
+ eliceCourseId: courseId,
92
+ runboxId: runtime === null || runtime === void 0 ? void 0 : runtime.runboxId
93
+ }, {
94
+ signal: signal
95
+ });
96
+ },
97
+ enabled: Boolean(runtime === null || runtime === void 0 ? void 0 : runtime.runboxId),
98
+ retry: false
99
+ });
100
+ var isSubmitCountRemained = ((_a = leaderboardSubmitInfoQuery.data) === null || _a === void 0 ? void 0 : _a.remainSubmitCount) !== 0;
81
101
  var _React$useState = React__default["default"].useState(false),
82
102
  _React$useState2 = _rollupPluginBabelHelpers.slicedToArray(_React$useState, 2),
83
103
  isActionLoading = _React$useState2[0],
@@ -88,8 +108,12 @@ var MaterialRunboxActionGrade = function MaterialRunboxActionGrade(_ref5) {
88
108
  setGradeResultDialogOpen = _React$useState4[1];
89
109
  var _React$useState5 = React__default["default"].useState(false),
90
110
  _React$useState6 = _rollupPluginBabelHelpers.slicedToArray(_React$useState5, 2),
91
- hasUnreadResult = _React$useState6[0],
92
- setHasUnreadResult = _React$useState6[1];
111
+ isSubmitCountInfoDialogOpen = _React$useState6[0],
112
+ setSubmitCountInfoDialogOpen = _React$useState6[1];
113
+ var _React$useState7 = React__default["default"].useState(false),
114
+ _React$useState8 = _rollupPluginBabelHelpers.slicedToArray(_React$useState7, 2),
115
+ hasUnreadResult = _React$useState8[0],
116
+ setHasUnreadResult = _React$useState8[1];
93
117
  var isRunboxRunning = status === 'running';
94
118
  var isGradeDoneWithOutput = !isLastCommandRunning && (lastCommand === null || lastCommand === void 0 ? void 0 : lastCommand.commandType) === openapiClientMaterialRunbox.CommandType.Grade && Boolean(lastCommand === null || lastCommand === void 0 ? void 0 : lastCommand.output);
95
119
  /**
@@ -104,19 +128,38 @@ var MaterialRunboxActionGrade = function MaterialRunboxActionGrade(_ref5) {
104
128
  var handleGradeResultDialogClose = function handleGradeResultDialogClose() {
105
129
  setGradeResultDialogOpen(false);
106
130
  };
131
+ /**
132
+ *
133
+ */
134
+ var handleSubmitCountInfoDialogClose = function handleSubmitCountInfoDialogClose() {
135
+ setSubmitCountInfoDialogOpen(false);
136
+ };
107
137
  /**
108
138
  *
109
139
  */
110
140
  var handleAction = /*#__PURE__*/function () {
111
- var _ref6 = _rollupPluginBabelHelpers.asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers.regeneratorRuntime().mark(function _callee() {
112
- var runtimeId, _yield$materialRunbox, commandId;
141
+ var _ref7 = _rollupPluginBabelHelpers.asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers.regeneratorRuntime().mark(function _callee() {
142
+ var _yield$leaderboardSub, currentLeaderboardSubmitInfo, isCurrentSubmitCountEmpty, runtimeId, _yield$materialRunbox, commandId;
113
143
  return _rollupPluginBabelHelpers.regeneratorRuntime().wrap(function _callee$(_context) {
114
144
  while (1) switch (_context.prev = _context.next) {
115
145
  case 0:
116
146
  setActionLoading(true);
117
147
  _context.prev = 1;
148
+ _context.next = 4;
149
+ return leaderboardSubmitInfoQuery.refetch();
150
+ case 4:
151
+ _yield$leaderboardSub = _context.sent;
152
+ currentLeaderboardSubmitInfo = _yield$leaderboardSub.data;
153
+ isCurrentSubmitCountEmpty = (currentLeaderboardSubmitInfo === null || currentLeaderboardSubmitInfo === void 0 ? void 0 : currentLeaderboardSubmitInfo.remainSubmitCount) === 0;
154
+ if (!isCurrentSubmitCountEmpty) {
155
+ _context.next = 10;
156
+ break;
157
+ }
158
+ setSubmitCountInfoDialogOpen(true);
159
+ return _context.abrupt("return");
160
+ case 10:
118
161
  runtimeId = runtime === null || runtime === void 0 ? void 0 : runtime.id;
119
- _context.next = 5;
162
+ _context.next = 13;
120
163
  return materialRunboxApi.runtime.runtimeRuntimeIdCommandPost({
121
164
  runtimeId: runtimeId,
122
165
  eliceCourseId: courseId,
@@ -124,32 +167,32 @@ var MaterialRunboxActionGrade = function MaterialRunboxActionGrade(_ref5) {
124
167
  commandType: openapiClientMaterialRunbox.CommandType.Grade
125
168
  }
126
169
  });
127
- case 5:
170
+ case 13:
128
171
  _yield$materialRunbox = _context.sent;
129
172
  commandId = _yield$materialRunbox.id;
130
173
  setCommandIdToPing(commandId);
131
- _context.next = 13;
174
+ _context.next = 21;
132
175
  break;
133
- case 10:
134
- _context.prev = 10;
176
+ case 18:
177
+ _context.prev = 18;
135
178
  _context.t0 = _context["catch"](1);
136
179
  enqueueSnackbar(intl.formatMessage({
137
180
  id: 'runbox.action.grade.noti.error'
138
181
  }), {
139
182
  variant: 'error'
140
183
  });
141
- case 13:
142
- _context.prev = 13;
184
+ case 21:
185
+ _context.prev = 21;
143
186
  setActionLoading(false);
144
- return _context.finish(13);
145
- case 16:
187
+ return _context.finish(21);
188
+ case 24:
146
189
  case "end":
147
190
  return _context.stop();
148
191
  }
149
- }, _callee, null, [[1, 10, 13, 16]]);
192
+ }, _callee, null, [[1, 18, 21, 24]]);
150
193
  }));
151
194
  return function handleAction() {
152
- return _ref6.apply(this, arguments);
195
+ return _ref7.apply(this, arguments);
153
196
  };
154
197
  }();
155
198
  //
@@ -176,17 +219,31 @@ var MaterialRunboxActionGrade = function MaterialRunboxActionGrade(_ref5) {
176
219
  var renderActionButton = function renderActionButton() {
177
220
  var isGradeType = (lastCommand === null || lastCommand === void 0 ? void 0 : lastCommand.commandType) === openapiClientMaterialRunbox.CommandType.Grade;
178
221
  var isGrading = isActionLoading || isLastCommandRunning && isGradeType;
222
+ /**
223
+ *
224
+ */
225
+ var getActionTooltipMessage = function getActionTooltipMessage() {
226
+ if (!isSubmitCountRemained) {
227
+ return intl.formatMessage({
228
+ id: 'runbox.action.submitCountInfo.tooltip.disabled'
229
+ });
230
+ }
231
+ if (isGrading) {
232
+ return intl.formatMessage({
233
+ id: 'runbox.action.grade.tooltip.onProgress'
234
+ });
235
+ }
236
+ return '';
237
+ };
179
238
  return React__default["default"].createElement(material.Tooltip, {
180
- title: isGrading ? intl.formatMessage({
181
- id: 'runbox.action.grade.tooltip.onProgress'
182
- }) : '',
239
+ title: getActionTooltipMessage(),
183
240
  placement: "bottom-end"
184
241
  }, React__default["default"].createElement(material.ButtonGroup, {
185
242
  variant: "contained"
186
243
  }, React__default["default"].createElement(StyledMainActionButton, {
187
244
  variant: "contained",
188
245
  loading: isGrading,
189
- disabled: !isRunboxRunning || isLastCommandRunning,
246
+ disabled: !isRunboxRunning || isLastCommandRunning || !isSubmitCountRemained,
190
247
  size: "small",
191
248
  onClick: handleAction
192
249
  }, React__default["default"].createElement(reactIntl.FormattedMessage, {
@@ -247,10 +304,30 @@ var MaterialRunboxActionGrade = function MaterialRunboxActionGrade(_ref5) {
247
304
  id: "runbox.common.close"
248
305
  }))));
249
306
  };
307
+ /**
308
+ *
309
+ */
310
+ var renderActionSubmitCountInfoDialog = function renderActionSubmitCountInfoDialog() {
311
+ return React__default["default"].createElement(material.Dialog, {
312
+ fullWidth: true,
313
+ maxWidth: "xs",
314
+ open: isSubmitCountInfoDialogOpen,
315
+ onClick: handleSubmitCountInfoDialogClose
316
+ }, React__default["default"].createElement(material.DialogTitle, null, React__default["default"].createElement(reactIntl.FormattedMessage, {
317
+ id: "runbtox.action.submitCountInfo.dialog.title"
318
+ })), React__default["default"].createElement(material.DialogContent, null, React__default["default"].createElement(material.Typography, null, React__default["default"].createElement(reactIntl.FormattedMessage, {
319
+ id: "runbox.action.submitCountInfo.dialog.description"
320
+ }))), React__default["default"].createElement(material.DialogActions, null, React__default["default"].createElement(material.Button, {
321
+ color: "inherit",
322
+ onClick: handleSubmitCountInfoDialogClose
323
+ }, React__default["default"].createElement(reactIntl.FormattedMessage, {
324
+ id: "runbox.common.close"
325
+ }))));
326
+ };
250
327
  //
251
328
  //
252
329
  //
253
- return React__default["default"].createElement(React__default["default"].Fragment, null, renderActionButton(), renderActionGradeResultDialog());
330
+ return React__default["default"].createElement(React__default["default"].Fragment, null, renderActionButton(), renderActionGradeResultDialog(), renderActionSubmitCountInfoDialog());
254
331
  };
255
332
 
256
333
  exports["default"] = MaterialRunboxActionGrade;
@@ -2,6 +2,6 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var en = {"runbox.action.autoShutdown.title":"Always on","runbox.action.autoShutdown.tooltip.disabled":"This runtime automatically shuts down after {time}, which is set as the per-session usage time.","runbox.action.autoShutdown.tooltip.enabled":"If set to always on, the runtime will not shut down even if you leave the learning material. However, it will automatically shut down after {time}, which is set as the session-specific usage time of the runtime.","runbox.action.grade.dialog.description.error":"An error occurred while grading the code.","runbox.action.grade.dialog.description.success":"Grading completed successfully.","runbox.action.grade.dialog.title":"Grading result","runbox.action.grade.noti.error":"An error occurred while grading the code.","runbox.action.grade.title":"Submit","runbox.action.grade.tooltip.onProgress":"Grading is in progress. Please wait for a moment. Depending on the material, grading may take up to 3 minutes.","runbox.action.reset.dialog.actions.confirm":"Reset","runbox.action.reset.dialog.description":"Are you sure you want to reset the runbox code? Your codes will be overwritten to default code of material.\nAfter reset, the runbox session will be refreshed.","runbox.action.reset.noti.error":"An error occurred while initializing the runbox code.","runbox.action.reset.title":"Reset code","runbox.action.restart.dialog.actions.confirm":"Restart","runbox.action.restart.dialog.description":"Are you sure you want to restart the runbox?","runbox.action.restart.title":"Restart runbox","runbox.action.share.title":"Share runbox URL","runbox.action.share.tooltip.copied":"Runbox URL copied to clipboard.","runbox.common.close":"Close","runbox.common.retry":"Retry","runbox.common.support":"Support","runbox.context.command.ping.error":"An error occurred while processing task.","runbox.runtime.message.startError":"There was an error starting the runbox.","runbox.runtime.overlay.assigned.description":"(3 of 3)\nRunbox is running.\nPlease wait!","runbox.runtime.overlay.assigned.description_timeout":"(3 of 3)\nRunning the runbox is taking longer than we expected.\nPlease wait a little longer without refreshing!","runbox.runtime.overlay.queued.description":"(2 of 3)\nCurrently queued {waiters} times...","runbox.runtime.overlay.queued.description_zero":"(2 of 3)\nRunbox will run soon","runbox.runtime.overlay.terminated.description.default":"The runtime terminated due to an unexpected problem.\nClick the button below to reconnect to the runbox.","runbox.runtime.overlay.terminated.description.general":"The runtime connected to the runbox has ended.\nTo reconnect to the runbox, click the button below.","runbox.runtime.overlay.terminated.description.os_disk_is_full":"Runtime has ended because the disk is full.\nIf you have recently deleted a runbox, it may take some time to reflect.","runbox.runtime.overlay.terminated.description.quota_exceeded":"The runtime has ended because the runtime has expired.","runbox.runtime.overlay.terminated.description.quota_per_session_exceeded":"Runbox has been running for 24 hours and the runtime has ended.\nTo reconnect to the runbox, click the button below.","runbox.runtime.overlay.terminated.description.unexpected":"If the problem persists, please contact customer service.","runbox.runtime.overlay.terminated.restart":"Reconnect","runbox.runtime.overlay.terminated.title":"Runtime disconnected"};
5
+ var en = {"runbox.action.autoShutdown.title":"Always on","runbox.action.autoShutdown.tooltip.disabled":"This runtime automatically shuts down after {time}, which is set as the per-session usage time.","runbox.action.autoShutdown.tooltip.enabled":"If set to always on, the runtime will not shut down even if you leave the learning material. However, it will automatically shut down after {time}, which is set as the session-specific usage time of the runtime.","runbox.action.grade.dialog.description.error":"An error occurred while grading the code.","runbox.action.grade.dialog.description.success":"Grading completed successfully.","runbox.action.grade.dialog.title":"Grading result","runbox.action.grade.noti.error":"An error occurred while grading the code.","runbox.action.grade.title":"Submit","runbox.action.grade.tooltip.onProgress":"Grading is in progress. Please wait for a moment. Depending on the material, grading may take up to 3 minutes.","runbox.action.reset.dialog.actions.confirm":"Reset","runbox.action.reset.dialog.description":"Are you sure you want to reset the runbox code? Your codes will be overwritten to default code of material.\nAfter reset, the runbox session will be refreshed.","runbox.action.reset.noti.error":"An error occurred while initializing the runbox code.","runbox.action.reset.title":"Reset code","runbox.action.restart.dialog.actions.confirm":"Restart","runbox.action.restart.dialog.description":"Are you sure you want to restart the runbox?","runbox.action.restart.title":"Restart runbox","runbox.action.share.title":"Share runbox URL","runbox.action.share.tooltip.copied":"Runbox URL copied to clipboard.","runbox.action.submitCountInfo.dialog.title":"Limit the number of submissions","runbox.action.submitCountInfo.dialog.description":"You have exceeded the submission count limit","runbox.action.submitCountInfo.tooltip.disabled":"The submission count has been used up","runbox.common.close":"Close","runbox.common.retry":"Retry","runbox.common.support":"Support","runbox.context.command.ping.error":"An error occurred while processing task.","runbox.runtime.message.startError":"There was an error starting the runbox.","runbox.runtime.overlay.assigned.description":"(3 of 3)\nRunbox is running.\nPlease wait!","runbox.runtime.overlay.assigned.description_timeout":"(3 of 3)\nRunning the runbox is taking longer than we expected.\nPlease wait a little longer without refreshing!","runbox.runtime.overlay.queued.description":"(2 of 3)\nCurrently queued {waiters} times...","runbox.runtime.overlay.queued.description_zero":"(2 of 3)\nRunbox will run soon","runbox.runtime.overlay.terminated.description.default":"The runtime terminated due to an unexpected problem.\nClick the button below to reconnect to the runbox.","runbox.runtime.overlay.terminated.description.general":"The runtime connected to the runbox has ended.\nTo reconnect to the runbox, click the button below.","runbox.runtime.overlay.terminated.description.os_disk_is_full":"Runtime has ended because the disk is full.\nIf you have recently deleted a runbox, it may take some time to reflect.","runbox.runtime.overlay.terminated.description.quota_exceeded":"The runtime has ended because the runtime has expired.","runbox.runtime.overlay.terminated.description.quota_per_session_exceeded":"Runbox has been running for 24 hours and the runtime has ended.\nTo reconnect to the runbox, click the button below.","runbox.runtime.overlay.terminated.description.unexpected":"If the problem persists, please contact customer service.","runbox.runtime.overlay.terminated.restart":"Reconnect","runbox.runtime.overlay.terminated.title":"Runtime disconnected"};
6
6
 
7
7
  exports["default"] = en;
@@ -2,6 +2,6 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var ko = {"runbox.action.autoShutdown.title":"항상 켜두기","runbox.action.autoShutdown.tooltip.disabled":"해당 런타임은 세션별 사용 시간으로 설정된 {time}이 지나면 자동으로 종료됩니다.","runbox.action.autoShutdown.tooltip.enabled":"항상 켜두기를 설정하면 학습 자료 밖으로 나가도 런타임이 종료되지 않습니다. 다만, 해당 런타임의 세션별 사용 시간으로 설정된 {time}이 지나면 자동으로 종료됩니다.","runbox.action.grade.dialog.description.error":"채점 중에 오류가 발생했습니다.","runbox.action.grade.dialog.description.success":"채점이 완료되었습니다.","runbox.action.grade.dialog.title":"채점 결과","runbox.action.grade.noti.error":"코드를 채점하는 도중 오류가 발생했습니다.","runbox.action.grade.title":"제출","runbox.action.grade.tooltip.onProgress":"코드 채점이 진행 중 입니다. 잠시만 기다려 주세요. 실습에 따라 채점이 최대 3분까지 소요될 수 있습니다.","runbox.action.reset.dialog.actions.confirm":"초기화","runbox.action.reset.dialog.description":"런박스 코드를 초기화하시겠습니까? 초기화 시 학습자료의 코드가 기본 코드로 덮어씌워집니다.\n초기화 이후 런박스 세션이 새로고침 됩니다.","runbox.action.reset.noti.error":"런박스 코드를 초기화 하는 중에 오류가 발생했습니다.","runbox.action.reset.title":"코드 초기화","runbox.action.restart.dialog.actions.confirm":"재시작","runbox.action.restart.dialog.description":"런박스를 재시작 하시겠습니까?","runbox.action.restart.title":"런박스 재시작","runbox.action.share.title":"런박스 URL 복사","runbox.action.share.tooltip.copied":"런박스 URL을 복사하였습니다.","runbox.common.close":"닫기","runbox.common.retry":"재시도","runbox.common.support":"고객센터","runbox.context.command.ping.error":"런박스 작업을 수행하는 도중 오류가 발생했습니다.","runbox.runtime.message.startError":"런박스를 시작하는 중에 오류가 발생했습니다.","runbox.runtime.overlay.assigned.description":"(3 / 3)\n런박스가 실행 중입니다.\n잠시만 기다려주세요!","runbox.runtime.overlay.assigned.description_timeout":"(3 / 3)\n런박스를 실행하는데\n예상보다 시간이 소요되고 있습니다.\n새로고침하지 말고 조금만 더 기다려주세요!","runbox.runtime.overlay.queued.description":"(2 / 3)\n현재 {waiters}번째 대기 중입니다...","runbox.runtime.overlay.queued.description_zero":"(2 / 3)\n곧 런박스가 실행됩니다","runbox.runtime.overlay.terminated.description.default":"예상치 못한 문제로 런타임이 종료되었습니다.\n런박스를 재접속하려면 아래 버튼을 눌러주세요.","runbox.runtime.overlay.terminated.description.general":"런박스에 연결된 런타임이 종료되었습니다.\n런박스를 재접속하려면 아래 버튼을 눌러주세요.","runbox.runtime.overlay.terminated.description.os_disk_is_full":"디스크가 가득 차서 런타임이 종료되었습니다.\n최근 런박스를 삭제하셨다면 반영까지 시간이 소요될 수 있습니다.","runbox.runtime.overlay.terminated.description.quota_exceeded":"런타임 사용시간이 만료되어 런타임이 종료되었습니다.","runbox.runtime.overlay.terminated.description.quota_per_session_exceeded":"런박스를 실행한지 24시간이 경과하여 런타임이 종료되었습니다.\n런박스를 재접속하려면 아래 버튼을 눌러주세요.","runbox.runtime.overlay.terminated.description.unexpected":"문제가 지속되면 고객센터에 문의해주세요.","runbox.runtime.overlay.terminated.restart":"재접속","runbox.runtime.overlay.terminated.title":"런타임 연결 해제됨"};
5
+ var ko = {"runbox.action.autoShutdown.title":"항상 켜두기","runbox.action.autoShutdown.tooltip.disabled":"해당 런타임은 세션별 사용 시간으로 설정된 {time}이 지나면 자동으로 종료됩니다.","runbox.action.autoShutdown.tooltip.enabled":"항상 켜두기를 설정하면 학습 자료 밖으로 나가도 런타임이 종료되지 않습니다. 다만, 해당 런타임의 세션별 사용 시간으로 설정된 {time}이 지나면 자동으로 종료됩니다.","runbox.action.grade.dialog.description.error":"채점 중에 오류가 발생했습니다.","runbox.action.grade.dialog.description.success":"채점이 완료되었습니다.","runbox.action.grade.dialog.title":"채점 결과","runbox.action.grade.noti.error":"코드를 채점하는 도중 오류가 발생했습니다.","runbox.action.grade.title":"제출","runbox.action.grade.tooltip.onProgress":"코드 채점이 진행 중 입니다. 잠시만 기다려 주세요. 실습에 따라 채점이 최대 3분까지 소요될 수 있습니다.","runbox.action.reset.dialog.actions.confirm":"초기화","runbox.action.reset.dialog.description":"런박스 코드를 초기화하시겠습니까? 초기화 시 학습자료의 코드가 기본 코드로 덮어씌워집니다.\n초기화 이후 런박스 세션이 새로고침 됩니다.","runbox.action.reset.noti.error":"런박스 코드를 초기화 하는 중에 오류가 발생했습니다.","runbox.action.reset.title":"코드 초기화","runbox.action.restart.dialog.actions.confirm":"재시작","runbox.action.restart.dialog.description":"런박스를 재시작 하시겠습니까?","runbox.action.restart.title":"런박스 재시작","runbox.action.share.title":"런박스 URL 복사","runbox.action.share.tooltip.copied":"런박스 URL을 복사하였습니다.","runbox.action.submitCountInfo.dialog.title":"제출 횟수 제한","runbox.action.submitCountInfo.dialog.description":"제출 횟수 제한을 초과했습니다.","runbox.action.submitCountInfo.tooltip.disabled":"제출 횟수를 모두 사용했습니다.","runbox.common.close":"닫기","runbox.common.retry":"재시도","runbox.common.support":"고객센터","runbox.context.command.ping.error":"런박스 작업을 수행하는 도중 오류가 발생했습니다.","runbox.runtime.message.startError":"런박스를 시작하는 중에 오류가 발생했습니다.","runbox.runtime.overlay.assigned.description":"(3 / 3)\n런박스가 실행 중입니다.\n잠시만 기다려주세요!","runbox.runtime.overlay.assigned.description_timeout":"(3 / 3)\n런박스를 실행하는데\n예상보다 시간이 소요되고 있습니다.\n새로고침하지 말고 조금만 더 기다려주세요!","runbox.runtime.overlay.queued.description":"(2 / 3)\n현재 {waiters}번째 대기 중입니다...","runbox.runtime.overlay.queued.description_zero":"(2 / 3)\n곧 런박스가 실행됩니다","runbox.runtime.overlay.terminated.description.default":"예상치 못한 문제로 런타임이 종료되었습니다.\n런박스를 재접속하려면 아래 버튼을 눌러주세요.","runbox.runtime.overlay.terminated.description.general":"런박스에 연결된 런타임이 종료되었습니다.\n런박스를 재접속하려면 아래 버튼을 눌러주세요.","runbox.runtime.overlay.terminated.description.os_disk_is_full":"디스크가 가득 차서 런타임이 종료되었습니다.\n최근 런박스를 삭제하셨다면 반영까지 시간이 소요될 수 있습니다.","runbox.runtime.overlay.terminated.description.quota_exceeded":"런타임 사용시간이 만료되어 런타임이 종료되었습니다.","runbox.runtime.overlay.terminated.description.quota_per_session_exceeded":"런박스를 실행한지 24시간이 경과하여 런타임이 종료되었습니다.\n런박스를 재접속하려면 아래 버튼을 눌러주세요.","runbox.runtime.overlay.terminated.description.unexpected":"문제가 지속되면 고객센터에 문의해주세요.","runbox.runtime.overlay.terminated.restart":"재접속","runbox.runtime.overlay.terminated.title":"런타임 연결 해제됨"};
6
6
 
7
7
  exports["default"] = ko;
@@ -1,6 +1,6 @@
1
1
  import { taggedTemplateLiteral as _taggedTemplateLiteral } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
2
  import React from 'react';
3
- import { EliceRunboxResourceStat, EliceRunboxNetworkStat, EliceRunboxRunningStatus } from '@elice/runbox-client';
3
+ import { EliceRunboxResourceStat, EliceRunboxRemainingTimer, EliceRunboxNetworkStat, EliceRunboxRunningStatus } from '@elice/runbox-client';
4
4
  import styled from '@emotion/styled';
5
5
  import { Box, Stack, Divider } from '@mui/material';
6
6
 
@@ -37,7 +37,7 @@ var MaterialRunboxFooter = function MaterialRunboxFooter(_ref2) {
37
37
  orientation: "vertical",
38
38
  flexItem: true
39
39
  })
40
- }, React.createElement(EliceRunboxNetworkStat, null), React.createElement(EliceRunboxRunningStatus, null));
40
+ }, React.createElement(EliceRunboxRemainingTimer, null), React.createElement(EliceRunboxNetworkStat, null), React.createElement(EliceRunboxRunningStatus, null));
41
41
  };
42
42
  //
43
43
  //
@@ -7,7 +7,8 @@ import { useEliceRunboxRunning } from '@elice/runbox-client';
7
7
  import styled from '@emotion/styled';
8
8
  import { Terminal } from '@mui/icons-material';
9
9
  import { LoadingButton } from '@mui/lab';
10
- import { Button, Tooltip, ButtonGroup, Badge, Dialog, DialogTitle, DialogContent, Stack, Alert, DialogActions } from '@mui/material';
10
+ import { Button, Tooltip, ButtonGroup, Badge, Dialog, DialogTitle, DialogContent, Stack, Alert, DialogActions, Typography } from '@mui/material';
11
+ import { useQuery } from '@tanstack/react-query';
11
12
  import { useSnackbar } from 'notistack';
12
13
  import { useMaterialRunboxApiContext } from '../contexts/MaterialRunboxApiContext.js';
13
14
  import { useMaterialRunboxCommandContext } from '../contexts/MaterialRunboxCommandContext.js';
@@ -59,6 +60,7 @@ var StyledTerminal = styled.textarea(_templateObject3 || (_templateObject3 = _ta
59
60
  var MaterialRunboxActionGrade = function MaterialRunboxActionGrade(_ref5) {
60
61
  var runtime = _ref5.runtime,
61
62
  courseId = _ref5.courseId;
63
+ var _a;
62
64
  var _useSnackbar = useSnackbar(),
63
65
  enqueueSnackbar = _useSnackbar.enqueueSnackbar;
64
66
  var intl = useIntl();
@@ -69,6 +71,24 @@ var MaterialRunboxActionGrade = function MaterialRunboxActionGrade(_ref5) {
69
71
  setCommandIdToPing = _useMaterialRunboxCom.setCommandIdToPing;
70
72
  var _useEliceRunboxRunnin = useEliceRunboxRunning(),
71
73
  status = _useEliceRunboxRunnin.status;
74
+ var leaderboardSubmitInfoQuery = useQuery({
75
+ queryKey: ['eliceMaterialRunboxRunboxApi.runboxRunboxIdSubmitInfoGet', {
76
+ courseId: courseId,
77
+ runtime: runtime
78
+ }],
79
+ queryFn: function queryFn(_ref6) {
80
+ var signal = _ref6.signal;
81
+ return materialRunboxApi.runbox.runboxRunboxIdSubmitInfoGet({
82
+ eliceCourseId: courseId,
83
+ runboxId: runtime === null || runtime === void 0 ? void 0 : runtime.runboxId
84
+ }, {
85
+ signal: signal
86
+ });
87
+ },
88
+ enabled: Boolean(runtime === null || runtime === void 0 ? void 0 : runtime.runboxId),
89
+ retry: false
90
+ });
91
+ var isSubmitCountRemained = ((_a = leaderboardSubmitInfoQuery.data) === null || _a === void 0 ? void 0 : _a.remainSubmitCount) !== 0;
72
92
  var _React$useState = React.useState(false),
73
93
  _React$useState2 = _slicedToArray(_React$useState, 2),
74
94
  isActionLoading = _React$useState2[0],
@@ -79,8 +99,12 @@ var MaterialRunboxActionGrade = function MaterialRunboxActionGrade(_ref5) {
79
99
  setGradeResultDialogOpen = _React$useState4[1];
80
100
  var _React$useState5 = React.useState(false),
81
101
  _React$useState6 = _slicedToArray(_React$useState5, 2),
82
- hasUnreadResult = _React$useState6[0],
83
- setHasUnreadResult = _React$useState6[1];
102
+ isSubmitCountInfoDialogOpen = _React$useState6[0],
103
+ setSubmitCountInfoDialogOpen = _React$useState6[1];
104
+ var _React$useState7 = React.useState(false),
105
+ _React$useState8 = _slicedToArray(_React$useState7, 2),
106
+ hasUnreadResult = _React$useState8[0],
107
+ setHasUnreadResult = _React$useState8[1];
84
108
  var isRunboxRunning = status === 'running';
85
109
  var isGradeDoneWithOutput = !isLastCommandRunning && (lastCommand === null || lastCommand === void 0 ? void 0 : lastCommand.commandType) === CommandType.Grade && Boolean(lastCommand === null || lastCommand === void 0 ? void 0 : lastCommand.output);
86
110
  /**
@@ -95,19 +119,38 @@ var MaterialRunboxActionGrade = function MaterialRunboxActionGrade(_ref5) {
95
119
  var handleGradeResultDialogClose = function handleGradeResultDialogClose() {
96
120
  setGradeResultDialogOpen(false);
97
121
  };
122
+ /**
123
+ *
124
+ */
125
+ var handleSubmitCountInfoDialogClose = function handleSubmitCountInfoDialogClose() {
126
+ setSubmitCountInfoDialogOpen(false);
127
+ };
98
128
  /**
99
129
  *
100
130
  */
101
131
  var handleAction = /*#__PURE__*/function () {
102
- var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
103
- var runtimeId, _yield$materialRunbox, commandId;
132
+ var _ref7 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
133
+ var _yield$leaderboardSub, currentLeaderboardSubmitInfo, isCurrentSubmitCountEmpty, runtimeId, _yield$materialRunbox, commandId;
104
134
  return _regeneratorRuntime().wrap(function _callee$(_context) {
105
135
  while (1) switch (_context.prev = _context.next) {
106
136
  case 0:
107
137
  setActionLoading(true);
108
138
  _context.prev = 1;
139
+ _context.next = 4;
140
+ return leaderboardSubmitInfoQuery.refetch();
141
+ case 4:
142
+ _yield$leaderboardSub = _context.sent;
143
+ currentLeaderboardSubmitInfo = _yield$leaderboardSub.data;
144
+ isCurrentSubmitCountEmpty = (currentLeaderboardSubmitInfo === null || currentLeaderboardSubmitInfo === void 0 ? void 0 : currentLeaderboardSubmitInfo.remainSubmitCount) === 0;
145
+ if (!isCurrentSubmitCountEmpty) {
146
+ _context.next = 10;
147
+ break;
148
+ }
149
+ setSubmitCountInfoDialogOpen(true);
150
+ return _context.abrupt("return");
151
+ case 10:
109
152
  runtimeId = runtime === null || runtime === void 0 ? void 0 : runtime.id;
110
- _context.next = 5;
153
+ _context.next = 13;
111
154
  return materialRunboxApi.runtime.runtimeRuntimeIdCommandPost({
112
155
  runtimeId: runtimeId,
113
156
  eliceCourseId: courseId,
@@ -115,32 +158,32 @@ var MaterialRunboxActionGrade = function MaterialRunboxActionGrade(_ref5) {
115
158
  commandType: CommandType.Grade
116
159
  }
117
160
  });
118
- case 5:
161
+ case 13:
119
162
  _yield$materialRunbox = _context.sent;
120
163
  commandId = _yield$materialRunbox.id;
121
164
  setCommandIdToPing(commandId);
122
- _context.next = 13;
165
+ _context.next = 21;
123
166
  break;
124
- case 10:
125
- _context.prev = 10;
167
+ case 18:
168
+ _context.prev = 18;
126
169
  _context.t0 = _context["catch"](1);
127
170
  enqueueSnackbar(intl.formatMessage({
128
171
  id: 'runbox.action.grade.noti.error'
129
172
  }), {
130
173
  variant: 'error'
131
174
  });
132
- case 13:
133
- _context.prev = 13;
175
+ case 21:
176
+ _context.prev = 21;
134
177
  setActionLoading(false);
135
- return _context.finish(13);
136
- case 16:
178
+ return _context.finish(21);
179
+ case 24:
137
180
  case "end":
138
181
  return _context.stop();
139
182
  }
140
- }, _callee, null, [[1, 10, 13, 16]]);
183
+ }, _callee, null, [[1, 18, 21, 24]]);
141
184
  }));
142
185
  return function handleAction() {
143
- return _ref6.apply(this, arguments);
186
+ return _ref7.apply(this, arguments);
144
187
  };
145
188
  }();
146
189
  //
@@ -167,17 +210,31 @@ var MaterialRunboxActionGrade = function MaterialRunboxActionGrade(_ref5) {
167
210
  var renderActionButton = function renderActionButton() {
168
211
  var isGradeType = (lastCommand === null || lastCommand === void 0 ? void 0 : lastCommand.commandType) === CommandType.Grade;
169
212
  var isGrading = isActionLoading || isLastCommandRunning && isGradeType;
213
+ /**
214
+ *
215
+ */
216
+ var getActionTooltipMessage = function getActionTooltipMessage() {
217
+ if (!isSubmitCountRemained) {
218
+ return intl.formatMessage({
219
+ id: 'runbox.action.submitCountInfo.tooltip.disabled'
220
+ });
221
+ }
222
+ if (isGrading) {
223
+ return intl.formatMessage({
224
+ id: 'runbox.action.grade.tooltip.onProgress'
225
+ });
226
+ }
227
+ return '';
228
+ };
170
229
  return React.createElement(Tooltip, {
171
- title: isGrading ? intl.formatMessage({
172
- id: 'runbox.action.grade.tooltip.onProgress'
173
- }) : '',
230
+ title: getActionTooltipMessage(),
174
231
  placement: "bottom-end"
175
232
  }, React.createElement(ButtonGroup, {
176
233
  variant: "contained"
177
234
  }, React.createElement(StyledMainActionButton, {
178
235
  variant: "contained",
179
236
  loading: isGrading,
180
- disabled: !isRunboxRunning || isLastCommandRunning,
237
+ disabled: !isRunboxRunning || isLastCommandRunning || !isSubmitCountRemained,
181
238
  size: "small",
182
239
  onClick: handleAction
183
240
  }, React.createElement(FormattedMessage, {
@@ -238,10 +295,30 @@ var MaterialRunboxActionGrade = function MaterialRunboxActionGrade(_ref5) {
238
295
  id: "runbox.common.close"
239
296
  }))));
240
297
  };
298
+ /**
299
+ *
300
+ */
301
+ var renderActionSubmitCountInfoDialog = function renderActionSubmitCountInfoDialog() {
302
+ return React.createElement(Dialog, {
303
+ fullWidth: true,
304
+ maxWidth: "xs",
305
+ open: isSubmitCountInfoDialogOpen,
306
+ onClick: handleSubmitCountInfoDialogClose
307
+ }, React.createElement(DialogTitle, null, React.createElement(FormattedMessage, {
308
+ id: "runbtox.action.submitCountInfo.dialog.title"
309
+ })), React.createElement(DialogContent, null, React.createElement(Typography, null, React.createElement(FormattedMessage, {
310
+ id: "runbox.action.submitCountInfo.dialog.description"
311
+ }))), React.createElement(DialogActions, null, React.createElement(Button, {
312
+ color: "inherit",
313
+ onClick: handleSubmitCountInfoDialogClose
314
+ }, React.createElement(FormattedMessage, {
315
+ id: "runbox.common.close"
316
+ }))));
317
+ };
241
318
  //
242
319
  //
243
320
  //
244
- return React.createElement(React.Fragment, null, renderActionButton(), renderActionGradeResultDialog());
321
+ return React.createElement(React.Fragment, null, renderActionButton(), renderActionGradeResultDialog(), renderActionSubmitCountInfoDialog());
245
322
  };
246
323
 
247
324
  export { MaterialRunboxActionGrade as default };
@@ -1,3 +1,3 @@
1
- var en = {"runbox.action.autoShutdown.title":"Always on","runbox.action.autoShutdown.tooltip.disabled":"This runtime automatically shuts down after {time}, which is set as the per-session usage time.","runbox.action.autoShutdown.tooltip.enabled":"If set to always on, the runtime will not shut down even if you leave the learning material. However, it will automatically shut down after {time}, which is set as the session-specific usage time of the runtime.","runbox.action.grade.dialog.description.error":"An error occurred while grading the code.","runbox.action.grade.dialog.description.success":"Grading completed successfully.","runbox.action.grade.dialog.title":"Grading result","runbox.action.grade.noti.error":"An error occurred while grading the code.","runbox.action.grade.title":"Submit","runbox.action.grade.tooltip.onProgress":"Grading is in progress. Please wait for a moment. Depending on the material, grading may take up to 3 minutes.","runbox.action.reset.dialog.actions.confirm":"Reset","runbox.action.reset.dialog.description":"Are you sure you want to reset the runbox code? Your codes will be overwritten to default code of material.\nAfter reset, the runbox session will be refreshed.","runbox.action.reset.noti.error":"An error occurred while initializing the runbox code.","runbox.action.reset.title":"Reset code","runbox.action.restart.dialog.actions.confirm":"Restart","runbox.action.restart.dialog.description":"Are you sure you want to restart the runbox?","runbox.action.restart.title":"Restart runbox","runbox.action.share.title":"Share runbox URL","runbox.action.share.tooltip.copied":"Runbox URL copied to clipboard.","runbox.common.close":"Close","runbox.common.retry":"Retry","runbox.common.support":"Support","runbox.context.command.ping.error":"An error occurred while processing task.","runbox.runtime.message.startError":"There was an error starting the runbox.","runbox.runtime.overlay.assigned.description":"(3 of 3)\nRunbox is running.\nPlease wait!","runbox.runtime.overlay.assigned.description_timeout":"(3 of 3)\nRunning the runbox is taking longer than we expected.\nPlease wait a little longer without refreshing!","runbox.runtime.overlay.queued.description":"(2 of 3)\nCurrently queued {waiters} times...","runbox.runtime.overlay.queued.description_zero":"(2 of 3)\nRunbox will run soon","runbox.runtime.overlay.terminated.description.default":"The runtime terminated due to an unexpected problem.\nClick the button below to reconnect to the runbox.","runbox.runtime.overlay.terminated.description.general":"The runtime connected to the runbox has ended.\nTo reconnect to the runbox, click the button below.","runbox.runtime.overlay.terminated.description.os_disk_is_full":"Runtime has ended because the disk is full.\nIf you have recently deleted a runbox, it may take some time to reflect.","runbox.runtime.overlay.terminated.description.quota_exceeded":"The runtime has ended because the runtime has expired.","runbox.runtime.overlay.terminated.description.quota_per_session_exceeded":"Runbox has been running for 24 hours and the runtime has ended.\nTo reconnect to the runbox, click the button below.","runbox.runtime.overlay.terminated.description.unexpected":"If the problem persists, please contact customer service.","runbox.runtime.overlay.terminated.restart":"Reconnect","runbox.runtime.overlay.terminated.title":"Runtime disconnected"};
1
+ var en = {"runbox.action.autoShutdown.title":"Always on","runbox.action.autoShutdown.tooltip.disabled":"This runtime automatically shuts down after {time}, which is set as the per-session usage time.","runbox.action.autoShutdown.tooltip.enabled":"If set to always on, the runtime will not shut down even if you leave the learning material. However, it will automatically shut down after {time}, which is set as the session-specific usage time of the runtime.","runbox.action.grade.dialog.description.error":"An error occurred while grading the code.","runbox.action.grade.dialog.description.success":"Grading completed successfully.","runbox.action.grade.dialog.title":"Grading result","runbox.action.grade.noti.error":"An error occurred while grading the code.","runbox.action.grade.title":"Submit","runbox.action.grade.tooltip.onProgress":"Grading is in progress. Please wait for a moment. Depending on the material, grading may take up to 3 minutes.","runbox.action.reset.dialog.actions.confirm":"Reset","runbox.action.reset.dialog.description":"Are you sure you want to reset the runbox code? Your codes will be overwritten to default code of material.\nAfter reset, the runbox session will be refreshed.","runbox.action.reset.noti.error":"An error occurred while initializing the runbox code.","runbox.action.reset.title":"Reset code","runbox.action.restart.dialog.actions.confirm":"Restart","runbox.action.restart.dialog.description":"Are you sure you want to restart the runbox?","runbox.action.restart.title":"Restart runbox","runbox.action.share.title":"Share runbox URL","runbox.action.share.tooltip.copied":"Runbox URL copied to clipboard.","runbox.action.submitCountInfo.dialog.title":"Limit the number of submissions","runbox.action.submitCountInfo.dialog.description":"You have exceeded the submission count limit","runbox.action.submitCountInfo.tooltip.disabled":"The submission count has been used up","runbox.common.close":"Close","runbox.common.retry":"Retry","runbox.common.support":"Support","runbox.context.command.ping.error":"An error occurred while processing task.","runbox.runtime.message.startError":"There was an error starting the runbox.","runbox.runtime.overlay.assigned.description":"(3 of 3)\nRunbox is running.\nPlease wait!","runbox.runtime.overlay.assigned.description_timeout":"(3 of 3)\nRunning the runbox is taking longer than we expected.\nPlease wait a little longer without refreshing!","runbox.runtime.overlay.queued.description":"(2 of 3)\nCurrently queued {waiters} times...","runbox.runtime.overlay.queued.description_zero":"(2 of 3)\nRunbox will run soon","runbox.runtime.overlay.terminated.description.default":"The runtime terminated due to an unexpected problem.\nClick the button below to reconnect to the runbox.","runbox.runtime.overlay.terminated.description.general":"The runtime connected to the runbox has ended.\nTo reconnect to the runbox, click the button below.","runbox.runtime.overlay.terminated.description.os_disk_is_full":"Runtime has ended because the disk is full.\nIf you have recently deleted a runbox, it may take some time to reflect.","runbox.runtime.overlay.terminated.description.quota_exceeded":"The runtime has ended because the runtime has expired.","runbox.runtime.overlay.terminated.description.quota_per_session_exceeded":"Runbox has been running for 24 hours and the runtime has ended.\nTo reconnect to the runbox, click the button below.","runbox.runtime.overlay.terminated.description.unexpected":"If the problem persists, please contact customer service.","runbox.runtime.overlay.terminated.restart":"Reconnect","runbox.runtime.overlay.terminated.title":"Runtime disconnected"};
2
2
 
3
3
  export { en as default };
@@ -1,3 +1,3 @@
1
- var ko = {"runbox.action.autoShutdown.title":"항상 켜두기","runbox.action.autoShutdown.tooltip.disabled":"해당 런타임은 세션별 사용 시간으로 설정된 {time}이 지나면 자동으로 종료됩니다.","runbox.action.autoShutdown.tooltip.enabled":"항상 켜두기를 설정하면 학습 자료 밖으로 나가도 런타임이 종료되지 않습니다. 다만, 해당 런타임의 세션별 사용 시간으로 설정된 {time}이 지나면 자동으로 종료됩니다.","runbox.action.grade.dialog.description.error":"채점 중에 오류가 발생했습니다.","runbox.action.grade.dialog.description.success":"채점이 완료되었습니다.","runbox.action.grade.dialog.title":"채점 결과","runbox.action.grade.noti.error":"코드를 채점하는 도중 오류가 발생했습니다.","runbox.action.grade.title":"제출","runbox.action.grade.tooltip.onProgress":"코드 채점이 진행 중 입니다. 잠시만 기다려 주세요. 실습에 따라 채점이 최대 3분까지 소요될 수 있습니다.","runbox.action.reset.dialog.actions.confirm":"초기화","runbox.action.reset.dialog.description":"런박스 코드를 초기화하시겠습니까? 초기화 시 학습자료의 코드가 기본 코드로 덮어씌워집니다.\n초기화 이후 런박스 세션이 새로고침 됩니다.","runbox.action.reset.noti.error":"런박스 코드를 초기화 하는 중에 오류가 발생했습니다.","runbox.action.reset.title":"코드 초기화","runbox.action.restart.dialog.actions.confirm":"재시작","runbox.action.restart.dialog.description":"런박스를 재시작 하시겠습니까?","runbox.action.restart.title":"런박스 재시작","runbox.action.share.title":"런박스 URL 복사","runbox.action.share.tooltip.copied":"런박스 URL을 복사하였습니다.","runbox.common.close":"닫기","runbox.common.retry":"재시도","runbox.common.support":"고객센터","runbox.context.command.ping.error":"런박스 작업을 수행하는 도중 오류가 발생했습니다.","runbox.runtime.message.startError":"런박스를 시작하는 중에 오류가 발생했습니다.","runbox.runtime.overlay.assigned.description":"(3 / 3)\n런박스가 실행 중입니다.\n잠시만 기다려주세요!","runbox.runtime.overlay.assigned.description_timeout":"(3 / 3)\n런박스를 실행하는데\n예상보다 시간이 소요되고 있습니다.\n새로고침하지 말고 조금만 더 기다려주세요!","runbox.runtime.overlay.queued.description":"(2 / 3)\n현재 {waiters}번째 대기 중입니다...","runbox.runtime.overlay.queued.description_zero":"(2 / 3)\n곧 런박스가 실행됩니다","runbox.runtime.overlay.terminated.description.default":"예상치 못한 문제로 런타임이 종료되었습니다.\n런박스를 재접속하려면 아래 버튼을 눌러주세요.","runbox.runtime.overlay.terminated.description.general":"런박스에 연결된 런타임이 종료되었습니다.\n런박스를 재접속하려면 아래 버튼을 눌러주세요.","runbox.runtime.overlay.terminated.description.os_disk_is_full":"디스크가 가득 차서 런타임이 종료되었습니다.\n최근 런박스를 삭제하셨다면 반영까지 시간이 소요될 수 있습니다.","runbox.runtime.overlay.terminated.description.quota_exceeded":"런타임 사용시간이 만료되어 런타임이 종료되었습니다.","runbox.runtime.overlay.terminated.description.quota_per_session_exceeded":"런박스를 실행한지 24시간이 경과하여 런타임이 종료되었습니다.\n런박스를 재접속하려면 아래 버튼을 눌러주세요.","runbox.runtime.overlay.terminated.description.unexpected":"문제가 지속되면 고객센터에 문의해주세요.","runbox.runtime.overlay.terminated.restart":"재접속","runbox.runtime.overlay.terminated.title":"런타임 연결 해제됨"};
1
+ var ko = {"runbox.action.autoShutdown.title":"항상 켜두기","runbox.action.autoShutdown.tooltip.disabled":"해당 런타임은 세션별 사용 시간으로 설정된 {time}이 지나면 자동으로 종료됩니다.","runbox.action.autoShutdown.tooltip.enabled":"항상 켜두기를 설정하면 학습 자료 밖으로 나가도 런타임이 종료되지 않습니다. 다만, 해당 런타임의 세션별 사용 시간으로 설정된 {time}이 지나면 자동으로 종료됩니다.","runbox.action.grade.dialog.description.error":"채점 중에 오류가 발생했습니다.","runbox.action.grade.dialog.description.success":"채점이 완료되었습니다.","runbox.action.grade.dialog.title":"채점 결과","runbox.action.grade.noti.error":"코드를 채점하는 도중 오류가 발생했습니다.","runbox.action.grade.title":"제출","runbox.action.grade.tooltip.onProgress":"코드 채점이 진행 중 입니다. 잠시만 기다려 주세요. 실습에 따라 채점이 최대 3분까지 소요될 수 있습니다.","runbox.action.reset.dialog.actions.confirm":"초기화","runbox.action.reset.dialog.description":"런박스 코드를 초기화하시겠습니까? 초기화 시 학습자료의 코드가 기본 코드로 덮어씌워집니다.\n초기화 이후 런박스 세션이 새로고침 됩니다.","runbox.action.reset.noti.error":"런박스 코드를 초기화 하는 중에 오류가 발생했습니다.","runbox.action.reset.title":"코드 초기화","runbox.action.restart.dialog.actions.confirm":"재시작","runbox.action.restart.dialog.description":"런박스를 재시작 하시겠습니까?","runbox.action.restart.title":"런박스 재시작","runbox.action.share.title":"런박스 URL 복사","runbox.action.share.tooltip.copied":"런박스 URL을 복사하였습니다.","runbox.action.submitCountInfo.dialog.title":"제출 횟수 제한","runbox.action.submitCountInfo.dialog.description":"제출 횟수 제한을 초과했습니다.","runbox.action.submitCountInfo.tooltip.disabled":"제출 횟수를 모두 사용했습니다.","runbox.common.close":"닫기","runbox.common.retry":"재시도","runbox.common.support":"고객센터","runbox.context.command.ping.error":"런박스 작업을 수행하는 도중 오류가 발생했습니다.","runbox.runtime.message.startError":"런박스를 시작하는 중에 오류가 발생했습니다.","runbox.runtime.overlay.assigned.description":"(3 / 3)\n런박스가 실행 중입니다.\n잠시만 기다려주세요!","runbox.runtime.overlay.assigned.description_timeout":"(3 / 3)\n런박스를 실행하는데\n예상보다 시간이 소요되고 있습니다.\n새로고침하지 말고 조금만 더 기다려주세요!","runbox.runtime.overlay.queued.description":"(2 / 3)\n현재 {waiters}번째 대기 중입니다...","runbox.runtime.overlay.queued.description_zero":"(2 / 3)\n곧 런박스가 실행됩니다","runbox.runtime.overlay.terminated.description.default":"예상치 못한 문제로 런타임이 종료되었습니다.\n런박스를 재접속하려면 아래 버튼을 눌러주세요.","runbox.runtime.overlay.terminated.description.general":"런박스에 연결된 런타임이 종료되었습니다.\n런박스를 재접속하려면 아래 버튼을 눌러주세요.","runbox.runtime.overlay.terminated.description.os_disk_is_full":"디스크가 가득 차서 런타임이 종료되었습니다.\n최근 런박스를 삭제하셨다면 반영까지 시간이 소요될 수 있습니다.","runbox.runtime.overlay.terminated.description.quota_exceeded":"런타임 사용시간이 만료되어 런타임이 종료되었습니다.","runbox.runtime.overlay.terminated.description.quota_per_session_exceeded":"런박스를 실행한지 24시간이 경과하여 런타임이 종료되었습니다.\n런박스를 재접속하려면 아래 버튼을 눌러주세요.","runbox.runtime.overlay.terminated.description.unexpected":"문제가 지속되면 고객센터에 문의해주세요.","runbox.runtime.overlay.terminated.restart":"재접속","runbox.runtime.overlay.terminated.title":"런타임 연결 해제됨"};
2
2
 
3
3
  export { ko as default };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elice/material-runbox",
3
- "version": "1.231107.0-gstta.1",
3
+ "version": "1.231128.0",
4
4
  "description": "User view and editing components of Elice material runbox",
5
5
  "repository": "https://git.elicer.io/elice/frontend/library/elice-material",
6
6
  "license": "UNLICENSED",
@@ -48,11 +48,11 @@
48
48
  "tslib": "^2.6.1"
49
49
  },
50
50
  "devDependencies": {
51
- "@elice/material-shared-types": "1.231107.0-gstta.1",
52
- "@elice/material-shared-utils": "1.231107.0-gstta.1",
51
+ "@elice/material-shared-types": "1.231128.0",
52
+ "@elice/material-shared-utils": "1.231128.0",
53
53
  "@elice/mui-system": "^5.230815.0",
54
- "@elice/openapi-client-material-runbox": "^1.230814.0",
55
- "@elice/runbox-client": "^1.230817.0",
54
+ "@elice/openapi-client-material-runbox": "^1.231128.0",
55
+ "@elice/runbox-client": "^1.231103.0",
56
56
  "@emotion/react": "^11.10.5",
57
57
  "@emotion/styled": "^11.10.5",
58
58
  "@mui/icons-material": "^5.10.16",
@@ -67,5 +67,5 @@
67
67
  "react-intl": "^5.20.10",
68
68
  "react-use": "^17.2.4"
69
69
  },
70
- "gitHead": "b4e8b01e64df173df4537ec88119ef9c444f577f"
70
+ "gitHead": "68a4d618bdca740f867ecab4dce21ac207d2bbe0"
71
71
  }