|
|
(self["webpackChunk"] = self["webpackChunk"] || []).push([[93665],{
|
|
|
|
|
|
/***/ 35378:
|
|
|
/*!*************************************!*\
|
|
|
!*** ./src/pages/tasks/constant.js ***!
|
|
|
\*************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
|
/* harmony export */ $Y: function() { return /* binding */ SET_EDITOR_THEME; },
|
|
|
/* harmony export */ A0: function() { return /* binding */ HIDE_EVALUATE_LOADING; },
|
|
|
/* harmony export */ EP: function() { return /* binding */ HIDE_EVALUATE_RESULT; },
|
|
|
/* harmony export */ F_: function() { return /* binding */ MOVE_X; },
|
|
|
/* harmony export */ G9: function() { return /* binding */ UPDATE_TIMESTRAP; },
|
|
|
/* harmony export */ GB: function() { return /* binding */ FETCH_REP_CONTENT; },
|
|
|
/* harmony export */ GR: function() { return /* binding */ GET_DISCUSSES; },
|
|
|
/* harmony export */ GW: function() { return /* binding */ SET_SHOW_DIR; },
|
|
|
/* harmony export */ Hp: function() { return /* binding */ SHOW_TASK_LIST; },
|
|
|
/* harmony export */ Ir: function() { return /* binding */ FETCH_TASK_FAILURE; },
|
|
|
/* harmony export */ N$: function() { return /* binding */ EDIT_REP_CODE; },
|
|
|
/* harmony export */ NZ: function() { return /* binding */ HIDE_TIP_MODAL; },
|
|
|
/* harmony export */ Nv: function() { return /* binding */ HIDE_NOTICE; },
|
|
|
/* harmony export */ OA: function() { return /* binding */ HIDE_PICTURE_VIEW; },
|
|
|
/* harmony export */ OJ: function() { return /* binding */ SET_CHOOSE_ANSWERS; },
|
|
|
/* harmony export */ QF: function() { return /* binding */ ON_AUTO_FORMAT; },
|
|
|
/* harmony export */ RS: function() { return /* binding */ SHOW_REWARD_DIALOG; },
|
|
|
/* harmony export */ RY: function() { return /* binding */ SET_VNC_LOADING; },
|
|
|
/* harmony export */ Rj: function() { return /* binding */ SHOW_TIP_MODAL; },
|
|
|
/* harmony export */ SX: function() { return /* binding */ ACTIVE_DISCUSS_INDEX; },
|
|
|
/* harmony export */ Tp: function() { return /* binding */ SET_EDITOR_FONTSIZE; },
|
|
|
/* harmony export */ Ui: function() { return /* binding */ SHOW_EVALUATE_LOADING; },
|
|
|
/* harmony export */ V1: function() { return /* binding */ EVAL_CHOOSE_END; },
|
|
|
/* harmony export */ Vn: function() { return /* binding */ SET_REWARD; },
|
|
|
/* harmony export */ dL: function() { return /* binding */ SHOW_NOTICE; },
|
|
|
/* harmony export */ fo: function() { return /* binding */ DISABLE_DISCUSS; },
|
|
|
/* harmony export */ gK: function() { return /* binding */ TRIGGER_TAB_FIXED; },
|
|
|
/* harmony export */ hK: function() { return /* binding */ HIDE_TASK_LIST; },
|
|
|
/* harmony export */ i3: function() { return /* binding */ TRIGGER_RIGHT_PANEL_MASK; },
|
|
|
/* harmony export */ ib: function() { return /* binding */ SET_TASK_STAR; },
|
|
|
/* harmony export */ lS: function() { return /* binding */ TRIGGER_ENLARGE_UNITY3D; },
|
|
|
/* harmony export */ m5: function() { return /* binding */ SHOW_EVALUATE_RESULT; },
|
|
|
/* harmony export */ n4: function() { return /* binding */ FETCH_TASK_START; },
|
|
|
/* harmony export */ n_: function() { return /* binding */ SET_ACTIVE_INDEX; },
|
|
|
/* harmony export */ oP: function() { return /* binding */ SET_REPOS; },
|
|
|
/* harmony export */ p2: function() { return /* binding */ SET_EVALUATE_MESSAGE; },
|
|
|
/* harmony export */ pl: function() { return /* binding */ FETCH_ANSWER_INFO; },
|
|
|
/* harmony export */ rM: function() { return /* binding */ PLUS_DISCUSS; },
|
|
|
/* harmony export */ sM: function() { return /* binding */ GET_TASK_LIST; },
|
|
|
/* harmony export */ t2: function() { return /* binding */ CANCEL_REWARD_DIALOG; },
|
|
|
/* harmony export */ tD: function() { return /* binding */ SHOW_DISCUSSES_LOADING; },
|
|
|
/* harmony export */ u8: function() { return /* binding */ TOP_OR_DOWN_DISCUSS; },
|
|
|
/* harmony export */ um: function() { return /* binding */ ON_TAB_TO_SPACE; },
|
|
|
/* harmony export */ vm: function() { return /* binding */ SHOW_PICTURE_VIEW; },
|
|
|
/* harmony export */ wQ: function() { return /* binding */ MOVE_Y; },
|
|
|
/* harmony export */ wj: function() { return /* binding */ EVAL_CHOOSE_START; },
|
|
|
/* harmony export */ wt: function() { return /* binding */ SHOW_ANSWER_LOADING; },
|
|
|
/* harmony export */ yS: function() { return /* binding */ SET_ACTION_TYPE; },
|
|
|
/* harmony export */ yi: function() { return /* binding */ FETCH_TASK_SUCCESS; },
|
|
|
/* harmony export */ ym: function() { return /* binding */ SELECT_UNLOCK_ANSWER; },
|
|
|
/* harmony export */ z2: function() { return /* binding */ UPDATE_TASK_DATA; }
|
|
|
/* harmony export */ });
|
|
|
/* unused harmony exports CREATE_DISCUSS, SHOW_REP_LOADING, SET_REP_PATH, SET_EDITOR_SETTING, SHOW_PATH_LIST, HIDE_PATH_LIST, SET_TAB_INDEX, SET_SSH_TABS, SET_SSH_CONFIGDATA, SET_SSH_CONFIGDATAARR */
|
|
|
var FETCH_TASK_START = 'FETCH_TASK_START';
|
|
|
var FETCH_TASK_FAILURE = 'FETCH_TASK_FAILURE';
|
|
|
var FETCH_TASK_SUCCESS = 'FETCH_TASK_SUCCESS';
|
|
|
var UPDATE_TASK_DATA = 'UPDATE_TASK_DATA';
|
|
|
var HIDE_EVALUATE_RESULT = 'HIDE_EVALUATE_RESULT';
|
|
|
var SHOW_EVALUATE_RESULT = 'SHOW_EVALUATE_RESULT';
|
|
|
var UPDATE_TIMESTRAP = 'UPDATE_TIMESTRAP';
|
|
|
var MOVE_X = 'MOVE_X';
|
|
|
var MOVE_Y = 'MOVE_Y';
|
|
|
var TRIGGER_RIGHT_PANEL_MASK = 'TRIGGER_RIGHT_PANEL_MASK ';
|
|
|
|
|
|
//left_panel_action
|
|
|
var SET_ACTIVE_INDEX = 'SET_ACTIVE_INDEX';
|
|
|
var GET_TASK_LIST = 'GET_TASK_LIST';
|
|
|
var SHOW_TASK_LIST = 'SHOW_TASK_LIST';
|
|
|
var HIDE_TASK_LIST = 'HIDE_TASK_LIST';
|
|
|
var SET_TASK_STAR = 'SET_TASK_STAR';
|
|
|
var TRIGGER_ENLARGE_UNITY3D = 'TRIGGER_ENLARGE_UNITY3D ';
|
|
|
var TRIGGER_TAB_FIXED = 'TRIGGER_TAB_FIXED ';
|
|
|
|
|
|
//discuss action
|
|
|
var GET_DISCUSSES = 'GET_DISCUSSES';
|
|
|
var SHOW_DISCUSSES_LOADING = 'SHOW_DISCUSSES_LOADING';
|
|
|
var TOP_OR_DOWN_DISCUSS = 'TOP_OR_DOWN_DISCUSS';
|
|
|
var PLUS_DISCUSS = 'PLUS_DISCUSS';
|
|
|
var SET_ACTION_TYPE = 'SET_ACTION_TYPE';
|
|
|
var SHOW_REWARD_DIALOG = 'SHOW_REWARD_DIALOG';
|
|
|
var CANCEL_REWARD_DIALOG = 'CANCEL_REWARD_DIALOG';
|
|
|
var SET_REWARD = 'SET_REWARD';
|
|
|
var ACTIVE_DISCUSS_INDEX = 'ACTIVE_DISCUSS_INDEX';
|
|
|
var CREATE_DISCUSS = 'CREATE_DISCUSS';
|
|
|
var DISABLE_DISCUSS = 'DISABLE_DISCUSS';
|
|
|
|
|
|
//answer_panel_action
|
|
|
var SHOW_ANSWER_LOADING = 'SHOW_ANSWER_LOADING';
|
|
|
var FETCH_ANSWER_INFO = 'FETCH_ANSWER_INFO';
|
|
|
var HIDE_TIP_MODAL = 'HIGH_TIP_MODAL';
|
|
|
var SHOW_TIP_MODAL = 'SHOW_TIP_MODAL';
|
|
|
var SELECT_UNLOCK_ANSWER = 'SELECT_UNLOCK_ANSWER';
|
|
|
|
|
|
//choose_repository_action
|
|
|
var SET_CHOOSE_ANSWERS = 'SET_CHOOSE_ANSWERS';
|
|
|
var EVAL_CHOOSE_START = 'EVAL_CHOOSE_START';
|
|
|
var EVAL_CHOOSE_END = 'EVAL_CHOOSE_END';
|
|
|
|
|
|
//code_repository_action
|
|
|
var SHOW_REP_LOADING = 'SHOW_REP_loading';
|
|
|
var FETCH_REP_CONTENT = 'FETCH_REP_CONTENT';
|
|
|
var EDIT_REP_CODE = 'EDIT_REP_CONTENT';
|
|
|
var SET_REP_PATH = 'SET_REP_PATH';
|
|
|
var SHOW_EVALUATE_LOADING = 'SHOW_EVALUATE_LOADING';
|
|
|
var HIDE_EVALUATE_LOADING = 'HIDE_EVALUATE_LOADING';
|
|
|
var SET_EVALUATE_MESSAGE = 'SET_EVALUATE_MESSAGE';
|
|
|
var SET_SHOW_DIR = 'SET_SHOW_DIR';
|
|
|
var SET_EDITOR_SETTING = 'SET_EDITOR_SETTING';
|
|
|
var SET_EDITOR_THEME = 'SET_EDITOR_THEME';
|
|
|
var SET_EDITOR_FONTSIZE = 'SET_EDITOR_FONTSIZE';
|
|
|
var SET_REPOS = 'SET_REPOS';
|
|
|
var SHOW_PATH_LIST = 'SHOW_PATH_LIST';
|
|
|
var HIDE_PATH_LIST = 'HIDE_PATH_LIST';
|
|
|
var HIDE_PICTURE_VIEW = 'HIDE_PICTURE_VIEW';
|
|
|
var SHOW_PICTURE_VIEW = 'SHOW_PICTURE_VIEW';
|
|
|
var SHOW_NOTICE = 'SHOW_NOTICE';
|
|
|
var HIDE_NOTICE = 'HIDE_NOTICE';
|
|
|
var SET_TAB_INDEX = 'SET_TAB_INDEX';
|
|
|
var SET_SSH_TABS = 'SET_SSH_TABS';
|
|
|
var SET_SSH_CONFIGDATA = 'SET_SSH_CONFIGDATA';
|
|
|
var SET_SSH_CONFIGDATAARR = 'SET_SSH_CONFIGDATAARR';
|
|
|
var SET_VNC_LOADING = 'SET_VNC_LOADING ';
|
|
|
var ON_TAB_TO_SPACE = 'ON_TAB_TO_SPACE ';
|
|
|
var ON_AUTO_FORMAT = 'ON_AUTO_FORMAT ';
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 67315:
|
|
|
/*!*******************************************************!*\
|
|
|
!*** ./src/pages/tasks/left-panel/discuss/service.js ***!
|
|
|
\*******************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
|
/* harmony export */ KQ: function() { return /* binding */ submitDiscusses; },
|
|
|
/* harmony export */ KY: function() { return /* binding */ deleteDiscuss; },
|
|
|
/* harmony export */ OY: function() { return /* binding */ hiddenDiscuss; },
|
|
|
/* harmony export */ S8: function() { return /* binding */ rewardDiscuss; },
|
|
|
/* harmony export */ U_: function() { return /* binding */ aiReply; },
|
|
|
/* harmony export */ _Z: function() { return /* binding */ disableDiscuss; },
|
|
|
/* harmony export */ ae: function() { return /* binding */ plusDiscuss; },
|
|
|
/* harmony export */ o7: function() { return /* binding */ fetchDiscusses; },
|
|
|
/* harmony export */ rd: function() { return /* binding */ createDiscuss; },
|
|
|
/* harmony export */ wJ: function() { return /* binding */ topOrDownDiscuss; },
|
|
|
/* harmony export */ wg: function() { return /* binding */ replyDiscuss; }
|
|
|
/* harmony export */ });
|
|
|
/* harmony import */ var _utils_fetch__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/utils/fetch */ 78092);
|
|
|
|
|
|
|
|
|
function fetchDiscusses(shixunIdentifier) {
|
|
|
var page = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
|
|
|
return (0,_utils_fetch__WEBPACK_IMPORTED_MODULE_0__/* .get */ .U2)("/discusses.json", {
|
|
|
container_type: "Shixun",
|
|
|
container_identifier: shixunIdentifier,
|
|
|
page: page - 1
|
|
|
});
|
|
|
}
|
|
|
function topOrDownDiscuss(id, top) {
|
|
|
return (0,_utils_fetch__WEBPACK_IMPORTED_MODULE_0__/* .post */ .v_)("/discusses/".concat(id, "/top_or_down_discuss.json"), {
|
|
|
top: top
|
|
|
});
|
|
|
}
|
|
|
function disableDiscuss(id, is_disable) {
|
|
|
return (0,_utils_fetch__WEBPACK_IMPORTED_MODULE_0__/* .post */ .v_)("/discusses/".concat(id, "/disable_or_open_discuss.json"), {
|
|
|
is_disable: !!is_disable
|
|
|
});
|
|
|
}
|
|
|
function plusDiscuss(id, user_praise) {
|
|
|
return (0,_utils_fetch__WEBPACK_IMPORTED_MODULE_0__/* .post */ .v_)("/discusses/".concat(id, "/plus.json"), {
|
|
|
container_type: 'Discuss',
|
|
|
type: user_praise ? 1 : 0
|
|
|
});
|
|
|
}
|
|
|
function hiddenDiscuss(id, params) {
|
|
|
return (0,_utils_fetch__WEBPACK_IMPORTED_MODULE_0__/* .post */ .v_)("/discusses/".concat(id, "/hidden.json"), params);
|
|
|
}
|
|
|
function rewardDiscuss(id, params) {
|
|
|
return (0,_utils_fetch__WEBPACK_IMPORTED_MODULE_0__/* .post */ .v_)("/discusses/".concat(id, "/reward_code.json"), params);
|
|
|
}
|
|
|
function deleteDiscuss(id) {
|
|
|
return (0,_utils_fetch__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .ZP)("/api/discusses/".concat(id, ".json"), {
|
|
|
method: 'delete'
|
|
|
});
|
|
|
}
|
|
|
function replyDiscuss(id, content) {
|
|
|
return (0,_utils_fetch__WEBPACK_IMPORTED_MODULE_0__/* .post */ .v_)("/discusses/".concat(id, "/reply.json"), {
|
|
|
container_type: 'Shixun',
|
|
|
content: content
|
|
|
});
|
|
|
}
|
|
|
function createDiscuss(params) {
|
|
|
return (0,_utils_fetch__WEBPACK_IMPORTED_MODULE_0__/* .post */ .v_)("/discusses.json", params);
|
|
|
}
|
|
|
function aiReply(params) {
|
|
|
return (0,_utils_fetch__WEBPACK_IMPORTED_MODULE_0__/* .post */ .v_)("/discusses/ai_reply.json", params);
|
|
|
}
|
|
|
function submitDiscusses(id, content) {
|
|
|
return (0,_utils_fetch__WEBPACK_IMPORTED_MODULE_0__/* .post */ .v_)("/discusses/".concat(id, "/turing.json"), content);
|
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 77890:
|
|
|
/*!*********************************!*\
|
|
|
!*** ./src/pages/tasks/util.js ***!
|
|
|
\*********************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
|
/* harmony export */ Ax: function() { return /* binding */ processTreeData; },
|
|
|
/* harmony export */ Ds: function() { return /* binding */ debounce; },
|
|
|
/* harmony export */ KI: function() { return /* binding */ apiPref; },
|
|
|
/* harmony export */ SI: function() { return /* binding */ getTreeData; },
|
|
|
/* harmony export */ f1: function() { return /* binding */ isCompileOk; }
|
|
|
/* harmony export */ });
|
|
|
/* unused harmony export isProd */
|
|
|
/* harmony import */ var _utils_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/utils/env */ 80548);
|
|
|
|
|
|
function isCompileOk(rs) {
|
|
|
var flag = true;
|
|
|
if (rs.length > 0) {
|
|
|
for (var i = 0; i < rs.length; i++) {
|
|
|
if (rs[i].compile_success == 0 || !rs[i].compile_success) {
|
|
|
flag = false;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
flag = false;
|
|
|
}
|
|
|
return flag;
|
|
|
}
|
|
|
function getTreeData(data) {
|
|
|
var parentKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
|
|
var result = [];
|
|
|
for (var i = 0; i < data.length; i++) {
|
|
|
var item = data[i];
|
|
|
var key = parentKey ? "".concat(parentKey, "/").concat(item.name) : "".concat(item.name);
|
|
|
result.push({
|
|
|
title: item.name,
|
|
|
isLeaf: item.type === 'tree' ? false : true,
|
|
|
key: key
|
|
|
});
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
function processTreeData(repos, key, newData) {
|
|
|
for (var i = 0; i < repos.length; i++) {
|
|
|
var item = repos[i];
|
|
|
if (item.key === key) {
|
|
|
item.children = newData;
|
|
|
break;
|
|
|
}
|
|
|
if (item.children) {
|
|
|
processTreeData(item.children, key, newData);
|
|
|
}
|
|
|
}
|
|
|
return repos;
|
|
|
}
|
|
|
function debounce(func, wait, immediate) {
|
|
|
var timeout;
|
|
|
return function () {
|
|
|
var context = this,
|
|
|
args = arguments;
|
|
|
var later = function later() {
|
|
|
timeout = null;
|
|
|
if (!immediate) func.apply(context, args);
|
|
|
};
|
|
|
var callNow = immediate && !timeout;
|
|
|
clearTimeout(timeout);
|
|
|
timeout = setTimeout(later, wait);
|
|
|
if (callNow) func.apply(context, args);
|
|
|
};
|
|
|
}
|
|
|
var isProd = true;
|
|
|
var apiPref = _utils_env__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z.API_SERVER;
|
|
|
// export const isProd =
|
|
|
// window.location.href.indexOf('test-') > 0 ||
|
|
|
// window.location.href.indexOf('localhost') > 0
|
|
|
// ? false
|
|
|
// : true;
|
|
|
|
|
|
// export const apiPref = isProd
|
|
|
// ? 'https://www.educoder.net'
|
|
|
// : 'https://test-newweb.educoder.net';
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 78694:
|
|
|
/*!****************************************!*\
|
|
|
!*** ./src/components/Hooks/index.tsx ***!
|
|
|
\****************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
|
/* harmony export */ y: function() { return /* binding */ useDisableAction; }
|
|
|
/* harmony export */ });
|
|
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 59301);
|
|
|
|
|
|
var useDisableAction = function useDisableAction(disable) {
|
|
|
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
|
|
|
if (disable) {
|
|
|
var handleKeyDown = function handleKeyDown(event) {
|
|
|
if (event.key === "F12") {
|
|
|
event.preventDefault();
|
|
|
// 执行你的自定义行为
|
|
|
console.log('F12被禁用');
|
|
|
}
|
|
|
};
|
|
|
var handleContextmenu = function handleContextmenu(event) {
|
|
|
event.preventDefault();
|
|
|
};
|
|
|
document.addEventListener("keydown", handleKeyDown);
|
|
|
document.addEventListener("contextmenu", handleContextmenu);
|
|
|
return function () {
|
|
|
document.removeEventListener("keydown", handleKeyDown);
|
|
|
document.removeEventListener("contextmenu", handleContextmenu);
|
|
|
};
|
|
|
}
|
|
|
}, [disable]);
|
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 52557:
|
|
|
/*!************************************************************!*\
|
|
|
!*** ./src/components/image-preview/index.tsx + 1 modules ***!
|
|
|
\************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
Z: function() { return /* binding */ image_preview; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/slicedToArray.js
|
|
|
var slicedToArray = __webpack_require__(79800);
|
|
|
var slicedToArray_default = /*#__PURE__*/__webpack_require__.n(slicedToArray);
|
|
|
// EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/index.js
|
|
|
var _react_17_0_2_react = __webpack_require__(59301);
|
|
|
;// CONCATENATED MODULE: ./src/components/image-preview/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
// EXTERNAL MODULE: ./src/components/mediator.js
|
|
|
var mediator = __webpack_require__(74692);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/button/index.js
|
|
|
var es_button = __webpack_require__(3113);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@ant-design_icons@5.2.6@@ant-design/icons/es/icons/ReloadOutlined.js + 1 modules
|
|
|
var ReloadOutlined = __webpack_require__(91671);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@ant-design_icons@5.2.6@@ant-design/icons/es/icons/DownloadOutlined.js + 1 modules
|
|
|
var DownloadOutlined = __webpack_require__(66549);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@ant-design_icons@5.2.6@@ant-design/icons/es/icons/CloseOutlined.js + 1 modules
|
|
|
var CloseOutlined = __webpack_require__(99174);
|
|
|
// EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/jsx-runtime.js
|
|
|
var jsx_runtime = __webpack_require__(37712);
|
|
|
;// CONCATENATED MODULE: ./src/components/image-preview/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var image_preview = (function () {
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(''),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
url = _useState2[0],
|
|
|
setUrl = _useState2[1];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)(0),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
deg = _useState4[0],
|
|
|
setDeg = _useState4[1];
|
|
|
var saveUrl = (0,_react_17_0_2_react.useRef)('');
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
var unSub = mediator/* default */.Z.subscribe('preview-image', function (value) {
|
|
|
setUrl(value);
|
|
|
// window.document.body
|
|
|
// document.body.style.height='100%'
|
|
|
document.body.style.overflow = 'hidden';
|
|
|
});
|
|
|
return unSub;
|
|
|
}, []);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
document.addEventListener('keydown', onViewEscClose);
|
|
|
return function () {
|
|
|
document.removeEventListener('keydown', onViewEscClose);
|
|
|
};
|
|
|
}, []);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
saveUrl.current = url;
|
|
|
}, [url]);
|
|
|
function onViewEscClose(e) {
|
|
|
if (e.keyCode == 27 && saveUrl.current) {
|
|
|
onClose();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// https://data.educoder.net/api/attachments/1571649
|
|
|
function onClose() {
|
|
|
// document.body.style.height='100%'
|
|
|
document.body.style.overflow = 'auto';
|
|
|
setUrl('');
|
|
|
}
|
|
|
function onRotate() {
|
|
|
setDeg(deg + 90);
|
|
|
}
|
|
|
var maskRef = (0,_react_17_0_2_react.useRef)();
|
|
|
var previewWrapperRef = (0,_react_17_0_2_react.useRef)();
|
|
|
var handleMaskClick = function handleMaskClick(e) {
|
|
|
if (e.nativeEvent.target === maskRef.current || e.nativeEvent.target === previewWrapperRef.current) {
|
|
|
onClose();
|
|
|
}
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(_react_17_0_2_react.Fragment, {
|
|
|
children: !url ? null : /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "image-preview-container",
|
|
|
ref: maskRef,
|
|
|
onClick: handleMaskClick,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "button-group",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)(es_button/* default */.ZP, {
|
|
|
onClick: onRotate,
|
|
|
children: ["\u65CB\u8F6C", /*#__PURE__*/(0,jsx_runtime.jsx)(ReloadOutlined/* default */.Z, {})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(es_button/* default */.ZP, {
|
|
|
href: url,
|
|
|
children: ["\u4E0B\u8F7D", /*#__PURE__*/(0,jsx_runtime.jsx)(DownloadOutlined/* default */.Z, {})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(es_button/* default */.ZP, {
|
|
|
onClick: onClose,
|
|
|
children: ["\u5173\u95ED", /*#__PURE__*/(0,jsx_runtime.jsx)(CloseOutlined/* default */.Z, {})]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "preview-wrp-group",
|
|
|
ref: previewWrapperRef,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
className: "image-preview",
|
|
|
src: url,
|
|
|
alt: "\u9884\u89C8\u5927\u56FE",
|
|
|
style: {
|
|
|
transform: "rotate(".concat(deg, "deg)")
|
|
|
}
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
});
|
|
|
});
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 57606:
|
|
|
/*!*************************************************************!*\
|
|
|
!*** ./src/components/markdown-editor/code-block/index.tsx ***!
|
|
|
\*************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
|
/* harmony export */ h: function() { return /* binding */ MyCodeMirror; }
|
|
|
/* harmony export */ });
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_local_v9_test4_node_modules_babel_runtime_7_23_6_babel_runtime_helpers_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/objectSpread2.js */ 82242);
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_local_v9_test4_node_modules_babel_runtime_7_23_6_babel_runtime_helpers_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_root_workspace_ppte5yg23_local_v9_test4_node_modules_babel_runtime_7_23_6_babel_runtime_helpers_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_local_v9_test4_node_modules_babel_runtime_7_23_6_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/slicedToArray.js */ 79800);
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_local_v9_test4_node_modules_babel_runtime_7_23_6_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_root_workspace_ppte5yg23_local_v9_test4_node_modules_babel_runtime_7_23_6_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ 59301);
|
|
|
/* harmony import */ var antd__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! antd */ 57809);
|
|
|
/* harmony import */ var antd__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! antd */ 78241);
|
|
|
/* harmony import */ var antd__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! antd */ 3113);
|
|
|
/* harmony import */ var codemirror__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! codemirror */ 89780);
|
|
|
/* harmony import */ var codemirror__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(codemirror__WEBPACK_IMPORTED_MODULE_3__);
|
|
|
/* harmony import */ var codemirror_lib_codemirror_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! codemirror/lib/codemirror.css */ 4637);
|
|
|
/* harmony import */ var codemirror_theme_blackboard_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! codemirror/theme/blackboard.css */ 71270);
|
|
|
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-runtime */ 37712);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var Option = antd__WEBPACK_IMPORTED_MODULE_7__["default"].Option;
|
|
|
|
|
|
//https://github.com/codemirror/CodeMirror/issues/4838
|
|
|
var formItemLayout = {
|
|
|
labelCol: {
|
|
|
span: 4
|
|
|
},
|
|
|
wrapperCol: {
|
|
|
span: 20
|
|
|
}
|
|
|
};
|
|
|
var LanguageDesc = {
|
|
|
asp: ['ASP', 'vbscript'],
|
|
|
actionscript: ['ActionScript(3.0)/Flash/Flex', 'clike'],
|
|
|
bash: ['Bash/Bat', 'shell'],
|
|
|
css: ['CSS', 'css'],
|
|
|
c: ['C', 'clike'],
|
|
|
cpp: ['C++', 'clike'],
|
|
|
csharp: ['C#', 'clike'],
|
|
|
coffeescript: ['CoffeeScript', 'coffeescript'],
|
|
|
d: ['D', 'd'],
|
|
|
dart: ['Dart', 'dart'],
|
|
|
delphi: ['Delphi/Pascal', 'pascal'],
|
|
|
erlang: ['Erlang', 'erlang'],
|
|
|
go: ['Golang', 'go'],
|
|
|
groovy: ['Groovy', 'groovy'],
|
|
|
html: ['HTML', 'text/html'],
|
|
|
java: ['Java', 'clike'],
|
|
|
json: ['JSON', 'text/json'],
|
|
|
javascript: ['Javascript', 'javascript'],
|
|
|
lua: ['Lua', 'lua'],
|
|
|
less: ['LESS', 'css'],
|
|
|
markdown: ['Markdown', 'gfm'],
|
|
|
'objective-c': ['Objective-C', 'clike'],
|
|
|
php: ['PHP', 'php'],
|
|
|
perl: ['Perl', 'perl'],
|
|
|
python: ['Python', 'python'],
|
|
|
r: ['R', 'r'],
|
|
|
rst: ['reStructedText', 'rst'],
|
|
|
ruby: ['Ruby', 'ruby'],
|
|
|
sql: ['SQL', 'sql'],
|
|
|
sass: ['SASS/SCSS', 'sass'],
|
|
|
shell: ['Shell', 'shell'],
|
|
|
scala: ['Scala', 'clike'],
|
|
|
swift: ['Swift', 'clike'],
|
|
|
vb: ['VB/VBScript', 'vb'],
|
|
|
xml: ['XML', 'text/xml'],
|
|
|
yaml: ['YAML', 'yaml']
|
|
|
};
|
|
|
/* harmony default export */ __webpack_exports__.Z = (function (_ref) {
|
|
|
var callback = _ref.callback,
|
|
|
onCancel = _ref.onCancel;
|
|
|
var _useState = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)('python'),
|
|
|
_useState2 = _root_workspace_ppte5yg23_local_v9_test4_node_modules_babel_runtime_7_23_6_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_1___default()(_useState, 2),
|
|
|
mode = _useState2[0],
|
|
|
setMode = _useState2[1];
|
|
|
function onSetMode(value) {
|
|
|
setMode(LanguageDesc[value][1]);
|
|
|
}
|
|
|
function onSubmit(values) {
|
|
|
callback(values);
|
|
|
}
|
|
|
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(antd__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .Z, _root_workspace_ppte5yg23_local_v9_test4_node_modules_babel_runtime_7_23_6_babel_runtime_helpers_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0___default()(_root_workspace_ppte5yg23_local_v9_test4_node_modules_babel_runtime_7_23_6_babel_runtime_helpers_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0___default()({}, formItemLayout), {}, {
|
|
|
className: "code-block-panel",
|
|
|
initialValues: {
|
|
|
language: 'python',
|
|
|
content: ''
|
|
|
},
|
|
|
onFinish: onSubmit,
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(antd__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .Z.Item, {
|
|
|
label: "\u4EE3\u7801\u8BED\u8A00",
|
|
|
name: "language",
|
|
|
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(antd__WEBPACK_IMPORTED_MODULE_7__["default"], {
|
|
|
getPopupContainer: function getPopupContainer(trigger) {
|
|
|
return trigger.parentNode;
|
|
|
},
|
|
|
onChange: onSetMode,
|
|
|
children: Object.keys(LanguageDesc).map(function (item) {
|
|
|
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(Option, {
|
|
|
value: item,
|
|
|
children: LanguageDesc[item][0]
|
|
|
}, item);
|
|
|
})
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(antd__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .Z.Item, {
|
|
|
label: "\u4EE3\u7801\u5185\u5BB9",
|
|
|
name: "content",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入代码内容'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(MyCodeMirror, {
|
|
|
mode: mode
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)("div", {
|
|
|
className: "flex-container flex-end",
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(antd__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .ZP, {
|
|
|
type: "primary",
|
|
|
htmlType: "submit",
|
|
|
style: {
|
|
|
marginRight: 10
|
|
|
},
|
|
|
children: "\u786E\u5B9A"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(antd__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .ZP, {
|
|
|
type: "ghost",
|
|
|
onClick: onCancel,
|
|
|
children: "\u53D6\u6D88"
|
|
|
})]
|
|
|
})]
|
|
|
}));
|
|
|
});
|
|
|
function MyCodeMirror(_ref2) {
|
|
|
var value = _ref2.value,
|
|
|
onChange = _ref2.onChange,
|
|
|
mode = _ref2.mode,
|
|
|
_ref2$options = _ref2.options,
|
|
|
options = _ref2$options === void 0 ? {} : _ref2$options;
|
|
|
var el = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)();
|
|
|
var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(),
|
|
|
_useState4 = _root_workspace_ppte5yg23_local_v9_test4_node_modules_babel_runtime_7_23_6_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_1___default()(_useState3, 2),
|
|
|
cm = _useState4[0],
|
|
|
setCm = _useState4[1];
|
|
|
(0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () {
|
|
|
if (cm) {
|
|
|
var onChangeHandler = function onChangeHandler(cm) {
|
|
|
var content = cm.getValue();
|
|
|
onChange && onChange(content);
|
|
|
};
|
|
|
cm.on('change', onChangeHandler);
|
|
|
return function () {
|
|
|
cm.off('change', onChangeHandler);
|
|
|
};
|
|
|
}
|
|
|
}, [cm, onChange]);
|
|
|
(0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () {
|
|
|
if (cm) {
|
|
|
cm.setOption('mode', mode);
|
|
|
}
|
|
|
}, [cm, mode]);
|
|
|
(0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () {
|
|
|
if (cm) {
|
|
|
if (value !== cm.getValue() || value === '') {
|
|
|
setTimeout(function () {
|
|
|
cm.setValue(value || '');
|
|
|
}, 300);
|
|
|
}
|
|
|
}
|
|
|
}, [cm, value]);
|
|
|
(0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () {
|
|
|
if (el.current && !cm) {
|
|
|
var instance = codemirror__WEBPACK_IMPORTED_MODULE_3___default().fromTextArea(el.current, _root_workspace_ppte5yg23_local_v9_test4_node_modules_babel_runtime_7_23_6_babel_runtime_helpers_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0___default()({
|
|
|
mode: mode,
|
|
|
lineNumbers: true,
|
|
|
lineWrapping: true,
|
|
|
autoCloseBrackets: true,
|
|
|
tabSize: 4,
|
|
|
autofocus: true,
|
|
|
autoCloseTags: true,
|
|
|
matchBrackets: true,
|
|
|
styleActiveLine: true
|
|
|
}, options));
|
|
|
setCm(instance);
|
|
|
}
|
|
|
}, [el.current, cm]);
|
|
|
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)("div", {
|
|
|
className: "my-codemirror-container",
|
|
|
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)("textarea", {
|
|
|
ref: el
|
|
|
})
|
|
|
});
|
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 97526:
|
|
|
/*!***************************************************************!*\
|
|
|
!*** ./src/components/markdown-editor/index.tsx + 10 modules ***!
|
|
|
\***************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
Z: function() { return /* binding */ markdown_editor; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/createForOfIteratorHelper.js
|
|
|
var createForOfIteratorHelper = __webpack_require__(91232);
|
|
|
var createForOfIteratorHelper_default = /*#__PURE__*/__webpack_require__.n(createForOfIteratorHelper);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/regeneratorRuntime.js
|
|
|
var regeneratorRuntime = __webpack_require__(7557);
|
|
|
var regeneratorRuntime_default = /*#__PURE__*/__webpack_require__.n(regeneratorRuntime);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/asyncToGenerator.js
|
|
|
var asyncToGenerator = __webpack_require__(41498);
|
|
|
var asyncToGenerator_default = /*#__PURE__*/__webpack_require__.n(asyncToGenerator);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/slicedToArray.js
|
|
|
var slicedToArray = __webpack_require__(79800);
|
|
|
var slicedToArray_default = /*#__PURE__*/__webpack_require__.n(slicedToArray);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/defineProperty.js
|
|
|
var defineProperty = __webpack_require__(85573);
|
|
|
var defineProperty_default = /*#__PURE__*/__webpack_require__.n(defineProperty);
|
|
|
// EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/index.js
|
|
|
var _react_17_0_2_react = __webpack_require__(59301);
|
|
|
// EXTERNAL MODULE: ./node_modules/_codemirror@5.58.2@codemirror/lib/codemirror.js
|
|
|
var codemirror = __webpack_require__(89780);
|
|
|
var codemirror_default = /*#__PURE__*/__webpack_require__.n(codemirror);
|
|
|
// EXTERNAL MODULE: ./node_modules/_resize-observer-polyfill@1.5.1@resize-observer-polyfill/dist/ResizeObserver.es.js
|
|
|
var ResizeObserver_es = __webpack_require__(76374);
|
|
|
// EXTERNAL MODULE: ./node_modules/_codemirror@5.58.2@codemirror/lib/codemirror.css
|
|
|
var lib_codemirror = __webpack_require__(4637);
|
|
|
// EXTERNAL MODULE: ./node_modules/_codemirror@5.58.2@codemirror/addon/edit/closetag.js
|
|
|
var closetag = __webpack_require__(6313);
|
|
|
// EXTERNAL MODULE: ./node_modules/_codemirror@5.58.2@codemirror/addon/edit/closebrackets.js
|
|
|
var closebrackets = __webpack_require__(25717);
|
|
|
// EXTERNAL MODULE: ./node_modules/_codemirror@5.58.2@codemirror/addon/display/placeholder.js
|
|
|
var placeholder = __webpack_require__(99498);
|
|
|
// EXTERNAL MODULE: ./node_modules/_codemirror@5.58.2@codemirror/mode/markdown/markdown.js
|
|
|
var markdown = __webpack_require__(25419);
|
|
|
// EXTERNAL MODULE: ./node_modules/_codemirror@5.58.2@codemirror/mode/stex/stex.js
|
|
|
var stex = __webpack_require__(67549);
|
|
|
;// CONCATENATED MODULE: ./src/components/markdown-editor/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
// EXTERNAL MODULE: ./src/components/RenderHtml/index.tsx + 1 modules
|
|
|
var RenderHtml = __webpack_require__(41977);
|
|
|
// EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/jsx-runtime.js
|
|
|
var jsx_runtime = __webpack_require__(37712);
|
|
|
;// CONCATENATED MODULE: ./src/components/RenderHtml/stex.tsx
|
|
|
|
|
|
// const latexjs = require('latex-l.js/dist/latex.js');
|
|
|
// import "latex-l.js/dist/css/base.css"
|
|
|
|
|
|
|
|
|
/* harmony default export */ var RenderHtml_stex = (function (_ref) {
|
|
|
var _ref$value = _ref.value,
|
|
|
value = _ref$value === void 0 ? '' : _ref$value,
|
|
|
className = _ref.className,
|
|
|
showTextOnly = _ref.showTextOnly,
|
|
|
showLines = _ref.showLines,
|
|
|
_ref$style = _ref.style,
|
|
|
style = _ref$style === void 0 ? {} : _ref$style;
|
|
|
var html = (0,_react_17_0_2_react.useMemo)(function () {
|
|
|
// try {
|
|
|
// const latex = value || 'This is some text';
|
|
|
// let generator = new latexjs.default.HtmlGenerator({ hyphenate: true })
|
|
|
// let doc = latexjs.default.parse(latex, { generator: generator }).htmlDocument()
|
|
|
// return doc.body.innerHTML
|
|
|
// }catch(e){
|
|
|
// console.log("e:",e)
|
|
|
// return "错误的latex语法,请检查"
|
|
|
// }
|
|
|
return "";
|
|
|
}, [value]);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(jsx_runtime.Fragment, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
dangerouslySetInnerHTML: {
|
|
|
__html: html
|
|
|
}
|
|
|
})
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/objectSpread2.js
|
|
|
var objectSpread2 = __webpack_require__(82242);
|
|
|
var objectSpread2_default = /*#__PURE__*/__webpack_require__.n(objectSpread2);
|
|
|
;// CONCATENATED MODULE: ./src/components/markdown-editor/toolbar/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
;// CONCATENATED MODULE: ./src/components/markdown-editor/css/iconfont.css
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
;// CONCATENATED MODULE: ./src/components/markdown-editor/toolbar/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var DEFAULTICONS = [{
|
|
|
title: '粗体',
|
|
|
icon: 'icon-bold',
|
|
|
actionName: 'bold'
|
|
|
}, {
|
|
|
title: '斜体',
|
|
|
icon: 'icon-italic',
|
|
|
actionName: 'italic'
|
|
|
}, '|', {
|
|
|
title: '无序列表',
|
|
|
icon: 'icon-unorder-list',
|
|
|
actionName: 'list-ul'
|
|
|
}, {
|
|
|
title: '有序列表',
|
|
|
icon: 'icon-order-list',
|
|
|
actionName: 'list-ol'
|
|
|
}, '|', {
|
|
|
title: '行内代码',
|
|
|
icon: 'icon-code',
|
|
|
actionName: 'code'
|
|
|
}, {
|
|
|
title: '代码块(多语言风格)',
|
|
|
icon: 'icon-file-code',
|
|
|
actionName: 'code-block'
|
|
|
}, {
|
|
|
title: '链接',
|
|
|
icon: 'icon-link',
|
|
|
actionName: 'link'
|
|
|
}, '|', {
|
|
|
title: '行内公式',
|
|
|
icon: 'icon-sum',
|
|
|
actionName: 'inline-latex'
|
|
|
}, {
|
|
|
title: '多行公式',
|
|
|
icon: 'icon-formula',
|
|
|
actionName: 'latex'
|
|
|
}, '|', {
|
|
|
title: '添加图片',
|
|
|
icon: 'icon-picture',
|
|
|
actionName: 'upload-image'
|
|
|
}, {
|
|
|
title: '表格',
|
|
|
icon: 'icon-table',
|
|
|
actionName: 'add-table'
|
|
|
}, '|', {
|
|
|
title: '换行',
|
|
|
icon: 'icon-minus',
|
|
|
actionName: 'line-break'
|
|
|
}, {
|
|
|
title: '清空',
|
|
|
icon: 'icon-eraser',
|
|
|
actionName: 'eraser'
|
|
|
}];
|
|
|
function AButton(_ref) {
|
|
|
var onActionCallback = _ref.onActionCallback,
|
|
|
title = _ref.title,
|
|
|
icon = _ref.icon,
|
|
|
actionName = _ref.actionName,
|
|
|
_ref$className = _ref.className,
|
|
|
className = _ref$className === void 0 ? '' : _ref$className,
|
|
|
children = _ref.children;
|
|
|
function onAction() {
|
|
|
onActionCallback(actionName);
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
title: title,
|
|
|
className: className,
|
|
|
onClick: onAction,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "md-iconfont ".concat(icon)
|
|
|
}), children]
|
|
|
});
|
|
|
}
|
|
|
/* harmony default export */ var toolbar = (function (_ref2) {
|
|
|
var watch = _ref2.watch,
|
|
|
showNullButton = _ref2.showNullButton,
|
|
|
showNullProgramButton = _ref2.showNullProgramButton,
|
|
|
onActionCallback = _ref2.onActionCallback,
|
|
|
fullScreen = _ref2.fullScreen,
|
|
|
insertTemp = _ref2.insertTemp,
|
|
|
hidetoolBar = _ref2.hidetoolBar;
|
|
|
var icons = [].concat(DEFAULTICONS, [{
|
|
|
title: "".concat(watch ? '关闭实时预览' : '开启实时预览'),
|
|
|
icon: "".concat(watch ? 'icon-eye-slash' : 'icon-eye'),
|
|
|
actionName: 'trigger-watch'
|
|
|
}]);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("ul", {
|
|
|
className: "markdown-toolbar-container",
|
|
|
children: [!hidetoolBar && icons.map(function (item, index) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("li", {
|
|
|
children: item.actionName ? /*#__PURE__*/(0,jsx_runtime.jsx)(AButton, objectSpread2_default()(objectSpread2_default()({}, item), {}, {
|
|
|
onActionCallback: onActionCallback
|
|
|
})) : /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "v-line"
|
|
|
})
|
|
|
}, index);
|
|
|
}), showNullButton ? /*#__PURE__*/(0,jsx_runtime.jsx)("li", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(AButton, {
|
|
|
icon: "icon-edit insert-blank",
|
|
|
className: "btn-null",
|
|
|
title: "\u589E\u52A0\u586B\u7A7A",
|
|
|
actionName: "add-null-ch",
|
|
|
onActionCallback: onActionCallback,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "fill-tip",
|
|
|
children: "\u70B9\u51FB\u63D2\u5165\b\u586B\u7A7A\u9879"
|
|
|
})
|
|
|
})
|
|
|
}) : null, showNullProgramButton ? /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("li", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(AButton, {
|
|
|
icon: "icon-edit insert-blank",
|
|
|
className: "btn-null",
|
|
|
title: "\u589E\u52A0\u586B\u7A7A",
|
|
|
actionName: "add-signal",
|
|
|
onActionCallback: onActionCallback,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "fill-tip",
|
|
|
children: "\u6DFB\u52A0\u5355\u884C\u586B\u7A7A\u9879"
|
|
|
})
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("li", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(AButton, {
|
|
|
icon: "icon-uniE900 insert-blank",
|
|
|
className: "btn-null",
|
|
|
title: "\u589E\u52A0\u586B\u7A7A",
|
|
|
actionName: "add-multiple",
|
|
|
onActionCallback: onActionCallback,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "fill-tip",
|
|
|
children: "\u6DFB\u52A0\u591A\u884C\u586B\u7A7A\u9879"
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
}) : null, insertTemp && /*#__PURE__*/(0,jsx_runtime.jsx)("li", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(AButton, {
|
|
|
icon: "icon-edit",
|
|
|
className: "btn-null",
|
|
|
title: "\u63D2\u5165\u6A21\u677F",
|
|
|
actionName: "inster-template-".concat(insertTemp),
|
|
|
onActionCallback: onActionCallback,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "fill-tip",
|
|
|
children: "\u63D2\u5165\u6A21\u677F"
|
|
|
})
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("li", {
|
|
|
className: "btn-full-screen",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(AButton, {
|
|
|
icon: "".concat(fullScreen ? 'icon-shrink' : 'icon-enlarge'),
|
|
|
title: fullScreen ? '关闭全屏' : '开启全屏',
|
|
|
actionName: "trigger-full-screen",
|
|
|
onActionCallback: onActionCallback
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./src/components/modal.tsx
|
|
|
var modal = __webpack_require__(57202);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/form/index.js + 19 modules
|
|
|
var es_form = __webpack_require__(78241);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/input/index.js + 5 modules
|
|
|
var input = __webpack_require__(1056);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/button/index.js
|
|
|
var es_button = __webpack_require__(3113);
|
|
|
;// CONCATENATED MODULE: ./src/components/markdown-editor/link/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var formItemLayout = {
|
|
|
labelCol: {
|
|
|
span: 4
|
|
|
},
|
|
|
wrapperCol: {
|
|
|
span: 20
|
|
|
}
|
|
|
};
|
|
|
/* harmony default export */ var markdown_editor_link = (function (_ref) {
|
|
|
var callback = _ref.callback,
|
|
|
onCancel = _ref.onCancel;
|
|
|
function onSubmit(values) {
|
|
|
callback(values);
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default */.Z, objectSpread2_default()(objectSpread2_default()({}, formItemLayout), {}, {
|
|
|
initialValues: {
|
|
|
link: 'http://',
|
|
|
title: ''
|
|
|
},
|
|
|
className: "link-panel",
|
|
|
onFinish: onSubmit,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
label: "\u94FE\u63A5\u5730\u5740",
|
|
|
name: "link",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入链接地址'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
label: "\u94FE\u63A5\u6807\u9898",
|
|
|
name: "title",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入链接标题'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "flex-container flex-end",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
type: "primary",
|
|
|
htmlType: "submit",
|
|
|
style: {
|
|
|
marginRight: 10
|
|
|
},
|
|
|
children: "\u786E\u5B9A"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
type: "ghost",
|
|
|
onClick: onCancel,
|
|
|
children: "\u53D6\u6D88"
|
|
|
})]
|
|
|
})]
|
|
|
}));
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./src/components/markdown-editor/code-block/index.tsx
|
|
|
var code_block = __webpack_require__(57606);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/message/index.js + 4 modules
|
|
|
var message = __webpack_require__(8591);
|
|
|
;// CONCATENATED MODULE: ./src/components/markdown-editor/upload-image/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/util.js
|
|
|
var util = __webpack_require__(77890);
|
|
|
;// CONCATENATED MODULE: ./src/components/markdown-editor/upload-image/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var useForm = es_form/* default */.Z.useForm;
|
|
|
var style = {
|
|
|
width: 280,
|
|
|
marginRight: 10
|
|
|
};
|
|
|
var upload_image_formItemLayout = {
|
|
|
labelCol: {
|
|
|
span: 5
|
|
|
},
|
|
|
wrapperCol: {
|
|
|
span: 19
|
|
|
}
|
|
|
};
|
|
|
/* harmony default export */ var upload_image = (function (_ref) {
|
|
|
var callback = _ref.callback,
|
|
|
onCancel = _ref.onCancel;
|
|
|
var _useForm = useForm(),
|
|
|
_useForm2 = slicedToArray_default()(_useForm, 1),
|
|
|
form = _useForm2[0];
|
|
|
var nameRef = (0,_react_17_0_2_react.useRef)();
|
|
|
function onSubmit(values) {
|
|
|
callback(objectSpread2_default()(objectSpread2_default()({}, values), {}, {
|
|
|
name: nameRef.current
|
|
|
}));
|
|
|
}
|
|
|
function onAddUrl(data, file) {
|
|
|
if (data.status === -1) {
|
|
|
message/* default */.ZP.error(data.message);
|
|
|
return;
|
|
|
}
|
|
|
form.setFieldsValue({
|
|
|
src: "/api/attachments/".concat(data.id),
|
|
|
type: file.type
|
|
|
});
|
|
|
}
|
|
|
function onFileChange(e) {
|
|
|
var file = e.target.files[0];
|
|
|
nameRef.current = file.name;
|
|
|
uploadImage(file, onAddUrl);
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default */.Z, objectSpread2_default()(objectSpread2_default()({
|
|
|
form: form
|
|
|
}, upload_image_formItemLayout), {}, {
|
|
|
className: "upload-image-panel",
|
|
|
onFinish: onSubmit,
|
|
|
style: {
|
|
|
width: 470,
|
|
|
overflow: "hidden"
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
label: "\u56FE\u7247\u5730\u5740",
|
|
|
required: true,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "flex-container",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
noStyle: true,
|
|
|
name: "src",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入文件地址'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
style: style
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(UploadButton, {
|
|
|
onFileChange: onFileChange
|
|
|
})]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
label: "\u56FE\u7247\u63CF\u8FF0",
|
|
|
name: "alt"
|
|
|
// rules={[{ required: true, message: '请输入图片描述' }]}
|
|
|
,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
style: {
|
|
|
width: 264
|
|
|
}
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default */.Z.Item, {
|
|
|
style: {
|
|
|
textAlign: "right"
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
type: "primary",
|
|
|
htmlType: "submit",
|
|
|
style: {
|
|
|
marginRight: 10
|
|
|
},
|
|
|
children: "\u786E\u5B9A"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
type: "default",
|
|
|
onClick: onCancel,
|
|
|
children: "\u53D6\u6D88"
|
|
|
})]
|
|
|
})]
|
|
|
}));
|
|
|
});
|
|
|
function UploadButton(_ref2) {
|
|
|
var onFileChange = _ref2.onFileChange;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("label", {
|
|
|
className: "upload-button",
|
|
|
style: {
|
|
|
cursor: "pointer"
|
|
|
},
|
|
|
children: ["\u672C\u5730\u4E0A\u4F20", /*#__PURE__*/(0,jsx_runtime.jsx)("input", {
|
|
|
type: "file",
|
|
|
onChange: onFileChange
|
|
|
})]
|
|
|
});
|
|
|
}
|
|
|
function uploadImage(file, callback) {
|
|
|
if (!file) {
|
|
|
throw new String('没有文件');
|
|
|
return;
|
|
|
}
|
|
|
var formData = new FormData();
|
|
|
formData.append('editormd-image-file', file);
|
|
|
formData.append('file_param_name', 'editormd-image-file');
|
|
|
formData.append('byxhr', 'true');
|
|
|
var xhr = new window.XMLHttpRequest();
|
|
|
xhr.withCredentials = true;
|
|
|
xhr.addEventListener('load', function (response) {
|
|
|
callback(JSON.parse(response.target.responseText), file);
|
|
|
}, false);
|
|
|
xhr.addEventListener('error', function (error) {
|
|
|
console.error(error);
|
|
|
}, false);
|
|
|
xhr.open('POST', "".concat(util/* apiPref */.KI, "/api/attachments.json"));
|
|
|
xhr.send(formData);
|
|
|
}
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/radio/index.js + 5 modules
|
|
|
var es_radio = __webpack_require__(5112);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/input-number/index.js + 14 modules
|
|
|
var input_number = __webpack_require__(85731);
|
|
|
;// CONCATENATED MODULE: ./src/components/markdown-editor/add-table-panel/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var RadioGroup = es_radio/* default.Group */.ZP.Group;
|
|
|
var add_table_panel_style = {
|
|
|
margin: '0 8px'
|
|
|
};
|
|
|
/* harmony default export */ var add_table_panel = (function (_ref) {
|
|
|
var callback = _ref.callback,
|
|
|
onCancel = _ref.onCancel;
|
|
|
function onSubmit(values) {
|
|
|
callback(values);
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default */.Z, {
|
|
|
className: "add-table-panel",
|
|
|
initialValues: {
|
|
|
row: 3,
|
|
|
col: 2,
|
|
|
align: 'default'
|
|
|
},
|
|
|
onFinish: onSubmit,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "flex-container",
|
|
|
style: {
|
|
|
alignItems: "baseline"
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
style: add_table_panel_style,
|
|
|
children: "\u5355\u5143\u683C\u6570\uFF1A"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
style: add_table_panel_style,
|
|
|
children: "\u884C\u6570"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
name: "row",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入行数'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input_number/* default */.Z, {})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
style: add_table_panel_style,
|
|
|
children: "\u5217\u6570"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
name: "col",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入列数'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input_number/* default */.Z, {})
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "flex-container",
|
|
|
style: {
|
|
|
marginTop: 12,
|
|
|
alignItems: "baseline"
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
style: add_table_panel_style,
|
|
|
children: "\u5BF9\u9F50\u65B9\u5F0F\uFF1A"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
name: "align",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(RadioGroup, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_radio/* default */.ZP, {
|
|
|
value: "default",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "fa fa-align-justify"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_radio/* default */.ZP, {
|
|
|
value: "left",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "fa fa-align-left"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_radio/* default */.ZP, {
|
|
|
value: "center",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "fa fa-align-center"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_radio/* default */.ZP, {
|
|
|
value: "right",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "fa fa-align-right"
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "flex-container flex-end",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
type: "primary",
|
|
|
htmlType: "submit",
|
|
|
style: {
|
|
|
marginRight: 10
|
|
|
},
|
|
|
children: "\u786E\u5B9A"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
type: "ghost",
|
|
|
onClick: onCancel,
|
|
|
children: "\u53D6\u6D88"
|
|
|
})]
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./src/utils/env.ts + 1 modules
|
|
|
var env = __webpack_require__(80548);
|
|
|
// EXTERNAL MODULE: ./src/utils/fetch.ts
|
|
|
var fetch = __webpack_require__(78092);
|
|
|
// EXTERNAL MODULE: ./node_modules/_uuid@8.3.0@uuid/dist/esm-browser/v4.js + 4 modules
|
|
|
var v4 = __webpack_require__(1012);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/modal/index.js + 16 modules
|
|
|
var es_modal = __webpack_require__(43418);
|
|
|
;// CONCATENATED MODULE: ./src/components/markdown-editor/constant.ts
|
|
|
var LINK = 'link';
|
|
|
var UPLOAD_IMAGE = 'upload-image';
|
|
|
var CODE_BLOCK = 'code-block';
|
|
|
var ADD_TABLE = 'add-table';
|
|
|
var HRLINE = '------------';
|
|
|
var ALIGNSIGN = {
|
|
|
"default": HRLINE,
|
|
|
left: ":".concat(HRLINE),
|
|
|
center: ":".concat(HRLINE, ":"),
|
|
|
right: "".concat(HRLINE, ":")
|
|
|
};
|
|
|
// EXTERNAL MODULE: ./src/components/useInterval.tsx
|
|
|
var useInterval = __webpack_require__(47006);
|
|
|
;// CONCATENATED MODULE: ./src/components/markdown-editor/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function noop() {}
|
|
|
var pending = 0;
|
|
|
var StorageTimeTicket = 10000;
|
|
|
var NULL_CH = '▁';
|
|
|
var ADD_MULTI = '@▁▁@';
|
|
|
var ADD_SINGLE = '@▁@';
|
|
|
var TEMP1 = '\n**模板标题**\n模板正文内容,可输入文本内容和粘贴图片等操作'; //课程须知模板
|
|
|
function processSize(size) {
|
|
|
return !/^\d+$/.test(size) ? size : "".concat(size, "px");
|
|
|
}
|
|
|
var isMac = navigator.platform.toUpperCase().indexOf('MAC') >= 0;
|
|
|
var key = isMac ? 'Cmd' : 'Ctrl';
|
|
|
var officeSix = ["pptm", "pptx", "ppt", "pot", "pps", "ppa", "potx", "ppsx", "ppam", "pptm", "potm", "ppsm", "doc", "docx", "dot", "dotx", "docm", "dotm", "xls", "xlsx", "csv", "xlt", "xla", "xltx", "xlsm", "xltm", "xlam", "xlsb"];
|
|
|
var DEFAULTKEYMAP = defineProperty_default()(defineProperty_default()({}, key + '-B', 'bold'), key + '-I', 'italic');
|
|
|
var TitleDesc = defineProperty_default()(defineProperty_default()(defineProperty_default()(defineProperty_default()({}, LINK, '添加链接'), CODE_BLOCK, '添加代码块'), UPLOAD_IMAGE, '添加文件'), ADD_TABLE, '添加表格');
|
|
|
|
|
|
//https://codemirror.net/demo
|
|
|
//The height can be set through CSS (by giving the .CodeMirror class a height property), or by calling the cm's setSize method.
|
|
|
|
|
|
/* harmony default export */ var markdown_editor = (function (_ref) {
|
|
|
var _ref$defaultValue = _ref.defaultValue,
|
|
|
defaultValue = _ref$defaultValue === void 0 ? '' : _ref$defaultValue,
|
|
|
onChange = _ref.onChange,
|
|
|
_ref$width = _ref.width,
|
|
|
width = _ref$width === void 0 ? '100%' : _ref$width,
|
|
|
_ref$height = _ref.height,
|
|
|
height = _ref$height === void 0 ? 400 : _ref$height,
|
|
|
_ref$miniToolbar = _ref.miniToolbar,
|
|
|
miniToolbar = _ref$miniToolbar === void 0 ? false : _ref$miniToolbar,
|
|
|
_ref$isFocus = _ref.isFocus,
|
|
|
isFocus = _ref$isFocus === void 0 ? false : _ref$isFocus,
|
|
|
watch = _ref.watch,
|
|
|
insertTemp = _ref.insertTemp,
|
|
|
_ref$mode = _ref.mode,
|
|
|
mode = _ref$mode === void 0 ? "markdown" : _ref$mode,
|
|
|
_ref$id = _ref.id,
|
|
|
id = _ref$id === void 0 ? 'markdown-editor-id' : _ref$id,
|
|
|
_ref$showResizeBar = _ref.showResizeBar,
|
|
|
showResizeBar = _ref$showResizeBar === void 0 ? false : _ref$showResizeBar,
|
|
|
_ref$noStorage = _ref.noStorage,
|
|
|
noStorage = _ref$noStorage === void 0 ? false : _ref$noStorage,
|
|
|
_ref$showNullButton = _ref.showNullButton,
|
|
|
showNullButton = _ref$showNullButton === void 0 ? false : _ref$showNullButton,
|
|
|
_ref$showNullProgramB = _ref.showNullProgramButton,
|
|
|
showNullProgramButton = _ref$showNullProgramB === void 0 ? false : _ref$showNullProgramB,
|
|
|
_ref$hidetoolBar = _ref.hidetoolBar,
|
|
|
hidetoolBar = _ref$hidetoolBar === void 0 ? false : _ref$hidetoolBar,
|
|
|
_ref$fullScreen = _ref.fullScreen,
|
|
|
fullScreen = _ref$fullScreen === void 0 ? false : _ref$fullScreen,
|
|
|
onBlur = _ref.onBlur,
|
|
|
onCMBeforeChange = _ref.onCMBeforeChange,
|
|
|
onFullScreen = _ref.onFullScreen,
|
|
|
_ref$className = _ref.className,
|
|
|
className = _ref$className === void 0 ? '' : _ref$className,
|
|
|
_ref$disablePaste = _ref.disablePaste,
|
|
|
disablePaste = _ref$disablePaste === void 0 ? false : _ref$disablePaste,
|
|
|
_ref$disabled = _ref.disabled,
|
|
|
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
|
_ref$disabledFill = _ref.disabledFill,
|
|
|
disabledFill = _ref$disabledFill === void 0 ? false : _ref$disabledFill,
|
|
|
_ref$placeholder = _ref.placeholder,
|
|
|
placeholder = _ref$placeholder === void 0 ? '' : _ref$placeholder,
|
|
|
_ref$values = _ref.values,
|
|
|
values = _ref$values === void 0 ? '' : _ref$values;
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(null),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
cm = _useState2[0],
|
|
|
setCm = _useState2[1];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)(defaultValue),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
value = _useState4[0],
|
|
|
setValue = _useState4[1];
|
|
|
var _useState5 = (0,_react_17_0_2_react.useState)(watch),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
preview = _useState6[0],
|
|
|
setPreview = _useState6[1];
|
|
|
var _useState7 = (0,_react_17_0_2_react.useState)(fullScreen),
|
|
|
_useState8 = slicedToArray_default()(_useState7, 2),
|
|
|
isFull = _useState8[0],
|
|
|
setIsFull = _useState8[1];
|
|
|
var _useState9 = (0,_react_17_0_2_react.useState)(''),
|
|
|
_useState10 = slicedToArray_default()(_useState9, 2),
|
|
|
action = _useState10[0],
|
|
|
setAction = _useState10[1];
|
|
|
var _useState11 = (0,_react_17_0_2_react.useState)(0),
|
|
|
_useState12 = slicedToArray_default()(_useState11, 2),
|
|
|
lastedUpdateTime = _useState12[0],
|
|
|
setLastedUpdateTime = _useState12[1];
|
|
|
var _useState13 = (0,_react_17_0_2_react.useState)(height),
|
|
|
_useState14 = slicedToArray_default()(_useState13, 2),
|
|
|
h = _useState14[0],
|
|
|
setH = _useState14[1];
|
|
|
var _useState15 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState16 = slicedToArray_default()(_useState15, 2),
|
|
|
tip = _useState16[0],
|
|
|
setTip = _useState16[1];
|
|
|
var uuidRef = (0,_react_17_0_2_react.useRef)((0,v4/* default */.Z)());
|
|
|
var openPhoneRef = (0,_react_17_0_2_react.useRef)(false);
|
|
|
var timer = (0,_react_17_0_2_react.useRef)();
|
|
|
var cmEl = (0,_react_17_0_2_react.useRef)();
|
|
|
var containerEl = (0,_react_17_0_2_react.useRef)();
|
|
|
var resizeBarEl = (0,_react_17_0_2_react.useRef)();
|
|
|
var previewEl = (0,_react_17_0_2_react.useRef)();
|
|
|
var checkFiles = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var _res$attachments;
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.next = 2;
|
|
|
return (0,fetch/* default */.ZP)("/api/attachments/distinct_hash_val.json", {
|
|
|
method: "post",
|
|
|
body: {
|
|
|
hash_val: uuidRef.current
|
|
|
}
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context.sent;
|
|
|
if (!!(res !== null && res !== void 0 && (_res$attachments = res.attachments) !== null && _res$attachments !== void 0 && _res$attachments.length)) {
|
|
|
console.log("cm:", cm, cmEl);
|
|
|
res.attachments.map(function (item) {
|
|
|
if (item.content_type.indexOf("image") > -1) {
|
|
|
cm.replaceSelection(".concat(item.content_type, ")"));
|
|
|
} else if (item.content_type.indexOf("video") > -1) {
|
|
|
cm.replaceSelection("<video width=\"100%\" controls src=\"".concat(env/* default */.Z.API_SERVER, "/api/attachments/").concat(data.id, "\"></video>"));
|
|
|
} else if (item.content_type.indexOf("pdf") > -1) {
|
|
|
cm.replaceSelection("<a href=\"".concat(env/* default */.Z.API_SERVER, "/api/attachments/").concat(item.id, "?type=").concat(item.content_type, "&disposition=inline\" target=\"_blank\">").concat(item.name, "</a>"));
|
|
|
} else {
|
|
|
cm.replaceSelection("[".concat(item.name, "](").concat(env/* default */.Z.API_SERVER, "/api/attachments/").concat(item.id, "?type=").concat(item.content_type, ")"));
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function checkFiles() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
|
|
|
// useEffect(() => {
|
|
|
// setValue(defaultValue)
|
|
|
// cm?.setValue(defaultValue)
|
|
|
// },[])
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
var scrollTop = window.scrollY || window.pageYOffset;
|
|
|
setValue(values);
|
|
|
cm === null || cm === void 0 || cm.setValue(values);
|
|
|
window.scrollTo(0, scrollTop);
|
|
|
}, [values]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
onFullScreen === null || onFullScreen === void 0 || onFullScreen(isFull);
|
|
|
}, [isFull]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (cmEl.current) {
|
|
|
var onPaste = function onPaste(_, e) {
|
|
|
if (disablePaste) {
|
|
|
e.preventDefault();
|
|
|
return;
|
|
|
}
|
|
|
var clipboardData = e.clipboardData;
|
|
|
if (clipboardData) {
|
|
|
var types = clipboardData.types.toString();
|
|
|
var items = clipboardData.items;
|
|
|
if (types === 'Files' || clipboardData.types.indexOf("Files") > -1) {
|
|
|
e.preventDefault();
|
|
|
if (mode == "stex") return;
|
|
|
try {
|
|
|
var _items$;
|
|
|
var item = items[1];
|
|
|
if (((_items$ = items[0]) === null || _items$ === void 0 ? void 0 : _items$.kind) === 'file') {
|
|
|
item = items[0];
|
|
|
}
|
|
|
var file = item.getAsFile();
|
|
|
var fileSix = file.name.split(".").pop();
|
|
|
// console.log("item:", item, file, item?.type?.match(/^video\//i))
|
|
|
uploadImage(file, function (data) {
|
|
|
if (data.id) {
|
|
|
var _file$type, _file$type2, _file$type3;
|
|
|
if ((file === null || file === void 0 || (_file$type = file.type) === null || _file$type === void 0 ? void 0 : _file$type.indexOf("image")) > -1) {
|
|
|
instance.replaceSelection(".concat(data.content_type, ")"));
|
|
|
} else if ((file === null || file === void 0 || (_file$type2 = file.type) === null || _file$type2 === void 0 ? void 0 : _file$type2.indexOf("video")) > -1) {
|
|
|
instance.replaceSelection("<video width=\"100%\" controls src=\"".concat(env/* default */.Z.API_SERVER, "/api/attachments/").concat(data.id, "\"></video>"));
|
|
|
} else if ((file === null || file === void 0 || (_file$type3 = file.type) === null || _file$type3 === void 0 ? void 0 : _file$type3.indexOf("pdf")) > -1) {
|
|
|
instance.replaceSelection("<a href=\"".concat(env/* default */.Z.API_SERVER, "/api/attachments/").concat(data.id, "?type=").concat(file.type, "&disposition=inline\" target=\"_blank\">").concat(file.name, "</a>"));
|
|
|
} else if (officeSix.includes(fileSix)) {
|
|
|
instance.replaceSelection("<a href=\"".concat(env/* default */.Z.API_SERVER, "/api/attachments/").concat(data.id, "?type=office&disposition=inline\" target=\"_blank\">").concat(file.name, "</a>"));
|
|
|
} else {
|
|
|
instance.replaceSelection("[".concat(file.name, "](").concat(env/* default */.Z.API_SERVER, "/api/attachments/").concat(data.id, "?type=").concat(data.content_type, ")"));
|
|
|
}
|
|
|
} else {
|
|
|
if ((data === null || data === void 0 ? void 0 : data.status) === 401) document.location.href = '/user/login';
|
|
|
}
|
|
|
});
|
|
|
} catch (e) {
|
|
|
message/* default */.ZP.warning("请使用chrome浏览器粘贴");
|
|
|
}
|
|
|
return true;
|
|
|
} else {
|
|
|
//toMarkdown ?
|
|
|
// let html = clipboardData.getData('text/html')
|
|
|
return true;
|
|
|
}
|
|
|
}
|
|
|
return true;
|
|
|
};
|
|
|
var instance = codemirror_default().fromTextArea(cmEl.current, {
|
|
|
mode: mode,
|
|
|
// inputStyle: 'contenteditable',
|
|
|
lineNumbers: miniToolbar ? false : true,
|
|
|
lineWrapping: true,
|
|
|
value: defaultValue,
|
|
|
autoCloseTags: showNullProgramButton ? false : true,
|
|
|
autoCloseBrackets: true
|
|
|
});
|
|
|
instance.on("keyup", function (cm, event) {
|
|
|
if (event.keyCode === 8) {
|
|
|
if (cm.getValue() == "") {
|
|
|
instance.setOption("placeholder", placeholder);
|
|
|
} else {
|
|
|
instance.setOption("placeholder", null);
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
instance.on("keydown", function (cm, event) {
|
|
|
if (event.keyCode === 8) {
|
|
|
var pos = deleteAtSymbol(cm);
|
|
|
if (pos) {
|
|
|
event.preventDefault();
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
isFocus && instance.focus();
|
|
|
instance.on('paste', onPaste);
|
|
|
instance.on('dragleave', function (data, e) {
|
|
|
containerEl.current.classList.remove("mouse-hover-md");
|
|
|
});
|
|
|
instance.on('dragover', function (data, e) {
|
|
|
containerEl.current.classList.add("mouse-hover-md");
|
|
|
});
|
|
|
instance.on('drop', function (data, e) {
|
|
|
containerEl.current.classList.add("mouse-hover-md");
|
|
|
// var file;
|
|
|
var files;
|
|
|
// Check if files were dropped
|
|
|
files = e.dataTransfer.files;
|
|
|
if (files.length > 0) {
|
|
|
e.preventDefault();
|
|
|
e.stopPropagation();
|
|
|
// file = files[0];
|
|
|
// alert('File: ' + file.name);
|
|
|
// return false;
|
|
|
var _loop = function _loop() {
|
|
|
var file = files[i];
|
|
|
var fileSix = file.name.split(".").pop();
|
|
|
uploadImage(file, function (data) {
|
|
|
if (data.id) {
|
|
|
var _file$type4, _file$type5, _file$type6;
|
|
|
if ((file === null || file === void 0 || (_file$type4 = file.type) === null || _file$type4 === void 0 ? void 0 : _file$type4.indexOf("image")) > -1) {
|
|
|
instance.replaceSelection(".concat(data.content_type, ")"));
|
|
|
} else if ((file === null || file === void 0 || (_file$type5 = file.type) === null || _file$type5 === void 0 ? void 0 : _file$type5.indexOf("video")) > -1) {
|
|
|
instance.replaceSelection("<video width=\"100%\" controls src=\"".concat(env/* default */.Z.API_SERVER, "/api/attachments/").concat(data.id, "\"></video>"));
|
|
|
} else if ((file === null || file === void 0 || (_file$type6 = file.type) === null || _file$type6 === void 0 ? void 0 : _file$type6.indexOf("pdf")) > -1) {
|
|
|
instance.replaceSelection("<a href=\"".concat(env/* default */.Z.API_SERVER, "/api/attachments/").concat(data.id, "?type=").concat(file.type, "&disposition=inline\" target=\"_blank\">").concat(file.name, "</a>"));
|
|
|
} else if (officeSix.includes(fileSix)) {
|
|
|
instance.replaceSelection("<a href=\"".concat(env/* default */.Z.API_SERVER, "/api/attachments/").concat(data.id, "?type=office&disposition=inline\" target=\"_blank\">").concat(file.name, "</a>"));
|
|
|
} else {
|
|
|
instance.replaceSelection("[".concat(file.name, "](").concat(env/* default */.Z.API_SERVER, "/api/attachments/").concat(data.id, "?type=").concat(data.content_type, ")"));
|
|
|
}
|
|
|
} else {
|
|
|
if ((data === null || data === void 0 ? void 0 : data.status) === 401) document.location.href = '/user/login';
|
|
|
}
|
|
|
});
|
|
|
};
|
|
|
for (var i = 0; i < files.length; i++) {
|
|
|
_loop();
|
|
|
}
|
|
|
// files.map((file:any) => {
|
|
|
|
|
|
// })
|
|
|
}
|
|
|
});
|
|
|
if (disabled) {
|
|
|
instance.on("beforeChange", function (instances, change) {
|
|
|
if (change.origin === "paste" || change.origin === "+input") {
|
|
|
change.cancel();
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
setCm(instance);
|
|
|
return function () {
|
|
|
instance.off('paste', onPaste);
|
|
|
};
|
|
|
}
|
|
|
}, []);
|
|
|
var resizeEditorBodyHeight = (0,_react_17_0_2_react.useCallback)(function () {
|
|
|
if (containerEl.current) {
|
|
|
try {
|
|
|
// let toolH = containerEl.current.getElementsByClassName('markdown-toolbar-container')[0].offsetHeight
|
|
|
// let mdBody = containerEl.current.getElementsByClassName('markdown-editor-body')[0]
|
|
|
// if (!isFull) {
|
|
|
// mdBody.style.height = `${h - toolH}px`
|
|
|
// } else {
|
|
|
// mdBody.style.height = `calc(100vh - ${toolH}px)`
|
|
|
// }
|
|
|
} catch (error) {
|
|
|
console.log(error, '---- to set md editor body height');
|
|
|
}
|
|
|
}
|
|
|
}, [h, containerEl, isFull]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
function onLayout() {
|
|
|
var ro = new ResizeObserver_es/* default */.Z(function (entries) {
|
|
|
var _iterator = createForOfIteratorHelper_default()(entries),
|
|
|
_step;
|
|
|
try {
|
|
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
|
var entry = _step.value;
|
|
|
if (entry.target.offsetHeight > 0 || entry.target.offsetWidth > 0) {
|
|
|
resizeEditorBodyHeight();
|
|
|
cm.setSize('100%', '100%');
|
|
|
cm.refresh();
|
|
|
}
|
|
|
}
|
|
|
} catch (err) {
|
|
|
_iterator.e(err);
|
|
|
} finally {
|
|
|
_iterator.f();
|
|
|
}
|
|
|
});
|
|
|
ro.observe(cmEl.current.parentElement);
|
|
|
return ro;
|
|
|
}
|
|
|
if (cm) {
|
|
|
var ro = onLayout();
|
|
|
return function () {
|
|
|
var _cmEl$current, _cmEl$current2;
|
|
|
if ((_cmEl$current = cmEl.current) !== null && _cmEl$current !== void 0 && _cmEl$current.parentElement) ro.unobserve((_cmEl$current2 = cmEl.current) === null || _cmEl$current2 === void 0 ? void 0 : _cmEl$current2.parentElement);
|
|
|
};
|
|
|
}
|
|
|
}, [cm, resizeEditorBodyHeight]);
|
|
|
|
|
|
//keymap
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (cm) {
|
|
|
var keymap = [];
|
|
|
var _loop2 = function _loop2() {
|
|
|
var _Object$entries$_i = slicedToArray_default()(_Object$entries[_i], 2),
|
|
|
k = _Object$entries$_i[0],
|
|
|
value = _Object$entries$_i[1];
|
|
|
var map = defineProperty_default()({}, k, function () {
|
|
|
onActionCallback(value);
|
|
|
});
|
|
|
keymap.push(map);
|
|
|
cm.addKeyMap(map);
|
|
|
};
|
|
|
for (var _i = 0, _Object$entries = Object.entries(DEFAULTKEYMAP); _i < _Object$entries.length; _i++) {
|
|
|
_loop2();
|
|
|
}
|
|
|
timer.current = setInterval(function () {
|
|
|
if (openPhoneRef.current) {
|
|
|
checkFiles();
|
|
|
}
|
|
|
}, 4000);
|
|
|
return function () {
|
|
|
clearInterval(timer.current);
|
|
|
for (var _i2 = 0, _keymap = keymap; _i2 < _keymap.length; _i2++) {
|
|
|
var m = _keymap[_i2];
|
|
|
cm.removeKeyMap(m);
|
|
|
}
|
|
|
};
|
|
|
}
|
|
|
}, [cm]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (fullScreen !== isFull) {
|
|
|
setIsFull(fullScreen);
|
|
|
}
|
|
|
}, [fullScreen]);
|
|
|
(0,useInterval/* default */.Z)(function () {
|
|
|
if (!noStorage && lastedUpdateTime > 0) {
|
|
|
var currentTime = new Date().getTime();
|
|
|
var lastedValue = window.sessionStorage.getItem(id);
|
|
|
if (currentTime >= lastedUpdateTime + StorageTimeTicket && (!lastedValue || lastedValue !== value)) {
|
|
|
window.sessionStorage.setItem(id, value);
|
|
|
setTip(true);
|
|
|
}
|
|
|
}
|
|
|
}, StorageTimeTicket);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
setPreview(watch);
|
|
|
}, [cm, watch]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (cm) {
|
|
|
isFocus && cm.focus();
|
|
|
}
|
|
|
}, [cm, isFocus]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (preview && cm) {
|
|
|
var syncScroll = function syncScroll(e) {
|
|
|
var target = e.target;
|
|
|
if (previewEl.current) {
|
|
|
var ratio = target.scrollTop / target.scrollHeight;
|
|
|
previewEl.current.scrollTop = previewEl.current.scrollHeight * ratio;
|
|
|
}
|
|
|
};
|
|
|
var scrollEl = cm.getScrollerElement();
|
|
|
scrollEl.addEventListener('scroll', syncScroll);
|
|
|
return function () {
|
|
|
scrollEl.removeEventListener('scroll', syncScroll);
|
|
|
};
|
|
|
}
|
|
|
}, [cm, preview]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (cm && onCMBeforeChange) {
|
|
|
var onChangeHandler = function onChangeHandler(cm, change) {
|
|
|
onCMBeforeChange(cm, change);
|
|
|
};
|
|
|
cm.on('beforeChange', onChangeHandler);
|
|
|
return function () {
|
|
|
cm.off('beforeChange', onChangeHandler);
|
|
|
};
|
|
|
}
|
|
|
}, [cm, onCMBeforeChange]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (cm && onBlur) {
|
|
|
var onBlurHandler = function onBlurHandler() {
|
|
|
onBlur(cm.getValue());
|
|
|
};
|
|
|
cm.on('blur', onBlurHandler);
|
|
|
return function () {
|
|
|
cm.off('blur', onBlurHandler);
|
|
|
};
|
|
|
}
|
|
|
}, [cm, onBlur]);
|
|
|
function deleteAtSymbol(cm, change) {
|
|
|
var doc = cm.getDoc();
|
|
|
var cursor = doc.getCursor();
|
|
|
var line = doc.getLine(cursor.line);
|
|
|
var ch = line.charAt(cursor.ch - 1);
|
|
|
var p1 = line.lastIndexOf("@▁@", cursor.ch);
|
|
|
var p2 = line.lastIndexOf("@▁▁@", cursor.ch);
|
|
|
var posStart = p1 > p2 ? p1 : p2;
|
|
|
var n = p1 > p2 ? 3 : 4;
|
|
|
if (ADD_MULTI.indexOf(ch) === -1) return null;
|
|
|
console.log("change1:", change, cm, line, cursor, posStart, p1, p2, ch);
|
|
|
if (posStart >= 0 && cursor.ch - posStart < 5) {
|
|
|
var posEnd = posStart + n;
|
|
|
doc.replaceRange("", {
|
|
|
line: cursor.line,
|
|
|
ch: posStart
|
|
|
}, {
|
|
|
line: cursor.line,
|
|
|
ch: posEnd
|
|
|
});
|
|
|
return {
|
|
|
line: cursor.line,
|
|
|
ch: posEnd
|
|
|
};
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (cm) {
|
|
|
var onChangeHandler = function onChangeHandler(cm, change) {
|
|
|
var content = cm.getValue();
|
|
|
setValue(content);
|
|
|
setLastedUpdateTime(new Date().getTime());
|
|
|
cm.getScrollerElement().dispatchEvent(new CustomEvent('scroll'));
|
|
|
if (onChange) {
|
|
|
if (showNullProgramButton) {
|
|
|
onChange(content, formatProgramFill(content));
|
|
|
} else {
|
|
|
onChange(content);
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
cm.on('change', onChangeHandler);
|
|
|
return function () {
|
|
|
cm.off('change', onChangeHandler);
|
|
|
};
|
|
|
}
|
|
|
}, [cm, onChange]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (cm) {
|
|
|
// isFocus && cm.focus()
|
|
|
if (defaultValue === null || defaultValue === undefined) {
|
|
|
cm.setValue('');
|
|
|
setValue('');
|
|
|
} else {
|
|
|
var scrollTop = window.scrollY || window.pageYOffset;
|
|
|
if (defaultValue !== cm.getValue()) {
|
|
|
cm.setValue(defaultValue);
|
|
|
setValue(defaultValue);
|
|
|
cm.setCursor(disabled ? 1 : cm.lineCount(), 0);
|
|
|
window.scrollTo(0, scrollTop);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}, [cm, defaultValue]);
|
|
|
var onActionCallback = (0,_react_17_0_2_react.useCallback)(function (actionName) {
|
|
|
var cursor = cm.getCursor();
|
|
|
var selection = cm.getSelection();
|
|
|
var selectionText = selection.split('\n');
|
|
|
switch (actionName) {
|
|
|
case 'bold':
|
|
|
cm.replaceSelection('**' + selection + '**');
|
|
|
if (selection === '') {
|
|
|
cm.setCursor(cursor.line, cursor.ch + 2);
|
|
|
}
|
|
|
return cm.focus();
|
|
|
case 'italic':
|
|
|
cm.replaceSelection('*' + selection + '*');
|
|
|
if (selection === '') {
|
|
|
cm.setCursor(cursor.line, cursor.ch + 1);
|
|
|
}
|
|
|
return cm.focus();
|
|
|
case 'code':
|
|
|
cm.replaceSelection('`' + selection + '`');
|
|
|
if (selection === '') {
|
|
|
cm.setCursor(cursor.line, cursor.ch + 1);
|
|
|
}
|
|
|
return cm.focus();
|
|
|
case 'inline-latex':
|
|
|
cm.replaceSelection('`$$' + selection + '$$`');
|
|
|
if (selection === '') {
|
|
|
cm.setCursor(cursor.line, cursor.ch + 3);
|
|
|
}
|
|
|
return cm.focus();
|
|
|
case 'latex':
|
|
|
cm.replaceSelection("```latex\n" + selection + "\n```");
|
|
|
cm.setCursor(cursor.line + 1, selection.length + 1);
|
|
|
return cm.focus();
|
|
|
case 'line-break':
|
|
|
cm.replaceSelection('<br/>\n');
|
|
|
return cm.focus();
|
|
|
case 'list-ul':
|
|
|
if (selection === '') {
|
|
|
cm.replaceSelection('- ' + selection);
|
|
|
} else {
|
|
|
cm.replaceSelection(selectionText.map(function (item) {
|
|
|
return item === '' ? '' : "- ".concat(item);
|
|
|
}).join('\n'));
|
|
|
}
|
|
|
return cm.focus();
|
|
|
case 'list-ol':
|
|
|
if (selection === '') {
|
|
|
cm.replaceSelection('1. ' + selection);
|
|
|
} else {
|
|
|
cm.replaceSelection(selectionText.map(function (item, index) {
|
|
|
return item === '' ? '' : "".concat(index + 1, ". ").concat(item);
|
|
|
}).join('\n'));
|
|
|
}
|
|
|
return cm.focus();
|
|
|
case 'add-null-ch':
|
|
|
if (selection === '') {
|
|
|
cm.setCursor(cursor.line, cursor.ch);
|
|
|
}
|
|
|
cm.replaceSelection(NULL_CH);
|
|
|
return cm.focus();
|
|
|
case 'add-signal':
|
|
|
if (selection === '') {
|
|
|
cm.setCursor(cursor.line, cursor.ch);
|
|
|
}
|
|
|
cm.replaceSelection(ADD_SINGLE);
|
|
|
return cm.focus();
|
|
|
case 'add-multiple':
|
|
|
if (selection === '') {
|
|
|
cm.setCursor(cursor.line, cursor.ch);
|
|
|
}
|
|
|
cm.replaceSelection(ADD_MULTI);
|
|
|
return cm.focus();
|
|
|
case 'inster-template-1':
|
|
|
if (selection === '') {
|
|
|
cm.setCursor(cursor.line, cursor.ch);
|
|
|
}
|
|
|
cm.replaceSelection(TEMP1);
|
|
|
return cm.focus();
|
|
|
case 'eraser':
|
|
|
cm.setValue('');
|
|
|
return cm.focus();
|
|
|
case 'trigger-watch':
|
|
|
setPreview(!preview);
|
|
|
return cm.focus();
|
|
|
case 'trigger-full-screen':
|
|
|
setIsFull(!isFull);
|
|
|
return cm.focus();
|
|
|
case LINK:
|
|
|
setAction(LINK);
|
|
|
return;
|
|
|
case CODE_BLOCK:
|
|
|
setAction(CODE_BLOCK);
|
|
|
return;
|
|
|
case UPLOAD_IMAGE:
|
|
|
setAction(UPLOAD_IMAGE);
|
|
|
return;
|
|
|
case ADD_TABLE:
|
|
|
setAction(ADD_TABLE);
|
|
|
return;
|
|
|
default:
|
|
|
throw new Error();
|
|
|
}
|
|
|
}, [cm, preview, isFull]);
|
|
|
var ExecutePluginAction = (0,_react_17_0_2_react.useCallback)(function (values) {
|
|
|
setAction('');
|
|
|
switch (action) {
|
|
|
case LINK:
|
|
|
var title = values.title,
|
|
|
link = values.link;
|
|
|
cm.replaceSelection("[".concat(title, "](").concat(link, ")"));
|
|
|
return cm.focus();
|
|
|
case CODE_BLOCK:
|
|
|
var language = values.language,
|
|
|
content = values.content;
|
|
|
cm.replaceSelection(['```' + language, content, '```'].join('\n'));
|
|
|
return cm.focus();
|
|
|
case UPLOAD_IMAGE:
|
|
|
var src = values.src,
|
|
|
alt = values.alt;
|
|
|
if (alt) {
|
|
|
cm.replaceSelection(".concat(src, " \"").concat(alt, "\" )"));
|
|
|
} else {
|
|
|
cm.replaceSelection(""));
|
|
|
}
|
|
|
return cm.focus();
|
|
|
case ADD_TABLE:
|
|
|
var row = values.row,
|
|
|
col = values.col,
|
|
|
align = values.align;
|
|
|
var table = '\n';
|
|
|
for (var r = 0; r < row; r++) {
|
|
|
var rows = [];
|
|
|
var heads = [];
|
|
|
for (var c = 0; c < col; c++) {
|
|
|
if (r === 1) {
|
|
|
heads.push(ALIGNSIGN[align]);
|
|
|
}
|
|
|
rows.push(' ');
|
|
|
}
|
|
|
if (r === 1) {
|
|
|
table += "| ".concat(heads.join(' | '), " |\n");
|
|
|
}
|
|
|
table += "| ".concat(rows.join(col === 1 ? '' : ' | '), " |\n");
|
|
|
}
|
|
|
cm.replaceSelection(table + '\n');
|
|
|
return cm.focus();
|
|
|
default:
|
|
|
throw new Error();
|
|
|
}
|
|
|
}, [cm, action]);
|
|
|
var PluginEl = (0,_react_17_0_2_react.useMemo)(function () {
|
|
|
switch (action) {
|
|
|
case LINK:
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(markdown_editor_link, {
|
|
|
callback: ExecutePluginAction,
|
|
|
onCancel: onCancel
|
|
|
});
|
|
|
case CODE_BLOCK:
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(code_block/* default */.Z, {
|
|
|
callback: ExecutePluginAction,
|
|
|
onCancel: onCancel
|
|
|
});
|
|
|
case UPLOAD_IMAGE:
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(upload_image, {
|
|
|
callback: ExecutePluginAction,
|
|
|
onCancel: onCancel
|
|
|
});
|
|
|
case ADD_TABLE:
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(add_table_panel, {
|
|
|
callback: ExecutePluginAction,
|
|
|
onCancel: onCancel
|
|
|
});
|
|
|
default:
|
|
|
return null;
|
|
|
}
|
|
|
}, [action]);
|
|
|
function onCancel() {
|
|
|
setAction('');
|
|
|
}
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (resizeBarEl.current) {
|
|
|
var onMouseDown = function onMouseDown(e) {
|
|
|
dragging = true;
|
|
|
startY = e.pageY;
|
|
|
};
|
|
|
var onMouseUp = function onMouseUp() {
|
|
|
dragging = false;
|
|
|
};
|
|
|
var onMouseMove = function onMouseMove(e) {
|
|
|
if (dragging) {
|
|
|
var delta = e.pageY - startY;
|
|
|
if (delta < 0) {
|
|
|
delta = 0;
|
|
|
}
|
|
|
if (delta > 300) {
|
|
|
delta = 300;
|
|
|
}
|
|
|
var resizeH = height + delta + 'px';
|
|
|
setH(resizeH);
|
|
|
}
|
|
|
};
|
|
|
var resizeBar = resizeBarEl.current;
|
|
|
var dragging = false;
|
|
|
var startY = 0;
|
|
|
resizeBar.addEventListener('mousedown', onMouseDown);
|
|
|
document.addEventListener('mousemove', onMouseMove);
|
|
|
document.addEventListener('mouseup', onMouseUp);
|
|
|
return function () {
|
|
|
resizeBar.removeEventListener('mousedown', onMouseDown);
|
|
|
document.removeEventListener('mousemove', onMouseMove);
|
|
|
document.removeEventListener('mouseup', onMouseUp);
|
|
|
};
|
|
|
}
|
|
|
}, [cm, resizeBarEl]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
setH(height);
|
|
|
}, [height]);
|
|
|
var fixedWidth = processSize(width);
|
|
|
var fixedHeight = processSize(h);
|
|
|
var style = {
|
|
|
width: fixedWidth,
|
|
|
height: fixedHeight
|
|
|
};
|
|
|
var saveTime = (0,_react_17_0_2_react.useMemo)(function () {
|
|
|
if (lastedUpdateTime) {
|
|
|
var d = new Date(lastedUpdateTime);
|
|
|
var _h = d.getHours();
|
|
|
var m = d.getMinutes();
|
|
|
var s = d.getSeconds();
|
|
|
_h = _h < 10 ? '0' + _h : _h;
|
|
|
m = m < 10 ? '0' + m : m;
|
|
|
s = s < 10 ? '0' + s : s;
|
|
|
return "".concat(_h, ":").concat(m, ":").concat(s);
|
|
|
}
|
|
|
return 0;
|
|
|
}, [lastedUpdateTime]);
|
|
|
var formatProgramFill = function formatProgramFill(str) {
|
|
|
var arr = [];
|
|
|
if (showNullProgramButton) {
|
|
|
var num = -1;
|
|
|
str = str.replace(/(@▁▁@|@▁@)/g, function (a, b, c) {
|
|
|
arr.push({
|
|
|
multiLine: !(a === ADD_SINGLE)
|
|
|
});
|
|
|
});
|
|
|
}
|
|
|
return arr;
|
|
|
};
|
|
|
function onCancelStorage() {
|
|
|
window.sessionStorage.removeItem(id);
|
|
|
setTip(false);
|
|
|
setLastedUpdateTime(0);
|
|
|
}
|
|
|
function onReset() {
|
|
|
setTip(false);
|
|
|
setLastedUpdateTime(0);
|
|
|
cm.setValue(window.sessionStorage.getItem(id));
|
|
|
}
|
|
|
function setValues(a, b) {
|
|
|
var content = cm.getValue();
|
|
|
content = content.replace(a, b);
|
|
|
setValue(content);
|
|
|
cm === null || cm === void 0 || cm.setValue(content);
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(_react_17_0_2_react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "markdown-editor-wrapper",
|
|
|
ref: containerEl,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "markdown-editor-container ".concat(className, " ").concat(preview ? 'on-preview' : '', " ").concat(miniToolbar ? 'mini' : '', " ").concat(isFull ? 'full-screen' : ''),
|
|
|
style: style,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(toolbar, {
|
|
|
insertTemp: insertTemp,
|
|
|
watch: preview,
|
|
|
fullScreen: isFull,
|
|
|
showNullButton: showNullButton,
|
|
|
showNullProgramButton: showNullProgramButton,
|
|
|
onActionCallback: onActionCallback,
|
|
|
hidetoolBar: hidetoolBar,
|
|
|
uuid: uuidRef.current,
|
|
|
setOpenPhones: function setOpenPhones() {
|
|
|
openPhoneRef.current = true;
|
|
|
}
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "markdown-editor-body",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "codemirror-container",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("textarea", {
|
|
|
ref: cmEl,
|
|
|
placeholder: placeholder
|
|
|
})
|
|
|
}), preview ? /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
ref: previewEl,
|
|
|
className: "preview-container",
|
|
|
children: [mode === "stex" && /*#__PURE__*/(0,jsx_runtime.jsx)(RenderHtml_stex, {
|
|
|
value: value
|
|
|
}), mode !== "stex" && /*#__PURE__*/(0,jsx_runtime.jsx)(RenderHtml/* default */.Z, {
|
|
|
disabledFill: disabledFill,
|
|
|
showProgramFill: showNullProgramButton,
|
|
|
value: value
|
|
|
})]
|
|
|
}) : null]
|
|
|
})]
|
|
|
})
|
|
|
}), showResizeBar ? /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
ref: resizeBarEl,
|
|
|
className: "editor-resize"
|
|
|
}) : null, /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
children: TitleDesc[action] ? /*#__PURE__*/(0,jsx_runtime.jsx)(es_modal/* default */.Z, {
|
|
|
centered: true,
|
|
|
title: TitleDesc[action],
|
|
|
open: true,
|
|
|
onCancel: onCancel,
|
|
|
footer: null,
|
|
|
className: "markdown-popup-form",
|
|
|
children: PluginEl
|
|
|
}) : null
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 984:
|
|
|
/*!*********************************************************!*\
|
|
|
!*** ./src/components/tpi-code-setting/CodeSetting.tsx ***!
|
|
|
\*********************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 59301);
|
|
|
/* harmony import */ var _index_less__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.less */ 91853);
|
|
|
/* harmony import */ var antd__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! antd */ 57809);
|
|
|
/* harmony import */ var antd__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! antd */ 78673);
|
|
|
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 37712);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var Option = antd__WEBPACK_IMPORTED_MODULE_3__["default"].Option;
|
|
|
/* harmony default export */ __webpack_exports__.Z = (function (_ref) {
|
|
|
var isTheoretical = _ref.isTheoretical,
|
|
|
onFontSizeChange = _ref.onFontSizeChange,
|
|
|
cmFontSize = _ref.cmFontSize,
|
|
|
cmCodeMode = _ref.cmCodeMode,
|
|
|
autoFormat = _ref.autoFormat,
|
|
|
onCodeModeChange = _ref.onCodeModeChange,
|
|
|
onTabToSpace = _ref.onTabToSpace,
|
|
|
onAutoFormat = _ref.onAutoFormat,
|
|
|
formatDocument = _ref.formatDocument,
|
|
|
_ref$className = _ref.className,
|
|
|
className = _ref$className === void 0 ? '' : _ref$className,
|
|
|
tabToSpace = _ref.tabToSpace,
|
|
|
children = _ref.children;
|
|
|
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)("div", {
|
|
|
className: "tpi-code-setting ".concat(className),
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("h3", {
|
|
|
children: "\u4EE3\u7801\u683C\u5F0F"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)("section", {
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)("div", {
|
|
|
className: "file-item",
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("b", {
|
|
|
children: "\u663E\u793A\u6A21\u5F0F"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(antd__WEBPACK_IMPORTED_MODULE_3__["default"], {
|
|
|
bordered: false,
|
|
|
size: "small",
|
|
|
value: cmCodeMode,
|
|
|
onChange: onCodeModeChange,
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(Option, {
|
|
|
value: 'vs',
|
|
|
children: "\u767D\u8272\u80CC\u666F"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(Option, {
|
|
|
value: 'vs-dark',
|
|
|
children: "\u9ED1\u8272\u80CC\u666F"
|
|
|
})]
|
|
|
})]
|
|
|
}), !isTheoretical && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)("div", {
|
|
|
className: "file-item",
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("b", {
|
|
|
children: "\u5B57\u4F53\u5927\u5C0F"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(antd__WEBPACK_IMPORTED_MODULE_3__["default"], {
|
|
|
bordered: false,
|
|
|
size: "small",
|
|
|
value: cmFontSize,
|
|
|
onChange: onFontSizeChange,
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(Option, {
|
|
|
value: 12,
|
|
|
children: "12px"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(Option, {
|
|
|
value: 14,
|
|
|
children: "14px"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(Option, {
|
|
|
value: 16,
|
|
|
children: "16px"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(Option, {
|
|
|
value: 18,
|
|
|
children: "18px"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(Option, {
|
|
|
value: 20,
|
|
|
children: "20px"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(Option, {
|
|
|
value: 22,
|
|
|
children: "22px"
|
|
|
})]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)("div", {
|
|
|
className: "file-item",
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("b", {
|
|
|
children: "Tab\u8F6C\u6362"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(antd__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z, {
|
|
|
checked: tabToSpace,
|
|
|
onChange: onTabToSpace
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("div", {
|
|
|
className: "file-item",
|
|
|
onClick: formatDocument,
|
|
|
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("b", {
|
|
|
style: {
|
|
|
cursor: "pointer"
|
|
|
},
|
|
|
children: "\u683C\u5F0F\u5316\u4EE3\u7801"
|
|
|
})
|
|
|
})]
|
|
|
})]
|
|
|
}), !isTheoretical && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("h3", {
|
|
|
children: "\u5FEB\u6377\u952E"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)("section", {
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)("div", {
|
|
|
className: "file-item",
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("b", {
|
|
|
children: "\u4FDD\u5B58\u4EE3\u7801"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("span", {
|
|
|
children: "Ctrl + S"
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)("div", {
|
|
|
className: "file-item",
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("b", {
|
|
|
children: "\u5524\u51FA\u5FEB\u6377\u952E\u5217\u8868"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("span", {
|
|
|
children: "F1 / Alt + F1"
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)("div", {
|
|
|
className: "file-item",
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("b", {
|
|
|
children: "\u5DE6\u53F3\u7F29\u8FDB"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("span", {
|
|
|
children: "Ctrl + ]/["
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)("div", {
|
|
|
className: "file-item",
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("b", {
|
|
|
children: "\u8DF3\u5230\u5339\u914D\u7684\u62EC\u53F7"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("span", {
|
|
|
children: "Ctrl + Shift + \\"
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)("div", {
|
|
|
className: "file-item",
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("b", {
|
|
|
children: "\u8F6C\u5230\u884C\u9996"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("span", {
|
|
|
children: "Home"
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)("div", {
|
|
|
className: "file-item",
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("b", {
|
|
|
children: "\u8F6C\u5230\u884C\u5C3E"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("span", {
|
|
|
children: "End"
|
|
|
})]
|
|
|
})]
|
|
|
}), children]
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 27085:
|
|
|
/*!***********************************************!*\
|
|
|
!*** ./src/pages/Demo/index.tsx + 15 modules ***!
|
|
|
\***********************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
// ESM COMPAT FLAG
|
|
|
__webpack_require__.r(__webpack_exports__);
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"default": function() { return /* binding */ Demo; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/index.js
|
|
|
var _react_17_0_2_react = __webpack_require__(59301);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/row/index.js
|
|
|
var row = __webpack_require__(95237);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/button/index.js
|
|
|
var es_button = __webpack_require__(3113);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/col/index.js
|
|
|
var col = __webpack_require__(43604);
|
|
|
// EXTERNAL MODULE: ./src/utils/fullscreen.ts
|
|
|
var fullscreen = __webpack_require__(93703);
|
|
|
// EXTERNAL MODULE: ./src/utils/fetch.ts
|
|
|
var fetch = __webpack_require__(78092);
|
|
|
// EXTERNAL MODULE: ./src/utils/util.tsx
|
|
|
var util = __webpack_require__(88123);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Demo/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var Demomodules = ({"flex_box_center":"flex_box_center___Ev3CJ","flex_space_between":"flex_space_between____62qx","flex_box_vertical_center":"flex_box_vertical_center___uaibF","flex_box_center_end":"flex_box_center_end___IccdO","flex_box_column":"flex_box_column___rYhKw","wrap":"wrap___d2dw2","full":"full___aj305"});
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/regeneratorRuntime.js
|
|
|
var regeneratorRuntime = __webpack_require__(7557);
|
|
|
var regeneratorRuntime_default = /*#__PURE__*/__webpack_require__.n(regeneratorRuntime);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/asyncToGenerator.js
|
|
|
var asyncToGenerator = __webpack_require__(41498);
|
|
|
var asyncToGenerator_default = /*#__PURE__*/__webpack_require__.n(asyncToGenerator);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/objectSpread2.js
|
|
|
var objectSpread2 = __webpack_require__(82242);
|
|
|
var objectSpread2_default = /*#__PURE__*/__webpack_require__.n(objectSpread2);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/slicedToArray.js
|
|
|
var slicedToArray = __webpack_require__(79800);
|
|
|
var slicedToArray_default = /*#__PURE__*/__webpack_require__.n(slicedToArray);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/objectWithoutProperties.js
|
|
|
var objectWithoutProperties = __webpack_require__(39647);
|
|
|
var objectWithoutProperties_default = /*#__PURE__*/__webpack_require__.n(objectWithoutProperties);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Demo/Warehouse/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var Warehousemodules = ({"flex_box_center":"flex_box_center___UTKCA","flex_space_between":"flex_space_between___vtxee","flex_box_vertical_center":"flex_box_vertical_center___uUC4R","flex_box_center_end":"flex_box_center_end___LS055","flex_box_column":"flex_box_column___hjR5l","menu":"menu___FPo7c","warehouse":"warehouse___QWVPT","header":"header___wP5Hx","title":"title___T5yXM","content":"content___w0dAS","left":"left___xZRzx","close":"close___KBRyH","right":"right___v5JXP","loading":"loading___SunBf","empty":"empty___dvPGr","tabs":"tabs___zD__Z","line":"line___VNd7N","footer":"footer___Yx5nS","commit":"commit___Ui8A5","blueLight":"blueLight___ETo3e","filePathWrp":"filePathWrp___qeMMR","filePath":"filePath___tc_hQ","bottom0":"bottom0___tgeX3"});
|
|
|
// EXTERNAL MODULE: ./src/.umi-production/exports.ts
|
|
|
var _umi_production_exports = __webpack_require__(3634);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/tabs/index.js + 24 modules
|
|
|
var tabs = __webpack_require__(99313);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/tooltip/index.js + 3 modules
|
|
|
var tooltip = __webpack_require__(6848);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/message/index.js + 4 modules
|
|
|
var message = __webpack_require__(8591);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/menu/index.js + 11 modules
|
|
|
var es_menu = __webpack_require__(20834);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/spin/index.js + 1 modules
|
|
|
var spin = __webpack_require__(71418);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/modal/index.js + 16 modules
|
|
|
var modal = __webpack_require__(43418);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/toConsumableArray.js
|
|
|
var toConsumableArray = __webpack_require__(37205);
|
|
|
var toConsumableArray_default = /*#__PURE__*/__webpack_require__.n(toConsumableArray);
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/service/index.js
|
|
|
var service = __webpack_require__(57014);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/tree/index.js + 8 modules
|
|
|
var tree = __webpack_require__(51218);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/dropdown/index.js + 1 modules
|
|
|
var dropdown = __webpack_require__(38854);
|
|
|
// EXTERNAL MODULE: ./node_modules/_react-copy-to-clipboard@5.0.2@react-copy-to-clipboard/lib/index.js
|
|
|
var lib = __webpack_require__(56102);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/form/index.js + 19 modules
|
|
|
var es_form = __webpack_require__(78241);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/input/index.js + 5 modules
|
|
|
var input = __webpack_require__(1056);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Demo/Warehouse/components/AddFile.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var AddFilemodules = ({"wrap":"wrap___SO6Mn","modal":"modal___zNd_3","title":"title___EX56C","path":"path___IqyHA","colorBlue":"colorBlue___MSdA7","width240":"width240___mU1C0","filePath":"filePath___v0Tze"});
|
|
|
// EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/jsx-runtime.js
|
|
|
var jsx_runtime = __webpack_require__(37712);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Demo/Warehouse/components/AddFolder.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var _excluded = ["shixunsDetail", "globalSetting", "loading", "user", "dispatch", "taskData", "isRepository"];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var AddFile = function AddFile(_ref) {
|
|
|
var shixunsDetail = _ref.shixunsDetail,
|
|
|
globalSetting = _ref.globalSetting,
|
|
|
loading = _ref.loading,
|
|
|
user = _ref.user,
|
|
|
dispatch = _ref.dispatch,
|
|
|
taskData = _ref.taskData,
|
|
|
isRepository = _ref.isRepository,
|
|
|
props = objectWithoutProperties_default()(_ref, _excluded);
|
|
|
var location = (0,_umi_production_exports.useLocation)();
|
|
|
var params = objectSpread2_default()(objectSpread2_default()({}, (0,_umi_production_exports.useParams)()), (0,_umi_production_exports.useLocation)().query);
|
|
|
var _useState = (0,_react_17_0_2_react.useState)({}),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
formValue = _useState2[0],
|
|
|
setFormValue = _useState2[1];
|
|
|
var shixunId = (0,_react_17_0_2_react.useRef)();
|
|
|
var _Form$useForm = es_form/* default */.Z.useForm(),
|
|
|
_Form$useForm2 = slicedToArray_default()(_Form$useForm, 1),
|
|
|
form = _Form$useForm2[0];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)(''),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
filePath = _useState4[0],
|
|
|
setFilePath = _useState4[1];
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (props.visible) {
|
|
|
form.resetFields();
|
|
|
}
|
|
|
}, [props.visible]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
var pathArray = sessionStorage.getItem('pathArray');
|
|
|
if (pathArray) {
|
|
|
// 拼接成绝对路径
|
|
|
var joinPath = pathArray.split(',').join('/');
|
|
|
var path = joinPath.indexOf('/') === 0 ? joinPath.substr(1) : joinPath;
|
|
|
setFilePath(path);
|
|
|
}
|
|
|
}, []);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
var _location$pathname;
|
|
|
shixunId.current = (_location$pathname = location.pathname) === null || _location$pathname === void 0 || (_location$pathname = _location$pathname.split('/')) === null || _location$pathname === void 0 ? void 0 : _location$pathname[2];
|
|
|
}, []);
|
|
|
var handleFinish = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var values,
|
|
|
res,
|
|
|
_args = arguments;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
values = _args.length > 0 && _args[0] !== undefined ? _args[0] : {};
|
|
|
_context.next = 3;
|
|
|
return dispatch({
|
|
|
type: 'shixunsDetail/addRepositoryFile',
|
|
|
payload: {
|
|
|
id: taskData.myshixun.identifier,
|
|
|
message: values.commitMessage,
|
|
|
content: '',
|
|
|
path: (!!props.defaultPath ? props.defaultPath + "/" : "") + values.path + '/' + (values.file || '.gitkeep'),
|
|
|
secret_repository: isRepository ? undefined : true
|
|
|
}
|
|
|
});
|
|
|
case 3:
|
|
|
res = _context.sent;
|
|
|
if ((res === null || res === void 0 ? void 0 : res.status) === 0) {
|
|
|
message/* default */.ZP.success("添加成功");
|
|
|
props.onOK({
|
|
|
path: (!!props.defaultPath ? props.defaultPath + "/" : "") + values.path + '/' + (values.file || '.gitkeep'),
|
|
|
name: values.path.split("/")[values.path.split("/").length - 1]
|
|
|
});
|
|
|
props.onClose();
|
|
|
}
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function handleFinish() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleReturn = function handleReturn() {
|
|
|
var _location$pathname2;
|
|
|
_umi_production_exports.history.push("/shixuns/".concat(shixunId.current, "/").concat((_location$pathname2 = location.pathname) === null || _location$pathname2 === void 0 || (_location$pathname2 = _location$pathname2.split('/')) === null || _location$pathname2 === void 0 ? void 0 : _location$pathname2[3]).concat(filePath ? "/master/shixun_show/".concat(filePath) : ""));
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
width: "60%",
|
|
|
centered: true,
|
|
|
open: props.visible,
|
|
|
wrapClassName: AddFilemodules.modal,
|
|
|
onOk: function onOk() {
|
|
|
form.submit();
|
|
|
},
|
|
|
onCancel: props.onClose,
|
|
|
title: "\u65B0\u5EFA\u6587\u4EF6\u5939",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("section", {
|
|
|
className: AddFilemodules.bg,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: AddFilemodules.wrap,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default */.Z, {
|
|
|
className: "mt10",
|
|
|
form: form,
|
|
|
scrollToFirstError: true,
|
|
|
layout: "vertical",
|
|
|
onFinish: handleFinish,
|
|
|
onChange: function onChange() {
|
|
|
var _value$path, _value$file, _arr$filter, _arr2$filter;
|
|
|
var value = objectSpread2_default()({}, form.getFieldsValue());
|
|
|
var arr = value === null || value === void 0 || (_value$path = value.path) === null || _value$path === void 0 ? void 0 : _value$path.split("");
|
|
|
var arr2 = value === null || value === void 0 || (_value$file = value.file) === null || _value$file === void 0 ? void 0 : _value$file.split("");
|
|
|
if (!!(arr !== null && arr !== void 0 && (_arr$filter = arr.filter(function (item) {
|
|
|
return item == "/";
|
|
|
})) !== null && _arr$filter !== void 0 && _arr$filter.length)) {
|
|
|
value.path = value.path.substring(0, value.path.length - 1);
|
|
|
}
|
|
|
if (!!(arr2 !== null && arr2 !== void 0 && (_arr2$filter = arr2.filter(function (item) {
|
|
|
return item == "/";
|
|
|
})) !== null && _arr2$filter !== void 0 && _arr2$filter.length)) {
|
|
|
value.file = value.file.substring(0, value.path.length - 1);
|
|
|
}
|
|
|
form.setFieldsValue(objectSpread2_default()({}, value));
|
|
|
setFormValue(value);
|
|
|
}
|
|
|
// onValuesChange={() => setFormValue({ ...form.getFieldsValue() })}
|
|
|
,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
label: "\u6587\u4EF6\u5939\u540D\u79F0\uFF1A",
|
|
|
name: "path",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: AddFilemodules.filePath,
|
|
|
children: props.defaultPath + "/"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "1",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
name: "path",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入文件夹名称'
|
|
|
}, {
|
|
|
whitespace: true,
|
|
|
message: '请勿输入空格'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
placeholder: "\u8BF7\u8F93\u5165\u6587\u4EF6\u5939\u540D\u79F0",
|
|
|
size: 'middle'
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
label: "\u6587\u4EF6\u540D\u79F0\uFF1A",
|
|
|
name: "file"
|
|
|
// rules={[
|
|
|
// { required: true, message: '请输入文件名称' },
|
|
|
// { whitespace: true, message: '请勿输入空格' }
|
|
|
// ]}
|
|
|
,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
placeholder: "\u8BF7\u8F93\u5165\u6587\u4EF6\u540D\u79F0\uFF0C\u5982\u679C\u4E0D\u586B\u5199\u7CFB\u7EDF\u5C06\u5728\u6587\u4EF6\u5939\u4E0B\u521B\u5EFA.gitkeep\u7684\u9ED8\u8BA4\u6587\u4EF6",
|
|
|
size: 'middle'
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
label: "\u63D0\u4EA4\u4FE1\u606F\uFF1A",
|
|
|
name: "commitMessage",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入提交信息'
|
|
|
}, {
|
|
|
whitespace: true,
|
|
|
message: '请勿输入空格'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
placeholder: "\u8BF7\u8F93\u5165\u672C\u6B21\u63D0\u4EA4\u7684\u4E3B\u8981\u4FE1\u606F\uFF0C\u5408\u7406\u7684\u63CF\u8FF0\u4FE1\u606F\u6709\u5229\u4E8E\u4EE3\u7801\u5386\u53F2\u8BB0\u5F55\u7684\u7BA1\u7406",
|
|
|
size: 'middle'
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
})
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var AddFolder = ((0,_umi_production_exports.connect)(function (_ref3) {
|
|
|
var shixunsDetail = _ref3.shixunsDetail,
|
|
|
loading = _ref3.loading,
|
|
|
globalSetting = _ref3.globalSetting,
|
|
|
user = _ref3.user;
|
|
|
return {
|
|
|
shixunsDetail: shixunsDetail,
|
|
|
globalSetting: globalSetting,
|
|
|
user: user,
|
|
|
loading: loading.models.index
|
|
|
};
|
|
|
})(AddFile));
|
|
|
// EXTERNAL MODULE: ./src/components/markdown-editor/code-block/index.tsx
|
|
|
var code_block = __webpack_require__(57606);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Demo/Warehouse/components/AddFile.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var AddFile_excluded = ["shixunsDetail", "globalSetting", "loading", "user", "taskData", "dispatch", "isRepository", "onClose"];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var AddFile_AddFile = function AddFile(_ref) {
|
|
|
var shixunsDetail = _ref.shixunsDetail,
|
|
|
globalSetting = _ref.globalSetting,
|
|
|
loading = _ref.loading,
|
|
|
user = _ref.user,
|
|
|
taskData = _ref.taskData,
|
|
|
dispatch = _ref.dispatch,
|
|
|
isRepository = _ref.isRepository,
|
|
|
onClose = _ref.onClose,
|
|
|
props = objectWithoutProperties_default()(_ref, AddFile_excluded);
|
|
|
var location = (0,_umi_production_exports.useLocation)();
|
|
|
var params = objectSpread2_default()(objectSpread2_default()({}, (0,_umi_production_exports.useParams)()), (0,_umi_production_exports.useLocation)().query);
|
|
|
var _useState = (0,_react_17_0_2_react.useState)({}),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
formValue = _useState2[0],
|
|
|
setFormValue = _useState2[1];
|
|
|
var shixunId = (0,_react_17_0_2_react.useRef)();
|
|
|
var _Form$useForm = es_form/* default */.Z.useForm(),
|
|
|
_Form$useForm2 = slicedToArray_default()(_Form$useForm, 1),
|
|
|
form = _Form$useForm2[0];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)(''),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
filePath = _useState4[0],
|
|
|
setFilePath = _useState4[1];
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (props.visible) {
|
|
|
form.resetFields();
|
|
|
}
|
|
|
}, [props.visible]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
var pathArray = sessionStorage.getItem('pathArray');
|
|
|
if (pathArray) {
|
|
|
// 拼接成绝对路径
|
|
|
var joinPath = pathArray.split(',').join('/');
|
|
|
var path = joinPath.indexOf('/') === 0 ? joinPath.substr(1) : joinPath;
|
|
|
setFilePath(path);
|
|
|
}
|
|
|
}, []);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
var _location$pathname;
|
|
|
shixunId.current = (_location$pathname = location.pathname) === null || _location$pathname === void 0 || (_location$pathname = _location$pathname.split('/')) === null || _location$pathname === void 0 ? void 0 : _location$pathname[2];
|
|
|
}, []);
|
|
|
var handleFinish = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var values,
|
|
|
res,
|
|
|
_args = arguments;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
values = _args.length > 0 && _args[0] !== undefined ? _args[0] : {};
|
|
|
_context.next = 3;
|
|
|
return (0,service/* addMyRepositoryFile */.MI)({
|
|
|
// id: params.id,
|
|
|
id: taskData.myshixun.identifier,
|
|
|
message: values.commitMessage,
|
|
|
content: values.codeMirror,
|
|
|
path: (!!props.defaultPath ? props.defaultPath + "/" : "") + values.path,
|
|
|
secret_repository: isRepository ? undefined : true
|
|
|
});
|
|
|
case 3:
|
|
|
res = _context.sent;
|
|
|
if ((res === null || res === void 0 ? void 0 : res.status) === 0) {
|
|
|
message/* default */.ZP.success("添加成功");
|
|
|
props.onOK({
|
|
|
path: (!!props.defaultPath ? props.defaultPath + "/" : "") + values.path,
|
|
|
name: values.path.split("/")[values.path.split("/").length - 1]
|
|
|
});
|
|
|
onClose();
|
|
|
// const returnUrl = isRepository.current ?
|
|
|
// `/shixuns/${shixunId.current}/repository${filePath ? `/master/shixun_show/${filePath}` : ""}` :
|
|
|
// `/shixuns/${shixunId.current}/secret_repository`;
|
|
|
// history.replace(returnUrl);
|
|
|
}
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function handleFinish() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleReturn = function handleReturn() {
|
|
|
var _location$pathname2;
|
|
|
_umi_production_exports.history.push("/shixuns/".concat(shixunId.current, "/").concat((_location$pathname2 = location.pathname) === null || _location$pathname2 === void 0 || (_location$pathname2 = _location$pathname2.split('/')) === null || _location$pathname2 === void 0 ? void 0 : _location$pathname2[3]).concat(filePath ? "/master/shixun_show/".concat(filePath) : ""));
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
width: "60%",
|
|
|
open: props.visible,
|
|
|
wrapClassName: AddFilemodules.modal,
|
|
|
centered: true,
|
|
|
onOk: function onOk() {
|
|
|
form.submit();
|
|
|
},
|
|
|
onCancel: onClose,
|
|
|
title: "\u65B0\u5EFA\u6587\u4EF6",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("section", {
|
|
|
className: AddFilemodules.bg,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: AddFilemodules.wrap,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default */.Z, {
|
|
|
className: "mt10",
|
|
|
form: form,
|
|
|
scrollToFirstError: true,
|
|
|
layout: "vertical",
|
|
|
onFinish: handleFinish,
|
|
|
onChange: function onChange() {
|
|
|
var _value$path, _arr$filter;
|
|
|
var value = objectSpread2_default()({}, form.getFieldsValue());
|
|
|
var arr = value === null || value === void 0 || (_value$path = value.path) === null || _value$path === void 0 ? void 0 : _value$path.split("");
|
|
|
if ((arr === null || arr === void 0 || (_arr$filter = arr.filter(function (item) {
|
|
|
return item == "/";
|
|
|
})) === null || _arr$filter === void 0 ? void 0 : _arr$filter.length) > 1) {
|
|
|
value.path = value.path.substring(0, value.path.length - 1);
|
|
|
}
|
|
|
form.setFieldsValue(objectSpread2_default()({}, value));
|
|
|
setFormValue(value);
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
label: "\u6587\u4EF6\u540D\u79F0\u6216\u6587\u4EF6\u8DEF\u5F84\uFF1A",
|
|
|
name: "path",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: AddFilemodules.filePath,
|
|
|
children: props.defaultPath + "/"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "1",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
name: "path",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入文件名称'
|
|
|
}, {
|
|
|
whitespace: true,
|
|
|
message: '请勿输入空格'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
placeholder: "\u8BF7\u8F93\u5165\u6587\u4EF6\u540D\u79F0",
|
|
|
size: 'middle'
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
label: "\u63D0\u4EA4\u4FE1\u606F\uFF1A",
|
|
|
name: "commitMessage",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入提交信息'
|
|
|
}, {
|
|
|
whitespace: true,
|
|
|
message: '请勿输入空格'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
placeholder: "\u8BF7\u8F93\u5165\u672C\u6B21\u63D0\u4EA4\u7684\u4E3B\u8981\u4FE1\u606F\uFF0C\u5408\u7406\u7684\u63CF\u8FF0\u4FE1\u606F\u6709\u5229\u4E8E\u4EE3\u7801\u5386\u53F2\u8BB0\u5F55\u7684\u7BA1\u7406",
|
|
|
size: 'middle'
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "mt10 mb20",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
name: "codeMirror",
|
|
|
label: "\u6587\u4EF6\u5185\u5BB9\uFF1A",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入文件内容'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(code_block/* MyCodeMirror */.h, {
|
|
|
options: {
|
|
|
modal: "javascript",
|
|
|
lineNumbers: true,
|
|
|
theme: "railscasts",
|
|
|
indentUnit: 4,
|
|
|
matchBrackets: true,
|
|
|
autoRefresh: true,
|
|
|
smartIndent: true,
|
|
|
extraKeys: {
|
|
|
"Alt-/": "autocomplete"
|
|
|
},
|
|
|
autofocus: true,
|
|
|
styleActiveLine: true,
|
|
|
lint: true,
|
|
|
linkurl: '',
|
|
|
gutters: ["CodeMirror-linenumbers", "breakpoints", "CodeMirror-lint-markers"]
|
|
|
}
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
})
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var components_AddFile = ((0,_umi_production_exports.connect)(function (_ref3) {
|
|
|
var shixunsDetail = _ref3.shixunsDetail,
|
|
|
loading = _ref3.loading,
|
|
|
globalSetting = _ref3.globalSetting,
|
|
|
user = _ref3.user;
|
|
|
return {
|
|
|
shixunsDetail: shixunsDetail,
|
|
|
globalSetting: globalSetting,
|
|
|
user: user,
|
|
|
loading: loading.models.index
|
|
|
};
|
|
|
})(AddFile_AddFile));
|
|
|
;// CONCATENATED MODULE: ./src/pages/Demo/Warehouse/components/RenameFile.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var RenameFile_excluded = ["shixunsDetail", "globalSetting", "loading", "user", "dispatch", "isRepository", "taskData"];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var RenameFile_AddFile = function AddFile(_ref) {
|
|
|
var shixunsDetail = _ref.shixunsDetail,
|
|
|
globalSetting = _ref.globalSetting,
|
|
|
loading = _ref.loading,
|
|
|
user = _ref.user,
|
|
|
dispatch = _ref.dispatch,
|
|
|
isRepository = _ref.isRepository,
|
|
|
taskData = _ref.taskData,
|
|
|
props = objectWithoutProperties_default()(_ref, RenameFile_excluded);
|
|
|
var location = (0,_umi_production_exports.useLocation)();
|
|
|
var params = objectSpread2_default()(objectSpread2_default()({}, (0,_umi_production_exports.useParams)()), (0,_umi_production_exports.useLocation)().query);
|
|
|
var _useState = (0,_react_17_0_2_react.useState)({}),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
formValue = _useState2[0],
|
|
|
setFormValue = _useState2[1];
|
|
|
var shixunId = (0,_react_17_0_2_react.useRef)();
|
|
|
var _Form$useForm = es_form/* default */.Z.useForm(),
|
|
|
_Form$useForm2 = slicedToArray_default()(_Form$useForm, 1),
|
|
|
form = _Form$useForm2[0];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)(''),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
filePath = _useState4[0],
|
|
|
setFilePath = _useState4[1];
|
|
|
var _useState5 = (0,_react_17_0_2_react.useState)(''),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
fileName = _useState6[0],
|
|
|
setFileName = _useState6[1];
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (props.visible) {
|
|
|
form.resetFields();
|
|
|
}
|
|
|
}, [props.visible]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
var pathArray = props.defaultPath.split("/");
|
|
|
// if (pathArray) {
|
|
|
// // 拼接成绝对路径
|
|
|
// const joinPath = pathArray.split(',').join('/');
|
|
|
// const path = joinPath.indexOf('/') === 0 ? joinPath.substr(1) : joinPath;
|
|
|
// setFilePath(path);
|
|
|
// }
|
|
|
if (pathArray.length === 1) {
|
|
|
setFilePath("");
|
|
|
setFileName(props.defaultPath);
|
|
|
} else {
|
|
|
setFileName(pathArray.pop());
|
|
|
setFilePath(pathArray.join("/") + "/");
|
|
|
}
|
|
|
}, [props.defaultPath]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
var _location$pathname;
|
|
|
shixunId.current = (_location$pathname = location.pathname) === null || _location$pathname === void 0 || (_location$pathname = _location$pathname.split('/')) === null || _location$pathname === void 0 ? void 0 : _location$pathname[2];
|
|
|
}, []);
|
|
|
var handleFinish = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var _taskData$shixun;
|
|
|
var values,
|
|
|
res,
|
|
|
_args = arguments;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
values = _args.length > 0 && _args[0] !== undefined ? _args[0] : {};
|
|
|
_context.next = 3;
|
|
|
return (0,service/* moveMyGitFile */.g7)({
|
|
|
id: taskData === null || taskData === void 0 || (_taskData$shixun = taskData.shixun) === null || _taskData$shixun === void 0 ? void 0 : _taskData$shixun.identifier,
|
|
|
from: props.defaultPath,
|
|
|
to: filePath + values.path,
|
|
|
message: values.commitMessage || "".concat(props.defaultPath, " rename to ").concat(filePath).concat(values.path, " ")
|
|
|
});
|
|
|
case 3:
|
|
|
res = _context.sent;
|
|
|
if ((res === null || res === void 0 ? void 0 : res.status) === 0) {
|
|
|
message/* default */.ZP.success("操作成功");
|
|
|
props.onOK({
|
|
|
path: values.path,
|
|
|
name: values.path
|
|
|
});
|
|
|
props.onClose();
|
|
|
// const returnUrl = isRepository.current ?
|
|
|
// `/shixuns/${shixunId.current}/repository${filePath ? `/master/shixun_show/${filePath}` : ""}` :
|
|
|
// `/shixuns/${shixunId.current}/secret_repository`;
|
|
|
// history.replace(returnUrl);
|
|
|
}
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function handleFinish() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleReturn = function handleReturn() {
|
|
|
var _location$pathname2;
|
|
|
_umi_production_exports.history.push("/shixuns/".concat(shixunId.current, "/").concat((_location$pathname2 = location.pathname) === null || _location$pathname2 === void 0 || (_location$pathname2 = _location$pathname2.split('/')) === null || _location$pathname2 === void 0 ? void 0 : _location$pathname2[3]).concat(filePath ? "/master/shixun_show/".concat(filePath) : ""));
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
width: "40%",
|
|
|
open: props.visible,
|
|
|
wrapClassName: AddFilemodules.modal,
|
|
|
centered: true,
|
|
|
onOk: function onOk() {
|
|
|
form.submit();
|
|
|
},
|
|
|
onCancel: props.onClose,
|
|
|
title: "\u63D0\u4EA4\u8BF4\u660E",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("section", {
|
|
|
className: AddFilemodules.bg,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: AddFilemodules.wrap,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default */.Z, {
|
|
|
className: "mt10",
|
|
|
form: form,
|
|
|
scrollToFirstError: true,
|
|
|
layout: "vertical",
|
|
|
onFinish: handleFinish,
|
|
|
onChange: function onChange() {
|
|
|
var _value$path, _arr$filter;
|
|
|
var value = objectSpread2_default()({}, form.getFieldsValue());
|
|
|
var arr = value === null || value === void 0 || (_value$path = value.path) === null || _value$path === void 0 ? void 0 : _value$path.split("");
|
|
|
if ((arr === null || arr === void 0 || (_arr$filter = arr.filter(function (item) {
|
|
|
return item == "/";
|
|
|
})) === null || _arr$filter === void 0 ? void 0 : _arr$filter.length) > 1) {
|
|
|
value.path = value.path.substring(0, value.path.length - 1);
|
|
|
}
|
|
|
form.setFieldsValue(objectSpread2_default()({}, value));
|
|
|
setFormValue(value);
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
label: "\u91CD\u547D\u540D\uFF1A",
|
|
|
name: "path",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(row/* default */.Z, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "1",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
name: "path",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入文件名称'
|
|
|
}, {
|
|
|
whitespace: true,
|
|
|
message: '请勿输入空格'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
placeholder: "\u8BF7\u8F93\u5165\u6587\u4EF6\u540D\u79F0",
|
|
|
size: 'middle',
|
|
|
defaultValue: fileName
|
|
|
})
|
|
|
})
|
|
|
})
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
label: "\u63D0\u4EA4\u4FE1\u606F\uFF1A",
|
|
|
name: "commitMessage",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
placeholder: "\u5982\u4E0D\u586B\u5199\uFF0C\u9ED8\u8BA4\u63D0\u4EA4\u4FE1\u606F\u662F\uFF08".concat(props.defaultPath, " rename to \u65B0\u7684\u540D\u79F0 \uFF09"),
|
|
|
size: 'middle'
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
})
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var RenameFile = ((0,_umi_production_exports.connect)(function (_ref3) {
|
|
|
var shixunsDetail = _ref3.shixunsDetail,
|
|
|
loading = _ref3.loading,
|
|
|
globalSetting = _ref3.globalSetting,
|
|
|
user = _ref3.user;
|
|
|
return {
|
|
|
shixunsDetail: shixunsDetail,
|
|
|
globalSetting: globalSetting,
|
|
|
user: user,
|
|
|
loading: loading.models.index
|
|
|
};
|
|
|
})(RenameFile_AddFile));
|
|
|
// EXTERNAL MODULE: ./src/utils/env.ts + 1 modules
|
|
|
var env = __webpack_require__(80548);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/upload/index.js + 24 modules
|
|
|
var upload = __webpack_require__(48826);
|
|
|
// EXTERNAL MODULE: ./src/pages/Shixuns/Detail/Repository/components/SelectFilePathModal/index.tsx + 1 modules
|
|
|
var SelectFilePathModal = __webpack_require__(56925);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Demo/Warehouse/components/UploadFile.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var UploadFilemodules = ({"wrap":"wrap___zK3Vy","title":"title___BgjCb","path":"path___POFX3","colorBlue":"colorBlue___H4_iQ"});
|
|
|
;// CONCATENATED MODULE: ./src/pages/Demo/Warehouse/components/UploadFile.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var UploadFile_excluded = ["shixunsDetail", "globalSetting", "loading", "user", "taskData", "dispatch", "isRepository"];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// import SelectFilePathModal from '../../../../De/components/SelectFilePathModal';
|
|
|
|
|
|
|
|
|
|
|
|
var Dragger = upload/* default */.Z.Dragger;
|
|
|
var UploadFile = function UploadFile(_ref) {
|
|
|
var _taskData$myshixun;
|
|
|
var shixunsDetail = _ref.shixunsDetail,
|
|
|
globalSetting = _ref.globalSetting,
|
|
|
loading = _ref.loading,
|
|
|
user = _ref.user,
|
|
|
taskData = _ref.taskData,
|
|
|
dispatch = _ref.dispatch,
|
|
|
isRepository = _ref.isRepository,
|
|
|
props = objectWithoutProperties_default()(_ref, UploadFile_excluded);
|
|
|
var location = (0,_umi_production_exports.useLocation)();
|
|
|
var params = objectSpread2_default()(objectSpread2_default()({}, (0,_umi_production_exports.useParams)()), (0,_umi_production_exports.useLocation)().query);
|
|
|
var _useState = (0,_react_17_0_2_react.useState)({}),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
formValue = _useState2[0],
|
|
|
setFormValue = _useState2[1];
|
|
|
var shixunId = (0,_react_17_0_2_react.useRef)();
|
|
|
var _Form$useForm = es_form/* default */.Z.useForm(),
|
|
|
_Form$useForm2 = slicedToArray_default()(_Form$useForm, 1),
|
|
|
form = _Form$useForm2[0];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)([]),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
fileList = _useState4[0],
|
|
|
setFileList = _useState4[1];
|
|
|
var _useState5 = (0,_react_17_0_2_react.useState)(),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
filePath = _useState6[0],
|
|
|
setFilePath = _useState6[1];
|
|
|
var filename;
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (props.visible) {
|
|
|
form.resetFields();
|
|
|
setFileList([]);
|
|
|
}
|
|
|
}, [props.visible]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
shixunId.current = params.id;
|
|
|
}, []);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
var pathArray = sessionStorage.getItem('pathArray');
|
|
|
if (pathArray) {
|
|
|
// 拼接成绝对路径
|
|
|
var joinPath = pathArray.split(',').join('/');
|
|
|
var path = joinPath.indexOf('/') === 0 ? joinPath.substr(1) : joinPath;
|
|
|
setFilePath(path);
|
|
|
}
|
|
|
}, []);
|
|
|
var handleChangeFile = function handleChangeFile(info) {
|
|
|
filename = info.file.name;
|
|
|
if (info.file.status === 'done' || info.file.status === "uploading") {
|
|
|
var _info$file$response, _info$file$response2, _info$file$response3;
|
|
|
setFileList(info.fileList);
|
|
|
if (!info.file.response) {
|
|
|
return;
|
|
|
}
|
|
|
if (((_info$file$response = info.file.response) === null || _info$file$response === void 0 ? void 0 : _info$file$response.status) === 0) {
|
|
|
message/* default */.ZP.success("上传成功!");
|
|
|
return;
|
|
|
}
|
|
|
setFileList(fileList.filter(function (item) {
|
|
|
return item.uid !== info.file.uid;
|
|
|
}));
|
|
|
((_info$file$response2 = info.file.response) === null || _info$file$response2 === void 0 ? void 0 : _info$file$response2.message) && message/* default */.ZP.info((_info$file$response3 = info.file.response) === null || _info$file$response3 === void 0 ? void 0 : _info$file$response3.message);
|
|
|
}
|
|
|
};
|
|
|
var handleRemoveFile = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee(info) {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
if (info.response) {
|
|
|
_context.next = 3;
|
|
|
break;
|
|
|
}
|
|
|
message/* default */.ZP.info("还未上传完成,无法进行删除操作!");
|
|
|
return _context.abrupt("return");
|
|
|
case 3:
|
|
|
_context.next = 5;
|
|
|
return dispatch({
|
|
|
type: 'shixunsDetail/deleteGitFile',
|
|
|
payload: {
|
|
|
id: params.id,
|
|
|
path: filePath ? "".concat(filePath, "/").concat(info.name) : info.name,
|
|
|
message: form.getFieldValue('commitMessage') || "\u5220\u9664\u4E86".concat(filePath ? "".concat(filePath, "/").concat(info.name) : info.name),
|
|
|
secret_repository: isRepository ? null : true
|
|
|
}
|
|
|
});
|
|
|
case 5:
|
|
|
res = _context.sent;
|
|
|
if (res.status === 0) {
|
|
|
setFileList(fileList.filter(function (item) {
|
|
|
return item.uid !== info.uid;
|
|
|
}));
|
|
|
message/* default */.ZP.info("删除成功");
|
|
|
}
|
|
|
case 7:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function handleRemoveFile(_x) {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var draggerProps = {
|
|
|
height: 300,
|
|
|
multiple: true,
|
|
|
withCredentials: true,
|
|
|
data: function () {
|
|
|
var _data = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee4() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee4$(_context4) {
|
|
|
while (1) switch (_context4.prev = _context4.next) {
|
|
|
case 0:
|
|
|
return _context4.abrupt("return", new Promise( /*#__PURE__*/function () {
|
|
|
var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3(resolve, reject) {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
setTimeout( /*#__PURE__*/asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
var v, data;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
_context2.next = 2;
|
|
|
return form.getFieldsValue();
|
|
|
case 2:
|
|
|
v = _context2.sent;
|
|
|
data = objectSpread2_default()(objectSpread2_default()({}, {
|
|
|
path: !!props.defaultPath ? props.defaultPath : "",
|
|
|
message: formValue.commitMessage || "\u4E0A\u4F20\u4E86".concat(filename)
|
|
|
}), isRepository ? {} : {
|
|
|
secret_repository: true
|
|
|
});
|
|
|
resolve(data);
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
})), 200);
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
}));
|
|
|
return function (_x2, _x3) {
|
|
|
return _ref3.apply(this, arguments);
|
|
|
};
|
|
|
}()));
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context4.stop();
|
|
|
}
|
|
|
}, _callee4);
|
|
|
}));
|
|
|
function data() {
|
|
|
return _data.apply(this, arguments);
|
|
|
}
|
|
|
return data;
|
|
|
}(),
|
|
|
fileList: fileList,
|
|
|
method: "post",
|
|
|
action: "".concat(env/* default */.Z.API_SERVER, "/api/myshixuns/").concat(taskData === null || taskData === void 0 || (_taskData$myshixun = taskData.myshixun) === null || _taskData$myshixun === void 0 ? void 0 : _taskData$myshixun.identifier, "/upload_git_file.json"),
|
|
|
onChange: handleChangeFile,
|
|
|
onRemove: handleRemoveFile,
|
|
|
beforeUpload: function beforeUpload(file) {
|
|
|
filename = file.name;
|
|
|
// if (!form.getFieldValue('commitMessage')) {
|
|
|
// message.info("上传文件请先填写提交信息");
|
|
|
// return false;
|
|
|
// }
|
|
|
}
|
|
|
};
|
|
|
var handleFinish = /*#__PURE__*/function () {
|
|
|
var _ref5 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee5(values) {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee5$(_context5) {
|
|
|
while (1) switch (_context5.prev = _context5.next) {
|
|
|
case 0:
|
|
|
_context5.next = 2;
|
|
|
return form.validateFields();
|
|
|
case 2:
|
|
|
props.onClose();
|
|
|
props.onOK({
|
|
|
path: props.defaultPath
|
|
|
});
|
|
|
handleReturn();
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context5.stop();
|
|
|
}
|
|
|
}, _callee5);
|
|
|
}));
|
|
|
return function handleFinish(_x4) {
|
|
|
return _ref5.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleReturn = function handleReturn() {
|
|
|
// history.push(`/shixuns/${shixunId.current}/${location.pathname?.split('/')?.[3]}${filePath ? `/master/shixun_show/${filePath}` : ""}`)
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
open: props.visible,
|
|
|
onOk: handleFinish,
|
|
|
centered: true,
|
|
|
onCancel: props.onClose,
|
|
|
width: "70%",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("section", {
|
|
|
className: UploadFilemodules.bg,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: UploadFilemodules.wrap,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: UploadFilemodules.title,
|
|
|
children: "\u4E0A\u4F20\u6587\u4EF6"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default */.Z, {
|
|
|
className: "mt10",
|
|
|
form: form,
|
|
|
scrollToFirstError: true,
|
|
|
layout: "vertical",
|
|
|
onFinish: handleFinish,
|
|
|
onValuesChange: function onValuesChange() {
|
|
|
return setFormValue(objectSpread2_default()({}, form.getFieldsValue()));
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
label: "\u63D0\u4EA4\u4FE1\u606F\uFF1A",
|
|
|
name: "commitMessage",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入提交信息'
|
|
|
}, {
|
|
|
whitespace: true,
|
|
|
message: '请勿输入空格'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
placeholder: "\u5FC5\u586B\uFF0C\u63CF\u8FF0\u4E3B\u8981\u4FEE\u6539\u5185\u5BB9\uFF08\u76F8\u5F53\u4E8EGit Commit message\u7684Header\uFF09"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
label: "\u9009\u62E9\u6587\u4EF6",
|
|
|
name: "file",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请选择文件'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(Dragger, objectSpread2_default()(objectSpread2_default()({}, draggerProps), {}, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-shangchuan font50 ".concat(UploadFilemodules.colorBlue)
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "font14 mt30",
|
|
|
children: ["\u62D6\u62FD\u6587\u4EF6\u6216", /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "".concat(UploadFilemodules.colorBlue, " ml5"),
|
|
|
children: "\u70B9\u51FB\u6B64\u5904\u4E0A\u4F20"
|
|
|
})]
|
|
|
})]
|
|
|
}))
|
|
|
})]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(SelectFilePathModal/* default */.Z, {
|
|
|
onFinish: function onFinish(path) {
|
|
|
return setFilePath(path);
|
|
|
}
|
|
|
})]
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var components_UploadFile = ((0,_umi_production_exports.connect)(function (_ref6) {
|
|
|
var shixunsDetail = _ref6.shixunsDetail,
|
|
|
loading = _ref6.loading,
|
|
|
globalSetting = _ref6.globalSetting,
|
|
|
user = _ref6.user;
|
|
|
return {
|
|
|
shixunsDetail: shixunsDetail,
|
|
|
globalSetting: globalSetting,
|
|
|
user: user,
|
|
|
loading: loading.models.index
|
|
|
};
|
|
|
})(UploadFile));
|
|
|
;// CONCATENATED MODULE: ./src/pages/Demo/Warehouse/components/Tree.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var Treemodules = ({"flex_box_center":"flex_box_center___MMlsc","flex_space_between":"flex_space_between___ti22L","flex_box_vertical_center":"flex_box_vertical_center___YL4jC","flex_box_center_end":"flex_box_center_end___vx3wA","flex_box_column":"flex_box_column___eKe0F","headLeft":"headLeft___dsKhq","colorBlue":"colorBlue___gaxVL","wrap":"wrap___NLIaW","nodata":"nodata___zv745","nodataText":"nodataText___EWDiS","content":"content___i5G9Y","gitCode":"gitCode___W15AY","ellipsis":"ellipsis___sEcFA","menu":"menu___sjQxY","overlayClass":"overlayClass___ofgjv","tips":"tips___WEDOk"});
|
|
|
;// CONCATENATED MODULE: ./src/pages/Demo/Warehouse/components/SelectFilePathModal/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var SelectFilePathModalmodules = ({"wrap":"wrap___WB5qS","content":"content___HZdqT","mainPathWrap":"mainPathWrap___XMF09","colorBlue":"colorBlue___N9Dtz"});
|
|
|
;// CONCATENATED MODULE: ./src/pages/Demo/Warehouse/components/SelectFilePathModal/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var SelectFilePathModal_SelectFilePathModal = function SelectFilePathModal(_ref) {
|
|
|
var shixunsDetail = _ref.shixunsDetail,
|
|
|
globalSetting = _ref.globalSetting,
|
|
|
loading = _ref.loading,
|
|
|
dispatch = _ref.dispatch,
|
|
|
title = _ref.title,
|
|
|
_ref$pathList = _ref.pathList,
|
|
|
propsPathList = _ref$pathList === void 0 ? [] : _ref$pathList,
|
|
|
_ref$showInputPath = _ref.showInputPath,
|
|
|
showInputPath = _ref$showInputPath === void 0 ? false : _ref$showInputPath,
|
|
|
_ref$isMergeSelectFil = _ref.isMergeSelectFile,
|
|
|
isMergeSelectFile = _ref$isMergeSelectFil === void 0 ? false : _ref$isMergeSelectFil,
|
|
|
_ref$onFinish = _ref.onFinish,
|
|
|
onFinish = _ref$onFinish === void 0 ? function () {} : _ref$onFinish;
|
|
|
var _Form$useForm = es_form/* default */.Z.useForm(),
|
|
|
_Form$useForm2 = slicedToArray_default()(_Form$useForm, 1),
|
|
|
form = _Form$useForm2[0];
|
|
|
var params = objectSpread2_default()(objectSpread2_default()({}, (0,_umi_production_exports.useParams)()), (0,_umi_production_exports.useLocation)().query);
|
|
|
var location = (0,_umi_production_exports.useLocation)();
|
|
|
var isRepository = (0,_react_17_0_2_react.useRef)();
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(''),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
selectPath = _useState2[0],
|
|
|
setSelectPath = _useState2[1];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)(''),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
originPath = _useState4[0],
|
|
|
setOriginPath = _useState4[1];
|
|
|
var _useState5 = (0,_react_17_0_2_react.useState)([]),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
mainPathList = _useState6[0],
|
|
|
setMainPathList = _useState6[1];
|
|
|
var _useState7 = (0,_react_17_0_2_react.useState)([]),
|
|
|
_useState8 = slicedToArray_default()(_useState7, 2),
|
|
|
treeList = _useState8[0],
|
|
|
setTreeList = _useState8[1];
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
var _location$pathname;
|
|
|
isRepository.current = ((_location$pathname = location.pathname) === null || _location$pathname === void 0 || (_location$pathname = _location$pathname.split('/')) === null || _location$pathname === void 0 ? void 0 : _location$pathname[3]) === "repository";
|
|
|
}, []);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (shixunsDetail.actionTabs.key !== 'Repository-SelectFilePath') {
|
|
|
return;
|
|
|
}
|
|
|
var path = propsPathList.join('/');
|
|
|
var arr = [];
|
|
|
propsPathList.map(function (item, index) {
|
|
|
if (index === 0) {
|
|
|
arr.push({
|
|
|
val: "根目录",
|
|
|
path: ""
|
|
|
}, {
|
|
|
val: "/".concat(item),
|
|
|
path: path
|
|
|
});
|
|
|
} else {
|
|
|
arr.push({
|
|
|
val: "/".concat(item),
|
|
|
path: path
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
setMainPathList(arr);
|
|
|
setSelectPath(path);
|
|
|
setOriginPath(path);
|
|
|
handleGetPathData(path);
|
|
|
}, [shixunsDetail.actionTabs.key]);
|
|
|
var handleGetPathData = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee(path) {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.next = 2;
|
|
|
return dispatch({
|
|
|
type: isRepository.current ? 'shixunsDetail/getRepository' : 'shixunsDetail/getSecretRepository',
|
|
|
payload: {
|
|
|
id: params.id,
|
|
|
path: path
|
|
|
}
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context.sent;
|
|
|
if (res) {
|
|
|
setTreeList(res.trees || []);
|
|
|
}
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function handleGetPathData(_x) {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleClickTree = function handleClickTree(item) {
|
|
|
var newPath = selectPath;
|
|
|
if (item.type === "tree") {
|
|
|
mainPathList.length ? mainPathList.push({
|
|
|
val: "/".concat(item.name),
|
|
|
path: item.name
|
|
|
}) : mainPathList.push({
|
|
|
val: "根目录",
|
|
|
path: ""
|
|
|
}, {
|
|
|
val: "/".concat(item.name),
|
|
|
path: item.name
|
|
|
});
|
|
|
setMainPathList(mainPathList);
|
|
|
newPath = selectPath ? "".concat(selectPath, "/").concat(item.name) : item.name;
|
|
|
setSelectPath(newPath);
|
|
|
}
|
|
|
handleGetPathData(newPath);
|
|
|
};
|
|
|
var handleClickMainPath = function handleClickMainPath(item, index) {
|
|
|
var currentPathList = mainPathList.filter(function (_, key) {
|
|
|
return key <= index;
|
|
|
});
|
|
|
setMainPathList(currentPathList);
|
|
|
// 排除 ”根目录“,将选中的路径连接,去掉第一个字符串 “/”,获取绝对路径
|
|
|
var currentPath = currentPathList.filter(function (_, key) {
|
|
|
return key !== 0;
|
|
|
}).map(function (item) {
|
|
|
return item.val;
|
|
|
}).join('').substr(1);
|
|
|
setSelectPath(currentPath);
|
|
|
handleGetPathData(currentPath);
|
|
|
};
|
|
|
var handleOk = /*#__PURE__*/function () {
|
|
|
var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
var values, path, res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
values = form === null || form === void 0 ? void 0 : form.getFieldsValue();
|
|
|
path = selectPath ? "".concat(selectPath).concat(values !== null && values !== void 0 && values.name ? "/".concat(values === null || values === void 0 ? void 0 : values.name) : '') : values === null || values === void 0 ? void 0 : values.name;
|
|
|
if (!isMergeSelectFile) {
|
|
|
_context2.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
onFinish(path);
|
|
|
handleCancel();
|
|
|
return _context2.abrupt("return");
|
|
|
case 6:
|
|
|
if (!showInputPath) {
|
|
|
_context2.next = 16;
|
|
|
break;
|
|
|
}
|
|
|
_context2.next = 9;
|
|
|
return form.validateFields();
|
|
|
case 9:
|
|
|
_context2.next = 11;
|
|
|
return dispatch({
|
|
|
type: 'shixunsDetail/uploadGitFolder',
|
|
|
payload: objectSpread2_default()(objectSpread2_default()({}, {
|
|
|
id: params.id,
|
|
|
path: path
|
|
|
}), isRepository.current ? {} : {
|
|
|
secret_repository: true
|
|
|
})
|
|
|
});
|
|
|
case 11:
|
|
|
res = _context2.sent;
|
|
|
onFinish(originPath);
|
|
|
if (res.status === 0) {
|
|
|
message/* default */.ZP.info('新建成功');
|
|
|
}
|
|
|
_context2.next = 18;
|
|
|
break;
|
|
|
case 16:
|
|
|
onFinish(path);
|
|
|
message/* default */.ZP.success("选择文件目录成功");
|
|
|
case 18:
|
|
|
handleCancel();
|
|
|
case 19:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return function handleOk() {
|
|
|
return _ref3.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleCancel = function handleCancel() {
|
|
|
dispatch({
|
|
|
type: 'shixunsDetail/setActionTabs',
|
|
|
payload: {}
|
|
|
});
|
|
|
form.resetFields();
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
centered: true,
|
|
|
title: title || "新建文件夹",
|
|
|
closable: false,
|
|
|
keyboard: false,
|
|
|
open: shixunsDetail.actionTabs.key === 'Repository-SelectFilePath',
|
|
|
onOk: handleOk,
|
|
|
onCancel: handleCancel,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: SelectFilePathModalmodules.wrap,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: SelectFilePathModalmodules.content,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: SelectFilePathModalmodules.mainPathWrap,
|
|
|
children: !!(mainPathList !== null && mainPathList !== void 0 && mainPathList.length) && mainPathList.map(function (item, index) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: function onClick() {
|
|
|
return handleClickMainPath(item, index);
|
|
|
},
|
|
|
children: item.val
|
|
|
}, index);
|
|
|
})
|
|
|
}), !!(treeList !== null && treeList !== void 0 && treeList.length) && treeList.map(function (item, index) {
|
|
|
return item.type === "tree" && /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
onClick: function onClick() {
|
|
|
return handleClickTree(item);
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-wenjianjia ".concat(SelectFilePathModalmodules.colorBlue)
|
|
|
}), item.name]
|
|
|
}, index);
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("label", {
|
|
|
className: "mt5",
|
|
|
children: "\u9009\u4E2D\u7684\u65B0\u5EFA\u6587\u4EF6\u5939\u76EE\u5F55\uFF1A"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "mt5 mb5",
|
|
|
children: selectPath
|
|
|
}), showInputPath && /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z, {
|
|
|
form: form,
|
|
|
scrollToFirstError: true,
|
|
|
className: "mt20",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
name: "name",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入名称'
|
|
|
}, {
|
|
|
whitespace: true,
|
|
|
message: '请勿输入空格'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
placeholder: "\u8BF7\u8F93\u5165\u65B0\u6587\u4EF6\u5939\u540D/\u5B50\u6587\u4EF6\u5939\u540D\u3002\uFF08\u5982\uFF1Asrc/step1\uFF09"
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var components_SelectFilePathModal = ((0,_umi_production_exports.connect)(function (_ref4) {
|
|
|
var shixunsDetail = _ref4.shixunsDetail,
|
|
|
loading = _ref4.loading,
|
|
|
globalSetting = _ref4.globalSetting;
|
|
|
return {
|
|
|
shixunsDetail: shixunsDetail,
|
|
|
globalSetting: globalSetting,
|
|
|
loading: loading.models.index
|
|
|
};
|
|
|
})(SelectFilePathModal_SelectFilePathModal));
|
|
|
// EXTERNAL MODULE: ./node_modules/_@ant-design_icons@5.2.6@@ant-design/icons/es/icons/EllipsisOutlined.js + 1 modules
|
|
|
var EllipsisOutlined = __webpack_require__(93319);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@ant-design_icons@5.2.6@@ant-design/icons/es/icons/DownOutlined.js + 1 modules
|
|
|
var DownOutlined = __webpack_require__(42884);
|
|
|
// EXTERNAL MODULE: ./src/service/shixuns.ts
|
|
|
var shixuns = __webpack_require__(89442);
|
|
|
// EXTERNAL MODULE: ./node_modules/_lodash@4.17.21@lodash/lodash.js
|
|
|
var lodash = __webpack_require__(89392);
|
|
|
// EXTERNAL MODULE: ./src/utils/verifyLogin.tsx + 2 modules
|
|
|
var verifyLogin = __webpack_require__(35588);
|
|
|
// EXTERNAL MODULE: ./src/components/ImagesIcon/index.ts + 31 modules
|
|
|
var ImagesIcon = __webpack_require__(40563);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Demo/Warehouse/components/Tree.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var Tree_excluded = ["shixunsDetail", "globalSetting", "loading", "user", "activeKey", "dispatch", "taskData", "practiceSetting", "isRepository", "treeData", "setTreeData", "params"];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// import Edit from './components/Edit'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// import Right from '../components/Right'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var DirectoryTree = tree/* default */.Z.DirectoryTree;
|
|
|
var Repository = function Repository(_ref) {
|
|
|
var _taskData$challenge3, _shixunsDetail$detail4, _shixunsDetail$detail5;
|
|
|
var shixunsDetail = _ref.shixunsDetail,
|
|
|
globalSetting = _ref.globalSetting,
|
|
|
loading = _ref.loading,
|
|
|
user = _ref.user,
|
|
|
activeKey = _ref.activeKey,
|
|
|
dispatch = _ref.dispatch,
|
|
|
taskData = _ref.taskData,
|
|
|
practiceSetting = _ref.practiceSetting,
|
|
|
isRepository = _ref.isRepository,
|
|
|
treeData = _ref.treeData,
|
|
|
setTreeData = _ref.setTreeData,
|
|
|
params = _ref.params,
|
|
|
props = objectWithoutProperties_default()(_ref, Tree_excluded);
|
|
|
var location = (0,_umi_production_exports.useLocation)();
|
|
|
// const isRepository = useRef<boolean>()
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
checkedValue = _useState2[0],
|
|
|
setCheckedValue = _useState2[1];
|
|
|
// const [treeData, setTreeData] = useState([]);
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
showAddFile = _useState4[0],
|
|
|
setShowAddFile = _useState4[1];
|
|
|
var _useState5 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
showRenameFile = _useState6[0],
|
|
|
setShowRenameFile = _useState6[1];
|
|
|
var _useState7 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState8 = slicedToArray_default()(_useState7, 2),
|
|
|
showAddFolder = _useState8[0],
|
|
|
setShowAddFolder = _useState8[1];
|
|
|
var _useState9 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState10 = slicedToArray_default()(_useState9, 2),
|
|
|
showUploadFile = _useState10[0],
|
|
|
setShowUploadFile = _useState10[1];
|
|
|
var _useState11 = (0,_react_17_0_2_react.useState)(""),
|
|
|
_useState12 = slicedToArray_default()(_useState11, 2),
|
|
|
defaultPath = _useState12[0],
|
|
|
setDefaultPath = _useState12[1];
|
|
|
var _useState13 = (0,_react_17_0_2_react.useState)([]),
|
|
|
_useState14 = slicedToArray_default()(_useState13, 2),
|
|
|
expandedKeys = _useState14[0],
|
|
|
setExpandedKeys = _useState14[1];
|
|
|
var _useState15 = (0,_react_17_0_2_react.useState)([]),
|
|
|
_useState16 = slicedToArray_default()(_useState15, 2),
|
|
|
selectedKeys = _useState16[0],
|
|
|
setSelectedKeys = _useState16[1];
|
|
|
var _useState17 = (0,_react_17_0_2_react.useState)([]),
|
|
|
_useState18 = slicedToArray_default()(_useState17, 2),
|
|
|
treeList = _useState18[0],
|
|
|
setTreeList = _useState18[1];
|
|
|
var _useState19 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState20 = slicedToArray_default()(_useState19, 2),
|
|
|
visibleTip = _useState20[0],
|
|
|
setVisibleTip = _useState20[1];
|
|
|
var _useState21 = (0,_react_17_0_2_react.useState)(),
|
|
|
_useState22 = slicedToArray_default()(_useState21, 2),
|
|
|
commitInfo = _useState22[0],
|
|
|
setCommitInfo = _useState22[1];
|
|
|
var _useState23 = (0,_react_17_0_2_react.useState)(),
|
|
|
_useState24 = slicedToArray_default()(_useState23, 2),
|
|
|
secretDirPath = _useState24[0],
|
|
|
setSecretDirPath = _useState24[1];
|
|
|
var _useState25 = (0,_react_17_0_2_react.useState)(""),
|
|
|
_useState26 = slicedToArray_default()(_useState25, 2),
|
|
|
pathList = _useState26[0],
|
|
|
setPathList = _useState26[1];
|
|
|
var _useState27 = (0,_react_17_0_2_react.useState)(),
|
|
|
_useState28 = slicedToArray_default()(_useState27, 2),
|
|
|
newMergeValue = _useState28[0],
|
|
|
setNewMergeValue = _useState28[1];
|
|
|
var _useState29 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState30 = slicedToArray_default()(_useState29, 2),
|
|
|
isMergeSelectFile = _useState30[0],
|
|
|
setIsMergeSelectFile = _useState30[1];
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
setTreeData([]);
|
|
|
handleGetRepository("");
|
|
|
if (!localStorage.warehouseHideTip) {
|
|
|
setVisibleTip(true);
|
|
|
}
|
|
|
}, [location.pathname, isRepository]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
var _taskData$challenge;
|
|
|
if (taskData !== null && taskData !== void 0 && (_taskData$challenge = taskData.challenge) !== null && _taskData$challenge !== void 0 && _taskData$challenge.path && treeData !== null && treeData !== void 0 && treeData.length) {
|
|
|
var _taskData$challenge2, _cloneDeep;
|
|
|
var sePath = taskData === null || taskData === void 0 || (_taskData$challenge2 = taskData.challenge) === null || _taskData$challenge2 === void 0 || (_taskData$challenge2 = _taskData$challenge2.path) === null || _taskData$challenge2 === void 0 ? void 0 : _taskData$challenge2.replaceAll(';', '');
|
|
|
var filterTreeData = (_cloneDeep = (0,lodash.cloneDeep)(treeData)) === null || _cloneDeep === void 0 ? void 0 : _cloneDeep.filter(function (e) {
|
|
|
var _sePath$split;
|
|
|
return e.name === (sePath === null || sePath === void 0 || (_sePath$split = sePath.split('/')) === null || _sePath$split === void 0 ? void 0 : _sePath$split[0]);
|
|
|
});
|
|
|
initToPath(sePath);
|
|
|
if ((treeData === null || treeData === void 0 ? void 0 : treeData.length) !== 1) {
|
|
|
console.log(filterTreeData, 'filterTreeData');
|
|
|
setTreeData(filterTreeData);
|
|
|
}
|
|
|
}
|
|
|
}, [taskData === null || taskData === void 0 || (_taskData$challenge3 = taskData.challenge) === null || _taskData$challenge3 === void 0 ? void 0 : _taskData$challenge3.path, treeData]);
|
|
|
var initToPath = function initToPath(path) {
|
|
|
selectPath(path);
|
|
|
selectedKeys = [path];
|
|
|
setSelectedKeys([path]);
|
|
|
};
|
|
|
var handleMergeSelectFile = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var path,
|
|
|
res,
|
|
|
_args = arguments;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
path = _args.length > 0 && _args[0] !== undefined ? _args[0] : '';
|
|
|
_context.next = 3;
|
|
|
return (0,shixuns/* setSecretDir */.Zt)({
|
|
|
id: params.id,
|
|
|
secret_dir_path: path
|
|
|
});
|
|
|
case 3:
|
|
|
res = _context.sent;
|
|
|
res && setNewMergeValue(path);
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function handleMergeSelectFile() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var menu = function menu(item) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(es_menu/* default */.Z, {
|
|
|
className: Treemodules.menu,
|
|
|
onClick: function onClick(value) {
|
|
|
setDefaultPath(item.path || '');
|
|
|
switch (value.key) {
|
|
|
case "1":
|
|
|
(0,util/* trackEvent */.L9)(['实践项目', '设置', '代码仓库', '新建文件']);
|
|
|
setShowAddFile(true);
|
|
|
break;
|
|
|
case "2":
|
|
|
(0,util/* trackEvent */.L9)(['实践项目', '设置', '代码仓库', '新建文件夹']);
|
|
|
setShowAddFolder(true);
|
|
|
break;
|
|
|
case "3":
|
|
|
(0,util/* trackEvent */.L9)(['实践项目', '设置', '代码仓库', '上传']);
|
|
|
setShowUploadFile(true);
|
|
|
break;
|
|
|
case "4":
|
|
|
(0,util/* trackEvent */.L9)(['实践项目', '设置', '代码仓库', '重命名']);
|
|
|
setShowRenameFile(true);
|
|
|
break;
|
|
|
case "5":
|
|
|
(0,util/* trackEvent */.L9)(['实践项目', '设置', '代码仓库', '删除']);
|
|
|
handleDeleteFile(item.path, item.name, item);
|
|
|
break;
|
|
|
case "6":
|
|
|
(0,util/* trackEvent */.L9)(['实践项目', '设置', '代码仓库', '复制路径']);
|
|
|
copyFilePath(item);
|
|
|
break;
|
|
|
}
|
|
|
},
|
|
|
children: [(item.type === 'topTree' || item.type === 'tree') && /*#__PURE__*/(0,jsx_runtime.jsx)(es_menu/* default */.Z.Item, {
|
|
|
children: "\u65B0\u5EFA\u6587\u4EF6"
|
|
|
}, "1"), (item.type === 'topTree' || item.type === 'tree') && /*#__PURE__*/(0,jsx_runtime.jsx)(es_menu/* default */.Z.Item, {
|
|
|
children: "\u65B0\u5EFA\u6587\u4EF6\u5939"
|
|
|
}, "2"), (item.type === 'topTree' || item.type === 'tree') && /*#__PURE__*/(0,jsx_runtime.jsx)(es_menu/* default */.Z.Item, {
|
|
|
children: "\u4E0A\u4F20"
|
|
|
}, "3"), item.type !== 'topTree' && item.type !== 'tree' && /*#__PURE__*/(0,jsx_runtime.jsx)(es_menu/* default */.Z.Item, {
|
|
|
children: "\u91CD\u547D\u540D"
|
|
|
}, "4"), item.type !== 'topTree' && /*#__PURE__*/(0,jsx_runtime.jsx)(lib.CopyToClipboard, {
|
|
|
text: "/data/workspace/myshixun/".concat(!isRepository ? "secret/" : "").concat(item === null || item === void 0 ? void 0 : item.path),
|
|
|
onCopy: function onCopy() {
|
|
|
return message/* default */.ZP.success('复制成功');
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_menu/* default */.Z.Item, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(jsx_runtime.Fragment, {
|
|
|
children: "\u590D\u5236\u8DEF\u5F84"
|
|
|
})
|
|
|
}, "6")
|
|
|
}), item.type !== 'topTree' && /*#__PURE__*/(0,jsx_runtime.jsx)(es_menu/* default */.Z.Item, {
|
|
|
children: "\u5220\u9664"
|
|
|
}, "5")]
|
|
|
});
|
|
|
};
|
|
|
var createDom = function createDom(data, path) {
|
|
|
return data.map(function (item) {
|
|
|
if (path == '') {
|
|
|
item.path = path + item.name;
|
|
|
} else {
|
|
|
item.path = path + "/" + item.name;
|
|
|
}
|
|
|
item.title = /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
className: "font14",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "1",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "20px",
|
|
|
children: item.type === 'blob' && /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "iconfont icon-wenjian11 font12"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "1",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: " multi_ellipsis1",
|
|
|
children: item.name
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
children: (item.type === 'blob' || item.type === 'tree') && /*#__PURE__*/(0,jsx_runtime.jsx)(dropdown/* default */.Z, {
|
|
|
dropdownRender: function dropdownRender() {
|
|
|
return menu(item);
|
|
|
},
|
|
|
className: Treemodules.ellipsis,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-gengduo2 c-555a88"
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
item.disableCheckbox = checkedValue && checkedValue !== item.name;
|
|
|
item.className = item.type === 'tree' ? Treemodules.pl23 : '';
|
|
|
item.checkable = item.type !== 'tree';
|
|
|
item.isLeaf = item.type !== 'tree';
|
|
|
item.children = item.type === 'tree' && [];
|
|
|
item.key = item.path;
|
|
|
return item;
|
|
|
});
|
|
|
};
|
|
|
var selectPath = function selectPath(path) {
|
|
|
dispatch({
|
|
|
type: 'practiceSetting/setSideBarTabs',
|
|
|
payload: {
|
|
|
selectPath: path
|
|
|
}
|
|
|
});
|
|
|
};
|
|
|
var insertFile = /*#__PURE__*/function () {
|
|
|
var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2(path, name) {
|
|
|
var pathArr;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
pathArr = path.split("/");
|
|
|
_context2.next = 3;
|
|
|
return handleGetRepository(defaultPath);
|
|
|
case 3:
|
|
|
setTimeout(function () {
|
|
|
selectPath(path);
|
|
|
expandedKeys = [pathArr[0] || ''];
|
|
|
selectedKeys = [path];
|
|
|
setSelectedKeys(toConsumableArray_default()(selectedKeys));
|
|
|
setExpandedKeys(toConsumableArray_default()(expandedKeys));
|
|
|
}, 150);
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return function insertFile(_x, _x2) {
|
|
|
return _ref3.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var insertData = function insertData(data, path) {
|
|
|
console.log(data, 'data');
|
|
|
if (path == '') {
|
|
|
setTreeData(toConsumableArray_default()(data));
|
|
|
} else {
|
|
|
var d = updateTreeData(treeData, path, data);
|
|
|
setTreeData([].concat(d));
|
|
|
}
|
|
|
};
|
|
|
function updateTreeData(list, key, children) {
|
|
|
return list.map(function (node) {
|
|
|
if (node.key === key) {
|
|
|
node.children = toConsumableArray_default()(children);
|
|
|
return objectSpread2_default()({}, node);
|
|
|
} else if (node.children) {
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, node), {}, {
|
|
|
children: updateTreeData(node.children, key, children)
|
|
|
});
|
|
|
}
|
|
|
return node;
|
|
|
});
|
|
|
}
|
|
|
var handleGetRepository = /*#__PURE__*/function () {
|
|
|
var _ref4 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3() {
|
|
|
var _taskData$myshixun;
|
|
|
var path,
|
|
|
res,
|
|
|
_res$trees,
|
|
|
_res$commits,
|
|
|
d,
|
|
|
_args3 = arguments;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
path = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : '';
|
|
|
// const res = await dispatch({
|
|
|
// type: isRepository ? 'shixunsDetail/getRepository' : 'shixunsDetail/getSecretRepository',
|
|
|
// payload: {
|
|
|
// id: params.id,
|
|
|
// path
|
|
|
// }
|
|
|
// })
|
|
|
console.log("location:", location);
|
|
|
// return
|
|
|
_context3.next = 4;
|
|
|
return (0,service/* fetchRepos */.pU)(taskData === null || taskData === void 0 || (_taskData$myshixun = taskData.myshixun) === null || _taskData$myshixun === void 0 ? void 0 : _taskData$myshixun.identifier, {
|
|
|
path: path
|
|
|
});
|
|
|
case 4:
|
|
|
res = _context3.sent;
|
|
|
if (res) {
|
|
|
if (!!((_res$trees = res.trees) !== null && _res$trees !== void 0 && _res$trees.length)) {
|
|
|
d = createDom(toConsumableArray_default()(res.trees), path);
|
|
|
insertData(d, path);
|
|
|
setTreeList(res.trees || []);
|
|
|
setSecretDirPath((res === null || res === void 0 ? void 0 : res.secret_dir_path) || '');
|
|
|
console.log("handleGetRepository:", d, path);
|
|
|
setTimeout(function () {
|
|
|
return console.log(treeData);
|
|
|
}, 2000);
|
|
|
} else if (path == '') {
|
|
|
setTreeData([]);
|
|
|
}
|
|
|
setCommitInfo(((_res$commits = res.commits) === null || _res$commits === void 0 ? void 0 : _res$commits[0]) || {});
|
|
|
}
|
|
|
return _context3.abrupt("return", res);
|
|
|
case 7:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
}));
|
|
|
return function handleGetRepository() {
|
|
|
return _ref4.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var loadData = /*#__PURE__*/function () {
|
|
|
var _ref5 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee5(selectedKeys) {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee5$(_context5) {
|
|
|
while (1) switch (_context5.prev = _context5.next) {
|
|
|
case 0:
|
|
|
return _context5.abrupt("return", new Promise( /*#__PURE__*/function () {
|
|
|
var _ref6 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee4(resolve, reject) {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee4$(_context4) {
|
|
|
while (1) switch (_context4.prev = _context4.next) {
|
|
|
case 0:
|
|
|
if (!!selectedKeys.children.length) {
|
|
|
resolve();
|
|
|
}
|
|
|
setPathList(selectedKeys.path);
|
|
|
_context4.next = 4;
|
|
|
return handleGetRepository(selectedKeys.path);
|
|
|
case 4:
|
|
|
resolve();
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context4.stop();
|
|
|
}
|
|
|
}, _callee4);
|
|
|
}));
|
|
|
return function (_x4, _x5) {
|
|
|
return _ref6.apply(this, arguments);
|
|
|
};
|
|
|
}()));
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context5.stop();
|
|
|
}
|
|
|
}, _callee5);
|
|
|
}));
|
|
|
return function loadData(_x3) {
|
|
|
return _ref5.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleSelectTree = /*#__PURE__*/function () {
|
|
|
var _ref7 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee6(selectedKeys, data) {
|
|
|
var toNext, _practiceSetting$side;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee6$(_context6) {
|
|
|
while (1) switch (_context6.prev = _context6.next) {
|
|
|
case 0:
|
|
|
console.log("handleSelectTree", selectedKeys, data.nativeEvent.target.nodeName, data);
|
|
|
toNext = function toNext() {
|
|
|
selectPath(data.node.path);
|
|
|
selectedKeys = [data.node.path];
|
|
|
setSelectedKeys(toConsumableArray_default()(selectedKeys));
|
|
|
};
|
|
|
if (!(data.nativeEvent.target.nodeName === 'svg' || data.nativeEvent.target.nodeName === 'LI' || data.nativeEvent.target.nodeName === 'I')) {
|
|
|
_context6.next = 4;
|
|
|
break;
|
|
|
}
|
|
|
return _context6.abrupt("return");
|
|
|
case 4:
|
|
|
if (data.node.type === 'blob') {
|
|
|
if (practiceSetting !== null && practiceSetting !== void 0 && (_practiceSetting$side = practiceSetting.sideBar) !== null && _practiceSetting$side !== void 0 && _practiceSetting$side.confirmLeave) {
|
|
|
modal/* default */.Z.confirm({
|
|
|
title: "离开此页提示",
|
|
|
content: "系统可能不会保存您所做的更改。",
|
|
|
okText: "离开",
|
|
|
cancelText: "取消",
|
|
|
onOk: function onOk() {
|
|
|
toNext();
|
|
|
dispatch({
|
|
|
type: 'practiceSetting/setSideBarTabs',
|
|
|
payload: {
|
|
|
confirmLeave: false
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
} else {
|
|
|
toNext();
|
|
|
}
|
|
|
}
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context6.stop();
|
|
|
}
|
|
|
}, _callee6);
|
|
|
}));
|
|
|
return function handleSelectTree(_x6, _x7) {
|
|
|
return _ref7.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleDeleteFile = function handleDeleteFile(path, name, item) {
|
|
|
modal/* default */.Z.confirm({
|
|
|
centered: true,
|
|
|
title: "\u786E\u8BA4\u9700\u8981\u5220\u9664\u8BE5\u6587\u4EF6".concat(item.children ? "夹" : "", "?"),
|
|
|
okText: '确定',
|
|
|
cancelText: '取消',
|
|
|
onOk: function () {
|
|
|
var _onOk = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee7() {
|
|
|
var _taskData$myshixun2;
|
|
|
var res, pathArr, res2;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee7$(_context7) {
|
|
|
while (1) switch (_context7.prev = _context7.next) {
|
|
|
case 0:
|
|
|
_context7.next = 2;
|
|
|
return (0,service/* deleteMyGitFile */.bD)({
|
|
|
id: taskData === null || taskData === void 0 || (_taskData$myshixun2 = taskData.myshixun) === null || _taskData$myshixun2 === void 0 ? void 0 : _taskData$myshixun2.identifier,
|
|
|
path: path,
|
|
|
message: "\u5220\u9664".concat(path)
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context7.sent;
|
|
|
pathArr = path.split("/");
|
|
|
if (!((res === null || res === void 0 ? void 0 : res.status) === 0)) {
|
|
|
_context7.next = 20;
|
|
|
break;
|
|
|
}
|
|
|
message/* default */.ZP.info("删除成功");
|
|
|
pathArr.splice(pathArr.length - 1, 1);
|
|
|
_context7.next = 9;
|
|
|
return handleGetRepository(pathArr.length > 1 ? pathArr.join("/") : "");
|
|
|
case 9:
|
|
|
res2 = _context7.sent;
|
|
|
if (!(res2 !== null && res2 !== void 0 && res2.trees)) {
|
|
|
_context7.next = 13;
|
|
|
break;
|
|
|
}
|
|
|
_context7.next = 16;
|
|
|
break;
|
|
|
case 13:
|
|
|
pathArr.splice(pathArr.length - 1, 1);
|
|
|
_context7.next = 16;
|
|
|
return handleGetRepository(pathArr.length > 1 ? pathArr.join("/") : "");
|
|
|
case 16:
|
|
|
selectPath('');
|
|
|
return _context7.abrupt("return", true);
|
|
|
case 20:
|
|
|
if ((res === null || res === void 0 ? void 0 : res.status) === -3) {
|
|
|
modal/* default */.Z.info({
|
|
|
title: "删除失败",
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: ["\u8BE5\u6587\u4EF6\u201C", path, "\u201D\u5DF2\u7ECF\u88AB\u4EFB\u52A1\u5173\u5361\u7684\u5B66\u5458\u4EFB\u52A1\u6587\u4EF6\u6216\u8BC4\u6D4B\u6267\u884C\u6587\u4EF6\u4F7F\u7528\uFF0C\u8BF7\u5148\u4FEE\u6539\u4EFB\u52A1\u5173\u5361\u4E2D\u8BC4\u6D4B\u8BBE\u7F6E\u7684\u6587\u4EF6\u8DEF\u5F84\u540E\u518D\u5220\u9664\u3002"]
|
|
|
}),
|
|
|
okText: "我知道了",
|
|
|
// cancelText: "取消",
|
|
|
onOk: function onOk() {
|
|
|
// window.location.href = (`/shixuns/${params.id}/edit/${res?.message}/tab=2`)
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
case 21:
|
|
|
case "end":
|
|
|
return _context7.stop();
|
|
|
}
|
|
|
}, _callee7);
|
|
|
}));
|
|
|
function onOk() {
|
|
|
return _onOk.apply(this, arguments);
|
|
|
}
|
|
|
return onOk;
|
|
|
}()
|
|
|
});
|
|
|
};
|
|
|
var copyFilePath = function copyFilePath(item) {
|
|
|
//事件待定
|
|
|
console.log(item, 'item');
|
|
|
};
|
|
|
var handleExpand = /*#__PURE__*/function () {
|
|
|
var _ref8 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee8(key, node) {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee8$(_context8) {
|
|
|
while (1) switch (_context8.prev = _context8.next) {
|
|
|
case 0:
|
|
|
console.log("handleExpand", node);
|
|
|
if (!(node.nativeEvent.target.nodeName === "svg" || node.nativeEvent.target.nodeName === "path" || node.nativeEvent.target.nodeName === "LI")) {
|
|
|
_context8.next = 5;
|
|
|
break;
|
|
|
}
|
|
|
return _context8.abrupt("return", true);
|
|
|
case 5:
|
|
|
_context8.next = 7;
|
|
|
return loadData(node.node);
|
|
|
case 7:
|
|
|
if (expandedKeys.includes(node.node.path)) {
|
|
|
expandedKeys.splice(expandedKeys.indexOf(node.node.path), 1);
|
|
|
} else {
|
|
|
expandedKeys.push(node.node.path);
|
|
|
}
|
|
|
case 8:
|
|
|
setExpandedKeys(toConsumableArray_default()(expandedKeys));
|
|
|
case 9:
|
|
|
case "end":
|
|
|
return _context8.stop();
|
|
|
}
|
|
|
}, _callee8);
|
|
|
}));
|
|
|
return function handleExpand(_x8, _x9) {
|
|
|
return _ref8.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var closeTip = function closeTip() {
|
|
|
setVisibleTip(false);
|
|
|
localStorage.warehouseHideTip = true;
|
|
|
};
|
|
|
var handleChange = /*#__PURE__*/function () {
|
|
|
var _ref9 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee9(checked) {
|
|
|
var _shixunsDetail$detail;
|
|
|
var content, title, okText, cancelText;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee9$(_context9) {
|
|
|
while (1) switch (_context9.prev = _context9.next) {
|
|
|
case 0:
|
|
|
title = '';
|
|
|
_context9.t0 = isRepository;
|
|
|
_context9.next = _context9.t0 === true ? 4 : _context9.t0 === false ? 9 : 11;
|
|
|
break;
|
|
|
case 4:
|
|
|
title = '开启版本库';
|
|
|
okText = "开启";
|
|
|
cancelText = "不开启";
|
|
|
content = /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: "\u65B0\u5EFA\u5B9E\u8DF5\u9898\u5173\u5361\u65F6\uFF0C\u9700\u8981\u4F7F\u7528\u4EE3\u7801\u4ED3\u5E93\uFF1B\u5982\u679C\u53EA\u6709\u9009\u62E9\u9898\u5173\u5361\uFF0C\u5219\u4E0D\u9700\u8981\u4EE3\u7801\u4ED3\u5E93\u3002\u4EE3\u7801\u4ED3\u5E93\u542F\u7528\u540E\uFF0C\u5C06\u65E0\u6CD5\u5173\u95ED\u3002"
|
|
|
});
|
|
|
return _context9.abrupt("break", 11);
|
|
|
case 9:
|
|
|
if (shixunsDetail !== null && shixunsDetail !== void 0 && (_shixunsDetail$detail = shixunsDetail.detail) !== null && _shixunsDetail$detail !== void 0 && _shixunsDetail$detail.secret_repository) {
|
|
|
title = '关闭私密代码仓库';
|
|
|
okText = "确定";
|
|
|
cancelText = "取消";
|
|
|
content = /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: "\u5173\u95ED\u79C1\u5BC6\u4EE3\u7801\u4ED3\u5E93\u540E\uFF0C\u5DF2\u521B\u5EFA\u7684\u79C1\u5BC6\u4EE3\u7801\u4ED3\u5E93\u53CA\u5176\u5185\u5BB9\uFF0C\u5C06\u88AB\u5220\u9664\u3002\u786E\u8BA4\u8981\u5173\u95ED\u79C1\u5BC6\u4EE3\u7801\u4ED3\u5E93\uFF1F"
|
|
|
});
|
|
|
} else {
|
|
|
title = '开启私密代码仓库';
|
|
|
okText = "不使用";
|
|
|
cancelText = "使用";
|
|
|
content = /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: "\u79C1\u5BC6\u7248\u672C\u5E93\u7684\u6587\u4EF6\u5BF9\u5B66\u5458\u59CB\u7EC8\u9690\u85CF\uFF0C\u65E0\u6CD5\u8BBF\u95EE\u67E5\u770B\u3002\u9002\u7528\u4E8E\u547D\u4EE4\u884C\u3001\u56FE\u5F62\u5316\u684C\u9762\u4E24\u7C7B\u5B9E\u8BAD\uFF0C\u5176\u4ED6\u7C7B\u578B\u5B9E\u8BAD\u4E0D\u5EFA\u8BAE\u4F7F\u7528\u79C1\u5BC6\u7248\u672C\u5E93\u3002"
|
|
|
});
|
|
|
}
|
|
|
return _context9.abrupt("break", 11);
|
|
|
case 11:
|
|
|
if (!(!isRepository && (0,verifyLogin/* ShixunStatusModel */.gy)(dispatch, '不能开启/关闭私密代码仓库'))) {
|
|
|
_context9.next = 13;
|
|
|
break;
|
|
|
}
|
|
|
return _context9.abrupt("return");
|
|
|
case 13:
|
|
|
modal/* default */.Z.confirm({
|
|
|
title: title,
|
|
|
okText: okText,
|
|
|
cancelText: cancelText,
|
|
|
content: content,
|
|
|
onOk: function onOk() {
|
|
|
var _shixunsDetail$detail2;
|
|
|
(0,util/* trackEvent */.L9)(['实践项目', '设置', '代码仓库', title]);
|
|
|
if (!isRepository && !(shixunsDetail !== null && shixunsDetail !== void 0 && (_shixunsDetail$detail2 = shixunsDetail.detail) !== null && _shixunsDetail$detail2 !== void 0 && _shixunsDetail$detail2.secret_repository)) {} else {
|
|
|
handleChangeNext(checked);
|
|
|
}
|
|
|
},
|
|
|
onCancel: function onCancel() {
|
|
|
var _shixunsDetail$detail3;
|
|
|
if (!isRepository && !(shixunsDetail !== null && shixunsDetail !== void 0 && (_shixunsDetail$detail3 = shixunsDetail.detail) !== null && _shixunsDetail$detail3 !== void 0 && _shixunsDetail$detail3.secret_repository)) {
|
|
|
handleChangeNext(checked);
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
case 14:
|
|
|
case "end":
|
|
|
return _context9.stop();
|
|
|
}
|
|
|
}, _callee9);
|
|
|
}));
|
|
|
return function handleChange(_x10) {
|
|
|
return _ref9.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleChangeNext = /*#__PURE__*/function () {
|
|
|
var _ref10 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee10(checked) {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee10$(_context10) {
|
|
|
while (1) switch (_context10.prev = _context10.next) {
|
|
|
case 0:
|
|
|
if (!isRepository) {
|
|
|
_context10.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
_context10.next = 3;
|
|
|
return (0,shixuns/* createRepository */.h4)(objectSpread2_default()({}, params));
|
|
|
case 3:
|
|
|
dispatch({
|
|
|
type: 'practiceSetting/getCommonData',
|
|
|
payload: objectSpread2_default()({}, params)
|
|
|
});
|
|
|
_context10.next = 8;
|
|
|
break;
|
|
|
case 6:
|
|
|
_context10.next = 8;
|
|
|
return (0,shixuns/* createSecretRepository */.K0)(objectSpread2_default()(objectSpread2_default()({}, params), {}, {
|
|
|
is_secret_repository: checked
|
|
|
}));
|
|
|
case 8:
|
|
|
handleGetRepository();
|
|
|
dispatch({
|
|
|
type: "shixunsDetail/getShixunsDetail",
|
|
|
payload: {
|
|
|
id: params.id
|
|
|
}
|
|
|
});
|
|
|
case 10:
|
|
|
case "end":
|
|
|
return _context10.stop();
|
|
|
}
|
|
|
}, _callee10);
|
|
|
}));
|
|
|
return function handleChangeNext(_x11) {
|
|
|
return _ref10.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var onDragEnter = function onDragEnter(info) {
|
|
|
console.log(info);
|
|
|
// expandedKeys 需要受控时设置
|
|
|
// this.setState({
|
|
|
// expandedKeys: info.expandedKeys,
|
|
|
// });
|
|
|
};
|
|
|
var onDrop = /*#__PURE__*/function () {
|
|
|
var _ref11 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee11(info) {
|
|
|
var dropKey, dragKey, dropPos, dropPosition, res, p, loop, data, dragObj, ar, i;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee11$(_context11) {
|
|
|
while (1) switch (_context11.prev = _context11.next) {
|
|
|
case 0:
|
|
|
console.log(info);
|
|
|
dropKey = info.node.key;
|
|
|
dragKey = info.dragNode.key;
|
|
|
dropPos = info.node.pos.split('-');
|
|
|
dropPosition = info.dropPosition - Number(dropPos[dropPos.length - 1]);
|
|
|
if (!(info.node.type !== 'tree' || info.dragNode.path.split("/").length === 1)) {
|
|
|
_context11.next = 8;
|
|
|
break;
|
|
|
}
|
|
|
message/* default */.ZP.warning("未移动文件目录位置");
|
|
|
return _context11.abrupt("return");
|
|
|
case 8:
|
|
|
_context11.next = 10;
|
|
|
return dispatch({
|
|
|
type: "shixunsDetail/moveGitFile",
|
|
|
payload: {
|
|
|
id: params.id,
|
|
|
from: info.dragNode.path,
|
|
|
to: info.node.path + '/' + info.dragNode.name,
|
|
|
message: "".concat(info.dragNode.path, " move to ").concat(info.node.path + '/' + info.dragNode.name, " ")
|
|
|
}
|
|
|
});
|
|
|
case 10:
|
|
|
res = _context11.sent;
|
|
|
if (!(res.status === 0)) {
|
|
|
_context11.next = 22;
|
|
|
break;
|
|
|
}
|
|
|
selectPath('');
|
|
|
p = info.dragNode.path.split("/");
|
|
|
p.pop();
|
|
|
_context11.next = 17;
|
|
|
return handleGetRepository(info.node.path);
|
|
|
case 17:
|
|
|
_context11.next = 19;
|
|
|
return handleGetRepository(p.join("/"));
|
|
|
case 19:
|
|
|
p.pop();
|
|
|
_context11.next = 22;
|
|
|
return handleGetRepository(p.join("/"));
|
|
|
case 22:
|
|
|
return _context11.abrupt("return");
|
|
|
case 28:
|
|
|
case "end":
|
|
|
return _context11.stop();
|
|
|
}
|
|
|
}, _callee11);
|
|
|
}));
|
|
|
return function onDrop(_x12) {
|
|
|
return _ref11.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("section", {
|
|
|
className: Treemodules.bg,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: Treemodules.contentbg,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Treemodules.wrap,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
className: Treemodules.gitCode,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)(col/* default */.Z, {
|
|
|
flex: "1",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "iconfont icon-daimacangku2 mr8"
|
|
|
}), isRepository ? "代码仓库" : "私密代码仓库"]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(dropdown/* default */.Z, {
|
|
|
dropdownRender: function dropdownRender() {
|
|
|
return menu({
|
|
|
type: "topTree"
|
|
|
});
|
|
|
},
|
|
|
className: "current",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
open: visibleTip,
|
|
|
title: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "font16",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(EllipsisOutlined/* default */.Z, {
|
|
|
style: {
|
|
|
position: "relative",
|
|
|
left: -35
|
|
|
},
|
|
|
onClick: function onClick() {
|
|
|
return closeTip();
|
|
|
}
|
|
|
}), "\u70B9\u51FB\u6B64\u5904\u65B0\u5EFA\u6587\u4EF6\u3001\u65B0\u5EFA\u6587\u4EF6\u5939\u3001\u4E0A\u4F20\u6587\u4EF6\u3002", /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
onClick: function onClick() {
|
|
|
return closeTip();
|
|
|
},
|
|
|
className: "iconfont icon-guanbi1 ml8 current font14"
|
|
|
})]
|
|
|
}),
|
|
|
overlayClassName: Treemodules.overlayClass,
|
|
|
overlayStyle: {
|
|
|
maxWidth: 500
|
|
|
},
|
|
|
arrowPointAtCenter: true,
|
|
|
placement: "right",
|
|
|
color: "#F7B500"
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
}), !!treeData.length && !isRepository && /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "mt20 pl20 pr20 font14 c-white",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: "\u5B9E\u8BAD\u8BC4\u6D4B\u7684\u65F6\u5019\uFF0C\u7CFB\u7EDF\u4F1A\u4E34\u65F6\u5C06\u79C1\u5BC6\u4EE3\u7801\u5E93\u79FB\u52A8\u666E\u901A\u4EE3\u7801\u5E93\u7684secret\u76EE\u5F55\u4E0B\u9762\uFF0C\u8BC4\u6D4B\u7ED3\u675F\u4F1A\u6E05\u7A7Asecret\u76EE\u5F55\u5185\u5BB9\u3002\u5982\u679C\u79C1\u5BC6\u4EE3\u7801\u5E93\u4E2D\u5B58\u5728\u6587\u4EF6src/test.sh\uFF0C\u5728\u666E\u901A\u4EE3\u7801\u5E93\u8C03\u7528\u8BE5\u6587\u4EF6\u5219\u4F7F\u7528\u8DEF\u5F84\uFF1Asecret/src/test.sh"
|
|
|
})
|
|
|
}), treeData.length ? /*#__PURE__*/(0,jsx_runtime.jsx)(jsx_runtime.Fragment, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: Treemodules.content,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(DirectoryTree
|
|
|
// checkable={editable}
|
|
|
, {
|
|
|
disabled: !!loading.effects['shixunsDetail/getFileContent'],
|
|
|
multiple: true,
|
|
|
showIcon: false,
|
|
|
treeData: treeData,
|
|
|
switcherIcon: /*#__PURE__*/(0,jsx_runtime.jsx)(DownOutlined/* default */.Z, {
|
|
|
style: {
|
|
|
fontWeight: "bold",
|
|
|
fontSize: 14,
|
|
|
position: "relative",
|
|
|
top: 3,
|
|
|
marginLeft: 22
|
|
|
}
|
|
|
}),
|
|
|
onExpand: handleExpand,
|
|
|
expandedKeys: expandedKeys,
|
|
|
selectedKeys: selectedKeys
|
|
|
// loadData={loadData}
|
|
|
// loadedKeys={[]}
|
|
|
,
|
|
|
onSelect: handleSelectTree,
|
|
|
draggable: true,
|
|
|
onDragEnter: onDragEnter,
|
|
|
onDrop: onDrop,
|
|
|
allowDrop: function allowDrop(_ref12) {
|
|
|
var dropNode = _ref12.dropNode,
|
|
|
dropPosition = _ref12.dropPosition;
|
|
|
return false;
|
|
|
}
|
|
|
// onCheck={handleCheckTree}
|
|
|
})
|
|
|
})
|
|
|
}) : '', !treeData.length && isRepository && (shixunsDetail === null || shixunsDetail === void 0 || (_shixunsDetail$detail4 = shixunsDetail.detail) === null || _shixunsDetail$detail4 === void 0 ? void 0 : _shixunsDetail$detail4.init_repository) && /*#__PURE__*/(0,jsx_runtime.jsx)(NoData, {}), !treeData.length && !isRepository && (shixunsDetail === null || shixunsDetail === void 0 || (_shixunsDetail$detail5 = shixunsDetail.detail) === null || _shixunsDetail$detail5 === void 0 ? void 0 : _shixunsDetail$detail5.secret_repository) && /*#__PURE__*/(0,jsx_runtime.jsx)(NoData, {})]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(RenameFile, {
|
|
|
taskData: taskData,
|
|
|
open: showRenameFile,
|
|
|
defaultPath: defaultPath,
|
|
|
onClose: function onClose() {
|
|
|
return setShowRenameFile(false);
|
|
|
},
|
|
|
isRepository: !isRepository,
|
|
|
onOK: ( /*#__PURE__*/function () {
|
|
|
var _ref13 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee12(data) {
|
|
|
var pathArr;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee12$(_context12) {
|
|
|
while (1) switch (_context12.prev = _context12.next) {
|
|
|
case 0:
|
|
|
// insertFile(data.path, data.name)
|
|
|
pathArr = defaultPath.split("/");
|
|
|
pathArr.pop();
|
|
|
_context12.next = 4;
|
|
|
return handleGetRepository(pathArr.join("/"));
|
|
|
case 4:
|
|
|
selectPath("");
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context12.stop();
|
|
|
}
|
|
|
}, _callee12);
|
|
|
}));
|
|
|
return function (_x13) {
|
|
|
return _ref13.apply(this, arguments);
|
|
|
};
|
|
|
}())
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(components_AddFile, {
|
|
|
taskData: taskData,
|
|
|
visible: showAddFile,
|
|
|
defaultPath: defaultPath,
|
|
|
onClose: function onClose() {
|
|
|
return setShowAddFile(false);
|
|
|
},
|
|
|
isRepository: isRepository,
|
|
|
onOK: function onOK(data) {
|
|
|
insertFile(data.path, data.name);
|
|
|
}
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(AddFolder, {
|
|
|
taskData: taskData,
|
|
|
visible: showAddFolder,
|
|
|
defaultPath: defaultPath,
|
|
|
onClose: function onClose() {
|
|
|
return setShowAddFolder(false);
|
|
|
},
|
|
|
isRepository: isRepository,
|
|
|
onOK: function onOK(data) {
|
|
|
insertFile(data.path, data.name);
|
|
|
}
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(components_UploadFile, {
|
|
|
taskData: taskData,
|
|
|
defaultPath: defaultPath,
|
|
|
visible: showUploadFile,
|
|
|
isRepository: isRepository,
|
|
|
onClose: function onClose() {
|
|
|
return setShowUploadFile(false);
|
|
|
},
|
|
|
onOK: ( /*#__PURE__*/function () {
|
|
|
var _ref14 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee13(data) {
|
|
|
var pathArr;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee13$(_context13) {
|
|
|
while (1) switch (_context13.prev = _context13.next) {
|
|
|
case 0:
|
|
|
pathArr = defaultPath.split("/");
|
|
|
_context13.next = 3;
|
|
|
return handleGetRepository(defaultPath);
|
|
|
case 3:
|
|
|
expandedKeys = [pathArr[0] || ''];
|
|
|
selectedKeys = [defaultPath];
|
|
|
setSelectedKeys(toConsumableArray_default()(selectedKeys));
|
|
|
setExpandedKeys(toConsumableArray_default()(expandedKeys));
|
|
|
case 7:
|
|
|
case "end":
|
|
|
return _context13.stop();
|
|
|
}
|
|
|
}, _callee13);
|
|
|
}));
|
|
|
return function (_x14) {
|
|
|
return _ref14.apply(this, arguments);
|
|
|
};
|
|
|
}())
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(components_SelectFilePathModal, {
|
|
|
pathList: defaultPath === null || defaultPath === void 0 ? void 0 : defaultPath.split("/"),
|
|
|
showInputPath: true,
|
|
|
isMergeSelectFile: isMergeSelectFile,
|
|
|
onFinish: function onFinish(path) {
|
|
|
isMergeSelectFile ? handleMergeSelectFile(path) : handleGetRepository(path);
|
|
|
setIsMergeSelectFile(false);
|
|
|
}
|
|
|
})]
|
|
|
});
|
|
|
};
|
|
|
var NoData = function NoData() {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "mt20 pb50 ".concat(Treemodules.nodata),
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Treemodules.headLeft,
|
|
|
children: ["\u63D0\u793A\uFF1A", /*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), "\u6B64\u5904\u5B58\u653E\u672C\u5B9E\u8BAD\u6240\u9700\u7684\u6240\u6709\u4EE3\u7801\u7B49\u76F8\u5173\u6587\u4EF6\uFF0C\u4F60\u53EF\u4EE5\u901A\u8FC7\u4EE5\u4E0B", /*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), "\u4E24\u79CD\u65B9\u5F0F\u6765\u4F7F\u7528\uFF1A", /*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), "1\u3001", /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
href: "/forums/2784",
|
|
|
target: "_blank",
|
|
|
children: "Git\u5BA2\u6237\u7AEF"
|
|
|
}), " \u4E0A\u4F20\u5DF2\u6709\u6587\u4EF6\u6765\u5F00\u59CB\u4F7F\u7528\u3002", /*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), "2\u3001\u76F4\u63A5\u5728\u5E73\u53F0\u4E0A\u521B\u5EFA\u6587\u4EF6\u76EE\u5F55\u4EE5\u53CA\u76F8\u5173\u4EE3\u7801\u6587\u4EF6\u3002"]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
width: "100%",
|
|
|
src: ImagesIcon/* repositoryNoneDataIcon */.Oe
|
|
|
})]
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var Tree = ((0,_umi_production_exports.connect)(function (_ref15) {
|
|
|
var shixunsDetail = _ref15.shixunsDetail,
|
|
|
loading = _ref15.loading,
|
|
|
globalSetting = _ref15.globalSetting,
|
|
|
practiceSetting = _ref15.practiceSetting,
|
|
|
user = _ref15.user;
|
|
|
return {
|
|
|
shixunsDetail: shixunsDetail,
|
|
|
globalSetting: globalSetting,
|
|
|
user: user,
|
|
|
practiceSetting: practiceSetting,
|
|
|
loading: loading
|
|
|
};
|
|
|
})(Repository));
|
|
|
;// CONCATENATED MODULE: ./src/pages/Demo/Warehouse/components/Commit.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var Commitmodules = ({"flex_box_center":"flex_box_center___e0Vsb","flex_space_between":"flex_space_between___fOYBZ","flex_box_vertical_center":"flex_box_vertical_center___etkby","flex_box_center_end":"flex_box_center_end___T2Etw","flex_box_column":"flex_box_column___pALN8","commitWrap":"commitWrap___Mdvi5","wrap":"wrap___ORj56","colorGray":"colorGray___Q64q1","content":"content___PuAlb","itemTime":"itemTime___IfizK","imageUrl":"imageUrl___BCM2C","blueLight":"blueLight___D24GG","divider":"divider___pIU7h","empty":"empty___F575C"});
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/divider/index.js + 1 modules
|
|
|
var divider = __webpack_require__(28103);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Demo/Warehouse/components/Commit.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var Commit_excluded = ["shixunsDetail", "globalSetting", "loading", "user", "dispatch", "isRepository"];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// import Right from '../../components/Right';
|
|
|
|
|
|
|
|
|
|
|
|
var Commit = function Commit(_ref) {
|
|
|
var shixunsDetail = _ref.shixunsDetail,
|
|
|
globalSetting = _ref.globalSetting,
|
|
|
loading = _ref.loading,
|
|
|
user = _ref.user,
|
|
|
dispatch = _ref.dispatch,
|
|
|
isRepository = _ref.isRepository,
|
|
|
props = objectWithoutProperties_default()(_ref, Commit_excluded);
|
|
|
var params = objectSpread2_default()(objectSpread2_default()({}, (0,_umi_production_exports.useParams)()), (0,_umi_production_exports.useLocation)().query);
|
|
|
var _useState = (0,_react_17_0_2_react.useState)([]),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
commitList = _useState2[0],
|
|
|
setCommitList = _useState2[1];
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
getRepositoryCommit();
|
|
|
}, [isRepository]);
|
|
|
var getRepositoryCommit = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.next = 2;
|
|
|
return dispatch({
|
|
|
type: 'shixunsDetail/getRepositoryCommit',
|
|
|
payload: {
|
|
|
id: params.id,
|
|
|
secret_repository: isRepository ? undefined : true
|
|
|
}
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context.sent;
|
|
|
if (res) {
|
|
|
setCommitList(res.commits || []);
|
|
|
}
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function getRepositoryCommit() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [commitList == '' && /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Commitmodules.empty,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: ImagesIcon/* emptyIcon2 */.em,
|
|
|
width: "258"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "c-grey-c font14",
|
|
|
children: "\u6682\u65E0\u63D0\u4EA4\u8BB0\u5F55"
|
|
|
})]
|
|
|
}), commitList != '' && /*#__PURE__*/(0,jsx_runtime.jsx)("section", {
|
|
|
className: Commitmodules.bg,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: Commitmodules.wrap,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: Commitmodules.content,
|
|
|
children: commitList === null || commitList === void 0 ? void 0 : commitList.map(function (item) {
|
|
|
var _item$author, _item$author2;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(row/* default */.Z, {
|
|
|
align: "middle",
|
|
|
className: "c-white font16",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
children: item.title
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
align: "middle",
|
|
|
className: "mt20 ",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
className: Commitmodules.imageUrl,
|
|
|
src: env/* default */.Z.IMG_SERVER + '/' + ((_item$author = item.author) === null || _item$author === void 0 ? void 0 : _item$author.image_url)
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
className: Commitmodules.blueLight,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "ml20",
|
|
|
children: (_item$author2 = item.author) === null || _item$author2 === void 0 ? void 0 : _item$author2.username
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(col/* default */.Z, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "ml20 ".concat(Commitmodules.blueLight),
|
|
|
children: "\u63D0\u4EA4\u4E8E"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "ml20 ".concat(Commitmodules.blueLight),
|
|
|
children: item.time
|
|
|
})]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(divider/* default */.Z, {
|
|
|
className: Commitmodules.divider
|
|
|
})]
|
|
|
});
|
|
|
})
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var components_Commit = ((0,_umi_production_exports.connect)(function (_ref3) {
|
|
|
var shixunsDetail = _ref3.shixunsDetail,
|
|
|
loading = _ref3.loading,
|
|
|
globalSetting = _ref3.globalSetting,
|
|
|
user = _ref3.user;
|
|
|
return {
|
|
|
shixunsDetail: shixunsDetail,
|
|
|
globalSetting: globalSetting,
|
|
|
user: user,
|
|
|
loading: loading.models.index
|
|
|
};
|
|
|
})(Commit));
|
|
|
// EXTERNAL MODULE: ./src/components/PreviewAll/index.tsx + 1 modules
|
|
|
var PreviewAll = __webpack_require__(22775);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Demo/Warehouse/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var Warehouse_excluded = ["globalSetting", "loading", "dispatch", "practiceSetting", "shixunsDetail", "taskData", "taskId", "onEditRepCode"];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// import Complete from '../../components/Complete';
|
|
|
|
|
|
|
|
|
|
|
|
var TabPane = tabs/* default */.Z.TabPane;
|
|
|
var Warehouse = function Warehouse(_ref) {
|
|
|
var _taskData$user, _practiceSetting$side2, _practiceSetting$side7, _practiceSetting$side9, _practiceSetting$side10, _shixunsDetail$detail4;
|
|
|
var globalSetting = _ref.globalSetting,
|
|
|
loading = _ref.loading,
|
|
|
dispatch = _ref.dispatch,
|
|
|
practiceSetting = _ref.practiceSetting,
|
|
|
shixunsDetail = _ref.shixunsDetail,
|
|
|
taskData = _ref.taskData,
|
|
|
taskId = _ref.taskId,
|
|
|
onEditRepCode = _ref.onEditRepCode,
|
|
|
props = objectWithoutProperties_default()(_ref, Warehouse_excluded);
|
|
|
var hasNextGame = !(taskData !== null && taskData !== void 0 && taskData.is_last_game) && ((taskData === null || taskData === void 0 ? void 0 : taskData.shixun.status) > 0 || (taskData === null || taskData === void 0 || (_taskData$user = taskData.user) === null || _taskData$user === void 0 ? void 0 : _taskData$user.identity) < 5);
|
|
|
var _useState = (0,_react_17_0_2_react.useState)("1"),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
activeKey = _useState2[0],
|
|
|
setActiveKey = _useState2[1];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)("1"),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
tabKey = _useState4[0],
|
|
|
setTabKey = _useState4[1];
|
|
|
var _useState5 = (0,_react_17_0_2_react.useState)(true),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
widthBool = _useState6[0],
|
|
|
setWidthBool = _useState6[1];
|
|
|
var _useState7 = (0,_react_17_0_2_react.useState)({}),
|
|
|
_useState8 = slicedToArray_default()(_useState7, 2),
|
|
|
codeMirrorValue = _useState8[0],
|
|
|
setCodeMirrorValue = _useState8[1];
|
|
|
var codeMirrorSourceValue = (0,_react_17_0_2_react.useRef)();
|
|
|
// let [codeMirrorSourceValue, setCodeMirrorSourceValue] = useState<string>()
|
|
|
|
|
|
var _useState9 = (0,_react_17_0_2_react.useState)(true),
|
|
|
_useState10 = slicedToArray_default()(_useState9, 2),
|
|
|
isRepository = _useState10[0],
|
|
|
setIsRepository = _useState10[1];
|
|
|
var _useState11 = (0,_react_17_0_2_react.useState)(["2", "1"]),
|
|
|
_useState12 = slicedToArray_default()(_useState11, 2),
|
|
|
filePath = _useState12[0],
|
|
|
setFilePath = _useState12[1];
|
|
|
var _useState13 = (0,_react_17_0_2_react.useState)([]),
|
|
|
_useState14 = slicedToArray_default()(_useState13, 2),
|
|
|
treeData = _useState14[0],
|
|
|
setTreeData = _useState14[1];
|
|
|
var ref = (0,_react_17_0_2_react.useRef)();
|
|
|
var params = objectSpread2_default()(objectSpread2_default()({}, (0,_umi_production_exports.useParams)()), {}, {
|
|
|
taskId: taskId
|
|
|
});
|
|
|
var _useState15 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState16 = slicedToArray_default()(_useState15, 2),
|
|
|
isLoading = _useState16[0],
|
|
|
setIsLoading = _useState16[1];
|
|
|
var menuData = [{
|
|
|
id: "1",
|
|
|
name: "代码仓库"
|
|
|
}, {
|
|
|
id: "2",
|
|
|
name: /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u79C1\u5BC6\u4EE3\u7801\u4ED3\u5E93"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: "\u79C1\u5BC6\u7248\u672C\u5E93\u7684\u6587\u4EF6\u5BF9\u5B66\u5458\u59CB\u7EC8\u9690\u85CF\uFF0C\u65E0\u6CD5\u8BBF\u95EE\u67E5\u770B\u3002",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-xiaowenhao",
|
|
|
style: {
|
|
|
marginLeft: 2,
|
|
|
fontSize: 14
|
|
|
}
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
}];
|
|
|
|
|
|
// useEffect(() => {
|
|
|
// window.addEventListener('click', handleSkip);
|
|
|
// return () => {
|
|
|
// window.removeEventListener('click', handleSkip);
|
|
|
// }
|
|
|
// }, [widthBool])
|
|
|
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
var _practiceSetting$side;
|
|
|
var path = practiceSetting === null || practiceSetting === void 0 || (_practiceSetting$side = practiceSetting.sideBar) === null || _practiceSetting$side === void 0 ? void 0 : _practiceSetting$side.selectPath.split("/");
|
|
|
setFilePath(path);
|
|
|
}, [practiceSetting === null || practiceSetting === void 0 || (_practiceSetting$side2 = practiceSetting.sideBar) === null || _practiceSetting$side2 === void 0 ? void 0 : _practiceSetting$side2.selectPath]);
|
|
|
|
|
|
//父级找元素
|
|
|
// const parentIndexOf = (node: any, parent: any) => {
|
|
|
// if (node.id === parent) { return node; }
|
|
|
// for (let i = 0, n = node; n = n.parentNode; i++) {
|
|
|
// if (n.id === parent) { return n; }
|
|
|
// if (n == document.documentElement) { return false; } //找不到目标父节点,防止死循环
|
|
|
// }
|
|
|
// }
|
|
|
|
|
|
// const handleSkip = async (e: any) => {
|
|
|
// if (!parentIndexOf(e.target, 'latex-drawer') && widthBool) {
|
|
|
// setWidthBool(false)
|
|
|
// }
|
|
|
// }
|
|
|
|
|
|
var messageData = function messageData(data) {
|
|
|
if (data.data === "compileResltDone") {
|
|
|
setIsLoading(false);
|
|
|
}
|
|
|
};
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
window.addEventListener("message", messageData);
|
|
|
return function () {
|
|
|
window.removeEventListener("message", messageData);
|
|
|
};
|
|
|
}, []);
|
|
|
var updateCodeMirrorValue = function updateCodeMirrorValue(value) {
|
|
|
// console.log(value, codeMirrorSourceValue, value === codeMirrorSourceValue.current, ":codeMirrorSourceValue")
|
|
|
// if(!codeMirrorValue?.content) return;
|
|
|
if ((codeMirrorValue === null || codeMirrorValue === void 0 ? void 0 : codeMirrorValue.file_type) === 'txt') {
|
|
|
codeMirrorValue.content = value;
|
|
|
setCodeMirrorValue(objectSpread2_default()({}, codeMirrorValue));
|
|
|
onEditRepCode(value);
|
|
|
}
|
|
|
// else {
|
|
|
// codeMirrorValue.data = value;
|
|
|
// setCodeMirrorValue({ ...codeMirrorValue });
|
|
|
// }
|
|
|
};
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
var _practiceSetting$side3;
|
|
|
console.log(practiceSetting === null || practiceSetting === void 0 || (_practiceSetting$side3 = practiceSetting.sideBar) === null || _practiceSetting$side3 === void 0 ? void 0 : _practiceSetting$side3.selectPath, 'sideBar');
|
|
|
new Promise( /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee(resolve, reject) {
|
|
|
var _practiceSetting$side4, _practiceSetting$side5;
|
|
|
var _practiceSetting$side6, res, _res$content, _res$content2, _res$content3;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
if (!((practiceSetting === null || practiceSetting === void 0 || (_practiceSetting$side4 = practiceSetting.sideBar) === null || _practiceSetting$side4 === void 0 ? void 0 : _practiceSetting$side4.selectPath) !== '' && practiceSetting !== null && practiceSetting !== void 0 && (_practiceSetting$side5 = practiceSetting.sideBar) !== null && _practiceSetting$side5 !== void 0 && _practiceSetting$side5.selectPath)) {
|
|
|
_context.next = 5;
|
|
|
break;
|
|
|
}
|
|
|
_context.next = 3;
|
|
|
return (0,service/* fetchCode */.li)(taskId, {
|
|
|
path: practiceSetting === null || practiceSetting === void 0 || (_practiceSetting$side6 = practiceSetting.sideBar) === null || _practiceSetting$side6 === void 0 ? void 0 : _practiceSetting$side6.selectPath
|
|
|
});
|
|
|
case 3:
|
|
|
res = _context.sent;
|
|
|
if (res !== null && res !== void 0 && res.content || (res === null || res === void 0 ? void 0 : res.content) == '') {
|
|
|
try {
|
|
|
if ((res === null || res === void 0 ? void 0 : res.file_type) === 'txt') {
|
|
|
res.content = window.decodeURIComponent(escape(window.atob((_res$content = res.content) === null || _res$content === void 0 ? void 0 : _res$content.content)));
|
|
|
setCodeMirrorValue(objectSpread2_default()({}, res));
|
|
|
|
|
|
// setCodeMirrorValue(codeMirrorValue)
|
|
|
} else {
|
|
|
res.content = (_res$content2 = res.content) === null || _res$content2 === void 0 ? void 0 : _res$content2.content;
|
|
|
setCodeMirrorValue(objectSpread2_default()({}, res));
|
|
|
|
|
|
// res.content = res.content
|
|
|
// setCodeMirrorValue(codeMirrorValue)
|
|
|
}
|
|
|
} catch (e) {
|
|
|
if (codeMirrorValue.content) res.content = window.atob((_res$content3 = res.content) === null || _res$content3 === void 0 ? void 0 : _res$content3.content);
|
|
|
setCodeMirrorValue(objectSpread2_default()({}, res));
|
|
|
message/* default */.ZP.warning("请确认文件字符集编码是否为UTF-8");
|
|
|
}
|
|
|
} else {
|
|
|
dispatch({
|
|
|
type: 'practiceSetting/setSideBarTabs',
|
|
|
payload: {
|
|
|
selectPath: ''
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function (_x, _x2) {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}());
|
|
|
}, [practiceSetting === null || practiceSetting === void 0 || (_practiceSetting$side7 = practiceSetting.sideBar) === null || _practiceSetting$side7 === void 0 ? void 0 : _practiceSetting$side7.selectPath]);
|
|
|
var menu = /*#__PURE__*/(0,jsx_runtime.jsxs)(es_menu/* default */.Z, {
|
|
|
className: Warehousemodules.menu,
|
|
|
onClick: function onClick(value) {
|
|
|
var _shixunsDetail$detail;
|
|
|
if (!(shixunsDetail !== null && shixunsDetail !== void 0 && (_shixunsDetail$detail = shixunsDetail.detail) !== null && _shixunsDetail$detail !== void 0 && _shixunsDetail$detail.secret_repository) && value.key === "2") {
|
|
|
setTabKey("1");
|
|
|
}
|
|
|
setActiveKey(value.key);
|
|
|
if (value.key === "1") {
|
|
|
setIsRepository(true);
|
|
|
} else {
|
|
|
setIsRepository(false);
|
|
|
}
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_menu/* default */.Z.Item, {
|
|
|
disabled: true,
|
|
|
children: "\u5207\u6362\u4ED3\u5E93"
|
|
|
}, "0"), menuData.filter(function (item) {
|
|
|
var _shixunsDetail$detail2, _shixunsDetail$detail3;
|
|
|
if (!(shixunsDetail !== null && shixunsDetail !== void 0 && (_shixunsDetail$detail2 = shixunsDetail.detail) !== null && _shixunsDetail$detail2 !== void 0 && _shixunsDetail$detail2.init_repository) || shixunsDetail !== null && shixunsDetail !== void 0 && (_shixunsDetail$detail3 = shixunsDetail.detail) !== null && _shixunsDetail$detail3 !== void 0 && _shixunsDetail$detail3.is_jupyter_lab) {
|
|
|
return item.id !== '2';
|
|
|
}
|
|
|
return item;
|
|
|
}).map(function (item, key) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(es_menu/* default */.Z.Item, {
|
|
|
className: "leaveClick",
|
|
|
children: item.name
|
|
|
}, item.id);
|
|
|
})]
|
|
|
});
|
|
|
var handleSave = /*#__PURE__*/function () {
|
|
|
var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
var _taskData$myshixun, _practiceSetting$side8, _taskData$game, _document$getElementB;
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
setIsLoading(true);
|
|
|
// const res = await dispatch({
|
|
|
// type: 'shixunsDetail/updateRepositoryFile',
|
|
|
// payload: {
|
|
|
// id: params.id,
|
|
|
// path: shixunsDetail?.fileContent?.params?.path,
|
|
|
// content: codeMirrorValue,
|
|
|
// secret_repository: isRepository ? null : true,
|
|
|
// }
|
|
|
// })
|
|
|
_context2.next = 3;
|
|
|
return (0,service/* updateCode */.n4)(taskData === null || taskData === void 0 || (_taskData$myshixun = taskData.myshixun) === null || _taskData$myshixun === void 0 ? void 0 : _taskData$myshixun.identifier, objectSpread2_default()(objectSpread2_default()({
|
|
|
path: practiceSetting === null || practiceSetting === void 0 || (_practiceSetting$side8 = practiceSetting.sideBar) === null || _practiceSetting$side8 === void 0 ? void 0 : _practiceSetting$side8.selectPath
|
|
|
}, codeMirrorValue), {}, {
|
|
|
evaluate: 0,
|
|
|
game_id: taskData === null || taskData === void 0 || (_taskData$game = taskData.game) === null || _taskData$game === void 0 ? void 0 : _taskData$game.id
|
|
|
}));
|
|
|
case 3:
|
|
|
res = _context2.sent;
|
|
|
(_document$getElementB = document.getElementById("latexIframeRef")) === null || _document$getElementB === void 0 || (_document$getElementB = _document$getElementB.contentWindow) === null || _document$getElementB === void 0 || _document$getElementB.postMessage('compile', '*');
|
|
|
if (res !== null && res !== void 0 && res.content) {
|
|
|
dispatch({
|
|
|
type: 'practiceSetting/setSideBarTabs',
|
|
|
payload: objectSpread2_default()(objectSpread2_default()({}, practiceSetting.sideBar), {}, {
|
|
|
confirmLeave: false
|
|
|
})
|
|
|
});
|
|
|
}
|
|
|
case 6:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return function handleSave() {
|
|
|
return _ref3.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: Warehousemodules.warehouse,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Warehousemodules.content,
|
|
|
children: [tabKey === '1' && /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("aside", {
|
|
|
className: Warehousemodules.left,
|
|
|
id: "latex-drawer",
|
|
|
style: {
|
|
|
width: widthBool ? '36%' : '0%'
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(spin/* default */.Z, {
|
|
|
spinning: !!loading.effects['shixunsDetail/getRepository'],
|
|
|
wrapperClassName: "".concat(Warehousemodules.loading, " ").concat(Warehousemodules.bottom0),
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(Tree, {
|
|
|
taskData: taskData,
|
|
|
params: params,
|
|
|
setTreeData: setTreeData,
|
|
|
treeData: treeData,
|
|
|
activeKey: activeKey,
|
|
|
isRepository: isRepository
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
onClick: function onClick() {
|
|
|
return setWidthBool(false);
|
|
|
},
|
|
|
className: "".concat(Warehousemodules.close, " iconfont icon-quxiao")
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("aside", {
|
|
|
className: Warehousemodules.right,
|
|
|
ref: ref,
|
|
|
children: [(practiceSetting === null || practiceSetting === void 0 || (_practiceSetting$side9 = practiceSetting.sideBar) === null || _practiceSetting$side9 === void 0 ? void 0 : _practiceSetting$side9.selectPath) !== '' && /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)(spin/* default */.Z, {
|
|
|
spinning: !!loading.effects['shixunsDetail/getFileContent'],
|
|
|
wrapperClassName: Warehousemodules.loading,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: Warehousemodules.filePathWrp,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
align: "middle",
|
|
|
className: "w100",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
onClick: function onClick() {
|
|
|
return setWidthBool(true);
|
|
|
},
|
|
|
className: "iconfont icon-daimacangku2 c-white current"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "40px",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: Warehousemodules.line,
|
|
|
style: {
|
|
|
marginLeft: 20
|
|
|
}
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
className: Warehousemodules.filePath,
|
|
|
children: filePath.map(function (item, key) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "c-blue",
|
|
|
children: item
|
|
|
});
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: !!loading.effects['shixunsDetail/getFileContent'] ? "hide" : "show",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(PreviewAll/* default */.Z, {
|
|
|
className: "darkBlue",
|
|
|
style: {
|
|
|
top: 66,
|
|
|
height: "calc(100% - 60px)",
|
|
|
position: 'absolute'
|
|
|
},
|
|
|
filename: codeMirrorValue.filename,
|
|
|
type: codeMirrorValue.file_type === "office" ? "download" : codeMirrorValue.file_type,
|
|
|
data: codeMirrorValue.content,
|
|
|
monacoEditor: {
|
|
|
value: codeMirrorValue.content,
|
|
|
language: codeMirrorValue.language,
|
|
|
onChange: function onChange(value) {
|
|
|
return updateCodeMirrorValue(value);
|
|
|
},
|
|
|
options: {
|
|
|
fontSize: 14,
|
|
|
minimap: {
|
|
|
enabled: false
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
})
|
|
|
})]
|
|
|
}), (codeMirrorValue === null || codeMirrorValue === void 0 ? void 0 : codeMirrorValue.file_type) === "txt" && /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Warehousemodules.footer,
|
|
|
children: [(taskData === null || taskData === void 0 ? void 0 : taskData.prev_game) && /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
href: "/tasks/".concat(taskData === null || taskData === void 0 ? void 0 : taskData.prev_game).concat(location.search),
|
|
|
style: {
|
|
|
marginRight: 'auto'
|
|
|
},
|
|
|
onClick: function onClick(e) {
|
|
|
e.preventDefault();
|
|
|
setTimeout(function () {
|
|
|
return window.location.href = "/tasks/".concat(taskData === null || taskData === void 0 ? void 0 : taskData.prev_game).concat(location.search);
|
|
|
}, 300);
|
|
|
},
|
|
|
children: "\u4E0A\u4E00\u5173"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
type: "primary",
|
|
|
size: 'middle',
|
|
|
loading: isLoading,
|
|
|
onClick: handleSave,
|
|
|
children: "\u5F00\u59CB\u7F16\u8BD1"
|
|
|
}), hasNextGame && /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
href: "/tasks/".concat(taskData === null || taskData === void 0 ? void 0 : taskData.next_game).concat(location.search),
|
|
|
style: {
|
|
|
marginLeft: 'auto'
|
|
|
},
|
|
|
onClick: function onClick(e) {
|
|
|
var _taskData$shixun, _taskData$user2;
|
|
|
e.preventDefault();
|
|
|
if (taskData !== null && taskData !== void 0 && (_taskData$shixun = taskData.shixun) !== null && _taskData$shixun !== void 0 && _taskData$shixun.task_pass || (taskData === null || taskData === void 0 ? void 0 : taskData.game.status) === 2 || (taskData === null || taskData === void 0 || (_taskData$user2 = taskData.user) === null || _taskData$user2 === void 0 ? void 0 : _taskData$user2.identity) < 5) {
|
|
|
setTimeout(function () {
|
|
|
return window.location.href = "/tasks/".concat(taskData === null || taskData === void 0 ? void 0 : taskData.next_game).concat(location.search);
|
|
|
}, 300);
|
|
|
return;
|
|
|
}
|
|
|
modal/* default */.Z.warning({
|
|
|
centered: true,
|
|
|
width: 530,
|
|
|
title: '提示',
|
|
|
okText: '我知道了',
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
children: "\u8BE5\u5B9E\u8DF5\u9879\u76EE\u8BBE\u7F6E\u4E86\u4E0D\u5141\u8BB8\u8DF3\u5173\u3002\u901A\u8FC7\u5F53\u524D\u5173\u5361\u540E\uFF0C\u624D\u80FD\u8FDB\u5165\u4E0B\u4E00\u5173\u3002"
|
|
|
})
|
|
|
});
|
|
|
},
|
|
|
children: "\u4E0B\u4E00\u5173"
|
|
|
})]
|
|
|
})]
|
|
|
}), (practiceSetting === null || practiceSetting === void 0 || (_practiceSetting$side10 = practiceSetting.sideBar) === null || _practiceSetting$side10 === void 0 ? void 0 : _practiceSetting$side10.selectPath) == '' && (shixunsDetail === null || shixunsDetail === void 0 || (_shixunsDetail$detail4 = shixunsDetail.detail) === null || _shixunsDetail$detail4 === void 0 ? void 0 : _shixunsDetail$detail4.init_repository) && /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Warehousemodules.empty,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: ImagesIcon/* emptyIcon */.x7,
|
|
|
width: "258"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
className: "c-grey-c",
|
|
|
children: [!!(treeData !== null && treeData !== void 0 && treeData.length) && '在左侧代码仓库区域点击目录打开文件', !(treeData !== null && treeData !== void 0 && treeData.length) && '请先在左侧上传文件或新建文件!']
|
|
|
})]
|
|
|
})]
|
|
|
})]
|
|
|
}), tabKey === '2' && /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: Warehousemodules.commit,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(components_Commit, {
|
|
|
isRepository: isRepository
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var Demo_Warehouse = ((0,_umi_production_exports.connect)(function (_ref4) {
|
|
|
var loading = _ref4.loading,
|
|
|
globalSetting = _ref4.globalSetting,
|
|
|
practiceSetting = _ref4.practiceSetting,
|
|
|
shixunsDetail = _ref4.shixunsDetail;
|
|
|
return {
|
|
|
globalSetting: globalSetting,
|
|
|
loading: loading,
|
|
|
practiceSetting: practiceSetting,
|
|
|
shixunsDetail: shixunsDetail
|
|
|
};
|
|
|
})(Warehouse));
|
|
|
;// CONCATENATED MODULE: ./src/pages/Demo/index.tsx
|
|
|
|
|
|
|
|
|
// let output = 'item\tgraph\nmyserver1.cpu.load5\tmyserver1.cpu.load\nmyserver1.cpu.load15\tmyserver1.cpu.load'
|
|
|
// let actual_output = 'item\tgraph\r\nmyserver1.cpu.load5\tmyserver1.cpu.load\r\nmyserver1.cpu.load15\tmyserver1.cpu.load\r\n'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var Demo = (function (_ref) {
|
|
|
var taskId = _ref.taskId,
|
|
|
taskData = _ref.taskData,
|
|
|
onEditRepCode = _ref.onEditRepCode;
|
|
|
var iframeRef = (0,_react_17_0_2_react.useRef)();
|
|
|
var codeAreaContainerRef = (0,_react_17_0_2_react.useRef)();
|
|
|
var iframeSrc = (0,_react_17_0_2_react.useMemo)(function () {
|
|
|
if (taskData) {
|
|
|
var _taskData$challenge, _taskData$shixun, _taskData$myshixun;
|
|
|
var path = taskData === null || taskData === void 0 || (_taskData$challenge = taskData.challenge) === null || _taskData$challenge === void 0 || (_taskData$challenge = _taskData$challenge.path) === null || _taskData$challenge === void 0 || (_taskData$challenge = _taskData$challenge.replace(";", ";")) === null || _taskData$challenge === void 0 ? void 0 : _taskData$challenge.split(";")[0];
|
|
|
return "https://latexjs.educoder.net/index.html?id=".concat(taskData === null || taskData === void 0 || (_taskData$shixun = taskData.shixun) === null || _taskData$shixun === void 0 ? void 0 : _taskData$shixun.identifier, "&path=").concat(path, "&taskId=").concat(taskId, "&myshixunId=").concat(taskData === null || taskData === void 0 || (_taskData$myshixun = taskData.myshixun) === null || _taskData$myshixun === void 0 ? void 0 : _taskData$myshixun.identifier, "&token=").concat((0,util/* getCookie */.ej)("_educoder_session"));
|
|
|
}
|
|
|
}, [taskData]);
|
|
|
var test1 = function test1() {
|
|
|
(0,fetch/* default */.ZP)("/api/home/test_sign.json", {
|
|
|
method: "get",
|
|
|
params: {
|
|
|
id: 1,
|
|
|
name: undefined,
|
|
|
age: null,
|
|
|
c: {
|
|
|
a: 112
|
|
|
},
|
|
|
aa: [],
|
|
|
test: "12321313",
|
|
|
b: ""
|
|
|
}
|
|
|
});
|
|
|
};
|
|
|
var test2 = function test2() {
|
|
|
(0,fetch/* default */.ZP)("/api/home/test_sign.json", {
|
|
|
method: "get",
|
|
|
params: {}
|
|
|
});
|
|
|
};
|
|
|
var test3 = function test3() {
|
|
|
(0,fetch/* default */.ZP)("/api/home/test_sign.json", {
|
|
|
method: "post",
|
|
|
body: {
|
|
|
id: 1,
|
|
|
name: undefined,
|
|
|
age: null,
|
|
|
c: {},
|
|
|
cc: {
|
|
|
n: 1,
|
|
|
p: 22
|
|
|
},
|
|
|
aa: [],
|
|
|
dd: ["SDafadsf", "&&"],
|
|
|
test: "12321313",
|
|
|
b: "sadfjsdfjdkljflsajflasf&&&fdsahfasfasfasdfsadf"
|
|
|
}
|
|
|
});
|
|
|
};
|
|
|
var test4 = function test4() {
|
|
|
(0,fetch/* default */.ZP)("/api/home/test_sign.json", {
|
|
|
method: "post"
|
|
|
// body:{
|
|
|
|
|
|
// }
|
|
|
});
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
style: {
|
|
|
height: "100vh"
|
|
|
},
|
|
|
ref: codeAreaContainerRef,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
onClick: test1,
|
|
|
children: "get\u6D4B\u8BD51"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
onClick: test2,
|
|
|
children: "get\u6D4B\u8BD52"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
onClick: test3,
|
|
|
children: "post1"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
onClick: test4,
|
|
|
children: "post2"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "1",
|
|
|
children: (taskData === null || taskData === void 0 ? void 0 : taskData.shixun) && /*#__PURE__*/(0,jsx_runtime.jsx)(Demo_Warehouse, {
|
|
|
taskId: taskId,
|
|
|
taskData: taskData,
|
|
|
onEditRepCode: onEditRepCode
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(col/* default */.Z, {
|
|
|
flex: "1",
|
|
|
className: Demomodules.wrap,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("iframe", {
|
|
|
ref: iframeRef,
|
|
|
id: "latexIframeRef",
|
|
|
style: {
|
|
|
width: "100%",
|
|
|
border: "none",
|
|
|
height: "100%"
|
|
|
},
|
|
|
src: iframeSrc
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
className: Demomodules.full,
|
|
|
onClick: function onClick() {
|
|
|
if ((0,fullscreen/* IsFull */.vp)()) {
|
|
|
(0,fullscreen/* exitFull */.BU)();
|
|
|
} else {
|
|
|
(0,fullscreen/* requestFullScreen */.Dj)(codeAreaContainerRef.current);
|
|
|
}
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "iconfont icon-quanping mr5 font12"
|
|
|
}), "\u5168\u5C4F / \u9000\u51FA\u5168\u5C4F"]
|
|
|
})]
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 56925:
|
|
|
/*!**************************************************************************************************!*\
|
|
|
!*** ./src/pages/Shixuns/Detail/Repository/components/SelectFilePathModal/index.tsx + 1 modules ***!
|
|
|
\**************************************************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
Z: function() { return /* binding */ components_SelectFilePathModal; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/objectSpread2.js
|
|
|
var objectSpread2 = __webpack_require__(82242);
|
|
|
var objectSpread2_default = /*#__PURE__*/__webpack_require__.n(objectSpread2);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/regeneratorRuntime.js
|
|
|
var regeneratorRuntime = __webpack_require__(7557);
|
|
|
var regeneratorRuntime_default = /*#__PURE__*/__webpack_require__.n(regeneratorRuntime);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/asyncToGenerator.js
|
|
|
var asyncToGenerator = __webpack_require__(41498);
|
|
|
var asyncToGenerator_default = /*#__PURE__*/__webpack_require__.n(asyncToGenerator);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/slicedToArray.js
|
|
|
var slicedToArray = __webpack_require__(79800);
|
|
|
var slicedToArray_default = /*#__PURE__*/__webpack_require__.n(slicedToArray);
|
|
|
// EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/index.js
|
|
|
var _react_17_0_2_react = __webpack_require__(59301);
|
|
|
// EXTERNAL MODULE: ./src/.umi-production/exports.ts
|
|
|
var _umi_production_exports = __webpack_require__(3634);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/form/index.js + 19 modules
|
|
|
var es_form = __webpack_require__(78241);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/message/index.js + 4 modules
|
|
|
var message = __webpack_require__(8591);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/modal/index.js + 16 modules
|
|
|
var modal = __webpack_require__(43418);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/input/index.js + 5 modules
|
|
|
var input = __webpack_require__(1056);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Shixuns/Detail/Repository/components/SelectFilePathModal/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var SelectFilePathModalmodules = ({"wrap":"wrap___TwY3U","content":"content___Ks95W","mainPathWrap":"mainPathWrap___CrMaa","colorBlue":"colorBlue___dvWbP"});
|
|
|
// EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/jsx-runtime.js
|
|
|
var jsx_runtime = __webpack_require__(37712);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Shixuns/Detail/Repository/components/SelectFilePathModal/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var SelectFilePathModal = function SelectFilePathModal(_ref) {
|
|
|
var shixunsDetail = _ref.shixunsDetail,
|
|
|
globalSetting = _ref.globalSetting,
|
|
|
loading = _ref.loading,
|
|
|
dispatch = _ref.dispatch,
|
|
|
title = _ref.title,
|
|
|
_ref$pathList = _ref.pathList,
|
|
|
propsPathList = _ref$pathList === void 0 ? [] : _ref$pathList,
|
|
|
_ref$showInputPath = _ref.showInputPath,
|
|
|
showInputPath = _ref$showInputPath === void 0 ? false : _ref$showInputPath,
|
|
|
_ref$isMergeSelectFil = _ref.isMergeSelectFile,
|
|
|
isMergeSelectFile = _ref$isMergeSelectFil === void 0 ? false : _ref$isMergeSelectFil,
|
|
|
_ref$onFinish = _ref.onFinish,
|
|
|
onFinish = _ref$onFinish === void 0 ? function () {} : _ref$onFinish;
|
|
|
var _Form$useForm = es_form/* default */.Z.useForm(),
|
|
|
_Form$useForm2 = slicedToArray_default()(_Form$useForm, 1),
|
|
|
form = _Form$useForm2[0];
|
|
|
var params = (0,_umi_production_exports.useParams)();
|
|
|
var location = (0,_umi_production_exports.useLocation)();
|
|
|
var isRepository = (0,_react_17_0_2_react.useRef)();
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(''),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
selectPath = _useState2[0],
|
|
|
setSelectPath = _useState2[1];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)(''),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
originPath = _useState4[0],
|
|
|
setOriginPath = _useState4[1];
|
|
|
var _useState5 = (0,_react_17_0_2_react.useState)([]),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
mainPathList = _useState6[0],
|
|
|
setMainPathList = _useState6[1];
|
|
|
var _useState7 = (0,_react_17_0_2_react.useState)([]),
|
|
|
_useState8 = slicedToArray_default()(_useState7, 2),
|
|
|
treeList = _useState8[0],
|
|
|
setTreeList = _useState8[1];
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
var _location$pathname;
|
|
|
isRepository.current = ((_location$pathname = location.pathname) === null || _location$pathname === void 0 || (_location$pathname = _location$pathname.split('/')) === null || _location$pathname === void 0 ? void 0 : _location$pathname[3]) === "repository";
|
|
|
}, []);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (shixunsDetail.actionTabs.key !== 'Repository-SelectFilePath') {
|
|
|
return;
|
|
|
}
|
|
|
var path = propsPathList.join('/');
|
|
|
var arr = [];
|
|
|
propsPathList.map(function (item, index) {
|
|
|
if (index === 0) {
|
|
|
arr.push({
|
|
|
val: "根目录",
|
|
|
path: ""
|
|
|
}, {
|
|
|
val: "/".concat(item),
|
|
|
path: path
|
|
|
});
|
|
|
} else {
|
|
|
arr.push({
|
|
|
val: "/".concat(item),
|
|
|
path: path
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
setMainPathList(arr);
|
|
|
setSelectPath(path);
|
|
|
setOriginPath(path);
|
|
|
handleGetPathData(path);
|
|
|
}, [shixunsDetail.actionTabs.key]);
|
|
|
var handleGetPathData = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee(path) {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.next = 2;
|
|
|
return dispatch({
|
|
|
type: isRepository.current ? 'shixunsDetail/getRepository' : 'shixunsDetail/getSecretRepository',
|
|
|
payload: {
|
|
|
id: params.id,
|
|
|
path: path
|
|
|
}
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context.sent;
|
|
|
if (res) {
|
|
|
setTreeList(res.trees || []);
|
|
|
}
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function handleGetPathData(_x) {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleClickTree = function handleClickTree(item) {
|
|
|
var newPath = selectPath;
|
|
|
if (item.type === "tree") {
|
|
|
mainPathList.length ? mainPathList.push({
|
|
|
val: "/".concat(item.name),
|
|
|
path: item.name
|
|
|
}) : mainPathList.push({
|
|
|
val: "根目录",
|
|
|
path: ""
|
|
|
}, {
|
|
|
val: "/".concat(item.name),
|
|
|
path: item.name
|
|
|
});
|
|
|
setMainPathList(mainPathList);
|
|
|
newPath = selectPath ? "".concat(selectPath, "/").concat(item.name) : item.name;
|
|
|
setSelectPath(newPath);
|
|
|
}
|
|
|
handleGetPathData(newPath);
|
|
|
};
|
|
|
var handleClickMainPath = function handleClickMainPath(item, index) {
|
|
|
var currentPathList = mainPathList.filter(function (_, key) {
|
|
|
return key <= index;
|
|
|
});
|
|
|
setMainPathList(currentPathList);
|
|
|
// 排除 ”根目录“,将选中的路径连接,去掉第一个字符串 “/”,获取绝对路径
|
|
|
var currentPath = currentPathList.filter(function (_, key) {
|
|
|
return key !== 0;
|
|
|
}).map(function (item) {
|
|
|
return item.val;
|
|
|
}).join('').substr(1);
|
|
|
setSelectPath(currentPath);
|
|
|
handleGetPathData(currentPath);
|
|
|
};
|
|
|
var handleOk = /*#__PURE__*/function () {
|
|
|
var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
var values, path, res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
values = form === null || form === void 0 ? void 0 : form.getFieldsValue();
|
|
|
path = selectPath ? "".concat(selectPath).concat(values !== null && values !== void 0 && values.name ? "/".concat(values === null || values === void 0 ? void 0 : values.name) : '') : values === null || values === void 0 ? void 0 : values.name;
|
|
|
if (!isMergeSelectFile) {
|
|
|
_context2.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
onFinish(path);
|
|
|
handleCancel();
|
|
|
return _context2.abrupt("return");
|
|
|
case 6:
|
|
|
if (!showInputPath) {
|
|
|
_context2.next = 16;
|
|
|
break;
|
|
|
}
|
|
|
_context2.next = 9;
|
|
|
return form.validateFields();
|
|
|
case 9:
|
|
|
_context2.next = 11;
|
|
|
return dispatch({
|
|
|
type: 'shixunsDetail/uploadGitFolder',
|
|
|
payload: objectSpread2_default()(objectSpread2_default()({}, {
|
|
|
id: params.id,
|
|
|
path: path
|
|
|
}), isRepository.current ? {} : {
|
|
|
secret_repository: true
|
|
|
})
|
|
|
});
|
|
|
case 11:
|
|
|
res = _context2.sent;
|
|
|
onFinish(originPath);
|
|
|
if (res.status === 0) {
|
|
|
message/* default */.ZP.info('新建成功');
|
|
|
}
|
|
|
_context2.next = 18;
|
|
|
break;
|
|
|
case 16:
|
|
|
onFinish(path);
|
|
|
message/* default */.ZP.success("选择文件目录成功");
|
|
|
case 18:
|
|
|
handleCancel();
|
|
|
case 19:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return function handleOk() {
|
|
|
return _ref3.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleCancel = function handleCancel() {
|
|
|
dispatch({
|
|
|
type: 'shixunsDetail/setActionTabs',
|
|
|
payload: {}
|
|
|
});
|
|
|
form.resetFields();
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
centered: true,
|
|
|
title: title || "新建文件夹",
|
|
|
closable: false,
|
|
|
keyboard: false,
|
|
|
open: shixunsDetail.actionTabs.key === 'Repository-SelectFilePath',
|
|
|
onOk: handleOk,
|
|
|
onCancel: handleCancel,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: SelectFilePathModalmodules.wrap,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: SelectFilePathModalmodules.content,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: SelectFilePathModalmodules.mainPathWrap,
|
|
|
children: !!(mainPathList !== null && mainPathList !== void 0 && mainPathList.length) && mainPathList.map(function (item, index) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: function onClick() {
|
|
|
return handleClickMainPath(item, index);
|
|
|
},
|
|
|
children: item.val
|
|
|
}, index);
|
|
|
})
|
|
|
}), !!(treeList !== null && treeList !== void 0 && treeList.length) && treeList.map(function (item, index) {
|
|
|
return item.type === "tree" && /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
onClick: function onClick() {
|
|
|
return handleClickTree(item);
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-wenjianjia ".concat(SelectFilePathModalmodules.colorBlue)
|
|
|
}), item.name]
|
|
|
}, index);
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("label", {
|
|
|
className: "mt5",
|
|
|
children: "\u9009\u4E2D\u7684\u65B0\u5EFA\u6587\u4EF6\u5939\u76EE\u5F55\uFF1A"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "mt5 mb5",
|
|
|
children: selectPath
|
|
|
}), showInputPath && /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z, {
|
|
|
form: form,
|
|
|
scrollToFirstError: true,
|
|
|
className: "mt20",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
name: "name",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入名称'
|
|
|
}, {
|
|
|
whitespace: true,
|
|
|
message: '请勿输入空格'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
placeholder: "\u8BF7\u8F93\u5165\u65B0\u6587\u4EF6\u5939\u540D/\u5B50\u6587\u4EF6\u5939\u540D\u3002\uFF08\u5982\uFF1Asrc/step1\uFF09"
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var components_SelectFilePathModal = ((0,_umi_production_exports.connect)(function (_ref4) {
|
|
|
var shixunsDetail = _ref4.shixunsDetail,
|
|
|
loading = _ref4.loading,
|
|
|
globalSetting = _ref4.globalSetting;
|
|
|
return {
|
|
|
shixunsDetail: shixunsDetail,
|
|
|
globalSetting: globalSetting,
|
|
|
loading: loading.models.index
|
|
|
};
|
|
|
})(SelectFilePathModal));
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 80283:
|
|
|
/*!******************************************************************************!*\
|
|
|
!*** ./src/pages/tasks/code-repository/HorizontalTabs/index.tsx + 1 modules ***!
|
|
|
\******************************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
Z: function() { return /* binding */ code_repository_HorizontalTabs; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/objectSpread2.js
|
|
|
var objectSpread2 = __webpack_require__(82242);
|
|
|
var objectSpread2_default = /*#__PURE__*/__webpack_require__.n(objectSpread2);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/createForOfIteratorHelper.js
|
|
|
var createForOfIteratorHelper = __webpack_require__(91232);
|
|
|
var createForOfIteratorHelper_default = /*#__PURE__*/__webpack_require__.n(createForOfIteratorHelper);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/slicedToArray.js
|
|
|
var slicedToArray = __webpack_require__(79800);
|
|
|
var slicedToArray_default = /*#__PURE__*/__webpack_require__.n(slicedToArray);
|
|
|
// EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/index.js
|
|
|
var _react_17_0_2_react = __webpack_require__(59301);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/HorizontalTabs/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var HorizontalTabsmodules = ({"scrollbar":"scrollbar___lLOKh","scrollbarContent":"scrollbarContent___J5uQ6","scrollbarTrack":"scrollbarTrack___ptQqt","scrollbarThumb":"scrollbarThumb___GFuZv","item":"item___MSfbI","icon":"icon___AXhP9","dot":"dot___BA766","active":"active___Rkf93","pathActive":"pathActive___l4hB4","paths":"paths___gzBRM"});
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/modal/index.js + 16 modules
|
|
|
var modal = __webpack_require__(43418);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/dropdown/index.js + 1 modules
|
|
|
var dropdown = __webpack_require__(38854);
|
|
|
// EXTERNAL MODULE: ./node_modules/_lodash@4.17.21@lodash/lodash.js
|
|
|
var lodash = __webpack_require__(89392);
|
|
|
// EXTERNAL MODULE: ./src/components/mediator.js
|
|
|
var mediator = __webpack_require__(74692);
|
|
|
// EXTERNAL MODULE: ./node_modules/_resize-observer-polyfill@1.5.1@resize-observer-polyfill/dist/ResizeObserver.es.js
|
|
|
var ResizeObserver_es = __webpack_require__(76374);
|
|
|
// EXTERNAL MODULE: ./src/utils/util.tsx
|
|
|
var util = __webpack_require__(88123);
|
|
|
// EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/jsx-runtime.js
|
|
|
var jsx_runtime = __webpack_require__(37712);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/HorizontalTabs/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var HorizontalTabs = function HorizontalTabs(_ref) {
|
|
|
var _ref$initTabs = _ref.initTabs,
|
|
|
initTabs = _ref$initTabs === void 0 ? [] : _ref$initTabs,
|
|
|
_ref$tabs = _ref.tabs,
|
|
|
tabs = _ref$tabs === void 0 ? [] : _ref$tabs,
|
|
|
setTabs = _ref.setTabs,
|
|
|
value = _ref.value,
|
|
|
onChange = _ref.onChange,
|
|
|
_ref$codeUpdate = _ref.codeUpdate,
|
|
|
codeUpdate = _ref$codeUpdate === void 0 ? false : _ref$codeUpdate,
|
|
|
_ref$paths = _ref.paths,
|
|
|
paths = _ref$paths === void 0 ? [] : _ref$paths,
|
|
|
activePath = _ref.activePath,
|
|
|
onChangePath = _ref.onChangePath,
|
|
|
codeLoading = _ref.codeLoading,
|
|
|
_ref$copyProhibited = _ref.copyProhibited,
|
|
|
copyProhibited = _ref$copyProhibited === void 0 ? false : _ref$copyProhibited;
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
visible = _useState2[0],
|
|
|
setVisible = _useState2[1];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
open = _useState4[0],
|
|
|
setOpen = _useState4[1];
|
|
|
var moveElement = (0,_react_17_0_2_react.useRef)();
|
|
|
var scrollbar = (0,_react_17_0_2_react.useRef)();
|
|
|
var scrollbarContent = (0,_react_17_0_2_react.useRef)();
|
|
|
var init = (0,_react_17_0_2_react.useRef)(false);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
var unSub = mediator/* default */.Z.subscribe('send-tabs-result-data', function (data) {
|
|
|
var cloneTabs = (0,lodash.cloneDeep)(tabs);
|
|
|
var index = cloneTabs.findIndex(function (e) {
|
|
|
return e.index_tab === data.index_tab;
|
|
|
});
|
|
|
cloneTabs[index].resData = data;
|
|
|
setTabs(cloneTabs);
|
|
|
});
|
|
|
return unSub;
|
|
|
}, [tabs]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
var resizeObserver1 = new ResizeObserver_es/* default */.Z(function (entries) {
|
|
|
var _iterator = createForOfIteratorHelper_default()(entries),
|
|
|
_step;
|
|
|
try {
|
|
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
|
var entry = _step.value;
|
|
|
var width = entry.contentRect.width;
|
|
|
|
|
|
// 处理宽度变化的逻辑
|
|
|
handleObserverSize();
|
|
|
}
|
|
|
} catch (err) {
|
|
|
_iterator.e(err);
|
|
|
} finally {
|
|
|
_iterator.f();
|
|
|
}
|
|
|
});
|
|
|
var resizeObserver2 = new ResizeObserver_es/* default */.Z(function (entries) {
|
|
|
var _iterator2 = createForOfIteratorHelper_default()(entries),
|
|
|
_step2;
|
|
|
try {
|
|
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
|
var entry = _step2.value;
|
|
|
var width = entry.contentRect.width;
|
|
|
|
|
|
// 处理宽度变化的逻辑
|
|
|
handleObserverSize();
|
|
|
}
|
|
|
} catch (err) {
|
|
|
_iterator2.e(err);
|
|
|
} finally {
|
|
|
_iterator2.f();
|
|
|
}
|
|
|
});
|
|
|
if (scrollbar.current) {
|
|
|
resizeObserver1.observe(scrollbar.current);
|
|
|
resizeObserver2.observe(scrollbarContent.current);
|
|
|
}
|
|
|
return function () {
|
|
|
resizeObserver1.disconnect();
|
|
|
resizeObserver2.disconnect();
|
|
|
};
|
|
|
}, []);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (!!initTabs.length && !init.current) {
|
|
|
var newTabs = initTabs.map(function (e, i) {
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, e), {}, {
|
|
|
active: i === 0 ? true : false,
|
|
|
resetKey: 1,
|
|
|
resData: {}
|
|
|
});
|
|
|
});
|
|
|
setTabs((0,lodash.cloneDeep)(newTabs));
|
|
|
onChange(newTabs[0]);
|
|
|
init.current = false;
|
|
|
}
|
|
|
}, [initTabs === null || initTabs === void 0 ? void 0 : initTabs.length]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (moveElement.current) {
|
|
|
var onMouseDown = function onMouseDown(e) {
|
|
|
startLeft = moveElement.current.offsetLeft;
|
|
|
startPageX = e.pageX;
|
|
|
dragging = true;
|
|
|
document.onselectstart = function () {
|
|
|
return false;
|
|
|
};
|
|
|
(0,util/* pointerEvents */.kk)('none');
|
|
|
};
|
|
|
var onMouseUp = function onMouseUp() {
|
|
|
dragging = false;
|
|
|
document.onselectstart = null;
|
|
|
(0,util/* pointerEvents */.kk)('auto');
|
|
|
};
|
|
|
var onMouseMove = function onMouseMove(e) {
|
|
|
if (dragging) {
|
|
|
var spareWidth = e.pageX - startPageX; //移动的距离
|
|
|
var finalLeft = startLeft + spareWidth; //渲染的left
|
|
|
var maxLeft = scrollbar.current.clientWidth - moveElement.current.clientWidth; //可以向左偏移的最大值
|
|
|
|
|
|
//左边到顶不用滚动
|
|
|
if (finalLeft <= 0) {
|
|
|
finalLeft = 0;
|
|
|
}
|
|
|
//右边到顶不用滚动
|
|
|
if (finalLeft >= maxLeft) {
|
|
|
finalLeft = maxLeft;
|
|
|
}
|
|
|
moveElement.current.style.left = "".concat(finalLeft, "px");
|
|
|
scrollbarContent.current.style.transform = "translateX(".concat(-(finalLeft / scrollbar.current.clientWidth * scrollbarContent.current.clientWidth), "px)");
|
|
|
}
|
|
|
};
|
|
|
var startLeft = 0;
|
|
|
var startPageX = 0;
|
|
|
var dragging = false;
|
|
|
moveElement.current.addEventListener('mousedown', onMouseDown);
|
|
|
document.addEventListener('mousemove', onMouseMove);
|
|
|
document.addEventListener('mouseup', onMouseUp);
|
|
|
return function () {
|
|
|
var _moveElement$current, _document, _document2;
|
|
|
(_moveElement$current = moveElement.current) === null || _moveElement$current === void 0 || _moveElement$current.removeEventListener('mousedown', onMouseDown);
|
|
|
(_document = document) === null || _document === void 0 || _document.removeEventListener('mousemove', onMouseMove);
|
|
|
(_document2 = document) === null || _document2 === void 0 || _document2.removeEventListener('mouseup', onMouseUp);
|
|
|
};
|
|
|
}
|
|
|
}, [moveElement.current, value]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
scrollbarContent.current.addEventListener('wheel', handleWheelEvent, {
|
|
|
passive: false
|
|
|
});
|
|
|
return function () {
|
|
|
var _scrollbarContent$cur;
|
|
|
(_scrollbarContent$cur = scrollbarContent.current) === null || _scrollbarContent$cur === void 0 || _scrollbarContent$cur.removeEventListener('wheel', handleWheelEvent, {
|
|
|
passive: false
|
|
|
});
|
|
|
};
|
|
|
}, [scrollbarContent.current]);
|
|
|
var handleObserverSize = function handleObserverSize() {
|
|
|
try {
|
|
|
if (scrollbarContent.current.clientWidth > scrollbar.current.clientWidth) {
|
|
|
var _moveElement$current$;
|
|
|
var barWidth = scrollbar.current.clientWidth / scrollbarContent.current.clientWidth * scrollbar.current.clientWidth;
|
|
|
var left = Number((_moveElement$current$ = moveElement.current.style.left) === null || _moveElement$current$ === void 0 ? void 0 : _moveElement$current$.replace('px', ''));
|
|
|
var finalLeft = left;
|
|
|
if (left + barWidth >= scrollbar.current.clientWidth) {
|
|
|
//往右偏移量
|
|
|
finalLeft = left - (left + barWidth - scrollbar.current.clientWidth);
|
|
|
}
|
|
|
moveElement.current.style.width = "".concat(barWidth, "px");
|
|
|
moveElement.current.style.left = "".concat(finalLeft, "px");
|
|
|
scrollbarContent.current.style.transform = "translateX(".concat(-(finalLeft / scrollbar.current.clientWidth * scrollbarContent.current.clientWidth), "px)");
|
|
|
setVisible(true);
|
|
|
} else {
|
|
|
moveElement.current.style.left = "".concat(0, "px");
|
|
|
scrollbarContent.current.style.transform = "translateX(0px)";
|
|
|
setVisible(false);
|
|
|
}
|
|
|
} catch (e) {}
|
|
|
};
|
|
|
var handleWheelEvent = function handleWheelEvent(event) {
|
|
|
//不出现滚动条时,阻止滑动
|
|
|
if (scrollbarContent.current.clientWidth <= scrollbar.current.clientWidth) return;
|
|
|
|
|
|
// 获取滚轮滚动的方向和滚动量
|
|
|
|
|
|
var deltaX = 0; // 水平方向上的滚动量
|
|
|
if (navigator.userAgent.indexOf('Macintosh') !== -1) {
|
|
|
// 用户在Mac系统上
|
|
|
deltaX = event.deltaX;
|
|
|
} else {
|
|
|
// 用户在其他操作系统上
|
|
|
if (event.shiftKey) {
|
|
|
deltaX = event.deltaX || event.deltaY;
|
|
|
} else {
|
|
|
deltaX = event.deltaX;
|
|
|
}
|
|
|
}
|
|
|
var transformValue = scrollbarContent.current.style.transform;
|
|
|
// 提取 translateX 的值
|
|
|
var match = transformValue.match(/translateX\(([-0-9.]+)px\)/);
|
|
|
var transformLeft = match ? parseFloat(match[1]) : 0;
|
|
|
transformLeft = Math.abs(transformLeft);
|
|
|
transformLeft = transformLeft + deltaX;
|
|
|
//向左控制
|
|
|
if (transformLeft <= 0) {
|
|
|
transformLeft = 0;
|
|
|
}
|
|
|
|
|
|
//向右控制
|
|
|
var maxLeft = scrollbarContent.current.clientWidth - scrollbar.current.clientWidth;
|
|
|
if (transformLeft >= maxLeft) {
|
|
|
transformLeft = maxLeft;
|
|
|
}
|
|
|
var finalLeft = transformLeft / scrollbarContent.current.clientWidth * scrollbar.current.clientWidth;
|
|
|
moveElement.current.style.left = "".concat(finalLeft, "px");
|
|
|
scrollbarContent.current.style.transform = "translateX(".concat(-transformLeft, "px)");
|
|
|
// 阻止滚轮默认行为(如果需要禁用默认滚动行为)
|
|
|
event.preventDefault();
|
|
|
};
|
|
|
var onCopy = function onCopy(item, i, e) {
|
|
|
e.stopPropagation();
|
|
|
if (tabs.length === 10) {
|
|
|
modal/* default */.Z.info({
|
|
|
title: "提示",
|
|
|
icon: null,
|
|
|
okText: "我知道了",
|
|
|
width: 600,
|
|
|
centered: true,
|
|
|
content: "实验界面窗口数量已达上限(10个),不允许再复制窗口。"
|
|
|
});
|
|
|
return;
|
|
|
}
|
|
|
var cloneTabs = (0,lodash.cloneDeep)(tabs);
|
|
|
var index = String(Math.random()).slice(-10);
|
|
|
var str = item.index_tab.split('-')[0];
|
|
|
var cloneItem = objectSpread2_default()(objectSpread2_default()({}, item), {}, {
|
|
|
active: false,
|
|
|
index_tab: "".concat(str, "-").concat(index),
|
|
|
isCopy: true
|
|
|
});
|
|
|
cloneTabs.splice(i + 1, 0, cloneItem);
|
|
|
setTabs(cloneTabs);
|
|
|
};
|
|
|
var onDelete = function onDelete(item, i, e) {
|
|
|
e.stopPropagation();
|
|
|
var cloneTabs = (0,lodash.cloneDeep)(tabs);
|
|
|
cloneTabs.splice(i, 1);
|
|
|
if (item.index_tab === value.index_tab) {
|
|
|
cloneTabs[i - 1].active = true;
|
|
|
onChange(cloneTabs[i - 1]);
|
|
|
}
|
|
|
setTabs(cloneTabs);
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: HorizontalTabsmodules.scrollbar,
|
|
|
ref: scrollbar,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: HorizontalTabsmodules.scrollbarContent,
|
|
|
ref: scrollbarContent,
|
|
|
children: tabs.map(function (e, i) {
|
|
|
var _compact;
|
|
|
var index_tab = e.index_tab,
|
|
|
isCopy = e.isCopy,
|
|
|
tab_type = e.tab_type,
|
|
|
name = e.name;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
onClick: function onClick() {
|
|
|
if (index_tab === value.index_tab) return; //激活标签不允许重复点击
|
|
|
var cloneItem = objectSpread2_default()(objectSpread2_default()({}, e), {}, {
|
|
|
active: true
|
|
|
});
|
|
|
var cloneTabs = (0,lodash.cloneDeep)(tabs);
|
|
|
cloneTabs[i] = cloneItem;
|
|
|
onChange(cloneItem);
|
|
|
setTabs(cloneTabs);
|
|
|
},
|
|
|
className: value.index_tab === index_tab ? "".concat(HorizontalTabsmodules.item, " ").concat(HorizontalTabsmodules.active) : HorizontalTabsmodules.item,
|
|
|
children: [tab_type === 1 && /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
title: "\u4EE3\u7801\u7F16\u8F91\u5668",
|
|
|
style: {
|
|
|
color: '#3B86A0'
|
|
|
},
|
|
|
className: "iconfont icon-daimabianjiqi1"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: name
|
|
|
}), !!activePath && /*#__PURE__*/(0,jsx_runtime.jsx)(dropdown/* default */.Z, {
|
|
|
className: HorizontalTabsmodules.icon,
|
|
|
overlayClassName: HorizontalTabsmodules.paths,
|
|
|
onOpenChange: function onOpenChange(e) {
|
|
|
setOpen(e);
|
|
|
},
|
|
|
disabled: codeLoading,
|
|
|
menu: {
|
|
|
items: (_compact = (0,lodash.compact)(paths)) === null || _compact === void 0 ? void 0 : _compact.map(function (e) {
|
|
|
return {
|
|
|
key: e,
|
|
|
label: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: activePath === e ? HorizontalTabsmodules.pathActive : '',
|
|
|
children: e
|
|
|
}),
|
|
|
onClick: function onClick() {
|
|
|
if (activePath !== e) {
|
|
|
setOpen(false);
|
|
|
onChangePath(e);
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
})
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: open ? /*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
className: "iconfont icon-a-xialazhankai"
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
className: "iconfont icon-shouqi4"
|
|
|
})
|
|
|
})
|
|
|
}), codeUpdate && /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: HorizontalTabsmodules.dot
|
|
|
})]
|
|
|
}), tab_type === 2 && /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
style: {
|
|
|
color: '#608B4E'
|
|
|
},
|
|
|
title: "VSCode\u7F16\u8F91\u5668",
|
|
|
className: "iconfont icon-vscode"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: name
|
|
|
})]
|
|
|
}), tab_type === 3 && /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
style: {
|
|
|
color: '#608B4E'
|
|
|
},
|
|
|
title: "\u56FE\u5F62\u5316\u684C\u9762",
|
|
|
className: "iconfont icon-tuxinghuazhuomian"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: name
|
|
|
})]
|
|
|
}), tab_type === 4 && /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
style: {
|
|
|
color: '#3B86A0'
|
|
|
},
|
|
|
title: "\u547D\u4EE4\u884C\u7EC8\u7AEF",
|
|
|
className: "iconfont icon-minglinghang"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: name
|
|
|
}), !copyProhibited && /*#__PURE__*/(0,jsx_runtime.jsx)("aside", {
|
|
|
title: "\u590D\u5236",
|
|
|
onClick: function onClick(k) {
|
|
|
return onCopy(e, i, k);
|
|
|
},
|
|
|
className: "iconfont icon-fuzhihuanjing font14 ml10 current"
|
|
|
}), isCopy && /*#__PURE__*/(0,jsx_runtime.jsx)("aside", {
|
|
|
title: "\u5173\u95ED",
|
|
|
onClick: function onClick(k) {
|
|
|
return onDelete(e, i, k);
|
|
|
},
|
|
|
className: "iconfont icon-guanbishiyanhuanjing font14 ml10 current"
|
|
|
})]
|
|
|
}), tab_type === 5 && /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
style: {
|
|
|
color: '#3B86A0'
|
|
|
},
|
|
|
title: "\u5BB9\u5668\u5185\u670D\u52A1",
|
|
|
className: "iconfont icon-rongqi1"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: name
|
|
|
})]
|
|
|
})]
|
|
|
}, index_tab);
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
style: {
|
|
|
display: visible ? 'block' : 'none'
|
|
|
},
|
|
|
className: HorizontalTabsmodules.scrollbarTrack,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
ref: moveElement,
|
|
|
className: HorizontalTabsmodules.scrollbarThumb
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var code_repository_HorizontalTabs = (HorizontalTabs);
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 31607:
|
|
|
/*!************************************************!*\
|
|
|
!*** ./src/pages/tasks/index.jsx + 94 modules ***!
|
|
|
\************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
// ESM COMPAT FLAG
|
|
|
__webpack_require__.r(__webpack_exports__);
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"default": function() { return /* binding */ tasks; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/typeof.js
|
|
|
var helpers_typeof = __webpack_require__(31468);
|
|
|
var typeof_default = /*#__PURE__*/__webpack_require__.n(helpers_typeof);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/toConsumableArray.js
|
|
|
var toConsumableArray = __webpack_require__(37205);
|
|
|
var toConsumableArray_default = /*#__PURE__*/__webpack_require__.n(toConsumableArray);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/objectWithoutProperties.js
|
|
|
var objectWithoutProperties = __webpack_require__(39647);
|
|
|
var objectWithoutProperties_default = /*#__PURE__*/__webpack_require__.n(objectWithoutProperties);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/regeneratorRuntime.js
|
|
|
var regeneratorRuntime = __webpack_require__(7557);
|
|
|
var regeneratorRuntime_default = /*#__PURE__*/__webpack_require__.n(regeneratorRuntime);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/asyncToGenerator.js
|
|
|
var asyncToGenerator = __webpack_require__(41498);
|
|
|
var asyncToGenerator_default = /*#__PURE__*/__webpack_require__.n(asyncToGenerator);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/defineProperty.js
|
|
|
var defineProperty = __webpack_require__(85573);
|
|
|
var defineProperty_default = /*#__PURE__*/__webpack_require__.n(defineProperty);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/slicedToArray.js
|
|
|
var slicedToArray = __webpack_require__(79800);
|
|
|
var slicedToArray_default = /*#__PURE__*/__webpack_require__.n(slicedToArray);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/objectDestructuringEmpty.js
|
|
|
var objectDestructuringEmpty = __webpack_require__(70236);
|
|
|
var objectDestructuringEmpty_default = /*#__PURE__*/__webpack_require__.n(objectDestructuringEmpty);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/objectSpread2.js
|
|
|
var objectSpread2 = __webpack_require__(82242);
|
|
|
var objectSpread2_default = /*#__PURE__*/__webpack_require__.n(objectSpread2);
|
|
|
// EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/index.js
|
|
|
var _react_17_0_2_react = __webpack_require__(59301);
|
|
|
// EXTERNAL MODULE: ./src/.umi-production/exports.ts
|
|
|
var _umi_production_exports = __webpack_require__(3634);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/header/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/header/nav.png
|
|
|
var nav_namespaceObject = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAABaCAYAAAA4qEECAAABz0lEQVR4Xu3csU7DQBRE0V1+LNCn5DNT0mN+DCNoQzNjfBVWl/o9T3wYNiiyMq+3fR/+nC4whT7d+CdAaMZZaMhZaKEpASjHM1poSACKsdFCQwJQjI0WGhKAYmy00JAAFGOjhYYEoBgbLTQkAMXYaKEhASjGRgsNCUAxNlpoSACKsdFCQwJQjI0WGhKAYmz0YtDb2+t8ge4pirne9vcxxnO0VAxTjRYaeppUaAq6+GsjV5Y5Oki0h8yizuiHvHnyRQkNaQstNCQAxdhooSEBKMZGCw0JQDE2ejHobezj49A9PY19fI556Bq/Lc9x8dO7P1e9v6AfkwLI3xHLQR8+Os6CX+zoOIvp31zX/zqgX5XQQkMCUIyNFhoSgGJstNCQABRjo4WGBKAYqtEbdD9tzDIP0PhIGPVImE+TMt9NaqOhRrdn5zJ71JvhMmDtjQjdyoV7Qodg7bjQrVy4J3QI1o4L3cqFe0KHYO240K1cuCd0CNaOC93KhXtCh2DtuNCtXLgndAjWjgvdyoV7Qodg7bjQrVy4J3QI1o4L3cqFe0KHYO240K1cuCd0CNaOC93KhXtCh2DtuNCtXLgndAjWjgvdyoV7Qodg7bjQrVy49wXyQzzmd6RVpQAAAABJRU5ErkJggg==";
|
|
|
// EXTERNAL MODULE: ./src/utils/fullscreen.ts
|
|
|
var fullscreen = __webpack_require__(93703);
|
|
|
// EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/jsx-runtime.js
|
|
|
var jsx_runtime = __webpack_require__(37712);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/header/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var header = (function (_ref) {
|
|
|
var position = _ref.position,
|
|
|
subject = _ref.subject,
|
|
|
score = _ref.score,
|
|
|
onViewAllTask = _ref.onViewAllTask;
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
isResizeLarge = _useState2[0],
|
|
|
setIsResizeLarge = _useState2[1];
|
|
|
var location = (0,_umi_production_exports.useLocation)();
|
|
|
var _useSearchParams = (0,_umi_production_exports.useSearchParams)(),
|
|
|
_useSearchParams2 = slicedToArray_default()(_useSearchParams, 1),
|
|
|
searchParams = _useSearchParams2[0];
|
|
|
function onLeftFullHandler() {
|
|
|
setIsResizeLarge(!isResizeLarge);
|
|
|
if ((0,fullscreen/* IsFull */.vp)()) {
|
|
|
(0,fullscreen/* exitFull */.BU)();
|
|
|
} else {
|
|
|
(0,fullscreen/* requestFullScreen */.Dj)(document.getElementById('task-left-panel'));
|
|
|
}
|
|
|
}
|
|
|
var fullChange = function fullChange() {
|
|
|
if ((0,fullscreen/* IsFull */.vp)()) {
|
|
|
setIsResizeLarge(true);
|
|
|
} else {
|
|
|
setIsResizeLarge(false);
|
|
|
}
|
|
|
};
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
document.addEventListener((0,fullscreen/* fullscreenChange */.gH)(), fullChange);
|
|
|
return function () {
|
|
|
document.removeEventListener((0,fullscreen/* fullscreenChange */.gH)(), fullChange);
|
|
|
};
|
|
|
}, []);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "task-header",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
title: "\u67E5\u770B\u5168\u90E8\u4EFB\u52A1",
|
|
|
onClick: onViewAllTask,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: nav_namespaceObject,
|
|
|
alt: "nav",
|
|
|
width: 45
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("h3", {
|
|
|
title: subject,
|
|
|
children: ["\u7B2C", position, "\u5173\uFF1A", subject]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: score
|
|
|
}), !(searchParams.get("isFullScreen") === 'true') && /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: onLeftFullHandler,
|
|
|
title: isResizeLarge ? '退出全屏' : '全屏',
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: isResizeLarge ? 'iconfont icon-shousuo c-grey-333 font16 ml10 current' : 'iconfont icon-zhankai c-grey-333 font16 ml10 current'
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/skeleton/index.js + 12 modules
|
|
|
var skeleton = __webpack_require__(59981);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/table/index.js + 85 modules
|
|
|
var table = __webpack_require__(72315);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/pagination/index.js + 10 modules
|
|
|
var pagination = __webpack_require__(41867);
|
|
|
// EXTERNAL MODULE: ./src/components/NoData/index.tsx
|
|
|
var NoData = __webpack_require__(30038);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/ranking/r1.png
|
|
|
var r1_namespaceObject = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAAA8CAMAAADygAyiAAAAaVBMVEUAAAD/vwD/vwD/ugD/ugD/uwD/vAD8vAP8ugP9uwL9uwL9uwL9ugL9ugL9ugL8uwP8uwP8ugP9ugL9ugL9ugL9uwL9uwL9uwL9uwP9zkn+1WT+34r+45n/7bz/8s//9+D/+/D//fj///8yardZAAAAGHRSTlMAECAwP0BQX2BwgI+Qn6Cwv8DP0N/g7/D8rFP8AAABpUlEQVRYw+3XwXKDIBAG4AVKoiRBDSq0adrG93/ImphSWwV2jYce+t+SGb5RWBcAmEQeji6acicgHVE6RA4s5cjWoVInHkognV6KP1Pt0NExJ3OE8AhUUKB9BKI4rpoM3+7KWzaMBLWwGcbttsNC+QlWcn7Eqesz8z+ocTHw7wUPQKdLEnItB+3i0PO569JQXwxtFHo5f3QoqB4v1BR663wSkItD738O6vN6WQlyZyRk1oGq8Xf6CFSMO8cjUAbMrgHZvl+qNSDVf/3MT7cSSyFza+DcepYEGQ/Ze9cVzSKo+oIavzUxfYeaJZAeb0xC2ytUUKD9FbJ6slMKySGnQBK4DO23ggJFd1qLh4oopPBQFoU4GmoSxxqNhbIExJHbbJM8aSkcJNNnv+rRk4h/OZt2DAPMcdSu46Qli3RSkhGADovMuGZASagK7AaI4XqOUQzo4ftfDdPkS5jByr1lssXKzzpXAP/QpLyfrvGXycPtJyczMnDhOgri44RvILQqiNy3aJPVUm5XsOziRoOaMFSQIB2GchLEgj3SEOuI6dm3M8E1+wTzvvO4HPYw7wAAAABJRU5ErkJggg==";
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/ranking/r2.png
|
|
|
var r2_namespaceObject = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAAA8CAMAAADygAyiAAAAeFBMVEUAAACvv7+nt8elusWmusKnt8OmucKmucGlt8KmuMKlt8GmuMKmuMGluMKmt8KluMKmuMKmt8KluMGmuMKmuMGlt8KluMGmuMGmuMK+y9PQ2d/W3uPb4ubg5unk6ezo7O/r7/Hu8vTx9Pb09/j3+fr6+/z9/f7///9IiVUSAAAAGHRSTlMAECAwP0BQX2BwgI+Qn6Cwv8DP0N/g7/D8rFP8AAACAElEQVRYw+3X2XaCMBAG4CzFYtSgIiRYu7rk/d+wCJwUy8wk0V72v9KjfCdMhoQwNkm22loy64Vk4ci1jciKh5ystlHZBQYlI51Wose0s9HRlJPbhAgCKlKgJQGlOHYzufx5se4y40lQzWb9dYvnfqJ8gVUG/L15Ozrnzl+v05+YGjeD+JlwCNqf3JDTHodsLZi2FNScnc+lwaG2GWoSenejfBLQbjxRANQN6NzsL53U4JANQN31H9Yeuw8vD0LvfwhdHoReBujgwjUqyREN6e/sRMzaZvycolA/MPdGQMV45UChU7ghc8ZNEHqFBzSGTLteqhDU9FN2Jh5aq9qnn/tyKwlCHw6a+xuo7BZwYTwLOXv4QWuv9pAZVl1ZUdARrvR1xgeo8lsT1wNUoZU+WBTS441JanOFCqzSX+Di30JGT3ZKmQk2RyoN3Ji1GRMZtt9KpKcPUPHIndaAPT3kePNTQUIKHBAI5SQkoqEq8FqjY6E8AInIbbYKvmmpOCgLv/ttHn0T8Tdnwk7JWczrqPkbJyyZSCcklZJFhxMV15ylBOsCM2OJERpiFGfpEctfC2Y5v4fprbm3yvxu5bbPFWP/0KS9n67xh8lV91UkMxly4NrKxOHgJ5C0LiDOW2nFqlNOV+y+g1saVOFQkQRpHJonQRxdI8vEPuIavLsSnbNvHF76qBcgeTgAAAAASUVORK5CYII=";
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/ranking/r3.png
|
|
|
var r3_namespaceObject = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAAA8CAMAAADygAyiAAAAe1BMVEUAAAC/j1C3l1i1lVq2llmzl1i2llm0llm1lVi0llm1lVi0llm1lVm1lVi0lli1lVi0lli1llm1lVm0lli1lli1lVm0lVm1lli1llnJs4fSvpnYx6fdzrLh1Lzl2sTo38zs49Pu59nx6+D07+X28uv59vD7+fX9/Pr///9SRDJsAAAAGHRSTlMAECAwP0BQX2BwgI+Qn6Cwv8DP0N/g7/D8rFP8AAAB+klEQVRYw+3X2VbCMBAG4EliEQqkQGgTEBFRlvd/QksLMV0yyVQvvPC/4XCg38kyzQLQSTJfGTSLqYBwxMJEZM5CTlKYqKwDjRKRTinhbVqb6EjMGRtCOAJlFGiGQBTHLDuPP08XVUaMBBUwqp+bPtcTZQc4TXr+vv84Xcucjq+dnyB1i4F/T3gPtKmUOp8bL2QKDtJg0OHq5OiHymIoUOjkQtetH1q7E9UD1cDBfFSfb37IREG7excPfwBqDvrPoW096C8YpILQ7jFpe2T6l+57GoAOBoEyd+UItQgryDEwHQ21++ZAulwv0/Bgb/aXvia5j5ZvP7PDnQrv9B/r19YHqWoB59qygYJsQspC+r7qinwQtHxAud2amLxD+RBIuhuTkPoGZRRodoO07OyUIuEwaUMXBEqAJ779tjNtnxXwbj8bk4ZFt6D3xgq5c3/KUChtl+LFcZo9G6MQb/ft5ezZRfLAsUb2bGznal/bGUKDeprkSR48aaVxUBI++y1/ehKxndNhRzGIOY7q33HCko50QpISEB2GjLhkQImvCvQIiOGyj0kZ0MNnrQVTTYYwtTWxlhoPVpp1ngL8Q53yfrrFXibn1VdOZhLPhWsliM3x30BoVYDct2iDVVBuVzDs4kaDcj+UkSDphyYkiHnXSEWsIyZ7e6e8c/YFAVX9WNqVSc8AAAAASUVORK5CYII=";
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/service/index.js
|
|
|
var service = __webpack_require__(57014);
|
|
|
// EXTERNAL MODULE: ./src/utils/util.tsx
|
|
|
var util = __webpack_require__(88123);
|
|
|
// EXTERNAL MODULE: ./node_modules/_dayjs@1.11.10@dayjs/dayjs.min.js
|
|
|
var dayjs_min = __webpack_require__(9498);
|
|
|
var dayjs_min_default = /*#__PURE__*/__webpack_require__.n(dayjs_min);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/ranking/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var ImgDesc = {
|
|
|
0: r1_namespaceObject,
|
|
|
1: r2_namespaceObject,
|
|
|
2: r3_namespaceObject
|
|
|
};
|
|
|
var initialState = {
|
|
|
loading: true,
|
|
|
page: 1,
|
|
|
data: null
|
|
|
};
|
|
|
var Types = /*#__PURE__*/function (Types) {
|
|
|
Types[Types["SET_LOADING"] = 0] = "SET_LOADING";
|
|
|
Types[Types["SET_STATE"] = 1] = "SET_STATE";
|
|
|
Types[Types["SET_PAGE"] = 2] = "SET_PAGE";
|
|
|
return Types;
|
|
|
}(Types || {});
|
|
|
function reducer(state, action) {
|
|
|
switch (action.type) {
|
|
|
case Types.SET_LOADING:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
loading: action.payload
|
|
|
});
|
|
|
case Types.SET_STATE:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), action.payload);
|
|
|
case Types.SET_PAGE:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
page: action.payload
|
|
|
});
|
|
|
default:
|
|
|
throw new Error();
|
|
|
}
|
|
|
}
|
|
|
/* harmony default export */ var ranking = (function (_ref) {
|
|
|
var activeIndex = _ref.activeIndex,
|
|
|
taskId = _ref.taskId;
|
|
|
var _useReducer = (0,_react_17_0_2_react.useReducer)(reducer, initialState),
|
|
|
_useReducer2 = slicedToArray_default()(_useReducer, 2),
|
|
|
state = _useReducer2[0],
|
|
|
dispatch = _useReducer2[1];
|
|
|
var loading = state.loading,
|
|
|
page = state.page,
|
|
|
data = state.data;
|
|
|
var columns = (0,_react_17_0_2_react.useMemo)(function () {
|
|
|
var rs = [{
|
|
|
title: '排名',
|
|
|
dataIndex: 'user_name',
|
|
|
align: 'center',
|
|
|
render: function render(value, record, index) {
|
|
|
var i = (page - 1) * 10 + index + 1;
|
|
|
if (i <= 3) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: ImgDesc[i - 1],
|
|
|
alt: "rank",
|
|
|
width: 36
|
|
|
});
|
|
|
}
|
|
|
return i;
|
|
|
}
|
|
|
}, {
|
|
|
title: '姓名',
|
|
|
dataIndex: 'user_name'
|
|
|
}, {
|
|
|
title: data === null || data === void 0 ? void 0 : data.rank_data_name,
|
|
|
dataIndex: 'score',
|
|
|
render: function render(value) {
|
|
|
if ((data === null || data === void 0 ? void 0 : data.open_rank) === 'DEFAULT') {
|
|
|
return (0,util/* toTimeFormat */.li)(value);
|
|
|
} else {
|
|
|
return value;
|
|
|
}
|
|
|
}
|
|
|
}, {
|
|
|
title: '通关时间',
|
|
|
dataIndex: 'end_time',
|
|
|
render: function render(value) {
|
|
|
return dayjs_min_default()(value).format('YYYY-MM-DD HH:mm:ss');
|
|
|
// return timeformat(value, 'yyyy-MM-dd hh:mm:ss')
|
|
|
}
|
|
|
}];
|
|
|
return rs;
|
|
|
}, [data === null || data === void 0 ? void 0 : data.rank_data_name, data === null || data === void 0 ? void 0 : data.open_rank, page]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
function init() {
|
|
|
return _init.apply(this, arguments);
|
|
|
}
|
|
|
function _init() {
|
|
|
_init = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var response;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.next = 2;
|
|
|
return (0,service/* getRanking */.i8)(taskId, {
|
|
|
page: page,
|
|
|
limit: 10
|
|
|
});
|
|
|
case 2:
|
|
|
response = _context.sent;
|
|
|
dispatch({
|
|
|
type: Types.SET_STATE,
|
|
|
payload: {
|
|
|
loading: false,
|
|
|
data: response.data
|
|
|
}
|
|
|
});
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return _init.apply(this, arguments);
|
|
|
}
|
|
|
if (activeIndex === 4) {
|
|
|
init();
|
|
|
}
|
|
|
}, [page, activeIndex, taskId]);
|
|
|
function onPaginationChange(value) {
|
|
|
dispatch({
|
|
|
type: Types.SET_PAGE,
|
|
|
payload: value
|
|
|
});
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "ranking-container",
|
|
|
children: loading ? /*#__PURE__*/(0,jsx_runtime.jsx)(skeleton/* default */.Z, {
|
|
|
avatar: true,
|
|
|
paragraph: {
|
|
|
rows: 4
|
|
|
}
|
|
|
}) : !data || (data === null || data === void 0 ? void 0 : data.rank_list_count) === 0 ? /*#__PURE__*/(0,jsx_runtime.jsx)(NoData/* default */.Z, {
|
|
|
styles: {
|
|
|
margin: '20% auto'
|
|
|
}
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(table/* default */.Z, {
|
|
|
pagination: false,
|
|
|
size: "middle",
|
|
|
dataSource: data.rank_list,
|
|
|
columns: columns
|
|
|
}), data.rank_list_count > 10 ? /*#__PURE__*/(0,jsx_runtime.jsx)(pagination/* default */.Z, {
|
|
|
style: {
|
|
|
marginTop: 20
|
|
|
},
|
|
|
showQuickJumper: true,
|
|
|
showSizeChanger: false,
|
|
|
onChange: onPaginationChange,
|
|
|
current: page,
|
|
|
total: data.rank_list_count
|
|
|
}) : null]
|
|
|
})
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/constant.js
|
|
|
var constant = __webpack_require__(35378);
|
|
|
// EXTERNAL MODULE: ./src/components/RenderHtml/index.tsx + 1 modules
|
|
|
var RenderHtml = __webpack_require__(41977);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/message/index.js + 4 modules
|
|
|
var message = __webpack_require__(8591);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/modal/index.js + 16 modules
|
|
|
var es_modal = __webpack_require__(43418);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/drawer/index.js + 9 modules
|
|
|
var drawer = __webpack_require__(43428);
|
|
|
// EXTERNAL MODULE: ./src/components/modal.tsx
|
|
|
var modal = __webpack_require__(57202);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var left_panelmodules = ({"content-wrapper":"content-wrapper___kKoFC","scroll":"scroll___lsiy3","unity-3d-container":"unity-3d-container___kQAJh","unity3d-panel":"unity3d-panel___WLXqG","btn-enlarge":"btn-enlarge___mQbst","enlarge":"enlarge___p_I6G","tab-nav":"tab-nav___iVZmY","tab-fixed":"tab-fixed___SeByu","active":"active___TjNGA","tab-panel-body":"tab-panel-body___iueV_","answer-tip":"answer-tip___b7k1Y"});
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/left-panel/discuss/service.js
|
|
|
var discuss_service = __webpack_require__(67315);
|
|
|
// EXTERNAL MODULE: ./src/service/user.ts
|
|
|
var user = __webpack_require__(65893);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/task-list/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/rate/index.js + 8 modules
|
|
|
var rate = __webpack_require__(19479);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/task-list/task-item/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/task-list/task-item/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var dtFormat = 'YYYY-MM-DD HH:mm';
|
|
|
/* harmony default export */ var task_item = (function (_ref) {
|
|
|
var challenge = _ref.challenge,
|
|
|
position = _ref.position,
|
|
|
status = _ref.status,
|
|
|
get_gold = _ref.get_gold,
|
|
|
get_experience = _ref.get_experience,
|
|
|
star = _ref.star,
|
|
|
tag_count = _ref.tag_count,
|
|
|
finished_time = _ref.finished_time,
|
|
|
index = _ref.index,
|
|
|
view_answer_time = _ref.view_answer_time,
|
|
|
name = _ref.name,
|
|
|
identifier = _ref.identifier,
|
|
|
identity = _ref.identity,
|
|
|
shixun = _ref.shixun,
|
|
|
taskList = _ref.taskList,
|
|
|
onSaveTaskStar = _ref.onSaveTaskStar;
|
|
|
var location = (0,_umi_production_exports.useLocation)();
|
|
|
var params = (0,_umi_production_exports.useParams)();
|
|
|
function onStarChange(value) {
|
|
|
onSaveTaskStar(identifier, value, index);
|
|
|
}
|
|
|
//允许跳关
|
|
|
var isAllow = status === 2 || shixun.status < 2 || taskList[index - 1] && taskList[index - 1].status === 2 || shixun.task_pass || identity <= 5;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "task-item-container ".concat(challenge.position === position ? 'active' : '', " ").concat(status === 2 ? 'finish' : ''),
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "flex-container challenge-title space-between",
|
|
|
children: [isAllow ? /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
href: "/tasks/".concat(identifier).concat(location.search),
|
|
|
onClick: function onClick(e) {
|
|
|
e.preventDefault();
|
|
|
if (params.courseId && params.homeworkId) {
|
|
|
setTimeout(function () {
|
|
|
return window.location.href = "/tasks/".concat(params.courseId, "/").concat(params.homeworkId, "/").concat(identifier).concat(location.search);
|
|
|
}, 300);
|
|
|
return;
|
|
|
}
|
|
|
setTimeout(function () {
|
|
|
return window.location.href = "/tasks/".concat(identifier).concat(location.search);
|
|
|
}, 300);
|
|
|
},
|
|
|
children: ["".concat(position, ". ").concat(name), ' ']
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "".concat(position, ". ").concat(name)
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-wancheng1 ".concat(status === 2 ? 'green' : '')
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "flex-container",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
className: status === 2 ? 'green' : '',
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u7ECF\u9A8C\u503C"
|
|
|
}), " ", status === 2 && get_experience > 0 ? '+' : '', get_experience]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
className: status === 2 ? 'green' : '',
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u91D1\u5E01"
|
|
|
}), " ", status === 2 && get_gold > 0 ? '+' : '', " ", get_gold]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u6280\u80FD\u6807\u7B7E"
|
|
|
}), " ", tag_count ? tag_count : '无']
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "flex-container",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u5B8C\u6210\u65F6\u95F4"
|
|
|
}), finished_time ? dayjs_min_default()(finished_time).format(dtFormat) : '--']
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u67E5\u770B\u7B54\u6848\u65F6\u95F4"
|
|
|
}), view_answer_time ? dayjs_min_default()(view_answer_time).format(dtFormat) : '--']
|
|
|
})]
|
|
|
}), shixun.status >= 2 ? /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "rate-container",
|
|
|
children: [status === 2 && star === 0 ? /*#__PURE__*/(0,jsx_runtime.jsxs)(_react_17_0_2_react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u7ED9\u4E2A\u8BC4\u5206\u5427\uFF1A"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(rate/* default */.Z, {
|
|
|
defaultValue: 0,
|
|
|
onChange: onStarChange,
|
|
|
className: "star-tip-rate"
|
|
|
})]
|
|
|
}) : null, status === 2 && star > 0 ? /*#__PURE__*/(0,jsx_runtime.jsxs)(_react_17_0_2_react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u5DF2\u8BC4\u5206\uFF1A"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(rate/* default */.Z, {
|
|
|
value: star,
|
|
|
disabled: true
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
className: "highlight",
|
|
|
children: [star, "\u5206"]
|
|
|
})]
|
|
|
}) : null]
|
|
|
}) : null]
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/task-list/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//这里未通关的identifier 都是null ,不适合作key
|
|
|
|
|
|
|
|
|
/* harmony default export */ var task_list = (function (_ref) {
|
|
|
var taskList = _ref.taskList,
|
|
|
challenge = _ref.challenge,
|
|
|
shixun = _ref.shixun,
|
|
|
identity = _ref.identity,
|
|
|
onSaveTaskStar = _ref.onSaveTaskStar;
|
|
|
var _useSearchParams = (0,_umi_production_exports.useSearchParams)(),
|
|
|
_useSearchParams2 = slicedToArray_default()(_useSearchParams, 1),
|
|
|
searchParams = _useSearchParams2[0];
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "task-nav-container",
|
|
|
children: [!!searchParams.get("coursesId") && /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
className: "task-tip",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u6E29\u99A8\u63D0\u793A: "
|
|
|
}), "\u82E5\u67E5\u770B\u7B54\u6848\u65F6\u95F4\u65E9\u4E8E\u5173\u5361\u4EFB\u52A1\u5B8C\u6210\u65F6\u95F4\uFF0C\u5C06\u5F71\u54CD\u8BFE\u5802\u5B9E\u8BAD\u4F5C\u4E1A\u7684\u6210\u7EE9\u3002"]
|
|
|
})
|
|
|
}), taskList.map(function (item, index) {
|
|
|
var option = objectSpread2_default()(objectSpread2_default()({}, item), {}, {
|
|
|
identity: identity,
|
|
|
index: index,
|
|
|
challenge: challenge,
|
|
|
taskList: taskList,
|
|
|
shixun: shixun,
|
|
|
onSaveTaskStar: onSaveTaskStar
|
|
|
});
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(task_item, objectSpread2_default()({}, option), index);
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/task-path-list/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var task_path_listmodules = ({"tree":"tree___LyfjL"});
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/tree/index.js + 8 modules
|
|
|
var tree = __webpack_require__(51218);
|
|
|
// EXTERNAL MODULE: ./src/service/exercise.ts
|
|
|
var exercise = __webpack_require__(5168);
|
|
|
// EXTERNAL MODULE: ./src/components/ImagesIcon/index.ts + 31 modules
|
|
|
var ImagesIcon = __webpack_require__(40563);
|
|
|
// EXTERNAL MODULE: ./src/service/shixuns.ts
|
|
|
var shixuns = __webpack_require__(89442);
|
|
|
;// CONCATENATED MODULE: ./src/utils/toShixun.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var toShixun = /*#__PURE__*/function () {
|
|
|
var _ref = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee(id, challenge_id, is_jupyter, subject_id, newWindow) {
|
|
|
var toUrl, execRes;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
// dispatch({ type: "globalSetting/setGlobalLoading", payload: { show: true, text: "正在进入实践项目,请稍后..." } })
|
|
|
toUrl = function toUrl() {
|
|
|
if (newWindow) {
|
|
|
(0,util/* openNewWindow */.xg)(is_jupyter ? "/tasks/".concat(execRes === null || execRes === void 0 ? void 0 : execRes.identifier, "/jupyter") : "/tasks/".concat(execRes.game_identifier, "?subject_id=").concat(subject_id));
|
|
|
} else {
|
|
|
window.location.href = is_jupyter ? "/tasks/".concat(execRes === null || execRes === void 0 ? void 0 : execRes.identifier, "/jupyter") : "/tasks/".concat(execRes.game_identifier, "?subject_id=").concat(subject_id);
|
|
|
}
|
|
|
};
|
|
|
if (!is_jupyter) {
|
|
|
_context.next = 7;
|
|
|
break;
|
|
|
}
|
|
|
_context.next = 4;
|
|
|
return (0,shixuns/* execJupyter */.BK)({
|
|
|
id: id,
|
|
|
challenge_id: challenge_id,
|
|
|
subject_id: subject_id
|
|
|
});
|
|
|
case 4:
|
|
|
_context.t0 = _context.sent;
|
|
|
_context.next = 10;
|
|
|
break;
|
|
|
case 7:
|
|
|
_context.next = 9;
|
|
|
return (0,shixuns/* execShixun */.Ir)({
|
|
|
id: id,
|
|
|
challenge_id: challenge_id,
|
|
|
subject_id: subject_id
|
|
|
});
|
|
|
case 9:
|
|
|
_context.t0 = _context.sent;
|
|
|
case 10:
|
|
|
execRes = _context.t0;
|
|
|
if (!(execRes !== null && execRes !== void 0 && execRes.game_identifier || execRes !== null && execRes !== void 0 && execRes.identifier)) {
|
|
|
_context.next = 22;
|
|
|
break;
|
|
|
}
|
|
|
if (!(execRes !== null && execRes !== void 0 && execRes.access)) {
|
|
|
_context.next = 16;
|
|
|
break;
|
|
|
}
|
|
|
toUrl();
|
|
|
_context.next = 21;
|
|
|
break;
|
|
|
case 16:
|
|
|
if (!((execRes === null || execRes === void 0 ? void 0 : execRes.access) == false)) {
|
|
|
_context.next = 20;
|
|
|
break;
|
|
|
}
|
|
|
message/* default */.ZP.warning("当前实训不支持跳关,已为您跳转到该实训未通过的第一个关卡");
|
|
|
setTimeout(function () {
|
|
|
toShixun(id, "", is_jupyter, subject_id, newWindow);
|
|
|
}, 1000);
|
|
|
return _context.abrupt("return");
|
|
|
case 20:
|
|
|
toUrl();
|
|
|
case 21:
|
|
|
return _context.abrupt("return");
|
|
|
case 22:
|
|
|
if ((execRes === null || execRes === void 0 ? void 0 : execRes.status) === -3) {
|
|
|
(0,util/* bindPhone */.eF)();
|
|
|
} else if ((execRes === null || execRes === void 0 ? void 0 : execRes.status) === 2) {
|
|
|
handleResetGame(execRes === null || execRes === void 0 ? void 0 : execRes.message);
|
|
|
} else if ((execRes === null || execRes === void 0 ? void 0 : execRes.status) === 3) {
|
|
|
handleInBeta(execRes === null || execRes === void 0 ? void 0 : execRes.message);
|
|
|
}
|
|
|
case 23:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function toShixun(_x, _x2, _x3, _x4, _x5) {
|
|
|
return _ref.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleResetGame = function handleResetGame(url) {
|
|
|
var _url;
|
|
|
url = (_url = url) !== null && _url !== void 0 && _url.includes('.json') ? url : "".concat(url, ".json");
|
|
|
es_modal/* default */.Z.confirm({
|
|
|
centered: true,
|
|
|
title: '提示',
|
|
|
okText: '确定',
|
|
|
cancelText: '取消',
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "tc font16",
|
|
|
children: "\u5B9E\u8BAD\u5DF2\u7ECF\u66F4\u65B0\u4E86\uFF0C\u6B63\u5728\u4E3A\u60A8\u91CD\u7F6E!"
|
|
|
}),
|
|
|
onOk: function () {
|
|
|
var _onOk = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
var res, execRes;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
_context2.next = 2;
|
|
|
return (0,exercise/* resetMyGame */.$Q)({
|
|
|
url: url
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context2.sent;
|
|
|
if (res) {
|
|
|
_context2.next = 5;
|
|
|
break;
|
|
|
}
|
|
|
return _context2.abrupt("return");
|
|
|
case 5:
|
|
|
message/* default */.ZP.success("重置成功,正在进入实践项目!");
|
|
|
_context2.next = 8;
|
|
|
return (0,shixuns/* execShixun */.Ir)({
|
|
|
id: res.shixun_identifier
|
|
|
});
|
|
|
case 8:
|
|
|
execRes = _context2.sent;
|
|
|
if (!(execRes !== null && execRes !== void 0 && execRes.game_identifier)) {
|
|
|
_context2.next = 12;
|
|
|
break;
|
|
|
}
|
|
|
(0,util/* openNewWindow */.xg)("/tasks/".concat(execRes.game_identifier));
|
|
|
return _context2.abrupt("return");
|
|
|
case 12:
|
|
|
if ((execRes === null || execRes === void 0 ? void 0 : execRes.status) === 2) {
|
|
|
handleResetGame(execRes === null || execRes === void 0 ? void 0 : execRes.message);
|
|
|
} else if ((execRes === null || execRes === void 0 ? void 0 : execRes.status) === 3) {
|
|
|
handleInBeta(execRes === null || execRes === void 0 ? void 0 : execRes.message);
|
|
|
}
|
|
|
case 13:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
function onOk() {
|
|
|
return _onOk.apply(this, arguments);
|
|
|
}
|
|
|
return onOk;
|
|
|
}()
|
|
|
});
|
|
|
};
|
|
|
var handleInBeta = function handleInBeta(message) {
|
|
|
es_modal/* default */.Z.confirm({
|
|
|
centered: true,
|
|
|
title: '提示',
|
|
|
okText: '确定',
|
|
|
cancelText: '取消',
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "tc font16",
|
|
|
children: ["\u76EE\u524D\u8BE5\u5B9E\u8DF5\u9879\u76EE\u5C1A\u5728\u5185\u6D4B\u4E2D\uFF0C\u5C06\u4E8E", message, "\u4E4B\u540E\u5F00\u653E\uFF0C\u8C22\u8C22\uFF01"]
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/task-path-list/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var DirectoryTree = tree/* default */.Z.DirectoryTree;
|
|
|
/* harmony default export */ var task_path_list = (function (_ref) {
|
|
|
var taskList = _ref.taskList,
|
|
|
challenge = _ref.challenge,
|
|
|
shixun = _ref.shixun,
|
|
|
identity = _ref.identity,
|
|
|
onSaveTaskStar = _ref.onSaveTaskStar,
|
|
|
subject_id = _ref.subject_id;
|
|
|
var params = (0,_umi_production_exports.useParams)();
|
|
|
var _useSearchParams = (0,_umi_production_exports.useSearchParams)(),
|
|
|
_useSearchParams2 = slicedToArray_default()(_useSearchParams, 1),
|
|
|
searchParams = _useSearchParams2[0];
|
|
|
var _useState = (0,_react_17_0_2_react.useState)([]),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
data = _useState2[0],
|
|
|
setData = _useState2[1];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)([]),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
defaultExpandedKeys = _useState4[0],
|
|
|
setDefaultExpandedKeys = _useState4[1];
|
|
|
var _useState5 = (0,_react_17_0_2_react.useState)(),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
selectKeys = _useState6[0],
|
|
|
setSelectKeys = _useState6[1];
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
getData(taskList);
|
|
|
setDefaultExpandedKeys(getParentIds({
|
|
|
children: taskList
|
|
|
}, challenge.id));
|
|
|
setData(toConsumableArray_default()(taskList));
|
|
|
console.log('taskList:', taskList);
|
|
|
}, [taskList]);
|
|
|
var getData = function getData(d) {
|
|
|
d.map(function (item, key) {
|
|
|
var _item$children;
|
|
|
item.index = key;
|
|
|
item.title = item.name;
|
|
|
// item.key = item.identifier || item.id
|
|
|
if (item.id == challenge.id) {
|
|
|
setSelectKeys(item.key);
|
|
|
}
|
|
|
if (!!((_item$children = item.children) !== null && _item$children !== void 0 && _item$children.length)) getData(item.children);
|
|
|
});
|
|
|
};
|
|
|
var onSelect = function onSelect(keys, info) {
|
|
|
console.log('Trigger Select', keys, info);
|
|
|
if (info.node.shixun_identifier) {
|
|
|
toShixun(info.node.shixun_identifier, info.node.key, false, subject_id);
|
|
|
}
|
|
|
};
|
|
|
var onExpand = function onExpand() {
|
|
|
console.log('Trigger Expand');
|
|
|
};
|
|
|
function getParentIds(object, id) {
|
|
|
var ids;
|
|
|
if (!object || typeof_default()(object) !== 'object') return;
|
|
|
if (object.id == id) return [];
|
|
|
return object.children.some(function (o) {
|
|
|
return ids = getParentIds(o, id);
|
|
|
}) ? [].concat(toConsumableArray_default()(ids), [object.key]) : undefined;
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "task-nav-container",
|
|
|
children: [!!searchParams.get("coursesId") && /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
className: "task-tip",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u6E29\u99A8\u63D0\u793A: "
|
|
|
}), "\u82E5\u67E5\u770B\u7B54\u6848\u65F6\u95F4\u65E9\u4E8E\u5173\u5361\u4EFB\u52A1\u5B8C\u6210\u65F6\u95F4\uFF0C\u5C06\u5F71\u54CD\u8BFE\u5802\u5B9E\u8BAD\u4F5C\u4E1A\u7684\u6210\u7EE9\u3002"]
|
|
|
})
|
|
|
}), !!(data !== null && data !== void 0 && data.length) && /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
style: {
|
|
|
padding: 10
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(DirectoryTree, {
|
|
|
className: task_path_listmodules.tree,
|
|
|
icon: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-wancheng1 "
|
|
|
}),
|
|
|
switcherIcon: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-you1 ",
|
|
|
style: {
|
|
|
position: 'relative',
|
|
|
top: -2
|
|
|
}
|
|
|
}),
|
|
|
onSelect: onSelect,
|
|
|
onExpand: onExpand,
|
|
|
selectedKeys: [selectKeys],
|
|
|
defaultExpandedKeys: toConsumableArray_default()(defaultExpandedKeys),
|
|
|
treeData: data,
|
|
|
titleRender: function titleRender(item, d, i) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
className: "".concat(challenge.id == item.id ? task_path_listmodules.active : '', " multi_ellipsis1"),
|
|
|
style: {
|
|
|
paddingRight: 34
|
|
|
},
|
|
|
children: [item.item_type === 'Shixun' && /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
"class": "iconfont icon-shixunti2 c-light-primary font20"
|
|
|
}), item.item_type === 'Challenge' && /*#__PURE__*/(0,jsx_runtime.jsxs)("i", {
|
|
|
style: {
|
|
|
fontFamily: 'monospace',
|
|
|
position: 'relative',
|
|
|
top: item.item_type === 'Shixun' ? -2 : 0
|
|
|
},
|
|
|
children: ["\uFF08", util/* RomanNumber */.I9[item.index], "\uFF09"]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
style: {
|
|
|
position: 'relative',
|
|
|
top: item.item_type === 'Shixun' || item.item_type === 'Stage' ? -2 : 0
|
|
|
},
|
|
|
children: item === null || item === void 0 ? void 0 : item.name
|
|
|
}), item.item_type !== 'Stage' && /*#__PURE__*/(0,jsx_runtime.jsxs)("i", {
|
|
|
className: "iconfont icon-tasks-img c-grey-999 ".concat((item === null || item === void 0 ? void 0 : item.status) == 1 && 'c-green-29b'),
|
|
|
children: [((item === null || item === void 0 ? void 0 : item.status) == 1 || (item === null || item === void 0 ? void 0 : item.status) == 0) && /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: ImagesIcon/* done1Icon */.k$,
|
|
|
width: "16"
|
|
|
}), (item === null || item === void 0 ? void 0 : item.status) == 2 && /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: ImagesIcon/* done2Icon */.ub,
|
|
|
width: "16"
|
|
|
}), (item === null || item === void 0 ? void 0 : item.status) == 3 && /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: ImagesIcon/* done3Icon */.e6,
|
|
|
width: "16"
|
|
|
})]
|
|
|
})]
|
|
|
});
|
|
|
}
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/left-panel/discuss/index.jsx + 8 modules
|
|
|
var discuss = __webpack_require__(77298);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/discuss-input-editor/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
// EXTERNAL MODULE: ./src/components/markdown-editor/index.tsx + 10 modules
|
|
|
var markdown_editor = __webpack_require__(97526);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/discuss-input-editor/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var discuss_input_editor = (function (_ref) {
|
|
|
var user_praise = _ref.user_praise,
|
|
|
praise_count = _ref.praise_count,
|
|
|
praisePlus = _ref.praisePlus,
|
|
|
onCreateDiscuss = _ref.onCreateDiscuss,
|
|
|
user = _ref.user,
|
|
|
userInfo = _ref.userInfo;
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
showMd = _useState2[0],
|
|
|
setShowMd = _useState2[1];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)(''),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
value = _useState4[0],
|
|
|
setValue = _useState4[1];
|
|
|
function onChangeHandler(v) {
|
|
|
setValue(v);
|
|
|
}
|
|
|
function onShowMd() {
|
|
|
setShowMd(true);
|
|
|
}
|
|
|
function onCancel() {
|
|
|
setShowMd(false);
|
|
|
}
|
|
|
function onCommit() {
|
|
|
return _onCommit.apply(this, arguments);
|
|
|
}
|
|
|
function _onCommit() {
|
|
|
_onCommit = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
if (userInfo !== null && userInfo !== void 0 && userInfo.authentication) {
|
|
|
_context.next = 3;
|
|
|
break;
|
|
|
}
|
|
|
es_modal/* default */.Z.confirm({
|
|
|
title: '提示',
|
|
|
className: 'custom-modal-divider ',
|
|
|
icon: null,
|
|
|
content: '需要通过实名验证后,才能进行评论操作',
|
|
|
okText: '前往实名验证',
|
|
|
cancelText: '取消',
|
|
|
onOk: function onOk() {
|
|
|
window.open("/account/certification");
|
|
|
}
|
|
|
});
|
|
|
return _context.abrupt("return");
|
|
|
case 3:
|
|
|
if (!(value.trim() == '')) {
|
|
|
_context.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
message/* default */.ZP.warning('内容不能为空');
|
|
|
return _context.abrupt("return");
|
|
|
case 6:
|
|
|
onCreateDiscuss(value);
|
|
|
setValue('');
|
|
|
setShowMd(false);
|
|
|
case 9:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return _onCommit.apply(this, arguments);
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "comment-input-editor-container ".concat(showMd ? 'active' : '', " "),
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: showMd ? 'text-area hide' : 'text-area',
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("input", {
|
|
|
placeholder: "\u8BF4\u70B9\u4EC0\u4E48",
|
|
|
onClick: onShowMd
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
className: "c-light-black",
|
|
|
onClick: praisePlus,
|
|
|
title: user_praise ? '取消点赞' : '点赞',
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "mr3 ".concat(user_praise ? 'iconfont icon-dianzan c-orange' : 'iconfont icon-dianzan-xian', " "),
|
|
|
alt: "\u8D5E"
|
|
|
}), praise_count ? /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: praise_count
|
|
|
}) : '']
|
|
|
})]
|
|
|
}), showMd ? /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "input-mask",
|
|
|
onClick: onCancel
|
|
|
}) : null, /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: showMd ? 'md-container' : 'md-container hide',
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(markdown_editor/* default */.Z, {
|
|
|
id: "discuss-input-editor",
|
|
|
startInit: showMd,
|
|
|
miniToolbar: true,
|
|
|
watch: false,
|
|
|
noStorage: true,
|
|
|
defaultValue: value,
|
|
|
height: 240,
|
|
|
onChange: onChangeHandler
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "tip-container",
|
|
|
onClick: onCancel,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
children: "\u8BF7\u52FF\u7C98\u8D34\u7B54\u6848\uFF0C\u5426\u5219\u5C06\u9020\u6210\u8D26\u53F7\u7981\u7528\u540E\u679C\uFF01"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
className: "btn-send",
|
|
|
style: {
|
|
|
color: '#fff',
|
|
|
background: '#0152d9'
|
|
|
},
|
|
|
onClick: onCommit,
|
|
|
children: "\u53D1\u9001"
|
|
|
})]
|
|
|
})]
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./src/components/mediator.js
|
|
|
var mediator = __webpack_require__(74692);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/answer-panel/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
// EXTERNAL MODULE: ./src/components/Spinner/index.tsx + 1 modules
|
|
|
var Spinner = __webpack_require__(30482);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/answer-panel/choose-answer/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/answer-panel/choose-answer/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var choose_answer = (function (_ref) {
|
|
|
var data = _ref.data;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(_react_17_0_2_react.Fragment, {
|
|
|
children: data && data.map(function (item) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "choose-answer-item",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
children: ["\u7B2C", item.position, "\u9898"]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(RenderHtml/* default */.Z, {
|
|
|
value: item.answer
|
|
|
})]
|
|
|
}, item.position);
|
|
|
})
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/answer-panel/multi-level-answer/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/answer-panel/multi-level-answer/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var multi_level_answer = (function (_ref) {
|
|
|
var data = _ref.data,
|
|
|
onShowUnlockAnswerModal = _ref.onShowUnlockAnswerModal,
|
|
|
challenge = _ref.challenge;
|
|
|
var styles = challenge !== null && challenge !== void 0 && challenge.disable_copy ? {
|
|
|
pointerEvents: 'none',
|
|
|
userSelect: 'none'
|
|
|
} : {};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(_react_17_0_2_react.Fragment, {
|
|
|
children: data && data.map(function (item, index) {
|
|
|
var answer_id = item.answer_id,
|
|
|
answer_name = item.answer_name,
|
|
|
answer_contents = item.answer_contents,
|
|
|
view_time = item.view_time;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "answer-item-container",
|
|
|
style: styles,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "flex-container",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
className: "level",
|
|
|
children: [" \u7EA7\u522B", index + 1, "\uFF1A "]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "name",
|
|
|
children: answer_name
|
|
|
}), answer_contents ? /*#__PURE__*/(0,jsx_runtime.jsxs)(_react_17_0_2_react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "view-time",
|
|
|
children: view_time ? dayjs_min_default()(view_time).format('YYYY-MM-DD HH:mm') : ''
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u5DF2\u89E3\u9501"
|
|
|
})]
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: onShowUnlockAnswerModal,
|
|
|
children: "\u89E3\u9501"
|
|
|
})]
|
|
|
}), answer_contents ? /*#__PURE__*/(0,jsx_runtime.jsx)(RenderHtml/* default */.Z, {
|
|
|
value: answer_contents
|
|
|
}) : null]
|
|
|
}, answer_id);
|
|
|
})
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/answer-panel/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//st = 0 代码题
|
|
|
//st = 1 选择题
|
|
|
|
|
|
|
|
|
/* harmony default export */ var answer_panel = (function (_ref) {
|
|
|
var loading = _ref.loading,
|
|
|
data = _ref.data,
|
|
|
onShowTip = _ref.onShowTip,
|
|
|
st = _ref.st,
|
|
|
challenge = _ref.challenge;
|
|
|
var divDom = (0,_react_17_0_2_react.useRef)(null);
|
|
|
var tipsDom = (0,_react_17_0_2_react.useRef)(null);
|
|
|
var timer = (0,_react_17_0_2_react.useRef)(null);
|
|
|
var timerTwo = (0,_react_17_0_2_react.useRef)(null);
|
|
|
var divXY = (0,_react_17_0_2_react.useRef)({
|
|
|
x: 0,
|
|
|
y: 0
|
|
|
});
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (divDom.current && challenge !== null && challenge !== void 0 && challenge.disable_copy) {
|
|
|
var onMouseOver = function onMouseOver(e) {
|
|
|
divXY.current = {
|
|
|
x: e.clientX,
|
|
|
y: e.clientY
|
|
|
};
|
|
|
clearTimeout(timer.current);
|
|
|
clearTimeout(timerTwo.current);
|
|
|
timer.current = setTimeout(function () {
|
|
|
tipsDom.current.style.left = "".concat(divXY.current.x, "px");
|
|
|
tipsDom.current.style.top = "".concat(divXY.current.y, "px");
|
|
|
tipsDom.current.style.display = 'block';
|
|
|
}, 1000);
|
|
|
timerTwo.current = setTimeout(function () {
|
|
|
tipsDom.current.style.display = 'none';
|
|
|
clearTimeout(timer.current);
|
|
|
clearTimeout(timerTwo.current);
|
|
|
}, 3000);
|
|
|
};
|
|
|
var onMouseOut = function onMouseOut() {
|
|
|
tipsDom.current.style.display = 'none';
|
|
|
clearTimeout(timer.current);
|
|
|
clearTimeout(timerTwo.current);
|
|
|
};
|
|
|
var onMouseMove = function onMouseMove(e) {
|
|
|
divXY.current = {
|
|
|
x: e.clientX,
|
|
|
y: e.clientY
|
|
|
};
|
|
|
};
|
|
|
divDom.current.addEventListener('mouseenter', onMouseOver);
|
|
|
window.addEventListener('mousemove', onMouseMove);
|
|
|
divDom.current.addEventListener('mouseleave', onMouseOut);
|
|
|
return function () {
|
|
|
var _divDom$current, _divDom$current2;
|
|
|
(_divDom$current = divDom.current) === null || _divDom$current === void 0 || _divDom$current.removeEventListener('mouseenter', onMouseOver);
|
|
|
window.removeEventListener('mousemove', onMouseMove);
|
|
|
(_divDom$current2 = divDom.current) === null || _divDom$current2 === void 0 || _divDom$current2.removeEventListener('mouseleave', onMouseOut);
|
|
|
};
|
|
|
}
|
|
|
}, [divDom === null || divDom === void 0 ? void 0 : divDom.current, challenge === null || challenge === void 0 ? void 0 : challenge.disable_copy]);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
ref: divDom,
|
|
|
className: "answer-container",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
ref: tipsDom,
|
|
|
className: "answer-tips-css",
|
|
|
children: "\u7981\u6B62\u590D\u5236\u53C2\u8003\u7B54\u6848"
|
|
|
}), loading ? /*#__PURE__*/(0,jsx_runtime.jsx)(Spinner/* default */.Z, {}) : null, st === 1 ? /*#__PURE__*/(0,jsx_runtime.jsx)(choose_answer, {
|
|
|
data: data
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)(multi_level_answer, {
|
|
|
data: data,
|
|
|
challenge: challenge,
|
|
|
onShowUnlockAnswerModal: onShowTip
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/answer-panel/unlock-answer-list/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/checkbox/index.js + 3 modules
|
|
|
var es_checkbox = __webpack_require__(24905);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/answer-panel/unlock-answer-list/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var unlock_answer_list = (function (_ref) {
|
|
|
var data = _ref.data,
|
|
|
selected_unlocked_answer_id = _ref.selected_unlocked_answer_id,
|
|
|
selected_index = _ref.selected_index,
|
|
|
onSelect = _ref.onSelect;
|
|
|
if (!data) {
|
|
|
return null;
|
|
|
}
|
|
|
var list = data.filter(function (item, index) {
|
|
|
if (!item.answer_contents) {
|
|
|
item.index = index;
|
|
|
return true;
|
|
|
}
|
|
|
return false;
|
|
|
});
|
|
|
function onTriggerAnswer(e) {
|
|
|
var _e$target = e.target,
|
|
|
value = _e$target.value,
|
|
|
checked = _e$target.checked;
|
|
|
if (checked) {
|
|
|
onSelect(value);
|
|
|
} else {
|
|
|
onSelect(null);
|
|
|
}
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("table", {
|
|
|
className: "unlock-answer-list",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("thead", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("tr", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("th", {}), /*#__PURE__*/(0,jsx_runtime.jsx)("th", {
|
|
|
children: "\u7EA7\u522B"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("th", {
|
|
|
children: "\u540D\u79F0"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("th", {
|
|
|
children: "\u6263\u5206\u5360\u6BD4"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("th", {
|
|
|
children: "\u6263\u51CF\u91D1\u5E01"
|
|
|
})]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("tbody", {
|
|
|
children: list.map(function (item, i) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("tr", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("td", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_checkbox/* default */.Z, {
|
|
|
value: item.answer_id,
|
|
|
onChange: onTriggerAnswer,
|
|
|
checked: item.answer_id === selected_unlocked_answer_id || selected_unlocked_answer_id && selected_index >= i
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("td", {
|
|
|
children: item.index + 1
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("td", {
|
|
|
children: item.answer_name
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("td", {
|
|
|
children: [item.answer_ratio, "%"]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("td", {
|
|
|
className: "gold-color",
|
|
|
children: item.answer_score
|
|
|
})]
|
|
|
}, item.answer_id);
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/unity3d-panel/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var unity3d_panelmodules = ({"unity3d-panel":"unity3d-panel___aA1uJ"});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/unity3d-panel/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*● web通信U3D Json数据格式: { "state": "start", "data": "Red"(Blue,White) }
|
|
|
● U3D通讯web端 Json数据格式: { "GameState":"Fail", "Data":"" } */
|
|
|
|
|
|
|
|
|
/* harmony default export */ var unity3d_panel = (function (_ref) {
|
|
|
var unity_3d_routes = _ref.unity_3d_routes,
|
|
|
onGetUnity3dMessage = _ref.onGetUnity3dMessage,
|
|
|
taskData = _ref.taskData,
|
|
|
userInfo = _ref.userInfo,
|
|
|
_ref$itemData = _ref.itemData,
|
|
|
itemData = _ref$itemData === void 0 ? {} : _ref$itemData;
|
|
|
var el = (0,_react_17_0_2_react.useRef)();
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(true),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
loading = _useState2[0],
|
|
|
setLoading = _useState2[1];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)('正在努力加载中...'),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
loadingText = _useState4[0],
|
|
|
setLoadingText = _useState4[1];
|
|
|
var _useState5 = (0,_react_17_0_2_react.useState)({}),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
podData = _useState6[0],
|
|
|
setPodData = _useState6[1];
|
|
|
var shixun_environment_id = itemData.shixun_environment_id,
|
|
|
tab_type = itemData.tab_type,
|
|
|
index_tab = itemData.index_tab;
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
function onReceiveMessage(e) {
|
|
|
try {
|
|
|
var mes = JSON.parse(e.data);
|
|
|
onGetUnity3dMessage(mes);
|
|
|
if (mes.type === 'getTaskData') {
|
|
|
sendMessage({
|
|
|
taskData: taskData,
|
|
|
userInfo: userInfo
|
|
|
});
|
|
|
}
|
|
|
} catch (error) {
|
|
|
console.log('error:', error, e);
|
|
|
}
|
|
|
}
|
|
|
window.addEventListener('message', onReceiveMessage);
|
|
|
var unSub = mediator/* default */.Z.subscribe('evaluate-unity3d-result', function (value) {
|
|
|
sendMessage(value);
|
|
|
});
|
|
|
var unSub2 = mediator/* default */.Z.subscribe('unity3d-reset', function (value) {
|
|
|
if (value === 'start') {
|
|
|
setLoading(true);
|
|
|
setLoadingText('正在重置中...');
|
|
|
setPodData({});
|
|
|
}
|
|
|
if (value === 'done') {
|
|
|
getPodServer();
|
|
|
}
|
|
|
});
|
|
|
return function () {
|
|
|
window.removeEventListener('message', onReceiveMessage);
|
|
|
unSub();
|
|
|
unSub2();
|
|
|
};
|
|
|
}, []);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if ((itemData === null || itemData === void 0 ? void 0 : itemData.tab_type) === 5) {
|
|
|
getPodServer();
|
|
|
}
|
|
|
}, [itemData === null || itemData === void 0 ? void 0 : itemData.tab_type]);
|
|
|
var getPodServer = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var _taskData$myshixun, _res$data;
|
|
|
var res, _res$data2, _res$data3, _res$data4;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
setLoading(true);
|
|
|
_context.next = 3;
|
|
|
return (0,service/* startInit */.sA)((_taskData$myshixun = taskData.myshixun) === null || _taskData$myshixun === void 0 ? void 0 : _taskData$myshixun.identifier, {
|
|
|
shixun_environment_id: shixun_environment_id,
|
|
|
tab_type: tab_type
|
|
|
});
|
|
|
case 3:
|
|
|
res = _context.sent;
|
|
|
setLoading(false);
|
|
|
if (!(res !== null && res !== void 0 && (_res$data = res.data) !== null && _res$data !== void 0 && (_res$data = _res$data.data_list) !== null && _res$data !== void 0 && _res$data.length)) {
|
|
|
_context.next = 8;
|
|
|
break;
|
|
|
}
|
|
|
mediator/* default */.Z.publish('pod-restrict-data', {
|
|
|
identifier: res === null || res === void 0 || (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.identifier,
|
|
|
data_list: res === null || res === void 0 || (_res$data3 = res.data) === null || _res$data3 === void 0 ? void 0 : _res$data3.data_list
|
|
|
});
|
|
|
return _context.abrupt("return");
|
|
|
case 8:
|
|
|
if ((res === null || res === void 0 ? void 0 : res.status) === 0) {
|
|
|
res.data.thiry_party_url = (res === null || res === void 0 || (_res$data4 = res.data) === null || _res$data4 === void 0 ? void 0 : _res$data4.link_url) + '?t=' + new Date().getTime();
|
|
|
mediator/* default */.Z.publish('send-tabs-result-data', objectSpread2_default()(objectSpread2_default()({}, res === null || res === void 0 ? void 0 : res.data), {}, {
|
|
|
index_tab: index_tab
|
|
|
}));
|
|
|
mediator/* default */.Z.publish('update-windows-time', res === null || res === void 0 ? void 0 : res.data);
|
|
|
setPodData(objectSpread2_default()({}, res.data || {}));
|
|
|
}
|
|
|
case 9:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function getPodServer() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
function sendMessage(data) {
|
|
|
if (el.current) {
|
|
|
el.current.contentWindow.postMessage(JSON.stringify(data), '*');
|
|
|
}
|
|
|
}
|
|
|
function onLoad() {
|
|
|
setLoading(false);
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(_react_17_0_2_react.Fragment, {
|
|
|
children: [loading && /*#__PURE__*/(0,jsx_runtime.jsx)(Spinner/* default */.Z, {
|
|
|
className: "c-white",
|
|
|
message: loadingText
|
|
|
}), (unity_3d_routes || podData.thiry_party_url) && /*#__PURE__*/(0,jsx_runtime.jsx)("iframe", {
|
|
|
onLoad: onLoad,
|
|
|
className: unity3d_panelmodules["unity3d-panel"],
|
|
|
ref: el,
|
|
|
allow: "geolocation document-domain",
|
|
|
sandbox: "allow-scripts allow-same-origin allow-top-navigation allow-forms allow-popups allow-pointer-lock allow-popups-to-escape-sandbox allow-presentation allow-top-navigation-by-user-activation",
|
|
|
src: unity_3d_routes || podData.thiry_party_url
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/util.js
|
|
|
var tasks_util = __webpack_require__(77890);
|
|
|
// EXTERNAL MODULE: ./src/components/image-preview/index.tsx + 1 modules
|
|
|
var image_preview = __webpack_require__(52557);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function onPreviewImage(e) {
|
|
|
var t = e.target;
|
|
|
if (t.tagName.toUpperCase() === 'IMG') {
|
|
|
var url = t.src || t.getAttribute('src');
|
|
|
if (url && url.indexOf('/images/avatars/User') === -1) {
|
|
|
e.stopPropagation();
|
|
|
e.preventDefault();
|
|
|
mediator/* default */.Z.publish('preview-image', url);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
var left_panel_initialState = {
|
|
|
showTaskList: false,
|
|
|
activeIndex: 0,
|
|
|
taskList: [],
|
|
|
enlarge_unity3D: false,
|
|
|
tab_fixed: false,
|
|
|
//答案相关state
|
|
|
selected_unlocked_answer_id: null,
|
|
|
isMultiLevel: false,
|
|
|
showTip: false,
|
|
|
answerScore: 0,
|
|
|
//单个关卡的分数
|
|
|
data: null,
|
|
|
loading: false
|
|
|
};
|
|
|
function left_panel_reducer(state, action) {
|
|
|
switch (action.type) {
|
|
|
case constant/* SET_ACTIVE_INDEX */.n_:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
activeIndex: action.payload
|
|
|
});
|
|
|
case constant/* TRIGGER_ENLARGE_UNITY3D */.lS:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
enlarge_unity3D: action.payload
|
|
|
});
|
|
|
case constant/* TRIGGER_TAB_FIXED */.gK:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
tab_fixed: action.payload
|
|
|
});
|
|
|
case constant/* SHOW_TASK_LIST */.Hp:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
showTaskList: true
|
|
|
});
|
|
|
case constant/* HIDE_TASK_LIST */.hK:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
showTaskList: false
|
|
|
});
|
|
|
case constant/* GET_TASK_LIST */.sM:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), action.payload);
|
|
|
case constant/* SET_TASK_STAR */.ib:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), action.payload);
|
|
|
case constant/* SHOW_ANSWER_LOADING */.wt:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
loading: true
|
|
|
});
|
|
|
case constant/* SHOW_TIP_MODAL */.Rj:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
showTip: true
|
|
|
});
|
|
|
case constant/* HIDE_TIP_MODAL */.NZ:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
showTip: false
|
|
|
});
|
|
|
case constant/* SELECT_UNLOCK_ANSWER */.ym:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
selected_unlocked_answer_id: action.payload
|
|
|
});
|
|
|
case constant/* FETCH_ANSWER_INFO */.pl:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), action.payload);
|
|
|
default:
|
|
|
throw new Error();
|
|
|
}
|
|
|
}
|
|
|
//* score 关卡分数
|
|
|
var LeftPanel = function LeftPanel(_ref) {
|
|
|
var taskId = _ref.taskId,
|
|
|
minuxUserGrade = _ref.minuxUserGrade,
|
|
|
discusses_count = _ref.discusses_count,
|
|
|
is_teacher = _ref.is_teacher,
|
|
|
has_answer = _ref.has_answer,
|
|
|
user = _ref.user,
|
|
|
st = _ref.st,
|
|
|
game = _ref.game,
|
|
|
rank_name = _ref.rank_name,
|
|
|
challenge = _ref.challenge,
|
|
|
myshixun = _ref.myshixun,
|
|
|
user_praise = _ref.user_praise,
|
|
|
praise_count = _ref.praise_count,
|
|
|
unity_3d_routes = _ref.unity_3d_routes,
|
|
|
with_code_file = _ref.with_code_file,
|
|
|
onPlusOrCancelPraise = _ref.onPlusOrCancelPraise,
|
|
|
onGetUnity3dMessage = _ref.onGetUnity3dMessage,
|
|
|
shixun = _ref.shixun,
|
|
|
taskData = _ref.taskData,
|
|
|
chatgpt = _ref.chatgpt,
|
|
|
userInfoData = _ref.userInfoData,
|
|
|
to_user_id = _ref.to_user_id;
|
|
|
var _useSearchParams = (0,_umi_production_exports.useSearchParams)(),
|
|
|
_useSearchParams2 = slicedToArray_default()(_useSearchParams, 1),
|
|
|
searchParams = _useSearchParams2[0];
|
|
|
var _useReducer = (0,_react_17_0_2_react.useReducer)(left_panel_reducer, left_panel_initialState),
|
|
|
_useReducer2 = slicedToArray_default()(_useReducer, 2),
|
|
|
state = _useReducer2[0],
|
|
|
dispatch = _useReducer2[1];
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
confirmLoading = _useState2[0],
|
|
|
setConfirmLoading = _useState2[1];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
allowDisableDiscuss = _useState4[0],
|
|
|
setAllowDisableDiscuss = _useState4[1];
|
|
|
var _useState5 = (0,_react_17_0_2_react.useState)({}),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
userInfo = _useState6[0],
|
|
|
setUserInfo = _useState6[1];
|
|
|
var taskList = state.taskList,
|
|
|
showTaskList = state.showTaskList,
|
|
|
activeIndex = state.activeIndex,
|
|
|
enlarge_unity3D = state.enlarge_unity3D,
|
|
|
tab_fixed = state.tab_fixed,
|
|
|
data = state.data,
|
|
|
answerScore = state.answerScore,
|
|
|
loading = state.loading,
|
|
|
showTip = state.showTip,
|
|
|
isMultiLevel = state.isMultiLevel,
|
|
|
selected_unlocked_answer_id = state.selected_unlocked_answer_id;
|
|
|
var selected_index = (0,_react_17_0_2_react.useMemo)(function () {
|
|
|
var rs = 0;
|
|
|
if (data && selected_unlocked_answer_id) {
|
|
|
var unLockList = data.filter(function (item) {
|
|
|
return !item.answer_contents;
|
|
|
});
|
|
|
for (var i = 0; i < unLockList.length; i++) {
|
|
|
if (unLockList[i].answer_id === selected_unlocked_answer_id) {
|
|
|
rs = i;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
return rs;
|
|
|
}, [data, selected_unlocked_answer_id]);
|
|
|
var propaedeutics = shixun ? shixun.propaedeutics : null;
|
|
|
var contentEl = (0,_react_17_0_2_react.useRef)();
|
|
|
var open_rank = challenge.open_rank;
|
|
|
var tabs = (0,_react_17_0_2_react.useMemo)(function () {
|
|
|
var rs = [{
|
|
|
index: 0,
|
|
|
title: '任务要求'
|
|
|
}];
|
|
|
if (propaedeutics) {
|
|
|
rs.push({
|
|
|
index: 1,
|
|
|
title: '背景知识'
|
|
|
});
|
|
|
}
|
|
|
if (has_answer && searchParams.get("type") !== 'exercises' && !(challenge !== null && challenge !== void 0 && challenge.hide_answer)) {
|
|
|
rs.push({
|
|
|
index: 2,
|
|
|
title: '参考答案'
|
|
|
});
|
|
|
}
|
|
|
if (searchParams.get("type") !== 'exercises' && !(shixun !== null && shixun !== void 0 && shixun.is_disable_discuss)) rs.push({
|
|
|
index: 3,
|
|
|
title: chatgpt ? "问答" : '评论'
|
|
|
});
|
|
|
if (open_rank !== 'CLOSE') {
|
|
|
rs.push({
|
|
|
index: 4,
|
|
|
title: rank_name
|
|
|
});
|
|
|
}
|
|
|
return rs;
|
|
|
}, [has_answer, propaedeutics, open_rank, rank_name]);
|
|
|
function onSetActiveIndex(e) {
|
|
|
var id = parseInt(e.currentTarget.id);
|
|
|
if (id === 2) {
|
|
|
if (game.homework_common_answer_open) {
|
|
|
message/* default */.ZP.info('禁止查看答案');
|
|
|
} else {
|
|
|
initAnswer();
|
|
|
}
|
|
|
} else if (id === 3 && game.homework_common_comment_open) {
|
|
|
message/* default */.ZP.info('禁止查看评论');
|
|
|
} else {
|
|
|
dispatch({
|
|
|
type: constant/* SET_ACTIVE_INDEX */.n_,
|
|
|
payload: id
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
function initAnswer() {
|
|
|
return _initAnswer.apply(this, arguments);
|
|
|
}
|
|
|
function _initAnswer() {
|
|
|
_initAnswer = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var response;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
if (!(st === 0)) {
|
|
|
_context.next = 5;
|
|
|
break;
|
|
|
}
|
|
|
_context.next = 3;
|
|
|
return fetchAnswerInfo();
|
|
|
case 3:
|
|
|
_context.next = 9;
|
|
|
break;
|
|
|
case 5:
|
|
|
_context.next = 7;
|
|
|
return (0,service/* getChooseAnswerInfo */.sP)(game.identifier);
|
|
|
case 7:
|
|
|
response = _context.sent;
|
|
|
processChooseAnswer(response);
|
|
|
case 9:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return _initAnswer.apply(this, arguments);
|
|
|
}
|
|
|
function fetchAnswerInfo() {
|
|
|
return _fetchAnswerInfo.apply(this, arguments);
|
|
|
}
|
|
|
function _fetchAnswerInfo() {
|
|
|
_fetchAnswerInfo = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
var response, message, showTip;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
_context2.next = 2;
|
|
|
return (0,service/* getAnswerInfo */.lH)(game.identifier);
|
|
|
case 2:
|
|
|
response = _context2.sent;
|
|
|
message = response.message;
|
|
|
if (!(message.length === 0)) {
|
|
|
_context2.next = 7;
|
|
|
break;
|
|
|
}
|
|
|
message.info('本关卡未设置答案');
|
|
|
return _context2.abrupt("return");
|
|
|
case 7:
|
|
|
if (message.length) {
|
|
|
_context2.next = 10;
|
|
|
break;
|
|
|
}
|
|
|
dispatch({
|
|
|
type: constant/* FETCH_ANSWER_INFO */.pl,
|
|
|
payload: {
|
|
|
showTip: true,
|
|
|
isMultiLevel: false,
|
|
|
answerScore: message.answer_score,
|
|
|
selected_unlocked_answer_id: message.answer_id
|
|
|
}
|
|
|
});
|
|
|
return _context2.abrupt("return");
|
|
|
case 10:
|
|
|
showTip = message.filter(function (item) {
|
|
|
return item.answer_contents;
|
|
|
}).length === 0;
|
|
|
dispatch({
|
|
|
type: constant/* FETCH_ANSWER_INFO */.pl,
|
|
|
payload: {
|
|
|
showTip: showTip,
|
|
|
data: message,
|
|
|
isMultiLevel: message.length > 1,
|
|
|
activeIndex: !showTip ? 2 : activeIndex
|
|
|
}
|
|
|
});
|
|
|
case 12:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return _fetchAnswerInfo.apply(this, arguments);
|
|
|
}
|
|
|
function processChooseAnswer(response) {
|
|
|
var choose_answers = response.choose_answers,
|
|
|
message = response.message,
|
|
|
status = response.status;
|
|
|
if (status === 0) {
|
|
|
message.info(message);
|
|
|
return;
|
|
|
}
|
|
|
dispatch({
|
|
|
type: constant/* FETCH_ANSWER_INFO */.pl,
|
|
|
payload: {
|
|
|
showTip: status === 1 ? true : false,
|
|
|
data: choose_answers,
|
|
|
answerScore: message,
|
|
|
loading: false,
|
|
|
activeIndex: status === 1 ? activeIndex : 2
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
function onHideTip() {
|
|
|
dispatch({
|
|
|
type: constant/* HIDE_TIP_MODAL */.NZ
|
|
|
});
|
|
|
}
|
|
|
function onShowTip() {
|
|
|
dispatch({
|
|
|
type: constant/* SHOW_TIP_MODAL */.Rj
|
|
|
});
|
|
|
}
|
|
|
function onViewAnswer() {
|
|
|
return _onViewAnswer.apply(this, arguments);
|
|
|
}
|
|
|
function _onViewAnswer() {
|
|
|
_onViewAnswer = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3() {
|
|
|
var response, respose, status, _message, sum;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
setConfirmLoading(true);
|
|
|
if (!(st === 1)) {
|
|
|
_context3.next = 8;
|
|
|
break;
|
|
|
}
|
|
|
_context3.next = 4;
|
|
|
return (0,service/* getChooseUnlockAnswer */.MH)(game.identifier);
|
|
|
case 4:
|
|
|
response = _context3.sent;
|
|
|
if ((response === null || response === void 0 ? void 0 : response.status) !== -1) {
|
|
|
minuxUserGrade(answerScore);
|
|
|
processChooseAnswer(response);
|
|
|
}
|
|
|
_context3.next = 14;
|
|
|
break;
|
|
|
case 8:
|
|
|
if (!selected_unlocked_answer_id) {
|
|
|
_context3.next = 14;
|
|
|
break;
|
|
|
}
|
|
|
_context3.next = 11;
|
|
|
return (0,service/* getUnlockAnswer */.j3)(game.identifier, selected_unlocked_answer_id);
|
|
|
case 11:
|
|
|
respose = _context3.sent;
|
|
|
status = respose.status, _message = respose.message;
|
|
|
if (status === -1) {} else {
|
|
|
if (isMultiLevel) {
|
|
|
sum = 0;
|
|
|
data.filter(function (item) {
|
|
|
return !item.answer_contents;
|
|
|
}).forEach(function (item, index) {
|
|
|
if (index <= selected_index && item) {
|
|
|
sum += item.answer_score;
|
|
|
}
|
|
|
});
|
|
|
minuxUserGrade(sum);
|
|
|
} else {
|
|
|
minuxUserGrade(answerScore);
|
|
|
}
|
|
|
fetchAnswerInfo();
|
|
|
onSelect(null);
|
|
|
dispatch({
|
|
|
type: constant/* HIDE_TIP_MODAL */.NZ
|
|
|
});
|
|
|
}
|
|
|
case 14:
|
|
|
setConfirmLoading(false);
|
|
|
case 15:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
}));
|
|
|
return _onViewAnswer.apply(this, arguments);
|
|
|
}
|
|
|
function onSelect(id) {
|
|
|
dispatch({
|
|
|
type: constant/* SELECT_UNLOCK_ANSWER */.ym,
|
|
|
payload: id
|
|
|
});
|
|
|
}
|
|
|
function getTaskList() {
|
|
|
return _getTaskList.apply(this, arguments);
|
|
|
}
|
|
|
function _getTaskList() {
|
|
|
_getTaskList = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee4() {
|
|
|
var _response, response;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee4$(_context4) {
|
|
|
while (1) switch (_context4.prev = _context4.next) {
|
|
|
case 0:
|
|
|
_context4.prev = 0;
|
|
|
if (!searchParams.get("subject_id")) {
|
|
|
_context4.next = 7;
|
|
|
break;
|
|
|
}
|
|
|
_context4.next = 4;
|
|
|
return (0,service/* fetchPathsTaskList */.SO)(myshixun.identifier, objectSpread2_default()({}, (0,util/* getJsonFromUrl */.oP)()));
|
|
|
case 4:
|
|
|
response = _context4.sent;
|
|
|
_context4.next = 10;
|
|
|
break;
|
|
|
case 7:
|
|
|
_context4.next = 9;
|
|
|
return (0,service/* fetchTaskList */.g6)(myshixun.identifier);
|
|
|
case 9:
|
|
|
response = _context4.sent;
|
|
|
case 10:
|
|
|
dispatch({
|
|
|
type: constant/* GET_TASK_LIST */.sM,
|
|
|
payload: {
|
|
|
taskList: ((_response = response) === null || _response === void 0 ? void 0 : _response.stages) || response,
|
|
|
showTaskList: true
|
|
|
}
|
|
|
});
|
|
|
_context4.next = 16;
|
|
|
break;
|
|
|
case 13:
|
|
|
_context4.prev = 13;
|
|
|
_context4.t0 = _context4["catch"](0);
|
|
|
console.log(_context4.t0);
|
|
|
case 16:
|
|
|
case "end":
|
|
|
return _context4.stop();
|
|
|
}
|
|
|
}, _callee4, null, [[0, 13]]);
|
|
|
}));
|
|
|
return _getTaskList.apply(this, arguments);
|
|
|
}
|
|
|
function onSaveTaskStar(_x, _x2, _x3) {
|
|
|
return _onSaveTaskStar.apply(this, arguments);
|
|
|
} //如果不实时刷新, 需要处理评测,查看答案时间这些变动
|
|
|
function _onSaveTaskStar() {
|
|
|
_onSaveTaskStar = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee5(id, star, index) {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee5$(_context5) {
|
|
|
while (1) switch (_context5.prev = _context5.next) {
|
|
|
case 0:
|
|
|
_context5.prev = 0;
|
|
|
_context5.next = 3;
|
|
|
return (0,service/* saveTaskStar */.L5)(id, shixun.id, star);
|
|
|
case 3:
|
|
|
taskList[index].star = star;
|
|
|
dispatch({
|
|
|
type: constant/* SET_TASK_STAR */.ib,
|
|
|
payload: {
|
|
|
taskList: toConsumableArray_default()(taskList)
|
|
|
}
|
|
|
});
|
|
|
_context5.next = 10;
|
|
|
break;
|
|
|
case 7:
|
|
|
_context5.prev = 7;
|
|
|
_context5.t0 = _context5["catch"](0);
|
|
|
console.log(_context5.t0);
|
|
|
case 10:
|
|
|
case "end":
|
|
|
return _context5.stop();
|
|
|
}
|
|
|
}, _callee5, null, [[0, 7]]);
|
|
|
}));
|
|
|
return _onSaveTaskStar.apply(this, arguments);
|
|
|
}
|
|
|
function onViewAllTask() {
|
|
|
getTaskList();
|
|
|
}
|
|
|
function onHideTaskList() {
|
|
|
dispatch({
|
|
|
type: constant/* HIDE_TASK_LIST */.hK
|
|
|
});
|
|
|
}
|
|
|
|
|
|
//和后端商量直接调useInfo接口取实训身份信息
|
|
|
//目前评论中使用到
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
var res = userInfoData === null || userInfoData === void 0 ? void 0 : userInfoData.userInfo;
|
|
|
if (res) {
|
|
|
var _res$shixun;
|
|
|
setUserInfo(objectSpread2_default()({}, res));
|
|
|
setAllowDisableDiscuss(res === null || res === void 0 || (_res$shixun = res.shixun) === null || _res$shixun === void 0 ? void 0 : _res$shixun.own);
|
|
|
}
|
|
|
}, [shixun === null || shixun === void 0 ? void 0 : shixun.identifier]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
return function () {
|
|
|
dispatch({
|
|
|
type: constant/* HIDE_TASK_LIST */.hK
|
|
|
});
|
|
|
dispatch({
|
|
|
type: constant/* SET_ACTIVE_INDEX */.n_,
|
|
|
payload: 0
|
|
|
});
|
|
|
};
|
|
|
}, [taskId]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
dispatch({
|
|
|
type: constant/* SET_ACTIVE_INDEX */.n_,
|
|
|
payload: searchParams.get("extra") ? 3 : 0
|
|
|
});
|
|
|
}, [searchParams.get("extra")]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (contentEl.current) {
|
|
|
contentEl.current.addEventListener('mousedown', onPreviewImage);
|
|
|
return function () {
|
|
|
var _contentEl$current;
|
|
|
(_contentEl$current = contentEl.current) === null || _contentEl$current === void 0 || _contentEl$current.removeEventListener('mousedown', onPreviewImage);
|
|
|
};
|
|
|
}
|
|
|
}, [contentEl.current]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (with_code_file && unity_3d_routes && contentEl.current) {
|
|
|
var onScroll = (0,tasks_util/* debounce */.Ds)(function (e) {
|
|
|
var scrollTop = e.target.scrollTop;
|
|
|
if (scrollTop >= 354) {
|
|
|
dispatch({
|
|
|
type: constant/* TRIGGER_TAB_FIXED */.gK,
|
|
|
payload: true
|
|
|
});
|
|
|
} else {
|
|
|
dispatch({
|
|
|
type: constant/* TRIGGER_TAB_FIXED */.gK,
|
|
|
payload: false
|
|
|
});
|
|
|
}
|
|
|
}, 10);
|
|
|
contentEl.current.addEventListener('scroll', onScroll);
|
|
|
var unSub = mediator/* default */.Z.subscribe('evaluate-unity3d-finish', function () {
|
|
|
contentEl.current.scrollTop = 0;
|
|
|
});
|
|
|
return function () {
|
|
|
var _contentEl$current2;
|
|
|
(_contentEl$current2 = contentEl.current) === null || _contentEl$current2 === void 0 || _contentEl$current2.removeEventListener('scroll', onScroll);
|
|
|
unSub();
|
|
|
};
|
|
|
} else {
|
|
|
dispatch({
|
|
|
type: constant/* TRIGGER_TAB_FIXED */.gK,
|
|
|
payload: true
|
|
|
});
|
|
|
}
|
|
|
}, [with_code_file, unity_3d_routes, contentEl.current]);
|
|
|
var position = challenge.position,
|
|
|
score = challenge.score,
|
|
|
subject = challenge.subject;
|
|
|
var headerOption = {
|
|
|
onViewAllTask: onViewAllTask,
|
|
|
position: position,
|
|
|
score: score,
|
|
|
subject: subject
|
|
|
};
|
|
|
function onCreateDiscuss(_x4) {
|
|
|
return _onCreateDiscuss.apply(this, arguments);
|
|
|
}
|
|
|
function _onCreateDiscuss() {
|
|
|
_onCreateDiscuss = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee6(content) {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee6$(_context6) {
|
|
|
while (1) switch (_context6.prev = _context6.next) {
|
|
|
case 0:
|
|
|
_context6.next = 2;
|
|
|
return (0,discuss_service/* createDiscuss */.rd)({
|
|
|
content: content,
|
|
|
container_type: 'Shixun',
|
|
|
container_id: shixun.id,
|
|
|
challenge_id: challenge.id,
|
|
|
position: position
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context6.sent;
|
|
|
if (!(res.status === -3)) {
|
|
|
_context6.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
es_modal/* default */.Z.info({
|
|
|
title: '提示',
|
|
|
className: 'custom-modal-divider ',
|
|
|
icon: null,
|
|
|
content: '你的账号因为发布了不当内容,现已将评论功能屏蔽。',
|
|
|
okText: '确定'
|
|
|
});
|
|
|
return _context6.abrupt("return");
|
|
|
case 6:
|
|
|
console.log(res);
|
|
|
dispatch({
|
|
|
type: constant/* SET_ACTIVE_INDEX */.n_,
|
|
|
payload: 3
|
|
|
});
|
|
|
mediator/* default */.Z.publish('create-discuss');
|
|
|
case 9:
|
|
|
case "end":
|
|
|
return _context6.stop();
|
|
|
}
|
|
|
}, _callee6);
|
|
|
}));
|
|
|
return _onCreateDiscuss.apply(this, arguments);
|
|
|
}
|
|
|
function onTriggerUnity3D() {
|
|
|
dispatch({
|
|
|
type: constant/* TRIGGER_ENLARGE_UNITY3D */.lS,
|
|
|
payload: !enlarge_unity3D
|
|
|
});
|
|
|
}
|
|
|
var answerPanelOption = {
|
|
|
loading: loading,
|
|
|
data: data,
|
|
|
onShowTip: onShowTip,
|
|
|
st: st,
|
|
|
challenge: challenge
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(_react_17_0_2_react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(header, objectSpread2_default()({}, headerOption)), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: left_panelmodules['content-wrapper'],
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
ref: contentEl,
|
|
|
className: left_panelmodules['scroll'],
|
|
|
children: [unity_3d_routes && with_code_file ? /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "".concat(left_panelmodules["unity-3d-container"], " ").concat(enlarge_unity3D ? left_panelmodules.enlarge : ''),
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: onTriggerUnity3D,
|
|
|
className: "".concat(left_panelmodules["btn-enlarge"], " ").concat(enlarge_unity3D ? left_panelmodules.enlarge : ''),
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont ".concat(enlarge_unity3D ? 'icon-suoxiao1' : 'icon-kuoda', " ")
|
|
|
})
|
|
|
}), (userInfo === null || userInfo === void 0 ? void 0 : userInfo.user_id) && /*#__PURE__*/(0,jsx_runtime.jsx)(unity3d_panel, {
|
|
|
userInfo: userInfo,
|
|
|
taskData: taskData,
|
|
|
unity_3d_routes: unity_3d_routes,
|
|
|
onGetUnity3dMessage: onGetUnity3dMessage
|
|
|
})]
|
|
|
}) : null, /*#__PURE__*/(0,jsx_runtime.jsx)("ul", {
|
|
|
className: "".concat(left_panelmodules["tab-nav"], " ").concat(tab_fixed ? left_panelmodules["tab-fixed"] : ''),
|
|
|
children: tabs.map(function (item) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("li", {
|
|
|
onClick: onSetActiveIndex,
|
|
|
id: item.index,
|
|
|
className: activeIndex === item.index ? left_panelmodules.active : '',
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
children: [item.title, item.index === 3 && discusses_count ? /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: discusses_count
|
|
|
}) : null]
|
|
|
})
|
|
|
}, item.title);
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(RenderHtml/* default */.Z, {
|
|
|
className: activeIndex === 0 ? left_panelmodules["tab-panel-body"] : 'hide',
|
|
|
value: challenge.task_pass
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: activeIndex === 1 ? left_panelmodules['tab-panel-body'] : 'hide',
|
|
|
children: propaedeutics ? /*#__PURE__*/(0,jsx_runtime.jsx)(RenderHtml/* default */.Z, {
|
|
|
value: propaedeutics
|
|
|
}) : null
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: activeIndex === 2 ? left_panelmodules['tab-panel-body'] : 'hide',
|
|
|
style: {
|
|
|
paddingTop: 40
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(answer_panel, objectSpread2_default()({}, answerPanelOption))
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: activeIndex === 3 ? left_panelmodules['tab-panel-body'] : 'hide',
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(discuss/* default */.Z, {
|
|
|
activeIndex: activeIndex,
|
|
|
userInfo: userInfo,
|
|
|
shixunIdentifier: shixun.identifier,
|
|
|
identity: user.identity,
|
|
|
user: user,
|
|
|
allowDisableDiscuss: allowDisableDiscuss,
|
|
|
taskData: taskData,
|
|
|
chatgpt: chatgpt,
|
|
|
to_user_id: to_user_id,
|
|
|
challengeId: challenge.id
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: activeIndex === 4 ? left_panelmodules['tab-panel-body'] : 'hide',
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(ranking, {
|
|
|
activeIndex: activeIndex,
|
|
|
taskId: taskId
|
|
|
})
|
|
|
})]
|
|
|
})]
|
|
|
}), searchParams.get("type") !== 'exercises' && !(shixun !== null && shixun !== void 0 && shixun.is_disable_discuss) && !game.homework_common_comment_open && /*#__PURE__*/(0,jsx_runtime.jsx)(discuss_input_editor, {
|
|
|
user: user,
|
|
|
userInfo: userInfo,
|
|
|
user_praise: user_praise,
|
|
|
praise_count: praise_count,
|
|
|
praisePlus: onPlusOrCancelPraise,
|
|
|
onCreateDiscuss: onCreateDiscuss
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(modal/* default */.Z, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)(drawer/* default */.Z, {
|
|
|
rootClassName: "task-drawer",
|
|
|
width: 420,
|
|
|
title: null,
|
|
|
placement: "left",
|
|
|
closable: false,
|
|
|
open: showTaskList,
|
|
|
onClose: onHideTaskList,
|
|
|
getContainer: function getContainer() {
|
|
|
return document.getElementById('task-left-panel');
|
|
|
},
|
|
|
children: [searchParams.get("subject_id") && /*#__PURE__*/(0,jsx_runtime.jsx)(task_path_list, objectSpread2_default()(objectSpread2_default()({
|
|
|
taskList: toConsumableArray_default()(taskList),
|
|
|
challenge: challenge,
|
|
|
shixun: shixun
|
|
|
}, (0,util/* getJsonFromUrl */.oP)()), {}, {
|
|
|
identity: user.identity,
|
|
|
onSaveTaskStar: onSaveTaskStar
|
|
|
})), !searchParams.get("subject_id") && /*#__PURE__*/(0,jsx_runtime.jsx)(task_list, {
|
|
|
taskList: toConsumableArray_default()(taskList),
|
|
|
challenge: challenge,
|
|
|
shixun: shixun,
|
|
|
identity: user.identity,
|
|
|
onSaveTaskStar: onSaveTaskStar
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(es_modal/* default */.Z, {
|
|
|
centered: true,
|
|
|
title: "\u63D0\u793A",
|
|
|
open: showTip,
|
|
|
onOk: onViewAnswer,
|
|
|
onCancel: onHideTip,
|
|
|
confirmLoading: confirmLoading,
|
|
|
className: left_panelmodules['answer-tip'],
|
|
|
children: [is_teacher ? /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
children: "\u5DF2\u7ECF\u8FC7\u804C\u4E1A\u8BA4\u8BC1\u7684\u6559\u5E08\u53EF\u4EE5\u514D\u91D1\u5E01\u67E5\u770B\u7B54\u6848\u54DF~"
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
children: "\u5148\u67E5\u770B\u53C2\u8003\u7B54\u6848\uFF0C\u518D\u901A\u8FC7\u8BC4\u6D4B\u7684\u5B66\u751F\uFF0C\u5B9E\u8BAD\u4F5C\u4E1A\u6709\u53EF\u80FD\u662F\u96F6\u5206\u54E6~"
|
|
|
}), isMultiLevel ? /*#__PURE__*/(0,jsx_runtime.jsx)(unlock_answer_list, {
|
|
|
selected_index: selected_index,
|
|
|
selected_unlocked_answer_id: selected_unlocked_answer_id,
|
|
|
onSelect: onSelect,
|
|
|
data: data
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
children: "\u5C06\u6263\u9664".concat(answerScore, "\u70B9\u91D1\u5E01\uFF0C\u662F\u5426\u786E\u8BA4\u67E5\u770B\u7B54\u6848")
|
|
|
}), is_teacher ? /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
href: "/account/certification",
|
|
|
"class": "to-certification-link",
|
|
|
target: "_blank",
|
|
|
children: "\u7ACB\u5373\u8BA4\u8BC1"
|
|
|
}) : null]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(image_preview/* default */.Z, {})]
|
|
|
})]
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var left_panel = ((0,_umi_production_exports.connect)(function (_ref2) {
|
|
|
var user = _ref2.user;
|
|
|
return {
|
|
|
userInfoData: user
|
|
|
};
|
|
|
})(LeftPanel));
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/statistic/index.js + 5 modules
|
|
|
var statistic = __webpack_require__(31797);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/row/index.js
|
|
|
var row = __webpack_require__(95237);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/tour/index.js + 12 modules
|
|
|
var tour = __webpack_require__(65615);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/button/index.js
|
|
|
var es_button = __webpack_require__(3113);
|
|
|
// EXTERNAL MODULE: ./src/components/useInterval.tsx
|
|
|
var useInterval = __webpack_require__(47006);
|
|
|
;// CONCATENATED MODULE: ./src/components/timer-panel/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function padLeft(s) {
|
|
|
return s.toString().padStart(2, '0');
|
|
|
}
|
|
|
function getTimer(sec) {
|
|
|
var minuts = Math.floor(sec / 60);
|
|
|
var second = sec % 60;
|
|
|
var hour = Math.floor(minuts / 60);
|
|
|
return "".concat(padLeft(hour), ":").concat(padLeft(minuts - hour * 60), ":").concat(padLeft(second));
|
|
|
}
|
|
|
/* harmony default export */ var timer_panel = (function (_ref) {
|
|
|
var defaultTime = _ref.defaultTime,
|
|
|
status = _ref.status,
|
|
|
onUpdateCostTime = _ref.onUpdateCostTime,
|
|
|
lastedGetTaskInfoTime = _ref.lastedGetTaskInfoTime,
|
|
|
_ref$retentionTime = _ref.retentionTime,
|
|
|
retentionTime = _ref$retentionTime === void 0 ? '' : _ref$retentionTime,
|
|
|
_ref$title = _ref.title,
|
|
|
title = _ref$title === void 0 ? '' : _ref$title;
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(defaultTime || 0),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
costTime = _useState2[0],
|
|
|
setCostTime = _useState2[1];
|
|
|
var lastedTime = (0,_react_17_0_2_react.useRef)();
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (lastedGetTaskInfoTime) {
|
|
|
setCostTime(defaultTime);
|
|
|
lastedTime.current = defaultTime;
|
|
|
}
|
|
|
}, [defaultTime, lastedGetTaskInfoTime]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (lastedGetTaskInfoTime) {
|
|
|
var unSub = mediator/* default */.Z.subscribe('update-cost-time', function () {
|
|
|
if (status !== 2) {
|
|
|
onUpdateCostTime(lastedTime.current);
|
|
|
}
|
|
|
});
|
|
|
return unSub;
|
|
|
}
|
|
|
}, [lastedGetTaskInfoTime]);
|
|
|
(0,useInterval/* default */.Z)(function () {
|
|
|
if (retentionTime) {
|
|
|
localStorage.setItem(retentionTime, String(costTime + 1));
|
|
|
}
|
|
|
setCostTime(costTime + 1);
|
|
|
lastedTime.current = lastedTime.current + 1;
|
|
|
}, status === 2 ? null : 1000);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
children: [title ? "".concat(title, "\uFF1A") : null, getTimer(costTime)]
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/header/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/createForOfIteratorHelper.js
|
|
|
var createForOfIteratorHelper = __webpack_require__(91232);
|
|
|
var createForOfIteratorHelper_default = /*#__PURE__*/__webpack_require__.n(createForOfIteratorHelper);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/action-bar/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var action_barmodules = ({"action-bar-container":"action-bar-container___TDRpf","edit-status":"edit-status___wZI5m","action-bar":"action-bar___bbigU","iconfont":"iconfont___hoZln","startDebug":"startDebug___tLWzR","disabledDebug":"disabledDebug___npN0z"});
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/tooltip/index.js + 3 modules
|
|
|
var tooltip = __webpack_require__(6848);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/popconfirm/index.js + 2 modules
|
|
|
var popconfirm = __webpack_require__(14478);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@ant-design_icons@5.2.6@@ant-design/icons/es/icons/ExclamationCircleOutlined.js + 1 modules
|
|
|
var ExclamationCircleOutlined = __webpack_require__(80045);
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/code-repository/action-bar/notice.gif
|
|
|
var notice = __webpack_require__(60141);
|
|
|
// EXTERNAL MODULE: ./node_modules/_react-copy-to-clipboard@5.0.2@react-copy-to-clipboard/lib/index.js
|
|
|
var lib = __webpack_require__(56102);
|
|
|
// EXTERNAL MODULE: ./src/utils/fetch.ts
|
|
|
var utils_fetch = __webpack_require__(78092);
|
|
|
// EXTERNAL MODULE: ./node_modules/_lodash@4.17.21@lodash/lodash.js
|
|
|
var lodash = __webpack_require__(89392);
|
|
|
// EXTERNAL MODULE: ./src/utils/authority.ts
|
|
|
var authority = __webpack_require__(19654);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/action-bar/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function NoticeButton(_ref) {
|
|
|
var onShowNotice = _ref.onShowNotice,
|
|
|
_ref$className = _ref.className,
|
|
|
className = _ref$className === void 0 ? '' : _ref$className;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
title: "\u66F4\u65B0\u901A\u77E5",
|
|
|
onClick: onShowNotice,
|
|
|
className: className,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
width: 14,
|
|
|
src: notice,
|
|
|
alt: "notice"
|
|
|
})
|
|
|
});
|
|
|
}
|
|
|
/* harmony default export */ function action_bar(_ref2) {
|
|
|
var _flattenDeep;
|
|
|
var code_hidden = _ref2.code_hidden,
|
|
|
gameStatus = _ref2.gameStatus,
|
|
|
isEditPath = _ref2.isEditPath,
|
|
|
currentPath = _ref2.currentPath,
|
|
|
git_url = _ref2.git_url,
|
|
|
monitoring_url = _ref2.monitoring_url,
|
|
|
onResetCode = _ref2.onResetCode,
|
|
|
onResetGitCode = _ref2.onResetGitCode,
|
|
|
onShowCodeSetting = _ref2.onShowCodeSetting,
|
|
|
onResetPassedCode = _ref2.onResetPassedCode,
|
|
|
onShowDir = _ref2.onShowDir,
|
|
|
onRightFullHandler = _ref2.onRightFullHandler,
|
|
|
isResizeLarge = _ref2.isResizeLarge,
|
|
|
tab_type = _ref2.tab_type,
|
|
|
startDebug = _ref2.startDebug,
|
|
|
setStartDebug = _ref2.setStartDebug,
|
|
|
breakPointValue = _ref2.breakPointValue,
|
|
|
shixun = _ref2.shixun,
|
|
|
myshixun = _ref2.myshixun,
|
|
|
game = _ref2.game,
|
|
|
unique = _ref2.unique,
|
|
|
setUnique = _ref2.setUnique,
|
|
|
setHighlightLine = _ref2.setHighlightLine,
|
|
|
allow_use_code_debugger = _ref2.allow_use_code_debugger,
|
|
|
onUpdateCode = _ref2.onUpdateCode,
|
|
|
allBreakPointValue = _ref2.allBreakPointValue,
|
|
|
setAllBreakPointValue = _ref2.setAllBreakPointValue,
|
|
|
setBreakPointValue = _ref2.setBreakPointValue,
|
|
|
isTheoretical = _ref2.isTheoretical;
|
|
|
var _useSearchParams = (0,_umi_production_exports.useSearchParams)(),
|
|
|
_useSearchParams2 = slicedToArray_default()(_useSearchParams, 1),
|
|
|
searchParams = _useSearchParams2[0];
|
|
|
var openModal = function openModal() {
|
|
|
es_modal/* default */.Z.confirm({
|
|
|
title: '恢复初始代码',
|
|
|
icon: /*#__PURE__*/(0,jsx_runtime.jsx)(ExclamationCircleOutlined/* default */.Z, {}),
|
|
|
content: '你在本文件中修改的内容将丢失,是否确定重新加载初始代码?',
|
|
|
centered: true,
|
|
|
okText: '确定',
|
|
|
cancelText: '取消',
|
|
|
onOk: function () {
|
|
|
var _onOk = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.next = 2;
|
|
|
return onResetCode();
|
|
|
case 2:
|
|
|
setAllBreakPointValue({});
|
|
|
setBreakPointValue([]);
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
function onOk() {
|
|
|
return _onOk.apply(this, arguments);
|
|
|
}
|
|
|
return onOk;
|
|
|
}()
|
|
|
});
|
|
|
};
|
|
|
var openModalGit = function openModalGit() {
|
|
|
es_modal/* default */.Z.confirm({
|
|
|
title: '重置代码仓库',
|
|
|
icon: /*#__PURE__*/(0,jsx_runtime.jsx)(ExclamationCircleOutlined/* default */.Z, {}),
|
|
|
content: '您的所有代码将被还原至初始状态,不影响通关状态与作业成绩。确认重置?',
|
|
|
centered: true,
|
|
|
okText: '确定',
|
|
|
cancelText: '取消',
|
|
|
onOk: function () {
|
|
|
var _onOk2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
_context2.next = 2;
|
|
|
return onResetGitCode();
|
|
|
case 2:
|
|
|
setAllBreakPointValue({});
|
|
|
setBreakPointValue([]);
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
function onOk() {
|
|
|
return _onOk2.apply(this, arguments);
|
|
|
}
|
|
|
return onOk;
|
|
|
}()
|
|
|
});
|
|
|
};
|
|
|
var triggerToolBar = function triggerToolBar() {
|
|
|
mediator/* default */.Z.publish('show-head-toolbar', true);
|
|
|
};
|
|
|
var convertObjectToArray = function convertObjectToArray(obj) {
|
|
|
var result = [];
|
|
|
for (var key in obj) {
|
|
|
if (obj.hasOwnProperty(key)) {
|
|
|
var values = obj[key];
|
|
|
var _iterator = createForOfIteratorHelper_default()(values),
|
|
|
_step;
|
|
|
try {
|
|
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
|
var value = _step.value;
|
|
|
result.push("".concat(key, ":").concat(value));
|
|
|
}
|
|
|
} catch (err) {
|
|
|
_iterator.e(err);
|
|
|
} finally {
|
|
|
_iterator.f();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
return result;
|
|
|
};
|
|
|
var handleStartDebug = /*#__PURE__*/function () {
|
|
|
var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3(e) {
|
|
|
var res, _res$data;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
console.log(allBreakPointValue, convertObjectToArray(allBreakPointValue), 222);
|
|
|
(0,_umi_production_exports.getDvaApp)()._store.dispatch({
|
|
|
type: "globalSetting/setGlobalLoading",
|
|
|
payload: {
|
|
|
show: true,
|
|
|
text: '正在开启调试,请稍候...'
|
|
|
}
|
|
|
});
|
|
|
_context3.next = 4;
|
|
|
return onUpdateCode();
|
|
|
case 4:
|
|
|
_context3.next = 6;
|
|
|
return (0,utils_fetch/* default */.ZP)("/api/myshixuns/".concat(myshixun === null || myshixun === void 0 ? void 0 : myshixun.identifier, "/code_debugs/start.json"), {
|
|
|
method: 'post',
|
|
|
body: {
|
|
|
game_identifier: game === null || game === void 0 ? void 0 : game.identifier,
|
|
|
breakpoints: convertObjectToArray(allBreakPointValue)
|
|
|
}
|
|
|
});
|
|
|
case 6:
|
|
|
res = _context3.sent;
|
|
|
if (res.status === 0) {
|
|
|
setStartDebug(true);
|
|
|
mediator/* default */.Z.publish('active-debug');
|
|
|
mediator/* default */.Z.publish('active-debug-data', (res === null || res === void 0 ? void 0 : res.data) || {});
|
|
|
setUnique(res === null || res === void 0 || (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.unique);
|
|
|
}
|
|
|
(0,_umi_production_exports.getDvaApp)()._store.dispatch({
|
|
|
type: "globalSetting/setGlobalLoading",
|
|
|
payload: {
|
|
|
show: false
|
|
|
}
|
|
|
});
|
|
|
case 9:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
}));
|
|
|
return function handleStartDebug(_x) {
|
|
|
return _ref3.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleStoptDebug = /*#__PURE__*/function () {
|
|
|
var _ref4 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee4() {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee4$(_context4) {
|
|
|
while (1) switch (_context4.prev = _context4.next) {
|
|
|
case 0:
|
|
|
_context4.next = 2;
|
|
|
return (0,utils_fetch/* default */.ZP)("/api/myshixuns/".concat(myshixun === null || myshixun === void 0 ? void 0 : myshixun.identifier, "/code_debugs/stop.json"), {
|
|
|
method: 'post',
|
|
|
body: {
|
|
|
unique: unique
|
|
|
}
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context4.sent;
|
|
|
if (res.status === 0) {
|
|
|
setHighlightLine(null);
|
|
|
setStartDebug(false);
|
|
|
}
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context4.stop();
|
|
|
}
|
|
|
}, _callee4);
|
|
|
}));
|
|
|
return function handleStoptDebug() {
|
|
|
return _ref4.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var hasBreakPoint = !!((_flattenDeep = (0,lodash.flattenDeep)(Object.values(allBreakPointValue))) !== null && _flattenDeep !== void 0 && _flattenDeep.length);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(_react_17_0_2_react.Fragment, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: action_barmodules['action-bar'],
|
|
|
children: [tab_type === 1 && /*#__PURE__*/(0,jsx_runtime.jsxs)(_react_17_0_2_react.Fragment, {
|
|
|
children: [allow_use_code_debugger && /*#__PURE__*/(0,jsx_runtime.jsx)(_react_17_0_2_react.Fragment, {
|
|
|
children: startDebug ? /*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
title: "\u505C\u6B62\u8C03\u8BD5",
|
|
|
style: {
|
|
|
marginRight: 6
|
|
|
},
|
|
|
className: action_barmodules.startDebug,
|
|
|
onClick: handleStoptDebug,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
style: {
|
|
|
color: '#c75450'
|
|
|
},
|
|
|
className: "iconfont icon-tingzhitiaoshi font12"
|
|
|
})
|
|
|
}) : hasBreakPoint ? /*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
title: "\u5F00\u59CB\u8C03\u8BD5",
|
|
|
className: action_barmodules.startDebug,
|
|
|
onClick: handleStartDebug,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-debug font14"
|
|
|
})
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: "\u8BF7\u5148\u5728\u4EE3\u7801\u884C\u8BBE\u7F6E\u65AD\u70B9",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
className: action_barmodules.disabledDebug,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-debug font14"
|
|
|
})
|
|
|
})
|
|
|
})
|
|
|
}), !code_hidden && /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
title: "\u663E\u793A\u76EE\u5F55",
|
|
|
onClick: onShowDir,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-wenjian"
|
|
|
})
|
|
|
}), git_url && /*#__PURE__*/(0,jsx_runtime.jsx)(lib.CopyToClipboard, {
|
|
|
text: git_url,
|
|
|
onCopy: function onCopy() {
|
|
|
return message/* default */.ZP.success('复制成功');
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
title: "\u590D\u5236\u7248\u672C\u5E93\u5730\u5740",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-fuzhi2"
|
|
|
})
|
|
|
})
|
|
|
}), gameStatus === 2 && isEditPath && !startDebug && /*#__PURE__*/(0,jsx_runtime.jsx)(popconfirm/* default */.Z, {
|
|
|
placement: "bottomRight",
|
|
|
title: "\u4F60\u5728\u672C\u5173\u4E2D\u4FEE\u6539\u7684\u5185\u5BB9\u5C06\u4E22\u5931\uFF0C\u662F\u5426\u786E\u5B9A\u91CD\u65B0\u52A0\u8F7D\u4E0A\u6B21\u901A\u8FC7\u7684\u4EE3\u7801?",
|
|
|
onConfirm: onResetPassedCode,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
title: "\u52A0\u8F7D\u4E0A\u6B21\u901A\u8FC7\u7684\u4EE3\u7801",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-fanhuishangcidaima font-20 "
|
|
|
})
|
|
|
})
|
|
|
}), isEditPath && !startDebug && /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
title: "\u6062\u590D\u521D\u59CB\u4EE3\u7801",
|
|
|
onClick: openModal,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-zhongzhi font-20 "
|
|
|
})
|
|
|
}), isEditPath && !startDebug && /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
title: "\u91CD\u7F6E\u4EE3\u7801\u4ED3\u5E93",
|
|
|
onClick: openModalGit,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-zhongzhidaimacangku font12 "
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: onShowCodeSetting,
|
|
|
title: "\u8BBE\u7F6E",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-shezhi"
|
|
|
})
|
|
|
})]
|
|
|
}), (tab_type === 2 || tab_type === 3 || tab_type === 4 || tab_type === 5) && /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
title: "\u5DE5\u5177\u680F",
|
|
|
onClick: triggerToolBar,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-vncshixunjiemian-gongjulan mr5"
|
|
|
})
|
|
|
}), !(searchParams.get("isFullScreen") === 'true') && /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: onRightFullHandler,
|
|
|
title: isResizeLarge ? '退出全屏' : '全屏',
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: isResizeLarge ? 'iconfont icon-shousuo' : 'iconfont icon-zhankai'
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
});
|
|
|
}
|
|
|
// EXTERNAL MODULE: ./src/components/vnc-setting/index.tsx + 1 modules
|
|
|
var vnc_setting = __webpack_require__(29525);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/data-sets/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var data_setsmodules = ({"flex_box_center":"flex_box_center___rNE5B","flex_space_between":"flex_space_between___UQz5R","flex_box_vertical_center":"flex_box_vertical_center___LVkcg","flex_box_center_end":"flex_box_center_end___liNMD","flex_box_column":"flex_box_column___en5bA","wrap":"wrap___QHoGE","list":"list___PqCYv","page":"page___TKcdQ"});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/data-sets/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var _excluded = ["userDetail", "user", "globalSetting", "loading", "dispatch", "onClose", "shixun"];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var NavType = /*#__PURE__*/function (NavType) {
|
|
|
NavType["Classrooms"] = "classrooms";
|
|
|
NavType["Shixuns"] = "shixuns";
|
|
|
NavType["Paths"] = "paths";
|
|
|
NavType["Projects"] = "projects";
|
|
|
NavType["Videos"] = "videos";
|
|
|
NavType["Topics"] = "topics";
|
|
|
NavType["Teach"] = "teach-group";
|
|
|
return NavType;
|
|
|
}(NavType || {});
|
|
|
var Banner = function Banner(_ref) {
|
|
|
var userDetail = _ref.userDetail,
|
|
|
user = _ref.user,
|
|
|
globalSetting = _ref.globalSetting,
|
|
|
loading = _ref.loading,
|
|
|
dispatch = _ref.dispatch,
|
|
|
onClose = _ref.onClose,
|
|
|
shixun = _ref.shixun,
|
|
|
props = objectWithoutProperties_default()(_ref, _excluded);
|
|
|
var params = (0,_umi_production_exports.useParams)();
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(null),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
dataList = _useState2[0],
|
|
|
setDataList = _useState2[1];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)({}),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
folderName = _useState4[0],
|
|
|
setFolderName = _useState4[1];
|
|
|
var _useState5 = (0,_react_17_0_2_react.useState)(0),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
count = _useState6[0],
|
|
|
setCount = _useState6[1];
|
|
|
var _useState7 = (0,_react_17_0_2_react.useState)(objectSpread2_default()({
|
|
|
page: 1,
|
|
|
limit: 20,
|
|
|
id: shixun.identifier
|
|
|
}, params)),
|
|
|
_useState8 = slicedToArray_default()(_useState7, 2),
|
|
|
query = _useState8[0],
|
|
|
setQuery = _useState8[1];
|
|
|
var visible = (0,_react_17_0_2_react.useCallback)(function () {
|
|
|
return props.visible;
|
|
|
}, [props.visible]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (props.visible) {
|
|
|
query.page = 1;
|
|
|
getSetData();
|
|
|
}
|
|
|
}, [props.visible]);
|
|
|
var getSetData = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.next = 2;
|
|
|
return dispatch({
|
|
|
type: 'shixunsDetail/getSetData',
|
|
|
payload: query
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context.sent;
|
|
|
if (res) {
|
|
|
setDataList(res.data_sets);
|
|
|
setCount(res.data_sets_count);
|
|
|
setFolderName(res.folder_name || "");
|
|
|
}
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function getSetData() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [props.children, /*#__PURE__*/(0,jsx_runtime.jsxs)(drawer/* default */.Z, {
|
|
|
title: "\u6570\u636E\u96C6",
|
|
|
placement: "right",
|
|
|
rootClassName: data_setsmodules.wrap,
|
|
|
width: 300,
|
|
|
closable: false,
|
|
|
onClose: onClose,
|
|
|
open: visible(),
|
|
|
children: [!(dataList !== null && dataList !== void 0 && dataList.length) && /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "tc c-grey-999",
|
|
|
children: "\u6B64\u5B9E\u8DF5\u9879\u76EE\u6682\u65E0\u6570\u636E\u96C6"
|
|
|
}), dataList === null || dataList === void 0 ? void 0 : dataList.map(function (item, key) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("dl", {
|
|
|
className: data_setsmodules.list,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: item.title,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("dt", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "icon-wenjian4 mr5"
|
|
|
}), item.title]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("dd", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(lib.CopyToClipboard, {
|
|
|
text: item.file_path,
|
|
|
onCopy: function onCopy() {
|
|
|
return message/* default */.ZP.success('复制成功');
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "".concat(data_setsmodules.copy, " current"),
|
|
|
children: "\u70B9\u51FB\u590D\u5236"
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
}, key);
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "tc",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(pagination/* default */.Z, {
|
|
|
onChange: function onChange(page) {
|
|
|
query.page = page;
|
|
|
getSetData();
|
|
|
},
|
|
|
className: data_setsmodules.page,
|
|
|
size: "small",
|
|
|
total: count,
|
|
|
pageSize: query.limit,
|
|
|
hideOnSinglePage: true
|
|
|
})
|
|
|
})]
|
|
|
})]
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var data_sets = ((0,_umi_production_exports.connect)(function (_ref3) {
|
|
|
var user = _ref3.user,
|
|
|
userDetail = _ref3.userDetail,
|
|
|
loading = _ref3.loading,
|
|
|
shixunsDetail = _ref3.shixunsDetail,
|
|
|
globalSetting = _ref3.globalSetting;
|
|
|
return {
|
|
|
user: user,
|
|
|
userDetail: userDetail,
|
|
|
shixunsDetail: shixunsDetail,
|
|
|
globalSetting: globalSetting,
|
|
|
loading: loading.models.index
|
|
|
};
|
|
|
})(Banner));
|
|
|
// EXTERNAL MODULE: ./src/utils/env.ts + 1 modules
|
|
|
var env = __webpack_require__(80548);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/header/gold.png
|
|
|
var gold_namespaceObject = "data:image/png;base64,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";
|
|
|
// EXTERNAL MODULE: ./src/components/Exercise/recordScreen.tsx + 3 modules
|
|
|
var recordScreen = __webpack_require__(73350);
|
|
|
// EXTERNAL MODULE: ./src/components/Hooks/index.tsx
|
|
|
var Hooks = __webpack_require__(78694);
|
|
|
// EXTERNAL MODULE: ./src/utils/hooks/useRemindModal.tsx
|
|
|
var useRemindModal = __webpack_require__(52988);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/header/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var Countdown = statistic/* default */.Z.Countdown;
|
|
|
function TipContent() {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
children: "\u5B9E\u9A8C\u73AF\u5883\u5C06\u6062\u590D\u5230\u521D\u59CB\u72B6\u6001\uFF0C\u60A8\u5728\u7CFB\u7EDF\u4E2D\u521B\u5EFA\u7684\u6570\u636E\u53EF\u80FD\u4F1A\u4E22\u5931\u3002\u8BF7\u786E\u4FDD\u60A8\u7684\u6570\u636E\u5DF2\u4FDD\u5B58\uFF08\u5982\uFF1A\u7248\u672C\u5E93\u4EE3\u7801\u5DF2\u63A8\u9001\u5230\u670D\u52A1\u5668\uFF09\u3002\u662F\u5426\u786E\u8BA4\u91CD\u7F6E\uFF1F"
|
|
|
});
|
|
|
}
|
|
|
/* harmony default export */ var tasks_header = (function (_ref) {
|
|
|
var _exerciseData$exercis2, _exerciseData$exercis3, _exerciseData$exercis4;
|
|
|
var mirror_description = _ref.mirror_description,
|
|
|
difficulty = _ref.difficulty,
|
|
|
git_url = _ref.git_url,
|
|
|
isNotice = _ref.isNotice,
|
|
|
user = _ref.user,
|
|
|
game = _ref.game,
|
|
|
monitoring_url = _ref.monitoring_url,
|
|
|
_ref$shixun = _ref.shixun,
|
|
|
shixun = _ref$shixun === void 0 ? {} : _ref$shixun,
|
|
|
resetVncLoading = _ref.resetVncLoading,
|
|
|
onUpdateCostTime = _ref.onUpdateCostTime,
|
|
|
lastedGetTaskInfoTime = _ref.lastedGetTaskInfoTime,
|
|
|
onShowNotice = _ref.onShowNotice,
|
|
|
onResetGitCode = _ref.onResetGitCode,
|
|
|
onResetCode = _ref.onResetCode,
|
|
|
onResetVnc = _ref.onResetVnc,
|
|
|
onRestartReboot = _ref.onRestartReboot,
|
|
|
onAddVncTime = _ref.onAddVncTime,
|
|
|
onUpdateCode = _ref.onUpdateCode,
|
|
|
unity_3d_routes = _ref.unity_3d_routes,
|
|
|
st = _ref.st,
|
|
|
_ref$toolbarItem = _ref.toolbarItem,
|
|
|
toolbarItem = _ref$toolbarItem === void 0 ? {} : _ref$toolbarItem,
|
|
|
_ref$myshixun = _ref.myshixun,
|
|
|
myshixun = _ref$myshixun === void 0 ? {} : _ref$myshixun,
|
|
|
mirror_name = _ref.mirror_name,
|
|
|
mirror_description_multi = _ref.mirror_description_multi,
|
|
|
onResetAllVnc = _ref.onResetAllVnc;
|
|
|
var params = (0,_umi_production_exports.useParams)();
|
|
|
var _useSearchParams = (0,_umi_production_exports.useSearchParams)(),
|
|
|
_useSearchParams2 = slicedToArray_default()(_useSearchParams, 1),
|
|
|
searchParams = _useSearchParams2[0];
|
|
|
var name = shixun.name,
|
|
|
identifier = shixun.identifier,
|
|
|
task_pass = shixun.task_pass,
|
|
|
test_set_permission = shixun.test_set_permission;
|
|
|
var cost_time = game.cost_time,
|
|
|
status = game.status;
|
|
|
var user_url = user.user_url,
|
|
|
image_url = user.image_url,
|
|
|
_user$grade = user.grade,
|
|
|
grade = _user$grade === void 0 ? 0 : _user$grade;
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
isToolBar = _useState2[0],
|
|
|
setIsToolBar = _useState2[1];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)({}),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
exerciseData = _useState4[0],
|
|
|
setExerciseData = _useState4[1];
|
|
|
var _useState5 = (0,_react_17_0_2_react.useState)('#37AD83'),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
countDownColor = _useState6[0],
|
|
|
setCountDownColor = _useState6[1];
|
|
|
var _useState7 = (0,_react_17_0_2_react.useState)(null),
|
|
|
_useState8 = slicedToArray_default()(_useState7, 2),
|
|
|
countDownTime = _useState8[0],
|
|
|
setCountDownTime = _useState8[1];
|
|
|
var _useState9 = (0,_react_17_0_2_react.useState)(),
|
|
|
_useState10 = slicedToArray_default()(_useState9, 2),
|
|
|
vncTime = _useState10[0],
|
|
|
setVncTime = _useState10[1];
|
|
|
var _useState11 = (0,_react_17_0_2_react.useState)(isNotice || false),
|
|
|
_useState12 = slicedToArray_default()(_useState11, 2),
|
|
|
openNotice = _useState12[0],
|
|
|
setOpenNotice = _useState12[1];
|
|
|
var _useState13 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState14 = slicedToArray_default()(_useState13, 2),
|
|
|
dataSetsVisiable = _useState14[0],
|
|
|
setdataSetsVisiable = _useState14[1];
|
|
|
var countDownRef = (0,_react_17_0_2_react.useRef)();
|
|
|
var countDownRef2 = (0,_react_17_0_2_react.useRef)();
|
|
|
var focusRef = (0,_react_17_0_2_react.useRef)();
|
|
|
var _useState15 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState16 = slicedToArray_default()(_useState15, 2),
|
|
|
checkboxData = _useState16[0],
|
|
|
setcheckboxData = _useState16[1];
|
|
|
var refNotice = (0,_react_17_0_2_react.useRef)(null);
|
|
|
var countRef = (0,_react_17_0_2_react.useRef)(checkboxData);
|
|
|
countRef.current = checkboxData;
|
|
|
var index_tab = toolbarItem.index_tab,
|
|
|
shixun_environment_id = toolbarItem.shixun_environment_id,
|
|
|
tab_type = toolbarItem.tab_type,
|
|
|
windows_vnc = toolbarItem.windows_vnc,
|
|
|
vnc_url = toolbarItem.vnc_url,
|
|
|
linux_vnc = toolbarItem.linux_vnc,
|
|
|
reboot_cloud = toolbarItem.reboot_cloud,
|
|
|
cloud_type = toolbarItem.cloud_type,
|
|
|
resData = toolbarItem.resData,
|
|
|
instance_startup_type = toolbarItem.instance_startup_type;
|
|
|
var lockExitFullRef = (0,_react_17_0_2_react.useRef)(false);
|
|
|
(0,Hooks/* useDisableAction */.y)(searchParams.get("type") === 'exercises');
|
|
|
var clearCountdownTimeout = (0,useRemindModal/* useRemindModal */._)(exerciseData);
|
|
|
|
|
|
// useEffect(() => {
|
|
|
// clearTimeout(countDownRef.current);
|
|
|
// clearTimeout(countDownRef2.current);
|
|
|
// if (exerciseData?.exercise?.left_time) {
|
|
|
// if (exerciseData?.exercise?.left_time > 1800) {
|
|
|
// countDownRef2.current = setTimeout(() => {
|
|
|
// Modal.info({
|
|
|
// content: '当前距离考试结束还有30分钟',
|
|
|
// icon: <ClockCircleOutlined />,
|
|
|
// okText: '知道了',
|
|
|
// });
|
|
|
// }, (exerciseData?.exercise?.left_time - 1800) * 1000);
|
|
|
// }
|
|
|
// if (exerciseData?.exercise?.left_time > 900) {
|
|
|
// countDownRef.current = setTimeout(() => {
|
|
|
// Modal.info({
|
|
|
// content: '当前距离考试结束还有15分钟',
|
|
|
// icon: <ClockCircleOutlined />,
|
|
|
// okText: '知道了',
|
|
|
// });
|
|
|
// }, (exerciseData?.exercise?.left_time - 900) * 1000);
|
|
|
// }
|
|
|
// }
|
|
|
// }, [exerciseData]);
|
|
|
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
function init() {
|
|
|
return _init.apply(this, arguments);
|
|
|
}
|
|
|
function _init() {
|
|
|
_init = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var _res, _res2, res, _res3, _res4, _res5;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
if (!(searchParams.get("type") === 'exercises')) {
|
|
|
_context.next = 16;
|
|
|
break;
|
|
|
}
|
|
|
if (!(window.self === window.top)) {
|
|
|
_context.next = 4;
|
|
|
break;
|
|
|
}
|
|
|
window.top.location.href = "/";
|
|
|
return _context.abrupt("return");
|
|
|
case 4:
|
|
|
if (!(searchParams.get("coursesId") === 'coursesId')) {
|
|
|
_context.next = 10;
|
|
|
break;
|
|
|
}
|
|
|
_context.next = 7;
|
|
|
return (0,exercise/* startSimulateAnswer */._F)({
|
|
|
categoryId: searchParams.get("exercisesId"),
|
|
|
login: searchParams.get("login")
|
|
|
});
|
|
|
case 7:
|
|
|
res = _context.sent;
|
|
|
_context.next = 13;
|
|
|
break;
|
|
|
case 10:
|
|
|
_context.next = 12;
|
|
|
return (0,exercise/* getExerciseStartAnswer */._B)({
|
|
|
categoryId: searchParams.get("exercisesId"),
|
|
|
login: searchParams.get("login")
|
|
|
});
|
|
|
case 12:
|
|
|
res = _context.sent;
|
|
|
case 13:
|
|
|
setExerciseData(objectSpread2_default()({}, res));
|
|
|
mediator/* default */.Z.publish("exercise-data", res);
|
|
|
if ((_res = res) !== null && _res !== void 0 && _res.left_banner_id && (_res2 = res) !== null && _res2 !== void 0 && (_res2 = _res2.exercise) !== null && _res2 !== void 0 && _res2.left_time) {
|
|
|
setCountDownTime(Date.now() + ((_res3 = res) === null || _res3 === void 0 || (_res3 = _res3.exercise) === null || _res3 === void 0 ? void 0 : _res3.left_time) * 1000);
|
|
|
setTimeout(function () {
|
|
|
setCountDownColor('red');
|
|
|
}, (((_res4 = res) === null || _res4 === void 0 || (_res4 = _res4.exercise) === null || _res4 === void 0 ? void 0 : _res4.left_time) - 300 > 0 ? ((_res5 = res) === null || _res5 === void 0 || (_res5 = _res5.exercise) === null || _res5 === void 0 ? void 0 : _res5.left_time) - 300 : 0) * 1000);
|
|
|
}
|
|
|
case 16:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return _init.apply(this, arguments);
|
|
|
}
|
|
|
init();
|
|
|
}, []);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
var sub1 = mediator/* default */.Z.subscribe('update-windows-time', function (data) {
|
|
|
setVncTime(parseInt(data.remaining_time / 1000));
|
|
|
});
|
|
|
var sub2 = mediator/* default */.Z.subscribe('show-head-toolbar', function (data) {
|
|
|
setIsToolBar(data);
|
|
|
});
|
|
|
return function () {
|
|
|
sub1();
|
|
|
sub2();
|
|
|
};
|
|
|
}, []);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
var _exerciseData$exercis;
|
|
|
if (searchParams.get("type") === 'exercises' && exerciseData !== null && exerciseData !== void 0 && (_exerciseData$exercis = exerciseData.exercise) !== null && _exerciseData$exercis !== void 0 && _exerciseData$exercis.screen_open) {
|
|
|
recordScreen/* fullchange */.U.forEach(function (item, index) {
|
|
|
window.addEventListener(item, backExercise, false);
|
|
|
window.addEventListener('blur', backExercise, false);
|
|
|
});
|
|
|
window.focus();
|
|
|
focusRef.current = setInterval(function () {
|
|
|
window.focus();
|
|
|
}, 1000);
|
|
|
}
|
|
|
return function () {
|
|
|
recordScreen/* fullchange */.U.forEach(function (item, index) {
|
|
|
window.removeEventListener(item, backExercise, false);
|
|
|
});
|
|
|
window.removeEventListener('blur', backExercise, false);
|
|
|
clearInterval(focusRef.current);
|
|
|
};
|
|
|
}, [exerciseData]);
|
|
|
var handleToggleDatasets = function handleToggleDatasets() {
|
|
|
setdataSetsVisiable(!dataSetsVisiable);
|
|
|
};
|
|
|
var backExercise = function backExercise(type) {
|
|
|
if (document.activeElement.tagName !== "IFRAME") {
|
|
|
window.parent.postMessage('backExercise', '*');
|
|
|
if (!lockExitFullRef.current) (0,fullscreen/* exitFull */.BU)();
|
|
|
}
|
|
|
};
|
|
|
function triggerToolBar() {
|
|
|
setIsToolBar(!isToolBar);
|
|
|
}
|
|
|
function onHideToolBar() {
|
|
|
setIsToolBar(false);
|
|
|
}
|
|
|
|
|
|
//会有从课堂或者试卷中跳过来的情况,根据路由参数决定退出跳转的位置
|
|
|
function toShixun() {
|
|
|
if (params.courseId && params.homeworkId) {
|
|
|
location.href = "/classrooms/".concat(params.courseId, "/shixun_homework/").concat(params.homeworkId, "/detail");
|
|
|
return;
|
|
|
}
|
|
|
if (searchParams.get("type") === 'exercises') {
|
|
|
backExercise('back');
|
|
|
}
|
|
|
location.href = "/shixuns/".concat(identifier, "/challenges");
|
|
|
}
|
|
|
function onReset() {
|
|
|
return _onReset.apply(this, arguments);
|
|
|
}
|
|
|
function _onReset() {
|
|
|
_onReset = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee6() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee6$(_context6) {
|
|
|
while (1) switch (_context6.prev = _context6.next) {
|
|
|
case 0:
|
|
|
if (!resetVncLoading) {
|
|
|
_context6.next = 2;
|
|
|
break;
|
|
|
}
|
|
|
return _context6.abrupt("return");
|
|
|
case 2:
|
|
|
_context6.next = 4;
|
|
|
return onResetVnc();
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context6.stop();
|
|
|
}
|
|
|
}, _callee6);
|
|
|
}));
|
|
|
return _onReset.apply(this, arguments);
|
|
|
}
|
|
|
function onCancelShixun() {
|
|
|
es_modal/* default */.Z.confirm({
|
|
|
title: '退出实训',
|
|
|
icon: /*#__PURE__*/(0,jsx_runtime.jsx)(ExclamationCircleOutlined/* default */.Z, {}),
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
style: {
|
|
|
margin: '10px auto'
|
|
|
},
|
|
|
children: "\u60A8\u786E\u5B9A\u8981\u9000\u51FA\u5B9E\u8BAD\u5417\uFF1F"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_checkbox/* default */.Z, {
|
|
|
style: {
|
|
|
fontSize: '14px'
|
|
|
},
|
|
|
onChange: function onChange(e) {
|
|
|
setcheckboxData(e.target.checked);
|
|
|
},
|
|
|
children: "\u9000\u51FA\u5B9E\u8BAD\u65F6\uFF0C\u7ACB\u5373\u91CA\u653E\u5B9E\u9A8C\u8D44\u6E90"
|
|
|
})]
|
|
|
}),
|
|
|
centered: true,
|
|
|
okText: '确定',
|
|
|
cancelText: '取消',
|
|
|
onOk: function onOk() {
|
|
|
if (countRef.current) {
|
|
|
(0,exercise/* exitDeletePod */.eA)(myshixun === null || myshixun === void 0 ? void 0 : myshixun.identifier).then(function (res) {
|
|
|
if ((res === null || res === void 0 ? void 0 : res.status) == 0) {
|
|
|
message/* default */.ZP.success('释放资源成功');
|
|
|
//停一秒后再退出跳转
|
|
|
setTimeout(function () {
|
|
|
toShixun();
|
|
|
}, 1000);
|
|
|
}
|
|
|
});
|
|
|
} else {
|
|
|
toShixun();
|
|
|
}
|
|
|
},
|
|
|
onCancel: function onCancel() {
|
|
|
setcheckboxData(false);
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
function onVncAction(name) {
|
|
|
onHideToolBar();
|
|
|
if (name === 'reset-task') {
|
|
|
if (!resetVncLoading) {
|
|
|
var modal = es_modal/* default */.Z.confirm({
|
|
|
title: '重置环境',
|
|
|
icon: /*#__PURE__*/(0,jsx_runtime.jsx)(ExclamationCircleOutlined/* default */.Z, {}),
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsx)(TipContent, {}),
|
|
|
maskClosable: false,
|
|
|
keyboard: false,
|
|
|
centered: true,
|
|
|
okText: '确定',
|
|
|
cancelText: '取消',
|
|
|
onOk: function () {
|
|
|
var _onOk = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
if (!(tab_type === 4)) {
|
|
|
_context2.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
modal.update({
|
|
|
cancelButtonProps: {
|
|
|
disabled: true
|
|
|
}
|
|
|
});
|
|
|
_context2.next = 4;
|
|
|
return onReset();
|
|
|
case 4:
|
|
|
modal.update({
|
|
|
cancelButtonProps: {
|
|
|
disabled: false
|
|
|
}
|
|
|
});
|
|
|
return _context2.abrupt("return");
|
|
|
case 6:
|
|
|
onReset();
|
|
|
case 7:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
function onOk() {
|
|
|
return _onOk.apply(this, arguments);
|
|
|
}
|
|
|
return onOk;
|
|
|
}()
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
if (name === 'restart-reboot') {
|
|
|
if (!resetVncLoading) {
|
|
|
var _modal = es_modal/* default */.Z.confirm({
|
|
|
title: '重启云主机',
|
|
|
icon: /*#__PURE__*/(0,jsx_runtime.jsx)(ExclamationCircleOutlined/* default */.Z, {}),
|
|
|
content: '您确定要重启云主机吗?',
|
|
|
maskClosable: false,
|
|
|
keyboard: false,
|
|
|
centered: true,
|
|
|
okText: '确定',
|
|
|
cancelText: '取消',
|
|
|
onOk: function () {
|
|
|
var _onOk2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
if (!(tab_type === 4)) {
|
|
|
_context3.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
_modal.update({
|
|
|
cancelButtonProps: {
|
|
|
disabled: true
|
|
|
}
|
|
|
});
|
|
|
_context3.next = 4;
|
|
|
return onRestartReboot();
|
|
|
case 4:
|
|
|
_modal.update({
|
|
|
cancelButtonProps: {
|
|
|
disabled: false
|
|
|
}
|
|
|
});
|
|
|
return _context3.abrupt("return");
|
|
|
case 6:
|
|
|
onRestartReboot();
|
|
|
case 7:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
}));
|
|
|
function onOk() {
|
|
|
return _onOk2.apply(this, arguments);
|
|
|
}
|
|
|
return onOk;
|
|
|
}()
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
if (name === 'reset-git-code') {
|
|
|
if (!resetVncLoading) {
|
|
|
es_modal/* default */.Z.confirm({
|
|
|
title: '重置代码仓库',
|
|
|
icon: /*#__PURE__*/(0,jsx_runtime.jsx)(ExclamationCircleOutlined/* default */.Z, {}),
|
|
|
content: '您的所有代码将被还原至初始状态,不影响通关状态与作业成绩。确认重置?',
|
|
|
centered: true,
|
|
|
okText: '确定',
|
|
|
cancelText: '取消',
|
|
|
onOk: onResetGitCode
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
if (name === 'reset-code') {
|
|
|
if (!resetVncLoading) {
|
|
|
es_modal/* default */.Z.confirm({
|
|
|
title: '恢复初始代码',
|
|
|
icon: /*#__PURE__*/(0,jsx_runtime.jsx)(ExclamationCircleOutlined/* default */.Z, {}),
|
|
|
content: '你在本文件中修改的内容将丢失,是否确定重新加载初始代码?',
|
|
|
centered: true,
|
|
|
okText: '确定',
|
|
|
cancelText: '取消',
|
|
|
onOk: onResetCode
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
if (name === 'full-screen') {
|
|
|
if ((0,fullscreen/* IsFull */.vp)()) {
|
|
|
(0,fullscreen/* exitFull */.BU)();
|
|
|
} else {
|
|
|
var _document, _document$getElementB;
|
|
|
(0,fullscreen/* requestFullScreen */.Dj)((_document = document) === null || _document === void 0 || (_document$getElementB = _document.getElementById) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.call(_document, 'task-right-panel'));
|
|
|
}
|
|
|
}
|
|
|
if (name === 'show-clipboard-box') {
|
|
|
if (!!cloud_type) {
|
|
|
es_modal/* default */.Z.info({
|
|
|
title: '提示',
|
|
|
icon: /*#__PURE__*/(0,jsx_runtime.jsx)(ExclamationCircleOutlined/* default */.Z, {}),
|
|
|
content: '当前实验环境的【复制粘贴】功能暂时无法使用,敬请期待~',
|
|
|
centered: true
|
|
|
});
|
|
|
return;
|
|
|
}
|
|
|
mediator/* default */.Z.publish("show-clipboard-box-".concat(index_tab));
|
|
|
}
|
|
|
}
|
|
|
var vncSettingOption = {
|
|
|
task_pass: task_pass,
|
|
|
test_set_permission: test_set_permission,
|
|
|
mirror_description: mirror_description,
|
|
|
difficulty: difficulty,
|
|
|
resetVncLoading: resetVncLoading,
|
|
|
git_url: git_url,
|
|
|
onVncAction: onVncAction,
|
|
|
onHideToolBar: onHideToolBar,
|
|
|
shixun: shixun,
|
|
|
monitoring_url: monitoring_url,
|
|
|
unity_3d_routes: unity_3d_routes,
|
|
|
index_tab: index_tab,
|
|
|
shixun_environment_id: shixun_environment_id,
|
|
|
tab_type: tab_type,
|
|
|
windows_vnc: windows_vnc,
|
|
|
vnc_url: vnc_url,
|
|
|
linux_vnc: linux_vnc,
|
|
|
reboot_cloud: reboot_cloud,
|
|
|
cloud_type: cloud_type,
|
|
|
resData: resData,
|
|
|
instance_startup_type: instance_startup_type,
|
|
|
mirror_name: mirror_name,
|
|
|
mirror_description_multi: mirror_description_multi
|
|
|
};
|
|
|
var cutTime = (0,_react_17_0_2_react.useCallback)(function () {
|
|
|
if (!vncTime) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(jsx_runtime.Fragment, {});
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(VncTimer, {
|
|
|
defaultTime: vncTime,
|
|
|
onAddVncTime: onAddVncTime,
|
|
|
onResetAllVnc: onResetAllVnc,
|
|
|
toShixun: toShixun,
|
|
|
myshixun: myshixun,
|
|
|
title: "\u5B9E\u9A8C\u73AF\u5883\u5012\u8BA1\u65F6"
|
|
|
});
|
|
|
}, [vncTime]);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "task-header-container",
|
|
|
children: [searchParams.get("type") === "exercises" && /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "exercise_user_info",
|
|
|
children: ["\u59D3\u540D", /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "ml10",
|
|
|
children: exerciseData === null || exerciseData === void 0 || (_exerciseData$exercis2 = exerciseData.exercise) === null || _exerciseData$exercis2 === void 0 ? void 0 : _exerciseData$exercis2.user_name
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "exercise_user_info ml30",
|
|
|
children: ["\u5B66\u53F7", /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "ml10",
|
|
|
children: exerciseData === null || exerciseData === void 0 || (_exerciseData$exercis3 = exerciseData.exercise) === null || _exerciseData$exercis3 === void 0 ? void 0 : _exerciseData$exercis3.student_id
|
|
|
})]
|
|
|
})]
|
|
|
}), searchParams.get("type") !== 'exercises' && /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
className: "task-user-info",
|
|
|
href: user_url,
|
|
|
target: "_blank",
|
|
|
children: [image_url ? /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
width: "35",
|
|
|
height: "35",
|
|
|
src: "".concat(env/* default */.Z.IMG_SERVER, "/images/").concat(image_url)
|
|
|
}) : null, /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: user.name
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "grade-info",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: gold_namespaceObject,
|
|
|
alt: "gold",
|
|
|
width: 20
|
|
|
}), grade]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("h2", {
|
|
|
className: "shixun-info",
|
|
|
children: [name, searchParams.get("type") !== 'exercises' && /*#__PURE__*/(0,jsx_runtime.jsx)(timer_panel, {
|
|
|
lastedGetTaskInfoTime: lastedGetTaskInfoTime,
|
|
|
status: status,
|
|
|
defaultTime: cost_time,
|
|
|
onUpdateCostTime: onUpdateCostTime,
|
|
|
retentionTime: "taskBuildTimes",
|
|
|
title: "\u5B9E\u9A8C\u603B\u7528\u65F6"
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "flex-container",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
ref: refNotice,
|
|
|
onClick: function onClick() {
|
|
|
return setOpenNotice(false);
|
|
|
},
|
|
|
children: [searchParams.get("type") !== 'exercises' && /*#__PURE__*/(0,jsx_runtime.jsx)(jsx_runtime.Fragment, {
|
|
|
children: isNotice && /*#__PURE__*/(0,jsx_runtime.jsx)(NoticeButton, {
|
|
|
className: "btn-notice",
|
|
|
onShowNotice: onShowNotice
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(tour/* default */.Z, {
|
|
|
open: openNotice,
|
|
|
onClose: function onClose() {
|
|
|
return setOpenNotice(false);
|
|
|
},
|
|
|
rootClassName: "tasks-header-notice",
|
|
|
steps: [{
|
|
|
title: '更新通知',
|
|
|
description: /*#__PURE__*/(0,jsx_runtime.jsx)(jsx_runtime.Fragment, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: "\u8001\u5E08\u5DF2\u4FEE\u6539\u4EE3\u7801\u6587\u4EF6\uFF0C\u8BF7\u66F4\u65B0\u540E\u7EE7\u7EED\u4F5C\u7B54~"
|
|
|
})
|
|
|
}),
|
|
|
target: function target() {
|
|
|
return refNotice.current;
|
|
|
},
|
|
|
nextButtonProps: {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
onClick: onShowNotice,
|
|
|
type: "primary",
|
|
|
size: "small",
|
|
|
children: "\u66F4\u65B0\u4EE3\u7801"
|
|
|
})
|
|
|
}
|
|
|
}]
|
|
|
})]
|
|
|
}), cutTime(), windows_vnc && !(0,lodash.isEmpty)(resData) && /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
onClick: function onClick(e) {
|
|
|
e.preventDefault();
|
|
|
mediator/* default */.Z.publish("send-ctrl-alt-delete-".concat(index_tab));
|
|
|
},
|
|
|
className: "c-grey-c mr20 current",
|
|
|
children: "\u53D1\u9001CTRL+ALT+DELETE"
|
|
|
}), unity_3d_routes && /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
title: "\u5DE5\u5177\u680F",
|
|
|
onClick: triggerToolBar,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-vncshixunjiemian-gongjulan mr5"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(data_sets, {
|
|
|
visible: dataSetsVisiable,
|
|
|
onClose: handleToggleDatasets,
|
|
|
shixun: shixun,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
className: "btn-vnc",
|
|
|
title: "\u6570\u636E\u96C6",
|
|
|
onClick: handleToggleDatasets,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "iconfont font14 mr5 ml20 icon-shujuji2 current"
|
|
|
}), "\u6570\u636E\u96C6"]
|
|
|
})
|
|
|
})]
|
|
|
}), searchParams.get("type") !== 'exercises' && /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
className: "btn-out",
|
|
|
onClick: onCancelShixun,
|
|
|
title: "\u9000\u51FA\u5B9E\u8BAD",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-kaiguan"
|
|
|
})
|
|
|
}), (exerciseData === null || exerciseData === void 0 || (_exerciseData$exercis4 = exerciseData.exercise) === null || _exerciseData$exercis4 === void 0 ? void 0 : _exerciseData$exercis4.left_time) > 0 && /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
align: "middle",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
style: {
|
|
|
color: countDownColor,
|
|
|
marginRight: 6
|
|
|
},
|
|
|
className: "iconfont icon-daojishi"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
style: {
|
|
|
color: countDownColor,
|
|
|
fontSize: 14,
|
|
|
marginRight: 10
|
|
|
},
|
|
|
children: "\u5269\u4F59\u7B54\u9898\u65F6\u957F"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "mr20",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(Countdown, {
|
|
|
valueStyle: {
|
|
|
color: countDownColor,
|
|
|
fontSize: 20,
|
|
|
fontWeight: 500
|
|
|
},
|
|
|
value: countDownTime,
|
|
|
onFinish: /*#__PURE__*/asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee5() {
|
|
|
var res, time;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee5$(_context5) {
|
|
|
while (1) switch (_context5.prev = _context5.next) {
|
|
|
case 0:
|
|
|
_context5.next = 2;
|
|
|
return (0,exercise/* submitExerciseAnswer */.VL)({
|
|
|
categoryId: searchParams.get("exercisesId"),
|
|
|
commit_method: 2
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context5.sent;
|
|
|
if ((res === null || res === void 0 ? void 0 : res.status) === 0) {
|
|
|
if (st === 0) {
|
|
|
onUpdateCode(1);
|
|
|
}
|
|
|
es_modal/* default */.Z.info({
|
|
|
width: 530,
|
|
|
title: '提示',
|
|
|
centered: true,
|
|
|
okText: '确定',
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "tc font16",
|
|
|
children: ["\u7B54\u9898\u7ED3\u675F\u4E86\uFF0C\u7CFB\u7EDF\u5DF2\u81EA\u52A8\u63D0\u4EA4\u8BD5\u5377", /*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), "\u4E0D\u80FD\u518D\u4FEE\u6539\u7B54\u9898"]
|
|
|
}),
|
|
|
onOk: function () {
|
|
|
var _onOk3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee4() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee4$(_context4) {
|
|
|
while (1) switch (_context4.prev = _context4.next) {
|
|
|
case 0:
|
|
|
window.parent.location.href = "/classrooms/".concat(searchParams.get("coursesId"), "/exercise/").concat(searchParams.get("exercisesId"), "/detail");
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context4.stop();
|
|
|
}
|
|
|
}, _callee4);
|
|
|
}));
|
|
|
function onOk() {
|
|
|
return _onOk3.apply(this, arguments);
|
|
|
}
|
|
|
return onOk;
|
|
|
}()
|
|
|
});
|
|
|
}
|
|
|
if ((res === null || res === void 0 ? void 0 : res.status) === -3) {
|
|
|
time = parseInt(res === null || res === void 0 ? void 0 : res.message);
|
|
|
setCountDownTime(Date.now() + time * 1000);
|
|
|
}
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context5.stop();
|
|
|
}
|
|
|
}, _callee5);
|
|
|
}))
|
|
|
})
|
|
|
})]
|
|
|
}), searchParams.get("type") === 'exercises' && /*#__PURE__*/(0,jsx_runtime.jsxs)(es_button/* default */.ZP, {
|
|
|
type: "primary",
|
|
|
onClick: function onClick() {
|
|
|
if (st === 0) {
|
|
|
onUpdateCode();
|
|
|
}
|
|
|
es_modal/* default */.Z.confirm({
|
|
|
centered: true,
|
|
|
okText: '确定',
|
|
|
cancelText: '取消',
|
|
|
title: '提示',
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "tc",
|
|
|
children: "\u8BF7\u786E\u8BA4\u4F60\u7684\u7B54\u9898\u5185\u5BB9\u5DF2\u7ECF\u63D0\u4EA4\uFF1F"
|
|
|
}),
|
|
|
onOk: function onOk() {
|
|
|
// window.close()
|
|
|
clearCountdownTimeout();
|
|
|
lockExitFullRef.current = true;
|
|
|
backExercise();
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "iconfont icon-yiguanbi mr5 font14"
|
|
|
}), " \u8FD4\u56DE\u8BD5\u5377"]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(drawer/* default */.Z, {
|
|
|
width: 280,
|
|
|
rootClassName: "setting-drawer",
|
|
|
title: null,
|
|
|
placement: "right",
|
|
|
closable: false,
|
|
|
destroyOnClose: false,
|
|
|
open: isToolBar,
|
|
|
onClose: onHideToolBar,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(vnc_setting/* default */.Z, objectSpread2_default()({}, vncSettingOption))
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
var FiveMinute = 300;
|
|
|
function Timer(_ref3) {
|
|
|
var title = _ref3.title,
|
|
|
time = _ref3.time,
|
|
|
_ref3$className = _ref3.className,
|
|
|
className = _ref3$className === void 0 ? '' : _ref3$className,
|
|
|
callback = _ref3.callback,
|
|
|
_ref3$desc = _ref3.desc,
|
|
|
desc = _ref3$desc === void 0 ? '' : _ref3$desc,
|
|
|
_ref3$style = _ref3.style,
|
|
|
style = _ref3$style === void 0 ? {} : _ref3$style;
|
|
|
function onClick() {
|
|
|
callback ? callback() : null;
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
onClick: onClick,
|
|
|
title: title,
|
|
|
className: className,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-shijian1 mr5",
|
|
|
style: style
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
children: [desc ? "".concat(desc, "\uFF1A") : '', getTimer(time)]
|
|
|
})]
|
|
|
});
|
|
|
}
|
|
|
function VncTimer(_ref4) {
|
|
|
var onAddVncTime = _ref4.onAddVncTime,
|
|
|
onResetAllVnc = _ref4.onResetAllVnc,
|
|
|
toShixun = _ref4.toShixun,
|
|
|
_ref4$title = _ref4.title,
|
|
|
title = _ref4$title === void 0 ? '' : _ref4$title,
|
|
|
myshixun = _ref4.myshixun,
|
|
|
defaultTime = _ref4.defaultTime;
|
|
|
var _useState17 = (0,_react_17_0_2_react.useState)(defaultTime),
|
|
|
_useState18 = slicedToArray_default()(_useState17, 2),
|
|
|
time = _useState18[0],
|
|
|
setTime = _useState18[1];
|
|
|
var _useState19 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState20 = slicedToArray_default()(_useState19, 2),
|
|
|
btnLoading = _useState20[0],
|
|
|
setBtnLoading = _useState20[1];
|
|
|
var _useState21 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState22 = slicedToArray_default()(_useState21, 2),
|
|
|
isPlusTime = _useState22[0],
|
|
|
setIsPlusTime = _useState22[1];
|
|
|
var isFirstOpen = (0,_react_17_0_2_react.useRef)(true);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
window.addEventListener("visibilitychange", handleFocus);
|
|
|
return function () {
|
|
|
window.removeEventListener("visibilitychange", handleFocus);
|
|
|
};
|
|
|
}, []);
|
|
|
var handleFocus = /*#__PURE__*/function () {
|
|
|
var _ref5 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee7(e) {
|
|
|
var res, _res$data, _res$data2, remainingTime, currentTime;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee7$(_context7) {
|
|
|
while (1) switch (_context7.prev = _context7.next) {
|
|
|
case 0:
|
|
|
if (!(document.visibilityState === 'visible')) {
|
|
|
_context7.next = 5;
|
|
|
break;
|
|
|
}
|
|
|
_context7.next = 3;
|
|
|
return (0,service/* getRemainingTime */.fY)(myshixun === null || myshixun === void 0 ? void 0 : myshixun.identifier);
|
|
|
case 3:
|
|
|
res = _context7.sent;
|
|
|
if ((res === null || res === void 0 ? void 0 : res.status) === 0) {
|
|
|
remainingTime = (res === null || res === void 0 || (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.remainingTime) > 0 ? res === null || res === void 0 || (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.remainingTime : 0;
|
|
|
currentTime = remainingTime / 1000;
|
|
|
setTime(currentTime);
|
|
|
//其他地方增加了时间,关闭弹框
|
|
|
if (currentTime > FiveMinute) {
|
|
|
setIsPlusTime(false);
|
|
|
}
|
|
|
}
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context7.stop();
|
|
|
}
|
|
|
}, _callee7);
|
|
|
}));
|
|
|
return function handleFocus(_x) {
|
|
|
return _ref5.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
(0,useInterval/* default */.Z)(function () {
|
|
|
setTime(time - 1);
|
|
|
}, time > 0 ? 1000 : null);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (time === 300 || time === 180 || time === 60 || time === 0) {
|
|
|
setIsPlusTime(true);
|
|
|
}
|
|
|
}, [time]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (isFirstOpen.current) {
|
|
|
if (defaultTime < FiveMinute) {
|
|
|
setIsPlusTime(true);
|
|
|
}
|
|
|
isFirstOpen.current = false;
|
|
|
setTime(defaultTime);
|
|
|
}
|
|
|
}, [defaultTime]);
|
|
|
function onCancel() {
|
|
|
if (time !== 0) {
|
|
|
setIsPlusTime(false);
|
|
|
} else {
|
|
|
toShixun();
|
|
|
}
|
|
|
}
|
|
|
function onAddTime() {
|
|
|
return _onAddTime.apply(this, arguments);
|
|
|
}
|
|
|
function _onAddTime() {
|
|
|
_onAddTime = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee8() {
|
|
|
var _res$data3, res, _res6;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee8$(_context8) {
|
|
|
while (1) switch (_context8.prev = _context8.next) {
|
|
|
case 0:
|
|
|
setBtnLoading(true);
|
|
|
if (!(time > 0)) {
|
|
|
_context8.next = 8;
|
|
|
break;
|
|
|
}
|
|
|
_context8.next = 4;
|
|
|
return onAddVncTime();
|
|
|
case 4:
|
|
|
res = _context8.sent;
|
|
|
setTime((res === null || res === void 0 || (_res$data3 = res.data) === null || _res$data3 === void 0 ? void 0 : _res$data3.remaining_time) / 1000);
|
|
|
_context8.next = 12;
|
|
|
break;
|
|
|
case 8:
|
|
|
_context8.next = 10;
|
|
|
return onResetAllVnc();
|
|
|
case 10:
|
|
|
_res6 = _context8.sent;
|
|
|
toShixun();
|
|
|
case 12:
|
|
|
setBtnLoading(false);
|
|
|
setIsPlusTime(false);
|
|
|
case 14:
|
|
|
case "end":
|
|
|
return _context8.stop();
|
|
|
}
|
|
|
}, _callee8);
|
|
|
}));
|
|
|
return _onAddTime.apply(this, arguments);
|
|
|
}
|
|
|
function callback() {
|
|
|
if (time < FiveMinute) {
|
|
|
setIsPlusTime(true);
|
|
|
}
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(_react_17_0_2_react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(Timer, {
|
|
|
callback: callback,
|
|
|
title: "\u5B9E\u9A8C\u73AF\u5883\u5012\u8BA1\u65F6",
|
|
|
className: "btn-vnc ".concat(time < FiveMinute ? 'color-red' : '', " "),
|
|
|
time: time,
|
|
|
desc: title
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_modal/* default */.Z, {
|
|
|
title: [/*#__PURE__*/(0,jsx_runtime.jsx)(ExclamationCircleOutlined/* default */.Z, {
|
|
|
className: "modalIconYellow mr10"
|
|
|
}), time !== 0 ? '实验环境延时提醒' : '实验环境结束提醒'],
|
|
|
maskClosable: false,
|
|
|
closable: false,
|
|
|
centered: true,
|
|
|
open: isPlusTime,
|
|
|
onOk: onAddTime,
|
|
|
cancelButtonProps: {
|
|
|
style: {
|
|
|
display: time !== 0 ? 'inline-block' : 'none'
|
|
|
}
|
|
|
},
|
|
|
confirmLoading: btnLoading,
|
|
|
onCancel: onCancel,
|
|
|
okText: time !== 0 ? '立即延长' : '退出',
|
|
|
cancelText: "\u4E0D\u9700\u8981",
|
|
|
children: time !== 0 ? "\u5F53\u524D\u5B9E\u9A8C\u73AF\u5883\u5C06\u4E8E ".concat(Math.round(time / 60), " \u5206\u949F\u540E\u5173\u95ED\uFF0C\u9700\u8981\u5EF6\u957F\u4F7F\u7528\u65F6\u95F4\u5417\uFF1F") : '实验环境倒计时结束,资源已经被回收。'
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
}
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/choose-repository/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var choose_repositorymodules = ({"test-set-container":"test-set-container___JHp4n","resize-y-bar":"resize-y-bar___rdi2n","code-area-container":"code-area-container___Wrs1J","xterm-panel":"xterm-panel___Qp8NN","xterm-rows":"xterm-rows___NHMLJ","xterm":"xterm___JuxUK","xterm-screen":"xterm-screen___jNWY5","navs":"navs___isstg","arrow-right":"arrow-right___k6W52","arrow-down":"arrow-down___RJ_Vp","flex-container":"flex-container___fcvlY","iconfont":"iconfont___x63vg","active":"active___tIrbA","action-bar-container":"action-bar-container___WBAJU","action-bar":"action-bar___gNMCV","right-panel":"right-panel___n2hmC","action-container":"action-container___GNaac","setting-drawer":"setting-drawer___UAqT2","oj":"oj___BBHzQ","spinning":"spinning___Klii0","btn":"btn___Ih5Gr"});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/choose-repository/topics/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/radio/index.js + 5 modules
|
|
|
var es_radio = __webpack_require__(5112);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/choose-repository/topics/topic/A.jsx
|
|
|
|
|
|
|
|
|
var dicts = {
|
|
|
0: 'A',
|
|
|
1: 'B',
|
|
|
2: 'C',
|
|
|
3: 'D',
|
|
|
4: 'E',
|
|
|
5: 'F',
|
|
|
6: 'G',
|
|
|
7: 'H',
|
|
|
8: 'I',
|
|
|
9: 'J',
|
|
|
10: 'K',
|
|
|
11: 'L',
|
|
|
12: 'M',
|
|
|
13: 'N'
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var A = (function (_ref) {
|
|
|
var category = _ref.category,
|
|
|
_ref$answer = _ref.answer,
|
|
|
answer = _ref$answer === void 0 ? '' : _ref$answer,
|
|
|
index = _ref.index,
|
|
|
option_name = _ref.option_name,
|
|
|
callback = _ref.callback;
|
|
|
var value = dicts[index];
|
|
|
function onSetOption() {
|
|
|
//单选
|
|
|
if (category === 1) {
|
|
|
callback(value);
|
|
|
} else {
|
|
|
var rs = (answer === null || answer === void 0 ? void 0 : answer.split('')) || [];
|
|
|
//复选取消或者选中逻辑
|
|
|
var i = rs.indexOf(value);
|
|
|
if (i >= 0) {
|
|
|
rs.splice(i, 1);
|
|
|
} else {
|
|
|
rs.push(value);
|
|
|
}
|
|
|
callback(rs.join(''));
|
|
|
}
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
className: "flex-container",
|
|
|
onClick: onSetOption,
|
|
|
children: [category === 1 ? /*#__PURE__*/(0,jsx_runtime.jsx)(es_radio/* default */.ZP, {
|
|
|
checked: answer && answer.indexOf(value) >= 0,
|
|
|
className: "choice"
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)(es_checkbox/* default */.Z, {
|
|
|
className: "choice",
|
|
|
checked: answer && answer.indexOf(value) >= 0
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "flex-wrp",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
className: "checkTitle",
|
|
|
style: {
|
|
|
lineHeight: 1.7,
|
|
|
fontSize: 16,
|
|
|
whiteSpace: 'nowrap'
|
|
|
},
|
|
|
children: [value, "\u3001"]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(RenderHtml/* default */.Z, {
|
|
|
className: "subject-body",
|
|
|
value: option_name
|
|
|
})]
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/input/index.js + 5 modules
|
|
|
var input = __webpack_require__(1056);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/choose-repository/topics/topic/C.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var C = (function (_ref) {
|
|
|
var callback = _ref.callback,
|
|
|
multi_count = _ref.multi_count,
|
|
|
answer = _ref.answer;
|
|
|
var _useState = (0,_react_17_0_2_react.useState)([]),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
data = _useState2[0],
|
|
|
setData = _useState2[1];
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (multi_count) {
|
|
|
if (answer !== null && answer !== void 0 && answer.length) {
|
|
|
setData(answer);
|
|
|
return;
|
|
|
}
|
|
|
var item = Array.from({
|
|
|
length: multi_count
|
|
|
}).fill('');
|
|
|
setData(item);
|
|
|
}
|
|
|
}, [multi_count, answer]);
|
|
|
console.log(data, answer, 'multi_count');
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "option",
|
|
|
children: data === null || data === void 0 ? void 0 : data.map(function (item, index) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
align: "middle",
|
|
|
className: "mb10 text",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
className: "mb5",
|
|
|
children: ["\u586B\u7A7A", index + 1, "\u7B54\u6848\uFF1A"]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z.TextArea, {
|
|
|
value: item,
|
|
|
onChange: function onChange(e) {
|
|
|
data[index] = e.target.value;
|
|
|
callback(data);
|
|
|
}
|
|
|
}, index)]
|
|
|
});
|
|
|
})
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/col/index.js
|
|
|
var col = __webpack_require__(43604);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/choose-repository/topics/topic/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//(?:class=\")([^ ]+)[ ]+(?:language-)\1
|
|
|
|
|
|
|
|
|
/* harmony default export */ var topic = (function (_ref) {
|
|
|
var id = _ref.id,
|
|
|
answer = _ref.answer,
|
|
|
challenge_question = _ref.challenge_question,
|
|
|
category = _ref.category,
|
|
|
subject = _ref.subject,
|
|
|
onSetAnswers = _ref.onSetAnswers,
|
|
|
question_name = _ref.question_name,
|
|
|
multi_count = _ref.multi_count;
|
|
|
function callback(value) {
|
|
|
onSetAnswers(id, value);
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("li", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
className: "subject c-grey-999",
|
|
|
align: "stretch",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "40px",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
className: "mt3 order",
|
|
|
children: [id + 1, "\u3001"]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: '1',
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(RenderHtml/* default */.Z, {
|
|
|
value: "".concat(subject),
|
|
|
className: "subject-body"
|
|
|
})
|
|
|
})]
|
|
|
}), question_name === '单选题/多选题' && /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "option",
|
|
|
children: challenge_question === null || challenge_question === void 0 ? void 0 : challenge_question.map(function (_ref2, index) {
|
|
|
var option_name = _ref2.option_name;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(A, {
|
|
|
index: index,
|
|
|
option_name: option_name,
|
|
|
answer: answer,
|
|
|
category: category,
|
|
|
callback: callback
|
|
|
}, option_name);
|
|
|
})
|
|
|
}), question_name === '判断题' && /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "option",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(es_radio/* default.Group */.ZP.Group, {
|
|
|
className: "mb10",
|
|
|
style: {
|
|
|
marginLeft: 38
|
|
|
},
|
|
|
value: answer || undefined,
|
|
|
onChange: function onChange(e) {
|
|
|
return callback(e.target.value);
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_radio/* default */.ZP, {
|
|
|
value: "true",
|
|
|
className: "mr40",
|
|
|
children: "\u6B63\u786E"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_radio/* default */.ZP, {
|
|
|
value: "false",
|
|
|
children: "\u9519\u8BEF"
|
|
|
})]
|
|
|
})
|
|
|
}), question_name === '填空题' && /*#__PURE__*/(0,jsx_runtime.jsx)(C, {
|
|
|
multi_count: multi_count,
|
|
|
callback: callback,
|
|
|
answer: answer
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/choose-repository/topics/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var topics = (function (_ref) {
|
|
|
var chooses = _ref.chooses,
|
|
|
answers = _ref.answers,
|
|
|
onSetAnswers = _ref.onSetAnswers,
|
|
|
_ref$bgColor = _ref.bgColor,
|
|
|
bgColor = _ref$bgColor === void 0 ? '#1E1E1E' : _ref$bgColor;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("ul", {
|
|
|
className: "".concat(bgColor === '#1E1E1E' ? '' : 'vs', " choose-container"),
|
|
|
style: {
|
|
|
backgroundColor: bgColor
|
|
|
},
|
|
|
children: chooses.map(function (_ref2, index) {
|
|
|
var subject = _ref2.subject,
|
|
|
challenge_question = _ref2.challenge_question,
|
|
|
category = _ref2.category,
|
|
|
question_name = _ref2.question_name,
|
|
|
multi_count = _ref2.multi_count;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(topic
|
|
|
// className={bgColor==='#1E1E1E'?'vs_dark':'vs'}
|
|
|
, {
|
|
|
id: index,
|
|
|
subject: subject,
|
|
|
challenge_question: challenge_question,
|
|
|
category: category,
|
|
|
answer: answers[index],
|
|
|
onSetAnswers: onSetAnswers,
|
|
|
question_name: question_name,
|
|
|
multi_count: multi_count
|
|
|
}, index);
|
|
|
})
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/choose-repository/test-cast-list/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/choose-repository/test-cast-list/mark.svg
|
|
|
var mark = __webpack_require__(39496);
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/choose-repository/test-cast-list/success.svg
|
|
|
var success = __webpack_require__(19274);
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/choose-repository/test-cast-list/failer.svg
|
|
|
var failer = __webpack_require__(6169);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/choose-repository/test-cast-list/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var TestCaseItem = function TestCaseItem(_ref) {
|
|
|
var id = _ref.id,
|
|
|
isActive = _ref.isActive,
|
|
|
title = _ref.title,
|
|
|
onActive = _ref.onActive,
|
|
|
had_submmit = _ref.had_submmit,
|
|
|
result = _ref.result,
|
|
|
actual_output = _ref.actual_output,
|
|
|
standard_answer = _ref.standard_answer,
|
|
|
question_name = _ref.question_name;
|
|
|
function onActiveHandler() {
|
|
|
onActive(id);
|
|
|
}
|
|
|
var cls = 'test-case-item';
|
|
|
if (isActive) {
|
|
|
cls += ' active';
|
|
|
}
|
|
|
if (had_submmit) {
|
|
|
cls += ' has-result';
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("li", {
|
|
|
className: cls,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
className: "case-header",
|
|
|
onClick: onActiveHandler,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("h2", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: isActive ? 'arrow-down' : 'arrow-right'
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "test-title",
|
|
|
children: title
|
|
|
})]
|
|
|
}), had_submmit > 0 ? /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
width: 16,
|
|
|
src: result ? success/* default */.Z : failer/* default */.Z
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-suo1"
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "item-desc ".concat(isActive ? 'show' : 'hide', " choose-game-item"),
|
|
|
children: had_submmit ? result ? question_name === '填空题' ? /*#__PURE__*/(0,jsx_runtime.jsxs)(_react_17_0_2_react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: "\u6B63\u786E\u7B54\u6848\uFF1A"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
children: standard_answer === null || standard_answer === void 0 ? void 0 : standard_answer.map(function (e, i) {
|
|
|
var _e$text;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
children: ["\u586B\u7A7A", i + 1, "\uFF1A", e === null || e === void 0 || (_e$text = e.text) === null || _e$text === void 0 ? void 0 : _e$text.join('、')]
|
|
|
});
|
|
|
})
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: "\u4F60\u7684\u7B54\u6848\uFF1A"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
className: "c-red",
|
|
|
children: actual_output === null || actual_output === void 0 ? void 0 : actual_output.map(function (e, i) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
children: ["\u586B\u7A7A", i + 1, "\uFF1A", e]
|
|
|
});
|
|
|
})
|
|
|
})]
|
|
|
})]
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsxs)(_react_17_0_2_react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
children: ["\u6B63\u786E\u9009\u9879\uFF1A", /*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
children: standard_answer
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
children: ["\u4F60\u7684\u9009\u9879\uFF1A", /*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
className: "c-red",
|
|
|
children: actual_output
|
|
|
})]
|
|
|
})]
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
children: "\u9519\u8BEF\uFF0C\u4E0D\u652F\u6301\u67E5\u770B"
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
children: "\u5C1A\u672A\u63D0\u4EA4\uFF0C\u6682\u4E0D\u652F\u6301\u67E5\u770B"
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
};
|
|
|
|
|
|
//moveY = 0.01 时,表示测试集最大化
|
|
|
/* harmony default export */ var test_cast_list = (function (_ref2) {
|
|
|
var onResizeSetContainer = _ref2.onResizeSetContainer,
|
|
|
moveY = _ref2.moveY,
|
|
|
had_submmit = _ref2.had_submmit,
|
|
|
_ref2$test_sets = _ref2.test_sets,
|
|
|
test_sets = _ref2$test_sets === void 0 ? [] : _ref2$test_sets,
|
|
|
challenge_chooses_count = _ref2.challenge_chooses_count,
|
|
|
choose_correct_num = _ref2.choose_correct_num;
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(-1),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
index = _useState2[0],
|
|
|
setIndex = _useState2[1];
|
|
|
function trigger(id) {
|
|
|
setIndex(id === index ? -1 : id);
|
|
|
}
|
|
|
var isOk = choose_correct_num === challenge_chooses_count;
|
|
|
function onResizeSet() {
|
|
|
onResizeSetContainer(moveY);
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(_react_17_0_2_react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "test-header",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "active",
|
|
|
children: "\u6D4B\u8BD5\u7ED3\u679C"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: onResizeSet,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont ".concat(moveY === 0.01 ? 'icon-shousuo' : 'icon-zhankai', " icon-zhankai")
|
|
|
})
|
|
|
})]
|
|
|
}), had_submmit ? /*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
className: "test-result ".concat(isOk ? 'success' : 'failer'),
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
className: "count",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
width: 16,
|
|
|
src: isOk ? success/* default */.Z : mark/* default */.Z
|
|
|
}), choose_correct_num, " / ", challenge_chooses_count, " \u5171\u6709", challenge_chooses_count, "\u9898\uFF0C"]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: isOk ? '全部通过' : "\u5176\u4E2D".concat(challenge_chooses_count - choose_correct_num, "\u9898\u76EE\u7ED3\u679C\u4E0D\u5339\u914D\u3002\u8BE6\u60C5\u5982\u4E0B\uFF1A")
|
|
|
})]
|
|
|
}) : null, /*#__PURE__*/(0,jsx_runtime.jsx)("ul", {
|
|
|
className: "test-case-list",
|
|
|
children: test_sets.map(function (item, i) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(TestCaseItem, objectSpread2_default()(objectSpread2_default()({
|
|
|
had_submmit: had_submmit,
|
|
|
title: "\u9898\u76EE".concat(i + 1)
|
|
|
}, item), {}, {
|
|
|
isActive: index === i,
|
|
|
id: i,
|
|
|
onActive: trigger
|
|
|
}), 'item' + i);
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/footer-bar/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var footer_barmodules = ({"action-container":"action-container___Xcx9G","eval-btn-group":"eval-btn-group___b8ds5","eval-desc":"eval-desc___bIcYm","btn-run":"btn-run___fh7pl","btn-run-self":"btn-run-self___Bwz1A","ghost-link":"ghost-link___Y8dGm","link":"link___PPhWD"});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/footer-bar/run.png
|
|
|
var run_namespaceObject = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjk3RTBEMDM2MDE3ODExRUI4QzEzQUNFNDcxODM2QjJDIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjk3RTBEMDM3MDE3ODExRUI4QzEzQUNFNDcxODM2QjJDIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OTdFMEQwMzQwMTc4MTFFQjhDMTNBQ0U0NzE4MzZCMkMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6OTdFMEQwMzUwMTc4MTFFQjhDMTNBQ0U0NzE4MzZCMkMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6ejzPSAAACsUlEQVR42ryYz08TQRTHp9vQQkFPlAAHDXjxR2LwoEbhpCXon1DPpf0PbP8UwOhV/QOM8QIXIIRwASNtYo0RIye9FIF4Yf2O+U7ysmnrzM5uX/JJu7sz730zOzvz3mTCMFSONgOWwAK4Aa6CS3x2Ar6BJtgEH8BXJ+9akAVZUAZb4CK0twv2KdPHf2PZiCmBpghyAt6CGrgPJkCeTPCefvaGbY016Su2oGGwKhx+AVUwZjmqim0r7Gtslb6dBBXBLh2cg+cg5yAkSo4+zulzlzGsBOmGLTEqcx5CosyJ0Wp1ExXtUAA77PARTCYoxjBJ3yFjFfoJesGGnzlBVUoUGSNkzK6CSmLO3ElRjHx9Zk6VooICcMiHjQGIMTTEkpCVgsp80AZDls5WPL88xVhtxi5LQZu8uezgLOQqPOUpqip8/RM0wyVer6qjjoK0/QAPPASNMrbWMBtgO3sCMuAdOFXuNg02wLKKZ6eMrTUsaUHzfLCu4lserIEVkIvR38Se14Ju8WJf+VuNozXl2O+Avzf1O/zJuTDu+O77meu8Gme/X4FIrjoqOXOdVyb2WKDStYxrh4Bpp7bLCQo5Bo840W3MxP6tBX3nxbWExGyDu/y1NRP7SAs65MXtBMSscWSOHfuZ2J8CVgfaHnsI+cNPvsb/rmZib+lPbpbLdsdj63jouXV0zNaRxOY67bm5VqKbq0/6kU8r/ciK2qs+wASt3itBkynsWcKVRr8U9owxF3sl+a9Ekl8cUJL/0rYMOkixDNq3LYMGUSi2XQpFg67J9kRZ1EiglK6LsmevV93Xz8lIl8OGiuPiWWCftu9hg2RRvEJzHPOa1cI9DvsQKfJelW3kcUxLfk0+guSB1bbjgVXIPs9sD6wyMY/0nvJI7zq4IvIZnfkdgRY37feuR3p/BRgAhrFnXQBvMBoAAAAASUVORK5CYII=";
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/footer-bar/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var footer_bar = (function (_ref) {
|
|
|
var _test_sets$;
|
|
|
var st = _ref.st,
|
|
|
prev_game = _ref.prev_game,
|
|
|
next_game = _ref.next_game,
|
|
|
time_limit = _ref.time_limit,
|
|
|
record_consume_time = _ref.record_consume_time,
|
|
|
loading = _ref.loading,
|
|
|
shixun = _ref.shixun,
|
|
|
game = _ref.game,
|
|
|
onRun = _ref.onRun,
|
|
|
dispatch = _ref.dispatch,
|
|
|
chooses = _ref.chooses,
|
|
|
unity_3d_routes = _ref.unity_3d_routes,
|
|
|
user = _ref.user,
|
|
|
is_last_game = _ref.is_last_game,
|
|
|
onUpdateCode = _ref.onUpdateCode,
|
|
|
test_sets = _ref.test_sets,
|
|
|
challenge = _ref.challenge,
|
|
|
game_report_id = _ref.game_report_id,
|
|
|
_ref$tabActiveParams = _ref.tabActiveParams,
|
|
|
tabActiveParams = _ref$tabActiveParams === void 0 ? {} : _ref$tabActiveParams,
|
|
|
startDebug = _ref.startDebug;
|
|
|
var params = (0,_umi_production_exports.useParams)();
|
|
|
var hasNextGame = !is_last_game && !loading && (shixun.status > 0 || (user === null || user === void 0 ? void 0 : user.identity) < 5);
|
|
|
var runTextEnum = ['自测运行', '正在启动', '停止运行', '正在停止'];
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(0),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
count = _useState2[0],
|
|
|
setCount = _useState2[1];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)(0),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
time = _useState4[0],
|
|
|
setTime = _useState4[1];
|
|
|
var _useState5 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
showPrevResult = _useState6[0],
|
|
|
setShowPrevResult = _useState6[1];
|
|
|
var _useState7 = (0,_react_17_0_2_react.useState)(test_sets === null || test_sets === void 0 || (_test_sets$ = test_sets[0]) === null || _test_sets$ === void 0 ? void 0 : _test_sets$['input']),
|
|
|
_useState8 = slicedToArray_default()(_useState7, 2),
|
|
|
inputValue = _useState8[0],
|
|
|
setInputValue = _useState8[1];
|
|
|
var _useState9 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState10 = slicedToArray_default()(_useState9, 2),
|
|
|
loadingRun = _useState10[0],
|
|
|
setLoadingRun = _useState10[1];
|
|
|
var _useState11 = (0,_react_17_0_2_react.useState)(runTextEnum[0]),
|
|
|
_useState12 = slicedToArray_default()(_useState11, 2),
|
|
|
runText = _useState12[0],
|
|
|
setRunText = _useState12[1];
|
|
|
var isRunRef = (0,_react_17_0_2_react.useRef)(false);
|
|
|
var location = (0,_umi_production_exports.useLocation)();
|
|
|
var shixun_environment_id = tabActiveParams.shixun_environment_id,
|
|
|
tab_type = tabActiveParams.tab_type;
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (count > 0) {
|
|
|
setTimeout(function () {
|
|
|
setCount(count - 1);
|
|
|
}, 1000);
|
|
|
}
|
|
|
}, [count]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (time > 0) {
|
|
|
setTimeout(function () {
|
|
|
setTime(time - 1);
|
|
|
}, 1000);
|
|
|
}
|
|
|
}, [time]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
var unsub = mediator/* default */.Z.subscribe('eval-code-finish', function () {
|
|
|
if (unity_3d_routes) {
|
|
|
setShowPrevResult(true);
|
|
|
}
|
|
|
if (st === 1) {} else {
|
|
|
setCount(10);
|
|
|
}
|
|
|
});
|
|
|
var unSub2 = mediator/* default */.Z.subscribe('caseInputValue', function (value) {
|
|
|
setInputValue(value);
|
|
|
});
|
|
|
var unRun3 = mediator/* default */.Z.subscribe('runCodeFinish', function () {
|
|
|
isRunRef.current = false;
|
|
|
setLoadingRun(false);
|
|
|
setRunText(runTextEnum[0]);
|
|
|
if (time > 0) {} else {
|
|
|
setTime(5);
|
|
|
}
|
|
|
});
|
|
|
return function () {
|
|
|
unsub();
|
|
|
unSub2();
|
|
|
unRun3();
|
|
|
};
|
|
|
}, []);
|
|
|
var toStop = function toStop() {
|
|
|
isRunRef.current = false;
|
|
|
setRunText(runTextEnum[3]);
|
|
|
mediator/* default */.Z.publish('runCode', {
|
|
|
type: 'stop'
|
|
|
});
|
|
|
(0,service/* stopLogOutput */.Yv)(params.taskId, {
|
|
|
shixun_environment_id: shixun_environment_id,
|
|
|
tab_type: tab_type
|
|
|
});
|
|
|
setTimeout(function () {
|
|
|
setRunText(runTextEnum[0]);
|
|
|
setLoadingRun(false);
|
|
|
setTime(5);
|
|
|
}, 2500);
|
|
|
};
|
|
|
var toRun = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
isRunRef.current = true;
|
|
|
_context2.next = 3;
|
|
|
return onUpdateCode();
|
|
|
case 3:
|
|
|
setRunText(runTextEnum[1]);
|
|
|
mediator/* default */.Z.publish('show-case-result', true);
|
|
|
setTimeout( /*#__PURE__*/asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var _res$data;
|
|
|
var res, _res$data2, _res$data3;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.next = 2;
|
|
|
return (0,service/* logOutput */.h$)(params.taskId, {
|
|
|
test_case_content: inputValue,
|
|
|
shixun_environment_id: shixun_environment_id,
|
|
|
tab_type: tab_type
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context.sent;
|
|
|
if (!(res !== null && res !== void 0 && (_res$data = res.data) !== null && _res$data !== void 0 && (_res$data = _res$data.data_list) !== null && _res$data !== void 0 && _res$data.length)) {
|
|
|
_context.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
mediator/* default */.Z.publish('pod-restrict-data', {
|
|
|
identifier: res === null || res === void 0 || (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.identifier,
|
|
|
data_list: res === null || res === void 0 || (_res$data3 = res.data) === null || _res$data3 === void 0 ? void 0 : _res$data3.data_list
|
|
|
});
|
|
|
return _context.abrupt("return");
|
|
|
case 6:
|
|
|
mediator/* default */.Z.publish('showRunCodeTab', true);
|
|
|
mediator/* default */.Z.publish('runCode', {
|
|
|
type: 'start'
|
|
|
});
|
|
|
case 8:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
})), 100);
|
|
|
setTimeout(function () {
|
|
|
if (isRunRef.current) {
|
|
|
setRunText(runTextEnum[2]);
|
|
|
setLoadingRun(false);
|
|
|
}
|
|
|
}, 1000);
|
|
|
case 7:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return function toRun() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var onStartOrStopRun = /*#__PURE__*/function () {
|
|
|
var _ref4 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
setLoadingRun(true);
|
|
|
if (runText === runTextEnum[2]) {
|
|
|
toStop();
|
|
|
} else {
|
|
|
toRun();
|
|
|
}
|
|
|
case 2:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
}));
|
|
|
return function onStartOrStopRun() {
|
|
|
return _ref4.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: footer_barmodules['action-container'],
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "flex-container ".concat(footer_barmodules['eval-desc']),
|
|
|
children: [time_limit && challenge !== null && challenge !== void 0 && challenge.with_code_file ? /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u672C\u5173\u6700\u5927\u6267\u884C\u65F6\u95F4\uFF1A".concat(time_limit, "\u79D2")
|
|
|
}) : null, record_consume_time && challenge !== null && challenge !== void 0 && challenge.with_code_file ? /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
children: ["\u672C\u6B21\u8BC4\u6D4B\u8017\u65F6(\u7F16\u8BD1\u3001\u8FD0\u884C\u603B\u65F6\u95F4)\uFF1A", record_consume_time, " \u79D2"]
|
|
|
}) : null, game_report_id ? /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
target: "_blank",
|
|
|
className: footer_barmodules.link,
|
|
|
href: "/report/".concat(params.taskId, "/").concat(game_report_id),
|
|
|
children: "\u4EE3\u7801\u6027\u80FD\u68C0\u6D4B"
|
|
|
}) : null, [2, 3, 4, 5].includes(tab_type) && /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
title: "\u663E\u793A/\u9690\u85CF\u6D4B\u8BD5\u7ED3\u679C",
|
|
|
onClick: function onClick() {
|
|
|
mediator/* default */.Z.publish('show-case-result');
|
|
|
},
|
|
|
children: "\u663E\u793A/\u9690\u85CF\u6D4B\u8BD5\u7ED3\u679C"
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "flex-container ".concat(footer_barmodules['eval-btn-group']),
|
|
|
children: [prev_game && !loading ? /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
href: "/tasks/".concat(prev_game).concat(location.search),
|
|
|
onClick: function onClick(e) {
|
|
|
e.preventDefault();
|
|
|
if (params.courseId && params.homeworkId) {
|
|
|
setTimeout(function () {
|
|
|
return window.location.href = "/tasks/".concat(params.courseId, "/").concat(params.homeworkId, "/").concat(prev_game).concat(location.search);
|
|
|
}, 300);
|
|
|
return;
|
|
|
}
|
|
|
setTimeout(function () {
|
|
|
return window.location.href = "/tasks/".concat(prev_game).concat(location.search);
|
|
|
}, 300);
|
|
|
},
|
|
|
className: footer_barmodules['ghost-link'],
|
|
|
children: "\u4E0A\u4E00\u5173"
|
|
|
}) : null, hasNextGame ? /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
href: "/tasks/".concat(next_game).concat(location.search),
|
|
|
onClick: function onClick(e) {
|
|
|
e.preventDefault();
|
|
|
if (shixun.task_pass || game.status === 2 || (user === null || user === void 0 ? void 0 : user.identity) < 5) {
|
|
|
if (params.courseId && params.homeworkId) {
|
|
|
setTimeout(function () {
|
|
|
return window.location.href = "/tasks/".concat(params.courseId, "/").concat(params.homeworkId, "/").concat(next_game).concat(location.search);
|
|
|
}, 300);
|
|
|
return;
|
|
|
}
|
|
|
setTimeout(function () {
|
|
|
return window.location.href = "/tasks/".concat(next_game).concat(location.search);
|
|
|
}, 300);
|
|
|
return;
|
|
|
}
|
|
|
es_modal/* default */.Z.warning({
|
|
|
centered: true,
|
|
|
width: 530,
|
|
|
title: '提示',
|
|
|
okText: '我知道了',
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
children: "\u8BE5\u5B9E\u8DF5\u9879\u76EE\u8BBE\u7F6E\u4E86\u4E0D\u5141\u8BB8\u8DF3\u5173\u3002\u901A\u8FC7\u5F53\u524D\u5173\u5361\u540E\uFF0C\u624D\u80FD\u8FDB\u5165\u4E0B\u4E00\u5173\u3002"
|
|
|
})
|
|
|
});
|
|
|
},
|
|
|
className: footer_barmodules['ghost-link'],
|
|
|
children: "\u4E0B\u4E00\u5173"
|
|
|
}) : null, showPrevResult && (challenge === null || challenge === void 0 ? void 0 : challenge.show_type) === 1 && /*#__PURE__*/(0,jsx_runtime.jsx)("button", {
|
|
|
onClick: function onClick() {
|
|
|
dispatch({
|
|
|
type: 'SHOW_PICTURE_VIEW'
|
|
|
});
|
|
|
},
|
|
|
style: {
|
|
|
minWidth: '72px',
|
|
|
marginRight: 10
|
|
|
},
|
|
|
className: "btn-run",
|
|
|
title: "\u67E5\u770B\u6548\u679C",
|
|
|
children: "\u67E5\u770B\u6548\u679C"
|
|
|
}), tab_type === 1 && !startDebug && (shixun === null || shixun === void 0 ? void 0 : shixun.open_self_run) && /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
onClick: (0,lodash.throttle)(onStartOrStopRun, 2000),
|
|
|
loading: loadingRun,
|
|
|
danger: true,
|
|
|
disabled: time > 0,
|
|
|
className: "".concat(footer_barmodules['btn-run-self'], " mr10"),
|
|
|
children: time > 0 ? "".concat(time, "S") : runText
|
|
|
}), (challenge === null || challenge === void 0 ? void 0 : challenge.with_code_file) && !(tab_type === 1 && startDebug) && /*#__PURE__*/(0,jsx_runtime.jsx)("button", {
|
|
|
onClick: /*#__PURE__*/asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee4() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee4$(_context4) {
|
|
|
while (1) switch (_context4.prev = _context4.next) {
|
|
|
case 0:
|
|
|
if (!(st === 1)) {
|
|
|
_context4.next = 4;
|
|
|
break;
|
|
|
}
|
|
|
if (!((chooses === null || chooses === void 0 ? void 0 : chooses.length) <= 0)) {
|
|
|
_context4.next = 4;
|
|
|
break;
|
|
|
}
|
|
|
es_modal/* default */.Z.confirm({
|
|
|
centered: true,
|
|
|
title: '提示',
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "tc",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
children: "\u60A8\u8FD8\u672A\u6DFB\u52A0\u9898\u76EE\uFF0C\u8BF7\u6DFB\u52A0\u540E\u8BC4\u6D4B\uFF01"
|
|
|
})
|
|
|
}),
|
|
|
okText: "\u786E\u8BA4",
|
|
|
cancelText: '取消'
|
|
|
});
|
|
|
return _context4.abrupt("return");
|
|
|
case 4:
|
|
|
setShowPrevResult(false);
|
|
|
_context4.next = 7;
|
|
|
return onRun();
|
|
|
case 7:
|
|
|
case "end":
|
|
|
return _context4.stop();
|
|
|
}
|
|
|
}, _callee4);
|
|
|
})),
|
|
|
style: {
|
|
|
minWidth: '72px'
|
|
|
},
|
|
|
disabled: loading || count > 0,
|
|
|
className: footer_barmodules['btn-run'],
|
|
|
title: "\u8FD0\u884C\u8BC4\u6D4B",
|
|
|
children: count > 0 ? "".concat(count, "S") : /*#__PURE__*/(0,jsx_runtime.jsxs)(_react_17_0_2_react.Fragment, {
|
|
|
children: [' ', /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: run_namespaceObject,
|
|
|
alt: "run",
|
|
|
width: 18
|
|
|
}), " ", /*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
children: "\u8BC4\u6D4B"
|
|
|
}), ' ']
|
|
|
})
|
|
|
})]
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./src/components/Exercise/ip.tsx
|
|
|
var Exercise_ip = __webpack_require__(57646);
|
|
|
;// CONCATENATED MODULE: ./src/components/TpiDescIcon/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var TpiDescIconmodules = ({"iconWrapper":"iconWrapper___U51IV","minusIcon":"minusIcon___xP_3j","arrowIcon":"arrowIcon___jKd9h"});
|
|
|
;// CONCATENATED MODULE: ./src/assets/images/task/desc.png
|
|
|
var desc_namespaceObject = "data:image/png;base64,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";
|
|
|
;// CONCATENATED MODULE: ./src/assets/images/task/arrow.png
|
|
|
var arrow_namespaceObject = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAgCAYAAAB3j6rJAAAAAXNSR0IArs4c6QAAAZdJREFUWEfF2D1Lw1AUxvH/8xHcBHFSaUfrojiKi19FHFwUFQQriLoIxcVVv4O4CCJOOriK7oKTCiLaQY9cCaW2yc1LzU2WDLnn5EdC8pxEDLCZ2SRwDIwCTUmttHZmVgNOALc/kLTtapRWmHTczKaAc2AoWvMNjEh68tTUgQtguGtNXdJ9IUgMwvX1QswsDuHqikESEK7hlqRm3NXwIFqSlnPfGg9iT9J6TsQRsCjJckHKRGSGlI3IBAmBSIWEQnghIRGJkNCIWEgViD5IVYg/kCoRHUjViG7IJvAbx11bG5iVdJvw6l4CDnuOueCbk3SZN9U76Wtmu8BaT4MXYN6DWQX2e2regQVJV3kwf8aAKjF980hVmNjBqApM4oQWGuMdFUNiUmfWUJhUiHsEQ2AyQUJgMkPKxuSClInJDfFgHoFxSZ8J2RQXB8/AmKTXQhAPpibpISljzCwOMyPpujAkwuwAG9GJb6K0/vKFnZmtREHpzn0HNCS1B4JEmOnob8CppI8siWtmDWACOJP0lvo5kaXpf635AX6GXzDZRnW0AAAAAElFTkSuQmCC";
|
|
|
;// CONCATENATED MODULE: ./src/components/TpiDescIcon/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var TpiDescIcon = function TpiDescIcon(_ref) {
|
|
|
var desc = _ref.desc,
|
|
|
visible = _ref.visible;
|
|
|
var moveElement = (0,_react_17_0_2_react.useRef)();
|
|
|
var minusIconElement = (0,_react_17_0_2_react.useRef)();
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
hide = _useState2[0],
|
|
|
setHide = _useState2[1];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
open = _useState4[0],
|
|
|
setOpen = _useState4[1];
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (moveElement.current) {
|
|
|
var onMouseDown = function onMouseDown(e) {
|
|
|
setOpen(false);
|
|
|
(0,util/* pointerEvents */.kk)('none');
|
|
|
var box = moveElement.current.getBoundingClientRect();
|
|
|
startLeft = box.left;
|
|
|
startTop = box.top;
|
|
|
startPageX = e.pageX;
|
|
|
startPageY = e.pageY;
|
|
|
dragging = true;
|
|
|
click = true;
|
|
|
document.onselectstart = function () {
|
|
|
return false;
|
|
|
};
|
|
|
};
|
|
|
var onMouseUp = function onMouseUp(e) {
|
|
|
e.stopPropagation();
|
|
|
dragging = false;
|
|
|
(0,util/* pointerEvents */.kk)('auto');
|
|
|
document.onselectstart = null;
|
|
|
if (click) {
|
|
|
var _e$target, _minusIconElement$cur;
|
|
|
click = false;
|
|
|
if (((_e$target = e.target) === null || _e$target === void 0 ? void 0 : _e$target.id) !== ((_minusIconElement$cur = minusIconElement.current) === null || _minusIconElement$cur === void 0 ? void 0 : _minusIconElement$cur.id)) {
|
|
|
setOpen(true);
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
var onMouseMove = function onMouseMove(e) {
|
|
|
if (dragging) {
|
|
|
click = false;
|
|
|
setOpen(false);
|
|
|
var spareWidth = e.pageX - startPageX;
|
|
|
var spareHeight = e.pageY - startPageY;
|
|
|
moveElement.current.style.left = "".concat(startLeft + spareWidth, "px");
|
|
|
moveElement.current.style.top = "".concat(startTop + spareHeight, "px");
|
|
|
}
|
|
|
};
|
|
|
var startLeft = 0;
|
|
|
var startTop = 0;
|
|
|
var startPageX = 0;
|
|
|
var startPageY = 0;
|
|
|
var dragging = false;
|
|
|
var click = false;
|
|
|
moveElement.current.addEventListener('mousedown', onMouseDown);
|
|
|
document.addEventListener('mousemove', onMouseMove);
|
|
|
document.addEventListener('mouseup', onMouseUp);
|
|
|
return function () {
|
|
|
var _moveElement$current;
|
|
|
(_moveElement$current = moveElement.current) === null || _moveElement$current === void 0 || _moveElement$current.removeEventListener('mousedown', onMouseDown);
|
|
|
document.removeEventListener('mousemove', onMouseMove);
|
|
|
document.removeEventListener('mouseup', onMouseUp);
|
|
|
};
|
|
|
}
|
|
|
}, [moveElement.current]);
|
|
|
var onClose = function onClose() {
|
|
|
setOpen(false);
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
style: {
|
|
|
display: visible ? 'block' : 'none'
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(drawer/* default */.Z, {
|
|
|
title: "\u4EFB\u52A1\u63CF\u8FF0",
|
|
|
placement: "right",
|
|
|
onClose: onClose,
|
|
|
open: open,
|
|
|
children: desc
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: TpiDescIconmodules.arrowIcon,
|
|
|
onClick: function onClick() {
|
|
|
return setHide(false);
|
|
|
},
|
|
|
style: {
|
|
|
position: 'fixed',
|
|
|
display: hide ? 'block' : 'none',
|
|
|
zIndex: 1000,
|
|
|
bottom: 223
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
draggable: false,
|
|
|
src: arrow_namespaceObject,
|
|
|
alt: ""
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
ref: moveElement,
|
|
|
draggable: false,
|
|
|
className: TpiDescIconmodules.iconWrapper,
|
|
|
style: {
|
|
|
position: 'fixed',
|
|
|
display: hide ? 'none' : 'block',
|
|
|
zIndex: 1000,
|
|
|
bottom: 223,
|
|
|
right: 26,
|
|
|
borderRadius: '50%',
|
|
|
cursor: 'pointer'
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
ref: minusIconElement,
|
|
|
id: "minusIconElement",
|
|
|
onClick: function onClick() {
|
|
|
setOpen(false);
|
|
|
setHide(true);
|
|
|
},
|
|
|
className: "iconfont icon-yichu1 ".concat(TpiDescIconmodules.minusIcon)
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
draggable: false,
|
|
|
src: desc_namespaceObject
|
|
|
})]
|
|
|
})]
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var components_TpiDescIcon = (TpiDescIcon);
|
|
|
// EXTERNAL MODULE: ./src/components/tpi-code-setting/index.less
|
|
|
var tpi_code_setting = __webpack_require__(91853);
|
|
|
// EXTERNAL MODULE: ./src/components/tpi-code-setting/CodeSetting.tsx
|
|
|
var CodeSetting = __webpack_require__(984);
|
|
|
;// CONCATENATED MODULE: ./src/components/tpi-code-setting/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var components_tpi_code_setting = (function (_ref) {
|
|
|
var isTheoretical = _ref.isTheoretical,
|
|
|
onFontSizeChange = _ref.onFontSizeChange,
|
|
|
cmFontSize = _ref.cmFontSize,
|
|
|
cmCodeMode = _ref.cmCodeMode,
|
|
|
onCodeModeChange = _ref.onCodeModeChange,
|
|
|
tabToSpace = _ref.tabToSpace,
|
|
|
onTabToSpace = _ref.onTabToSpace,
|
|
|
shixun = _ref.shixun,
|
|
|
autoFormat = _ref.autoFormat,
|
|
|
onAutoFormat = _ref.onAutoFormat,
|
|
|
formatDocument = _ref.formatDocument;
|
|
|
var _ref2 = shixun !== null && shixun !== void 0 ? shixun : {},
|
|
|
_ref2$task_pass = _ref2.task_pass,
|
|
|
task_pass = _ref2$task_pass === void 0 ? false : _ref2$task_pass,
|
|
|
_ref2$forbid_copy = _ref2.forbid_copy,
|
|
|
forbid_copy = _ref2$forbid_copy === void 0 ? false : _ref2$forbid_copy,
|
|
|
_ref2$test_set_permis = _ref2.test_set_permission,
|
|
|
test_set_permission = _ref2$test_set_permis === void 0 ? false : _ref2$test_set_permis;
|
|
|
var opt = {
|
|
|
isTheoretical: isTheoretical,
|
|
|
onFontSizeChange: onFontSizeChange,
|
|
|
cmFontSize: cmFontSize,
|
|
|
cmCodeMode: cmCodeMode,
|
|
|
onCodeModeChange: onCodeModeChange,
|
|
|
tabToSpace: tabToSpace,
|
|
|
onTabToSpace: onTabToSpace,
|
|
|
autoFormat: autoFormat,
|
|
|
onAutoFormat: onAutoFormat,
|
|
|
formatDocument: formatDocument
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(CodeSetting/* default */.Z, objectSpread2_default()(objectSpread2_default()({}, opt), {}, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("h3", {
|
|
|
children: "\u5173\u5361\u914D\u7F6E\u4FE1\u606F"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("section", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
className: "file-item",
|
|
|
title: task_pass ? '允许学员跳关挑战' : '不允许学员跳关挑战',
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
children: "\u8DF3\u5173"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: task_pass ? '允许' : '不允许'
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
className: "file-item",
|
|
|
title: test_set_permission ? '允许学员通过金币解锁查看测试集内容' : '不允许学员通过金币解锁查看测试集内容',
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
children: "\u6D4B\u8BD5\u96C6\u89E3\u9501"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: test_set_permission ? '允许' : '不允许'
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
className: "file-item",
|
|
|
title: forbid_copy ? '不允许学员粘贴代码' : '允许学员粘贴代码',
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
children: "\u4EE3\u7801\u7C98\u8D34"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: !forbid_copy ? '允许' : '不允许'
|
|
|
})]
|
|
|
})]
|
|
|
})]
|
|
|
}));
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./src/utils/urlTool.ts
|
|
|
var urlTool = __webpack_require__(35567);
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/code-repository/HorizontalTabs/index.tsx + 1 modules
|
|
|
var HorizontalTabs = __webpack_require__(80283);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/choose-repository/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function choose_repository_reducer(state, action) {
|
|
|
switch (action.type) {
|
|
|
case constant/* EVAL_CHOOSE_START */.wj:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
loading: true
|
|
|
});
|
|
|
case constant/* EVAL_CHOOSE_END */.V1:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
loading: false
|
|
|
});
|
|
|
case constant/* SET_CHOOSE_ANSWERS */.OJ:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), action.payload);
|
|
|
case constant/* SET_EDITOR_THEME */.$Y:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
theme: action.payload
|
|
|
});
|
|
|
default:
|
|
|
throw new Error();
|
|
|
}
|
|
|
}
|
|
|
/* harmony default export */ var choose_repository = (function (_ref) {
|
|
|
var taskData = _ref.taskData,
|
|
|
moveY = _ref.moveY,
|
|
|
onResizeYStart = _ref.onResizeYStart,
|
|
|
onResizeSetContainer = _ref.onResizeSetContainer,
|
|
|
onEval = _ref.onEval,
|
|
|
lastedGetTaskInfoTime = _ref.lastedGetTaskInfoTime,
|
|
|
onUpdateCode = _ref.onUpdateCode,
|
|
|
_dispatch = _ref._dispatch;
|
|
|
var location = (0,_umi_production_exports.useLocation)();
|
|
|
var _useSearchParams = (0,_umi_production_exports.useSearchParams)(),
|
|
|
_useSearchParams2 = slicedToArray_default()(_useSearchParams, 1),
|
|
|
searchParams = _useSearchParams2[0];
|
|
|
var urlParams = (0,_umi_production_exports.useParams)();
|
|
|
var chooses = taskData.chooses,
|
|
|
choose_test_cases = taskData.choose_test_cases,
|
|
|
game = taskData.game;
|
|
|
var test_sets = choose_test_cases.test_sets,
|
|
|
challenge_chooses_count = choose_test_cases.challenge_chooses_count,
|
|
|
choose_correct_num = choose_test_cases.choose_correct_num,
|
|
|
had_submmit = choose_test_cases.had_submmit;
|
|
|
var getAns = (0,_react_17_0_2_react.useCallback)(function () {
|
|
|
var rs = [];
|
|
|
rs.length = challenge_chooses_count;
|
|
|
if (had_submmit) {
|
|
|
rs = test_sets.map(function (item) {
|
|
|
if (item.question_name === '判断题') {
|
|
|
return item.actual_output === '正确' ? 'true' : item.actual_output === '错误' ? 'false' : undefined;
|
|
|
}
|
|
|
return item.actual_output;
|
|
|
});
|
|
|
}
|
|
|
return rs;
|
|
|
}, [lastedGetTaskInfoTime]);
|
|
|
var _useReducer = (0,_react_17_0_2_react.useReducer)(choose_repository_reducer, {
|
|
|
loading: false,
|
|
|
answers: getAns(),
|
|
|
theme: (0,urlTool/* fromStore */.G)('cmCodeMode', 'vs-dark')
|
|
|
}),
|
|
|
_useReducer2 = slicedToArray_default()(_useReducer, 2),
|
|
|
state = _useReducer2[0],
|
|
|
dispatch = _useReducer2[1];
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
dispatch({
|
|
|
type: constant/* SET_CHOOSE_ANSWERS */.OJ,
|
|
|
payload: {
|
|
|
answers: getAns()
|
|
|
}
|
|
|
});
|
|
|
}, [lastedGetTaskInfoTime]);
|
|
|
var answers = state.answers,
|
|
|
loading = state.loading;
|
|
|
function onSetAnswers(index, value) {
|
|
|
answers[index] = value;
|
|
|
dispatch({
|
|
|
type: constant/* SET_CHOOSE_ANSWERS */.OJ,
|
|
|
payload: {
|
|
|
answers: answers
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
function verifyAnswer() {
|
|
|
var isOk = true;
|
|
|
for (var i = 0; i < challenge_chooses_count; i++) {
|
|
|
var _answers$i;
|
|
|
if (!answers[i] || Array.isArray(answers[i]) && !((_answers$i = answers[i]) !== null && _answers$i !== void 0 && (_answers$i = _answers$i.filter(function (e) {
|
|
|
return !!e;
|
|
|
})) !== null && _answers$i !== void 0 && _answers$i.length)) {
|
|
|
message/* default */.ZP.info("\u8BF7\u5148\u7ED9\u7B2C".concat(i + 1, "\u9898\u9009\u62E9\u7B54\u6848\uFF01"));
|
|
|
isOk = false;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
return isOk;
|
|
|
}
|
|
|
function onRun() {
|
|
|
return _onRun.apply(this, arguments);
|
|
|
}
|
|
|
function _onRun() {
|
|
|
_onRun = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var _taskData$challenge, extraParams, ip, response;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
if (!verifyAnswer()) {
|
|
|
_context.next = 12;
|
|
|
break;
|
|
|
}
|
|
|
dispatch({
|
|
|
type: constant/* EVAL_CHOOSE_START */.wj
|
|
|
});
|
|
|
extraParams = urlParams.courseId && urlParams.homeworkId ? {
|
|
|
homework_common_id: urlParams.homeworkId
|
|
|
} : {};
|
|
|
if (!(searchParams.get("ip_limit") === 'inner' || searchParams.get("ip_bind") === "true")) {
|
|
|
_context.next = 7;
|
|
|
break;
|
|
|
}
|
|
|
_context.next = 6;
|
|
|
return (0,Exercise_ip/* findLocalIp */.y)({
|
|
|
ip_limit: searchParams.get("ip_limit"),
|
|
|
ip_bind: searchParams.get("ip_bind") === "true" ? true : false
|
|
|
});
|
|
|
case 6:
|
|
|
ip = _context.sent;
|
|
|
case 7:
|
|
|
_context.next = 9;
|
|
|
return (0,service/* evalateChooseGame */.zl)(game.identifier, objectSpread2_default()({
|
|
|
answer: answers,
|
|
|
challenge_id: taskData === null || taskData === void 0 || (_taskData$challenge = taskData.challenge) === null || _taskData$challenge === void 0 ? void 0 : _taskData$challenge.id,
|
|
|
subject_id: searchParams.get("subject_id") || '',
|
|
|
question_id: searchParams.get("questionId"),
|
|
|
exercise_id: searchParams.get("exercisesId"),
|
|
|
competition_entry_id: searchParams.get("competition_entry_id"),
|
|
|
ip: ip
|
|
|
}, extraParams));
|
|
|
case 9:
|
|
|
response = _context.sent;
|
|
|
onEval(response);
|
|
|
dispatch({
|
|
|
type: constant/* EVAL_CHOOSE_END */.V1
|
|
|
});
|
|
|
case 12:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return _onRun.apply(this, arguments);
|
|
|
}
|
|
|
var codeAreaHeight = moveY ? "".concat(moveY - 54, "px") : '70%';
|
|
|
var testSetHeight = "calc(100% - 3px - 51px - ".concat(codeAreaHeight, ")");
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
isResizeLarge = _useState2[0],
|
|
|
setIsResizeLarge = _useState2[1];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
showEditorSetting = _useState4[0],
|
|
|
setShowEditorSetting = _useState4[1];
|
|
|
var tpiCodeSettingOption = {
|
|
|
isTheoretical: true,
|
|
|
//理论题仅展示显示模式
|
|
|
cmCodeMode: state.theme,
|
|
|
onCodeModeChange: function onCodeModeChange(value) {
|
|
|
dispatch({
|
|
|
type: constant/* SET_EDITOR_THEME */.$Y,
|
|
|
payload: value
|
|
|
});
|
|
|
(0,urlTool/* toStore */.t)('cmCodeMode', value);
|
|
|
}
|
|
|
};
|
|
|
var actionBarOption = {
|
|
|
isResizeLarge: isResizeLarge,
|
|
|
onRightFullHandler: onRightFullHandler,
|
|
|
onShowCodeSetting: onShowCodeSetting,
|
|
|
allBreakPointValue: {},
|
|
|
tab_type: 1,
|
|
|
code_hidden: true,
|
|
|
isTheoretical: true
|
|
|
};
|
|
|
function onRightFullHandler() {
|
|
|
setIsResizeLarge(!isResizeLarge);
|
|
|
if ((0,fullscreen/* IsFull */.vp)()) {
|
|
|
(0,fullscreen/* exitFull */.BU)();
|
|
|
} else {
|
|
|
(0,fullscreen/* requestFullScreen */.Dj)(document.body);
|
|
|
}
|
|
|
}
|
|
|
function onShowCodeSetting() {
|
|
|
setShowEditorSetting(!showEditorSetting);
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(_react_17_0_2_react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: choose_repositorymodules['code-area-container'],
|
|
|
style: {
|
|
|
height: codeAreaHeight
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
align: "middle",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
style: {
|
|
|
color: "#8b9399",
|
|
|
paddingLeft: '20px',
|
|
|
fontSize: "16px"
|
|
|
},
|
|
|
children: "\u9898\u76EE"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(HorizontalTabs/* default */.Z, {}), /*#__PURE__*/(0,jsx_runtime.jsx)(action_bar, objectSpread2_default()({}, actionBarOption))]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(topics, {
|
|
|
chooses: chooses,
|
|
|
answers: answers,
|
|
|
onSetAnswers: onSetAnswers,
|
|
|
bgColor: state.theme === 'vs-dark' ? '#1E1E1E' : "#fff"
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: choose_repositorymodules['resize-y-bar'],
|
|
|
onMouseDown: onResizeYStart,
|
|
|
draggable: false,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-guangbiao",
|
|
|
draggable: false
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: choose_repositorymodules['test-set-container'],
|
|
|
style: {
|
|
|
height: testSetHeight
|
|
|
},
|
|
|
children: loading ? /*#__PURE__*/(0,jsx_runtime.jsx)(Spinner/* default */.Z, {}) : /*#__PURE__*/(0,jsx_runtime.jsx)(test_cast_list, {
|
|
|
had_submmit: had_submmit,
|
|
|
moveY: moveY,
|
|
|
onResizeSetContainer: onResizeSetContainer,
|
|
|
test_sets: test_sets,
|
|
|
challenge_chooses_count: challenge_chooses_count,
|
|
|
choose_correct_num: choose_correct_num
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: choose_repositorymodules['action-container'],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(footer_bar, objectSpread2_default()(objectSpread2_default()({
|
|
|
onUpdateCode: onUpdateCode
|
|
|
}, taskData), {}, {
|
|
|
loading: loading,
|
|
|
onRun: onRun,
|
|
|
dispatch: _dispatch
|
|
|
}))
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(drawer/* default */.Z, {
|
|
|
rootClassName: choose_repositorymodules['setting-drawer'],
|
|
|
title: null,
|
|
|
placement: "right",
|
|
|
closable: false,
|
|
|
open: showEditorSetting,
|
|
|
onClose: function onClose() {
|
|
|
return setShowEditorSetting(false);
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(components_tpi_code_setting, objectSpread2_default()({}, tpiCodeSettingOption))
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(components_TpiDescIcon, {
|
|
|
desc: /*#__PURE__*/(0,jsx_runtime.jsx)(RenderHtml/* default */.Z, {
|
|
|
value: taskData === null || taskData === void 0 ? void 0 : taskData.challenge.task_pass
|
|
|
}),
|
|
|
visible: isResizeLarge
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/assets/images/massage.png
|
|
|
var massage_namespaceObject = "data:image/png;base64,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";
|
|
|
;// CONCATENATED MODULE: ./src/components/MessageIcon/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var MessageIcon = function MessageIcon(_ref) {
|
|
|
var userId = _ref.userId,
|
|
|
challengeId = _ref.challengeId;
|
|
|
var _useState = useState(true),
|
|
|
_useState2 = _slicedToArray(_useState, 2),
|
|
|
tooltipOpen = _useState2[0],
|
|
|
setTooltipOpen = _useState2[1];
|
|
|
var moveElement = useRef();
|
|
|
useEffect(function () {
|
|
|
if (moveElement.current) {
|
|
|
var onMouseDown = function onMouseDown(e) {
|
|
|
setTooltipOpen(false);
|
|
|
pointerEvents('none');
|
|
|
var box = moveElement.current.getBoundingClientRect();
|
|
|
startLeft = box.left;
|
|
|
startTop = box.top;
|
|
|
startPageX = e.pageX;
|
|
|
startPageY = e.pageY;
|
|
|
dragging = true;
|
|
|
click = true;
|
|
|
document.onselectstart = function () {
|
|
|
return false;
|
|
|
};
|
|
|
};
|
|
|
var onMouseUp = function onMouseUp() {
|
|
|
dragging = false;
|
|
|
document.onselectstart = null;
|
|
|
pointerEvents('auto');
|
|
|
if (click) {
|
|
|
click = false;
|
|
|
openNewWindow("/chatgpt?id=".concat(userId, "&position=").concat(challengeId));
|
|
|
}
|
|
|
};
|
|
|
var onMouseMove = function onMouseMove(e) {
|
|
|
if (dragging) {
|
|
|
click = false;
|
|
|
var spareWidth = e.pageX - startPageX;
|
|
|
var spareHeight = e.pageY - startPageY;
|
|
|
moveElement.current.style.left = "".concat(startLeft + spareWidth, "px");
|
|
|
moveElement.current.style.top = "".concat(startTop + spareHeight, "px");
|
|
|
}
|
|
|
};
|
|
|
console.log(moveElement.current);
|
|
|
var startLeft = 0;
|
|
|
var startTop = 0;
|
|
|
var startPageX = 0;
|
|
|
var startPageY = 0;
|
|
|
var dragging = false;
|
|
|
var click = false;
|
|
|
moveElement.current.addEventListener('mousedown', onMouseDown);
|
|
|
document.addEventListener('mousemove', onMouseMove);
|
|
|
document.addEventListener('mouseup', onMouseUp);
|
|
|
return function () {
|
|
|
var _moveElement$current;
|
|
|
(_moveElement$current = moveElement.current) === null || _moveElement$current === void 0 || _moveElement$current.removeEventListener('mousedown', onMouseDown);
|
|
|
document.removeEventListener('mousemove', onMouseMove);
|
|
|
document.removeEventListener('mouseup', onMouseUp);
|
|
|
};
|
|
|
}
|
|
|
}, [moveElement.current]);
|
|
|
useEffect(function () {
|
|
|
setTimeout(function () {
|
|
|
setTooltipOpen(false);
|
|
|
}, 5000);
|
|
|
}, []);
|
|
|
return /*#__PURE__*/_jsx(Tooltip, {
|
|
|
open: tooltipOpen,
|
|
|
placement: "topRight",
|
|
|
title: "\u5B66\u4E60\u4E2D\u6709\u7591\u95EE\u53EF\u4EE5\u70B9\u51FB\u8FD9\u91CC\u5411\u6559\u5E08\u8BF7\u6C42\u5E2E\u52A9",
|
|
|
children: /*#__PURE__*/_jsx("div", {
|
|
|
ref: moveElement,
|
|
|
draggable: false,
|
|
|
style: {
|
|
|
width: 54,
|
|
|
height: 54,
|
|
|
position: "fixed",
|
|
|
zIndex: 1000,
|
|
|
bottom: 223,
|
|
|
right: 26,
|
|
|
borderRadius: '50%',
|
|
|
cursor: 'pointer',
|
|
|
overflow: 'hidden'
|
|
|
},
|
|
|
children: /*#__PURE__*/_jsx("img", {
|
|
|
draggable: false,
|
|
|
src: Massage,
|
|
|
width: 54
|
|
|
})
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var components_MessageIcon = ((/* unused pure expression or super */ null && (MessageIcon)));
|
|
|
// EXTERNAL MODULE: ./src/pages/Demo/index.tsx + 15 modules
|
|
|
var Demo = __webpack_require__(27085);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/evaluate-result/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/evaluate-result/passpart.png
|
|
|
var passpart_namespaceObject = "data:image/png;base64,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";
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/evaluate-result/passall.png
|
|
|
var passall_namespaceObject = "data:image/png;base64,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";
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/evaluate-result/empiricgreen.png
|
|
|
var empiricgreen_namespaceObject = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAASCAYAAABSO15qAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjNEMUNCRTZCNDE1MzExRThBREM4QUVGRUEwQjY3M0FFIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjNEMUNCRTZDNDE1MzExRThBREM4QUVGRUEwQjY3M0FFIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6M0QxQ0JFNjk0MTUzMTFFOEFEQzhBRUZFQTBCNjczQUUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6M0QxQ0JFNkE0MTUzMTFFOEFEQzhBRUZFQTBCNjczQUUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6xcnMrAAABN0lEQVR42qzTsUtCURTH8fskisZoa4ogcGhpcYuW+gsk+icyGiyEoNVB0i3EWYJwaG2Koj+gBiEqqIasRQlCHCJ8fU+cB4fLldS68BHO755zeQ/vi7L3q4vOuRMsu9HWNTZT/NTHGHY6U5cDMm78lUm5P65/OaDtZXsoB3or2PWythxQ9cInFHBrsjvNHr3eqhxQxIsJS5jAlsl29GlLJpOZooQ979HmsY9zHOMUZ8hjwfTJTC/iIkkR4RIruvmJJXQxhVhfaVr3ryCDcfIvSMM2+lpP4ghveMahGe5rb+z/jTeomXoNG1hH1uQ17f1ZySskaxYPmNH6FR9Ia/0O+XY6gy6SbByYes4MO93r/HYT5V40A3kzcGeCB3whF8hzujfUt3CBhqkbmo30McnFaan8oKZvAQYAarBDzHlRpVIAAAAASUVORK5CYII=";
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/evaluate-result/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//showViewResult 当游戏类型是显示描绘图片或web显示效果 并且编译通过时,增加查看效果
|
|
|
|
|
|
|
|
|
/* harmony default export */ var evaluate_result = (function (_ref) {
|
|
|
var star = _ref.star,
|
|
|
gold = _ref.gold,
|
|
|
experience = _ref.experience,
|
|
|
next_game = _ref.next_game,
|
|
|
next_shixun = _ref.next_shixun,
|
|
|
subject_done = _ref.subject_done,
|
|
|
onCloseResult = _ref.onCloseResult,
|
|
|
isPictureView = _ref.isPictureView,
|
|
|
webDisplayUrl = _ref.webDisplayUrl,
|
|
|
onShowPictureView = _ref.onShowPictureView,
|
|
|
history = _ref.history,
|
|
|
onStarChange = _ref.onStarChange;
|
|
|
var _useSearchParams = (0,_umi_production_exports.useSearchParams)(),
|
|
|
_useSearchParams2 = slicedToArray_default()(_useSearchParams, 1),
|
|
|
searchParams = _useSearchParams2[0];
|
|
|
var params = (0,_umi_production_exports.useParams)();
|
|
|
function onNext() {
|
|
|
onCloseResult();
|
|
|
console.log('`/tasks/${next_game}${location.search}`', "/tasks/".concat(next_game).concat(location.search));
|
|
|
// history.push(`/tasks/${next_game}${location.search}`);
|
|
|
if (params.courseId && params.homeworkId) {
|
|
|
setTimeout(function () {
|
|
|
window.location.href = "/tasks/".concat(params.courseId, "/").concat(params.homeworkId, "/").concat(next_game).concat(location.search);
|
|
|
}, 300);
|
|
|
return;
|
|
|
}
|
|
|
setTimeout(function () {
|
|
|
window.location.href = "/tasks/".concat(next_game).concat(location.search);
|
|
|
}, 300);
|
|
|
}
|
|
|
var location = (0,_umi_production_exports.useLocation)();
|
|
|
// console.log('---------', had_done);
|
|
|
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "evaluate-result-container",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "evaluate-result-body",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
className: "close-line",
|
|
|
onClick: onCloseResult,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-roundclose",
|
|
|
style: {
|
|
|
fontSize: '32px',
|
|
|
cursor: 'pointer'
|
|
|
}
|
|
|
})
|
|
|
}), !searchParams.get("subject_id") && /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
width: 652,
|
|
|
src: next_game || !subject_done ? passpart_namespaceObject : passall_namespaceObject,
|
|
|
alt: "\u901A\u5173"
|
|
|
}), searchParams.get("subject_id") && /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
width: 652,
|
|
|
src: subject_done ? passall_namespaceObject : passpart_namespaceObject,
|
|
|
alt: "\u901A\u5173"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "gold-and-experience",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
className: "flex-container",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "gold-circle"
|
|
|
}), " +", gold]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
className: "flex-container",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: empiricgreen_namespaceObject
|
|
|
}), " +", experience]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("footer", {
|
|
|
children: [!star ? /*#__PURE__*/(0,jsx_runtime.jsxs)(_react_17_0_2_react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
className: "star-tip",
|
|
|
children: "\u60A8\u7684\u8BC4\u4EF7\u51B3\u5B9A\u8001\u5E08\u7684\u6C5F\u6E56\u5730\u4F4D~"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(rate/* default */.Z, {
|
|
|
className: "star-tip-rate",
|
|
|
defaultValue: 0,
|
|
|
allowClear: false,
|
|
|
onChange: onStarChange
|
|
|
})]
|
|
|
}) : null, /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "tc",
|
|
|
children: [next_game ? /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: onNext,
|
|
|
style: {
|
|
|
cursor: "pointer"
|
|
|
},
|
|
|
children: "\u4E0B\u4E00\u5173"
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: onCloseResult,
|
|
|
style: {
|
|
|
cursor: "pointer"
|
|
|
},
|
|
|
children: "\u5B8C\u6210"
|
|
|
}), !!next_shixun && /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: function onClick() {
|
|
|
toShixun(next_shixun, null, false, searchParams.get("subject_id"));
|
|
|
},
|
|
|
children: "\u8FDB\u5165\u4E0B\u4E00\u4E2A\u5B9E\u8BAD"
|
|
|
}), isPictureView ? /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: function onClick() {
|
|
|
onShowPictureView();
|
|
|
onCloseResult();
|
|
|
},
|
|
|
children: "\u67E5\u770B\u6548\u679C"
|
|
|
}) : null, webDisplayUrl ? /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
target: "_blank",
|
|
|
href: webDisplayUrl,
|
|
|
children: "\u67E5\u770B\u6548\u679C"
|
|
|
}) : null]
|
|
|
}), searchParams.get("subject_id") && /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "tc mt15",
|
|
|
children: [next_shixun && !next_game && "已通过本实训的最后一个关卡,可以进入下一个实训中进行实战", subject_done && "恭喜您,本实践课程的最后一个实训已通关"]
|
|
|
})]
|
|
|
})]
|
|
|
})
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/notification/index.js + 5 modules
|
|
|
var notification = __webpack_require__(28909);
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/xterm-panel/index.jsx + 1 modules
|
|
|
var xterm_panel = __webpack_require__(69497);
|
|
|
// EXTERNAL MODULE: ./src/components/PreviewAll/index.tsx + 1 modules
|
|
|
var PreviewAll = __webpack_require__(22775);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/code-area/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var code_areamodules = ({"code-area-container":"code-area-container___bjERn","only-view":"only-view___LP5ZN","frame":"frame___k7Y9h"});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/code-area/notEditablePath.png
|
|
|
var notEditablePath_namespaceObject = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIsAAABuCAYAAAAXkODOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjY4Qjc0NjM3NTI4RTExRThBQTE0QjdDODQ4MEFBMzdGIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjY4Qjc0NjM4NTI4RTExRThBQTE0QjdDODQ4MEFBMzdGIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NjhCNzQ2MzU1MjhFMTFFOEFBMTRCN0M4NDgwQUEzN0YiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NjhCNzQ2MzY1MjhFMTFFOEFBMTRCN0M4NDgwQUEzN0YiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6LemY3AAAa7klEQVR42uxd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";
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/spin/index.js + 1 modules
|
|
|
var spin = __webpack_require__(71418);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/code-area/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var code_area = (function (_ref) {
|
|
|
var content = _ref.content,
|
|
|
language = _ref.language,
|
|
|
theme = _ref.theme,
|
|
|
onCodeChange = _ref.onCodeChange,
|
|
|
onSave = _ref.onSave,
|
|
|
monacoOptions = _ref.monacoOptions,
|
|
|
isEditPath = _ref.isEditPath,
|
|
|
currentPath = _ref.currentPath,
|
|
|
code_edit_permission = _ref.code_edit_permission,
|
|
|
onUpdateCode = _ref.onUpdateCode,
|
|
|
forbidCopy = _ref.forbidCopy,
|
|
|
filename = _ref.filename,
|
|
|
file_type = _ref.file_type,
|
|
|
taskData = _ref.taskData,
|
|
|
itemData = _ref.itemData,
|
|
|
codeLoading = _ref.codeLoading,
|
|
|
breakPointValue = _ref.breakPointValue,
|
|
|
setBreakPointValue = _ref.setBreakPointValue,
|
|
|
highlightLine = _ref.highlightLine,
|
|
|
openBreakPoint = _ref.openBreakPoint,
|
|
|
startDebug = _ref.startDebug,
|
|
|
unique = _ref.unique,
|
|
|
allBreakPointValue = _ref.allBreakPointValue,
|
|
|
setAllBreakPointValue = _ref.setAllBreakPointValue;
|
|
|
var params = (0,_umi_production_exports.useParams)();
|
|
|
var timeRef = (0,_react_17_0_2_react.useRef)();
|
|
|
var saveData = (0,_react_17_0_2_react.useRef)({
|
|
|
unique: unique,
|
|
|
breakPointValue: breakPointValue,
|
|
|
currentPath: currentPath,
|
|
|
startDebug: startDebug,
|
|
|
allBreakPointValue: allBreakPointValue
|
|
|
});
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(true),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
loading = _useState2[0],
|
|
|
setLoading = _useState2[1];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)('正在加载中'),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
loadingText = _useState4[0],
|
|
|
setLoadingText = _useState4[1];
|
|
|
var _useState5 = (0,_react_17_0_2_react.useState)({}),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
data = _useState6[0],
|
|
|
setData = _useState6[1];
|
|
|
console.log('content:', {
|
|
|
value: content,
|
|
|
language: language,
|
|
|
theme: theme,
|
|
|
onChange: onCodeChange,
|
|
|
onSave: onSave,
|
|
|
forbidCopy: forbidCopy,
|
|
|
options: monacoOptions,
|
|
|
filename: filename,
|
|
|
file_type: file_type
|
|
|
});
|
|
|
var tab_type = itemData.tab_type,
|
|
|
shixun_environment_id = itemData.shixun_environment_id,
|
|
|
index_tab = itemData.index_tab;
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
saveData.current.unique = unique;
|
|
|
saveData.current.breakPointValue = breakPointValue;
|
|
|
saveData.current.currentPath = currentPath;
|
|
|
saveData.current.startDebug = startDebug;
|
|
|
saveData.current.allBreakPointValue = allBreakPointValue;
|
|
|
}, [unique, breakPointValue, currentPath, startDebug, allBreakPointValue]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (startDebug) {
|
|
|
setBreakPointValue([]);
|
|
|
getDebugInfo();
|
|
|
} else if (openBreakPoint) {
|
|
|
setBreakPointValue((allBreakPointValue === null || allBreakPointValue === void 0 ? void 0 : allBreakPointValue[currentPath]) || []);
|
|
|
}
|
|
|
}, [currentPath]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
window.addEventListener('message', messageData);
|
|
|
var unSub1 = mediator/* default */.Z.subscribe('vnc-reseting', vncReset);
|
|
|
var unSub2 = mediator/* default */.Z.subscribe('vnc-reseting-done', vncResetDone);
|
|
|
return function () {
|
|
|
unSub1();
|
|
|
unSub2();
|
|
|
window.removeEventListener('message', messageData);
|
|
|
};
|
|
|
}, []);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (tab_type === 1) {
|
|
|
clearInterval(timeRef.current);
|
|
|
timeRef.current = setInterval(function () {
|
|
|
onUpdateCode();
|
|
|
}, 1 * 60 * 1000);
|
|
|
return function () {
|
|
|
clearInterval(timeRef.current);
|
|
|
};
|
|
|
}
|
|
|
});
|
|
|
var getDebugInfo = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var _taskData$myshixun;
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
if (saveData.current.unique) {
|
|
|
_context.next = 2;
|
|
|
break;
|
|
|
}
|
|
|
return _context.abrupt("return");
|
|
|
case 2:
|
|
|
_context.next = 4;
|
|
|
return (0,utils_fetch/* default */.ZP)("/api/myshixuns/".concat((_taskData$myshixun = taskData.myshixun) === null || _taskData$myshixun === void 0 ? void 0 : _taskData$myshixun.identifier, "/code_debugs/current_info.json"), {
|
|
|
method: 'post',
|
|
|
body: {
|
|
|
unique: saveData.current.unique
|
|
|
}
|
|
|
});
|
|
|
case 4:
|
|
|
res = _context.sent;
|
|
|
if ((res === null || res === void 0 ? void 0 : res.status) === 0) {
|
|
|
mediator/* default */.Z.publish('active-debug-data', (res === null || res === void 0 ? void 0 : res.data) || {});
|
|
|
}
|
|
|
case 6:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function getDebugInfo() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var vncReset = function vncReset() {
|
|
|
setData({});
|
|
|
setLoadingText('正在重置中');
|
|
|
setLoading(true);
|
|
|
};
|
|
|
var vncResetDone = function vncResetDone(res) {
|
|
|
setData(res === null || res === void 0 ? void 0 : res.data);
|
|
|
setLoading(false);
|
|
|
};
|
|
|
var messageData = function messageData(data) {
|
|
|
switch (data.data) {
|
|
|
case 'updatecode':
|
|
|
// onUpdateCode(1);
|
|
|
break;
|
|
|
case 'vsLoadingDone':
|
|
|
setLoading(false);
|
|
|
break;
|
|
|
}
|
|
|
};
|
|
|
var getWindowVnc = /*#__PURE__*/function () {
|
|
|
var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee4() {
|
|
|
var _taskData$myshixun2, _res$data;
|
|
|
var res, _res$data2, _res$data3;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee4$(_context4) {
|
|
|
while (1) switch (_context4.prev = _context4.next) {
|
|
|
case 0:
|
|
|
_context4.next = 2;
|
|
|
return (0,service/* startInit */.sA)((_taskData$myshixun2 = taskData.myshixun) === null || _taskData$myshixun2 === void 0 ? void 0 : _taskData$myshixun2.identifier, {
|
|
|
shixun_environment_id: shixun_environment_id,
|
|
|
tab_type: tab_type
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context4.sent;
|
|
|
if (!(res !== null && res !== void 0 && (_res$data = res.data) !== null && _res$data !== void 0 && (_res$data = _res$data.data_list) !== null && _res$data !== void 0 && _res$data.length)) {
|
|
|
_context4.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
mediator/* default */.Z.publish('pod-restrict-data', {
|
|
|
identifier: res === null || res === void 0 || (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.identifier,
|
|
|
data_list: res === null || res === void 0 || (_res$data3 = res.data) === null || _res$data3 === void 0 ? void 0 : _res$data3.data_list
|
|
|
});
|
|
|
return _context4.abrupt("return");
|
|
|
case 6:
|
|
|
if (!((res === null || res === void 0 ? void 0 : res.status) === -3)) {
|
|
|
_context4.next = 8;
|
|
|
break;
|
|
|
}
|
|
|
return _context4.abrupt("return", new Promise( /*#__PURE__*/function () {
|
|
|
var _ref4 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3(resolve, reject) {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
es_modal/* default */.Z.confirm({
|
|
|
content: '检测到您已经开启了其他实验环境,请先关闭环境后,再连接',
|
|
|
okText: '立即关闭',
|
|
|
cancelText: '稍后关闭',
|
|
|
onOk: function () {
|
|
|
var _onOk = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
clearTimeout(timeout.current);
|
|
|
setPercent(0);
|
|
|
_context2.next = 4;
|
|
|
return closeWindowsVnc(params.taskId, res === null || res === void 0 ? void 0 : res.message);
|
|
|
case 4:
|
|
|
setLinkNum(linkNum + 1);
|
|
|
return _context2.abrupt("return");
|
|
|
case 6:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
function onOk() {
|
|
|
return _onOk.apply(this, arguments);
|
|
|
}
|
|
|
return onOk;
|
|
|
}()
|
|
|
});
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
}));
|
|
|
return function (_x, _x2) {
|
|
|
return _ref4.apply(this, arguments);
|
|
|
};
|
|
|
}()));
|
|
|
case 8:
|
|
|
if (!((res === null || res === void 0 ? void 0 : res.status) === -1)) {
|
|
|
_context4.next = 10;
|
|
|
break;
|
|
|
}
|
|
|
throw new String(res === null || res === void 0 ? void 0 : res.message);
|
|
|
case 10:
|
|
|
if (!((res === null || res === void 0 ? void 0 : res.status) === 0)) {
|
|
|
_context4.next = 15;
|
|
|
break;
|
|
|
}
|
|
|
setData(res === null || res === void 0 ? void 0 : res.data);
|
|
|
mediator/* default */.Z.publish('send-tabs-result-data', objectSpread2_default()(objectSpread2_default()({}, res === null || res === void 0 ? void 0 : res.data), {}, {
|
|
|
index_tab: index_tab
|
|
|
}));
|
|
|
mediator/* default */.Z.publish('update-windows-time', res === null || res === void 0 ? void 0 : res.data);
|
|
|
return _context4.abrupt("return", res);
|
|
|
case 15:
|
|
|
case "end":
|
|
|
return _context4.stop();
|
|
|
}
|
|
|
}, _callee4);
|
|
|
}));
|
|
|
return function getWindowVnc() {
|
|
|
return _ref3.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (tab_type === 2) getWindowVnc();
|
|
|
}, [tab_type]);
|
|
|
var handleBreakPointValue = /*#__PURE__*/function () {
|
|
|
var _ref5 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee5() {
|
|
|
var k,
|
|
|
_taskData$myshixun3,
|
|
|
_xor,
|
|
|
res,
|
|
|
_res$data4,
|
|
|
_args5 = arguments;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee5$(_context5) {
|
|
|
while (1) switch (_context5.prev = _context5.next) {
|
|
|
case 0:
|
|
|
k = _args5.length > 0 && _args5[0] !== undefined ? _args5[0] : [];
|
|
|
if (!saveData.current.startDebug) {
|
|
|
_context5.next = 8;
|
|
|
break;
|
|
|
}
|
|
|
_context5.next = 4;
|
|
|
return (0,utils_fetch/* default */.ZP)("/api/myshixuns/".concat((_taskData$myshixun3 = taskData.myshixun) === null || _taskData$myshixun3 === void 0 ? void 0 : _taskData$myshixun3.identifier, "/code_debugs/set_break_point.json"), {
|
|
|
method: 'post',
|
|
|
body: {
|
|
|
file_name: saveData.current.currentPath,
|
|
|
line_number: (_xor = (0,lodash.xor)(saveData.current.breakPointValue, k)) === null || _xor === void 0 ? void 0 : _xor[0],
|
|
|
type: k.length > saveData.current.breakPointValue.length ? 1 : 0,
|
|
|
unique: saveData.current.unique
|
|
|
}
|
|
|
});
|
|
|
case 4:
|
|
|
res = _context5.sent;
|
|
|
if ((res === null || res === void 0 ? void 0 : res.status) === 0) {
|
|
|
setAllBreakPointValue(objectSpread2_default()(objectSpread2_default()({}, saveData.current.allBreakPointValue), {}, defineProperty_default()({}, saveData.current.currentPath, (res === null || res === void 0 || (_res$data4 = res.data) === null || _res$data4 === void 0 || (_res$data4 = _res$data4.breakpoints) === null || _res$data4 === void 0 ? void 0 : _res$data4[saveData.current.currentPath]) || [])));
|
|
|
mediator/* default */.Z.publish('active-debug-data', (res === null || res === void 0 ? void 0 : res.data) || {});
|
|
|
}
|
|
|
_context5.next = 10;
|
|
|
break;
|
|
|
case 8:
|
|
|
setAllBreakPointValue(objectSpread2_default()(objectSpread2_default()({}, saveData.current.allBreakPointValue), {}, defineProperty_default()({}, saveData.current.currentPath, k)));
|
|
|
setBreakPointValue(k);
|
|
|
case 10:
|
|
|
case "end":
|
|
|
return _context5.stop();
|
|
|
}
|
|
|
}, _callee5);
|
|
|
}));
|
|
|
return function handleBreakPointValue() {
|
|
|
return _ref5.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(_react_17_0_2_react.Fragment, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: code_areamodules['code-area-container'],
|
|
|
children: [tab_type == 1 && /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [isEditPath || code_edit_permission ? null : /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
className: code_areamodules['only-view'],
|
|
|
src: notEditablePath_namespaceObject,
|
|
|
alt: "only-view"
|
|
|
}), codeLoading ? /*#__PURE__*/(0,jsx_runtime.jsx)(Spinner/* default */.Z, {
|
|
|
message: "\u6B63\u5728\u52A0\u8F7D\u4EE3\u7801",
|
|
|
style: {
|
|
|
color: '#0152d9'
|
|
|
}
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)(PreviewAll/* default */.Z, {
|
|
|
filename: filename,
|
|
|
type: file_type === 'office' ? 'download' : file_type,
|
|
|
data: content,
|
|
|
style: {
|
|
|
position: 'absolute',
|
|
|
zIndex: 1
|
|
|
},
|
|
|
monacoEditor: {
|
|
|
value: content,
|
|
|
language: language,
|
|
|
theme: theme,
|
|
|
onChange: onCodeChange,
|
|
|
onSave: onSave,
|
|
|
forbidCopy: forbidCopy,
|
|
|
options: objectSpread2_default()(objectSpread2_default()({}, monacoOptions), {}, {
|
|
|
fixedOverflowWidgets: true
|
|
|
}),
|
|
|
insertSpaces: monacoOptions.insertSpaces,
|
|
|
breakPointValue: breakPointValue,
|
|
|
highlightLine: highlightLine,
|
|
|
openBreakPoint: openBreakPoint,
|
|
|
onBreakPoint: handleBreakPointValue
|
|
|
}
|
|
|
})]
|
|
|
}), tab_type === 2 && /*#__PURE__*/(0,jsx_runtime.jsx)(spin/* default */.Z, {
|
|
|
spinning: loading,
|
|
|
tip: loadingText,
|
|
|
wrapperClassName: code_areamodules.frame,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("iframe", {
|
|
|
src: data === null || data === void 0 ? void 0 : data.link_url
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/choose-repository/test-cast-list/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var test_cast_listmodules = ({"choose-game-item":"choose-game-item___RYHdh","output-title-container":"output-title-container___P2NjC","output-title":"output-title___ZQJkv","test-case-list":"test-case-list___CYyHP","test-header":"test-header___fSQRn","active":"active___bY0Dq","active-debug":"active-debug___oeXMX","test-result":"test-result___DQXYd","markdown-body":"markdown-body____rqU_","success":"success___iuAG3","failer":"failer___axTtk","count":"count___B_kHY","test-case-item":"test-case-item___E3CU9","case-header":"case-header___xppld","iconfont":"iconfont___LO1VN","description":"description___j4efR","item-desc":"item-desc___ivltA","show":"show___ntNdM","item-tip":"item-tip___ETPck","arrow-down":"arrow-down___oQMCK","test-title":"test-title___mf3Df","arrow-right":"arrow-right___C6f8W","case-info":"case-info___yX5kK","test-case-run-header":"test-case-run-header___iHZR5","test-case-run-wrp":"test-case-run-wrp___qVT1y","diff-panel-container":"diff-panel-container___OEdXu","line-break":"line-break___Ww59n","empty":"empty___izbJX","alert":"alert___jv5_R"});
|
|
|
// EXTERNAL MODULE: ./node_modules/_store@2.0.12@store/dist/store.legacy.js
|
|
|
var store_legacy = __webpack_require__(7062);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/html-code-view/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var linkRegex = /<link(?:.*?)href=[\"\'](.+?)[\"\'](?!<)(?:.*)\>(?:[\n\r\s]*?)(?:<\/link>)*/im;
|
|
|
var scriptRegex = /<script(?:.*?)src=[\"\'](.+?)[\"\'](?!<)(?:.*)\>(?:[\n\r\s]*?)(?:<\/script>)*/im;
|
|
|
var cdns = ['http', 'com', 'net', 'org', 'cdn'];
|
|
|
function is_cdn_link(link) {
|
|
|
var result = false;
|
|
|
for (var i = 0; i < cdns.length; i++) {
|
|
|
if (link.indexOf(cdns[i]) !== -1) {
|
|
|
result = true;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
var TIMETICKET = 3000;
|
|
|
/* harmony default export */ var html_code_view = (function (_ref) {
|
|
|
var _ref$code = _ref.code,
|
|
|
code = _ref$code === void 0 ? '' : _ref$code,
|
|
|
isActive = _ref.isActive,
|
|
|
myshixunIdentifier = _ref.myshixunIdentifier,
|
|
|
lastedUpdateTime = _ref.lastedUpdateTime,
|
|
|
onFinishDisplayHtml = _ref.onFinishDisplayHtml;
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(0),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
updateNum = _useState2[0],
|
|
|
setUpdateNum = _useState2[1];
|
|
|
var params = (0,_umi_production_exports.useParams)();
|
|
|
var iframeRef = (0,_react_17_0_2_react.useRef)();
|
|
|
var el = (0,_react_17_0_2_react.useRef)();
|
|
|
var action = "".concat(tasks_util/* apiPref */.KI, "/api/myshixuns/").concat(myshixunIdentifier, "/html_content.html");
|
|
|
var param = (0,_react_17_0_2_react.useMemo)(function () {
|
|
|
var jsArr = [];
|
|
|
var cssArr = [];
|
|
|
var jsConArr = [];
|
|
|
var cssConArr = [];
|
|
|
var iframe = document.createElement('iframe');
|
|
|
iframe.style.width = '100%';
|
|
|
iframe.style.height = '100%';
|
|
|
iframe.style.border = '0';
|
|
|
try {
|
|
|
iframeRef.current.innerHTML = '';
|
|
|
iframeRef.current.appendChild(iframe);
|
|
|
} catch (e) {}
|
|
|
var content = code;
|
|
|
var dom = document.createElement('div');
|
|
|
dom.innerHTML = code;
|
|
|
code.replace(/<link [^>]*href=['"]([^'"]+)[^>]*>/gi, function (match, capture) {
|
|
|
cssArr.push(capture.indexOf('http') > -1 ? capture : 'https://data.educoder.net/api/sources/get_html_content.html?content_type=text/css&identifier=' + params.taskId + '&path=' + capture);
|
|
|
var newStr = capture.indexOf('http') > -1 ? capture : '<link href="https://data.educoder.net/api/sources/get_html_content.html?content_type=text/css&identifier=' + params.taskId + '&path=' + capture + '" alt="" />';
|
|
|
return newStr;
|
|
|
});
|
|
|
code.replace(/<script [^>]*src=['"]([^'"]+)[^>]*>/gi, function (match, capture) {
|
|
|
jsArr.push(capture.indexOf('http') > -1 ? capture : 'https://data.educoder.net/api/sources/get_html_content.html?content_type=application/javascript&identifier=' + params.taskId + '&path=' + capture);
|
|
|
var newStr = capture.indexOf('http') > -1 ? capture : '<link href="https://data.educoder.net/api/sources/get_html_content.html?content_type=text/css&identifier=' + params.taskId + '&path=' + capture + '" alt="" />';
|
|
|
return newStr;
|
|
|
});
|
|
|
|
|
|
// let regex3 = new RegExp(/<img [^>]*src=['"]([^'"]+)[^>]*>/gi);
|
|
|
|
|
|
code = code.replace(/<img [^>]*src=['"]([^'"]+)[^>]*>/gi, function (match, capture) {
|
|
|
var newStr = capture.indexOf('http') > -1 ? match : match.replace(capture, 'https://data.educoder.net/api/sources/get_html_content?content_type=application/octet-stream&identifier=' + params.taskId + '&path=' + capture);
|
|
|
return newStr;
|
|
|
});
|
|
|
code = code.replace(/<video [^>]*src=['"]([^'"]+)[^>]*>/gi, function (match, capture) {
|
|
|
var newStr = capture.indexOf('http') > -1 ? match : '<video src="https://data.educoder.net/api/sources/get_html_content?content_type=application/octet-stream&identifier=' + params.taskId + '&path=' + capture + '" alt="" />';
|
|
|
return newStr;
|
|
|
});
|
|
|
code.replace(/<script.*?>([\s\S]+?)<\/script>/gim, function (_, js) {
|
|
|
//正则匹配出script中的内容
|
|
|
jsConArr.push(js);
|
|
|
});
|
|
|
code.replace(/<style.*?>([\s\S]+?)<\/style>/gim, function (_, css) {
|
|
|
//正则匹配出script中的内容
|
|
|
cssConArr.push(css);
|
|
|
});
|
|
|
var css = [];
|
|
|
var script = [];
|
|
|
var linkMatches = linkRegex.exec(content);
|
|
|
var scriptMatches = scriptRegex.exec(content);
|
|
|
while (linkMatches) {
|
|
|
var $0 = linkMatches[0];
|
|
|
var $1 = linkMatches[1];
|
|
|
if (is_cdn_link($1)) {
|
|
|
content = content.replace($0, $0.replace(/link/, 'edulink'));
|
|
|
} else {
|
|
|
css.push($1);
|
|
|
content = content.replace(linkRegex, 'EDUCODERCSS');
|
|
|
}
|
|
|
linkMatches = linkRegex.exec(content);
|
|
|
}
|
|
|
while (scriptMatches) {
|
|
|
var _$ = scriptMatches[0];
|
|
|
var _$2 = scriptMatches[1];
|
|
|
if (is_cdn_link(_$2)) {
|
|
|
content = content.replace(_$, _$.replace(/script/g, 'w3scrw3ipttag'));
|
|
|
} else {
|
|
|
script.push(_$2);
|
|
|
content = content.replace(scriptRegex, 'EDUCODERJS');
|
|
|
}
|
|
|
scriptMatches = scriptRegex.exec(content);
|
|
|
}
|
|
|
try {
|
|
|
// console.log('linkMatches:', linkMatches, cssArr, jsArr, code);
|
|
|
iframe.contentWindow.document.write(dom.innerHTML);
|
|
|
cssArr.map(function (item) {
|
|
|
var csstag = document.createElement('link');
|
|
|
csstag.setAttribute('rel', 'stylesheet');
|
|
|
csstag.href = item;
|
|
|
iframe.contentWindow.document.head.appendChild(csstag);
|
|
|
});
|
|
|
// jsArr.map(item => {
|
|
|
// const jstag = document.createElement('script');
|
|
|
// jstag.setAttribute('async', true);
|
|
|
// jstag.src = item;
|
|
|
// iframe.contentWindow.document.body.appendChild(jstag);
|
|
|
// });
|
|
|
|
|
|
cssConArr.map(function (item) {
|
|
|
var csstag2 = document.createElement('style');
|
|
|
csstag2.innerHTML = item;
|
|
|
iframe.contentWindow.document.head.appendChild(csstag2);
|
|
|
});
|
|
|
setTimeout(function () {
|
|
|
// try {
|
|
|
// if (!!dom.querySelectorAll('script').length) {
|
|
|
// for (let i = 0; i < dom.querySelectorAll('script').length; i++) {
|
|
|
// if (dom.querySelectorAll('script')[i].innerHTML != '') {
|
|
|
// var jstag2 = document.createElement('script');
|
|
|
// jstag2.setAttribute('defer', true);
|
|
|
// jstag2.innerHTML = dom.querySelectorAll('script')[i].innerHTML;
|
|
|
// iframe.contentWindow.document.body.appendChild(jstag2);
|
|
|
// }
|
|
|
// }
|
|
|
// }
|
|
|
// } catch (error) {}
|
|
|
}, 6000);
|
|
|
} catch (e) {
|
|
|
if (code != '' && !!code) setTimeout(function () {
|
|
|
setUpdateNum(new Date().getTime());
|
|
|
}, 1000);
|
|
|
}
|
|
|
// html部分 为了防止xss攻击,先将敏感字符转换
|
|
|
// content = content
|
|
|
// .replace(/=/gi, 'w3equalsign')
|
|
|
// .replace(/script/gi, 'w3scrw3ipttag');
|
|
|
|
|
|
return {
|
|
|
content: content,
|
|
|
css: css,
|
|
|
script: script
|
|
|
};
|
|
|
}, [code, updateNum]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (code != '' && !!code) setUpdateNum(updateNum + 1);
|
|
|
}, [isActive]);
|
|
|
|
|
|
//所见即所得
|
|
|
(0,useInterval/* default */.Z)(function () {
|
|
|
var currentTime = new Date().getTime();
|
|
|
if (isActive && el.current && lastedUpdateTime && currentTime > lastedUpdateTime + TIMETICKET) {
|
|
|
// onFinishDisplayHtml();
|
|
|
}
|
|
|
}, TIMETICKET);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (el.current && param && param.content) {
|
|
|
// el.current.setAttribute('action', action);
|
|
|
// el.current.submit();
|
|
|
}
|
|
|
}, [el.current, param, action]);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "html-code-view",
|
|
|
style: {
|
|
|
display: isActive ? 'block' : 'none',
|
|
|
width: '100%',
|
|
|
height: '100%'
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("form", {
|
|
|
ref: el,
|
|
|
method: "post",
|
|
|
target: "my-frame",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("input", {
|
|
|
type: "hidden",
|
|
|
name: "contents",
|
|
|
value: param.content
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("input", {
|
|
|
type: "hidden",
|
|
|
name: "educodercss",
|
|
|
value: param.css
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("input", {
|
|
|
type: "hidden",
|
|
|
name: "educoderscript",
|
|
|
value: param.script
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
id: "iframe",
|
|
|
ref: iframeRef,
|
|
|
style: {
|
|
|
background: '#fff',
|
|
|
height: '100%',
|
|
|
width: '100%'
|
|
|
}
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./node_modules/_diff-match-patch@1.0.5@diff-match-patch/index.js
|
|
|
var _diff_match_patch_1_0_5_diff_match_patch = __webpack_require__(79818);
|
|
|
var _diff_match_patch_1_0_5_diff_match_patch_default = /*#__PURE__*/__webpack_require__.n(_diff_match_patch_1_0_5_diff_match_patch);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/test-case-list/diffPanel.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var diffPanelmodules = ({"diff-panel-container":"diff-panel-container___IpXsK","enter":"enter___UGDlZ","line-break":"line-break___hpW53","empty":"empty___BV3pH","diff-panel-container-2":"diff-panel-container-2___RYOLG","outputColorWhite":"outputColorWhite___GkiGp"});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/test-case-list/diffPanel.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var dmp = new (_diff_match_patch_1_0_5_diff_match_patch_default())();
|
|
|
dmp.Diff_EditCost = 8;
|
|
|
var diffPanel_initialState = {
|
|
|
oldStr: '',
|
|
|
newStr: ''
|
|
|
};
|
|
|
function diffPanel_reducer(state, action) {
|
|
|
switch (action.type) {
|
|
|
case 'init':
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), action.payload);
|
|
|
default:
|
|
|
throw new Error();
|
|
|
}
|
|
|
}
|
|
|
function format(diff, type) {
|
|
|
var pattern_amp = /&/g;
|
|
|
var pattern_lt = /</g;
|
|
|
var pattern_gt = />/g;
|
|
|
var operation = diff[0],
|
|
|
data = diff[1] || '';
|
|
|
var text = data.replace(pattern_amp, '&').replace(pattern_lt, '<').replace(pattern_gt, '>');
|
|
|
var isEmpty = !text.trim();
|
|
|
text = text == '\r' ? '↵' : text;
|
|
|
var text2 = text == '↵' ? ' ' : text;
|
|
|
var classname1 = "".concat(isEmpty ? diffPanelmodules.empty : '', " ").concat(text === '↵' ? diffPanelmodules.enter : '');
|
|
|
var classname2 = "".concat(text === '↵' ? diffPanelmodules.enter : '');
|
|
|
if (type === 'oldStr') {
|
|
|
console.log('type:', type, _diff_match_patch_1_0_5_diff_match_patch.DIFF_DELETE, _diff_match_patch_1_0_5_diff_match_patch.DIFF_EQUAL, operation, text);
|
|
|
switch (operation) {
|
|
|
case _diff_match_patch_1_0_5_diff_match_patch.DIFF_DELETE:
|
|
|
return "<span class=\"".concat(diffPanelmodules.block, "\"><ins class=\"").concat(classname1, "\">") + text2 + '</ins></span>';
|
|
|
case _diff_match_patch_1_0_5_diff_match_patch.DIFF_EQUAL:
|
|
|
return "<span class=\"".concat(classname2, "\">") + text2 + '</span>';
|
|
|
}
|
|
|
} else {
|
|
|
switch (operation) {
|
|
|
case _diff_match_patch_1_0_5_diff_match_patch.DIFF_INSERT:
|
|
|
return "<span class=\"".concat(diffPanelmodules.block, "\"><del class=\"").concat(classname1, "\">") + text2 + '</del></span>';
|
|
|
case _diff_match_patch_1_0_5_diff_match_patch.DIFF_EQUAL:
|
|
|
return "<span class=\"".concat(classname2, "\">") + text2 + '</span>';
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
/* harmony default export */ var diffPanel = (function (_ref) {
|
|
|
var _output, _actual_output;
|
|
|
var output = _ref.output,
|
|
|
actual_output = _ref.actual_output,
|
|
|
compile_success = _ref.compile_success,
|
|
|
result = _ref.result;
|
|
|
var _useReducer = (0,_react_17_0_2_react.useReducer)(diffPanel_reducer, diffPanel_initialState),
|
|
|
_useReducer2 = slicedToArray_default()(_useReducer, 2),
|
|
|
state = _useReducer2[0],
|
|
|
dispatch = _useReducer2[1];
|
|
|
output = (_output = output) === null || _output === void 0 ? void 0 : _output.replace(/\n/g, '\r').replace(/\u0020/g, ' ').replace(/\u0000/g, "\\u0000");
|
|
|
actual_output = (_actual_output = actual_output) === null || _actual_output === void 0 ? void 0 : _actual_output.replace(/\n/g, '\r').replace(/\u0020/g, ' ').replace(/\u0000/g, "\\u0000");
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
var diffs = dmp.diff_main(output || '', actual_output || '');
|
|
|
dmp.diff_cleanupEfficiency(diffs);
|
|
|
var oldStr = diffs.map(function (diff) {
|
|
|
return format(diff, 'oldStr');
|
|
|
}).join('');
|
|
|
var newStr = diffs.map(function (diff) {
|
|
|
return format(diff, 'newStr');
|
|
|
}).join('');
|
|
|
dispatch({
|
|
|
type: 'init',
|
|
|
payload: {
|
|
|
oldStr: oldStr,
|
|
|
newStr: newStr
|
|
|
}
|
|
|
});
|
|
|
}, [output, actual_output]);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: diffPanelmodules['diff-panel-container'],
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
dangerouslySetInnerHTML: {
|
|
|
__html: state.oldStr
|
|
|
}
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: compile_success === 1 && result ? diffPanelmodules.outputColorWhite : "",
|
|
|
dangerouslySetInnerHTML: {
|
|
|
__html: state.newStr
|
|
|
}
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/test-case-list/Debugger/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var Debuggermodules = ({"flex_box_center":"flex_box_center___chIKE","flex_space_between":"flex_space_between___hT6Bl","flex_box_vertical_center":"flex_box_vertical_center___xJY_u","flex_box_center_end":"flex_box_center_end___LPuxi","flex_box_column":"flex_box_column___Zs0ic","wrap":"wrap___cNz2Y","content":"content___vkduy","left":"left___yWI2E","head":"head___WMggN","expression":"expression___L8Pp3","listWarp":"listWarp___ofdxE","variable":"variable___REWA5","list":"list___ZGP8o","right":"right___T2TG6","btns":"btns____y3gt","disabled":"disabled___yPqre","text":"text___V5rxy"});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/test-case-list/Debugger/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var Debugger = function Debugger(_ref) {
|
|
|
var _Object$keys, _Object$keys2;
|
|
|
var myshixunIdentifier = _ref.myshixunIdentifier,
|
|
|
setHighlightLine = _ref.setHighlightLine,
|
|
|
setStartDebug = _ref.setStartDebug,
|
|
|
setBreakPointValue = _ref.setBreakPointValue,
|
|
|
unique = _ref.unique,
|
|
|
startDebug = _ref.startDebug,
|
|
|
onChangePath = _ref.onChangePath,
|
|
|
currentPath = _ref.currentPath,
|
|
|
visible = _ref.visible;
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(true),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
openExpression = _useState2[0],
|
|
|
setOpenExpression = _useState2[1];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)(true),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
openVariable = _useState4[0],
|
|
|
setOpenVariable = _useState4[1];
|
|
|
var _useState5 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
loading = _useState6[0],
|
|
|
setLoading = _useState6[1];
|
|
|
var _useState7 = (0,_react_17_0_2_react.useState)(''),
|
|
|
_useState8 = slicedToArray_default()(_useState7, 2),
|
|
|
value = _useState8[0],
|
|
|
setValue = _useState8[1];
|
|
|
var _useState9 = (0,_react_17_0_2_react.useState)({}),
|
|
|
_useState10 = slicedToArray_default()(_useState9, 2),
|
|
|
data = _useState10[0],
|
|
|
setData = _useState10[1];
|
|
|
var timer = (0,_react_17_0_2_react.useRef)(null);
|
|
|
var _data$expressions = data.expressions,
|
|
|
expressions = _data$expressions === void 0 ? {} : _data$expressions,
|
|
|
_data$locals = data.locals,
|
|
|
locals = _data$locals === void 0 ? {} : _data$locals,
|
|
|
_data$out = data.out,
|
|
|
out = _data$out === void 0 ? '' : _data$out;
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
var unSub = mediator/* default */.Z.subscribe('active-debug-data', function (d) {
|
|
|
var _d$breakpoints;
|
|
|
mediator/* default */.Z.publish('active-tip', false);
|
|
|
if (d !== null && d !== void 0 && d.is_expired) {
|
|
|
message/* default */.ZP.warning('调试服务已过期,请重新开始调试');
|
|
|
clearTimeout(timer.current);
|
|
|
setHighlightLine(null);
|
|
|
setStartDebug(false);
|
|
|
return;
|
|
|
}
|
|
|
var nextFilename = d.filename;
|
|
|
var current_line = currentPath === nextFilename ? (d === null || d === void 0 ? void 0 : d.current_line) < 0 ? null : d === null || d === void 0 ? void 0 : d.current_line : null;
|
|
|
var lines = (d === null || d === void 0 || (_d$breakpoints = d.breakpoints) === null || _d$breakpoints === void 0 ? void 0 : _d$breakpoints[currentPath]) || [];
|
|
|
setData(d);
|
|
|
setHighlightLine(current_line);
|
|
|
setStartDebug(!(d !== null && d !== void 0 && d.is_over));
|
|
|
if (d !== null && d !== void 0 && d.is_over) {
|
|
|
clearTimeout(timer.current);
|
|
|
} else {
|
|
|
setBreakPointValue(lines);
|
|
|
dealTimer();
|
|
|
if (currentPath !== nextFilename && d !== null && d !== void 0 && d.is_jump) {
|
|
|
onChangePath(nextFilename);
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
return function () {
|
|
|
unSub();
|
|
|
clearTimeout(timer.current);
|
|
|
};
|
|
|
}, [currentPath]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (startDebug) {
|
|
|
setValue('');
|
|
|
}
|
|
|
}, [startDebug]);
|
|
|
var dealTimer = function dealTimer() {
|
|
|
clearTimeout(timer.current);
|
|
|
timer.current = setTimeout(function () {
|
|
|
mediator/* default */.Z.publish('active-tip', true);
|
|
|
clearTimeout(timer.current);
|
|
|
setHighlightLine(null);
|
|
|
setStartDebug(false);
|
|
|
}, 3 * 60 * 1000);
|
|
|
};
|
|
|
var actionBtns = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee(type) {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
if (startDebug) {
|
|
|
_context.next = 2;
|
|
|
break;
|
|
|
}
|
|
|
return _context.abrupt("return");
|
|
|
case 2:
|
|
|
setLoading(true);
|
|
|
_context.next = 5;
|
|
|
return (0,utils_fetch/* default */.ZP)("/api/myshixuns/".concat(myshixunIdentifier, "/code_debugs/").concat(type, ".json"), {
|
|
|
method: 'post',
|
|
|
body: {
|
|
|
unique: unique
|
|
|
}
|
|
|
});
|
|
|
case 5:
|
|
|
res = _context.sent;
|
|
|
if ((res === null || res === void 0 ? void 0 : res.status) === 0) {
|
|
|
mediator/* default */.Z.publish('active-debug-data', (res === null || res === void 0 ? void 0 : res.data) || {});
|
|
|
}
|
|
|
setLoading(false);
|
|
|
case 8:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function actionBtns(_x) {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handlePressEnter = /*#__PURE__*/function () {
|
|
|
var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
setLoading(true);
|
|
|
// setValue('')
|
|
|
_context2.next = 3;
|
|
|
return (0,utils_fetch/* default */.ZP)("/api/myshixuns/".concat(myshixunIdentifier, "/code_debugs/add_expression.json"), {
|
|
|
method: 'post',
|
|
|
body: {
|
|
|
expression: value,
|
|
|
unique: unique
|
|
|
}
|
|
|
});
|
|
|
case 3:
|
|
|
res = _context2.sent;
|
|
|
if ((res === null || res === void 0 ? void 0 : res.status) === 0) {
|
|
|
mediator/* default */.Z.publish('active-debug-data', (res === null || res === void 0 ? void 0 : res.data) || {});
|
|
|
}
|
|
|
setLoading(false);
|
|
|
case 6:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return function handlePressEnter() {
|
|
|
return _ref3.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleDelete = /*#__PURE__*/function () {
|
|
|
var _ref4 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3(e) {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
setLoading(true);
|
|
|
_context3.next = 3;
|
|
|
return (0,utils_fetch/* default */.ZP)("/api/myshixuns/".concat(myshixunIdentifier, "/code_debugs/remove_expression.json"), {
|
|
|
method: 'post',
|
|
|
body: {
|
|
|
expression: e,
|
|
|
unique: unique
|
|
|
}
|
|
|
});
|
|
|
case 3:
|
|
|
res = _context3.sent;
|
|
|
if ((res === null || res === void 0 ? void 0 : res.status) === 0) {
|
|
|
mediator/* default */.Z.publish('active-debug-data', (res === null || res === void 0 ? void 0 : res.data) || {});
|
|
|
}
|
|
|
setLoading(false);
|
|
|
case 6:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
}));
|
|
|
return function handleDelete(_x2) {
|
|
|
return _ref4.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("section", {
|
|
|
className: Debuggermodules.wrap,
|
|
|
style: {
|
|
|
display: visible ? 'block' : 'none'
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(spin/* default */.Z, {
|
|
|
spinning: false,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Debuggermodules.content,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Debuggermodules.left,
|
|
|
children: [(data === null || data === void 0 ? void 0 : data.open_express) && /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Debuggermodules.expression,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Debuggermodules.head,
|
|
|
onClick: function onClick() {
|
|
|
return setOpenExpression(!openExpression);
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
style: {
|
|
|
transform: openExpression ? 'rotate(0deg) scale(0.6) translateY(2px)' : 'rotate(270deg) scale(0.6) translateY(2px)'
|
|
|
},
|
|
|
className: "iconfont icon-a-xialazhankai"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u76D1\u542C"
|
|
|
})]
|
|
|
}), openExpression && /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
value: value,
|
|
|
disabled: !startDebug,
|
|
|
onChange: function onChange(e) {
|
|
|
return setValue(e.target.value);
|
|
|
},
|
|
|
placeholder: "\u8BF7\u8F93\u5165\u9700\u8981\u76D1\u542C\u7684\u5DF2\u6267\u884C\u53D8\u91CF\u6216\u8868\u8FBE\u5F0F\uFF0C\u56DE\u8F66\u786E\u8BA4",
|
|
|
onPressEnter: handlePressEnter
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: Debuggermodules.listWarp,
|
|
|
children: (_Object$keys = Object.keys(expressions)) === null || _Object$keys === void 0 ? void 0 : _Object$keys.map(function (e, i) {
|
|
|
var title = "".concat(e, ": ").concat(expressions[e]);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: title,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: title
|
|
|
})
|
|
|
}), startDebug ? /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
onClick: function onClick() {
|
|
|
return handleDelete(e);
|
|
|
},
|
|
|
className: "iconfont icon-piliangshanchubeifen"
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
style: {
|
|
|
cursor: 'not-allowed',
|
|
|
color: '#676767'
|
|
|
},
|
|
|
className: "iconfont icon-piliangshanchubeifen"
|
|
|
})]
|
|
|
});
|
|
|
})
|
|
|
})]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Debuggermodules.variable,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Debuggermodules.head,
|
|
|
onClick: function onClick() {
|
|
|
return setOpenVariable(!openVariable);
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
style: {
|
|
|
transform: openVariable ? 'rotate(0deg) scale(0.6) translateY(2px)' : 'rotate(270deg) scale(0.6) translateY(2px)'
|
|
|
},
|
|
|
className: "iconfont icon-a-xialazhankai"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u53D8\u91CF"
|
|
|
})]
|
|
|
}), openVariable && ((_Object$keys2 = Object.keys(locals)) === null || _Object$keys2 === void 0 ? void 0 : _Object$keys2.map(function (e, i) {
|
|
|
var title = "".concat(e, ": ").concat(locals[e]);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: /*#__PURE__*/(0,jsx_runtime.jsx)("pre", {
|
|
|
children: title
|
|
|
}),
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: Debuggermodules.list,
|
|
|
children: title
|
|
|
})
|
|
|
}, title + i);
|
|
|
}))]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Debuggermodules.right,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: startDebug ? Debuggermodules.btns : "".concat(Debuggermodules.btns, " ").concat(Debuggermodules.disabled, " "),
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: "\u7EE7\u7EED",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
onClick: function onClick() {
|
|
|
return actionBtns('continue');
|
|
|
},
|
|
|
className: "icon-jixu"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: "\u5355\u6B65\u8DF3\u8FC7",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
onClick: function onClick() {
|
|
|
return actionBtns('next');
|
|
|
},
|
|
|
className: "iconfont icon-danbutiaoguo"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: "\u5355\u6B65\u8DF3\u5165",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
onClick: function onClick() {
|
|
|
return actionBtns('step_in');
|
|
|
},
|
|
|
className: "iconfont icon-danbutiaoshi"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: "\u5355\u6B65\u8DF3\u51FA",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
onClick: function onClick() {
|
|
|
return actionBtns('step_out');
|
|
|
},
|
|
|
className: "iconfont icon-danbutiaochu"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: "\u6E05\u7A7A\u6807\u51C6\u8F93\u51FA",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
onClick: function onClick() {
|
|
|
data.out = '';
|
|
|
setData(objectSpread2_default()({}, data));
|
|
|
},
|
|
|
className: "iconfont icon-piliangshanchubeifen"
|
|
|
})
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: Debuggermodules.text,
|
|
|
children: "\u6807\u51C6\u8F93\u51FA"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("pre", {
|
|
|
children: out
|
|
|
})]
|
|
|
})]
|
|
|
})
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var test_case_list_Debugger = (Debugger);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/test-case-list/panel.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var panel_dmp = new (_diff_match_patch_1_0_5_diff_match_patch_default())();
|
|
|
panel_dmp.Diff_EditCost = 8;
|
|
|
var panel_initialState = {
|
|
|
oldStr: '',
|
|
|
newStr: ''
|
|
|
};
|
|
|
function panel_reducer(state, action) {
|
|
|
switch (action.type) {
|
|
|
case 'init':
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), action.payload);
|
|
|
default:
|
|
|
throw new Error();
|
|
|
}
|
|
|
}
|
|
|
function panel_format(diff, type) {
|
|
|
var pattern_amp = /&/g;
|
|
|
var pattern_lt = /</g;
|
|
|
var pattern_gt = />/g;
|
|
|
var operation = diff[0],
|
|
|
data = diff[1] || '';
|
|
|
var text = data.replace(pattern_amp, '&').replace(pattern_lt, '<').replace(pattern_gt, '>');
|
|
|
var isEmpty = !text.trim();
|
|
|
if (type === 'oldStr') {
|
|
|
switch (operation) {
|
|
|
case _diff_match_patch_1_0_5_diff_match_patch.DIFF_DELETE:
|
|
|
return "<ins class=".concat(isEmpty ? 'empty' : '', ">") + text + '</ins>';
|
|
|
case _diff_match_patch_1_0_5_diff_match_patch.DIFF_EQUAL:
|
|
|
return '<span>' + text + '</span>';
|
|
|
}
|
|
|
} else {
|
|
|
switch (operation) {
|
|
|
case _diff_match_patch_1_0_5_diff_match_patch.DIFF_INSERT:
|
|
|
return "<del class=".concat(isEmpty ? 'empty' : '', ">") + text + '</del>';
|
|
|
case _diff_match_patch_1_0_5_diff_match_patch.DIFF_EQUAL:
|
|
|
return '<span>' + text + '</span>';
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
/* harmony default export */ var panel = (function (_ref) {
|
|
|
var _output, _actual_output;
|
|
|
var output = _ref.output,
|
|
|
actual_output = _ref.actual_output,
|
|
|
_onClick = _ref.onClick;
|
|
|
var _useReducer = (0,_react_17_0_2_react.useReducer)(panel_reducer, panel_initialState),
|
|
|
_useReducer2 = slicedToArray_default()(_useReducer, 2),
|
|
|
state = _useReducer2[0],
|
|
|
dispatch = _useReducer2[1];
|
|
|
output = (_output = output) === null || _output === void 0 ? void 0 : _output.replace(/\n/g, '\r');
|
|
|
actual_output = (_actual_output = actual_output) === null || _actual_output === void 0 ? void 0 : _actual_output.replace(/\n/g, '\r');
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
var diffs = panel_dmp.diff_main(output || '', actual_output || '');
|
|
|
panel_dmp.diff_cleanupEfficiency(diffs);
|
|
|
var oldStr = diffs.map(function (diff) {
|
|
|
return panel_format(diff, 'oldStr');
|
|
|
}).join('');
|
|
|
var newStr = diffs.map(function (diff) {
|
|
|
return panel_format(diff, 'newStr');
|
|
|
}).join('');
|
|
|
dispatch({
|
|
|
type: 'init',
|
|
|
payload: {
|
|
|
oldStr: oldStr,
|
|
|
newStr: newStr
|
|
|
}
|
|
|
});
|
|
|
}, [output, actual_output]);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "c-white ".concat(diffPanelmodules['diff-panel-container'], " ").concat(diffPanelmodules['diff-panel-container-2'], " ")
|
|
|
// ${onClick ? 'current' : ''}
|
|
|
,
|
|
|
onClick: function onClick() {
|
|
|
return _onClick === null || _onClick === void 0 ? void 0 : _onClick();
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
dangerouslySetInnerHTML: {
|
|
|
__html: state.oldStr
|
|
|
}
|
|
|
})
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./node_modules/_js-base64@2.6.4@js-base64/base64.js
|
|
|
var base64 = __webpack_require__(24334);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/xterm-panel/log.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var log = (function (_ref) {
|
|
|
var sshConfigData = _ref.sshConfigData,
|
|
|
tpId = _ref.tpId;
|
|
|
var _useState = (0,_react_17_0_2_react.useState)([]),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
logs = _useState2[0],
|
|
|
setLogs = _useState2[1];
|
|
|
var link_url = sshConfigData.link_url,
|
|
|
port = sshConfigData.port;
|
|
|
var socket = (0,_react_17_0_2_react.useRef)();
|
|
|
var stopRef = (0,_react_17_0_2_react.useRef)();
|
|
|
var socketInstanceRef = (0,_react_17_0_2_react.useRef)();
|
|
|
var domRef = (0,_react_17_0_2_react.useRef)();
|
|
|
var isFirstConnected = (0,_react_17_0_2_react.useRef)(false);
|
|
|
var insertData = function insertData(d) {
|
|
|
console.log('insertData:', d);
|
|
|
logs.push(d);
|
|
|
setLogs(toConsumableArray_default()(logs));
|
|
|
};
|
|
|
function createSocket() {
|
|
|
socketInstanceRef.current = new WebSocket(link_url);
|
|
|
socket.current = socketInstanceRef.current;
|
|
|
socketInstanceRef.current.onopen = function () {
|
|
|
socketInstanceRef.current.send(JSON.stringify({
|
|
|
tp: 'log',
|
|
|
data: tpId
|
|
|
}));
|
|
|
};
|
|
|
socketInstanceRef.current.onerror = function (error) {
|
|
|
console.log('------in socket error----', error, socketInstanceRef.current, link_url);
|
|
|
//连接报错后,重新请求资源
|
|
|
// mediator.publish('on-recreate-socket')
|
|
|
};
|
|
|
socketInstanceRef.current.onmessage = function (event) {
|
|
|
if (!isFirstConnected.current) {}
|
|
|
isFirstConnected.current = true;
|
|
|
var data = base64.Base64.decode(event.data.toString());
|
|
|
if (data === 'ProcessFinished') {
|
|
|
closeLink();
|
|
|
setTimeout(function () {
|
|
|
mediator/* default */.Z.publish('runCodeFinish');
|
|
|
}, 1000);
|
|
|
} else if (!stopRef.current) {
|
|
|
insertData(data);
|
|
|
}
|
|
|
};
|
|
|
socketInstanceRef.current.onclose = function (evt) {
|
|
|
// closeLink();
|
|
|
console.log('socket关闭链接', evt);
|
|
|
};
|
|
|
socketInstanceRef.current.ondisconnect = function (event) {
|
|
|
// closeLink();
|
|
|
console.log('socket-disconnect:', event);
|
|
|
};
|
|
|
}
|
|
|
var closeLink = function closeLink() {
|
|
|
stopRef.current = true;
|
|
|
setLogs(toConsumableArray_default()(logs));
|
|
|
};
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
var unSubCreate = mediator/* default */.Z.subscribe('runCode', function (d) {
|
|
|
socketInstanceRef.current = undefined;
|
|
|
console.log('lastedUpdateTime-runCode', mediator/* default */.Z, mediator/* default */.Z.channels);
|
|
|
if (d.type === 'start') {
|
|
|
stopRef.current = false;
|
|
|
logs = [];
|
|
|
setLogs([]);
|
|
|
// setTimeout(() => {
|
|
|
createSocket();
|
|
|
// }, 100);
|
|
|
} else {
|
|
|
closeLink();
|
|
|
}
|
|
|
});
|
|
|
return function () {
|
|
|
unSubCreate();
|
|
|
if (socket.current) {
|
|
|
socket.current.close();
|
|
|
console.log('socket链接主动关闭');
|
|
|
isFirstConnected.current = false;
|
|
|
}
|
|
|
};
|
|
|
}, []);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
domRef.current.scrollIntoView({
|
|
|
behavior: 'smooth',
|
|
|
block: 'end'
|
|
|
});
|
|
|
}, [logs]);
|
|
|
var logsDom = (0,_react_17_0_2_react.useCallback)(function () {
|
|
|
var _logs;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("pre", {
|
|
|
style: {
|
|
|
whiteSpace: "break-spaces"
|
|
|
},
|
|
|
className: "font14 ml20 mr20 pt10",
|
|
|
children: (_logs = logs) === null || _logs === void 0 ? void 0 : _logs.join('\n')
|
|
|
});
|
|
|
return logs.map(function (item) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(jsx_runtime.Fragment, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("code", {
|
|
|
className: "font14 ml20 mr20",
|
|
|
children: item
|
|
|
})
|
|
|
});
|
|
|
});
|
|
|
}, [logs]);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "xterm-panel pb10",
|
|
|
ref: domRef,
|
|
|
style: {
|
|
|
fontFamily: 'monospace'
|
|
|
},
|
|
|
children: [logs == '' && !stopRef.current && /*#__PURE__*/(0,jsx_runtime.jsx)(Spinner/* default */.Z, {}), logsDom()]
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./node_modules/_xterm@4.8.1@xterm/lib/xterm.js
|
|
|
var xterm = __webpack_require__(34376);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/test-case-list/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function test_case_list_TestCaseItem(_ref) {
|
|
|
var _taskData$user, _taskData$user2;
|
|
|
var last_compile_output = _ref.last_compile_output,
|
|
|
language = _ref.language,
|
|
|
ts_mem = _ref.ts_mem,
|
|
|
ts_time = _ref.ts_time,
|
|
|
input = _ref.input,
|
|
|
output = _ref.output,
|
|
|
is_invisible = _ref.is_invisible,
|
|
|
actual_output = _ref.actual_output,
|
|
|
is_file = _ref.is_file,
|
|
|
input_file_url = _ref.input_file_url,
|
|
|
output_file_url = _ref.output_file_url,
|
|
|
is_public = _ref.is_public,
|
|
|
result = _ref.result,
|
|
|
compile_success = _ref.compile_success,
|
|
|
title = _ref.title,
|
|
|
isActive = _ref.isActive,
|
|
|
id = _ref.id,
|
|
|
onActive = _ref.onActive,
|
|
|
test_sets_view = _ref.test_sets_view,
|
|
|
allowed_unlock = _ref.allowed_unlock,
|
|
|
identity = _ref.identity,
|
|
|
taskData = _ref.taskData,
|
|
|
setData = _ref.setData,
|
|
|
setMonacoValue = _ref.setMonacoValue;
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
rawOutput = _useState2[0],
|
|
|
setRawOutput = _useState2[1];
|
|
|
var actualOutputRef = (0,_react_17_0_2_react.useRef)();
|
|
|
var outputRef = (0,_react_17_0_2_react.useRef)();
|
|
|
var saveOutput = output;
|
|
|
if (is_file && (taskData === null || taskData === void 0 || (_taskData$user = taskData.user) === null || _taskData$user === void 0 ? void 0 : _taskData$user.identity) <= 5) {
|
|
|
is_invisible = false;
|
|
|
}
|
|
|
if (is_invisible && (taskData === null || taskData === void 0 || (_taskData$user2 = taskData.user) === null || _taskData$user2 === void 0 ? void 0 : _taskData$user2.identity) > 5) {
|
|
|
output = '该预期输出不可查看';
|
|
|
}
|
|
|
function onActiveHandler() {
|
|
|
if (is_public || test_sets_view || identity <= 5) {
|
|
|
onActive(id);
|
|
|
} else {
|
|
|
if (allowed_unlock) {
|
|
|
mediator/* default */.Z.publish('unlock-test-case', id);
|
|
|
} else {
|
|
|
message/* default */.ZP.info('本测试集不可解锁');
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
var cls = test_cast_listmodules['test-case-item'];
|
|
|
if (isActive) {
|
|
|
cls += ' active';
|
|
|
}
|
|
|
if (last_compile_output) {
|
|
|
cls += " ".concat(test_cast_listmodules['has-result']);
|
|
|
}
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (rawOutput) {
|
|
|
var term = new xterm.Terminal({
|
|
|
// convertEol: true,
|
|
|
// fontFamily: `'Fira Mono', monospace`,
|
|
|
fontSize: 14,
|
|
|
background: '#1e1e1e',
|
|
|
letterSpacing: 4
|
|
|
});
|
|
|
term.open(actualOutputRef.current);
|
|
|
var actual_output_format = (0,util/* findEndWhitespace */.pp)(actual_output);
|
|
|
term.writeln(actual_output_format);
|
|
|
term.setOption('theme', {
|
|
|
background: '#1e1e1e'
|
|
|
});
|
|
|
window.terms = term;
|
|
|
var term2 = new xterm.Terminal({
|
|
|
convertEol: true,
|
|
|
fontFamily: "'Fira Mono', monospace",
|
|
|
fontSize: 14,
|
|
|
background: '#1e1e1e'
|
|
|
});
|
|
|
term2.open(outputRef.current);
|
|
|
var output_format = output.replaceAll(" ", '\x1b[41m \x1b[0m').replace(/\n/g, "\x1b[41m↵\x1b[0m\r\n");
|
|
|
term2.writeln(output);
|
|
|
term2.setOption('theme', {
|
|
|
background: '#1e1e1e'
|
|
|
});
|
|
|
}
|
|
|
}, [rawOutput]);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("li", {
|
|
|
className: cls,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
className: test_cast_listmodules['case-header'],
|
|
|
onClick: onActiveHandler,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("h2", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: isActive ? test_cast_listmodules['arrow-down'] : test_cast_listmodules['arrow-right']
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: test_cast_listmodules['test-title'],
|
|
|
children: title
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: test_cast_listmodules['case-info'],
|
|
|
children: [!ts_mem ? null : /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
className: test_cast_listmodules['description'],
|
|
|
children: ["\u6D88\u8017\u5185\u5B58", ts_mem, "MB"]
|
|
|
}), !ts_time ? null : /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
className: test_cast_listmodules['description'],
|
|
|
children: [' ', "\u4EE3\u7801\u6267\u884C\u65F6\u957F\uFF1A", ts_time, "\u79D2", ' ']
|
|
|
}), !is_public ? test_sets_view || identity <= 5 ? /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-jiesuo"
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-suo1"
|
|
|
}) : null, compile_success > 0 ? /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
width: 16,
|
|
|
src: result ? success/* default */.Z : failer/* default */.Z
|
|
|
}) : null]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "".concat(test_cast_listmodules['item-desc'], " ").concat(isActive ? 'show' : 'hide', " ").concat(test_cast_listmodules['choose-game-item']),
|
|
|
children: [input ? /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "80px",
|
|
|
children: "\u6D4B\u8BD5\u8F93\u5165\uFF1A"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "1",
|
|
|
style: {
|
|
|
color: '#fff'
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(panel, {
|
|
|
onClick: /*#__PURE__*/asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
if (!is_file) {
|
|
|
_context.next = 12;
|
|
|
break;
|
|
|
}
|
|
|
_context.next = 3;
|
|
|
return fetch(input_file_url, {
|
|
|
method: 'Get',
|
|
|
headers: {
|
|
|
'Content-Type': 'application/octet-stream',
|
|
|
Accept: '*/*'
|
|
|
}
|
|
|
});
|
|
|
case 3:
|
|
|
res = _context.sent;
|
|
|
if (!(res.status === -1)) {
|
|
|
_context.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
return _context.abrupt("return");
|
|
|
case 6:
|
|
|
_context.t0 = setMonacoValue;
|
|
|
_context.next = 9;
|
|
|
return res.text();
|
|
|
case 9:
|
|
|
_context.t1 = _context.sent;
|
|
|
(0, _context.t0)(_context.t1);
|
|
|
setTimeout(function () {
|
|
|
setData(input_file_url);
|
|
|
}, 200);
|
|
|
case 12:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
})),
|
|
|
output: input
|
|
|
})
|
|
|
})]
|
|
|
}) : null, /*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
className: test_cast_listmodules['output-title-container'],
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u2014\u2014 \u9884\u671F\u8F93\u51FA \u2014\u2014"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
className: test_cast_listmodules['output-title'],
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u2014\u2014 \u5B9E\u9645\u8F93\u51FA \u2014\u2014"
|
|
|
}), !is_file && /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "c-blue current",
|
|
|
onClick: function onClick() {
|
|
|
return setRawOutput(!rawOutput);
|
|
|
},
|
|
|
children: rawOutput ? '展示格式化输出' : '展示原始输出'
|
|
|
})]
|
|
|
})]
|
|
|
}), is_file && /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
"class": test_cast_listmodules['diff-panel-container'],
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "tc",
|
|
|
children: is_invisible ? /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
style: {
|
|
|
color: '#2ea44f'
|
|
|
},
|
|
|
children: output
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
"class": "underline",
|
|
|
onClick: /*#__PURE__*/asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
_context2.next = 2;
|
|
|
return fetch(output_file_url, {
|
|
|
method: 'Get',
|
|
|
headers: {
|
|
|
'Content-Type': 'application/octet-stream',
|
|
|
Accept: '*/*'
|
|
|
}
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context2.sent;
|
|
|
if (!(res.status === -1)) {
|
|
|
_context2.next = 5;
|
|
|
break;
|
|
|
}
|
|
|
return _context2.abrupt("return");
|
|
|
case 5:
|
|
|
_context2.t0 = setMonacoValue;
|
|
|
_context2.next = 8;
|
|
|
return res.text();
|
|
|
case 8:
|
|
|
_context2.t1 = _context2.sent;
|
|
|
(0, _context2.t0)(_context2.t1);
|
|
|
setTimeout(function () {
|
|
|
setData(output_file_url);
|
|
|
}, 200);
|
|
|
case 11:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
})),
|
|
|
children: output
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "tc",
|
|
|
children: !!compile_success ? /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
"class": "underline",
|
|
|
onClick: /*#__PURE__*/asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3() {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
_context3.next = 2;
|
|
|
return (0,utils_fetch/* default */.ZP)(actual_output, {
|
|
|
method: 'Get',
|
|
|
headers: {
|
|
|
'Content-Type': 'application/xml',
|
|
|
Accept: '*/*'
|
|
|
}
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context3.sent;
|
|
|
if (!(res.status === -1)) {
|
|
|
_context3.next = 5;
|
|
|
break;
|
|
|
}
|
|
|
return _context3.abrupt("return");
|
|
|
case 5:
|
|
|
setMonacoValue(res);
|
|
|
setTimeout(function () {
|
|
|
setData(actual_output);
|
|
|
}, 200);
|
|
|
// download(actual_output, output)
|
|
|
case 7:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
})),
|
|
|
children: saveOutput
|
|
|
}) : actual_output
|
|
|
})]
|
|
|
}), !is_file && !rawOutput && /*#__PURE__*/(0,jsx_runtime.jsx)(diffPanel, {
|
|
|
compile_success: compile_success,
|
|
|
result: result,
|
|
|
output: output,
|
|
|
actual_output: actual_output
|
|
|
}), !is_file && rawOutput && /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
"class": test_cast_listmodules['diff-panel-container'],
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "",
|
|
|
ref: outputRef
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "",
|
|
|
ref: actualOutputRef
|
|
|
})]
|
|
|
})]
|
|
|
})]
|
|
|
});
|
|
|
}
|
|
|
|
|
|
//moveY = 0.01 时,表示测试集最大化
|
|
|
/* harmony default export */ var test_case_list = (function (_ref5) {
|
|
|
var _test_sets$2, _taskData$myshixun;
|
|
|
var onResizeSetContainer = _ref5.onResizeSetContainer,
|
|
|
moveY = _ref5.moveY,
|
|
|
taskData = _ref5.taskData,
|
|
|
isHtml = _ref5.isHtml,
|
|
|
lastedUpdateTime = _ref5.lastedUpdateTime,
|
|
|
content = _ref5.content,
|
|
|
myshixunIdentifier = _ref5.myshixunIdentifier,
|
|
|
test_sets_view = _ref5.test_sets_view,
|
|
|
identity = _ref5.identity,
|
|
|
language = _ref5.language,
|
|
|
allowed_unlock = _ref5.allowed_unlock,
|
|
|
_ref5$test_sets = _ref5.test_sets,
|
|
|
test_sets = _ref5$test_sets === void 0 ? [] : _ref5$test_sets,
|
|
|
test_sets_count = _ref5.test_sets_count,
|
|
|
sets_error_count = _ref5.sets_error_count,
|
|
|
last_compile_output = _ref5.last_compile_output,
|
|
|
onFinishDisplayHtml = _ref5.onFinishDisplayHtml,
|
|
|
startDebug = _ref5.startDebug,
|
|
|
setStartDebug = _ref5.setStartDebug,
|
|
|
setHighlightLine = _ref5.setHighlightLine,
|
|
|
setBreakPointValue = _ref5.setBreakPointValue,
|
|
|
unique = _ref5.unique,
|
|
|
onChangePath = _ref5.onChangePath,
|
|
|
currentPath = _ref5.currentPath;
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)(-1),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
index = _useState4[0],
|
|
|
setIndex = _useState4[1];
|
|
|
var _useState5 = (0,_react_17_0_2_react.useState)(''),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
data = _useState6[0],
|
|
|
setData = _useState6[1];
|
|
|
var _useState7 = (0,_react_17_0_2_react.useState)(''),
|
|
|
_useState8 = slicedToArray_default()(_useState7, 2),
|
|
|
monacoValue = _useState8[0],
|
|
|
setMonacoValue = _useState8[1];
|
|
|
var _useState9 = (0,_react_17_0_2_react.useState)(isHtml ? 0 : 1),
|
|
|
_useState10 = slicedToArray_default()(_useState9, 2),
|
|
|
tabIndex = _useState10[0],
|
|
|
setTabIndex = _useState10[1];
|
|
|
var _useState11 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState12 = slicedToArray_default()(_useState11, 2),
|
|
|
initDeBug = _useState12[0],
|
|
|
setInitDeBug = _useState12[1];
|
|
|
// const [tabIndex, setTabIndex] = useState(3);
|
|
|
var _useState13 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState14 = slicedToArray_default()(_useState13, 2),
|
|
|
showLogTab = _useState14[0],
|
|
|
setShowLogTab = _useState14[1];
|
|
|
var _useState15 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState16 = slicedToArray_default()(_useState15, 2),
|
|
|
tip = _useState16[0],
|
|
|
setTip = _useState16[1];
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (startDebug === true && initDeBug === false) {
|
|
|
setInitDeBug(true);
|
|
|
}
|
|
|
}, [startDebug, initDeBug]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
var _test_sets$;
|
|
|
var unSub1 = mediator/* default */.Z.subscribe('showRunCodeTab', function (status) {
|
|
|
setShowLogTab(status);
|
|
|
});
|
|
|
var unSub2 = mediator/* default */.Z.subscribe('runCode', function () {
|
|
|
setTabIndex(2);
|
|
|
});
|
|
|
var unSub3 = mediator/* default */.Z.subscribe('active-debug', function () {
|
|
|
setTabIndex(3);
|
|
|
});
|
|
|
var unSub4 = mediator/* default */.Z.subscribe('active-tip', function (bool) {
|
|
|
setTip(bool);
|
|
|
});
|
|
|
mediator/* default */.Z.publish('caseInputValue', test_sets === null || test_sets === void 0 || (_test_sets$ = test_sets[0]) === null || _test_sets$ === void 0 ? void 0 : _test_sets$['input']);
|
|
|
return function () {
|
|
|
unSub1();
|
|
|
unSub2();
|
|
|
unSub3();
|
|
|
unSub4();
|
|
|
};
|
|
|
}, []);
|
|
|
function trigger(id) {
|
|
|
setIndex(id === index ? -1 : id);
|
|
|
}
|
|
|
function onResizeSet() {
|
|
|
onResizeSetContainer(moveY);
|
|
|
}
|
|
|
function onChangeTab(e) {
|
|
|
setTabIndex(parseInt(e.target.id, 10));
|
|
|
}
|
|
|
var htmlCodeViewOption = {
|
|
|
code: content,
|
|
|
isActive: tabIndex === 0 && isHtml,
|
|
|
myshixunIdentifier: myshixunIdentifier,
|
|
|
onFinishDisplayHtml: onFinishDisplayHtml,
|
|
|
lastedUpdateTime: lastedUpdateTime
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(_react_17_0_2_react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(PreviewAll/* default */.Z, {
|
|
|
close: true,
|
|
|
data: data,
|
|
|
type: !!data.length ? 'txt' : '',
|
|
|
onClose: function onClose() {
|
|
|
return setData('');
|
|
|
},
|
|
|
monacoEditor: {
|
|
|
value: monacoValue,
|
|
|
language: 'txt',
|
|
|
onChange: function onChange() {},
|
|
|
options: {
|
|
|
readOnly: true,
|
|
|
fontSize: 14,
|
|
|
minimap: {
|
|
|
enabled: false
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "test-header",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "flex-container",
|
|
|
children: [isHtml ? /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
id: 0,
|
|
|
onClick: onChangeTab,
|
|
|
className: tabIndex === 0 ? 'active' : '',
|
|
|
children: "\u6548\u679C\u663E\u793A"
|
|
|
}) : null, /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
id: 1,
|
|
|
onClick: onChangeTab,
|
|
|
className: tabIndex === 1 ? 'active' : '',
|
|
|
children: "\u6D4B\u8BD5\u7ED3\u679C"
|
|
|
}), !!showLogTab && /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
id: 2,
|
|
|
onClick: onChangeTab,
|
|
|
className: tabIndex === 2 ? 'active' : '',
|
|
|
children: "\u81EA\u6D4B\u8FD0\u884C\u7ED3\u679C"
|
|
|
}), initDeBug && /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
id: 3,
|
|
|
onClick: onChangeTab,
|
|
|
className: tabIndex === 3 ? 'active-debug' : '',
|
|
|
children: ["\u8C03\u8BD5\u5668", /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
id: 3,
|
|
|
onClick: function onClick() {
|
|
|
return (0,util/* openNewWindow */.xg)("".concat(env/* default */.Z.API_SERVER, "/pdf/\u5E73\u53F0\u8C03\u8BD5\u5668\u529F\u80FD\u64CD\u4F5C\u8BF4\u660E.pdf"));
|
|
|
},
|
|
|
className: "iconfont icon-xiaowenhao2 font14 current ml10"
|
|
|
})]
|
|
|
}), tip && /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: test_cast_listmodules.alert,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
className: "iconfont icon-shanchuhuanjing"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: "\u8C03\u8BD5\u670D\u52A1\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u5F00\u59CB\u8C03\u8BD5\u3002"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
onClick: function onClick() {
|
|
|
return setTip(false);
|
|
|
},
|
|
|
className: "iconfont icon-guanbi7"
|
|
|
})]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: onResizeSet,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont ".concat(moveY === 0.01 ? 'icon-shousuo' : 'icon-zhankai', " icon-zhankai")
|
|
|
})
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("section", {
|
|
|
className: "test-case-run-wrp",
|
|
|
style: {
|
|
|
display: tabIndex === 2 ? 'flex' : 'none',
|
|
|
flex: 1,
|
|
|
flexDirection: 'column',
|
|
|
overflow: 'auto',
|
|
|
paddingLeft: 20
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
className: "test-case-run-header",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: '200px',
|
|
|
children: "- \u81EA\u6D4B\u8F93\u5165 -"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "1",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "ml12",
|
|
|
children: "- \u8FD0\u884C\u7ED3\u679C -"
|
|
|
})
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
className: "h100 mr10 mb10",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: '200px',
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z.TextArea, {
|
|
|
defaultValue: test_sets === null || test_sets === void 0 || (_test_sets$2 = test_sets[0]) === null || _test_sets$2 === void 0 ? void 0 : _test_sets$2['input'],
|
|
|
style: {
|
|
|
minHeight: 'calc(100% - 15px)'
|
|
|
},
|
|
|
onChange: function onChange(e) {
|
|
|
mediator/* default */.Z.publish('caseInputValue', e.target.value);
|
|
|
}
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "1",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
style: {
|
|
|
flex: 1,
|
|
|
position: 'absolute',
|
|
|
width: '100%',
|
|
|
height: '100%',
|
|
|
overflow: 'auto'
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(log, {
|
|
|
sshConfigData: {
|
|
|
link_url: "".concat(taskData === null || taskData === void 0 ? void 0 : taskData.wss_url, "/log")
|
|
|
},
|
|
|
tpId: taskData === null || taskData === void 0 || (_taskData$myshixun = taskData.myshixun) === null || _taskData$myshixun === void 0 ? void 0 : _taskData$myshixun.id,
|
|
|
sid: 1
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("section", {
|
|
|
style: {
|
|
|
display: tabIndex === 1 ? 'block' : 'none',
|
|
|
flex: 1
|
|
|
},
|
|
|
children: [last_compile_output ? /*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
className: "test-result ".concat(sets_error_count === 0 ? 'success' : 'failer'),
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
className: "count",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
width: 16,
|
|
|
src: sets_error_count === 0 ? success/* default */.Z : mark/* default */.Z
|
|
|
}), test_sets_count - sets_error_count, "/", test_sets_count]
|
|
|
}), sets_error_count == 0 ? /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "count",
|
|
|
children: "\u5168\u90E8\u901A\u8FC7"
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
dangerouslySetInnerHTML: {
|
|
|
__html: last_compile_output
|
|
|
}
|
|
|
})
|
|
|
// <RenderHtml
|
|
|
// className="last-compile-output"
|
|
|
// value={last_compile_output}
|
|
|
// />
|
|
|
]
|
|
|
}) : null, /*#__PURE__*/(0,jsx_runtime.jsx)("ul", {
|
|
|
className: "test-case-list",
|
|
|
children: test_sets.map(function (item, i) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(test_case_list_TestCaseItem, objectSpread2_default()(objectSpread2_default()({
|
|
|
setData: setData,
|
|
|
setMonacoValue: setMonacoValue,
|
|
|
allowed_unlock: allowed_unlock,
|
|
|
identity: identity,
|
|
|
test_sets_view: test_sets_view,
|
|
|
language: language,
|
|
|
last_compile_output: last_compile_output,
|
|
|
title: "\u6D4B\u8BD5\u96C6".concat(i + 1)
|
|
|
}, item), {}, {
|
|
|
isActive: index === i,
|
|
|
id: i,
|
|
|
taskData: taskData,
|
|
|
onActive: trigger
|
|
|
}), 'item' + i);
|
|
|
})
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(test_case_list_Debugger, {
|
|
|
myshixunIdentifier: myshixunIdentifier,
|
|
|
setHighlightLine: setHighlightLine,
|
|
|
setStartDebug: setStartDebug,
|
|
|
startDebug: startDebug,
|
|
|
setBreakPointValue: setBreakPointValue,
|
|
|
unique: unique,
|
|
|
onChangePath: onChangePath,
|
|
|
currentPath: currentPath,
|
|
|
visible: tabIndex === 3
|
|
|
}), isHtml ? /*#__PURE__*/(0,jsx_runtime.jsx)(html_code_view, objectSpread2_default()({}, htmlCodeViewOption)) : null]
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/vnc-view/index.less
|
|
|
var vnc_view = __webpack_require__(34459);
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/vnc-view/vnc-panel/index.tsx + 2 modules
|
|
|
var vnc_panel = __webpack_require__(97926);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/vnc-view/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var tasks_vnc_view = (function (_ref) {
|
|
|
var taskData = _ref.taskData,
|
|
|
itemData = _ref.itemData;
|
|
|
var shixun_environment_id = itemData.shixun_environment_id,
|
|
|
vnc_url = itemData.vnc_url,
|
|
|
windows_vnc = itemData.windows_vnc,
|
|
|
linux_vnc = itemData.linux_vnc,
|
|
|
virtual_machine = itemData.virtual_machine,
|
|
|
tab_type = itemData.tab_type,
|
|
|
instance_startup_type = itemData.instance_startup_type,
|
|
|
index_tab = itemData.index_tab,
|
|
|
tpi_type = itemData.tpi_type;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(vnc_panel/* default */.Z, {
|
|
|
shixun_environment_id: shixun_environment_id,
|
|
|
vnc_url: vnc_url,
|
|
|
window_vnc_url: windows_vnc,
|
|
|
virtual_machine: virtual_machine,
|
|
|
linux_vnc: linux_vnc,
|
|
|
tab_type: tab_type,
|
|
|
instance_startup_type: instance_startup_type,
|
|
|
taskData: taskData,
|
|
|
index_tab: index_tab,
|
|
|
tpi_type: tpi_type
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/upload/index.js + 24 modules
|
|
|
var upload = __webpack_require__(48826);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@ant-design_icons@5.2.6@@ant-design/icons/es/icons/UploadOutlined.js + 1 modules
|
|
|
var UploadOutlined = __webpack_require__(96402);
|
|
|
// EXTERNAL MODULE: ./node_modules/_crypto-js@4.1.1@crypto-js/index.js
|
|
|
var _crypto_js_4_1_1_crypto_js = __webpack_require__(28209);
|
|
|
var _crypto_js_4_1_1_crypto_js_default = /*#__PURE__*/__webpack_require__.n(_crypto_js_4_1_1_crypto_js);
|
|
|
// EXTERNAL MODULE: ./node_modules/_uuid@8.3.0@uuid/dist/esm-browser/v4.js + 4 modules
|
|
|
var v4 = __webpack_require__(1012);
|
|
|
// EXTERNAL MODULE: ./node_modules/_ali-oss@6.10.0@ali-oss/dist/aliyun-oss-sdk.js
|
|
|
var aliyun_oss_sdk = __webpack_require__(75264);
|
|
|
var aliyun_oss_sdk_default = /*#__PURE__*/__webpack_require__.n(aliyun_oss_sdk);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/OfficeUpload/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var OfficeUploadmodules = ({"flex_box_center":"flex_box_center___RAC1w","flex_space_between":"flex_space_between___lOFsM","flex_box_vertical_center":"flex_box_vertical_center___ugzOq","flex_box_center_end":"flex_box_center_end___Oygpk","flex_box_column":"flex_box_column___axzyr","files":"files___kFNIo"});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/OfficeUpload/uploadOffice.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var uploadOffice_excluded = ["user", "cancelUpload", "defaultFilelist", "getData"];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var decrypt = function decrypt(word) {
|
|
|
var ENC_KEY = "bf3c199c2470cb477d907b1e0917c17b";
|
|
|
var IV = "5183666c72eec9e4";
|
|
|
var key = _crypto_js_4_1_1_crypto_js_default().enc.Utf8.parse(ENC_KEY);
|
|
|
var iv = _crypto_js_4_1_1_crypto_js_default().enc.Utf8.parse(IV);
|
|
|
var decrypt = _crypto_js_4_1_1_crypto_js_default().AES.decrypt(word, key, {
|
|
|
iv: iv,
|
|
|
mode: (_crypto_js_4_1_1_crypto_js_default()).mode.CBC
|
|
|
// padding: CryptoJS.pad.ZeroPadding
|
|
|
});
|
|
|
return decrypt.toString((_crypto_js_4_1_1_crypto_js_default()).enc.Utf8);
|
|
|
};
|
|
|
var tempCheckpoint;
|
|
|
var UploadFile = function UploadFile(_ref) {
|
|
|
var user = _ref.user,
|
|
|
cancelUpload = _ref.cancelUpload,
|
|
|
defaultFilelist = _ref.defaultFilelist,
|
|
|
getData = _ref.getData,
|
|
|
props = objectWithoutProperties_default()(_ref, uploadOffice_excluded);
|
|
|
var _useState = (0,_react_17_0_2_react.useState)([]),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
fileList = _useState2[0],
|
|
|
setFileList = _useState2[1];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)(""),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
data = _useState4[0],
|
|
|
setData = _useState4[1];
|
|
|
var _useState5 = (0,_react_17_0_2_react.useState)(),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
client = _useState6[0],
|
|
|
setClient = _useState6[1];
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (defaultFilelist) {
|
|
|
setFileList(toConsumableArray_default()(defaultFilelist));
|
|
|
}
|
|
|
}, [defaultFilelist]);
|
|
|
var _props = {
|
|
|
onPreview: function onPreview(e) {
|
|
|
// debugger
|
|
|
setData(e.response.url);
|
|
|
},
|
|
|
action: env/* default */.Z.API_SERVER + '/api/attachments.json',
|
|
|
onRemove: function () {
|
|
|
var _onRemove = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee(e) {
|
|
|
var _e$response;
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.next = 2;
|
|
|
return (0,utils_fetch/* default */.ZP)("/api/attachments/".concat(e.id || (e === null || e === void 0 || (_e$response = e.response) === null || _e$response === void 0 ? void 0 : _e$response.id), ".json"), {
|
|
|
method: "delete",
|
|
|
body: {
|
|
|
id: e.id
|
|
|
}
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context.sent;
|
|
|
getData();
|
|
|
setFileList(toConsumableArray_default()(fileList.filter(function (item) {
|
|
|
return item.name !== e.name;
|
|
|
})));
|
|
|
props.onChange(fileList.filter(function (item) {
|
|
|
return item.name !== e.name;
|
|
|
}));
|
|
|
case 6:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
function onRemove(_x) {
|
|
|
return _onRemove.apply(this, arguments);
|
|
|
}
|
|
|
return onRemove;
|
|
|
}(),
|
|
|
data: {
|
|
|
game_identifier: props.identifier
|
|
|
},
|
|
|
disabled: props.disabled,
|
|
|
onChange: function onChange(info) {
|
|
|
setFileList(info.fileList);
|
|
|
},
|
|
|
multiple: true,
|
|
|
fileList: fileList
|
|
|
// customRequest: async (options: any) => {
|
|
|
// const res: any = await _uploadFiles(options.file, {
|
|
|
// login: user?.userInfo?.login,
|
|
|
// container_type: props.container_type,
|
|
|
// container_id: props.identifier,
|
|
|
// description: props.description,
|
|
|
// realFileName: props.realFileName
|
|
|
// })
|
|
|
// options.onSuccess({
|
|
|
// file: options.file,
|
|
|
// uid: res?.data?.attachment_id,
|
|
|
// id: res?.data?.attachment_id,
|
|
|
// })
|
|
|
// },
|
|
|
// beforeUpload: async (file: any) => {
|
|
|
// }
|
|
|
};
|
|
|
var _uploadFiles = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2(file, obj) {
|
|
|
var _res$data, _res$data2, _res$data3, _res$data4, _res$data5, _res$data6;
|
|
|
var name, res, namearrs, filename;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
obj.file_name = file.name;
|
|
|
name = file.name;
|
|
|
_context2.next = 4;
|
|
|
return (0,utils_fetch/* default */.ZP)('/api/buckets/get_upload_token_for_file.json', {
|
|
|
method: "get"
|
|
|
});
|
|
|
case 4:
|
|
|
res = _context2.sent;
|
|
|
res.data = JSON.parse(decrypt(res.data));
|
|
|
if (!((res === null || res === void 0 ? void 0 : res.status) !== 0)) {
|
|
|
_context2.next = 12;
|
|
|
break;
|
|
|
}
|
|
|
fileList[fileList.findIndex(function (item) {
|
|
|
return item.name === name;
|
|
|
})]['status'] = 'error';
|
|
|
fileList[fileList.findIndex(function (item) {
|
|
|
return item.name === name;
|
|
|
})]['file']['status'] = 'error';
|
|
|
props.onChange(fileList);
|
|
|
message/* default */.ZP.warning("上传失败,请重新尝试");
|
|
|
return _context2.abrupt("return");
|
|
|
case 12:
|
|
|
client = new (aliyun_oss_sdk_default())({
|
|
|
endpoint: res === null || res === void 0 || (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.end_point,
|
|
|
region: res === null || res === void 0 || (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.region,
|
|
|
accessKeyId: res === null || res === void 0 || (_res$data3 = res.data) === null || _res$data3 === void 0 ? void 0 : _res$data3.access_key_id,
|
|
|
accessKeySecret: res === null || res === void 0 || (_res$data4 = res.data) === null || _res$data4 === void 0 ? void 0 : _res$data4.access_key_secret,
|
|
|
bucket: res === null || res === void 0 || (_res$data5 = res.data) === null || _res$data5 === void 0 ? void 0 : _res$data5.bucket,
|
|
|
stsToken: res === null || res === void 0 || (_res$data6 = res.data) === null || _res$data6 === void 0 ? void 0 : _res$data6.security_token
|
|
|
});
|
|
|
console.log('files:', file, res);
|
|
|
setClient(client);
|
|
|
// const filename = uuidv4()
|
|
|
namearrs = file.name.split(".");
|
|
|
namearrs.pop();
|
|
|
filename = obj.realFileName ? namearrs : (0,v4/* default */.Z)();
|
|
|
console.log("obj1111:", obj);
|
|
|
return _context2.abrupt("return", new Promise(function (resolve, reject) {
|
|
|
var _res$data7;
|
|
|
// try {
|
|
|
client.multipartUpload("".concat(props.identifier, "/").concat(filename.join("")).concat(name.indexOf(".") > -1 ? '.' + name.split(".").pop() : ""), new Blob([file], {
|
|
|
type: file.type
|
|
|
}), {
|
|
|
timeout: 3600 * 1000,
|
|
|
partSize: 1002400,
|
|
|
progress: function progress(p, checkpoint, res) {
|
|
|
try {
|
|
|
console.log("进度", p, checkpoint, res);
|
|
|
var index = fileList.findIndex(function (item) {
|
|
|
return item.name === name;
|
|
|
});
|
|
|
fileList[index]['file']['percent'] = p * 100;
|
|
|
if (p === 1) {
|
|
|
fileList[index]['status'] = 'done';
|
|
|
fileList[index]['file']['status'] = 'done';
|
|
|
props.onChange(fileList);
|
|
|
}
|
|
|
fileList[index].tempCheckpoint = checkpoint;
|
|
|
setFileList(toConsumableArray_default()(fileList));
|
|
|
} catch (e) {}
|
|
|
},
|
|
|
// checkpoint: fileList[fileList.findIndex(item => item.name === name)].tempCheckpoint,
|
|
|
callback: {
|
|
|
customValue: {
|
|
|
id: name + ''
|
|
|
},
|
|
|
url: res === null || res === void 0 || (_res$data7 = res.data) === null || _res$data7 === void 0 ? void 0 : _res$data7.callback_url,
|
|
|
host: res === null || res === void 0 ? void 0 : res.data.bucket_host,
|
|
|
body: 'bucket=${bucket}&object=${object}&etag=${etag}&size=${size}&mimeType=${mimeType}&my_var=${x:my_var}&' + (0,utils_fetch/* parseParams */.rz)(obj)
|
|
|
}
|
|
|
}).then(function (result) {
|
|
|
var _result$data;
|
|
|
var status = 'done';
|
|
|
if (((_result$data = result.data) === null || _result$data === void 0 ? void 0 : _result$data.status) === 0) {
|
|
|
getData();
|
|
|
} else {
|
|
|
var _result$data2;
|
|
|
message/* default */.ZP.warning((_result$data2 = result.data) === null || _result$data2 === void 0 ? void 0 : _result$data2.message);
|
|
|
status = 'error';
|
|
|
}
|
|
|
props.onChange(fileList);
|
|
|
resolve(result === null || result === void 0 ? void 0 : result.data);
|
|
|
})["catch"](function (err) {
|
|
|
reject(err);
|
|
|
console.log("err:", err);
|
|
|
});
|
|
|
}));
|
|
|
case 20:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return function _uploadFiles(_x2, _x3) {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (fileList.every(function (item) {
|
|
|
return item === 'done' || item === 'error';
|
|
|
})) {
|
|
|
props.onComplete(fileList);
|
|
|
}
|
|
|
console.log("fileList:", fileList);
|
|
|
}, [fileList]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (cancelUpload) {
|
|
|
var _client;
|
|
|
(_client = client) === null || _client === void 0 || _client.cancel();
|
|
|
}
|
|
|
}, [cancelUpload]);
|
|
|
var toUpload = /*#__PURE__*/function () {
|
|
|
var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee4() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee4$(_context4) {
|
|
|
while (1) switch (_context4.prev = _context4.next) {
|
|
|
case 0:
|
|
|
fileList.map( /*#__PURE__*/function () {
|
|
|
var _ref4 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3(item) {
|
|
|
var _user$userInfo, res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
if (!((!item.status || item.status === 'error') && !cancelUpload)) {
|
|
|
_context3.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
item.status = 'uploading';
|
|
|
item.file.status = 'uploading';
|
|
|
_context3.next = 5;
|
|
|
return _uploadFiles(item, {
|
|
|
login: user === null || user === void 0 || (_user$userInfo = user.userInfo) === null || _user$userInfo === void 0 ? void 0 : _user$userInfo.login,
|
|
|
container_type: props.container_type,
|
|
|
container_id: props.identifier,
|
|
|
description: props.description,
|
|
|
realFileName: props.realFileName
|
|
|
});
|
|
|
case 5:
|
|
|
res = _context3.sent;
|
|
|
case 6:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
}));
|
|
|
return function (_x4) {
|
|
|
return _ref4.apply(this, arguments);
|
|
|
};
|
|
|
}());
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context4.stop();
|
|
|
}
|
|
|
}, _callee4);
|
|
|
}));
|
|
|
return function toUpload() {
|
|
|
return _ref3.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: OfficeUploadmodules.files,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(PreviewAll/* default */.Z, {
|
|
|
close: true,
|
|
|
data: data,
|
|
|
type: !!(data !== null && data !== void 0 && data.length) ? "office" : "",
|
|
|
onClose: function onClose() {
|
|
|
return setData("");
|
|
|
}
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(upload/* default */.Z, objectSpread2_default()(objectSpread2_default()({}, _props), {}, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
icon: /*#__PURE__*/(0,jsx_runtime.jsx)(UploadOutlined/* default */.Z, {}),
|
|
|
type: "primary",
|
|
|
children: "\u4E0A\u4F20\u6587\u4EF6"
|
|
|
})
|
|
|
}))]
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var uploadOffice = ((0,_umi_production_exports.connect)(function (_ref5) {
|
|
|
var loading = _ref5.loading,
|
|
|
globalSetting = _ref5.globalSetting,
|
|
|
user = _ref5.user;
|
|
|
return {
|
|
|
globalSetting: globalSetting,
|
|
|
loading: loading.models.competitions,
|
|
|
user: user
|
|
|
};
|
|
|
})(UploadFile));
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/OfficeUpload/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var CheckboxGroup = es_checkbox/* default */.Z.Group;
|
|
|
var ShixunsListPage = function ShixunsListPage(_ref) {
|
|
|
var _taskData$game2;
|
|
|
var classroomList = _ref.classroomList,
|
|
|
loading = _ref.loading,
|
|
|
user = _ref.user,
|
|
|
_ref$exercise_id = _ref.exercise_id,
|
|
|
exercise_id = _ref$exercise_id === void 0 ? null : _ref$exercise_id,
|
|
|
_ref$homework_common_ = _ref.homework_common_id,
|
|
|
homework_common_id = _ref$homework_common_ === void 0 ? null : _ref$homework_common_,
|
|
|
setitem = _ref.setitem,
|
|
|
taskData = _ref.taskData,
|
|
|
type = _ref.type,
|
|
|
dispatch = _ref.dispatch;
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
data = _useState2[0],
|
|
|
setData = _useState2[1];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
uploading = _useState4[0],
|
|
|
setUpLoading = _useState4[1];
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
getData();
|
|
|
}, []);
|
|
|
var getData = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var _taskData$game, _res$attachments;
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.next = 2;
|
|
|
return (0,utils_fetch/* default */.ZP)("/api/tasks/".concat(taskData === null || taskData === void 0 || (_taskData$game = taskData.game) === null || _taskData$game === void 0 ? void 0 : _taskData$game.identifier, "/get_user_attachments"), {
|
|
|
method: 'get'
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context.sent;
|
|
|
res === null || res === void 0 || (_res$attachments = res.attachments) === null || _res$attachments === void 0 || _res$attachments.map(function (item) {
|
|
|
item.status = "done";
|
|
|
item.uid = item.id;
|
|
|
item.name = item.title;
|
|
|
return item;
|
|
|
});
|
|
|
setData(res);
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function getData() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleComplete = function handleComplete(item) {
|
|
|
console.log(item, 444);
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(uploadOffice, {
|
|
|
identifier: taskData === null || taskData === void 0 || (_taskData$game2 = taskData.game) === null || _taskData$game2 === void 0 ? void 0 : _taskData$game2.identifier,
|
|
|
defaultFilelist: data === null || data === void 0 ? void 0 : data.attachments,
|
|
|
container_type: "Game",
|
|
|
uploading: uploading,
|
|
|
onChange: function onChange() {
|
|
|
uploading = false;
|
|
|
setUpLoading(true);
|
|
|
},
|
|
|
height: 300,
|
|
|
maxSize: 100 * 1024 * 1024 * 1024 //字节
|
|
|
,
|
|
|
description: "",
|
|
|
getData: getData,
|
|
|
onComplete: handleComplete,
|
|
|
realFileName: true,
|
|
|
onRemove: function onRemove() {}
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var OfficeUpload = ((0,_umi_production_exports.connect)(function (_ref3) {
|
|
|
var classroomList = _ref3.classroomList,
|
|
|
loading = _ref3.loading,
|
|
|
globalSetting = _ref3.globalSetting,
|
|
|
user = _ref3.user;
|
|
|
return {
|
|
|
classroomList: classroomList,
|
|
|
globalSetting: globalSetting,
|
|
|
loading: loading.effects,
|
|
|
user: user
|
|
|
};
|
|
|
})(ShixunsListPage));
|
|
|
;// CONCATENATED MODULE: ./src/assets/images/AssistantCode4.png
|
|
|
var AssistantCode4_namespaceObject = "data:image/png;base64,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2WUXiTm84YGp0e/GUEhWr1olTz75pBKOH6BxvACkzz77TCorK/U+GMyYMWPkgAMOUCcW18KFC+XNN99UwseWw/7t1auXnHjiidK1a1e9JwigIe6f/exn6pgzbzfAZi0KCgokhPfb3astFJKqykplToAOUHtdBpyRI0fKkCFDUlpCJGTbtm0lOycn/s0B+sVB8DC6jz76SJ2Bfl5oJNugQYPk2OOOU2AzNkwM9f67775T8ASV0DC70aNHy0knnaR70GxXKKSO2q+//lo++/RTWbFihf47DegUAI0UPPSww1RijRgxIhARpbKBs2fPVnt5zpw5voBGIt52220yfvx4KSkp0fsGDBggZ555ZsJxxc8gWmxMxkTi5+blyshRI+Vvf/2b2q1BAQ1BQuCmbvNvpOoJJ5ygzjo/tW7Lli0qxW+55RaBMfpdgBENw+zzIOsFEPnmyy+/XPbfbz9p1759kMcUwDDL++67T/71r3/5AhrN6IgjjpA//OEPCeaH3wC79IMPPlCJGBTQMC3Mif/93/9NyUkV5INg1C+9/LI8/vjjMn3aNPWypwGdAqCLiopk7LhxctWVV6rEau5r1qxZqtoaALxUbsCJkwqiNEDvuuuucv7556tzyaTA+++/L//zP/8j33zzjdTW1ioxjdl7jNx9192JEFEQCe31jXimcWJhf/t5UgE0WsSNN96oUqS5r9122009zIcffriaJkEvNJb/+7//k3/84x/b+CFsDFTko48+Wm10zBguQnus+9tvv63SOhVAX3jhhXLXXXclmGLQuTZ2HxL5mQkT5MEHH5Spn32mmlga0CkC+qixY+XKX/9aUBPtSpaYkWxT3I4s4pd4KBsDNFLvvvvvk80lm3V4AIa0BNBmz6JSAmjABOeGAPfee2/55z//mZDQELeXU8zLweb8jn79+imgnZ5vS4Kx+4hxA+j//u//3grQXmMHWT/3+HwzEhRAozkF3QskNM48/tjldjIaoP/6179Kt27d9LZFixbJn//8Z3nnnXdSBvQFF1yg6+7UZoJ8sxftONcPAE949lkF9OdTp6YB3RgHdNvQSGg3oAELIZTvv/++seESv4c48/LylPtDMKbOBgE0KvdTTz8lb735ppSVbVG1sVPHTjJs2DDZY88f7FxUxE8++USJj40H0F27dZXDDj1MOnXqpHPBMUQsmZgpzjOzafEP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";
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var code_repository_excluded = ["taskData", "moveY", "isHtml", "isNotice", "onResizeYStart", "_dispatch", "codeRepData", "isEditPath", "onEditRepCode", "onUpdateCode", "onResizeSetContainer", "onEval", "evaluateLoading", "evaluateMessage", "onResizeCodeArea", "onShowDir", "onChangePath", "onShowNotice", "onResetCode", "onResetGitCode", "onResetPassedCode", "onFinishDisplayHtml", "onGetUnity3dMessage", "unity_3d_routes", "with_code_file", "tabActiveParams", "setTabActiveParams", "tabs", "setTabs", "codeLoading", "setCodeLoading", "userInfo"];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var code_repository_initialState = {
|
|
|
theme: (0,urlTool/* fromStore */.G)('cmCodeMode', 'vs-dark'),
|
|
|
fontSize: (0,urlTool/* fromStore */.G)('cmFontSize', 16),
|
|
|
tabToSpace: (0,urlTool/* fromStore */.G)('cmTabToSpace', true),
|
|
|
autoFormat: (0,urlTool/* fromStore */.G)('autoFormat', false)
|
|
|
};
|
|
|
function code_repository_reducer(state, action) {
|
|
|
switch (action.type) {
|
|
|
case constant/* SET_EDITOR_THEME */.$Y:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
theme: action.payload
|
|
|
});
|
|
|
case constant/* SET_EDITOR_FONTSIZE */.Tp:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
fontSize: action.payload
|
|
|
});
|
|
|
case constant/* ON_TAB_TO_SPACE */.um:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
tabToSpace: action.payload
|
|
|
});
|
|
|
case constant/* ON_AUTO_FORMAT */.QF:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
autoFormat: action.payload
|
|
|
});
|
|
|
default:
|
|
|
throw new Error();
|
|
|
}
|
|
|
}
|
|
|
/* harmony default export */ var code_repository = (function (_ref) {
|
|
|
var taskData = _ref.taskData,
|
|
|
moveY = _ref.moveY,
|
|
|
isHtml = _ref.isHtml,
|
|
|
isNotice = _ref.isNotice,
|
|
|
onResizeYStart = _ref.onResizeYStart,
|
|
|
_dispatch = _ref._dispatch,
|
|
|
codeRepData = _ref.codeRepData,
|
|
|
isEditPath = _ref.isEditPath,
|
|
|
onEditRepCode = _ref.onEditRepCode,
|
|
|
onUpdateCode = _ref.onUpdateCode,
|
|
|
onResizeSetContainer = _ref.onResizeSetContainer,
|
|
|
onEval = _ref.onEval,
|
|
|
evaluateLoading = _ref.evaluateLoading,
|
|
|
evaluateMessage = _ref.evaluateMessage,
|
|
|
onResizeCodeArea = _ref.onResizeCodeArea,
|
|
|
onShowDir = _ref.onShowDir,
|
|
|
_onChangePath = _ref.onChangePath,
|
|
|
onShowNotice = _ref.onShowNotice,
|
|
|
onResetCode = _ref.onResetCode,
|
|
|
onResetGitCode = _ref.onResetGitCode,
|
|
|
onResetPassedCode = _ref.onResetPassedCode,
|
|
|
onFinishDisplayHtml = _ref.onFinishDisplayHtml,
|
|
|
onGetUnity3dMessage = _ref.onGetUnity3dMessage,
|
|
|
unity_3d_routes = _ref.unity_3d_routes,
|
|
|
with_code_file = _ref.with_code_file,
|
|
|
tabActiveParams = _ref.tabActiveParams,
|
|
|
setTabActiveParams = _ref.setTabActiveParams,
|
|
|
tabs = _ref.tabs,
|
|
|
setTabs = _ref.setTabs,
|
|
|
codeLoading = _ref.codeLoading,
|
|
|
setCodeLoading = _ref.setCodeLoading,
|
|
|
userInfo = _ref.userInfo,
|
|
|
props = objectWithoutProperties_default()(_ref, code_repository_excluded);
|
|
|
var _useSearchParams = (0,_umi_production_exports.useSearchParams)(),
|
|
|
_useSearchParams2 = slicedToArray_default()(_useSearchParams, 1),
|
|
|
searchParams = _useSearchParams2[0];
|
|
|
var codeAreaContainerRef = (0,_react_17_0_2_react.useRef)();
|
|
|
var _useReducer = (0,_react_17_0_2_react.useReducer)(code_repository_reducer, code_repository_initialState),
|
|
|
_useReducer2 = slicedToArray_default()(_useReducer, 2),
|
|
|
state = _useReducer2[0],
|
|
|
dispatch = _useReducer2[1];
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
showCaseList = _useState2[0],
|
|
|
setShowCaseList = _useState2[1];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
showEditorSetting = _useState4[0],
|
|
|
setShowEditorSetting = _useState4[1];
|
|
|
var _useState5 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
isResizeLarge = _useState6[0],
|
|
|
setIsResizeLarge = _useState6[1];
|
|
|
var _useState7 = (0,_react_17_0_2_react.useState)([]),
|
|
|
_useState8 = slicedToArray_default()(_useState7, 2),
|
|
|
breakPointValue = _useState8[0],
|
|
|
setBreakPointValue = _useState8[1];
|
|
|
var _useState9 = (0,_react_17_0_2_react.useState)(null),
|
|
|
_useState10 = slicedToArray_default()(_useState9, 2),
|
|
|
highlightLine = _useState10[0],
|
|
|
setHighlightLine = _useState10[1];
|
|
|
var _useState11 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState12 = slicedToArray_default()(_useState11, 2),
|
|
|
startDebug = _useState12[0],
|
|
|
setStartDebug = _useState12[1];
|
|
|
var _useState13 = (0,_react_17_0_2_react.useState)(''),
|
|
|
_useState14 = slicedToArray_default()(_useState13, 2),
|
|
|
unique = _useState14[0],
|
|
|
setUnique = _useState14[1];
|
|
|
var _useState15 = (0,_react_17_0_2_react.useState)({}),
|
|
|
_useState16 = slicedToArray_default()(_useState15, 2),
|
|
|
allBreakPointValue = _useState16[0],
|
|
|
setAllBreakPointValue = _useState16[1];
|
|
|
var initTips = (0,_react_17_0_2_react.useRef)([false, false]);
|
|
|
var initTipsOpenKey = (0,_react_17_0_2_react.useRef)(null);
|
|
|
var isU3d = unity_3d_routes && !with_code_file;
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
var unSub = mediator/* default */.Z.subscribe('show-case-result', function (status) {
|
|
|
onResizeCodeArea(1); //重置moveY为0
|
|
|
if (status) {
|
|
|
setShowCaseList(status);
|
|
|
} else {
|
|
|
setShowCaseList(!showCaseList);
|
|
|
}
|
|
|
});
|
|
|
return unSub;
|
|
|
}, [showCaseList]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
document.addEventListener((0,fullscreen/* fullscreenChange */.gH)(), fullChange);
|
|
|
return function () {
|
|
|
document.removeEventListener((0,fullscreen/* fullscreenChange */.gH)(), fullChange);
|
|
|
};
|
|
|
}, [taskData]);
|
|
|
function onRightFullHandler() {
|
|
|
setIsResizeLarge(!isResizeLarge);
|
|
|
if ((0,fullscreen/* IsFull */.vp)()) {
|
|
|
(0,fullscreen/* exitFull */.BU)();
|
|
|
} else {
|
|
|
(0,fullscreen/* requestFullScreen */.Dj)(document.body);
|
|
|
}
|
|
|
}
|
|
|
var fullChange = function fullChange(e) {
|
|
|
if (e.target.localName !== 'body' || searchParams.get("isFullScreen") === 'true') return;
|
|
|
var taskLeftPanel = document.getElementById('task-left-panel');
|
|
|
var nextElement = taskLeftPanel.nextElementSibling;
|
|
|
if ((0,fullscreen/* IsFull */.vp)()) {
|
|
|
setIsResizeLarge(true);
|
|
|
if (!(taskData !== null && taskData !== void 0 && taskData.hideLeftPanel)) {
|
|
|
taskLeftPanel.classList.add('hide');
|
|
|
nextElement.classList.add('hide');
|
|
|
}
|
|
|
} else {
|
|
|
setIsResizeLarge(false);
|
|
|
if (!(taskData !== null && taskData !== void 0 && taskData.hideLeftPanel)) {
|
|
|
taskLeftPanel.classList.remove('hide');
|
|
|
nextElement.classList.remove('hide');
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
function onCodeChange(value) {
|
|
|
onEditRepCode(value);
|
|
|
}
|
|
|
|
|
|
//dispatch操作
|
|
|
function onFontSizeChange(value) {
|
|
|
dispatch({
|
|
|
type: constant/* SET_EDITOR_FONTSIZE */.Tp,
|
|
|
payload: value
|
|
|
});
|
|
|
(0,urlTool/* toStore */.t)('cmFontSize', value);
|
|
|
}
|
|
|
function onCodeModeChange(value) {
|
|
|
dispatch({
|
|
|
type: constant/* SET_EDITOR_THEME */.$Y,
|
|
|
payload: value
|
|
|
});
|
|
|
(0,urlTool/* toStore */.t)('cmCodeMode', value);
|
|
|
}
|
|
|
function onTabToSpace(checked) {
|
|
|
dispatch({
|
|
|
type: constant/* ON_TAB_TO_SPACE */.um,
|
|
|
payload: checked
|
|
|
});
|
|
|
(0,urlTool/* toStore */.t)('cmTabToSpace', checked);
|
|
|
}
|
|
|
function onAutoFormat(checked) {
|
|
|
dispatch({
|
|
|
type: constant/* ON_AUTO_FORMAT */.QF,
|
|
|
payload: checked
|
|
|
});
|
|
|
(0,urlTool/* toStore */.t)('autoFormat', checked);
|
|
|
}
|
|
|
function formatDocument() {
|
|
|
mediator/* default */.Z.publish("formatDocument");
|
|
|
}
|
|
|
function onShowCodeSetting() {
|
|
|
setShowEditorSetting(!showEditorSetting);
|
|
|
}
|
|
|
var codeAreaHeight = moveY ? moveY !== '100%' ? "".concat(moveY - 54, "px") : moveY : showCaseList ? '70%' : '100%';
|
|
|
var testSetHeight = moveY === '100%' ? 0 : "calc(100% - 54px - ".concat(codeAreaHeight, ")");
|
|
|
var index_tab = tabActiveParams.index_tab,
|
|
|
shixun_environment_id = tabActiveParams.shixun_environment_id,
|
|
|
allow_use_code_debugger = tabActiveParams.allow_use_code_debugger,
|
|
|
tab_type = tabActiveParams.tab_type;
|
|
|
var loading = codeRepData.loading,
|
|
|
content = codeRepData.content,
|
|
|
language = codeRepData.language,
|
|
|
filename = codeRepData.filename,
|
|
|
file_type = codeRepData.file_type,
|
|
|
lastedUpdateTime = codeRepData.lastedUpdateTime,
|
|
|
paths = codeRepData.paths,
|
|
|
currentPath = codeRepData.currentPath;
|
|
|
var fontSize = state.fontSize,
|
|
|
theme = state.theme,
|
|
|
tabToSpace = state.tabToSpace,
|
|
|
autoFormat = state.autoFormat;
|
|
|
var shixun = taskData.shixun,
|
|
|
test_sets = taskData.test_sets,
|
|
|
test_sets_count = taskData.test_sets_count,
|
|
|
sets_error_count = taskData.sets_error_count,
|
|
|
last_compile_output = taskData.last_compile_output,
|
|
|
game = taskData.game,
|
|
|
monitoring_url = taskData.monitoring_url,
|
|
|
git_url = taskData.git_url,
|
|
|
myshixun = taskData.myshixun,
|
|
|
user = taskData.user,
|
|
|
allowed_unlock = taskData.allowed_unlock,
|
|
|
shixun_environments = taskData.shixun_environments,
|
|
|
start_permanent = taskData.start_permanent;
|
|
|
var testCaseListOption = {
|
|
|
onFinishDisplayHtml: onFinishDisplayHtml,
|
|
|
allowed_unlock: allowed_unlock,
|
|
|
onResizeSetContainer: onResizeSetContainer,
|
|
|
moveY: moveY,
|
|
|
language: language,
|
|
|
content: content,
|
|
|
isHtml: isHtml,
|
|
|
myshixunIdentifier: myshixun.identifier,
|
|
|
test_sets_view: game.test_sets_view,
|
|
|
identity: user.identity,
|
|
|
lastedUpdateTime: lastedUpdateTime,
|
|
|
test_sets: test_sets,
|
|
|
test_sets_count: test_sets_count,
|
|
|
sets_error_count: sets_error_count,
|
|
|
last_compile_output: last_compile_output,
|
|
|
startDebug: startDebug,
|
|
|
unique: unique,
|
|
|
setHighlightLine: setHighlightLine,
|
|
|
setStartDebug: setStartDebug,
|
|
|
setBreakPointValue: setBreakPointValue,
|
|
|
onChangePath: _onChangePath,
|
|
|
currentPath: currentPath
|
|
|
};
|
|
|
var codeAreaOption = {
|
|
|
content: content,
|
|
|
language: language,
|
|
|
filename: filename,
|
|
|
file_type: file_type,
|
|
|
onCodeChange: onCodeChange,
|
|
|
breakPointValue: breakPointValue,
|
|
|
setBreakPointValue: setBreakPointValue,
|
|
|
highlightLine: highlightLine,
|
|
|
setHighlightLine: setHighlightLine,
|
|
|
startDebug: startDebug,
|
|
|
openBreakPoint: !!allow_use_code_debugger,
|
|
|
theme: theme,
|
|
|
taskData: taskData,
|
|
|
onSave: onUpdateCode,
|
|
|
forbidCopy: shixun.forbid_copy,
|
|
|
isEditPath: isEditPath,
|
|
|
currentPath: currentPath,
|
|
|
unique: unique,
|
|
|
code_edit_permission: shixun.code_edit_permission,
|
|
|
allBreakPointValue: allBreakPointValue,
|
|
|
setAllBreakPointValue: setAllBreakPointValue,
|
|
|
monacoOptions: {
|
|
|
fontSize: fontSize,
|
|
|
insertSpaces: tabToSpace,
|
|
|
autoFormat: autoFormat,
|
|
|
readOnly: !isEditPath && !shixun.code_edit_permission || startDebug
|
|
|
}
|
|
|
};
|
|
|
var actionBarOption = {
|
|
|
loading: loading,
|
|
|
lastedUpdateTime: lastedUpdateTime,
|
|
|
moveY: moveY,
|
|
|
code_hidden: !shixun.show_code_dir,
|
|
|
gameStatus: game.status,
|
|
|
myshixun: myshixun,
|
|
|
game: game,
|
|
|
monitoring_url: monitoring_url,
|
|
|
currentPath: currentPath,
|
|
|
isEditPath: isEditPath,
|
|
|
isNotice: isNotice,
|
|
|
git_url: git_url,
|
|
|
taskData: taskData,
|
|
|
onResetCode: onResetCode,
|
|
|
onResetGitCode: onResetGitCode,
|
|
|
onResetPassedCode: onResetPassedCode,
|
|
|
onShowNotice: onShowNotice,
|
|
|
onShowDir: onShowDir,
|
|
|
onResizeCodeArea: onResizeCodeArea,
|
|
|
onUpdateCode: onUpdateCode,
|
|
|
isResizeLarge: isResizeLarge,
|
|
|
tab_type: tab_type,
|
|
|
shixun: shixun,
|
|
|
startDebug: startDebug,
|
|
|
breakPointValue: breakPointValue,
|
|
|
setBreakPointValue: setBreakPointValue,
|
|
|
setStartDebug: setStartDebug,
|
|
|
onShowCodeSetting: onShowCodeSetting,
|
|
|
onRightFullHandler: onRightFullHandler,
|
|
|
setHighlightLine: setHighlightLine,
|
|
|
unique: unique,
|
|
|
setUnique: setUnique,
|
|
|
allow_use_code_debugger: allow_use_code_debugger,
|
|
|
allBreakPointValue: allBreakPointValue,
|
|
|
setAllBreakPointValue: setAllBreakPointValue
|
|
|
};
|
|
|
var tpiCodeSettingOption = {
|
|
|
onFontSizeChange: onFontSizeChange,
|
|
|
cmFontSize: fontSize,
|
|
|
tabToSpace: tabToSpace,
|
|
|
cmCodeMode: theme,
|
|
|
onCodeModeChange: onCodeModeChange,
|
|
|
onTabToSpace: onTabToSpace,
|
|
|
onAutoFormat: onAutoFormat,
|
|
|
formatDocument: formatDocument,
|
|
|
autoFormat: autoFormat,
|
|
|
shixun: shixun
|
|
|
};
|
|
|
var handleTabsChange = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee(item) {
|
|
|
var homeworkCommonId;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
// if (startDebug) {
|
|
|
// message.warning('代码正在调试中')
|
|
|
// return
|
|
|
// }
|
|
|
homeworkCommonId = searchParams.get('homework_common_id');
|
|
|
setTabActiveParams(item);
|
|
|
settingNotification(item);
|
|
|
if (item.tab_type !== 1) {
|
|
|
if (homeworkCommonId) {
|
|
|
(0,service/* commitFiles */.ZH)(game.identifier, {
|
|
|
homework_common_id: homeworkCommonId,
|
|
|
shixun_environment_id: item.shixun_environment_id
|
|
|
});
|
|
|
(0,service/* pullFiles */.gn)(game.identifier, {
|
|
|
homework_common_id: homeworkCommonId,
|
|
|
shixun_environment_id: item.shixun_environment_id
|
|
|
});
|
|
|
} else {
|
|
|
(0,service/* commitFiles */.ZH)(game.identifier, {
|
|
|
shixun_environment_id: item.shixun_environment_id
|
|
|
});
|
|
|
(0,service/* pullFiles */.gn)(game.identifier, {
|
|
|
shixun_environment_id: item.shixun_environment_id
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
if (item.tab_type === 1) {
|
|
|
setShowCaseList(true);
|
|
|
} else {
|
|
|
setCodeLoading(true); //避免切到loading延迟
|
|
|
}
|
|
|
if (item.tab_type === 1 && tab_type) {
|
|
|
//点击代码编辑器拉取最新代码并且第一次加载不调
|
|
|
//因为切tab时会保存代码,有可能不会拉取最新代码,这里可以更新代码
|
|
|
_dispatch({
|
|
|
type: constant/* UPDATE_TIMESTRAP */.G9,
|
|
|
payload: Date.now()
|
|
|
});
|
|
|
}
|
|
|
if (item.tab_type !== 1 && tab_type === 1) {
|
|
|
//点击非代码编辑器需要保存代码
|
|
|
onUpdateCode();
|
|
|
setCodeLoading(true); //避免切到loading延迟
|
|
|
}
|
|
|
case 7:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function handleTabsChange(_x) {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var settingNotification = function settingNotification(item) {
|
|
|
var uinKey = "".concat(shixun.identifier, "-").concat(userInfo.login); //不再提醒
|
|
|
|
|
|
//获取当前保存的当天时间
|
|
|
var timeKey = "".concat(shixun.identifier, "-").concat(userInfo.login, "-").concat(item.resource_type, "-time");
|
|
|
var timeValue = localStorage.getItem(timeKey) || '';
|
|
|
var now = new Date().getTime();
|
|
|
var tipsItem = localStorage.getItem("records-shixuns-tips");
|
|
|
tipsItem = tipsItem ? JSON.parse(tipsItem) : [];
|
|
|
var setCurrentTime = function setCurrentTime() {
|
|
|
var currentTime = new Date();
|
|
|
currentTime.setHours(23, 59, 59, 999);
|
|
|
var savedTime = currentTime.getTime();
|
|
|
localStorage.setItem(timeKey, savedTime);
|
|
|
};
|
|
|
|
|
|
//通用云
|
|
|
if (!initTips.current[0] && item.resource_type === 1 && [3, 4].includes(item.tab_type) && !tipsItem.includes(uinKey) && now > timeValue && !start_permanent) {
|
|
|
var _userInfo$shixun;
|
|
|
initTips.current[0] = true;
|
|
|
setCurrentTime();
|
|
|
var standing = 1; // 1: 学生(包括考试) 2: 超管、运营、实训管理员和合作者 3: 普通教师
|
|
|
|
|
|
if (searchParams.get("type") === 'exercises') {
|
|
|
//考试界面
|
|
|
standing = 1;
|
|
|
} else if (userInfo !== null && userInfo !== void 0 && (_userInfo$shixun = userInfo.shixun) !== null && _userInfo$shixun !== void 0 && _userInfo$shixun.own) {
|
|
|
standing = 2;
|
|
|
} else if ((userInfo === null || userInfo === void 0 ? void 0 : userInfo.identity) === 'teacher') {
|
|
|
standing = 3;
|
|
|
}
|
|
|
if (initTipsOpenKey.current) {
|
|
|
notification/* default */.Z.destroy(initTipsOpenKey.current);
|
|
|
}
|
|
|
initTipsOpenKey.current = "open".concat(Date.now());
|
|
|
var fuc = /*#__PURE__*/function () {
|
|
|
var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
_context2.next = 2;
|
|
|
return (0,service/* setStartPermanent */.Ye)(shixun.identifier, {
|
|
|
start_permanent: !start_permanent
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context2.sent;
|
|
|
if (!(res.status === 0)) {
|
|
|
_context2.next = 7;
|
|
|
break;
|
|
|
}
|
|
|
notification/* default */.Z.destroy(initTipsOpenKey.current);
|
|
|
message/* default */.ZP.success("\u5B9E\u8BAD\u5DF2".concat(start_permanent ? '关闭' : '开启', "\u4FDD\u5B58\u5B9E\u9A8C\u6587\u4EF6\u529F\u80FD"));
|
|
|
return _context2.abrupt("return");
|
|
|
case 7:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return function fuc() {
|
|
|
return _ref3.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var setNotification = function setNotification() {
|
|
|
var isLoading = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
|
return notification/* default */.Z.open({
|
|
|
message: /*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
className: "font16 c-black",
|
|
|
children: "\u63D0\u793A"
|
|
|
}),
|
|
|
closeIcon: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {}),
|
|
|
style: {
|
|
|
width: 556
|
|
|
},
|
|
|
duration: null,
|
|
|
description: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: [standing === 1 && /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: "\u5B9E\u9A8C\u73AF\u5883\u4E2D/data/workspace\u76EE\u5F55\u4E3A\u6570\u636E\u4E34\u65F6\u5B58\u50A8\u533A\u57DF\uFF0C\u6B64\u533A\u57DF\u6570\u636E\u9ED8\u8BA4\u4FDD\u75592\u5929\uFF0C\u5176\u4ED6\u76EE\u5F55\u7684\u6570\u636E\u4F1A\u968F\u7740\u5B9E\u9A8C\u8D44\u6E90\u56DE\u6536\u800C\u7ACB\u5373\u91CA\u653E\uFF0C\u5EFA\u8BAE\u5C06\u5B9E\u9A8C\u9700\u8981\u7684\u6570\u636E\u5B58\u50A8\u81F3\u6B64\u533A\u57DF\uFF0C\u5E76\u4E14\u5B58\u50A8\u7684\u6570\u636E\u5927\u5C0F\u4E0D\u8D85\u8FC71G\u3002"
|
|
|
}), standing === 2 && /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: "\u5B9E\u9A8C\u73AF\u5883\u4E2D/data/workspace\u76EE\u5F55\u4E3A\u6570\u636E\u4E34\u65F6\u5B58\u50A8\u533A\u57DF\uFF0C\u6B64\u533A\u57DF\u6570\u636E\u9ED8\u8BA4\u4FDD\u75592\u5929\uFF0C\u5982\u9700\u957F\u671F\u4FDD\u5B58\u5B9E\u9A8C\u6570\u636E\uFF0C\u8BF7\u5728\u5B9E\u8BAD\u8BBE\u7F6E\u9875\u9762\u5F00\u542F\u201C\u4FDD\u5B58\u5B9E\u9A8C\u6587\u4EF6\u201D\u529F\u80FD\u3002"
|
|
|
}), standing === 3 && /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
style: {
|
|
|
flexDirection: 'column'
|
|
|
},
|
|
|
justify: "center",
|
|
|
align: "middle",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: "\u5B9E\u9A8C\u73AF\u5883\u4E2D/data/workspace\u76EE\u5F55\u4E3A\u6570\u636E\u4E34\u65F6\u5B58\u50A8\u533A\u57DF\uFF0C\u6B64\u533A\u57DF\u6570\u636E\u9ED8\u8BA4\u4FDD\u75592\u5929\uFF0C\u5982\u9700\u957F\u671F\u4FDD\u5B58\u5B9E\u9A8C\u6570\u636E\uFF0C\u8BF7\u8054\u7CFB\u5E73\u53F0\u7BA1\u7406\u5458\u8FDB\u884C\u6280\u672F\u652F\u6301\u3002"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
width: 122,
|
|
|
className: "mt20",
|
|
|
src: AssistantCode4_namespaceObject
|
|
|
})]
|
|
|
})]
|
|
|
}),
|
|
|
btn: /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
className: choose_repositorymodules.btn,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_checkbox/* default */.Z, {
|
|
|
onChange: function onChange(e) {
|
|
|
if (e.target.checked) {
|
|
|
tipsItem.push(uinKey);
|
|
|
} else {
|
|
|
tipsItem = tipsItem.filter(function (e) {
|
|
|
return e !== uinKey;
|
|
|
});
|
|
|
}
|
|
|
localStorage.setItem('records-shixuns-tips', JSON.stringify(tipsItem));
|
|
|
},
|
|
|
className: "c-grey-999",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u4E0D\u518D\u63D0\u9192"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
type: standing === 2 ? 'default' : 'primary',
|
|
|
style: {
|
|
|
marginLeft: 'auto'
|
|
|
},
|
|
|
onClick: function onClick() {
|
|
|
notification/* default */.Z.destroy(initTipsOpenKey.current);
|
|
|
},
|
|
|
children: "\u77E5\u9053\u4E86"
|
|
|
}), standing === 2 && /*#__PURE__*/(0,jsx_runtime.jsxs)(es_button/* default */.ZP, {
|
|
|
type: "primary",
|
|
|
className: "ml20",
|
|
|
loading: isLoading,
|
|
|
onClick: fuc,
|
|
|
children: [start_permanent ? '关闭' : '开启', " "]
|
|
|
})]
|
|
|
}),
|
|
|
key: initTipsOpenKey.current
|
|
|
});
|
|
|
};
|
|
|
|
|
|
// setNotification()
|
|
|
}
|
|
|
if (!initTips.current[1] && item.resource_type === 2 && !tipsItem.includes(uinKey) && now > timeValue) {
|
|
|
initTips.current[1] = true;
|
|
|
setCurrentTime();
|
|
|
if (initTipsOpenKey.current) {
|
|
|
notification/* default */.Z.destroy(initTipsOpenKey.current);
|
|
|
}
|
|
|
initTipsOpenKey.current = "open".concat(Date.now());
|
|
|
notification/* default */.Z.open({
|
|
|
message: /*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
className: "font16 c-black",
|
|
|
children: "\u63D0\u793A"
|
|
|
}),
|
|
|
closeIcon: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {}),
|
|
|
style: {
|
|
|
width: 556
|
|
|
},
|
|
|
duration: null,
|
|
|
description: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: "\u76EE\u524D\u4E13\u6709\u4E91\u56FE\u5F62\u5316\u3001\u547D\u4EE4\u884C\u5B9E\u8BAD\u6682\u4E0D\u652F\u6301\u957F\u671F\u4FDD\u5B58/data/workspace\u76EE\u5F55\u4E0B\u5B9E\u9A8C\u6570\u636E\uFF0C\u5982\u6709\u9700\u8981\u8BF7\u81EA\u884C\u4E0B\u8F7D\u3002"
|
|
|
}),
|
|
|
btn: /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
className: choose_repositorymodules.btn,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_checkbox/* default */.Z, {
|
|
|
onChange: function onChange(e) {
|
|
|
if (e.target.checked) {
|
|
|
tipsItem.push(uinKey);
|
|
|
} else {
|
|
|
tipsItem = tipsItem.filter(function (e) {
|
|
|
return e !== uinKey;
|
|
|
});
|
|
|
}
|
|
|
localStorage.setItem('records-shixuns-tips', JSON.stringify(tipsItem));
|
|
|
},
|
|
|
className: "c-grey-999",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u4E0D\u518D\u63D0\u9192"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
style: {
|
|
|
marginLeft: 'auto'
|
|
|
},
|
|
|
type: "primary",
|
|
|
onClick: function onClick() {
|
|
|
notification/* default */.Z.destroy(initTipsOpenKey.current);
|
|
|
},
|
|
|
children: "\u77E5\u9053\u4E86"
|
|
|
})]
|
|
|
}),
|
|
|
key: initTipsOpenKey.current
|
|
|
});
|
|
|
}
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(_react_17_0_2_react.Fragment, {
|
|
|
children: [isU3d ? /*#__PURE__*/(0,jsx_runtime.jsx)(unity3d_panel, {
|
|
|
taskData: taskData,
|
|
|
unity_3d_routes: unity_3d_routes,
|
|
|
onGetUnity3dMessage: onGetUnity3dMessage
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: choose_repositorymodules['code-area-container'],
|
|
|
ref: codeAreaContainerRef,
|
|
|
style: {
|
|
|
height: codeAreaHeight
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
align: "middle",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(HorizontalTabs/* default */.Z, {
|
|
|
initTabs: shixun_environments,
|
|
|
tabs: tabs,
|
|
|
paths: paths,
|
|
|
activePath: currentPath,
|
|
|
onChangePath: function onChangePath(file) {
|
|
|
return _onChangePath(file);
|
|
|
},
|
|
|
setTabs: setTabs,
|
|
|
value: tabActiveParams,
|
|
|
onChange: handleTabsChange,
|
|
|
codeUpdate: lastedUpdateTime !== 0,
|
|
|
codeLoading: codeLoading
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(action_bar, objectSpread2_default()({}, actionBarOption))]
|
|
|
}), tabs.map(function (item) {
|
|
|
var _taskData$challenge, _taskData$challenge2;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
style: {
|
|
|
display: item.index_tab === index_tab ? 'block' : 'none',
|
|
|
height: 'calc(100% - 40px)',
|
|
|
position: 'relative',
|
|
|
overflow: 'hidden'
|
|
|
},
|
|
|
children: [item.active && (item.tab_type === 1 || item.tab_type === 2) && /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [((_taskData$challenge = taskData.challenge) === null || _taskData$challenge === void 0 ? void 0 : _taskData$challenge.show_type) === 8 && /*#__PURE__*/(0,jsx_runtime.jsx)(OfficeUpload, {
|
|
|
taskData: taskData
|
|
|
}), ((_taskData$challenge2 = taskData.challenge) === null || _taskData$challenge2 === void 0 ? void 0 : _taskData$challenge2.show_type) !== 8 && /*#__PURE__*/(0,jsx_runtime.jsx)(code_area, objectSpread2_default()(objectSpread2_default()({
|
|
|
codeLoading: codeLoading,
|
|
|
itemData: item
|
|
|
}, codeAreaOption), {}, {
|
|
|
onUpdateCode: onUpdateCode
|
|
|
}))]
|
|
|
}), item.active && item.tab_type === 3 && /*#__PURE__*/(0,jsx_runtime.jsx)(tasks_vnc_view, {
|
|
|
itemData: item,
|
|
|
taskData: taskData,
|
|
|
evaluateMessage: evaluateMessage,
|
|
|
language: language,
|
|
|
evaluateLoading: evaluateLoading
|
|
|
}), item.active && item.tab_type === 4 && /*#__PURE__*/(0,jsx_runtime.jsx)(xterm_panel/* default */.Z, {
|
|
|
itemData: item,
|
|
|
myshixun: myshixun,
|
|
|
game: game
|
|
|
}, item.resetKey), item.active && item.tab_type === 5 && /*#__PURE__*/(0,jsx_runtime.jsx)(unity3d_panel, {
|
|
|
taskData: taskData,
|
|
|
unity_3d_routes: unity_3d_routes,
|
|
|
onGetUnity3dMessage: onGetUnity3dMessage,
|
|
|
itemData: item
|
|
|
})]
|
|
|
}, item.index_tab);
|
|
|
})]
|
|
|
}), showCaseList && /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: choose_repositorymodules['resize-y-bar'],
|
|
|
onMouseDown: onResizeYStart,
|
|
|
draggable: false,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-guangbiao",
|
|
|
draggable: false
|
|
|
})
|
|
|
}), showCaseList && /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: choose_repositorymodules['test-set-container'],
|
|
|
style: {
|
|
|
height: testSetHeight
|
|
|
},
|
|
|
children: evaluateLoading ? /*#__PURE__*/(0,jsx_runtime.jsx)(Spinner/* default */.Z, {
|
|
|
message: evaluateMessage,
|
|
|
style: {
|
|
|
color: '#0152d9'
|
|
|
}
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)(test_case_list, objectSpread2_default()(objectSpread2_default()({}, testCaseListOption), {}, {
|
|
|
taskData: taskData
|
|
|
}))
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: choose_repositorymodules['action-container'],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(footer_bar, objectSpread2_default()(objectSpread2_default()({}, taskData), {}, {
|
|
|
startDebug: startDebug,
|
|
|
dispatch: _dispatch,
|
|
|
onUpdateCode: onUpdateCode,
|
|
|
loading: evaluateLoading,
|
|
|
tabActiveParams: tabActiveParams,
|
|
|
isU3d: isU3d,
|
|
|
onRun: function onRun() {
|
|
|
onEval();
|
|
|
setShowCaseList(true);
|
|
|
}
|
|
|
}))
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(drawer/* default */.Z, {
|
|
|
rootClassName: choose_repositorymodules['setting-drawer'],
|
|
|
title: null,
|
|
|
placement: "right",
|
|
|
closable: false,
|
|
|
open: showEditorSetting,
|
|
|
onClose: function onClose() {
|
|
|
return setShowEditorSetting(false);
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(components_tpi_code_setting, objectSpread2_default()({}, tpiCodeSettingOption))
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(components_TpiDescIcon, {
|
|
|
desc: /*#__PURE__*/(0,jsx_runtime.jsx)(RenderHtml/* default */.Z, {
|
|
|
value: taskData === null || taskData === void 0 ? void 0 : taskData.challenge.task_pass
|
|
|
}),
|
|
|
visible: isResizeLarge
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/picture-panel/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/picture-panel/nothing.png
|
|
|
var nothing_namespaceObject = "data:image/png;base64,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";
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/classCallCheck.js
|
|
|
var classCallCheck = __webpack_require__(82100);
|
|
|
var classCallCheck_default = /*#__PURE__*/__webpack_require__.n(classCallCheck);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/createClass.js
|
|
|
var createClass = __webpack_require__(29186);
|
|
|
var createClass_default = /*#__PURE__*/__webpack_require__.n(createClass);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/picture-panel/tga.ts
|
|
|
|
|
|
|
|
|
var e = 0,
|
|
|
t = 1,
|
|
|
a = 3,
|
|
|
r = 9,
|
|
|
o = 10,
|
|
|
i = 11,
|
|
|
s = 0,
|
|
|
h = 2,
|
|
|
n = 3,
|
|
|
g = 4,
|
|
|
l = 48;
|
|
|
var _default = /*#__PURE__*/function () {
|
|
|
function _default() {
|
|
|
classCallCheck_default()(this, _default);
|
|
|
}
|
|
|
createClass_default()(_default, [{
|
|
|
key: "_checkHeader",
|
|
|
value: function _checkHeader() {
|
|
|
var t = this.header;
|
|
|
if (t.imageType === e) throw Error("No data");
|
|
|
if (t.hasColorMap) {
|
|
|
if (t.colorMapLength > 256 || 24 !== t.colorMapDepth || 1 !== t.colorMapType) throw Error("Invalid colormap for indexed type");
|
|
|
} else if (t.colorMapType) {
|
|
|
throw Error("Why does the image contain a palette ?");
|
|
|
}
|
|
|
;
|
|
|
if (!t.width || !t.height) throw Error("Invalid image size");
|
|
|
if (8 !== t.pixelDepth && 16 !== t.pixelDepth && 24 !== t.pixelDepth && 32 !== t.pixelDepth) throw Error('Invalid pixel size "' + t.pixelDepth + '"');
|
|
|
}
|
|
|
}, {
|
|
|
key: "_decodeRLE",
|
|
|
value: function _decodeRLE(e, t, a, r) {
|
|
|
var o = new Uint8Array(r),
|
|
|
i = new Uint8Array(a);
|
|
|
var s = 0;
|
|
|
for (; s < r;) {
|
|
|
var _r = e[t++];
|
|
|
var _h = 1 + (127 & _r);
|
|
|
if (128 & _r) {
|
|
|
for (var _r2 = 0; _r2 < a; ++_r2) i[_r2] = e[t + _r2];
|
|
|
t += a;
|
|
|
for (var _e = 0; _e < _h; ++_e) o.set(i, s), s += a;
|
|
|
} else {
|
|
|
_h *= a;
|
|
|
for (var _a = 0; _a < _h; ++_a) o[s + _a] = e[t + _a];
|
|
|
s += _h, t += _h;
|
|
|
}
|
|
|
}
|
|
|
return o;
|
|
|
}
|
|
|
}, {
|
|
|
key: "_getImageData8bits",
|
|
|
value: function _getImageData8bits(e, t, a, r, o, i, s, h, n, g) {
|
|
|
for (var _l = 0, p = o; p !== s; p += i) for (var _o = h; _o !== g; _o += n, _l++) {
|
|
|
var _i = t[_l];
|
|
|
e[4 * (_o + r * p) + 3] = 255, e[4 * (_o + r * p) + 2] = a[3 * _i + 0], e[4 * (_o + r * p) + 1] = a[3 * _i + 1], e[4 * (_o + r * p) + 0] = a[3 * _i + 2];
|
|
|
}
|
|
|
return e;
|
|
|
}
|
|
|
}, {
|
|
|
key: "_getImageData16bits",
|
|
|
value: function _getImageData16bits(e, t, a, r, o, i, s, h, n, g) {
|
|
|
for (var _a2 = 0, _l2 = o; _l2 !== s; _l2 += i) for (var _o2 = h; _o2 !== g; _o2 += n, _a2 += 2) {
|
|
|
var _i2 = t[_a2 + 0] | t[_a2 + 1] << 8;
|
|
|
e[4 * (_o2 + r * _l2) + 0] = (31744 & _i2) >> 7, e[4 * (_o2 + r * _l2) + 1] = (992 & _i2) >> 2, e[4 * (_o2 + r * _l2) + 2] = (31 & _i2) >> 3, e[4 * (_o2 + r * _l2) + 3] = 32768 & _i2 ? 0 : 255;
|
|
|
}
|
|
|
return e;
|
|
|
}
|
|
|
}, {
|
|
|
key: "_getImageData24bits",
|
|
|
value: function _getImageData24bits(e, t, a, r, o, i, s, h, n, g) {
|
|
|
for (var _a3 = 0, _l3 = o; _l3 !== s; _l3 += i) for (var _o3 = h; _o3 !== g; _o3 += n, _a3 += 3) e[4 * (_o3 + r * _l3) + 3] = 255, e[4 * (_o3 + r * _l3) + 2] = t[_a3 + 0], e[4 * (_o3 + r * _l3) + 1] = t[_a3 + 1], e[4 * (_o3 + r * _l3) + 0] = t[_a3 + 2];
|
|
|
return e;
|
|
|
}
|
|
|
}, {
|
|
|
key: "_getImageData32bits",
|
|
|
value: function _getImageData32bits(e, t, a, r, o, i, s, h, n, g) {
|
|
|
for (var _a4 = 0, _l4 = o; _l4 !== s; _l4 += i) for (var _o4 = h; _o4 !== g; _o4 += n, _a4 += 4) e[4 * (_o4 + r * _l4) + 2] = t[_a4 + 0], e[4 * (_o4 + r * _l4) + 1] = t[_a4 + 1], e[4 * (_o4 + r * _l4) + 0] = t[_a4 + 2], e[4 * (_o4 + r * _l4) + 3] = t[_a4 + 3];
|
|
|
return e;
|
|
|
}
|
|
|
}, {
|
|
|
key: "_getImageDataGrey8bits",
|
|
|
value: function _getImageDataGrey8bits(e, t, a, r, o, i, s, h, n, g) {
|
|
|
for (var _a5 = 0, _l5 = o; _l5 !== s; _l5 += i) for (var _o5 = h; _o5 !== g; _o5 += n, _a5++) {
|
|
|
var _i3 = t[_a5];
|
|
|
e[4 * (_o5 + r * _l5) + 0] = _i3, e[4 * (_o5 + r * _l5) + 1] = _i3, e[4 * (_o5 + r * _l5) + 2] = _i3, e[4 * (_o5 + r * _l5) + 3] = 255;
|
|
|
}
|
|
|
return e;
|
|
|
}
|
|
|
}, {
|
|
|
key: "_getImageDataGrey16bits",
|
|
|
value: function _getImageDataGrey16bits(e, t, a, r, o, i, s, h, n, g) {
|
|
|
for (var _a6 = 0, _l6 = o; _l6 !== s; _l6 += i) for (var _o6 = h; _o6 !== g; _o6 += n, _a6 += 2) e[4 * (_o6 + r * _l6) + 0] = t[_a6 + 0], e[4 * (_o6 + r * _l6) + 1] = t[_a6 + 0], e[4 * (_o6 + r * _l6) + 2] = t[_a6 + 0], e[4 * (_o6 + r * _l6) + 3] = t[_a6 + 1];
|
|
|
return e;
|
|
|
}
|
|
|
}, {
|
|
|
key: "open",
|
|
|
value: function open(e, t) {
|
|
|
var _this = this;
|
|
|
var a = new XMLHttpRequest();
|
|
|
return new Promise(function (resolve, reject) {
|
|
|
a.responseType = "arraybuffer", a.open("GET", e, !0), a.onload = function () {
|
|
|
if (a.status === 200) {
|
|
|
_this.load(new Uint8Array(a.response), resolve);
|
|
|
}
|
|
|
_this.imageSourceData = a.response;
|
|
|
t && t();
|
|
|
}, a.send(null);
|
|
|
});
|
|
|
}
|
|
|
}, {
|
|
|
key: "load",
|
|
|
value: function load(e, cb) {
|
|
|
var s = 0;
|
|
|
if (e.length < 18) throw Error("Not enough data to contain header");
|
|
|
var h = {
|
|
|
idLength: e[s++],
|
|
|
colorMapType: e[s++],
|
|
|
imageType: e[s++],
|
|
|
colorMapIndex: e[s++] | e[s++] << 8,
|
|
|
colorMapLength: e[s++] | e[s++] << 8,
|
|
|
colorMapDepth: e[s++],
|
|
|
offsetX: e[s++] | e[s++] << 8,
|
|
|
offsetY: e[s++] | e[s++] << 8,
|
|
|
width: e[s++] | e[s++] << 8,
|
|
|
height: e[s++] | e[s++] << 8,
|
|
|
pixelDepth: e[s++],
|
|
|
flags: e[s++]
|
|
|
};
|
|
|
if (h.hasEncoding = h.imageType === r || h.imageType === o || h.imageType === i, h.hasColorMap = h.imageType === r || h.imageType === t, h.isGreyColor = h.imageType === i || h.imageType === a, this.header = h, this._checkHeader(), (s += h.idLength) >= e.length) throw Error("No data");
|
|
|
if (h.hasColorMap) {
|
|
|
var _t = h.colorMapLength * (h.colorMapDepth >> 3);
|
|
|
this.palette = e.subarray(s, s + _t), s += _t;
|
|
|
}
|
|
|
var n = h.pixelDepth >> 3,
|
|
|
g = h.width * h.height,
|
|
|
l = g * n;
|
|
|
h.hasEncoding ? this.imageData = this._decodeRLE(e, s, n, l) : this.imageData = e.subarray(s, s + (h.hasColorMap ? g : l));
|
|
|
cb(this);
|
|
|
}
|
|
|
}, {
|
|
|
key: "getImageData",
|
|
|
value: function getImageData(e) {
|
|
|
var _this$header = this.header,
|
|
|
t = _this$header.width,
|
|
|
a = _this$header.height,
|
|
|
r = _this$header.flags,
|
|
|
o = _this$header.pixelDepth,
|
|
|
i = _this$header.isGreyColor,
|
|
|
p = (r & l) >> g;
|
|
|
var c, d, m, f, D, y, u;
|
|
|
switch (e || (e = document ? document.createElement("canvas").getContext("2d").createImageData(t, a) : {
|
|
|
width: t,
|
|
|
height: a,
|
|
|
data: new Uint8ClampedArray(t * a * 4)
|
|
|
}), p === h || p === n ? (f = 0, D = 1, y = a) : (f = a - 1, D = -1, y = -1), p === h || p === s ? (c = 0, d = 1, m = t) : (c = t - 1, d = -1, m = -1), o) {
|
|
|
case 8:
|
|
|
u = i ? this._getImageDataGrey8bits : this._getImageData8bits;
|
|
|
break;
|
|
|
case 16:
|
|
|
u = i ? this._getImageDataGrey16bits : this._getImageData16bits;
|
|
|
break;
|
|
|
case 24:
|
|
|
u = this._getImageData24bits;
|
|
|
break;
|
|
|
case 32:
|
|
|
u = this._getImageData32bits;
|
|
|
}
|
|
|
return u.call(this, e.data, this.imageData, this.palette, t, f, D, y, c, d, m), e;
|
|
|
}
|
|
|
}, {
|
|
|
key: "getCanvas",
|
|
|
value: function getCanvas() {
|
|
|
var _this$header2 = this.header,
|
|
|
e = _this$header2.width,
|
|
|
t = _this$header2.height,
|
|
|
a = document.createElement("canvas"),
|
|
|
r = a.getContext("2d"),
|
|
|
o = r.createImageData(e, t);
|
|
|
return a.width = e, a.height = t, r.putImageData(this.getImageData(o), 0, 0), a;
|
|
|
}
|
|
|
}, {
|
|
|
key: "getDataURL",
|
|
|
value: function getDataURL(e) {
|
|
|
return this.getCanvas().toDataURL(e || "image/png");
|
|
|
}
|
|
|
}]);
|
|
|
return _default;
|
|
|
}();
|
|
|
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/picture-panel/img-list.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var img_list = (function (_ref) {
|
|
|
var list = _ref.list,
|
|
|
title = _ref.title,
|
|
|
direction = _ref.direction;
|
|
|
var len = list.length;
|
|
|
var _useState = (0,_react_17_0_2_react.useState)([]),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
data = _useState2[0],
|
|
|
setData = _useState2[1];
|
|
|
var resetData = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var arr, i, item, tga;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
arr = [];
|
|
|
i = 0;
|
|
|
case 2:
|
|
|
if (!(i < list.length)) {
|
|
|
_context.next = 13;
|
|
|
break;
|
|
|
}
|
|
|
item = list[i];
|
|
|
if (!(item.pic_url.indexOf('.tga') > -1)) {
|
|
|
_context.next = 9;
|
|
|
break;
|
|
|
}
|
|
|
tga = new _default();
|
|
|
_context.next = 8;
|
|
|
return tga.open(item.pic_url);
|
|
|
case 8:
|
|
|
item.pic_url = tga.getDataURL();
|
|
|
case 9:
|
|
|
arr.push(item);
|
|
|
case 10:
|
|
|
i++;
|
|
|
_context.next = 2;
|
|
|
break;
|
|
|
case 13:
|
|
|
setData([].concat(arr));
|
|
|
case 14:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function resetData() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
resetData();
|
|
|
}, [list]);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "img-list ".concat(!direction ? 'direction' : ''),
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("h4", {
|
|
|
children: title
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "list-body",
|
|
|
style: {
|
|
|
padding: '40px 0px'
|
|
|
},
|
|
|
children: len > 0 ? data.map(function (item, key) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
onClick: function onClick() {
|
|
|
mediator/* default */.Z.publish('preview-image', "".concat(tasks_util/* apiPref */.KI).concat(item.pic_url));
|
|
|
},
|
|
|
className: len === 1 ? 'singal' : '',
|
|
|
src: "".concat(item.pic_url.indexOf('data:image/png;base64') > -1 ? item.pic_url : tasks_util/* apiPref */.KI + item.pic_url),
|
|
|
alt: title
|
|
|
}, item.pic_url);
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsxs)(_react_17_0_2_react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
alt: "\u7A7A",
|
|
|
className: "nothing",
|
|
|
src: nothing_namespaceObject
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
alt: "\u7A7A",
|
|
|
className: "nothing",
|
|
|
src: nothing_namespaceObject
|
|
|
})]
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/picture-panel/video-panel/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/picture-panel/video-panel/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var video_panel = (function (_ref) {
|
|
|
var url = _ref.url,
|
|
|
poster = _ref.poster;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "video-container",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("video", {
|
|
|
controls: true,
|
|
|
autoPlay: true,
|
|
|
src: url,
|
|
|
preload: "auto",
|
|
|
poster: poster ? poster : '',
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("source", {
|
|
|
type: "video/webm",
|
|
|
src: url
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("source", {
|
|
|
type: "video/mp4",
|
|
|
src: url
|
|
|
})]
|
|
|
})
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/picture-panel/audio-panel/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/picture-panel/audio-panel/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var audio_panel = (function (_ref) {
|
|
|
var url = _ref.url;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "video-container",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("audio", {
|
|
|
style: {
|
|
|
width: "100%"
|
|
|
},
|
|
|
controls: true,
|
|
|
src: url,
|
|
|
children: [" Your browser does not support the ", /*#__PURE__*/(0,jsx_runtime.jsx)("code", {
|
|
|
children: "audio"
|
|
|
}), " element. "]
|
|
|
})
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/picture-panel/video-list.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var video_list = (function (_ref) {
|
|
|
var files = _ref.files,
|
|
|
type = _ref.type,
|
|
|
title = _ref.title;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "img-list",
|
|
|
style: {
|
|
|
height: "auto"
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("h4", {
|
|
|
children: title
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("ul", {
|
|
|
className: "video-list",
|
|
|
children: files.map(function (item, index) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("li", {
|
|
|
children: type === 'mp4' ? /*#__PURE__*/(0,jsx_runtime.jsx)(video_panel, {
|
|
|
url: item.file_url
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)(audio_panel, {
|
|
|
url: item.file_url
|
|
|
})
|
|
|
}, index);
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/picture-panel/PreviewModalDragger/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var PreviewModalDraggermodules = ({"wrapper":"wrapper____kMQR","text":"text___QBUHJ","icon":"icon___p_4V7"});
|
|
|
// EXTERNAL MODULE: ./node_modules/_react-draggable@4.4.6@react-draggable/build/cjs/cjs.js
|
|
|
var cjs = __webpack_require__(12911);
|
|
|
var cjs_default = /*#__PURE__*/__webpack_require__.n(cjs);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/picture-panel/PreviewModalDragger/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var previewModalDragger = function previewModalDragger(_ref) {
|
|
|
var onClose = _ref.onClose,
|
|
|
onOpen = _ref.onOpen,
|
|
|
panelVisible = _ref.panelVisible;
|
|
|
var _useState = (0,_react_17_0_2_react.useState)({
|
|
|
left: 0,
|
|
|
top: 0,
|
|
|
bottom: 0,
|
|
|
right: 0
|
|
|
}),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
bounds = _useState2[0],
|
|
|
setBounds = _useState2[1];
|
|
|
var draggleRef = (0,_react_17_0_2_react.useRef)(null);
|
|
|
var _onStart = function onStart(_event, uiData) {
|
|
|
var _draggleRef$current;
|
|
|
var _window$document$docu = window.document.documentElement,
|
|
|
clientWidth = _window$document$docu.clientWidth,
|
|
|
clientHeight = _window$document$docu.clientHeight;
|
|
|
var targetRect = (_draggleRef$current = draggleRef.current) === null || _draggleRef$current === void 0 ? void 0 : _draggleRef$current.getBoundingClientRect();
|
|
|
if (!targetRect) {
|
|
|
return;
|
|
|
}
|
|
|
setBounds({
|
|
|
left: -targetRect.left + uiData.x,
|
|
|
right: clientWidth - (targetRect.right - uiData.x),
|
|
|
top: -targetRect.top + uiData.y,
|
|
|
bottom: clientHeight - (targetRect.bottom - uiData.y)
|
|
|
});
|
|
|
};
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)({
|
|
|
x: 0,
|
|
|
y: 0
|
|
|
}),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
controlledPosition = _useState4[0],
|
|
|
setControlledPosition = _useState4[1];
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)((cjs_default()), {
|
|
|
position: controlledPosition,
|
|
|
bounds: bounds,
|
|
|
cancel: ".".concat(PreviewModalDraggermodules.icon),
|
|
|
onStart: function onStart(event, uiData) {
|
|
|
return _onStart(event, uiData);
|
|
|
},
|
|
|
onDrag: function onDrag(event, uiData) {
|
|
|
var x = uiData.x,
|
|
|
y = uiData.y;
|
|
|
setControlledPosition({
|
|
|
x: x,
|
|
|
y: y
|
|
|
});
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
style: {
|
|
|
display: panelVisible ? 'none' : 'flex'
|
|
|
},
|
|
|
gutter: 16,
|
|
|
ref: draggleRef,
|
|
|
className: PreviewModalDraggermodules.wrapper,
|
|
|
align: "middle",
|
|
|
justify: "space-between",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
className: PreviewModalDraggermodules.text,
|
|
|
children: "\u67E5\u770B\u6548\u679C"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "".concat(PreviewModalDraggermodules.icon, " iconfont icon-quanping3"),
|
|
|
onClick: onOpen
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "".concat(PreviewModalDraggermodules.icon, " iconfont icon-guanbizhengchang font18"),
|
|
|
onClick: onClose
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var PreviewModalDragger = (previewModalDragger);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/picture-panel/qrcode.tsx
|
|
|
|
|
|
|
|
|
/* harmony default export */ var qrcode = (function (_ref) {
|
|
|
var value = _ref.value;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: "data:image/png;base64,".concat(value),
|
|
|
alt: "qrcode"
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/picture-panel/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function getDocHeight(doc) {
|
|
|
var html = doc.documentElement;
|
|
|
var body = doc.body;
|
|
|
var height = Math.max(html.clientHeight, html.scrollHeight, html.offsetHeight, body ? body.clientHeight : 0, body ? body.scrollHeight : 0, 500);
|
|
|
return height;
|
|
|
}
|
|
|
function setIframeHeight(ifrm) {
|
|
|
var doc = ifrm.contentDocument ? ifrm.contentDocument : ifrm.contentWindow.document;
|
|
|
ifrm.style.visibility = 'hidden';
|
|
|
ifrm.style.height = '10px'; // reset to minimal height ...
|
|
|
// IE opt. for bing/msn needs a bit added or scrollbar appears
|
|
|
ifrm.style.height = getDocHeight(doc) + 4 + 'px';
|
|
|
ifrm.style.visibility = 'visible';
|
|
|
}
|
|
|
/* harmony default export */ var picture_panel = (function (_ref) {
|
|
|
var taskId = _ref.taskId,
|
|
|
onHidePictureView = _ref.onHidePictureView;
|
|
|
var _useState = (0,_react_17_0_2_react.useState)({}),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
data = _useState2[0],
|
|
|
setData = _useState2[1];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)(),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
verilogData = _useState4[0],
|
|
|
setVerilogData = _useState4[1];
|
|
|
var verilogDataRef = (0,_react_17_0_2_react.useRef)();
|
|
|
var iframeEl = (0,_react_17_0_2_react.useRef)();
|
|
|
var iframeVerilogEl = (0,_react_17_0_2_react.useRef)();
|
|
|
|
|
|
// 方向 true-横false-纵
|
|
|
var _useState5 = (0,_react_17_0_2_react.useState)(true),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
direction = _useState6[0],
|
|
|
setDirection = _useState6[1];
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
var type = data.type,
|
|
|
iframe_src = data.iframe_src;
|
|
|
if (type === 'html' && iframe_src && iframeEl.current) {
|
|
|
iframeEl.current.contentWindow.document.write(iframe_src);
|
|
|
iframeEl.current.contentWindow.document.close();
|
|
|
setTimeout(function () {
|
|
|
setIframeHeight(iframeEl.current);
|
|
|
}, 100);
|
|
|
}
|
|
|
}, [data, iframeEl.current]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
function init() {
|
|
|
return _init.apply(this, arguments);
|
|
|
}
|
|
|
function _init() {
|
|
|
_init = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var response, _response$user_file, res, enc, arr;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.next = 2;
|
|
|
return (0,service/* fetchPictures */.gT)(taskId);
|
|
|
case 2:
|
|
|
response = _context.sent;
|
|
|
setData(response);
|
|
|
if (!((response === null || response === void 0 ? void 0 : response.type) == 'verilog')) {
|
|
|
_context.next = 12;
|
|
|
break;
|
|
|
}
|
|
|
_context.next = 7;
|
|
|
return (0,utils_fetch/* default */.ZP)(response === null || response === void 0 || (_response$user_file = response.user_file) === null || _response$user_file === void 0 || (_response$user_file = _response$user_file[0]) === null || _response$user_file === void 0 ? void 0 : _response$user_file.file_url, {
|
|
|
method: 'get',
|
|
|
headers: {
|
|
|
'Content-Type': 'application/json'
|
|
|
}
|
|
|
});
|
|
|
case 7:
|
|
|
res = _context.sent;
|
|
|
enc = new TextDecoder('utf-8');
|
|
|
arr = new Uint8Array(res);
|
|
|
verilogDataRef.current = JSON.parse(enc.decode(arr));
|
|
|
setVerilogData(JSON.parse(enc.decode(arr)));
|
|
|
case 12:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return _init.apply(this, arguments);
|
|
|
}
|
|
|
init();
|
|
|
}, [taskId]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
onLoadVerilog();
|
|
|
}, [verilogData]);
|
|
|
var onLoadVerilog = function onLoadVerilog() {
|
|
|
if (verilogDataRef.current && verilogDataRef.current != '') {
|
|
|
var _iframeVerilogEl$curr;
|
|
|
(_iframeVerilogEl$curr = iframeVerilogEl.current.contentWindow) === null || _iframeVerilogEl$curr === void 0 || _iframeVerilogEl$curr.postMessage({
|
|
|
data: verilogDataRef.current
|
|
|
}, '*');
|
|
|
}
|
|
|
};
|
|
|
var _useState7 = (0,_react_17_0_2_react.useState)(true),
|
|
|
_useState8 = slicedToArray_default()(_useState7, 2),
|
|
|
panelVisible = _useState8[0],
|
|
|
setPanelVisible = _useState8[1];
|
|
|
var type = data.type,
|
|
|
orignal_picture = data.orignal_picture,
|
|
|
user_picture = data.user_picture,
|
|
|
answer_picture = data.answer_picture,
|
|
|
contents = data.contents,
|
|
|
user_file = data.user_file,
|
|
|
message = data.message,
|
|
|
qrcode_str = data.qrcode_str,
|
|
|
orignal_file = data.orignal_file,
|
|
|
answer_file = data.answer_file;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(_react_17_0_2_react.Fragment, {
|
|
|
children: [!type ? /*#__PURE__*/(0,jsx_runtime.jsx)(Spinner/* default */.Z, {
|
|
|
message: message || '加载中...'
|
|
|
}) : null, /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "eval-picture-panel",
|
|
|
style: {
|
|
|
display: panelVisible ? 'block' : 'none'
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "picture-body",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("h3", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: "\u67E5\u770B\u6548\u679C"
|
|
|
}), type === 'image' && /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
onClick: function onClick() {
|
|
|
return setDirection(!direction);
|
|
|
},
|
|
|
className: "direction",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
style: {
|
|
|
marginRight: 8,
|
|
|
display: 'inline-block'
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont ".concat(!direction ? 'icon-hengxiang' : 'icon-zongxiang')
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
children: ["\u5207\u6362\u4E3A", !direction ? '横' : '纵', "\u5411\u5BF9\u6BD4"]
|
|
|
})]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-suoxiao--zhengchang picture-panel-icon",
|
|
|
onClick: function onClick() {
|
|
|
return setPanelVisible(false);
|
|
|
}
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-guanbizhengchang picture-panel-icon ml20 font18",
|
|
|
onClick: onHidePictureView
|
|
|
})]
|
|
|
})]
|
|
|
}), type === 'verilog' && /*#__PURE__*/(0,jsx_runtime.jsx)("iframe", {
|
|
|
onLoad: onLoadVerilog,
|
|
|
ref: iframeVerilogEl,
|
|
|
src: "/js/iverilog/index.html",
|
|
|
className: "iverilogFrame"
|
|
|
}), type === 'image' ? /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "flex-container",
|
|
|
style: {
|
|
|
flexDirection: direction ? 'unset' : 'column'
|
|
|
},
|
|
|
children: [orignal_picture.length > 0 ? /*#__PURE__*/(0,jsx_runtime.jsx)(img_list, {
|
|
|
list: orignal_picture,
|
|
|
title: "\u539F\u59CB\u56FE\u7247",
|
|
|
direction: direction
|
|
|
}) : null, answer_picture.length > 0 ? /*#__PURE__*/(0,jsx_runtime.jsx)(img_list, {
|
|
|
list: answer_picture,
|
|
|
title: "\u9884\u671F\u8F93\u51FA",
|
|
|
direction: direction
|
|
|
}) : null, user_picture.length > 0 ? /*#__PURE__*/(0,jsx_runtime.jsx)(img_list, {
|
|
|
list: user_picture,
|
|
|
title: "\u5B9E\u9645\u8F93\u51FA",
|
|
|
direction: direction
|
|
|
}) : null]
|
|
|
}) : type === 'mp4' ? /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "flex-container",
|
|
|
style: {
|
|
|
flexDirection: direction ? 'unset' : 'column'
|
|
|
},
|
|
|
children: [orignal_file.length > 0 ? /*#__PURE__*/(0,jsx_runtime.jsx)(video_list, {
|
|
|
files: orignal_file,
|
|
|
type: type,
|
|
|
title: "\u539F\u59CB\u8F93\u51FA"
|
|
|
}) : null, answer_file.length > 0 ? /*#__PURE__*/(0,jsx_runtime.jsx)(video_list, {
|
|
|
files: answer_file,
|
|
|
type: type,
|
|
|
title: "\u9884\u671F\u8F93\u51FA"
|
|
|
}) : null, user_file.length > 0 ? /*#__PURE__*/(0,jsx_runtime.jsx)(video_list, {
|
|
|
files: user_file,
|
|
|
type: type,
|
|
|
title: "\u5B9E\u9645\u8F93\u51FA"
|
|
|
}) : null]
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsxs)(_react_17_0_2_react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("h2", {
|
|
|
children: "\u5B9E\u9645\u8F93\u51FA"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "output-txt ".concat(type === 'html' ? 'html' : ''),
|
|
|
children: type === 'html' ? /*#__PURE__*/(0,jsx_runtime.jsx)("iframe", {
|
|
|
ref: iframeEl,
|
|
|
style: {
|
|
|
width: '100%',
|
|
|
height: '100%',
|
|
|
border: '1px solid #ccc'
|
|
|
}
|
|
|
}) : type == 'mp3' ? /*#__PURE__*/(0,jsx_runtime.jsx)(video_list, {
|
|
|
files: user_file,
|
|
|
type: type
|
|
|
}) : type === 'qrcode' ? /*#__PURE__*/(0,jsx_runtime.jsx)(qrcode, {
|
|
|
value: qrcode_str
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
style: {
|
|
|
overflow: 'auto',
|
|
|
height: '100%'
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(RenderHtml/* default */.Z, {
|
|
|
value: contents
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
})]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(PreviewModalDragger, {
|
|
|
panelVisible: panelVisible,
|
|
|
onClose: onHidePictureView,
|
|
|
onOpen: function onOpen() {
|
|
|
return setPanelVisible(true);
|
|
|
}
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/notice/service.js
|
|
|
var _getJsonFromUrl, _getJsonFromUrl2;
|
|
|
|
|
|
|
|
|
|
|
|
//判断是否来自教学课堂助教查看实训
|
|
|
var urlParams = (_getJsonFromUrl = (0,util/* getJsonFromUrl */.oP)()) !== null && _getJsonFromUrl !== void 0 && _getJsonFromUrl.homework_common_id ? {
|
|
|
homework_common_id: (_getJsonFromUrl2 = (0,util/* getJsonFromUrl */.oP)()) === null || _getJsonFromUrl2 === void 0 ? void 0 : _getJsonFromUrl2.homework_common_id
|
|
|
} : {};
|
|
|
function updateSystemTip(id, myshixunId) {
|
|
|
return (0,utils_fetch/* get */.U2)("/tasks/".concat(id, "/system_update.json"), {
|
|
|
myshixun_id: myshixunId
|
|
|
});
|
|
|
}
|
|
|
function syncCode(id) {
|
|
|
return (0,utils_fetch/* get */.U2)("/tasks/".concat(id, "/sync_codes.json"), urlParams);
|
|
|
}
|
|
|
function syncModifiedTime(id) {
|
|
|
return (0,utils_fetch/* get */.U2)("/tasks/".concat(id, "/sync_modify_time"));
|
|
|
}
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/notice/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var tasks_notice = (function (_ref) {
|
|
|
var showNotice = _ref.showNotice,
|
|
|
tpm_cases_modified = _ref.tpm_cases_modified,
|
|
|
tpm_modified = _ref.tpm_modified,
|
|
|
tpm_script_modified = _ref.tpm_script_modified,
|
|
|
st = _ref.st,
|
|
|
taskId = _ref.taskId,
|
|
|
myshixunId = _ref.myshixunId,
|
|
|
onNextCallback = _ref.onNextCallback,
|
|
|
onUpdateCallback = _ref.onUpdateCallback,
|
|
|
onUpdateFailure = _ref.onUpdateFailure;
|
|
|
var isUpdateScript = (tpm_modified || tpm_script_modified) && st === 0;
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
loading = _useState2[0],
|
|
|
setLoading = _useState2[1];
|
|
|
function onUpdateNow() {
|
|
|
return _onUpdateNow.apply(this, arguments);
|
|
|
}
|
|
|
function _onUpdateNow() {
|
|
|
_onUpdateNow = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var response, path, status, mes;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
if (!loading) {
|
|
|
_context.next = 2;
|
|
|
break;
|
|
|
}
|
|
|
return _context.abrupt("return");
|
|
|
case 2:
|
|
|
setLoading(true);
|
|
|
if (!isUpdateScript) {
|
|
|
_context.next = 21;
|
|
|
break;
|
|
|
}
|
|
|
_context.next = 6;
|
|
|
return syncCode(taskId);
|
|
|
case 6:
|
|
|
response = _context.sent;
|
|
|
path = response.path, status = response.status;
|
|
|
mes = response.message;
|
|
|
if (!(status === -1)) {
|
|
|
_context.next = 14;
|
|
|
break;
|
|
|
}
|
|
|
message/* default */.ZP.info(mes || '更新失败,服务端错误');
|
|
|
onUpdateFailure();
|
|
|
_context.next = 19;
|
|
|
break;
|
|
|
case 14:
|
|
|
message/* default */.ZP.info('更新成功,正在为您重新加载代码...');
|
|
|
if (!tpm_cases_modified) {
|
|
|
_context.next = 18;
|
|
|
break;
|
|
|
}
|
|
|
_context.next = 18;
|
|
|
return syncModifiedTime(taskId);
|
|
|
case 18:
|
|
|
onUpdateCallback(path, new Date().getTime());
|
|
|
case 19:
|
|
|
_context.next = 25;
|
|
|
break;
|
|
|
case 21:
|
|
|
_context.next = 23;
|
|
|
return syncModifiedTime(taskId);
|
|
|
case 23:
|
|
|
message/* default */.ZP.info('更新状态已同步。');
|
|
|
onNextCallback();
|
|
|
case 25:
|
|
|
setLoading(false);
|
|
|
case 26:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return _onUpdateNow.apply(this, arguments);
|
|
|
}
|
|
|
function onNextUpdate() {
|
|
|
return _onNextUpdate.apply(this, arguments);
|
|
|
}
|
|
|
function _onNextUpdate() {
|
|
|
_onNextUpdate = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
if (!loading) {
|
|
|
_context2.next = 2;
|
|
|
break;
|
|
|
}
|
|
|
return _context2.abrupt("return");
|
|
|
case 2:
|
|
|
setLoading(true);
|
|
|
if (!isUpdateScript) {
|
|
|
_context2.next = 11;
|
|
|
break;
|
|
|
}
|
|
|
_context2.next = 6;
|
|
|
return updateSystemTip(taskId, myshixunId);
|
|
|
case 6:
|
|
|
if (!tpm_cases_modified) {
|
|
|
_context2.next = 9;
|
|
|
break;
|
|
|
}
|
|
|
_context2.next = 9;
|
|
|
return syncModifiedTime(taskId);
|
|
|
case 9:
|
|
|
_context2.next = 13;
|
|
|
break;
|
|
|
case 11:
|
|
|
_context2.next = 13;
|
|
|
return syncModifiedTime(taskId);
|
|
|
case 13:
|
|
|
setLoading(false);
|
|
|
onNextCallback();
|
|
|
case 15:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return _onNextUpdate.apply(this, arguments);
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(es_modal/* default */.Z, {
|
|
|
centered: true,
|
|
|
title: "\u66F4\u65B0\u901A\u77E5",
|
|
|
closable: false,
|
|
|
confirmLoading: loading,
|
|
|
open: showNotice,
|
|
|
onOk: onUpdateNow,
|
|
|
onCancel: onNextUpdate,
|
|
|
okText: isUpdateScript ? '立即更新' : '知道了',
|
|
|
cancelText: "\u7A0D\u540E\u518D\u8BF4",
|
|
|
children: tpm_cases_modified && isUpdateScript ? /*#__PURE__*/(0,jsx_runtime.jsxs)(_react_17_0_2_react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
children: " \u5173\u5361\u4EFB\u52A1\u7684\u4EE3\u7801\u6587\u4EF6\u548C\u6D4B\u8BD5\u96C6\u6709\u66F4\u65B0\u5566~"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
children: "\u66F4\u65B0\u64CD\u4F5C\u5C06\u4FDD\u7559\u5DF2\u5B8C\u6210\u7684\u8BC4\u6D4B\u8BB0\u5F55\u548C\u6210\u7EE9\u3002"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
children: "\u8FD8\u672A\u5B8C\u6210\u8BC4\u6D4B\u7684\u4EFB\u52A1\u4EE3\u7801\uFF0C\u8BF7\u81EA\u884C\u4FDD\u5B58\uFF01"
|
|
|
})]
|
|
|
}) : tpm_cases_modified ? /*#__PURE__*/(0,jsx_runtime.jsxs)(_react_17_0_2_react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
children: ["\u672C\u5173", st === 0 ? '测试集' : '答案', "\u5DF2\u66F4\u65B0\uFF0C\u60A8\u53EF\u4EE5\u91CD\u65B0\u8BC4\u6D4B\u3002"]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
children: "\u672C\u6B21\u66F4\u65B0\u4E0D\u5F71\u54CD\u5DF2\u83B7\u5F97\u7684\u7ECF\u9A8C\u503C\u3002"
|
|
|
})]
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
children: ["\u5173\u5361\u4EFB\u52A1\u7684\u4EE3\u7801\u6587\u4EF6\u6709\u66F4\u65B0\u5566~", /*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), " \u66F4\u65B0\u64CD\u4F5C\u5C06\u4FDD\u7559\u5DF2\u5B8C\u6210\u7684\u8BC4\u6D4B\u8BB0\u5F55\u548C\u6210\u7EE9\u3002", /*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), "\u8FD8\u672A\u5B8C\u6210\u8BC4\u6D4B\u7684\u4EFB\u52A1\u4EE3\u7801\uFF0C\u8BF7\u81EA\u884C\u4FDD\u5B58\uFF01"]
|
|
|
})
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/resize-enlarge.png
|
|
|
var resize_enlarge = __webpack_require__(21978);
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/resize-small.png
|
|
|
var resize_small = __webpack_require__(52787);
|
|
|
// EXTERNAL MODULE: ./src/pages/Classrooms/Lists/Exercise/components/Unlock.tsx
|
|
|
var Unlock = __webpack_require__(61847);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var tasks_excluded = ["gold", "experience", "next_game", "next_shixun", "subject_done"];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var tasks_DirectoryTree = tree/* default */.Z.DirectoryTree;
|
|
|
var tasks_initialState = {
|
|
|
moveX: '40%',
|
|
|
moveY: 0,
|
|
|
loading: true,
|
|
|
isError: false,
|
|
|
taskData: {
|
|
|
game: {}
|
|
|
},
|
|
|
evalData: null,
|
|
|
lastedGetTaskInfoTime: 0,
|
|
|
//更新头部时间
|
|
|
|
|
|
codeRepData: {
|
|
|
content: '',
|
|
|
language: 'c',
|
|
|
currentPath: '',
|
|
|
paths: [],
|
|
|
lastedUpdateTime: 0
|
|
|
},
|
|
|
showEvalResult: false,
|
|
|
showPictureView: false,
|
|
|
isPictureView: false,
|
|
|
showDragMask: false,
|
|
|
webDisplayUrl: '',
|
|
|
evaluateLoading: false,
|
|
|
resetVncLoading: false,
|
|
|
evaluateMessage: '',
|
|
|
showNotice: false,
|
|
|
timestamp: '',
|
|
|
//更新文件代码
|
|
|
|
|
|
showDocuments: false,
|
|
|
repos: null
|
|
|
};
|
|
|
function tasks_reducer(state, action) {
|
|
|
switch (action.type) {
|
|
|
case constant/* MOVE_X */.F_:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
moveX: action.payload
|
|
|
});
|
|
|
case constant/* MOVE_Y */.wQ:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
moveY: action.payload
|
|
|
});
|
|
|
case constant/* FETCH_REP_CONTENT */.GB:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
codeRepData: action.payload
|
|
|
});
|
|
|
case constant/* EDIT_REP_CODE */.N$:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
codeRepData: objectSpread2_default()(objectSpread2_default()({}, state.codeRepData), action.payload)
|
|
|
});
|
|
|
case constant/* SHOW_EVALUATE_RESULT */.m5:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
evaluateLoading: false,
|
|
|
showEvalResult: true
|
|
|
});
|
|
|
case constant/* UPDATE_TIMESTRAP */.G9:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
timestamp: action.payload
|
|
|
});
|
|
|
case constant/* HIDE_EVALUATE_RESULT */.EP:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
showEvalResult: false
|
|
|
});
|
|
|
case constant/* FETCH_TASK_START */.n4:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
loading: true
|
|
|
});
|
|
|
case constant/* UPDATE_TASK_DATA */.z2:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), action.payload);
|
|
|
case constant/* TRIGGER_RIGHT_PANEL_MASK */.i3:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
showDragMask: action.payload
|
|
|
});
|
|
|
case constant/* FETCH_TASK_FAILURE */.Ir:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
loading: false,
|
|
|
isError: true
|
|
|
});
|
|
|
case constant/* FETCH_TASK_SUCCESS */.yi:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), action.payload);
|
|
|
case constant/* SHOW_EVALUATE_LOADING */.Ui:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
evaluateLoading: true
|
|
|
});
|
|
|
case constant/* HIDE_EVALUATE_LOADING */.A0:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
evaluateLoading: false
|
|
|
});
|
|
|
case constant/* SET_EVALUATE_MESSAGE */.p2:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
evaluateMessage: action.payload
|
|
|
});
|
|
|
case constant/* SET_SHOW_DIR */.GW:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
showDocuments: action.payload
|
|
|
});
|
|
|
case constant/* SET_REPOS */.oP:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), action.payload);
|
|
|
case constant/* SHOW_NOTICE */.dL:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
showNotice: true
|
|
|
});
|
|
|
case constant/* HIDE_NOTICE */.Nv:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
showNotice: false
|
|
|
});
|
|
|
case constant/* HIDE_PICTURE_VIEW */.OA:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
showPictureView: false
|
|
|
});
|
|
|
case constant/* SHOW_PICTURE_VIEW */.vm:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
showPictureView: true
|
|
|
});
|
|
|
case constant/* SET_VNC_LOADING */.RY:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
resetVncLoading: action.payload
|
|
|
});
|
|
|
default:
|
|
|
throw new Error();
|
|
|
}
|
|
|
}
|
|
|
//切换关卡或者用户关闭页面时需要保存用户计时与代码
|
|
|
//评测时,刷新测试集,用户金币与关卡任务信息
|
|
|
//react 缺少keep-alive 机制,所以文件目录树也需要放在顶层,在code-repository 中管理,会因为react的组件卸载导致状态丢失。
|
|
|
|
|
|
/* harmony default export */ var tasks = (function (_ref) {
|
|
|
var props = Object.assign({}, (objectDestructuringEmpty_default()(_ref), _ref));
|
|
|
var userInfo = (0,_umi_production_exports.useSelector)(function (state) {
|
|
|
var _state$user;
|
|
|
return state === null || state === void 0 || (_state$user = state.user) === null || _state$user === void 0 ? void 0 : _state$user.userInfo;
|
|
|
});
|
|
|
var _params = (0,_umi_production_exports.useParams)();
|
|
|
var _useSearchParams = (0,_umi_production_exports.useSearchParams)(),
|
|
|
_useSearchParams2 = slicedToArray_default()(_useSearchParams, 1),
|
|
|
searchParams = _useSearchParams2[0];
|
|
|
var _useReducer = (0,_react_17_0_2_react.useReducer)(tasks_reducer, tasks_initialState),
|
|
|
_useReducer2 = slicedToArray_default()(_useReducer, 2),
|
|
|
state = _useReducer2[0],
|
|
|
dispatch = _useReducer2[1];
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(_params.taskId),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
taskId = _useState2[0],
|
|
|
setTaskId = _useState2[1];
|
|
|
var exerciseDataRef = (0,_react_17_0_2_react.useRef)();
|
|
|
var resizeXFlag = (0,_react_17_0_2_react.useRef)();
|
|
|
var resizeYFlag = (0,_react_17_0_2_react.useRef)();
|
|
|
var stateRef = (0,_react_17_0_2_react.useRef)();
|
|
|
var tabActiveParamsRef = (0,_react_17_0_2_react.useRef)({});
|
|
|
var fullscreenOrExit = (0,_react_17_0_2_react.useRef)();
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)([]),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
tabs = _useState4[0],
|
|
|
setTabs = _useState4[1];
|
|
|
var _useState5 = (0,_react_17_0_2_react.useState)({}),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
tabActiveParams = _useState6[0],
|
|
|
setTabActiveParams = _useState6[1];
|
|
|
var _useState7 = (0,_react_17_0_2_react.useState)(true),
|
|
|
_useState8 = slicedToArray_default()(_useState7, 2),
|
|
|
codeLoading = _useState8[0],
|
|
|
setCodeLoading = _useState8[1];
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
setTaskId(_params.taskId);
|
|
|
}, [_params]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
tabActiveParamsRef.current = tabActiveParams;
|
|
|
}, [tabActiveParams]);
|
|
|
var moveX = state.moveX,
|
|
|
taskData = state.taskData,
|
|
|
moveY = state.moveY,
|
|
|
evalData = state.evalData,
|
|
|
showEvalResult = state.showEvalResult,
|
|
|
codeRepData = state.codeRepData,
|
|
|
loading = state.loading,
|
|
|
evaluateLoading = state.evaluateLoading,
|
|
|
evaluateMessage = state.evaluateMessage,
|
|
|
showDocuments = state.showDocuments,
|
|
|
repos = state.repos,
|
|
|
showPictureView = state.showPictureView,
|
|
|
showNotice = state.showNotice,
|
|
|
webDisplayUrl = state.webDisplayUrl,
|
|
|
isPictureView = state.isPictureView,
|
|
|
resetVncLoading = state.resetVncLoading,
|
|
|
timestamp = state.timestamp,
|
|
|
lastedGetTaskInfoTime = state.lastedGetTaskInfoTime,
|
|
|
showDragMask = state.showDragMask;
|
|
|
stateRef.current = state;
|
|
|
var st = taskData.st,
|
|
|
challenge = taskData.challenge,
|
|
|
shixun = taskData.shixun,
|
|
|
to_user_id = taskData.to_user_id,
|
|
|
chatgpt = taskData.chatgpt,
|
|
|
is_teacher = taskData.is_teacher,
|
|
|
game = taskData.game,
|
|
|
monitoring_url = taskData.monitoring_url,
|
|
|
has_answer = taskData.has_answer,
|
|
|
vnc_url = taskData.vnc_url,
|
|
|
git_url = taskData.git_url,
|
|
|
user = taskData.user,
|
|
|
myshixun = taskData.myshixun,
|
|
|
discusses_count = taskData.discusses_count,
|
|
|
user_praise = taskData.user_praise,
|
|
|
praise_count = taskData.praise_count,
|
|
|
tpm_cases_modified = taskData.tpm_cases_modified,
|
|
|
tpm_modified = taskData.tpm_modified,
|
|
|
tpm_script_modified = taskData.tpm_script_modified,
|
|
|
mirror_name = taskData.mirror_name,
|
|
|
mirror_description = taskData.mirror_description,
|
|
|
tomcat_url = taskData.tomcat_url,
|
|
|
unity_3d_routes = taskData.unity_3d_routes,
|
|
|
with_code_file = taskData.with_code_file,
|
|
|
unity_3d_result = taskData.unity_3d_result,
|
|
|
next_game = taskData.next_game,
|
|
|
prev_game = taskData.prev_game,
|
|
|
mirror_description_multi = taskData.mirror_description_multi,
|
|
|
shixun_environments = taskData.shixun_environments;
|
|
|
var currentPath = codeRepData.currentPath,
|
|
|
paths = codeRepData.paths,
|
|
|
content = codeRepData.content,
|
|
|
language = codeRepData.language,
|
|
|
lastedUpdateTime = codeRepData.lastedUpdateTime;
|
|
|
var index_tab = tabActiveParams.index_tab,
|
|
|
shixun_environment_id = tabActiveParams.shixun_environment_id,
|
|
|
tab_type = tabActiveParams.tab_type;
|
|
|
var prevCurrentPath = (0,_react_17_0_2_react.useRef)('');
|
|
|
var isUpdateScript = (tpm_modified || tpm_script_modified) && st === 0;
|
|
|
|
|
|
//是否显示更新公告按钮
|
|
|
var isNotice = (tpm_cases_modified || isUpdateScript) && myshixun.system_tip === true;
|
|
|
var isHtml = (mirror_name || []).indexOf('Html') !== -1;
|
|
|
var leftPanelWidth = typeof moveX === 'number' && moveX !== 0.01 ? "".concat(moveX, "px") : '40%';
|
|
|
var rightPanelWidth = "calc(100% - 4px - ".concat(leftPanelWidth, ")");
|
|
|
|
|
|
//渲染工具栏
|
|
|
var toolbarItem = tabs === null || tabs === void 0 ? void 0 : tabs.find(function (e) {
|
|
|
return (e === null || e === void 0 ? void 0 : e.index_tab) === (tabActiveParams === null || tabActiveParams === void 0 ? void 0 : tabActiveParams.index_tab);
|
|
|
});
|
|
|
|
|
|
//文件是否存在
|
|
|
var isEditPath = (0,_react_17_0_2_react.useMemo)(function () {
|
|
|
if (currentPath && paths) {
|
|
|
return paths.indexOf(currentPath) >= 0;
|
|
|
}
|
|
|
return false;
|
|
|
}, [currentPath, paths]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (resizeYFlag.current || resizeXFlag.current) {
|
|
|
var onMove = function onMove(e) {
|
|
|
if (resizeXFlag.current) {
|
|
|
var pageX = e.pageX;
|
|
|
var maxPageX = window.innerWidth - 500;
|
|
|
if (pageX <= 200) {
|
|
|
pageX = 0.01;
|
|
|
}
|
|
|
if (pageX >= maxPageX) {
|
|
|
pageX = maxPageX;
|
|
|
}
|
|
|
dispatch({
|
|
|
type: constant/* MOVE_X */.F_,
|
|
|
payload: pageX
|
|
|
});
|
|
|
}
|
|
|
if (resizeYFlag.current) {
|
|
|
dispatch({
|
|
|
type: constant/* MOVE_Y */.wQ,
|
|
|
payload: e.pageY
|
|
|
});
|
|
|
}
|
|
|
};
|
|
|
var onMouseUp = function onMouseUp() {
|
|
|
(0,util/* pointerEvents */.kk)('auto');
|
|
|
resizeXFlag.current = false;
|
|
|
resizeYFlag.current = false;
|
|
|
dispatch({
|
|
|
type: constant/* TRIGGER_RIGHT_PANEL_MASK */.i3,
|
|
|
payload: false
|
|
|
});
|
|
|
document.onselectstart = null;
|
|
|
};
|
|
|
document.addEventListener('mousemove', onMove);
|
|
|
document.addEventListener('mouseup', onMouseUp);
|
|
|
return function () {
|
|
|
document.removeEventListener('mousemove', onMove);
|
|
|
document.removeEventListener('mouseup', onMouseUp);
|
|
|
};
|
|
|
}
|
|
|
}, [resizeYFlag.current, resizeXFlag.current, dispatch]);
|
|
|
|
|
|
//退出保存代码
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
window.addEventListener('beforeunload', onSaveContent);
|
|
|
return function () {
|
|
|
window.removeEventListener('beforeunload', onSaveContent);
|
|
|
};
|
|
|
}, [taskData, codeLoading]);
|
|
|
|
|
|
//设置浏览器标签名字
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (shixun) {
|
|
|
(0,util/* setDocumentTitle */.Dk)(shixun.name || '实践项目名称-未填写');
|
|
|
}
|
|
|
}, [shixun]);
|
|
|
|
|
|
//解锁测试集
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
var unSub = mediator/* default */.Z.subscribe('unlock-test-case', function () {
|
|
|
es_modal/* default */.Z.confirm(defineProperty_default()(defineProperty_default()({
|
|
|
centered: true,
|
|
|
okText: '确定',
|
|
|
cancelText: '取消',
|
|
|
title: '提示',
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsx)(UnLockTestTip, {
|
|
|
score: challenge.score,
|
|
|
is_teacher: is_teacher
|
|
|
})
|
|
|
}, "centered", true), "onOk", onUnlockTestCase));
|
|
|
});
|
|
|
return unSub;
|
|
|
}, [onUnlockTestCase, challenge, is_teacher]);
|
|
|
|
|
|
//初始化数据
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (!(0,lodash.isEmpty)(userInfo)) {
|
|
|
init();
|
|
|
}
|
|
|
}, [userInfo]);
|
|
|
function init() {
|
|
|
return _init.apply(this, arguments);
|
|
|
}
|
|
|
function _init() {
|
|
|
_init = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee6() {
|
|
|
var response, status, _st, hide_width_rate, path, realMoveX, payload, _paths;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee6$(_context6) {
|
|
|
while (1) switch (_context6.prev = _context6.next) {
|
|
|
case 0:
|
|
|
_context6.prev = 0;
|
|
|
_context6.next = 3;
|
|
|
return (0,service/* fetchTaskInfo */.XO)(_params.taskId);
|
|
|
case 3:
|
|
|
response = _context6.sent;
|
|
|
status = response.status;
|
|
|
if (!(status === 401)) {
|
|
|
_context6.next = 9;
|
|
|
break;
|
|
|
}
|
|
|
return _context6.abrupt("return");
|
|
|
case 9:
|
|
|
if (!(status === -3)) {
|
|
|
_context6.next = 13;
|
|
|
break;
|
|
|
}
|
|
|
(0,util/* bindPhone */.eF)({
|
|
|
onCancel: function onCancel() {
|
|
|
window.location.href = '/';
|
|
|
}
|
|
|
});
|
|
|
_context6.next = 28;
|
|
|
break;
|
|
|
case 13:
|
|
|
if (!(status === 403)) {
|
|
|
_context6.next = 17;
|
|
|
break;
|
|
|
}
|
|
|
history.replace('/403');
|
|
|
_context6.next = 28;
|
|
|
break;
|
|
|
case 17:
|
|
|
if (!(status === 404)) {
|
|
|
_context6.next = 22;
|
|
|
break;
|
|
|
}
|
|
|
history.replace('/404');
|
|
|
return _context6.abrupt("return");
|
|
|
case 22:
|
|
|
_st = response.st, hide_width_rate = response.hide_width_rate, path = response.challenge.path;
|
|
|
realMoveX = hide_width_rate ? Math.ceil(window.innerWidth * hide_width_rate / 100) : 0.01;
|
|
|
payload = {
|
|
|
loading: false,
|
|
|
isError: false,
|
|
|
moveX: realMoveX,
|
|
|
taskData: response,
|
|
|
lastedGetTaskInfoTime: new Date().getTime(),
|
|
|
codeRepData: codeRepData
|
|
|
};
|
|
|
env/* default */.Z.SSH_SERVER = response.websocket_url;
|
|
|
if (_st === 0 && path) {
|
|
|
//设置当前文件
|
|
|
_paths = path.split(';').filter(function (item) {
|
|
|
return !!item;
|
|
|
});
|
|
|
payload['codeRepData'].currentPath = _paths[0];
|
|
|
payload['codeRepData'].paths = _paths;
|
|
|
payload['codeRepData'].lastedUpdateTime = 0;
|
|
|
}
|
|
|
dispatch({
|
|
|
type: constant/* FETCH_TASK_SUCCESS */.yi,
|
|
|
payload: objectSpread2_default()({}, payload)
|
|
|
});
|
|
|
case 28:
|
|
|
_context6.next = 34;
|
|
|
break;
|
|
|
case 30:
|
|
|
_context6.prev = 30;
|
|
|
_context6.t0 = _context6["catch"](0);
|
|
|
console.log(_context6.t0);
|
|
|
dispatch({
|
|
|
type: constant/* FETCH_TASK_FAILURE */.Ir
|
|
|
});
|
|
|
case 34:
|
|
|
case "end":
|
|
|
return _context6.stop();
|
|
|
}
|
|
|
}, _callee6, null, [[0, 30]]);
|
|
|
}));
|
|
|
return _init.apply(this, arguments);
|
|
|
}
|
|
|
var dealError = function dealError(re) {
|
|
|
if (re instanceof TypeError && !!prevCurrentPath.current) {
|
|
|
var saveCurrentPath = prevCurrentPath.current;
|
|
|
prevCurrentPath.current = 'stop';
|
|
|
dispatch({
|
|
|
type: constant/* EDIT_REP_CODE */.N$,
|
|
|
payload: {
|
|
|
currentPath: saveCurrentPath
|
|
|
}
|
|
|
});
|
|
|
setTimeout(function () {
|
|
|
prevCurrentPath.current = '';
|
|
|
}, 500);
|
|
|
}
|
|
|
};
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
function init() {
|
|
|
return _init2.apply(this, arguments);
|
|
|
}
|
|
|
function _init2() {
|
|
|
_init2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var data, _content, _content2, _data$content, _data$content2, _data$content3;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
setCodeLoading(true);
|
|
|
_context.next = 3;
|
|
|
return (0,service/* fetchCode */.li)(taskId, {
|
|
|
path: currentPath
|
|
|
});
|
|
|
case 3:
|
|
|
data = _context.sent;
|
|
|
if (data !== null && data !== void 0 && data.content) {
|
|
|
try {
|
|
|
if ((data === null || data === void 0 ? void 0 : data.file_type) === 'txt') {
|
|
|
_content = ((_content2 = _content) === null || _content2 === void 0 ? void 0 : _content2.length) === 0 ? _content : window.decodeURIComponent(escape(window.atob(data === null || data === void 0 || (_data$content = data.content) === null || _data$content === void 0 ? void 0 : _data$content.content)));
|
|
|
} else {
|
|
|
_content = data === null || data === void 0 || (_data$content2 = data.content) === null || _data$content2 === void 0 ? void 0 : _data$content2.content;
|
|
|
}
|
|
|
// }
|
|
|
} catch (e) {
|
|
|
_content = window.atob(data === null || data === void 0 || (_data$content3 = data.content) === null || _data$content3 === void 0 ? void 0 : _data$content3.content);
|
|
|
message/* default */.ZP.warning('请确认文件字符集编码是否为UTF-8');
|
|
|
console.log('err:', e);
|
|
|
}
|
|
|
dispatch({
|
|
|
type: constant/* FETCH_REP_CONTENT */.GB,
|
|
|
payload: objectSpread2_default()(objectSpread2_default()({}, codeRepData), {}, {
|
|
|
content: _content,
|
|
|
language: data.language,
|
|
|
file_type: data.file_type,
|
|
|
filename: data.filename,
|
|
|
lastedUpdateTime: 0
|
|
|
})
|
|
|
});
|
|
|
} else if ((data === null || data === void 0 ? void 0 : data.status) === 0) {
|
|
|
//特殊意义 status为0为错误情况
|
|
|
message/* default */.ZP.warning(data === null || data === void 0 ? void 0 : data.message);
|
|
|
}
|
|
|
//断网情况下
|
|
|
dealError(data);
|
|
|
setCodeLoading(false);
|
|
|
case 7:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return _init2.apply(this, arguments);
|
|
|
}
|
|
|
console.log(prevCurrentPath.current, 2222);
|
|
|
if (st === 0 //实训题
|
|
|
&& currentPath //有文件
|
|
|
&& !(unity_3d_routes && !with_code_file) //不是虚拟仿真
|
|
|
&& shixun_environments !== null && shixun_environments !== void 0 && shixun_environments.some(function (e) {
|
|
|
return e.tab_type === 1;
|
|
|
}) //tab里有ide编辑器
|
|
|
&& prevCurrentPath.current !== 'stop') {
|
|
|
init();
|
|
|
}
|
|
|
}, [st, currentPath, lastedGetTaskInfoTime, timestamp]);
|
|
|
|
|
|
//代码保存
|
|
|
var onUpdateCode = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
var evaluate,
|
|
|
paramsFromExercise,
|
|
|
ip,
|
|
|
response,
|
|
|
_args2 = arguments;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
evaluate = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : 0;
|
|
|
if (!(st === 0 && lastedUpdateTime > 0 && isEditPath || evaluate)) {
|
|
|
_context2.next = 14;
|
|
|
break;
|
|
|
}
|
|
|
paramsFromExercise = _params.courseId && _params.exerciseId ? {
|
|
|
exercise_id: _params.exerciseId
|
|
|
} : {};
|
|
|
if (!(searchParams.get("ip_limit") === 'inner' || searchParams.get("ip_bind") === "true")) {
|
|
|
_context2.next = 7;
|
|
|
break;
|
|
|
}
|
|
|
_context2.next = 6;
|
|
|
return (0,Exercise_ip/* findLocalIp */.y)({
|
|
|
ip_limit: searchParams.get("ip_limit"),
|
|
|
ip_bind: searchParams.get("ip_bind") === "true" ? true : false
|
|
|
});
|
|
|
case 6:
|
|
|
ip = _context2.sent;
|
|
|
case 7:
|
|
|
_context2.next = 9;
|
|
|
return (0,service/* updateCode */.n4)(myshixun.identifier, objectSpread2_default()({
|
|
|
path: currentPath,
|
|
|
evaluate: evaluate,
|
|
|
content: content,
|
|
|
game_id: game.id,
|
|
|
tab_type: tab_type,
|
|
|
exercise_id: searchParams.get("exercisesId"),
|
|
|
ip: ip
|
|
|
}, paramsFromExercise));
|
|
|
case 9:
|
|
|
response = _context2.sent;
|
|
|
if ((response === null || response === void 0 ? void 0 : response.status) === -5 && typeof (response === null || response === void 0 ? void 0 : response.message) === "string") {
|
|
|
es_modal/* default */.Z.info({
|
|
|
title: '提示',
|
|
|
maskClosable: true,
|
|
|
icon: null,
|
|
|
width: 700,
|
|
|
centered: true,
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: ["\u8BE5\u5B9E\u8DF5\u9879\u76EE\u5DF2\u5728\u6559\u5B66\u8BFE\u5802\u8003\u8BD5\uFF08", /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
href: "/classrooms/".concat(response === null || response === void 0 ? void 0 : response.course_identifier, "/exercise/").concat(response === null || response === void 0 ? void 0 : response.exercise_id, "/detail"),
|
|
|
children: response === null || response === void 0 ? void 0 : response.exercise_name
|
|
|
}), "\uFF09\u4E2D\u88AB\u4F7F\u7528\uFF0C\u7528\u6237\u8BD5\u5377\u5DF2\u4EA4\u5377\uFF0C\u7981\u6B62\u518D\u4F5C\u7B54\uFF01"]
|
|
|
})
|
|
|
});
|
|
|
}
|
|
|
dispatch({
|
|
|
type: constant/* EDIT_REP_CODE */.N$,
|
|
|
payload: {
|
|
|
lastedUpdateTime: 0
|
|
|
}
|
|
|
});
|
|
|
dealError(response);
|
|
|
return _context2.abrupt("return", response);
|
|
|
case 14:
|
|
|
return _context2.abrupt("return", true);
|
|
|
case 15:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return function onUpdateCode() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
|
|
|
//窗口关闭保存代码
|
|
|
var onSaveContent = /*#__PURE__*/function () {
|
|
|
var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3() {
|
|
|
var paramsFromExercise, ip, _stateRef$current$cod, _tabActiveParamsRef$c, bodys, headers, blob;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
if (!codeLoading) {
|
|
|
_context3.next = 2;
|
|
|
break;
|
|
|
}
|
|
|
return _context3.abrupt("return");
|
|
|
case 2:
|
|
|
if (game) {
|
|
|
if (game.status !== 2) {
|
|
|
mediator/* default */.Z.publish('update-cost-time');
|
|
|
}
|
|
|
}
|
|
|
_context3.prev = 3;
|
|
|
paramsFromExercise = _params.courseId && _params.exerciseId ? {
|
|
|
exercise_id: _params.exerciseId
|
|
|
} : {};
|
|
|
if (!(searchParams.get("ip_limit") === 'inner' || searchParams.get("ip_bind") === "true")) {
|
|
|
_context3.next = 9;
|
|
|
break;
|
|
|
}
|
|
|
_context3.next = 8;
|
|
|
return (0,Exercise_ip/* findLocalIp */.y)({
|
|
|
ip_limit: searchParams.get("ip_limit"),
|
|
|
ip_bind: searchParams.get("ip_bind") === "true" ? true : false
|
|
|
});
|
|
|
case 8:
|
|
|
ip = _context3.sent;
|
|
|
case 9:
|
|
|
if (myshixun !== null && myshixun !== void 0 && myshixun.identifier) {
|
|
|
bodys = objectSpread2_default()({
|
|
|
path: stateRef.current.codeRepData.currentPath,
|
|
|
evaluate: 0,
|
|
|
content: (_stateRef$current$cod = stateRef.current.codeRepData) === null || _stateRef$current$cod === void 0 ? void 0 : _stateRef$current$cod.content,
|
|
|
game_id: game.id,
|
|
|
tab_type: (_tabActiveParamsRef$c = tabActiveParamsRef.current) === null || _tabActiveParamsRef$c === void 0 ? void 0 : _tabActiveParamsRef$c.tab_type,
|
|
|
ip: ip
|
|
|
}, paramsFromExercise);
|
|
|
headers = {
|
|
|
type: 'application/json'
|
|
|
};
|
|
|
blob = new Blob([JSON.stringify(bodys)], headers);
|
|
|
window.navigator.sendBeacon("".concat(env/* default */.Z.API_SERVER, "/api/myshixuns/").concat(myshixun === null || myshixun === void 0 ? void 0 : myshixun.identifier, "/update_file.json"), blob);
|
|
|
}
|
|
|
_context3.next = 14;
|
|
|
break;
|
|
|
case 12:
|
|
|
_context3.prev = 12;
|
|
|
_context3.t0 = _context3["catch"](3);
|
|
|
case 14:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3, null, [[3, 12]]);
|
|
|
}));
|
|
|
return function onSaveContent() {
|
|
|
return _ref3.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
|
|
|
//切换关卡
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
var unSub1 = mediator/* default */.Z.subscribe("exercise-data", function (data) {
|
|
|
exerciseDataRef.current = data;
|
|
|
});
|
|
|
return function () {
|
|
|
unSub1();
|
|
|
};
|
|
|
}, [location]);
|
|
|
var onUnlockTestCase = (0,_react_17_0_2_react.useCallback)( /*#__PURE__*/asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee4() {
|
|
|
var response, test_sets, message, status, grade;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee4$(_context4) {
|
|
|
while (1) switch (_context4.prev = _context4.next) {
|
|
|
case 0:
|
|
|
_context4.next = 2;
|
|
|
return (0,service/* unlockTestCase */.t$)(game.identifier);
|
|
|
case 2:
|
|
|
response = _context4.sent;
|
|
|
test_sets = response.test_sets, message = response.message, status = response.status;
|
|
|
if (!(status === -1)) {
|
|
|
_context4.next = 7;
|
|
|
break;
|
|
|
}
|
|
|
message.info(message);
|
|
|
return _context4.abrupt("return");
|
|
|
case 7:
|
|
|
grade = taskData['user'].grade;
|
|
|
taskData['user'].grade = grade - challenge.score * 2;
|
|
|
taskData['test_sets'] = test_sets;
|
|
|
taskData['game']['test_sets_view'] = true;
|
|
|
dispatch({
|
|
|
type: constant/* UPDATE_TASK_DATA */.z2,
|
|
|
payload: {
|
|
|
taskData: taskData
|
|
|
}
|
|
|
});
|
|
|
case 12:
|
|
|
case "end":
|
|
|
return _context4.stop();
|
|
|
}
|
|
|
}, _callee4);
|
|
|
})), [game, challenge, dispatch]);
|
|
|
function minuxUserGrade(value) {
|
|
|
var grade = taskData['user'].grade;
|
|
|
taskData['user'].grade = grade - value;
|
|
|
dispatch({
|
|
|
type: constant/* UPDATE_TASK_DATA */.z2,
|
|
|
payload: {
|
|
|
taskData: taskData
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
fullscreenOrExit.current = function () {
|
|
|
state.moveX = state.moveX !== 0.01 ? 0.01 : '40%';
|
|
|
dispatch({
|
|
|
type: constant/* MOVE_X */.F_,
|
|
|
payload: state.moveX
|
|
|
});
|
|
|
};
|
|
|
function onResizeStart() {
|
|
|
document.onselectstart = function () {
|
|
|
return false;
|
|
|
};
|
|
|
resizeXFlag.current = true;
|
|
|
(0,util/* pointerEvents */.kk)('none');
|
|
|
dispatch({
|
|
|
type: constant/* TRIGGER_RIGHT_PANEL_MASK */.i3,
|
|
|
payload: true
|
|
|
});
|
|
|
}
|
|
|
function onResizeYStart() {
|
|
|
document.onselectstart = function () {
|
|
|
return false;
|
|
|
};
|
|
|
resizeYFlag.current = true;
|
|
|
(0,util/* pointerEvents */.kk)('none');
|
|
|
dispatch({
|
|
|
type: constant/* TRIGGER_RIGHT_PANEL_MASK */.i3,
|
|
|
payload: true
|
|
|
});
|
|
|
}
|
|
|
|
|
|
//测试集放大缩小
|
|
|
function onResizeSetContainer(value) {
|
|
|
if (value === 0.01) {
|
|
|
dispatch({
|
|
|
type: constant/* MOVE_Y */.wQ,
|
|
|
payload: 0
|
|
|
});
|
|
|
} else {
|
|
|
dispatch({
|
|
|
type: constant/* MOVE_Y */.wQ,
|
|
|
payload: 0.01
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//测试集展开或者关闭
|
|
|
function onResizeCodeArea(value) {
|
|
|
if (value === 0) {
|
|
|
dispatch({
|
|
|
type: constant/* MOVE_Y */.wQ,
|
|
|
payload: '100%'
|
|
|
});
|
|
|
} else {
|
|
|
dispatch({
|
|
|
type: constant/* MOVE_Y */.wQ,
|
|
|
payload: 0
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
function onFinishDisplayHtml() {
|
|
|
onUpdateCode();
|
|
|
}
|
|
|
|
|
|
//恢复初始代码
|
|
|
function onResetCode() {
|
|
|
return _onResetCode.apply(this, arguments);
|
|
|
} //重置代码仓库
|
|
|
function _onResetCode() {
|
|
|
_onResetCode = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee7() {
|
|
|
var response, content, language;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee7$(_context7) {
|
|
|
while (1) switch (_context7.prev = _context7.next) {
|
|
|
case 0:
|
|
|
setCodeLoading(true);
|
|
|
_context7.next = 3;
|
|
|
return (0,service/* restoreCode */.qK)(taskId, {
|
|
|
path: currentPath
|
|
|
});
|
|
|
case 3:
|
|
|
response = _context7.sent;
|
|
|
content = response.content, language = response.language;
|
|
|
if (!((response === null || response === void 0 ? void 0 : response.status) === -5)) {
|
|
|
_context7.next = 9;
|
|
|
break;
|
|
|
}
|
|
|
es_modal/* default */.Z.info({
|
|
|
title: '提示',
|
|
|
maskClosable: true,
|
|
|
icon: null,
|
|
|
width: 700,
|
|
|
centered: true,
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: ["\u8BE5\u5B9E\u8DF5\u9879\u76EE\u5DF2\u5728\u6559\u5B66\u8BFE\u5802\u8003\u8BD5\uFF08", /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
href: "/classrooms/".concat(response === null || response === void 0 ? void 0 : response.course_identifier, "/exercise/").concat(response === null || response === void 0 ? void 0 : response.exercise_id, "/detail"),
|
|
|
children: response === null || response === void 0 ? void 0 : response.exercise_name
|
|
|
}), "\uFF09\u4E2D\u88AB\u4F7F\u7528\uFF0C\u7528\u6237\u8BD5\u5377\u5DF2\u4EA4\u5377\uFF0C\u7981\u6B62\u518D\u4F5C\u7B54\uFF01"]
|
|
|
})
|
|
|
});
|
|
|
setCodeLoading(false);
|
|
|
return _context7.abrupt("return", Promise.reject());
|
|
|
case 9:
|
|
|
dispatch({
|
|
|
type: constant/* FETCH_REP_CONTENT */.GB,
|
|
|
payload: objectSpread2_default()(objectSpread2_default()({}, codeRepData), {}, {
|
|
|
content: content,
|
|
|
language: language,
|
|
|
lastedUpdateTime: 0
|
|
|
})
|
|
|
});
|
|
|
setCodeLoading(false);
|
|
|
case 11:
|
|
|
case "end":
|
|
|
return _context7.stop();
|
|
|
}
|
|
|
}, _callee7);
|
|
|
}));
|
|
|
return _onResetCode.apply(this, arguments);
|
|
|
}
|
|
|
function onResetGitCode() {
|
|
|
return _onResetGitCode.apply(this, arguments);
|
|
|
} //加载上次通过的代码
|
|
|
function _onResetGitCode() {
|
|
|
_onResetGitCode = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee8() {
|
|
|
var _taskData$myshixun;
|
|
|
var response;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee8$(_context8) {
|
|
|
while (1) switch (_context8.prev = _context8.next) {
|
|
|
case 0:
|
|
|
_context8.next = 2;
|
|
|
return (0,service/* resetGitCode */.Tf)(taskData === null || taskData === void 0 || (_taskData$myshixun = taskData.myshixun) === null || _taskData$myshixun === void 0 ? void 0 : _taskData$myshixun.identifier, {});
|
|
|
case 2:
|
|
|
response = _context8.sent;
|
|
|
if (!((response === null || response === void 0 ? void 0 : response.status) === -5)) {
|
|
|
_context8.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
es_modal/* default */.Z.info({
|
|
|
title: '提示',
|
|
|
maskClosable: true,
|
|
|
icon: null,
|
|
|
width: 700,
|
|
|
centered: true,
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: ["\u8BE5\u5B9E\u8DF5\u9879\u76EE\u5DF2\u5728\u6559\u5B66\u8BFE\u5802\u8003\u8BD5\uFF08", /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
href: "/classrooms/".concat(response === null || response === void 0 ? void 0 : response.course_identifier, "/exercise/").concat(response === null || response === void 0 ? void 0 : response.exercise_id, "/detail"),
|
|
|
children: response === null || response === void 0 ? void 0 : response.exercise_name
|
|
|
}), "\uFF09\u4E2D\u88AB\u4F7F\u7528\uFF0C\u7528\u6237\u8BD5\u5377\u5DF2\u4EA4\u5377\uFF0C\u7981\u6B62\u518D\u4F5C\u7B54\uFF01"]
|
|
|
})
|
|
|
});
|
|
|
return _context8.abrupt("return", Promise.reject());
|
|
|
case 6:
|
|
|
init();
|
|
|
return _context8.abrupt("return", response);
|
|
|
case 8:
|
|
|
case "end":
|
|
|
return _context8.stop();
|
|
|
}
|
|
|
}, _callee8);
|
|
|
}));
|
|
|
return _onResetGitCode.apply(this, arguments);
|
|
|
}
|
|
|
function onResetPassedCode() {
|
|
|
return _onResetPassedCode.apply(this, arguments);
|
|
|
}
|
|
|
function _onResetPassedCode() {
|
|
|
_onResetPassedCode = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee9() {
|
|
|
var response, content, language;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee9$(_context9) {
|
|
|
while (1) switch (_context9.prev = _context9.next) {
|
|
|
case 0:
|
|
|
_context9.next = 2;
|
|
|
return (0,service/* resetPassedCode */.hG)(taskId, {
|
|
|
path: currentPath
|
|
|
});
|
|
|
case 2:
|
|
|
response = _context9.sent;
|
|
|
content = response.content, language = response.language;
|
|
|
if (!((response === null || response === void 0 ? void 0 : response.status) === -5)) {
|
|
|
_context9.next = 7;
|
|
|
break;
|
|
|
}
|
|
|
es_modal/* default */.Z.info({
|
|
|
title: '提示',
|
|
|
maskClosable: true,
|
|
|
icon: null,
|
|
|
width: 700,
|
|
|
centered: true,
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: ["\u8BE5\u5B9E\u8DF5\u9879\u76EE\u5DF2\u5728\u6559\u5B66\u8BFE\u5802\u8003\u8BD5\uFF08", /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
href: "/classrooms/".concat(response === null || response === void 0 ? void 0 : response.course_identifier, "/exercise/").concat(response === null || response === void 0 ? void 0 : response.exercise_id, "/detail"),
|
|
|
children: response === null || response === void 0 ? void 0 : response.exercise_name
|
|
|
}), "\uFF09\u4E2D\u88AB\u4F7F\u7528\uFF0C\u7528\u6237\u8BD5\u5377\u5DF2\u4EA4\u5377\uFF0C\u7981\u6B62\u518D\u4F5C\u7B54\uFF01"]
|
|
|
})
|
|
|
});
|
|
|
return _context9.abrupt("return");
|
|
|
case 7:
|
|
|
dispatch({
|
|
|
type: constant/* FETCH_REP_CONTENT */.GB,
|
|
|
payload: objectSpread2_default()(objectSpread2_default()({}, codeRepData), {}, {
|
|
|
content: content,
|
|
|
language: language,
|
|
|
lastedUpdateTime: 0,
|
|
|
loading: false
|
|
|
})
|
|
|
});
|
|
|
case 8:
|
|
|
case "end":
|
|
|
return _context9.stop();
|
|
|
}
|
|
|
}, _callee9);
|
|
|
}));
|
|
|
return _onResetPassedCode.apply(this, arguments);
|
|
|
}
|
|
|
function onPlusOrCancelPraise() {
|
|
|
return _onPlusOrCancelPraise.apply(this, arguments);
|
|
|
}
|
|
|
function _onPlusOrCancelPraise() {
|
|
|
_onPlusOrCancelPraise = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee10() {
|
|
|
var response, praise_count, praise;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee10$(_context10) {
|
|
|
while (1) switch (_context10.prev = _context10.next) {
|
|
|
case 0:
|
|
|
_context10.next = 2;
|
|
|
return (0,service/* plusOrCancelPraise */.Y0)(taskId);
|
|
|
case 2:
|
|
|
response = _context10.sent;
|
|
|
praise_count = response.praise_count, praise = response.praise;
|
|
|
taskData.praise_count = praise_count;
|
|
|
taskData['user_praise'] = praise;
|
|
|
dispatch({
|
|
|
type: constant/* UPDATE_TASK_DATA */.z2,
|
|
|
payload: {
|
|
|
taskData: taskData
|
|
|
}
|
|
|
});
|
|
|
case 7:
|
|
|
case "end":
|
|
|
return _context10.stop();
|
|
|
}
|
|
|
}, _callee10);
|
|
|
}));
|
|
|
return _onPlusOrCancelPraise.apply(this, arguments);
|
|
|
}
|
|
|
var onUpdateCostTime = (0,_react_17_0_2_react.useCallback)(function (time) {
|
|
|
function timeInit(_x) {
|
|
|
return _timeInit.apply(this, arguments);
|
|
|
}
|
|
|
function _timeInit() {
|
|
|
_timeInit = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee5(time) {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee5$(_context5) {
|
|
|
while (1) switch (_context5.prev = _context5.next) {
|
|
|
case 0:
|
|
|
try {
|
|
|
window.navigator.sendBeacon("".concat(env/* default */.Z.API_SERVER, "/api/tasks/").concat(taskId, "/cost_time.json?time=").concat(time), JSON.stringify({})
|
|
|
// JSON.stringify({ time }),
|
|
|
);
|
|
|
} catch (e) {}
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context5.stop();
|
|
|
}
|
|
|
}, _callee5);
|
|
|
}));
|
|
|
return _timeInit.apply(this, arguments);
|
|
|
}
|
|
|
timeInit(time);
|
|
|
}, [taskId]);
|
|
|
function onSaveTaskStar(_x2) {
|
|
|
return _onSaveTaskStar.apply(this, arguments);
|
|
|
}
|
|
|
function _onSaveTaskStar() {
|
|
|
_onSaveTaskStar = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee11(value) {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee11$(_context11) {
|
|
|
while (1) switch (_context11.prev = _context11.next) {
|
|
|
case 0:
|
|
|
_context11.next = 2;
|
|
|
return (0,service/* saveTaskStar */.L5)(taskId, shixun.id, value);
|
|
|
case 2:
|
|
|
taskData['game']['star'] = value;
|
|
|
dispatch({
|
|
|
type: constant/* UPDATE_TASK_DATA */.z2,
|
|
|
payload: {
|
|
|
taskData: taskData
|
|
|
}
|
|
|
});
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context11.stop();
|
|
|
}
|
|
|
}, _callee11);
|
|
|
}));
|
|
|
return _onSaveTaskStar.apply(this, arguments);
|
|
|
}
|
|
|
function onShowDir() {
|
|
|
return _onShowDir.apply(this, arguments);
|
|
|
}
|
|
|
function _onShowDir() {
|
|
|
_onShowDir = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee12() {
|
|
|
var response, trees;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee12$(_context12) {
|
|
|
while (1) switch (_context12.prev = _context12.next) {
|
|
|
case 0:
|
|
|
if (repos) {
|
|
|
_context12.next = 8;
|
|
|
break;
|
|
|
}
|
|
|
_context12.next = 3;
|
|
|
return (0,service/* fetchRepos */.pU)(myshixun.identifier);
|
|
|
case 3:
|
|
|
response = _context12.sent;
|
|
|
trees = response.trees;
|
|
|
dispatch({
|
|
|
type: constant/* SET_REPOS */.oP,
|
|
|
payload: {
|
|
|
showDocuments: true,
|
|
|
repos: (0,tasks_util/* getTreeData */.SI)(trees)
|
|
|
}
|
|
|
});
|
|
|
_context12.next = 9;
|
|
|
break;
|
|
|
case 8:
|
|
|
dispatch({
|
|
|
type: constant/* SET_SHOW_DIR */.GW,
|
|
|
payload: true
|
|
|
});
|
|
|
case 9:
|
|
|
case "end":
|
|
|
return _context12.stop();
|
|
|
}
|
|
|
}, _callee12);
|
|
|
}));
|
|
|
return _onShowDir.apply(this, arguments);
|
|
|
}
|
|
|
function onLoadTreeData(_x3) {
|
|
|
return _onLoadTreeData.apply(this, arguments);
|
|
|
}
|
|
|
function _onLoadTreeData() {
|
|
|
_onLoadTreeData = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee14(node) {
|
|
|
var _node$props, children, eventKey;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee14$(_context14) {
|
|
|
while (1) switch (_context14.prev = _context14.next) {
|
|
|
case 0:
|
|
|
_node$props = node.props, children = _node$props.children, eventKey = _node$props.eventKey;
|
|
|
return _context14.abrupt("return", new Promise( /*#__PURE__*/function () {
|
|
|
var _ref5 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee13(resolve) {
|
|
|
var response, trees, newRepos;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee13$(_context13) {
|
|
|
while (1) switch (_context13.prev = _context13.next) {
|
|
|
case 0:
|
|
|
if (children && children.length > 0) {
|
|
|
resolve();
|
|
|
}
|
|
|
_context13.next = 3;
|
|
|
return (0,service/* fetchRepos */.pU)(myshixun.identifier, {
|
|
|
path: eventKey
|
|
|
});
|
|
|
case 3:
|
|
|
response = _context13.sent;
|
|
|
trees = response.trees;
|
|
|
newRepos = (0,tasks_util/* processTreeData */.Ax)(repos, eventKey, (0,tasks_util/* getTreeData */.SI)(trees, eventKey));
|
|
|
dispatch({
|
|
|
type: constant/* SET_REPOS */.oP,
|
|
|
payload: {
|
|
|
repos: toConsumableArray_default()(newRepos)
|
|
|
}
|
|
|
});
|
|
|
resolve();
|
|
|
case 8:
|
|
|
case "end":
|
|
|
return _context13.stop();
|
|
|
}
|
|
|
}, _callee13);
|
|
|
}));
|
|
|
return function (_x8) {
|
|
|
return _ref5.apply(this, arguments);
|
|
|
};
|
|
|
}()));
|
|
|
case 2:
|
|
|
case "end":
|
|
|
return _context14.stop();
|
|
|
}
|
|
|
}, _callee14);
|
|
|
}));
|
|
|
return _onLoadTreeData.apply(this, arguments);
|
|
|
}
|
|
|
function onHideDocuments() {
|
|
|
dispatch({
|
|
|
type: constant/* SET_SHOW_DIR */.GW,
|
|
|
payload: false
|
|
|
});
|
|
|
}
|
|
|
function onEvalChoose(value) {
|
|
|
var gold = value.gold,
|
|
|
experience = value.experience,
|
|
|
next_game = value.next_game,
|
|
|
next_shixun = value.next_shixun,
|
|
|
subject_done = value.subject_done,
|
|
|
rest = objectWithoutProperties_default()(value, tasks_excluded);
|
|
|
if (!value.challenge_chooses_count) return;
|
|
|
var isOk = rest.challenge_chooses_count === rest.choose_correct_num;
|
|
|
var new_test_cases = {
|
|
|
had_submmit: true,
|
|
|
test_sets: rest.test_sets,
|
|
|
challenge_chooses_count: rest.challenge_chooses_count,
|
|
|
choose_correct_num: rest.choose_correct_num
|
|
|
};
|
|
|
taskData['choose_test_cases'] = new_test_cases;
|
|
|
if (isOk) {
|
|
|
taskData['game'].status = 2;
|
|
|
taskData['next_game'] = next_game;
|
|
|
taskData['user']['grade'] += gold;
|
|
|
}
|
|
|
if (isOk && game.status !== 2) {
|
|
|
mediator/* default */.Z.publish('update-cost-time');
|
|
|
}
|
|
|
dispatch({
|
|
|
type: constant/* UPDATE_TASK_DATA */.z2,
|
|
|
payload: {
|
|
|
taskData: taskData,
|
|
|
evalData: {
|
|
|
gold: gold,
|
|
|
experience: experience,
|
|
|
next_game: next_game,
|
|
|
next_shixun: next_shixun,
|
|
|
subject_done: subject_done
|
|
|
// had_done,
|
|
|
},
|
|
|
showEvalResult: isOk
|
|
|
}
|
|
|
});
|
|
|
//*评测完成后有10秒倒计时
|
|
|
mediator/* default */.Z.publish('eval-code-finish');
|
|
|
}
|
|
|
|
|
|
//评测
|
|
|
function onEvalCode() {
|
|
|
return _onEvalCode.apply(this, arguments);
|
|
|
}
|
|
|
function _onEvalCode() {
|
|
|
_onEvalCode = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee16() {
|
|
|
var _rs$data, response, resubmit, sec_key, content_modified, _exerciseDataRef$curr, _exerciseDataRef$curr2, params, _taskData$challenge, _response$content, _response$content2, _response$content3, rs, _rs$data2, _rs$data3, getGameStatus, count, intervalTime, time_out;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee16$(_context16) {
|
|
|
while (1) switch (_context16.prev = _context16.next) {
|
|
|
case 0:
|
|
|
_context16.prev = 0;
|
|
|
dispatch({
|
|
|
type: constant/* SHOW_EVALUATE_LOADING */.Ui
|
|
|
});
|
|
|
_context16.next = 4;
|
|
|
return onUpdateCode(1);
|
|
|
case 4:
|
|
|
response = _context16.sent;
|
|
|
resubmit = response.resubmit, sec_key = response.sec_key, content_modified = response.content_modified;
|
|
|
if (!(response.status === -5 && typeof_default()(response === null || response === void 0 ? void 0 : response.message) === "object")) {
|
|
|
_context16.next = 9;
|
|
|
break;
|
|
|
}
|
|
|
(0,_umi_production_exports.getDvaApp)()._store.dispatch({
|
|
|
type: 'exercise/setActionTabs',
|
|
|
payload: {
|
|
|
key: 'student-unlock',
|
|
|
exerciseParams: objectSpread2_default()(objectSpread2_default()({}, ((_exerciseDataRef$curr = exerciseDataRef.current) === null || _exerciseDataRef$curr === void 0 ? void 0 : _exerciseDataRef$curr.exercise) || {}), {}, {
|
|
|
errorMessage: response === null || response === void 0 ? void 0 : response.message,
|
|
|
exercise_user_id: (_exerciseDataRef$curr2 = exerciseDataRef.current) === null || _exerciseDataRef$curr2 === void 0 || (_exerciseDataRef$curr2 = _exerciseDataRef$curr2.exercise) === null || _exerciseDataRef$curr2 === void 0 ? void 0 : _exerciseDataRef$curr2.exercise_user_id,
|
|
|
id: searchParams.get("exercisesId")
|
|
|
})
|
|
|
}
|
|
|
});
|
|
|
return _context16.abrupt("return");
|
|
|
case 9:
|
|
|
if (!(response.status && response.status < 0)) {
|
|
|
_context16.next = 13;
|
|
|
break;
|
|
|
}
|
|
|
mediator/* default */.Z.publish('eval-code-finish');
|
|
|
dispatch({
|
|
|
type: constant/* UPDATE_TASK_DATA */.z2,
|
|
|
payload: {
|
|
|
evaluateLoading: false
|
|
|
}
|
|
|
});
|
|
|
return _context16.abrupt("return");
|
|
|
case 13:
|
|
|
params = {
|
|
|
sec_key: sec_key,
|
|
|
resubmit: resubmit,
|
|
|
first: 1,
|
|
|
content_modified: content_modified,
|
|
|
shixun_environment_id: shixun_environment_id,
|
|
|
tab_type: tab_type
|
|
|
}; // 只有试卷考试才需要下面参数
|
|
|
if (searchParams.get("type") === 'exercises') {
|
|
|
params.extras = {
|
|
|
exercise_id: searchParams.get("exercisesId"),
|
|
|
//试卷id
|
|
|
question_id: searchParams.get("questionId"),
|
|
|
// 题目id
|
|
|
challenge_id: (_taskData$challenge = taskData.challenge) === null || _taskData$challenge === void 0 ? void 0 : _taskData$challenge.id,
|
|
|
// 关卡id
|
|
|
subject_id: searchParams.get("subject_id") || '',
|
|
|
commitID: response === null || response === void 0 || (_response$content = response.content) === null || _response$content === void 0 ? void 0 : _response$content.commitID
|
|
|
};
|
|
|
} else if (searchParams.get("type") === 'competitions') {
|
|
|
params.extras = {
|
|
|
competition_entry_id: searchParams.get("competition_entry_id")
|
|
|
};
|
|
|
} else if (_params.courseId && _params.homeworkId) {
|
|
|
params.extras = {
|
|
|
homework_common_id: _params.homeworkId,
|
|
|
commitID: response === null || response === void 0 || (_response$content2 = response.content) === null || _response$content2 === void 0 ? void 0 : _response$content2.commitID
|
|
|
};
|
|
|
} else {
|
|
|
params.extras = {
|
|
|
commitID: response === null || response === void 0 || (_response$content3 = response.content) === null || _response$content3 === void 0 ? void 0 : _response$content3.commitID
|
|
|
};
|
|
|
}
|
|
|
_context16.next = 17;
|
|
|
return (0,service/* codeGameBuild */.Xy)(taskId, params);
|
|
|
case 17:
|
|
|
rs = _context16.sent;
|
|
|
if (!(rs !== null && rs !== void 0 && (_rs$data = rs.data) !== null && _rs$data !== void 0 && (_rs$data = _rs$data.data_list) !== null && _rs$data !== void 0 && _rs$data.length)) {
|
|
|
_context16.next = 21;
|
|
|
break;
|
|
|
}
|
|
|
mediator/* default */.Z.publish('pod-restrict-data', {
|
|
|
identifier: rs === null || rs === void 0 || (_rs$data2 = rs.data) === null || _rs$data2 === void 0 ? void 0 : _rs$data2.identifier,
|
|
|
data_list: rs === null || rs === void 0 || (_rs$data3 = rs.data) === null || _rs$data3 === void 0 ? void 0 : _rs$data3.data_list
|
|
|
});
|
|
|
return _context16.abrupt("return");
|
|
|
case 21:
|
|
|
if (!(rs.status === -1 && searchParams.get("type") === 'exercises')) {
|
|
|
_context16.next = 24;
|
|
|
break;
|
|
|
}
|
|
|
window.parent.location.href = "/classrooms/".concat(searchParams.get("coursesId"), "/exercise/").concat(searchParams.get("exercisesId"), "/detail");
|
|
|
return _context16.abrupt("return");
|
|
|
case 24:
|
|
|
if (!(rs.status === -2)) {
|
|
|
_context16.next = 28;
|
|
|
break;
|
|
|
}
|
|
|
dispatch({
|
|
|
type: constant/* HIDE_EVALUATE_LOADING */.A0
|
|
|
});
|
|
|
mediator/* default */.Z.publish('eval-code-finish');
|
|
|
return _context16.abrupt("return");
|
|
|
case 28:
|
|
|
if (rs.status === 1) {
|
|
|
getGameStatus = /*#__PURE__*/function () {
|
|
|
var _ref6 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee15(intervalTime, finalTime, count) {
|
|
|
var _taskData$challenge2;
|
|
|
var excuteTime, source, ds, status, running_code_message, port, web_route, playUrl, isWeb, isOk, isPicture, isShowEvalResult, payload;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee15$(_context15) {
|
|
|
while (1) switch (_context15.prev = _context15.next) {
|
|
|
case 0:
|
|
|
excuteTime = count++ * intervalTime;
|
|
|
if (excuteTime / 1000 > finalTime) {
|
|
|
time_out = true;
|
|
|
}
|
|
|
_context15.next = 4;
|
|
|
return (0,service/* getCodeGameStatus */.Qo)(taskId, {
|
|
|
resubmit: resubmit,
|
|
|
time_out: time_out,
|
|
|
port: rs.port,
|
|
|
sec_key: sec_key,
|
|
|
challenge_id: taskData === null || taskData === void 0 || (_taskData$challenge2 = taskData.challenge) === null || _taskData$challenge2 === void 0 ? void 0 : _taskData$challenge2.id,
|
|
|
subject_id: searchParams.get("subject_id") || ''
|
|
|
});
|
|
|
case 4:
|
|
|
source = _context15.sent;
|
|
|
ds = source;
|
|
|
status = ds.status, running_code_message = ds.running_code_message, port = ds.port, web_route = ds.web_route;
|
|
|
dispatch({
|
|
|
type: constant/* SET_EVALUATE_MESSAGE */.p2,
|
|
|
payload: running_code_message
|
|
|
});
|
|
|
if (+status > -1 || excuteTime / 1000 > finalTime) {
|
|
|
//第一次通关
|
|
|
if (game.status !== 2 && status === 2) {
|
|
|
taskData['game'].status = 2;
|
|
|
taskData['user']['grade'] += ds.gold;
|
|
|
mediator/* default */.Z.publish('update-cost-time');
|
|
|
}
|
|
|
taskData['test_sets'] = ds.test_sets || [];
|
|
|
taskData['last_compile_output'] = ds.last_compile_output;
|
|
|
taskData['test_sets_count'] = ds.test_sets_count;
|
|
|
taskData['sets_error_count'] = ds.sets_error_count;
|
|
|
taskData['record_consume_time'] = ds.record_consume_time;
|
|
|
taskData['next_game'] = ds.next_game;
|
|
|
taskData['prev_game'] = ds.prev_game;
|
|
|
taskData['game_report_id'] = ds.game_report_id;
|
|
|
playUrl = '';
|
|
|
isWeb = mirror_name.indexOf('Web') !== -1 || mirror_name.indexOf('JFinal') !== -1;
|
|
|
if (isWeb && port != -1 && web_route) {
|
|
|
playUrl = "".concat(tomcat_url, ":").concat(port, "/").concat(web_route);
|
|
|
}
|
|
|
isOk = (0,tasks_util/* isCompileOk */.f1)(ds.test_sets);
|
|
|
isPicture = ds.picture > 0 && isOk;
|
|
|
isShowEvalResult = status === 2 && !time_out;
|
|
|
if (time_out) {
|
|
|
message/* default */.ZP.info('本次评测超时');
|
|
|
} else {
|
|
|
if (!isShowEvalResult) {
|
|
|
message/* default */.ZP.info('评测未通过,详情参见“测试结果”');
|
|
|
}
|
|
|
}
|
|
|
payload = {
|
|
|
taskData: taskData,
|
|
|
evalData: {
|
|
|
gold: ds.gold,
|
|
|
experience: ds.experience,
|
|
|
next_game: ds.next_game,
|
|
|
next_shixun: ds.next_shixun
|
|
|
},
|
|
|
evaluateLoading: false,
|
|
|
evaluateMessage: '',
|
|
|
webDisplayUrl: playUrl,
|
|
|
showPictureView: unity_3d_routes || tab_type === 5 ? false : ds.picture > 0 && status !== 2,
|
|
|
isPictureView: isPicture
|
|
|
};
|
|
|
if (unity_3d_routes && with_code_file || tab_type === 5) {
|
|
|
//* 新需求
|
|
|
mediator/* default */.Z.publish('evaluate-unity3d-result', {
|
|
|
state: 'user',
|
|
|
data: {
|
|
|
user: user
|
|
|
}
|
|
|
});
|
|
|
mediator/* default */.Z.publish('evaluate-unity3d-finish');
|
|
|
//*评测结果由unity3d给出, 在评测时需要格外等待unity3d给出的消息
|
|
|
if (unity_3d_result) {
|
|
|
mediator/* default */.Z.publish('evaluate-unity3d-result', ds.unity_3d_result);
|
|
|
} else {
|
|
|
if (isOk) {
|
|
|
mediator/* default */.Z.publish('evaluate-unity3d-result', ds.unity_3d_result);
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
payload['showEvalResult'] = isShowEvalResult;
|
|
|
}
|
|
|
dispatch({
|
|
|
type: constant/* UPDATE_TASK_DATA */.z2,
|
|
|
payload: payload
|
|
|
});
|
|
|
//*评测完成后有10秒倒计时
|
|
|
mediator/* default */.Z.publish('eval-code-finish');
|
|
|
} else {
|
|
|
setTimeout(function () {
|
|
|
getGameStatus(intervalTime, challenge.exec_time + 11, count++);
|
|
|
}, intervalTime);
|
|
|
}
|
|
|
case 9:
|
|
|
case "end":
|
|
|
return _context15.stop();
|
|
|
}
|
|
|
}, _callee15);
|
|
|
}));
|
|
|
return function getGameStatus(_x9, _x10, _x11) {
|
|
|
return _ref6.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
count = 1;
|
|
|
intervalTime = 1000;
|
|
|
time_out = false;
|
|
|
getGameStatus(intervalTime, challenge.exec_time + 11, count++);
|
|
|
}
|
|
|
return _context16.abrupt("return", res);
|
|
|
case 32:
|
|
|
_context16.prev = 32;
|
|
|
_context16.t0 = _context16["catch"](0);
|
|
|
console.log('-------eval code', _context16.t0);
|
|
|
case 35:
|
|
|
case "end":
|
|
|
return _context16.stop();
|
|
|
}
|
|
|
}, _callee16, null, [[0, 32]]);
|
|
|
}));
|
|
|
return _onEvalCode.apply(this, arguments);
|
|
|
}
|
|
|
function onEditRepCode(value) {
|
|
|
dispatch({
|
|
|
type: constant/* EDIT_REP_CODE */.N$,
|
|
|
payload: {
|
|
|
content: value,
|
|
|
lastedUpdateTime: new Date().getTime()
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
function onCloseResult() {
|
|
|
dispatch({
|
|
|
type: constant/* HIDE_EVALUATE_RESULT */.EP
|
|
|
});
|
|
|
}
|
|
|
function onHidePictureView() {
|
|
|
dispatch({
|
|
|
type: constant/* HIDE_PICTURE_VIEW */.OA
|
|
|
});
|
|
|
}
|
|
|
function onShowPictureView() {
|
|
|
dispatch({
|
|
|
type: constant/* SHOW_PICTURE_VIEW */.vm
|
|
|
});
|
|
|
}
|
|
|
|
|
|
//文件更新公告
|
|
|
function onShowNotice() {
|
|
|
dispatch({
|
|
|
type: constant/* SHOW_NOTICE */.dL
|
|
|
});
|
|
|
}
|
|
|
|
|
|
//文件目录点击
|
|
|
function onSelectRepo(_x4, _x5) {
|
|
|
return _onSelectRepo.apply(this, arguments);
|
|
|
} //切换文件
|
|
|
function _onSelectRepo() {
|
|
|
_onSelectRepo = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee17(selectedKeys, event) {
|
|
|
var node, path;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee17$(_context17) {
|
|
|
while (1) switch (_context17.prev = _context17.next) {
|
|
|
case 0:
|
|
|
node = event.node;
|
|
|
if (node.isLeaf) {
|
|
|
path = selectedKeys[0];
|
|
|
onChangePath(path);
|
|
|
}
|
|
|
case 2:
|
|
|
case "end":
|
|
|
return _context17.stop();
|
|
|
}
|
|
|
}, _callee17);
|
|
|
}));
|
|
|
return _onSelectRepo.apply(this, arguments);
|
|
|
}
|
|
|
function onChangePath(_x6) {
|
|
|
return _onChangePath.apply(this, arguments);
|
|
|
}
|
|
|
function _onChangePath() {
|
|
|
_onChangePath = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee18(value) {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee18$(_context18) {
|
|
|
while (1) switch (_context18.prev = _context18.next) {
|
|
|
case 0:
|
|
|
prevCurrentPath.current = currentPath;
|
|
|
setCodeLoading(true);
|
|
|
_context18.next = 4;
|
|
|
return onUpdateCode();
|
|
|
case 4:
|
|
|
res = _context18.sent;
|
|
|
if (res !== null && res !== void 0 && res.content || res === true) {
|
|
|
dispatch({
|
|
|
type: constant/* EDIT_REP_CODE */.N$,
|
|
|
payload: {
|
|
|
currentPath: value
|
|
|
}
|
|
|
});
|
|
|
} else {
|
|
|
es_modal/* default */.Z.warn({
|
|
|
title: '文件切换失败',
|
|
|
centered: true,
|
|
|
content: '当前文件内容保存失败,请重新切换文件',
|
|
|
okText: '确定'
|
|
|
});
|
|
|
setCodeLoading(false);
|
|
|
}
|
|
|
case 6:
|
|
|
case "end":
|
|
|
return _context18.stop();
|
|
|
}
|
|
|
}, _callee18);
|
|
|
}));
|
|
|
return _onChangePath.apply(this, arguments);
|
|
|
}
|
|
|
function onNextCallback() {
|
|
|
taskData['myshixun'].system_tip = true;
|
|
|
dispatch({
|
|
|
type: constant/* UPDATE_TASK_DATA */.z2,
|
|
|
payload: {
|
|
|
taskData: taskData,
|
|
|
showNotice: false
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
function onUpdateCallback(newPath, timestamp) {
|
|
|
taskData['challenge'].path = newPath;
|
|
|
taskData['myshixun'].system_tip = false;
|
|
|
dispatch({
|
|
|
type: constant/* UPDATE_TASK_DATA */.z2,
|
|
|
payload: {
|
|
|
taskData: objectSpread2_default()(objectSpread2_default()({}, taskData), {}, {
|
|
|
tpm_cases_modified: false,
|
|
|
tpm_modified: false,
|
|
|
tpm_script_modified: false
|
|
|
}),
|
|
|
showNotice: false,
|
|
|
timestamp: timestamp
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
function onUpdateFailure() {
|
|
|
dispatch({
|
|
|
type: constant/* HIDE_NOTICE */.Nv
|
|
|
});
|
|
|
}
|
|
|
|
|
|
//所有环境重置
|
|
|
function onResetAllVnc() {
|
|
|
return _onResetAllVnc.apply(this, arguments);
|
|
|
} //重置环境
|
|
|
function _onResetAllVnc() {
|
|
|
_onResetAllVnc = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee19() {
|
|
|
var _taskData$myshixun2;
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee19$(_context19) {
|
|
|
while (1) switch (_context19.prev = _context19.next) {
|
|
|
case 0:
|
|
|
_context19.next = 2;
|
|
|
return (0,service/* resetEnvironment */.am)(taskData === null || taskData === void 0 || (_taskData$myshixun2 = taskData.myshixun) === null || _taskData$myshixun2 === void 0 ? void 0 : _taskData$myshixun2.identifier, {
|
|
|
game_id: taskData === null || taskData === void 0 ? void 0 : taskData.game.id,
|
|
|
shixun_environment_id: shixun_environment_id,
|
|
|
tab_type: tab_type,
|
|
|
all_reset: 1
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context19.sent;
|
|
|
if (!((res === null || res === void 0 ? void 0 : res.status) === 0)) {
|
|
|
_context19.next = 5;
|
|
|
break;
|
|
|
}
|
|
|
return _context19.abrupt("return", res);
|
|
|
case 5:
|
|
|
return _context19.abrupt("return", Promise.reject());
|
|
|
case 6:
|
|
|
case "end":
|
|
|
return _context19.stop();
|
|
|
}
|
|
|
}, _callee19);
|
|
|
}));
|
|
|
return _onResetAllVnc.apply(this, arguments);
|
|
|
}
|
|
|
function onResetVnc() {
|
|
|
return _onResetVnc.apply(this, arguments);
|
|
|
} //重启云主机
|
|
|
function _onResetVnc() {
|
|
|
_onResetVnc = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee21() {
|
|
|
var reset, _res, _res2, _res3, str, cloneTabs, _res4;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee21$(_context21) {
|
|
|
while (1) switch (_context21.prev = _context21.next) {
|
|
|
case 0:
|
|
|
dispatch({
|
|
|
type: constant/* SET_VNC_LOADING */.RY,
|
|
|
payload: true //工具栏控制
|
|
|
});
|
|
|
reset = /*#__PURE__*/function () {
|
|
|
var _ref7 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee20() {
|
|
|
var _taskData$myshixun3;
|
|
|
var result;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee20$(_context20) {
|
|
|
while (1) switch (_context20.prev = _context20.next) {
|
|
|
case 0:
|
|
|
_context20.next = 2;
|
|
|
return (0,service/* resetEnvironment */.am)(taskData === null || taskData === void 0 || (_taskData$myshixun3 = taskData.myshixun) === null || _taskData$myshixun3 === void 0 ? void 0 : _taskData$myshixun3.identifier, {
|
|
|
game_id: taskData === null || taskData === void 0 ? void 0 : taskData.game.id,
|
|
|
shixun_environment_id: shixun_environment_id,
|
|
|
tab_type: tab_type
|
|
|
});
|
|
|
case 2:
|
|
|
result = _context20.sent;
|
|
|
return _context20.abrupt("return", result);
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context20.stop();
|
|
|
}
|
|
|
}, _callee20);
|
|
|
}));
|
|
|
return function reset() {
|
|
|
return _ref7.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
if (!(tab_type === 2)) {
|
|
|
_context21.next = 8;
|
|
|
break;
|
|
|
}
|
|
|
mediator/* default */.Z.publish('vnc-reseting');
|
|
|
_context21.next = 6;
|
|
|
return reset();
|
|
|
case 6:
|
|
|
_res = _context21.sent;
|
|
|
if (_res.status === 0) {
|
|
|
mediator/* default */.Z.publish('vnc-reseting-done', _res);
|
|
|
}
|
|
|
case 8:
|
|
|
if (!(tab_type === 3)) {
|
|
|
_context21.next = 14;
|
|
|
break;
|
|
|
}
|
|
|
mediator/* default */.Z.publish("vnc-reset-".concat(index_tab));
|
|
|
_context21.next = 12;
|
|
|
return reset();
|
|
|
case 12:
|
|
|
_res2 = _context21.sent;
|
|
|
if (_res2.status === 0) {
|
|
|
mediator/* default */.Z.publish("reset-linux-windows-vnc-".concat(index_tab));
|
|
|
}
|
|
|
case 14:
|
|
|
if (!(tab_type === 4)) {
|
|
|
_context21.next = 19;
|
|
|
break;
|
|
|
}
|
|
|
_context21.next = 17;
|
|
|
return reset();
|
|
|
case 17:
|
|
|
_res3 = _context21.sent;
|
|
|
if (_res3.status === 0) {
|
|
|
str = index_tab.split('-')[0];
|
|
|
cloneTabs = tabs.map(function (e) {
|
|
|
var _e$index_tab;
|
|
|
if ((_e$index_tab = e.index_tab) !== null && _e$index_tab !== void 0 && _e$index_tab.includes(str)) {
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, e), {}, {
|
|
|
active: e.index_tab === index_tab ? true : false,
|
|
|
resetKey: e.index_tab === index_tab ? e.resetKey + 1 : e.resetKey
|
|
|
});
|
|
|
}
|
|
|
return e;
|
|
|
});
|
|
|
setTabs(cloneTabs);
|
|
|
}
|
|
|
case 19:
|
|
|
if (!(tab_type === 5)) {
|
|
|
_context21.next = 25;
|
|
|
break;
|
|
|
}
|
|
|
mediator/* default */.Z.publish("unity3d-reset", 'start');
|
|
|
_context21.next = 23;
|
|
|
return reset();
|
|
|
case 23:
|
|
|
_res4 = _context21.sent;
|
|
|
if (_res4.status === 0) {
|
|
|
mediator/* default */.Z.publish("unity3d-reset", 'done');
|
|
|
}
|
|
|
case 25:
|
|
|
dispatch({
|
|
|
type: constant/* SET_VNC_LOADING */.RY,
|
|
|
payload: false
|
|
|
});
|
|
|
case 26:
|
|
|
case "end":
|
|
|
return _context21.stop();
|
|
|
}
|
|
|
}, _callee21);
|
|
|
}));
|
|
|
return _onResetVnc.apply(this, arguments);
|
|
|
}
|
|
|
function onRestartReboot() {
|
|
|
return _onRestartReboot.apply(this, arguments);
|
|
|
}
|
|
|
function _onRestartReboot() {
|
|
|
_onRestartReboot = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee23() {
|
|
|
var reset, _res5, _res6, str, cloneTabs;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee23$(_context23) {
|
|
|
while (1) switch (_context23.prev = _context23.next) {
|
|
|
case 0:
|
|
|
dispatch({
|
|
|
type: constant/* SET_VNC_LOADING */.RY,
|
|
|
payload: true //工具栏控制
|
|
|
});
|
|
|
reset = /*#__PURE__*/function () {
|
|
|
var _ref8 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee22() {
|
|
|
var result;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee22$(_context22) {
|
|
|
while (1) switch (_context22.prev = _context22.next) {
|
|
|
case 0:
|
|
|
_context22.next = 2;
|
|
|
return (0,service/* rebootEsc */.Jd)(taskData === null || taskData === void 0 ? void 0 : taskData.game.identifier, {
|
|
|
shixun_environment_id: shixun_environment_id,
|
|
|
tab_type: tab_type
|
|
|
});
|
|
|
case 2:
|
|
|
result = _context22.sent;
|
|
|
return _context22.abrupt("return", result);
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context22.stop();
|
|
|
}
|
|
|
}, _callee22);
|
|
|
}));
|
|
|
return function reset() {
|
|
|
return _ref8.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
if (!(tab_type === 3)) {
|
|
|
_context23.next = 9;
|
|
|
break;
|
|
|
}
|
|
|
mediator/* default */.Z.publish("vnc-reset-".concat(index_tab), '重启中');
|
|
|
_context23.next = 6;
|
|
|
return reset();
|
|
|
case 6:
|
|
|
_res5 = _context23.sent;
|
|
|
if (_res5.status === 0) {
|
|
|
mediator/* default */.Z.publish("reset-linux-windows-vnc-".concat(index_tab));
|
|
|
}
|
|
|
mediator/* default */.Z.publish("vnc-reset-".concat(index_tab), '取消');
|
|
|
case 9:
|
|
|
if (!(tab_type === 4)) {
|
|
|
_context23.next = 14;
|
|
|
break;
|
|
|
}
|
|
|
_context23.next = 12;
|
|
|
return reset();
|
|
|
case 12:
|
|
|
_res6 = _context23.sent;
|
|
|
if (_res6.status === 0) {
|
|
|
str = index_tab.split('-')[0];
|
|
|
cloneTabs = tabs.map(function (e) {
|
|
|
var _e$index_tab2;
|
|
|
if ((_e$index_tab2 = e.index_tab) !== null && _e$index_tab2 !== void 0 && _e$index_tab2.includes(str)) {
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, e), {}, {
|
|
|
active: e.index_tab === index_tab ? true : false,
|
|
|
resetKey: e.index_tab === index_tab ? e.resetKey + 1 : e.resetKey
|
|
|
});
|
|
|
}
|
|
|
return e;
|
|
|
});
|
|
|
setTabs(cloneTabs);
|
|
|
console.log(cloneTabs);
|
|
|
}
|
|
|
case 14:
|
|
|
dispatch({
|
|
|
type: constant/* SET_VNC_LOADING */.RY,
|
|
|
payload: false
|
|
|
});
|
|
|
case 15:
|
|
|
case "end":
|
|
|
return _context23.stop();
|
|
|
}
|
|
|
}, _callee23);
|
|
|
}));
|
|
|
return _onRestartReboot.apply(this, arguments);
|
|
|
}
|
|
|
function onGetUnity3dMessage(_x7) {
|
|
|
return _onGetUnity3dMessage.apply(this, arguments);
|
|
|
} //延长环境时间
|
|
|
function _onGetUnity3dMessage() {
|
|
|
_onGetUnity3dMessage = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee24(mes) {
|
|
|
var GameState, Data, challenge, response, status, data;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee24$(_context24) {
|
|
|
while (1) switch (_context24.prev = _context24.next) {
|
|
|
case 0:
|
|
|
GameState = mes.GameState, Data = mes.Data, challenge = mes.challenge;
|
|
|
if (!(challenge === 'info')) {
|
|
|
_context24.next = 5;
|
|
|
break;
|
|
|
}
|
|
|
mediator/* default */.Z.publish('evaluate-unity3d-result', {
|
|
|
state: '3d_callback',
|
|
|
data: {
|
|
|
challenge_info: objectSpread2_default()({}, taskData.challenge)
|
|
|
}
|
|
|
});
|
|
|
_context24.next = 15;
|
|
|
break;
|
|
|
case 5:
|
|
|
if (!(GameState === 'Success')) {
|
|
|
_context24.next = 15;
|
|
|
break;
|
|
|
}
|
|
|
if (!(unity_3d_result || !with_code_file)) {
|
|
|
_context24.next = 14;
|
|
|
break;
|
|
|
}
|
|
|
_context24.next = 9;
|
|
|
return (0,service/* setUnity3dStatus */.JW)(taskId, base64.Base64.encode(taskId + new Date().getTime()), Data);
|
|
|
case 9:
|
|
|
response = _context24.sent;
|
|
|
status = response.status, data = response.data;
|
|
|
if (status == 0) {
|
|
|
if (game.status !== 2) {
|
|
|
taskData['game'].status = 2;
|
|
|
taskData['user']['grade'] += data.gold;
|
|
|
mediator/* default */.Z.publish('update-cost-time');
|
|
|
}
|
|
|
//* 新需求,无代码评测通关需要发送用户和通关时间信息
|
|
|
mediator/* default */.Z.publish('evaluate-unity3d-result', {
|
|
|
state: 'userAndtime',
|
|
|
data: {
|
|
|
user: user,
|
|
|
open_time: data.open_time,
|
|
|
end_time: data.end_time
|
|
|
}
|
|
|
});
|
|
|
dispatch({
|
|
|
type: constant/* UPDATE_TASK_DATA */.z2,
|
|
|
payload: {
|
|
|
taskData: taskData,
|
|
|
evalData: {
|
|
|
gold: data.gold,
|
|
|
experience: data.experience,
|
|
|
next_game: data.next_game
|
|
|
// had_done: data.had_done,
|
|
|
},
|
|
|
evaluateLoading: false,
|
|
|
showEvalResult: true
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
_context24.next = 15;
|
|
|
break;
|
|
|
case 14:
|
|
|
dispatch({
|
|
|
type: constant/* SHOW_EVALUATE_RESULT */.m5
|
|
|
});
|
|
|
case 15:
|
|
|
case "end":
|
|
|
return _context24.stop();
|
|
|
}
|
|
|
}, _callee24);
|
|
|
}));
|
|
|
return _onGetUnity3dMessage.apply(this, arguments);
|
|
|
}
|
|
|
function onAddVncTime() {
|
|
|
return _onAddVncTime.apply(this, arguments);
|
|
|
}
|
|
|
function _onAddVncTime() {
|
|
|
_onAddVncTime = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee25() {
|
|
|
var _taskData$myshixun4, _taskData$game;
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee25$(_context25) {
|
|
|
while (1) switch (_context25.prev = _context25.next) {
|
|
|
case 0:
|
|
|
_context25.next = 2;
|
|
|
return (0,service/* addVncTime */.Kl)(taskData === null || taskData === void 0 || (_taskData$myshixun4 = taskData.myshixun) === null || _taskData$myshixun4 === void 0 ? void 0 : _taskData$myshixun4.identifier, {
|
|
|
game_id: taskData === null || taskData === void 0 || (_taskData$game = taskData.game) === null || _taskData$game === void 0 ? void 0 : _taskData$game.id,
|
|
|
shixun_environment_id: shixun_environment_id,
|
|
|
tab_type: tab_type
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context25.sent;
|
|
|
if (!((res === null || res === void 0 ? void 0 : res.status) === 0)) {
|
|
|
_context25.next = 5;
|
|
|
break;
|
|
|
}
|
|
|
return _context25.abrupt("return", res);
|
|
|
case 5:
|
|
|
return _context25.abrupt("return", Promise.reject());
|
|
|
case 6:
|
|
|
case "end":
|
|
|
return _context25.stop();
|
|
|
}
|
|
|
}, _callee25);
|
|
|
}));
|
|
|
return _onAddVncTime.apply(this, arguments);
|
|
|
}
|
|
|
var leftPanelOption = defineProperty_default()(defineProperty_default()(defineProperty_default()(defineProperty_default()(defineProperty_default()(defineProperty_default()(defineProperty_default()(defineProperty_default()(defineProperty_default()({
|
|
|
game: game,
|
|
|
taskId: taskId,
|
|
|
user_praise: user_praise,
|
|
|
praise_count: praise_count,
|
|
|
st: st,
|
|
|
challenge: challenge,
|
|
|
rank_name: taskData.rank_name,
|
|
|
shixun: shixun,
|
|
|
is_teacher: is_teacher,
|
|
|
has_answer: has_answer,
|
|
|
unity_3d_routes: unity_3d_routes,
|
|
|
with_code_file: with_code_file,
|
|
|
onGetUnity3dMessage: onGetUnity3dMessage
|
|
|
}, "taskId", taskId), "myshixun", myshixun), "user", user), "discusses_count", discusses_count), "onPlusOrCancelPraise", onPlusOrCancelPraise), "minuxUserGrade", minuxUserGrade), "taskData", taskData), "chatgpt", chatgpt), "to_user_id", to_user_id);
|
|
|
var noticeOption = {
|
|
|
showNotice: showNotice || (tpm_cases_modified || isUpdateScript) && myshixun.system_tip === false,
|
|
|
tpm_cases_modified: tpm_cases_modified,
|
|
|
tpm_modified: tpm_modified,
|
|
|
tpm_script_modified: tpm_script_modified,
|
|
|
st: st,
|
|
|
taskId: taskId,
|
|
|
myshixunId: (myshixun || {}).id,
|
|
|
onNextCallback: onNextCallback,
|
|
|
onUpdateCallback: onUpdateCallback,
|
|
|
onUpdateFailure: onUpdateFailure
|
|
|
};
|
|
|
var evaluateResultOption = objectSpread2_default()(objectSpread2_default()({}, evalData), {}, {
|
|
|
isPictureView: isPictureView,
|
|
|
history: history,
|
|
|
webDisplayUrl: webDisplayUrl,
|
|
|
onShowPictureView: onShowPictureView,
|
|
|
star: game && game.star,
|
|
|
onStarChange: onSaveTaskStar,
|
|
|
onCloseResult: onCloseResult
|
|
|
});
|
|
|
var repositoryOption = {
|
|
|
lastedGetTaskInfoTime: lastedGetTaskInfoTime,
|
|
|
isEditPath: isEditPath,
|
|
|
taskData: taskData,
|
|
|
codeRepData: codeRepData,
|
|
|
moveY: moveY,
|
|
|
evaluateMessage: evaluateMessage,
|
|
|
evaluateLoading: evaluateLoading,
|
|
|
isNotice: isNotice,
|
|
|
isHtml: isHtml,
|
|
|
onChangePath: onChangePath,
|
|
|
onResizeSetContainer: onResizeSetContainer,
|
|
|
onEditRepCode: onEditRepCode,
|
|
|
onUpdateCode: onUpdateCode,
|
|
|
onResizeYStart: onResizeYStart,
|
|
|
onShowDir: onShowDir,
|
|
|
onResetCode: onResetCode,
|
|
|
onResetGitCode: onResetGitCode,
|
|
|
onResizeCodeArea: onResizeCodeArea,
|
|
|
onResetPassedCode: onResetPassedCode,
|
|
|
onFinishDisplayHtml: onFinishDisplayHtml,
|
|
|
onShowNotice: onShowNotice
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(_react_17_0_2_react.Fragment, {
|
|
|
children: [!loading ? /*#__PURE__*/(0,jsx_runtime.jsxs)(_react_17_0_2_react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "task-wrapper",
|
|
|
children: [showDragMask && /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
style: {
|
|
|
cursor: resizeXFlag.current ? 'ew-resize' : resizeYFlag.current ? 'ns-resize' : 'initial'
|
|
|
},
|
|
|
className: "dragging-mask"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(tasks_header, {
|
|
|
difficulty: challenge === null || challenge === void 0 ? void 0 : challenge.difficulty,
|
|
|
mirror_description: mirror_description,
|
|
|
history: history,
|
|
|
git_url: git_url,
|
|
|
shixun: shixun,
|
|
|
taskData: taskData,
|
|
|
lastedGetTaskInfoTime: lastedGetTaskInfoTime,
|
|
|
onAddVncTime: onAddVncTime,
|
|
|
taskId: taskId,
|
|
|
isNotice: isNotice,
|
|
|
resetVncLoading: resetVncLoading,
|
|
|
onResetVnc: onResetVnc,
|
|
|
onRestartReboot: onRestartReboot,
|
|
|
onResetGitCode: onResetGitCode,
|
|
|
onResetCode: onResetCode,
|
|
|
toolbarItem: toolbarItem,
|
|
|
onShowNotice: onShowNotice,
|
|
|
game: game,
|
|
|
monitoring_url: monitoring_url,
|
|
|
user: user,
|
|
|
myshixun: myshixun,
|
|
|
st: st,
|
|
|
mirror_name: mirror_name,
|
|
|
mirror_description_multi: mirror_description_multi,
|
|
|
onUpdateCode: onUpdateCode,
|
|
|
onUpdateCostTime: onUpdateCostTime,
|
|
|
onResetAllVnc: onResetAllVnc,
|
|
|
unity_3d_routes: unity_3d_routes && !with_code_file
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "tasks-body",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("section", {
|
|
|
id: "task-left-panel",
|
|
|
className: "left-panel ".concat(taskData !== null && taskData !== void 0 && taskData.hideLeftPanel ? "hide" : "", " "),
|
|
|
style: {
|
|
|
width: leftPanelWidth,
|
|
|
display: moveX === 0.01 ? 'none' : ''
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(left_panel, objectSpread2_default()({}, leftPanelOption))
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("section", {
|
|
|
className: "resize-x-bar ".concat(taskData !== null && taskData !== void 0 && taskData.hideLeftPanel ? "hide" : "", " ").concat(moveX === 0.01 ? 'cursorDefault' : ""),
|
|
|
onMouseDown: onResizeStart,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onMouseDown: function onMouseDown(e) {
|
|
|
e.stopPropagation();
|
|
|
fullscreenOrExit.current();
|
|
|
},
|
|
|
className: "trapezoid ".concat(moveX === 0.01 ? 'enlarge' : ''),
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: moveX === 0.01 ? resize_enlarge : resize_small,
|
|
|
alt: "resize-icon",
|
|
|
width: 20
|
|
|
})
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("section", {
|
|
|
id: "task-right-panel",
|
|
|
className: "right-panel",
|
|
|
style: {
|
|
|
width: rightPanelWidth
|
|
|
},
|
|
|
children: (challenge === null || challenge === void 0 ? void 0 : challenge.show_type) === 7 ? /*#__PURE__*/(0,jsx_runtime.jsx)(Demo["default"], {
|
|
|
taskId: taskId,
|
|
|
taskData: taskData,
|
|
|
onEditRepCode: onEditRepCode
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsxs)(_react_17_0_2_react.Fragment, {
|
|
|
children: [st === 0 && /*#__PURE__*/(0,jsx_runtime.jsx)(code_repository, objectSpread2_default()(objectSpread2_default()(objectSpread2_default()({}, props), repositoryOption), {}, {
|
|
|
_dispatch: dispatch,
|
|
|
taskData: taskData,
|
|
|
unity_3d_routes: unity_3d_routes,
|
|
|
onGetUnity3dMessage: onGetUnity3dMessage,
|
|
|
onUpdateCode: onUpdateCode,
|
|
|
evaluateMessage: evaluateMessage,
|
|
|
language: language,
|
|
|
evaluateLoading: evaluateLoading,
|
|
|
with_code_file: with_code_file,
|
|
|
onEval: onEvalCode,
|
|
|
tabActiveParams: tabActiveParams,
|
|
|
setTabActiveParams: setTabActiveParams,
|
|
|
tabs: tabs,
|
|
|
codeLoading: codeLoading,
|
|
|
setTabs: setTabs,
|
|
|
setCodeLoading: setCodeLoading,
|
|
|
userInfo: userInfo
|
|
|
})), st === 1 && /*#__PURE__*/(0,jsx_runtime.jsx)(choose_repository, objectSpread2_default()({
|
|
|
_dispatch: dispatch,
|
|
|
onEval: onEvalChoose
|
|
|
}, repositoryOption))]
|
|
|
})
|
|
|
})]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(modal/* default */.Z, {
|
|
|
children: [showEvalResult && /*#__PURE__*/(0,jsx_runtime.jsx)(evaluate_result, objectSpread2_default()({}, evaluateResultOption)), /*#__PURE__*/(0,jsx_runtime.jsx)(drawer/* default */.Z, {
|
|
|
rootClassName: "setting-drawer",
|
|
|
title: null,
|
|
|
placement: "right",
|
|
|
width: 400,
|
|
|
closable: false,
|
|
|
open: showDocuments,
|
|
|
onClose: onHideDocuments,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(spin/* default */.Z, {
|
|
|
spinning: codeLoading,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(tasks_DirectoryTree, {
|
|
|
className: "dir-tree",
|
|
|
selectedKeys: ["".concat(currentPath)],
|
|
|
treeData: repos,
|
|
|
onSelect: (0,lodash.throttle)(onSelectRepo, 2000),
|
|
|
loadData: onLoadTreeData
|
|
|
})
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(tasks_notice, objectSpread2_default()({}, noticeOption))]
|
|
|
})]
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)(Spinner/* default */.Z, {
|
|
|
message: "\u52AA\u529B\u8BF7\u6C42\u6570\u636E\u4E2D..",
|
|
|
className: "tpi-spin"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(Unlock/* default */.Z, {
|
|
|
successCb: onEvalCode
|
|
|
}), showPictureView && /*#__PURE__*/(0,jsx_runtime.jsx)(picture_panel, {
|
|
|
taskId: taskId,
|
|
|
onHidePictureView: onHidePictureView
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
function UnLockTestTip(_ref9) {
|
|
|
var is_teacher = _ref9.is_teacher,
|
|
|
score = _ref9.score;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(_react_17_0_2_react.Fragment, {
|
|
|
children: is_teacher ? /*#__PURE__*/(0,jsx_runtime.jsxs)(_react_17_0_2_react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: "\u5DF2\u7ECF\u8FC7\u804C\u4E1A\u8BA4\u8BC1\u7684\u6559\u5E08\u53EF\u4EE5\u514D\u91D1\u5E01\u67E5\u770B\u9690\u85CF\u6D4B\u8BD5\u96C6\u3002"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: "\u89E3\u9501\u672C\u5173\u6240\u6709\u6D4B\u8BD5\u96C6\u9700\u8981\u6263\u9664".concat(score * 2, "\u91D1\u5E01\uFF0C\u786E\u5B9A\u8981\u89E3\u9501\u5417\uFF1F")
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
href: "/account/certification",
|
|
|
"class": "to-certification-link",
|
|
|
target: "_blank",
|
|
|
children: "\u7ACB\u5373\u8BA4\u8BC1"
|
|
|
})]
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: "\u89E3\u9501\u672C\u5173\u6240\u6709\u6D4B\u8BD5\u96C6\u9700\u8981\u6263\u9664".concat(score * 2, "\u91D1\u5E01\uFF0C\u786E\u5B9A\u8981\u89E3\u9501\u5417\uFF1F")
|
|
|
})
|
|
|
});
|
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 36598:
|
|
|
/*!*********************************************************************************!*\
|
|
|
!*** ./src/pages/tasks/left-panel/discuss/discuss-editor/index.tsx + 1 modules ***!
|
|
|
\*********************************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
Z: function() { return /* binding */ discuss_editor; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/slicedToArray.js
|
|
|
var slicedToArray = __webpack_require__(79800);
|
|
|
var slicedToArray_default = /*#__PURE__*/__webpack_require__.n(slicedToArray);
|
|
|
// EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/index.js
|
|
|
var _react_17_0_2_react = __webpack_require__(59301);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/discuss/discuss-editor/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/message/index.js + 4 modules
|
|
|
var message = __webpack_require__(8591);
|
|
|
// EXTERNAL MODULE: ./src/components/markdown-editor/index.tsx + 10 modules
|
|
|
var markdown_editor = __webpack_require__(97526);
|
|
|
// EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/jsx-runtime.js
|
|
|
var jsx_runtime = __webpack_require__(37712);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/discuss/discuss-editor/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var discuss_editor = (function (_ref) {
|
|
|
var id = _ref.id,
|
|
|
activeDiscussIndex = _ref.activeDiscussIndex,
|
|
|
onReplyDiscuss = _ref.onReplyDiscuss;
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(''),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
value = _useState2[0],
|
|
|
setValue = _useState2[1];
|
|
|
function onChange(v) {
|
|
|
setValue(v);
|
|
|
}
|
|
|
function onCommit() {
|
|
|
if (!value) {
|
|
|
message/* default */.ZP.info('回复内容不能为空!');
|
|
|
return;
|
|
|
}
|
|
|
// console.log('--------','0');
|
|
|
|
|
|
// if(!getAuthentication()){
|
|
|
// Modal.confirm({
|
|
|
// title: '提示',
|
|
|
// centered: true,
|
|
|
// content: <div className="tc">您需要去完成您的职业认证,才能使用此功能</div>,
|
|
|
// okText: `立即完善`,
|
|
|
// cancelText: "稍后完善",
|
|
|
// onOk: () => {
|
|
|
// openNewWindow('/account/certification');
|
|
|
// }
|
|
|
// })
|
|
|
|
|
|
// }
|
|
|
// console.log('-------',getAuthentication());
|
|
|
|
|
|
onReplyDiscuss(id, value);
|
|
|
setValue('');
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "discuss-item-editor",
|
|
|
style: {
|
|
|
display: activeDiscussIndex === id ? 'block' : 'none',
|
|
|
width: '100%'
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(markdown_editor/* default */.Z, {
|
|
|
miniToolbar: true,
|
|
|
startInit: activeDiscussIndex === id,
|
|
|
defaultValue: value,
|
|
|
id: id,
|
|
|
noStorage: true,
|
|
|
watch: false,
|
|
|
height: 155,
|
|
|
placeholder: "\u6211\u8981\u56DE\u590D",
|
|
|
showResizeBar: true,
|
|
|
onChange: onChange
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: onCommit,
|
|
|
className: "btn-send",
|
|
|
children: "\u53D1\u9001"
|
|
|
})]
|
|
|
}, id);
|
|
|
});
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 77298:
|
|
|
/*!******************************************************************!*\
|
|
|
!*** ./src/pages/tasks/left-panel/discuss/index.jsx + 8 modules ***!
|
|
|
\******************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
Z: function() { return /* binding */ discuss; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/regeneratorRuntime.js
|
|
|
var regeneratorRuntime = __webpack_require__(7557);
|
|
|
var regeneratorRuntime_default = /*#__PURE__*/__webpack_require__.n(regeneratorRuntime);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/asyncToGenerator.js
|
|
|
var asyncToGenerator = __webpack_require__(41498);
|
|
|
var asyncToGenerator_default = /*#__PURE__*/__webpack_require__.n(asyncToGenerator);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/slicedToArray.js
|
|
|
var slicedToArray = __webpack_require__(79800);
|
|
|
var slicedToArray_default = /*#__PURE__*/__webpack_require__.n(slicedToArray);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/objectSpread2.js
|
|
|
var objectSpread2 = __webpack_require__(82242);
|
|
|
var objectSpread2_default = /*#__PURE__*/__webpack_require__.n(objectSpread2);
|
|
|
// EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/index.js
|
|
|
var _react_17_0_2_react = __webpack_require__(59301);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/discuss/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
// EXTERNAL MODULE: ./src/components/Spinner/index.tsx + 1 modules
|
|
|
var Spinner = __webpack_require__(30482);
|
|
|
// EXTERNAL MODULE: ./src/components/modal.tsx
|
|
|
var modal = __webpack_require__(57202);
|
|
|
// EXTERNAL MODULE: ./src/components/NoData/index.tsx
|
|
|
var NoData = __webpack_require__(30038);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/modal/index.js + 16 modules
|
|
|
var es_modal = __webpack_require__(43418);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/button/index.js
|
|
|
var es_button = __webpack_require__(3113);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/pagination/index.js + 10 modules
|
|
|
var pagination = __webpack_require__(41867);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/input-number/index.js + 14 modules
|
|
|
var input_number = __webpack_require__(85731);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/form/index.js + 19 modules
|
|
|
var es_form = __webpack_require__(78241);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/row/index.js
|
|
|
var row = __webpack_require__(95237);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/col/index.js
|
|
|
var col = __webpack_require__(43604);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/popover/index.js
|
|
|
var popover = __webpack_require__(60324);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/skeleton/index.js + 12 modules
|
|
|
var skeleton = __webpack_require__(59981);
|
|
|
// EXTERNAL MODULE: ./src/.umi-production/exports.ts
|
|
|
var _umi_production_exports = __webpack_require__(3634);
|
|
|
// EXTERNAL MODULE: ./src/components/mediator.js
|
|
|
var mediator = __webpack_require__(74692);
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/left-panel/discuss/service.js
|
|
|
var service = __webpack_require__(67315);
|
|
|
// EXTERNAL MODULE: ./src/components/ImagesIcon/index.ts + 31 modules
|
|
|
var ImagesIcon = __webpack_require__(40563);
|
|
|
// EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/jsx-runtime.js
|
|
|
var jsx_runtime = __webpack_require__(37712);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/discuss/components/AiAnswer.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var Interest = function Interest(_ref) {
|
|
|
var pathsList = _ref.pathsList,
|
|
|
dispatch = _ref.dispatch;
|
|
|
var _Form$useForm = es_form/* default */.Z.useForm(),
|
|
|
_Form$useForm2 = slicedToArray_default()(_Form$useForm, 1),
|
|
|
form = _Form$useForm2[0];
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
subjects = _useState2[0],
|
|
|
setSubjects = _useState2[1];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)(true),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
loading = _useState4[0],
|
|
|
setLoading = _useState4[1];
|
|
|
var _useState5 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
visible = _useState6[0],
|
|
|
setVisible = _useState6[1];
|
|
|
var _useState7 = (0,_react_17_0_2_react.useState)({}),
|
|
|
_useState8 = slicedToArray_default()(_useState7, 2),
|
|
|
keyword = _useState8[0],
|
|
|
setKeyword = _useState8[1];
|
|
|
var _useState9 = (0,_react_17_0_2_react.useState)({
|
|
|
keyword: keyword,
|
|
|
robot: true,
|
|
|
page: 1
|
|
|
}),
|
|
|
_useState10 = slicedToArray_default()(_useState9, 2),
|
|
|
query = _useState10[0],
|
|
|
setQuery = _useState10[1];
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
// if (pathsList.actionTabs.key === '立即发布') {
|
|
|
// setIsShowStep1(true)
|
|
|
// } else {
|
|
|
// setIsShowStep1(false);
|
|
|
// }
|
|
|
mediator/* default */.Z.subscribe('ai-replay-show', function (data) {
|
|
|
setKeyword(data);
|
|
|
setVisible(true);
|
|
|
});
|
|
|
}, []);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (keyword !== null && keyword !== void 0 && keyword.id) getData();
|
|
|
}, [keyword]);
|
|
|
var getData = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee(nextPage) {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
setLoading(true);
|
|
|
_context.next = 3;
|
|
|
return (0,service/* aiReply */.U_)(objectSpread2_default()(objectSpread2_default()({}, query), {}, {
|
|
|
keyword: keyword === null || keyword === void 0 ? void 0 : keyword.content,
|
|
|
id: keyword === null || keyword === void 0 ? void 0 : keyword.id
|
|
|
}));
|
|
|
case 3:
|
|
|
res = _context.sent;
|
|
|
setLoading(false);
|
|
|
if (res !== null && res !== void 0 && res.data) {
|
|
|
query.page++;
|
|
|
setQuery(objectSpread2_default()({}, query));
|
|
|
setSubjects(res === null || res === void 0 ? void 0 : res.data);
|
|
|
}
|
|
|
case 6:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function getData(_x) {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleOk = /*#__PURE__*/function () {
|
|
|
var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
getData();
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return function handleOk() {
|
|
|
return _ref3.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var content = /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: ImagesIcon/* qrCodeIcon */.wC,
|
|
|
width: 150
|
|
|
})
|
|
|
});
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(jsx_runtime.Fragment, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_modal/* default */.Z, {
|
|
|
title: '其他回答',
|
|
|
mask: true,
|
|
|
open: visible,
|
|
|
okText: "换一换",
|
|
|
cancelText: "",
|
|
|
onOk: handleOk,
|
|
|
width: 800,
|
|
|
height: 500,
|
|
|
footer: /*#__PURE__*/(0,jsx_runtime.jsx)(row/* default */.Z, {
|
|
|
align: "middle",
|
|
|
justify: "center",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(col/* default */.Z, {
|
|
|
className: "tc",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
type: "primary",
|
|
|
onClick: getData,
|
|
|
children: "\u6362\u4E00\u6362"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(popover/* default */.Z, {
|
|
|
content: content,
|
|
|
title: "\u6559\u5E08\u4EA4\u6D41\u793E\u533A",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
type: "dashed",
|
|
|
children: "\u4EBA\u5DE5\u670D\u52A1"
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
}),
|
|
|
onCancel: function onCancel() {
|
|
|
setVisible(false);
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("aside", {
|
|
|
style: {
|
|
|
minHeight: 300
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(row/* default */.Z, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(skeleton/* default */.Z, {
|
|
|
loading: loading,
|
|
|
children: [subjects === null || subjects === void 0 ? void 0 : subjects.map(function (item) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
style: {
|
|
|
background: "#e9f3f1",
|
|
|
padding: "8px 20px",
|
|
|
marginBottom: 10,
|
|
|
borderRadius: 20
|
|
|
},
|
|
|
span: 24,
|
|
|
children: item.text
|
|
|
});
|
|
|
}), !(subjects !== null && subjects !== void 0 && subjects.length) && /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
style: {
|
|
|
width: "100%",
|
|
|
textAlign: "center"
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: ImagesIcon/* qrCodeIcon */.wC,
|
|
|
width: 150
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), /*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), "\u6559\u5E08\u4EA4\u6D41\u793E\u533A"]
|
|
|
})]
|
|
|
})
|
|
|
})
|
|
|
})
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var AiAnswer = ((0,_umi_production_exports.connect)(function (_ref4) {
|
|
|
var pathsList = _ref4.pathsList;
|
|
|
return {
|
|
|
pathsList: pathsList
|
|
|
};
|
|
|
})(Interest));
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/constant.js
|
|
|
var constant = __webpack_require__(35378);
|
|
|
// EXTERNAL MODULE: ./src/utils/env.ts + 1 modules
|
|
|
var env = __webpack_require__(80548);
|
|
|
// EXTERNAL MODULE: ./src/components/RenderHtml/index.tsx + 1 modules
|
|
|
var RenderHtml = __webpack_require__(41977);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/tooltip/index.js + 3 modules
|
|
|
var tooltip = __webpack_require__(6848);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/discuss/discuss-item/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/left-panel/discuss/discuss-editor/index.tsx + 1 modules
|
|
|
var discuss_editor = __webpack_require__(36598);
|
|
|
// EXTERNAL MODULE: ./src/components/image-preview/index.tsx + 1 modules
|
|
|
var image_preview = __webpack_require__(52557);
|
|
|
// EXTERNAL MODULE: ./src/utils/authority.ts
|
|
|
var authority = __webpack_require__(19654);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/discuss/discuss-item/image/appoint1.svg
|
|
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
|
var __defProp = Object.defineProperty;
|
|
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
|
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
|
var __defNormalProp = function __defNormalProp(obj, key, value) {
|
|
|
return key in obj ? __defProp(obj, key, {
|
|
|
enumerable: true,
|
|
|
configurable: true,
|
|
|
writable: true,
|
|
|
value: value
|
|
|
}) : obj[key] = value;
|
|
|
};
|
|
|
var __spreadValues = function __spreadValues(a, b) {
|
|
|
for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]);
|
|
|
if (__getOwnPropSymbols) {
|
|
|
var _iterator = _createForOfIteratorHelper(__getOwnPropSymbols(b)),
|
|
|
_step;
|
|
|
try {
|
|
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
|
var prop = _step.value;
|
|
|
if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]);
|
|
|
}
|
|
|
} catch (err) {
|
|
|
_iterator.e(err);
|
|
|
} finally {
|
|
|
_iterator.f();
|
|
|
}
|
|
|
}
|
|
|
return a;
|
|
|
};
|
|
|
|
|
|
var SvgAppoint1 = function SvgAppoint1(props) {
|
|
|
return /* @__PURE__ */React.createElement("svg", __spreadValues({
|
|
|
width: 10,
|
|
|
height: 9,
|
|
|
xmlns: "http://www.w3.org/2000/svg"
|
|
|
}, props), /* @__PURE__ */React.createElement("title", null, "\u6EE1\u610F"), /* @__PURE__ */React.createElement("path", {
|
|
|
d: "M10 2.731H5.141V0h-1.96L1.675 2.643H0v6.18h7.865L10 2.732Zm-9.431.487h.836v5.03H.569v-5.03Zm8.626.088L7.463 8.249h-5.49V3.218h.031L3.511.575h1.062v2.73h4.622Z",
|
|
|
fill: "#000",
|
|
|
fillRule: "nonzero"
|
|
|
}));
|
|
|
};
|
|
|
|
|
|
/* harmony default export */ var appoint1 = ("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iOSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTAgMi43MzFINS4xNDFWMGgtMS45NkwxLjY3NSAyLjY0M0gwdjYuMThoNy44NjVMMTAgMi43MzJabS05LjQzMS40ODdoLjgzNnY1LjAzSC41Njl2LTUuMDNabTguNjI2LjA4OEw3LjQ2MyA4LjI0OWgtNS40OVYzLjIxOGguMDMxTDMuNTExLjU3NWgxLjA2MnYyLjczaDQuNjIyWiIgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJub256ZXJvIi8+PC9zdmc+");
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/discuss/discuss-item/image/appoint2.svg
|
|
|
function appoint2_createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = appoint2_unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
|
function appoint2_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return appoint2_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return appoint2_arrayLikeToArray(o, minLen); }
|
|
|
function appoint2_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
|
var appoint2_defProp = Object.defineProperty;
|
|
|
var appoint2_getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
|
var appoint2_hasOwnProp = Object.prototype.hasOwnProperty;
|
|
|
var appoint2_propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
|
var appoint2_defNormalProp = function __defNormalProp(obj, key, value) {
|
|
|
return key in obj ? appoint2_defProp(obj, key, {
|
|
|
enumerable: true,
|
|
|
configurable: true,
|
|
|
writable: true,
|
|
|
value: value
|
|
|
}) : obj[key] = value;
|
|
|
};
|
|
|
var appoint2_spreadValues = function __spreadValues(a, b) {
|
|
|
for (var prop in b || (b = {})) if (appoint2_hasOwnProp.call(b, prop)) appoint2_defNormalProp(a, prop, b[prop]);
|
|
|
if (appoint2_getOwnPropSymbols) {
|
|
|
var _iterator = appoint2_createForOfIteratorHelper(appoint2_getOwnPropSymbols(b)),
|
|
|
_step;
|
|
|
try {
|
|
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
|
var prop = _step.value;
|
|
|
if (appoint2_propIsEnum.call(b, prop)) appoint2_defNormalProp(a, prop, b[prop]);
|
|
|
}
|
|
|
} catch (err) {
|
|
|
_iterator.e(err);
|
|
|
} finally {
|
|
|
_iterator.f();
|
|
|
}
|
|
|
}
|
|
|
return a;
|
|
|
};
|
|
|
|
|
|
var SvgAppoint2 = function SvgAppoint2(props) {
|
|
|
return /* @__PURE__ */React.createElement("svg", appoint2_spreadValues({
|
|
|
width: 10,
|
|
|
height: 9,
|
|
|
xmlns: "http://www.w3.org/2000/svg"
|
|
|
}, props), /* @__PURE__ */React.createElement("title", null, "\u6EE1\u610F"), /* @__PURE__ */React.createElement("path", {
|
|
|
d: "M10 2.731H5.141V0h-1.96L1.675 2.643H0v6.18h7.865L10 2.732Zm-9.431.487h.836v5.03H.569v-5.03Zm8.626.088L7.463 8.249h-5.49V3.218h.031L3.511.575h1.062v2.73h4.622Z",
|
|
|
fill: "#0152D9",
|
|
|
fillRule: "nonzero"
|
|
|
}));
|
|
|
};
|
|
|
|
|
|
/* harmony default export */ var appoint2 = ("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iOSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTAgMi43MzFINS4xNDFWMGgtMS45NkwxLjY3NSAyLjY0M0gwdjYuMThoNy44NjVMMTAgMi43MzJabS05LjQzMS40ODdoLjgzNnY1LjAzSC41Njl2LTUuMDNabTguNjI2LjA4OEw3LjQ2MyA4LjI0OWgtNS40OVYzLjIxOGguMDMxTDMuNTExLjU3NWgxLjA2MnYyLjczaDQuNjIyWiIgZmlsbD0iIzAxNTJEOSIgZmlsbC1ydWxlPSJub256ZXJvIi8+PC9zdmc+");
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/discuss/discuss-item/image/disappoint1.svg
|
|
|
function disappoint1_createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = disappoint1_unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
|
function disappoint1_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return disappoint1_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return disappoint1_arrayLikeToArray(o, minLen); }
|
|
|
function disappoint1_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
|
var disappoint1_defProp = Object.defineProperty;
|
|
|
var disappoint1_getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
|
var disappoint1_hasOwnProp = Object.prototype.hasOwnProperty;
|
|
|
var disappoint1_propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
|
var disappoint1_defNormalProp = function __defNormalProp(obj, key, value) {
|
|
|
return key in obj ? disappoint1_defProp(obj, key, {
|
|
|
enumerable: true,
|
|
|
configurable: true,
|
|
|
writable: true,
|
|
|
value: value
|
|
|
}) : obj[key] = value;
|
|
|
};
|
|
|
var disappoint1_spreadValues = function __spreadValues(a, b) {
|
|
|
for (var prop in b || (b = {})) if (disappoint1_hasOwnProp.call(b, prop)) disappoint1_defNormalProp(a, prop, b[prop]);
|
|
|
if (disappoint1_getOwnPropSymbols) {
|
|
|
var _iterator = disappoint1_createForOfIteratorHelper(disappoint1_getOwnPropSymbols(b)),
|
|
|
_step;
|
|
|
try {
|
|
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
|
var prop = _step.value;
|
|
|
if (disappoint1_propIsEnum.call(b, prop)) disappoint1_defNormalProp(a, prop, b[prop]);
|
|
|
}
|
|
|
} catch (err) {
|
|
|
_iterator.e(err);
|
|
|
} finally {
|
|
|
_iterator.f();
|
|
|
}
|
|
|
}
|
|
|
return a;
|
|
|
};
|
|
|
|
|
|
var SvgDisappoint1 = function SvgDisappoint1(props) {
|
|
|
return /* @__PURE__ */React.createElement("svg", disappoint1_spreadValues({
|
|
|
width: 10,
|
|
|
height: 9,
|
|
|
xmlns: "http://www.w3.org/2000/svg"
|
|
|
}, props), /* @__PURE__ */React.createElement("title", null, "\u4E0D\u6EE1\u610F"), /* @__PURE__ */React.createElement("path", {
|
|
|
d: "M7.865 0H0v6.18h1.675l1.506 2.644h1.96V6.092H10L7.865 0ZM.57.575h.836v5.03H.569V.576Zm4.003 4.943v2.73H3.51L2.004 5.607h-.03V.576h5.489l1.732 4.942H4.572Z",
|
|
|
fill: "#000",
|
|
|
fillRule: "nonzero"
|
|
|
}));
|
|
|
};
|
|
|
|
|
|
/* harmony default export */ var disappoint1 = ("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iOSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNy44NjUgMEgwdjYuMThoMS42NzVsMS41MDYgMi42NDRoMS45NlY2LjA5MkgxMEw3Ljg2NSAwWk0uNTcuNTc1aC44MzZ2NS4wM0guNTY5Vi41NzZabTQuMDAzIDQuOTQzdjIuNzNIMy41MUwyLjAwNCA1LjYwN2gtLjAzVi41NzZoNS40ODlsMS43MzIgNC45NDJINC41NzJaIiBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4=");
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/discuss/discuss-item/image/disappoint2.svg
|
|
|
function disappoint2_createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = disappoint2_unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
|
function disappoint2_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return disappoint2_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return disappoint2_arrayLikeToArray(o, minLen); }
|
|
|
function disappoint2_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
|
var disappoint2_defProp = Object.defineProperty;
|
|
|
var disappoint2_getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
|
var disappoint2_hasOwnProp = Object.prototype.hasOwnProperty;
|
|
|
var disappoint2_propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
|
var disappoint2_defNormalProp = function __defNormalProp(obj, key, value) {
|
|
|
return key in obj ? disappoint2_defProp(obj, key, {
|
|
|
enumerable: true,
|
|
|
configurable: true,
|
|
|
writable: true,
|
|
|
value: value
|
|
|
}) : obj[key] = value;
|
|
|
};
|
|
|
var disappoint2_spreadValues = function __spreadValues(a, b) {
|
|
|
for (var prop in b || (b = {})) if (disappoint2_hasOwnProp.call(b, prop)) disappoint2_defNormalProp(a, prop, b[prop]);
|
|
|
if (disappoint2_getOwnPropSymbols) {
|
|
|
var _iterator = disappoint2_createForOfIteratorHelper(disappoint2_getOwnPropSymbols(b)),
|
|
|
_step;
|
|
|
try {
|
|
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
|
var prop = _step.value;
|
|
|
if (disappoint2_propIsEnum.call(b, prop)) disappoint2_defNormalProp(a, prop, b[prop]);
|
|
|
}
|
|
|
} catch (err) {
|
|
|
_iterator.e(err);
|
|
|
} finally {
|
|
|
_iterator.f();
|
|
|
}
|
|
|
}
|
|
|
return a;
|
|
|
};
|
|
|
|
|
|
var SvgDisappoint2 = function SvgDisappoint2(props) {
|
|
|
return /* @__PURE__ */React.createElement("svg", disappoint2_spreadValues({
|
|
|
width: 10,
|
|
|
height: 9,
|
|
|
xmlns: "http://www.w3.org/2000/svg"
|
|
|
}, props), /* @__PURE__ */React.createElement("title", null, "\u4E0D\u6EE1\u610F"), /* @__PURE__ */React.createElement("path", {
|
|
|
d: "M7.865 0H0v6.18h1.675l1.506 2.644h1.96V6.092H10L7.865 0ZM.57.575h.836v5.03H.569V.576Zm4.003 4.943v2.73H3.51L2.004 5.607h-.03V.576h5.489l1.732 4.942H4.572Z",
|
|
|
fill: "#0152D9",
|
|
|
fillRule: "nonzero"
|
|
|
}));
|
|
|
};
|
|
|
|
|
|
/* harmony default export */ var disappoint2 = ("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iOSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNy44NjUgMEgwdjYuMThoMS42NzVsMS41MDYgMi42NDRoMS45NlY2LjA5MkgxMEw3Ljg2NSAwWk0uNTcuNTc1aC44MzZ2NS4wM0guNTY5Vi41NzZabTQuMDAzIDQuOTQzdjIuNzNIMy41MUwyLjAwNCA1LjYwN2gtLjAzVi41NzZoNS40ODlsMS43MzIgNC45NDJINC41NzJaIiBmaWxsPSIjMDE1MkQ5IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4=");
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/discuss/discuss-item/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// import {isCommonSuperAdmin} from '@/utils/authority'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function SecondLevelDiscuss(_ref) {
|
|
|
var data = _ref.data,
|
|
|
index = _ref.index,
|
|
|
adminOrOperator = _ref.adminOrOperator,
|
|
|
parentDiscussIndex = _ref.parentDiscussIndex,
|
|
|
shixunIdentifier = _ref.shixunIdentifier,
|
|
|
user = _ref.user,
|
|
|
onSetRewardData = _ref.onSetRewardData,
|
|
|
onSetActionType = _ref.onSetActionType,
|
|
|
onHandleSubmitDiscusses = _ref.onHandleSubmitDiscusses,
|
|
|
onTopOrDownDiscuss = _ref.onTopOrDownDiscuss,
|
|
|
handleChildrenPlus = _ref.handleChildrenPlus,
|
|
|
anserAuthor = _ref.anserAuthor,
|
|
|
onPlus = _ref.onPlus,
|
|
|
onHandleRepaly = _ref.onHandleRepaly,
|
|
|
userInfomation = _ref.userInfomation;
|
|
|
var author = data.author,
|
|
|
can_delete = data.can_delete,
|
|
|
content = data.content,
|
|
|
hidden = data.hidden,
|
|
|
id = data.id,
|
|
|
reward = data.reward,
|
|
|
time = data.time,
|
|
|
reply_status = data.reply_status,
|
|
|
user_praise = data.user_praise,
|
|
|
praise_count = data.praise_count;
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
isHover = _useState2[0],
|
|
|
setHover = _useState2[1];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
isHoverSecond = _useState4[0],
|
|
|
setHoverSecond = _useState4[1];
|
|
|
var _useState5 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
isHoverSatisfied = _useState6[0],
|
|
|
setHoverSatisfied = _useState6[1];
|
|
|
var _useState7 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState8 = slicedToArray_default()(_useState7, 2),
|
|
|
isHoverDisSatisfied = _useState8[0],
|
|
|
setHoverDisSatisfied = _useState8[1];
|
|
|
var handleQuestions = function handleQuestions() {
|
|
|
if (!isHover) return;
|
|
|
onHandleSubmitDiscusses(id, {
|
|
|
reply_status: 2
|
|
|
});
|
|
|
};
|
|
|
var handleRobot = function handleRobot() {
|
|
|
if (!isHoverSecond) return;
|
|
|
onHandleSubmitDiscusses(id, {
|
|
|
reply_status: 3
|
|
|
});
|
|
|
};
|
|
|
var handleSatisfy = function handleSatisfy() {
|
|
|
onHandleSubmitDiscusses(id, {
|
|
|
reply_status: 1
|
|
|
});
|
|
|
};
|
|
|
var handleVerySatisfy = function handleVerySatisfy() {
|
|
|
onHandleSubmitDiscusses(id, {
|
|
|
reply_status: 4
|
|
|
});
|
|
|
};
|
|
|
var renderRatify = function renderRatify() {
|
|
|
switch (reply_status) {
|
|
|
case 0:
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
onClick: handleSatisfy,
|
|
|
className: "whether-satisfied ".concat(isHoverSatisfied ? 'cursorPoint blue-text-color' : ''),
|
|
|
onMouseEnter: function onMouseEnter() {
|
|
|
setHoverSatisfied(true);
|
|
|
},
|
|
|
onMouseLeave: function onMouseLeave() {
|
|
|
setHoverSatisfied(false);
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: isHoverSatisfied ? appoint2 : appoint1,
|
|
|
className: "whether-img SVGColor"
|
|
|
}), "\u6EE1\u610F"]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(popover/* default */.Z, {
|
|
|
placement: "bottomLeft",
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "content",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "content-disappoint",
|
|
|
children: "\u62B1\u6B49\u8BA9\u4F60\u5931\u671B\u4E86\uFF0C\u8BF7\u7EE7\u7EED\u5C1D\u8BD5:"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "radius-box marg15 height30-line black6c-optcity ".concat(isHover ? 'blue-background cursorPoint blue-background-write' : 'gray-background'),
|
|
|
onMouseEnter: function onMouseEnter() {
|
|
|
setHover(true);
|
|
|
},
|
|
|
onMouseLeave: function onMouseLeave() {
|
|
|
setHover(false);
|
|
|
},
|
|
|
onClick: handleQuestions,
|
|
|
children: ["\u8BF7", author === null || author === void 0 ? void 0 : author.name.trim(), "\u8001\u5E08\u518D\u5C1D\u8BD5\u56DE\u7B54\u4E00\u6B21\u3002"]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "radius-box marg15 height30-line black6c-optcity ".concat(isHoverSecond ? 'blue-background cursorPoint blue-background-write' : 'gray-background'),
|
|
|
onMouseEnter: function onMouseEnter() {
|
|
|
setHoverSecond(true);
|
|
|
},
|
|
|
onMouseLeave: function onMouseLeave() {
|
|
|
setHoverSecond(false);
|
|
|
},
|
|
|
onClick: handleRobot,
|
|
|
children: "\u53EF\u80FD\u542F\u7528\u4E86\u673A\u5668\u4EBA\uFF0C\u8BF7\u5176\u4ED6\u8001\u5E08\u56DE\u7B54\u3002"
|
|
|
})]
|
|
|
}),
|
|
|
trigger: "click",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "whether-satisfied ".concat(isHoverDisSatisfied ? 'cursorPoint blue-text-color' : ''),
|
|
|
onMouseEnter: function onMouseEnter() {
|
|
|
setHoverDisSatisfied(true);
|
|
|
},
|
|
|
onMouseLeave: function onMouseLeave() {
|
|
|
setHoverDisSatisfied(false);
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: isHoverDisSatisfied ? disappoint2 : disappoint1,
|
|
|
className: "whether-img SVGColor"
|
|
|
}), "\u4E0D\u6EE1\u610F"]
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
case 1:
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "radius-box cursorPoint height30 ".concat(index > 0 ? 'gray-background' : 'blue-background'),
|
|
|
onClick: handleVerySatisfy,
|
|
|
children: "\u6211\u5F88\u6EE1\u610F"
|
|
|
});
|
|
|
case 2:
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "radius-box height30 ".concat(index > 0 ? 'gray-background' : 'blue-background'),
|
|
|
children: "\u4E0D\u6EE1\u610F \u7B49\u5F85\u8001\u5E08\u518D\u6B21\u56DE\u7B54"
|
|
|
});
|
|
|
case 3:
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "radius-box height30 ".concat(index > 0 ? 'gray-background' : 'blue-background'),
|
|
|
children: "\u4E0D\u6EE1\u610F \u7B49\u5F85\u5176\u4ED6\u8001\u5E08\u518D\u6B21\u56DE\u7B54"
|
|
|
});
|
|
|
case 4:
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "radius-box height30 ".concat(index > 0 ? 'gray-background' : 'blue-background'),
|
|
|
children: "\u6211\u5F88\u6EE1\u610F"
|
|
|
});
|
|
|
default:
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(jsx_runtime.Fragment, {});
|
|
|
}
|
|
|
};
|
|
|
function onRewardDialog() {
|
|
|
onSetRewardData({
|
|
|
id: id,
|
|
|
index: index,
|
|
|
user_id: author.user_id,
|
|
|
parentDiscussIndex: parentDiscussIndex
|
|
|
});
|
|
|
}
|
|
|
function onHiddenDiscuss() {
|
|
|
onSetActionType({
|
|
|
id: id,
|
|
|
index: index,
|
|
|
params: {
|
|
|
hidden: !hidden ? '1' : '0',
|
|
|
container_identifier: shixunIdentifier
|
|
|
},
|
|
|
type: 'hidden-discuss',
|
|
|
parentDiscussIndex: parentDiscussIndex,
|
|
|
message: !hidden ? '确定要隐藏该条回复吗' : '确定要取消隐藏该条回复吗'
|
|
|
});
|
|
|
}
|
|
|
function onDeleteDiscuss() {
|
|
|
onSetActionType({
|
|
|
id: id,
|
|
|
index: index,
|
|
|
type: 'delete-discuss',
|
|
|
parentDiscussIndex: parentDiscussIndex,
|
|
|
message: '确定要删除该条回复吗'
|
|
|
});
|
|
|
}
|
|
|
var handleChildrenPlusClick = function handleChildrenPlusClick() {
|
|
|
onHandleRepaly(id, !user_praise, parentDiscussIndex, index);
|
|
|
};
|
|
|
var canDelete = adminOrOperator || can_delete || author.user_id === user.user_id || author.login === user.login;
|
|
|
var anserReplay = (0,_umi_production_exports.useLocation)().pathname.split('/')[1] === 'tasks';
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "second-level-discuss",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "discuss-info-body",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "discuss-info",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
href: "/users/".concat(author.login),
|
|
|
target: "_blank",
|
|
|
children: author.name
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "grey",
|
|
|
children: time
|
|
|
}), reward ? /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
className: "c-orange gift",
|
|
|
title: "\u5DF2\u5956\u52B1\u91D1\u5E01".concat(reward),
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-gift c-orange "
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: reward
|
|
|
})]
|
|
|
}) : null]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(RenderHtml/* default */.Z, {
|
|
|
className: "discuss-content ".concat(index > 0 ? 'content-gray' : ''),
|
|
|
value: content
|
|
|
// onClick={handleClick}
|
|
|
})]
|
|
|
}), anserReplay && /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "btn-group-succes",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "btn-group-gratify",
|
|
|
children: renderRatify()
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "btn-group-other",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "discuss-info-body",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "btn-group",
|
|
|
children: [user.identity === 1 ? /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: onRewardDialog,
|
|
|
title: '给TA奖励金币',
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-jiangli"
|
|
|
})
|
|
|
}) : null, adminOrOperator ? /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: onHiddenDiscuss,
|
|
|
title: hidden ? '取消隐藏' : '隐藏评论',
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: hidden ? 'iconfont icon-yincangbiyan' : 'fa fa-eye'
|
|
|
})
|
|
|
}) : null, canDelete ? /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: onDeleteDiscuss,
|
|
|
title: "\u5220\u9664",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-shanchu"
|
|
|
})
|
|
|
}) : null, /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
onClick: handleChildrenPlusClick,
|
|
|
className: user_praise ? 'c-orange' : '',
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: user_praise ? 'iconfont icon-dianzan mr3' : 'iconfont icon-dianzan-xian mr3 '
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: praise_count ? praise_count : ''
|
|
|
})]
|
|
|
})]
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
})]
|
|
|
});
|
|
|
}
|
|
|
/* harmony default export */ var discuss_item = (function (_ref2) {
|
|
|
var data = _ref2.data,
|
|
|
index = _ref2.index,
|
|
|
shixunIdentifier = _ref2.shixunIdentifier,
|
|
|
adminOrOperator = _ref2.adminOrOperator,
|
|
|
identity = _ref2.identity,
|
|
|
onTopOrDownDiscuss = _ref2.onTopOrDownDiscuss,
|
|
|
onPlusDiscuss = _ref2.onPlusDiscuss,
|
|
|
onDisableDiscuss = _ref2.onDisableDiscuss,
|
|
|
onSetActionType = _ref2.onSetActionType,
|
|
|
onSetRewardData = _ref2.onSetRewardData,
|
|
|
user = _ref2.user,
|
|
|
activeDiscussIndex = _ref2.activeDiscussIndex,
|
|
|
onReplyDiscuss = _ref2.onReplyDiscuss,
|
|
|
onSetActiveDiscussIndex = _ref2.onSetActiveDiscussIndex,
|
|
|
allowDisableDiscuss = _ref2.allowDisableDiscuss,
|
|
|
onHandleSubmitDiscusses = _ref2.onHandleSubmitDiscusses,
|
|
|
onHandleRepaly = _ref2.onHandleRepaly,
|
|
|
userInfomation = _ref2.userInfomation;
|
|
|
var content = data.content,
|
|
|
children = data.children,
|
|
|
game_url = data.game_url,
|
|
|
hidden = data.hidden,
|
|
|
id = data.id,
|
|
|
position = data.position,
|
|
|
praise_count = data.praise_count,
|
|
|
reward = data.reward,
|
|
|
sticky = data.sticky,
|
|
|
time = data.time,
|
|
|
user_praise = data.user_praise,
|
|
|
game_passed = data.game_passed,
|
|
|
ai_reply_text = data.ai_reply_text,
|
|
|
ai_reply_flag = data.ai_reply_flag,
|
|
|
author = data.author,
|
|
|
disable_discuss_status = data.disable_discuss_status,
|
|
|
reply_status = data.reply_status;
|
|
|
var _useState9 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState10 = slicedToArray_default()(_useState9, 2),
|
|
|
showPlusAnimate = _useState10[0],
|
|
|
setShowPlusAnimate = _useState10[1];
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (showPlusAnimate) {
|
|
|
setTimeout(function () {
|
|
|
return setShowPlusAnimate(false);
|
|
|
}, 800);
|
|
|
}
|
|
|
}, [showPlusAnimate]);
|
|
|
function onActiveDiscussIndex() {
|
|
|
var _userInfo;
|
|
|
if (!((_userInfo = (0,authority/* userInfo */.eY)()) !== null && _userInfo !== void 0 && _userInfo.authentication)) {
|
|
|
es_modal/* default */.Z.confirm({
|
|
|
title: '提示',
|
|
|
className: 'custom-modal-divider ',
|
|
|
icon: null,
|
|
|
content: '需要通过实名验证后,才能进行评论操作',
|
|
|
okText: '前往实名验证',
|
|
|
cancelText: '取消',
|
|
|
onOk: function onOk() {
|
|
|
window.open("/account/certification");
|
|
|
}
|
|
|
});
|
|
|
return;
|
|
|
}
|
|
|
console.log(id, "idi---------------------------");
|
|
|
onSetActiveDiscussIndex(id);
|
|
|
}
|
|
|
function onTopOrDown() {
|
|
|
onTopOrDownDiscuss(id, !sticky, index);
|
|
|
}
|
|
|
function onPlus() {
|
|
|
onPlusDiscuss(id, !user_praise, index);
|
|
|
}
|
|
|
function onRewardDialog() {
|
|
|
onSetRewardData({
|
|
|
id: id,
|
|
|
index: index,
|
|
|
user_id: author.user_id
|
|
|
});
|
|
|
}
|
|
|
function onDeleteDiscuss() {
|
|
|
onSetActionType({
|
|
|
id: id,
|
|
|
index: index,
|
|
|
type: 'delete-discuss',
|
|
|
message: '确定要删除该条回复吗'
|
|
|
});
|
|
|
}
|
|
|
function onHiddenDiscuss() {
|
|
|
onSetActionType({
|
|
|
id: id,
|
|
|
index: index,
|
|
|
params: {
|
|
|
hidden: !hidden ? '1' : '0',
|
|
|
container_identifier: shixunIdentifier
|
|
|
},
|
|
|
type: 'hidden-discuss',
|
|
|
message: !hidden ? '确定要隐藏该条回复吗' : '确定要取消隐藏该条回复吗'
|
|
|
});
|
|
|
}
|
|
|
function onDisable() {
|
|
|
onDisableDiscuss(id, disable_discuss_status === 0 ? 2 : 0, index);
|
|
|
}
|
|
|
var handleClick = function handleClick(e) {
|
|
|
var _e$target = e.target,
|
|
|
nodeName = _e$target.nodeName,
|
|
|
src = _e$target.src;
|
|
|
if (nodeName === 'IMG') {
|
|
|
mediator/* default */.Z.publish('preview-image', src);
|
|
|
console.log('src:', src);
|
|
|
}
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "discuss-item-container",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
href: "/users/".concat(author.login),
|
|
|
target: "_blank",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
alt: "\u7528\u6237\u5934\u50CF",
|
|
|
height: "50",
|
|
|
src: "".concat(env/* default */.Z.IMG_SERVER, "/images/").concat(author.image_url),
|
|
|
width: "50"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("section", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "discuss-info",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
href: "/users/".concat(author.login),
|
|
|
target: "_blank",
|
|
|
children: author.name
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "grey",
|
|
|
children: time
|
|
|
}), position ? /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
className: "c-green",
|
|
|
children: [" [\u7B2C", position, "\u5173] "]
|
|
|
}) : null, game_url ? /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
href: game_url,
|
|
|
target: "_blank",
|
|
|
className: "view-code",
|
|
|
title: "\u70B9\u51FB\u67E5\u770BTA\u7684\u4EE3\u7801\u9875\u9762",
|
|
|
children: "\u67E5\u770B"
|
|
|
}) : null, allowDisableDiscuss && /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [disable_discuss_status === 0 && /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: '禁止该用户在此项目的评论功能',
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
onClick: onDisable,
|
|
|
className: "c-red current",
|
|
|
children: "\u7981\u6B62\u8BC4\u8BBA\u529F\u80FD"
|
|
|
})
|
|
|
}), disable_discuss_status === 2 && /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: '恢复该用户在此实践项目的评论功能',
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
onClick: onDisable,
|
|
|
className: "c-light-primary current",
|
|
|
children: "\u6062\u590D\u8BC4\u8BBA\u529F\u80FD"
|
|
|
})
|
|
|
}), disable_discuss_status === 1 && /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: '该用户已被系统管理员禁言',
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "c-red",
|
|
|
children: "\u88AB\u7BA1\u7406\u5458\u7981\u6B62\u8BC4\u8BBA"
|
|
|
})
|
|
|
})]
|
|
|
}), sticky ? /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "top",
|
|
|
children: "\u7F6E\u9876"
|
|
|
}) : null, reward ? /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
className: "c-orange gift",
|
|
|
title: "\u5DF2\u5956\u52B1\u91D1\u5E01".concat(reward),
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-gift c-orange "
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: reward
|
|
|
})]
|
|
|
}) : null, identity <= 5 ? /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
style: {
|
|
|
flex: '1',
|
|
|
textAlign: 'right',
|
|
|
color: game_passed === 1 ? '#29bd8b' : ''
|
|
|
},
|
|
|
children: game_passed === 1 ? '已通关' : '未通关'
|
|
|
}) : null]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
onClick: handleClick,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(RenderHtml/* default */.Z, {
|
|
|
className: "discuss-content",
|
|
|
value: content
|
|
|
})
|
|
|
}), ai_reply_flag && /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
style: {
|
|
|
padding: 10,
|
|
|
borderRadius: 4,
|
|
|
background: '#f4f4f4'
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
style: {
|
|
|
padding: '6px 0'
|
|
|
},
|
|
|
children: ai_reply_text
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(es_button/* default */.ZP, {
|
|
|
style: {
|
|
|
background: '#d1e5f9',
|
|
|
borderRadius: 25,
|
|
|
border: 'none',
|
|
|
display: 'inline-flex',
|
|
|
justifyItems: 'center',
|
|
|
alignItems: 'center'
|
|
|
},
|
|
|
onClick: function onClick() {
|
|
|
return setShowPlusAnimate(true);
|
|
|
},
|
|
|
className: "mr10 mr5 relative c-blue",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
className: showPlusAnimate ? 'plus-one-animate' : 'hide',
|
|
|
style: {
|
|
|
position: 'absolute'
|
|
|
},
|
|
|
children: [' ', "+1"]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "c-blue icon-duiwoyouyong mr5"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "c-blue",
|
|
|
children: "\u5BF9\u6211\u6709\u7528"
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "c-orange current",
|
|
|
onClick: function onClick() {
|
|
|
mediator/* default */.Z.publish('ai-replay-show', {
|
|
|
content: content,
|
|
|
id: id
|
|
|
});
|
|
|
},
|
|
|
children: "\u5176\u4ED6\u56DE\u7B54"
|
|
|
})]
|
|
|
}), children && children.length > 0 ? /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "reply-discuss-containerActive",
|
|
|
onClick: handleClick,
|
|
|
children: children.map(function (item, i) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(SecondLevelDiscuss, {
|
|
|
data: item,
|
|
|
index: i,
|
|
|
userInfomation: userInfomation,
|
|
|
onTopOrDownDiscuss: onTopOrDownDiscuss,
|
|
|
shixunIdentifier: shixunIdentifier,
|
|
|
onHandleSubmitDiscusses: onHandleSubmitDiscusses,
|
|
|
adminOrOperator: adminOrOperator,
|
|
|
user: user,
|
|
|
onSetRewardData: onSetRewardData,
|
|
|
onSetActionType: onSetActionType,
|
|
|
parentDiscussIndex: index,
|
|
|
anserAuthor: author,
|
|
|
onHandleRepaly: onHandleRepaly
|
|
|
}, item.id);
|
|
|
})
|
|
|
}) : null, /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "btn-group",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "btn-group-other",
|
|
|
children: [user.identity === 1 ? /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: onRewardDialog,
|
|
|
title: '给TA奖励金币',
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-jiangli"
|
|
|
})
|
|
|
}) : null, adminOrOperator ? /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: onHiddenDiscuss,
|
|
|
title: hidden ? '取消隐藏' : '隐藏评论',
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: hidden ? 'iconfont icon-yincangbiyan' : 'fa fa-eye'
|
|
|
})
|
|
|
}) : null, identity <= 5 ? /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: onTopOrDown,
|
|
|
className: sticky ? 'btn-top' : 'btn-down',
|
|
|
title: sticky ? '取消置顶' : '置顶',
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-zhiding1 "
|
|
|
})
|
|
|
}) : null, adminOrOperator && (!children || children.length == 0) ? /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: onDeleteDiscuss,
|
|
|
title: "\u5220\u9664",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-shanchu"
|
|
|
})
|
|
|
}) : null, /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: onActiveDiscussIndex,
|
|
|
title: "\u56DE\u590D",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-huifu1"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
onClick: onPlus,
|
|
|
className: user_praise ? 'c-orange' : '',
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: user_praise ? 'iconfont icon-dianzan mr3' : 'iconfont icon-dianzan-xian mr3 '
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: praise_count ? praise_count : ''
|
|
|
})]
|
|
|
})]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(discuss_editor/* default */.Z, {
|
|
|
id: id,
|
|
|
activeDiscussIndex: activeDiscussIndex,
|
|
|
onReplyDiscuss: onReplyDiscuss
|
|
|
})]
|
|
|
})]
|
|
|
}, id);
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./src/utils/util.tsx
|
|
|
var util = __webpack_require__(88123);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/discuss/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var initialState = {
|
|
|
showRewardDialog: false,
|
|
|
data: null,
|
|
|
page: 1,
|
|
|
loading: false,
|
|
|
actionType: null,
|
|
|
activeDiscussIndex: null
|
|
|
};
|
|
|
function reducer(state, action) {
|
|
|
switch (action.type) {
|
|
|
case constant/* SHOW_DISCUSSES_LOADING */.tD:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
loading: true
|
|
|
});
|
|
|
case constant/* SHOW_REWARD_DIALOG */.RS:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
showRewardDialog: true
|
|
|
});
|
|
|
case constant/* CANCEL_REWARD_DIALOG */.t2:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
showRewardDialog: false
|
|
|
});
|
|
|
case constant/* GET_DISCUSSES */.GR:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), action.payload);
|
|
|
case constant/* TOP_OR_DOWN_DISCUSS */.u8:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), action.payload);
|
|
|
case constant/* PLUS_DISCUSS */.rM:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), action.payload);
|
|
|
case constant/* DISABLE_DISCUSS */.fo:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), action.payload);
|
|
|
case constant/* SET_ACTION_TYPE */.yS:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), action.payload);
|
|
|
case constant/* SET_REWARD */.Vn:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), action.payload);
|
|
|
case constant/* ACTIVE_DISCUSS_INDEX */.SX:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), action.payload);
|
|
|
default:
|
|
|
throw new Error();
|
|
|
}
|
|
|
}
|
|
|
/* harmony default export */ var discuss = (function (_ref) {
|
|
|
var shixunIdentifier = _ref.shixunIdentifier,
|
|
|
identity = _ref.identity,
|
|
|
activeIndex = _ref.activeIndex,
|
|
|
user = _ref.user,
|
|
|
allowDisableDiscuss = _ref.allowDisableDiscuss,
|
|
|
userInfo = _ref.userInfo,
|
|
|
_ref$isShixunDetail = _ref.isShixunDetail,
|
|
|
isShixunDetail = _ref$isShixunDetail === void 0 ? false : _ref$isShixunDetail,
|
|
|
taskData = _ref.taskData,
|
|
|
chatgpt = _ref.chatgpt,
|
|
|
to_user_id = _ref.to_user_id,
|
|
|
challengeId = _ref.challengeId;
|
|
|
var _useReducer = (0,_react_17_0_2_react.useReducer)(reducer, initialState),
|
|
|
_useReducer2 = slicedToArray_default()(_useReducer, 2),
|
|
|
state = _useReducer2[0],
|
|
|
dispatch = _useReducer2[1];
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(true),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
open = _useState2[0],
|
|
|
setOpen = _useState2[1];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)(null),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
timeRefersh = _useState4[0],
|
|
|
settimeRefersh = _useState4[1];
|
|
|
var page = state.page,
|
|
|
loading = state.loading,
|
|
|
data = state.data,
|
|
|
actionType = state.actionType,
|
|
|
showRewardDialog = state.showRewardDialog,
|
|
|
activeDiscussIndex = state.activeDiscussIndex;
|
|
|
var rewardData = (0,_react_17_0_2_react.useRef)();
|
|
|
var discussEl = (0,_react_17_0_2_react.useRef)();
|
|
|
var refresh = (0,_react_17_0_2_react.useRef)();
|
|
|
function getDiscusses(_x, _x2) {
|
|
|
return _getDiscusses.apply(this, arguments);
|
|
|
}
|
|
|
function _getDiscusses() {
|
|
|
_getDiscusses = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2(value, bool) {
|
|
|
var response;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
if (!loading) {
|
|
|
_context2.next = 2;
|
|
|
break;
|
|
|
}
|
|
|
return _context2.abrupt("return");
|
|
|
case 2:
|
|
|
_context2.prev = 2;
|
|
|
dispatch({
|
|
|
type: constant/* SHOW_DISCUSSES_LOADING */.tD
|
|
|
});
|
|
|
_context2.next = 6;
|
|
|
return (0,service/* fetchDiscusses */.o7)(shixunIdentifier, value);
|
|
|
case 6:
|
|
|
response = _context2.sent;
|
|
|
console.log("activeDiscussIndex", activeDiscussIndex);
|
|
|
dispatch({
|
|
|
type: constant/* GET_DISCUSSES */.GR,
|
|
|
payload: {
|
|
|
activeDiscussIndex: bool ? activeDiscussIndex : null,
|
|
|
page: value,
|
|
|
data: response,
|
|
|
loading: false
|
|
|
}
|
|
|
});
|
|
|
_context2.next = 14;
|
|
|
break;
|
|
|
case 11:
|
|
|
_context2.prev = 11;
|
|
|
_context2.t0 = _context2["catch"](2);
|
|
|
console.log(_context2.t0);
|
|
|
case 14:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2, null, [[2, 11]]);
|
|
|
}));
|
|
|
return _getDiscusses.apply(this, arguments);
|
|
|
}
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (activeIndex === 3 && chatgpt) {
|
|
|
clearInterval(refresh.current);
|
|
|
refresh.current = setInterval(function () {
|
|
|
getDiscusses(page);
|
|
|
}, 5000);
|
|
|
} else {
|
|
|
console.log("清除定时器");
|
|
|
return function () {
|
|
|
clearInterval(refresh.current);
|
|
|
};
|
|
|
}
|
|
|
return function () {
|
|
|
clearInterval(refresh.current);
|
|
|
};
|
|
|
}, [chatgpt, activeIndex, activeDiscussIndex]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (!open) {
|
|
|
clearInterval(timeRefersh);
|
|
|
settimeRefersh(setInterval(function () {
|
|
|
getDiscusses(page, true);
|
|
|
}, 5000));
|
|
|
}
|
|
|
return function () {
|
|
|
clearInterval(timeRefersh);
|
|
|
};
|
|
|
}, [open, page, activeDiscussIndex]);
|
|
|
function onPaginationChange(value) {
|
|
|
getDiscusses(value);
|
|
|
}
|
|
|
function onPlusDiscuss(_x3, _x4, _x5) {
|
|
|
return _onPlusDiscuss.apply(this, arguments);
|
|
|
}
|
|
|
function _onPlusDiscuss() {
|
|
|
_onPlusDiscuss = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3(id, user_praise, index) {
|
|
|
var response;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
_context3.prev = 0;
|
|
|
_context3.next = 3;
|
|
|
return (0,service/* plusDiscuss */.ae)(id, user_praise);
|
|
|
case 3:
|
|
|
response = _context3.sent;
|
|
|
comments[index].user_praise = user_praise;
|
|
|
comments[index].praise_count = response.praise_count;
|
|
|
dispatch({
|
|
|
type: constant/* PLUS_DISCUSS */.rM,
|
|
|
payload: {
|
|
|
data: objectSpread2_default()(objectSpread2_default()({}, data), {}, {
|
|
|
comments: comments
|
|
|
})
|
|
|
}
|
|
|
});
|
|
|
_context3.next = 12;
|
|
|
break;
|
|
|
case 9:
|
|
|
_context3.prev = 9;
|
|
|
_context3.t0 = _context3["catch"](0);
|
|
|
console.log(_context3.t0);
|
|
|
case 12:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3, null, [[0, 9]]);
|
|
|
}));
|
|
|
return _onPlusDiscuss.apply(this, arguments);
|
|
|
}
|
|
|
function onHandleRepaly(_x6, _x7, _x8, _x9) {
|
|
|
return _onHandleRepaly.apply(this, arguments);
|
|
|
}
|
|
|
function _onHandleRepaly() {
|
|
|
_onHandleRepaly = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee4(id, user_praise, index, i) {
|
|
|
var response;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee4$(_context4) {
|
|
|
while (1) switch (_context4.prev = _context4.next) {
|
|
|
case 0:
|
|
|
_context4.prev = 0;
|
|
|
_context4.next = 3;
|
|
|
return (0,service/* plusDiscuss */.ae)(id, user_praise);
|
|
|
case 3:
|
|
|
response = _context4.sent;
|
|
|
comments[index].children[i].user_praise = user_praise;
|
|
|
comments[index].children[i].praise_count = response.praise_count;
|
|
|
dispatch({
|
|
|
type: constant/* PLUS_DISCUSS */.rM,
|
|
|
payload: {
|
|
|
data: objectSpread2_default()(objectSpread2_default()({}, data), {}, {
|
|
|
comments: comments
|
|
|
})
|
|
|
}
|
|
|
});
|
|
|
_context4.next = 12;
|
|
|
break;
|
|
|
case 9:
|
|
|
_context4.prev = 9;
|
|
|
_context4.t0 = _context4["catch"](0);
|
|
|
console.log(_context4.t0);
|
|
|
case 12:
|
|
|
case "end":
|
|
|
return _context4.stop();
|
|
|
}
|
|
|
}, _callee4, null, [[0, 9]]);
|
|
|
}));
|
|
|
return _onHandleRepaly.apply(this, arguments);
|
|
|
}
|
|
|
function onDisableDiscuss(_x10, _x11, _x12) {
|
|
|
return _onDisableDiscuss.apply(this, arguments);
|
|
|
}
|
|
|
function _onDisableDiscuss() {
|
|
|
_onDisableDiscuss = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee5(id, disable_discuss_status, index) {
|
|
|
var response, select_user_id, newComments;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee5$(_context5) {
|
|
|
while (1) switch (_context5.prev = _context5.next) {
|
|
|
case 0:
|
|
|
_context5.prev = 0;
|
|
|
_context5.next = 3;
|
|
|
return (0,service/* disableDiscuss */._Z)(id, disable_discuss_status);
|
|
|
case 3:
|
|
|
response = _context5.sent;
|
|
|
if (!(response.status !== 0)) {
|
|
|
_context5.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
return _context5.abrupt("return");
|
|
|
case 6:
|
|
|
select_user_id = comments[index].author.user_id;
|
|
|
newComments = comments.map(function (e) {
|
|
|
if (e.author.user_id === select_user_id) {
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, e), {}, {
|
|
|
disable_discuss_status: disable_discuss_status
|
|
|
});
|
|
|
}
|
|
|
return e;
|
|
|
});
|
|
|
dispatch({
|
|
|
type: constant/* DISABLE_DISCUSS */.fo,
|
|
|
payload: {
|
|
|
data: objectSpread2_default()(objectSpread2_default()({}, data), {}, {
|
|
|
comments: newComments
|
|
|
})
|
|
|
}
|
|
|
});
|
|
|
_context5.next = 14;
|
|
|
break;
|
|
|
case 11:
|
|
|
_context5.prev = 11;
|
|
|
_context5.t0 = _context5["catch"](0);
|
|
|
console.log(_context5.t0);
|
|
|
case 14:
|
|
|
case "end":
|
|
|
return _context5.stop();
|
|
|
}
|
|
|
}, _callee5, null, [[0, 11]]);
|
|
|
}));
|
|
|
return _onDisableDiscuss.apply(this, arguments);
|
|
|
}
|
|
|
function onTopOrDownDiscuss(_x13, _x14, _x15) {
|
|
|
return _onTopOrDownDiscuss.apply(this, arguments);
|
|
|
}
|
|
|
function _onTopOrDownDiscuss() {
|
|
|
_onTopOrDownDiscuss = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee6(id, sticky, index) {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee6$(_context6) {
|
|
|
while (1) switch (_context6.prev = _context6.next) {
|
|
|
case 0:
|
|
|
_context6.prev = 0;
|
|
|
_context6.next = 3;
|
|
|
return (0,service/* topOrDownDiscuss */.wJ)(id, sticky);
|
|
|
case 3:
|
|
|
comments[index].sticky = sticky;
|
|
|
dispatch({
|
|
|
type: constant/* TOP_OR_DOWN_DISCUSS */.u8,
|
|
|
payload: {
|
|
|
data: objectSpread2_default()(objectSpread2_default()({}, data), {}, {
|
|
|
comments: comments
|
|
|
})
|
|
|
}
|
|
|
});
|
|
|
getDiscusses(state.page);
|
|
|
_context6.next = 11;
|
|
|
break;
|
|
|
case 8:
|
|
|
_context6.prev = 8;
|
|
|
_context6.t0 = _context6["catch"](0);
|
|
|
console.log(_context6.t0);
|
|
|
case 11:
|
|
|
case "end":
|
|
|
return _context6.stop();
|
|
|
}
|
|
|
}, _callee6, null, [[0, 8]]);
|
|
|
}));
|
|
|
return _onTopOrDownDiscuss.apply(this, arguments);
|
|
|
}
|
|
|
function onCancelAction() {
|
|
|
dispatch({
|
|
|
type: constant/* SET_ACTION_TYPE */.yS,
|
|
|
payload: {
|
|
|
actionType: null
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
function onProcessAction() {
|
|
|
return _onProcessAction.apply(this, arguments);
|
|
|
}
|
|
|
function _onProcessAction() {
|
|
|
_onProcessAction = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee7() {
|
|
|
var id, params, type, index, parentDiscussIndex, secondDicusses, i, _i;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee7$(_context7) {
|
|
|
while (1) switch (_context7.prev = _context7.next) {
|
|
|
case 0:
|
|
|
id = actionType.id, params = actionType.params, type = actionType.type, index = actionType.index, parentDiscussIndex = actionType.parentDiscussIndex;
|
|
|
if (!(type === 'hidden-discuss')) {
|
|
|
_context7.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
_context7.next = 4;
|
|
|
return (0,service/* hiddenDiscuss */.OY)(id, params);
|
|
|
case 4:
|
|
|
if (!parentDiscussIndex) {
|
|
|
comments[index].hidden = params.hidden == 1 ? true : false;
|
|
|
} else {
|
|
|
comments[parentDiscussIndex].children[index].hidden = params.hidden == 1 ? true : false;
|
|
|
}
|
|
|
dispatch({
|
|
|
type: constant/* SET_ACTION_TYPE */.yS,
|
|
|
payload: {
|
|
|
actionType: null,
|
|
|
data: objectSpread2_default()(objectSpread2_default()({}, data), {}, {
|
|
|
comments: comments
|
|
|
})
|
|
|
}
|
|
|
});
|
|
|
case 6:
|
|
|
if (!(type === 'delete-discuss')) {
|
|
|
_context7.next = 31;
|
|
|
break;
|
|
|
}
|
|
|
_context7.next = 9;
|
|
|
return (0,service/* deleteDiscuss */.KY)(id);
|
|
|
case 9:
|
|
|
if (!(parentDiscussIndex || parentDiscussIndex === 0)) {
|
|
|
_context7.next = 22;
|
|
|
break;
|
|
|
}
|
|
|
secondDicusses = comments[parentDiscussIndex].children;
|
|
|
i = secondDicusses.length - 1;
|
|
|
case 12:
|
|
|
if (!(i >= 0)) {
|
|
|
_context7.next = 19;
|
|
|
break;
|
|
|
}
|
|
|
if (!(secondDicusses[i].id === id)) {
|
|
|
_context7.next = 16;
|
|
|
break;
|
|
|
}
|
|
|
secondDicusses.splice(i, 1);
|
|
|
return _context7.abrupt("break", 19);
|
|
|
case 16:
|
|
|
i--;
|
|
|
_context7.next = 12;
|
|
|
break;
|
|
|
case 19:
|
|
|
comments[parentDiscussIndex].children = secondDicusses;
|
|
|
_context7.next = 30;
|
|
|
break;
|
|
|
case 22:
|
|
|
_i = comments.length - 1;
|
|
|
case 23:
|
|
|
if (!(_i >= 0)) {
|
|
|
_context7.next = 30;
|
|
|
break;
|
|
|
}
|
|
|
if (!(comments[_i].id === id)) {
|
|
|
_context7.next = 27;
|
|
|
break;
|
|
|
}
|
|
|
comments.splice(_i, 1);
|
|
|
return _context7.abrupt("break", 30);
|
|
|
case 27:
|
|
|
_i--;
|
|
|
_context7.next = 23;
|
|
|
break;
|
|
|
case 30:
|
|
|
dispatch({
|
|
|
type: constant/* SET_ACTION_TYPE */.yS,
|
|
|
payload: {
|
|
|
actionType: null,
|
|
|
data: objectSpread2_default()(objectSpread2_default()({}, data), {}, {
|
|
|
comments: comments
|
|
|
})
|
|
|
}
|
|
|
});
|
|
|
case 31:
|
|
|
case "end":
|
|
|
return _context7.stop();
|
|
|
}
|
|
|
}, _callee7);
|
|
|
}));
|
|
|
return _onProcessAction.apply(this, arguments);
|
|
|
}
|
|
|
function onSetActionType(value) {
|
|
|
dispatch({
|
|
|
type: constant/* SET_ACTION_TYPE */.yS,
|
|
|
payload: {
|
|
|
actionType: value
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
function onCancelRewardDialog() {
|
|
|
dispatch({
|
|
|
type: constant/* CANCEL_REWARD_DIALOG */.t2
|
|
|
});
|
|
|
}
|
|
|
function onRewardDiscuss() {
|
|
|
return _onRewardDiscuss.apply(this, arguments);
|
|
|
}
|
|
|
function _onRewardDiscuss() {
|
|
|
_onRewardDiscuss = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee8() {
|
|
|
var _rewardData$current, id, index, score, user_id, parentDiscussIndex, response;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee8$(_context8) {
|
|
|
while (1) switch (_context8.prev = _context8.next) {
|
|
|
case 0:
|
|
|
_rewardData$current = rewardData.current, id = _rewardData$current.id, index = _rewardData$current.index, score = _rewardData$current.score, user_id = _rewardData$current.user_id, parentDiscussIndex = _rewardData$current.parentDiscussIndex;
|
|
|
_context8.next = 3;
|
|
|
return (0,service/* rewardDiscuss */.S8)(id, {
|
|
|
container_type: 'Discusses',
|
|
|
score: score,
|
|
|
user_id: user_id
|
|
|
});
|
|
|
case 3:
|
|
|
response = _context8.sent;
|
|
|
if (!parentDiscussIndex) {
|
|
|
comments[index].reward = response.code;
|
|
|
} else {
|
|
|
comments[parentDiscussIndex].children[index].reward = response.code;
|
|
|
}
|
|
|
dispatch({
|
|
|
type: constant/* SET_REWARD */.Vn,
|
|
|
payload: {
|
|
|
showRewardDialog: false,
|
|
|
data: objectSpread2_default()(objectSpread2_default()({}, data), {}, {
|
|
|
comments: comments
|
|
|
})
|
|
|
}
|
|
|
});
|
|
|
rewardData.current = null;
|
|
|
case 7:
|
|
|
case "end":
|
|
|
return _context8.stop();
|
|
|
}
|
|
|
}, _callee8);
|
|
|
}));
|
|
|
return _onRewardDiscuss.apply(this, arguments);
|
|
|
}
|
|
|
function onSetRewardData(value) {
|
|
|
rewardData.current = value;
|
|
|
dispatch({
|
|
|
type: constant/* SHOW_REWARD_DIALOG */.RS
|
|
|
});
|
|
|
}
|
|
|
function onSetDiscussScore(value) {
|
|
|
rewardData.current.score = value;
|
|
|
}
|
|
|
function onReplyDiscuss(_x16, _x17) {
|
|
|
return _onReplyDiscuss.apply(this, arguments);
|
|
|
}
|
|
|
function _onReplyDiscuss() {
|
|
|
_onReplyDiscuss = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee9(id, value) {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee9$(_context9) {
|
|
|
while (1) switch (_context9.prev = _context9.next) {
|
|
|
case 0:
|
|
|
_context9.prev = 0;
|
|
|
_context9.next = 3;
|
|
|
return (0,service/* replyDiscuss */.wg)(id, value);
|
|
|
case 3:
|
|
|
res = _context9.sent;
|
|
|
if (!(res.status === -3)) {
|
|
|
_context9.next = 8;
|
|
|
break;
|
|
|
}
|
|
|
es_modal/* default */.Z.info({
|
|
|
title: '提示',
|
|
|
className: 'custom-modal-divider ',
|
|
|
icon: null,
|
|
|
content: '你的账号因为发布了不当内容,现已将评论功能屏蔽。',
|
|
|
okText: '确定'
|
|
|
});
|
|
|
onSetActiveDiscussIndex(null);
|
|
|
return _context9.abrupt("return");
|
|
|
case 8:
|
|
|
getDiscusses(page);
|
|
|
_context9.next = 14;
|
|
|
break;
|
|
|
case 11:
|
|
|
_context9.prev = 11;
|
|
|
_context9.t0 = _context9["catch"](0);
|
|
|
console.log(_context9.t0);
|
|
|
case 14:
|
|
|
case "end":
|
|
|
return _context9.stop();
|
|
|
}
|
|
|
}, _callee9, null, [[0, 11]]);
|
|
|
}));
|
|
|
return _onReplyDiscuss.apply(this, arguments);
|
|
|
}
|
|
|
function onSubmitDiscusses(_x18, _x19) {
|
|
|
return _onSubmitDiscusses.apply(this, arguments);
|
|
|
}
|
|
|
function _onSubmitDiscusses() {
|
|
|
_onSubmitDiscusses = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee10(id, value) {
|
|
|
var _yield$submitDiscusse, status;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee10$(_context10) {
|
|
|
while (1) switch (_context10.prev = _context10.next) {
|
|
|
case 0:
|
|
|
_context10.prev = 0;
|
|
|
_context10.next = 3;
|
|
|
return (0,service/* submitDiscusses */.KQ)(id, value);
|
|
|
case 3:
|
|
|
_yield$submitDiscusse = _context10.sent;
|
|
|
status = _yield$submitDiscusse.status;
|
|
|
if (!(status !== 1)) {
|
|
|
_context10.next = 7;
|
|
|
break;
|
|
|
}
|
|
|
return _context10.abrupt("return");
|
|
|
case 7:
|
|
|
getDiscusses(page);
|
|
|
_context10.next = 13;
|
|
|
break;
|
|
|
case 10:
|
|
|
_context10.prev = 10;
|
|
|
_context10.t0 = _context10["catch"](0);
|
|
|
console.log(_context10.t0);
|
|
|
case 13:
|
|
|
case "end":
|
|
|
return _context10.stop();
|
|
|
}
|
|
|
}, _callee10, null, [[0, 10]]);
|
|
|
}));
|
|
|
return _onSubmitDiscusses.apply(this, arguments);
|
|
|
}
|
|
|
function onSetActiveDiscussIndex(value) {
|
|
|
if (activeDiscussIndex === value) {
|
|
|
dispatch({
|
|
|
type: constant/* ACTIVE_DISCUSS_INDEX */.SX,
|
|
|
payload: {
|
|
|
activeDiscussIndex: null
|
|
|
}
|
|
|
});
|
|
|
} else {
|
|
|
dispatch({
|
|
|
type: constant/* ACTIVE_DISCUSS_INDEX */.SX,
|
|
|
payload: {
|
|
|
activeDiscussIndex: value
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
function init() {
|
|
|
return _init.apply(this, arguments);
|
|
|
}
|
|
|
function _init() {
|
|
|
_init = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
if (!(activeIndex === 3 && !data && shixunIdentifier)) {
|
|
|
_context.next = 3;
|
|
|
break;
|
|
|
}
|
|
|
_context.next = 3;
|
|
|
return getDiscusses(page);
|
|
|
case 3:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return _init.apply(this, arguments);
|
|
|
}
|
|
|
init();
|
|
|
}, [shixunIdentifier, activeIndex, page, dispatch]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
var unSub = mediator/* default */.Z.subscribe('create-discuss', function () {
|
|
|
clearInterval(refresh.current);
|
|
|
getDiscusses(page);
|
|
|
if (chatgpt) {
|
|
|
refresh.current = setInterval(function () {
|
|
|
getDiscusses(page);
|
|
|
}, 5000);
|
|
|
}
|
|
|
});
|
|
|
return unSub;
|
|
|
}, [shixunIdentifier]);
|
|
|
if (!data) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(Spinner/* default */.Z, {});
|
|
|
}
|
|
|
// 开启实时刷新调用的函数
|
|
|
var handleRefresh = function handleRefresh() {
|
|
|
setOpen(!open);
|
|
|
if (!open) {
|
|
|
clearInterval(timeRefersh);
|
|
|
} else {
|
|
|
settimeRefersh(setInterval(function () {
|
|
|
getDiscusses(page, true);
|
|
|
}, 5000));
|
|
|
}
|
|
|
};
|
|
|
var disscuss_count = data.disscuss_count,
|
|
|
comments = data.comments,
|
|
|
all = data.all,
|
|
|
can_hidden = data.can_hidden;
|
|
|
console.log(to_user_id, "to_user_id");
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(_react_17_0_2_react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "discuss-container",
|
|
|
ref: discussEl,
|
|
|
children: [chatgpt && /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
type: "primary",
|
|
|
style: {
|
|
|
"float": 'right',
|
|
|
marginBottom: 10
|
|
|
},
|
|
|
onClick: function onClick() {
|
|
|
(0,util/* openNewWindow */.xg)("/chatgpt?id=".concat(to_user_id, "&position=").concat(challengeId));
|
|
|
},
|
|
|
children: "\u8FDB\u5165\u5386\u53F2\u95EE\u7B54"
|
|
|
}), (taskData === null || taskData === void 0 ? void 0 : taskData.myshixun_manager) && !chatgpt && /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
style: {
|
|
|
"float": 'right',
|
|
|
marginBottom: 10
|
|
|
},
|
|
|
type: "primary",
|
|
|
onClick: handleRefresh,
|
|
|
children: open ? '开启实时刷新' : '停止实时刷新'
|
|
|
}), disscuss_count === 0 ? /*#__PURE__*/(0,jsx_runtime.jsx)(NoData/* default */.Z, {
|
|
|
styles: {
|
|
|
clear: 'both'
|
|
|
}
|
|
|
}) : null, comments.map(function (item, index) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(discuss_item, {
|
|
|
user: user,
|
|
|
userInfomation: userInfo,
|
|
|
data: item,
|
|
|
index: index,
|
|
|
identity: identity,
|
|
|
onPaginationChange: onPaginationChange,
|
|
|
shixunIdentifier: shixunIdentifier,
|
|
|
onSetActionType: onSetActionType,
|
|
|
onTopOrDownDiscuss: onTopOrDownDiscuss,
|
|
|
adminOrOperator: can_hidden,
|
|
|
onPlusDiscuss: onPlusDiscuss,
|
|
|
onDisableDiscuss: onDisableDiscuss,
|
|
|
onSetRewardData: onSetRewardData,
|
|
|
activeDiscussIndex: activeDiscussIndex,
|
|
|
onHandleSubmitDiscusses: onSubmitDiscusses,
|
|
|
onSetActiveDiscussIndex: onSetActiveDiscussIndex,
|
|
|
onReplyDiscuss: onReplyDiscuss,
|
|
|
allowDisableDiscuss: allowDisableDiscuss,
|
|
|
onHandleRepaly: onHandleRepaly
|
|
|
}, item.id);
|
|
|
}), disscuss_count > 10 ? /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "pagination-container",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(pagination/* default */.Z, {
|
|
|
showQuickJumper: true,
|
|
|
showSizeChanger: false,
|
|
|
onChange: onPaginationChange,
|
|
|
current: page,
|
|
|
total: disscuss_count
|
|
|
})
|
|
|
}) : null, /*#__PURE__*/(0,jsx_runtime.jsx)(AiAnswer, {})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(modal/* default */.Z, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_modal/* default */.Z, {
|
|
|
centered: true,
|
|
|
title: "\u63D0\u793A",
|
|
|
open: !!actionType,
|
|
|
onOk: onProcessAction,
|
|
|
onCancel: onCancelAction,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
children: actionType ? actionType.message : ''
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_modal/* default */.Z, {
|
|
|
centered: true,
|
|
|
width: 400,
|
|
|
title: "\u5956\u52B1\u8BBE\u7F6E",
|
|
|
open: showRewardDialog,
|
|
|
onCancel: onCancelRewardDialog,
|
|
|
onOk: onRewardDiscuss,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input_number/* default */.Z, {
|
|
|
placeholder: "\u8BF7\u8F93\u5165\u5956\u52B1\u7684\u91D1\u5E01\u6570\u91CF",
|
|
|
min: 1,
|
|
|
onChange: onSetDiscussScore,
|
|
|
style: {
|
|
|
width: '228px'
|
|
|
}
|
|
|
})
|
|
|
})]
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 97926:
|
|
|
/*!******************************************************************!*\
|
|
|
!*** ./src/pages/tasks/vnc-view/vnc-panel/index.tsx + 2 modules ***!
|
|
|
\******************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
Z: function() { return /* binding */ vnc_panel; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/regeneratorRuntime.js
|
|
|
var regeneratorRuntime = __webpack_require__(7557);
|
|
|
var regeneratorRuntime_default = /*#__PURE__*/__webpack_require__.n(regeneratorRuntime);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/asyncToGenerator.js
|
|
|
var asyncToGenerator = __webpack_require__(41498);
|
|
|
var asyncToGenerator_default = /*#__PURE__*/__webpack_require__.n(asyncToGenerator);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/createForOfIteratorHelper.js
|
|
|
var createForOfIteratorHelper = __webpack_require__(91232);
|
|
|
var createForOfIteratorHelper_default = /*#__PURE__*/__webpack_require__.n(createForOfIteratorHelper);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/slicedToArray.js
|
|
|
var slicedToArray = __webpack_require__(79800);
|
|
|
var slicedToArray_default = /*#__PURE__*/__webpack_require__.n(slicedToArray);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/objectSpread2.js
|
|
|
var objectSpread2 = __webpack_require__(82242);
|
|
|
var objectSpread2_default = /*#__PURE__*/__webpack_require__.n(objectSpread2);
|
|
|
// EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/index.js
|
|
|
var _react_17_0_2_react = __webpack_require__(59301);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/modal/index.js + 16 modules
|
|
|
var modal = __webpack_require__(43418);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/message/index.js + 4 modules
|
|
|
var message = __webpack_require__(8591);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/progress/index.js + 13 modules
|
|
|
var progress = __webpack_require__(93948);
|
|
|
// EXTERNAL MODULE: ./src/components/Spinner/index.tsx + 1 modules
|
|
|
var Spinner = __webpack_require__(30482);
|
|
|
// EXTERNAL MODULE: ./node_modules/_resize-observer-polyfill@1.5.1@resize-observer-polyfill/dist/ResizeObserver.es.js
|
|
|
var ResizeObserver_es = __webpack_require__(76374);
|
|
|
// EXTERNAL MODULE: ./src/components/modal.tsx
|
|
|
var components_modal = __webpack_require__(57202);
|
|
|
// EXTERNAL MODULE: ./src/.umi-production/exports.ts
|
|
|
var _umi_production_exports = __webpack_require__(3634);
|
|
|
// EXTERNAL MODULE: ./src/utils/util.tsx
|
|
|
var util = __webpack_require__(88123);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/input/index.js + 5 modules
|
|
|
var input = __webpack_require__(1056);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/button/index.js
|
|
|
var es_button = __webpack_require__(3113);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/vnc-view/clipboard-box/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/jsx-runtime.js
|
|
|
var jsx_runtime = __webpack_require__(37712);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/vnc-view/clipboard-box/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var TextArea = input/* default */.Z.TextArea;
|
|
|
/* harmony default export */ var clipboard_box = (function (_ref) {
|
|
|
var onCancel = _ref.onCancel,
|
|
|
onSave = _ref.onSave,
|
|
|
content = _ref.content;
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(content),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
value = _useState2[0],
|
|
|
setValue = _useState2[1];
|
|
|
function onChangeValue(e) {
|
|
|
setValue(e.target.value);
|
|
|
}
|
|
|
function onSaveContent() {
|
|
|
onSave(value);
|
|
|
}
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
setValue(content);
|
|
|
}, [content]);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "clipboard-box",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("h3", {
|
|
|
children: "\u5B9E\u9A8C\u73AF\u5883\u526A\u5207\u677F\uFF1A"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(TextArea, {
|
|
|
value: value,
|
|
|
onChange: onChangeValue,
|
|
|
className: "clipboard"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
children: [" ", /*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
children: " 1.\u4ECE\u5916\u90E8\u590D\u5236\u5185\u5BB9\u5230\u5B9E\u9A8C\u73AF\u5883\u5185\uFF1A "
|
|
|
}), " \u7C98\u8D34\u5185\u5BB9\u5230\u4E0A\u9762\u6587\u672C\u6846\uFF0C\u70B9\u51FB\u4FDD\u5B58\uFF0C\u7136\u540E\u5728\u5B9E\u9A8C\u73AF\u5883\u4E2D\u8FDB\u884C\u7C98\u8D34\u3002 "]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
children: [" ", /*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
children: " 2.\u83B7\u53D6\u5B9E\u9A8C\u73AF\u5883\u4E2D\u7684\u5185\u5BB9\uFF1A "
|
|
|
}), " \u8BF7\u5148\u5728\u73AF\u5883\u4E2D\u590D\u5236\u5185\u5BB9\uFF0C\u590D\u5236\u52A8\u4F5C\u5B8C\u6210\u540E\u5185\u5BB9\u4F1A\u663E\u793A\u5728\u4E0A\u9762\u6587\u672C\u6846\uFF0C\u7136\u540E\u5728\u4E0A\u9762\u6587\u672C\u6846\u4E2D\u518D\u6B21\u590D\u5236\u3002 "]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "btn-action-container",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
type: "ghost",
|
|
|
onClick: onCancel,
|
|
|
style: {
|
|
|
marginRight: 10
|
|
|
},
|
|
|
children: "\u53D6\u6D88"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
type: "primary",
|
|
|
onClick: onSaveContent,
|
|
|
children: "\u4FDD\u5B58"
|
|
|
})]
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./src/utils/fullscreen.ts
|
|
|
var fullscreen = __webpack_require__(93703);
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/service/index.js
|
|
|
var service = __webpack_require__(57014);
|
|
|
// EXTERNAL MODULE: ./node_modules/_novncrfb@1.2.1@novncrfb/lib/rfb.js
|
|
|
var rfb = __webpack_require__(62013);
|
|
|
// EXTERNAL MODULE: ./src/components/mediator.js
|
|
|
var mediator = __webpack_require__(74692);
|
|
|
// EXTERNAL MODULE: ./src/utils/fetch.ts
|
|
|
var fetch = __webpack_require__(78092);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/vnc-view/vnc-panel/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function unicodeUnEscape(str) {
|
|
|
return str.replace(/\\u([\dA-Za-z]{4})/g, function (_, m1) {
|
|
|
return String.fromCharCode(parseInt("0x" + m1));
|
|
|
});
|
|
|
}
|
|
|
function getJsonFromUrl(url) {
|
|
|
if (!url) url = window.location.search;
|
|
|
var query = url.substr(1);
|
|
|
var result = {};
|
|
|
query.split('&').forEach(function (part) {
|
|
|
var item = part.split('=');
|
|
|
result[item[0]] = decodeURIComponent(item[1]);
|
|
|
});
|
|
|
return result;
|
|
|
}
|
|
|
var initialState = {
|
|
|
loading: true,
|
|
|
isLarge: false,
|
|
|
showClipBoardBox: false,
|
|
|
transferContent: '',
|
|
|
mes: '实验环境准备中'
|
|
|
};
|
|
|
var Types = /*#__PURE__*/function (Types) {
|
|
|
Types[Types["SET_LOADING"] = 0] = "SET_LOADING";
|
|
|
Types[Types["SET_IS_LARGE"] = 1] = "SET_IS_LARGE";
|
|
|
Types[Types["SET_MES"] = 2] = "SET_MES";
|
|
|
Types[Types["SET_STATE"] = 3] = "SET_STATE";
|
|
|
Types[Types["SHOW_CLIPBOARD_BOX"] = 4] = "SHOW_CLIPBOARD_BOX";
|
|
|
Types[Types["SET_TRANSFER_CONTENT"] = 5] = "SET_TRANSFER_CONTENT";
|
|
|
Types[Types["UPDATE_ALL"] = 6] = "UPDATE_ALL";
|
|
|
return Types;
|
|
|
}(Types || {});
|
|
|
function reducer(state, action) {
|
|
|
switch (action.type) {
|
|
|
case Types.SET_LOADING:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
loading: action.payload
|
|
|
});
|
|
|
case Types.SET_IS_LARGE:
|
|
|
return objectSpread2_default()({}, objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
isLarge: action.payload
|
|
|
}));
|
|
|
case Types.SET_MES:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
mes: action.payload
|
|
|
});
|
|
|
case Types.SET_STATE:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), action.payload);
|
|
|
case Types.SET_TRANSFER_CONTENT:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
transferContent: action.payload
|
|
|
});
|
|
|
case Types.SHOW_CLIPBOARD_BOX:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
showClipBoardBox: action.payload
|
|
|
});
|
|
|
case Types.UPDATE_ALL:
|
|
|
return objectSpread2_default()({
|
|
|
loading: state.loading
|
|
|
}, action.payload);
|
|
|
default:
|
|
|
throw new Error();
|
|
|
}
|
|
|
}
|
|
|
/* harmony default export */ var vnc_panel = (function (_ref) {
|
|
|
var vnc_url = _ref.vnc_url,
|
|
|
window_vnc_url = _ref.window_vnc_url,
|
|
|
linux_vnc = _ref.linux_vnc,
|
|
|
virtual_machine = _ref.virtual_machine,
|
|
|
taskData = _ref.taskData,
|
|
|
shixun_environment_id = _ref.shixun_environment_id,
|
|
|
tab_type = _ref.tab_type,
|
|
|
instance_startup_type = _ref.instance_startup_type,
|
|
|
index_tab = _ref.index_tab,
|
|
|
tpi_type = _ref.tpi_type;
|
|
|
var el = (0,_react_17_0_2_react.useRef)();
|
|
|
var guacaRef = (0,_react_17_0_2_react.useRef)();
|
|
|
var rfbRef = (0,_react_17_0_2_react.useRef)();
|
|
|
var roRef = (0,_react_17_0_2_react.useRef)();
|
|
|
var iframeRef = (0,_react_17_0_2_react.useRef)();
|
|
|
var passwordRef = (0,_react_17_0_2_react.useRef)();
|
|
|
var socketUrlRef = (0,_react_17_0_2_react.useRef)();
|
|
|
var reConnectRef = (0,_react_17_0_2_react.useRef)();
|
|
|
var _useReducer = (0,_react_17_0_2_react.useReducer)(reducer, initialState),
|
|
|
_useReducer2 = slicedToArray_default()(_useReducer, 2),
|
|
|
state = _useReducer2[0],
|
|
|
dispatch = _useReducer2[1];
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(0),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
linkNum = _useState2[0],
|
|
|
setLinkNum = _useState2[1];
|
|
|
var mes = state.mes,
|
|
|
loading = state.loading,
|
|
|
showClipBoardBox = state.showClipBoardBox,
|
|
|
isLarge = state.isLarge,
|
|
|
transferContent = state.transferContent;
|
|
|
var heartbeatTimerRef = (0,_react_17_0_2_react.useRef)();
|
|
|
var loadingRef = (0,_react_17_0_2_react.useRef)();
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)(0),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
percent = _useState4[0],
|
|
|
setPercent = _useState4[1];
|
|
|
var timeout = (0,_react_17_0_2_react.useRef)();
|
|
|
var params = (0,_umi_production_exports.useParams)();
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
return function () {
|
|
|
var _guacaRef$current, _guacaRef$current$dis;
|
|
|
(_guacaRef$current = guacaRef.current) === null || _guacaRef$current === void 0 || (_guacaRef$current$dis = _guacaRef$current.disconnect) === null || _guacaRef$current$dis === void 0 || _guacaRef$current$dis.call(_guacaRef$current);
|
|
|
clearTimeout(reConnectRef.current);
|
|
|
clearInterval(heartbeatTimerRef.current);
|
|
|
};
|
|
|
}, []);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
loadingRef.current = state.loading;
|
|
|
}, [state.loading]);
|
|
|
var fullChange = function fullChange() {
|
|
|
var _rfbRef$current;
|
|
|
if (instance_startup_type === 2) {
|
|
|
setTimeout(function () {
|
|
|
doResize();
|
|
|
}, 1500);
|
|
|
} else if ((rfbRef === null || rfbRef === void 0 || (_rfbRef$current = rfbRef.current) === null || _rfbRef$current === void 0 ? void 0 : _rfbRef$current.resizeSession) !== undefined) {
|
|
|
if ((0,fullscreen/* IsFull */.vp)()) {
|
|
|
rfbRef.current.resizeSession = true;
|
|
|
} else {
|
|
|
setTimeout(function () {
|
|
|
rfbRef.current.resizeSession = false;
|
|
|
}, 900);
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
document.addEventListener((0,fullscreen/* fullscreenChange */.gH)(), fullChange);
|
|
|
return function () {
|
|
|
document.removeEventListener((0,fullscreen/* fullscreenChange */.gH)(), fullChange);
|
|
|
};
|
|
|
}, []);
|
|
|
function onCancelClipboardBox() {
|
|
|
dispatch({
|
|
|
type: Types.SHOW_CLIPBOARD_BOX,
|
|
|
payload: false
|
|
|
});
|
|
|
}
|
|
|
function onResizeSet() {
|
|
|
dispatch({
|
|
|
type: Types.SET_IS_LARGE,
|
|
|
payload: !isLarge
|
|
|
});
|
|
|
}
|
|
|
function onLayout(rfb) {
|
|
|
if (el.current) {
|
|
|
roRef.current = new ResizeObserver_es/* default */.Z(function (entries) {
|
|
|
var _iterator = createForOfIteratorHelper_default()(entries),
|
|
|
_step;
|
|
|
try {
|
|
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
|
var entry = _step.value;
|
|
|
if (instance_startup_type === 2) {
|
|
|
doResize();
|
|
|
}
|
|
|
if (entry.target.offsetHeight > 0 || entry.target.offsetWidth > 0) {
|
|
|
setTimeout(function () {
|
|
|
rfb.scaleViewport = false;
|
|
|
// rfb?._eventHandlers?.windowResize()
|
|
|
}, 800);
|
|
|
}
|
|
|
}
|
|
|
} catch (err) {
|
|
|
_iterator.e(err);
|
|
|
} finally {
|
|
|
_iterator.f();
|
|
|
}
|
|
|
});
|
|
|
roRef.current.observe(el.current);
|
|
|
}
|
|
|
return roRef.current;
|
|
|
}
|
|
|
var getWindowVnc = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3() {
|
|
|
var _taskData$myshixun, _res$data;
|
|
|
var res, _res$data2, _res$data3, _res$data4;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
_context3.next = 2;
|
|
|
return (0,service/* startInit */.sA)((_taskData$myshixun = taskData.myshixun) === null || _taskData$myshixun === void 0 ? void 0 : _taskData$myshixun.identifier, objectSpread2_default()(objectSpread2_default()({}, params), {}, {
|
|
|
taskId: params.taskId,
|
|
|
shixun_environment_id: shixun_environment_id,
|
|
|
tab_type: tab_type
|
|
|
}));
|
|
|
case 2:
|
|
|
res = _context3.sent;
|
|
|
if (!(res !== null && res !== void 0 && (_res$data = res.data) !== null && _res$data !== void 0 && (_res$data = _res$data.data_list) !== null && _res$data !== void 0 && _res$data.length)) {
|
|
|
_context3.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
mediator/* default */.Z.publish('pod-restrict-data', {
|
|
|
identifier: res === null || res === void 0 || (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.identifier,
|
|
|
data_list: res === null || res === void 0 || (_res$data3 = res.data) === null || _res$data3 === void 0 ? void 0 : _res$data3.data_list
|
|
|
});
|
|
|
return _context3.abrupt("return", Promise.reject());
|
|
|
case 6:
|
|
|
if (!((res === null || res === void 0 ? void 0 : res.status) === -3)) {
|
|
|
_context3.next = 8;
|
|
|
break;
|
|
|
}
|
|
|
return _context3.abrupt("return", new Promise( /*#__PURE__*/function () {
|
|
|
var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2(resolve, reject) {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
modal/* default */.Z.confirm({
|
|
|
content: "检测到您已经开启了其他实验环境,请先关闭环境后,再连接",
|
|
|
okText: "立即关闭",
|
|
|
cancelText: "稍后关闭",
|
|
|
onOk: function () {
|
|
|
var _onOk = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
clearTimeout(timeout.current);
|
|
|
setPercent(0);
|
|
|
_context.next = 4;
|
|
|
return (0,service/* closeWindowsVnc */.fA)(params.taskId, res === null || res === void 0 ? void 0 : res.message);
|
|
|
case 4:
|
|
|
setLinkNum(linkNum + 1);
|
|
|
return _context.abrupt("return");
|
|
|
case 6:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
function onOk() {
|
|
|
return _onOk.apply(this, arguments);
|
|
|
}
|
|
|
return onOk;
|
|
|
}()
|
|
|
});
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return function (_x, _x2) {
|
|
|
return _ref3.apply(this, arguments);
|
|
|
};
|
|
|
}()));
|
|
|
case 8:
|
|
|
if (!((res === null || res === void 0 ? void 0 : res.status) === -1)) {
|
|
|
_context3.next = 10;
|
|
|
break;
|
|
|
}
|
|
|
throw new String(res === null || res === void 0 ? void 0 : res.message);
|
|
|
case 10:
|
|
|
if (!((res === null || res === void 0 ? void 0 : res.status) === 0)) {
|
|
|
_context3.next = 15;
|
|
|
break;
|
|
|
}
|
|
|
if (virtual_machine) {
|
|
|
(0,util/* setCookie */.d8)("PVEAuthCookie", res === null || res === void 0 || (_res$data4 = res.data) === null || _res$data4 === void 0 || (_res$data4 = _res$data4.cookie_options) === null || _res$data4 === void 0 ? void 0 : _res$data4.cookies_value, 1);
|
|
|
(0,util/* setCookie */.d8)("PVELangCookie", "zh_CN", 1);
|
|
|
}
|
|
|
mediator/* default */.Z.publish('update-windows-time', res === null || res === void 0 ? void 0 : res.data);
|
|
|
// mediator.publish('update-windows-time', {remaining_time: 98000})
|
|
|
mediator/* default */.Z.publish('send-tabs-result-data', objectSpread2_default()(objectSpread2_default()({}, res === null || res === void 0 ? void 0 : res.data), {}, {
|
|
|
index_tab: index_tab
|
|
|
}));
|
|
|
return _context3.abrupt("return", res);
|
|
|
case 15:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
}));
|
|
|
return function getWindowVnc() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
function onConnect() {
|
|
|
setPercent(100);
|
|
|
clearTimeout(timeout.current);
|
|
|
setTimeout(function () {
|
|
|
rfbRef.current.resizeSession = false;
|
|
|
dispatch({
|
|
|
type: Types.SET_LOADING,
|
|
|
payload: false
|
|
|
});
|
|
|
}, 1300);
|
|
|
clearTimeout(heartbeatTimerRef.current);
|
|
|
// heartbeatTimerRef.current = setInterval(() => {
|
|
|
// sendRFBMessage();
|
|
|
// },10 * 1000)
|
|
|
// mediator.unsubscribe(`send-ctrl-alt-delete-${index_tab}`)
|
|
|
// mediator.subscribe(`send-ctrl-alt-delete-${index_tab}`, () => {
|
|
|
// rfbRef.current?.sendCtrlAltDel()
|
|
|
// message.success('发送成功')
|
|
|
// })
|
|
|
}
|
|
|
var toConnect = function toConnect() {
|
|
|
rfbRef.current = new rfb/* default */.Z(el.current, socketUrlRef.current, {
|
|
|
credentials: {
|
|
|
password: passwordRef.current
|
|
|
},
|
|
|
wsProtocols: ['binary'],
|
|
|
resize: "scale",
|
|
|
show_dot: true
|
|
|
});
|
|
|
rfbRef.current.removeEventListener('disconnect', onDisconnect);
|
|
|
rfbRef.current.removeEventListener('connect', onConnect);
|
|
|
rfbRef.current.removeEventListener('clipboard', onClipboardReceive);
|
|
|
window.rfbs2 = rfbRef.current;
|
|
|
roRef.current = onLayout(rfbRef.current);
|
|
|
rfbRef.current.viewOnly = params.view_only || false;
|
|
|
if (window_vnc_url) {
|
|
|
rfbRef.current.scaleViewport = true;
|
|
|
} else {
|
|
|
rfbRef.current.scaleViewport = params.scale || false;
|
|
|
}
|
|
|
rfbRef.current.scaleViewport = params.scale || true;
|
|
|
rfbRef.current.showDotCursor = true;
|
|
|
rfbRef.current.resizeSession = true;
|
|
|
rfbRef.current.addEventListener('disconnect', onDisconnect);
|
|
|
rfbRef.current.addEventListener('connect', onConnect);
|
|
|
rfbRef.current.addEventListener('clipboard', onClipboardReceive);
|
|
|
};
|
|
|
function onClipboardReceive(e) {
|
|
|
var rs = unicodeUnEscape(e.detail.text);
|
|
|
dispatch({
|
|
|
type: Types.SET_TRANSFER_CONTENT,
|
|
|
payload: rs
|
|
|
});
|
|
|
}
|
|
|
function onDisconnect() {
|
|
|
if (window_vnc_url) {
|
|
|
dispatch({
|
|
|
type: Types.SET_LOADING,
|
|
|
payload: true
|
|
|
});
|
|
|
setLinkNum(linkNum + 1);
|
|
|
} else {
|
|
|
clearTimeout(reConnectRef.current);
|
|
|
if (loadingRef.current) return;
|
|
|
reConnectRef.current = setTimeout(function () {
|
|
|
setLinkNum(linkNum + 1);
|
|
|
}, 6000);
|
|
|
}
|
|
|
setTimeout(function () {
|
|
|
var _rfbRef$current2, _rfbRef$current2$conn;
|
|
|
(_rfbRef$current2 = rfbRef.current) === null || _rfbRef$current2 === void 0 || (_rfbRef$current2$conn = _rfbRef$current2.connect) === null || _rfbRef$current2$conn === void 0 || _rfbRef$current2$conn.call(_rfbRef$current2);
|
|
|
}, 3000);
|
|
|
}
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
mediator/* default */.Z.subscribe("reset-linux-windows-vnc-".concat(index_tab), function () {
|
|
|
setLinkNum(linkNum + 1);
|
|
|
});
|
|
|
if ((window_vnc_url || vnc_url || linux_vnc || virtual_machine) && el.current) {
|
|
|
clearTimeout(timeout.current);
|
|
|
if (instance_startup_type === 2) {
|
|
|
doResize();
|
|
|
}
|
|
|
new Promise( /*#__PURE__*/asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee4() {
|
|
|
var params, res, _res$data5, _res$data6, character, _res$data7, _res$data8, urlParser, protocol, searchParams, host, search, searchUrl;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee4$(_context4) {
|
|
|
while (1) switch (_context4.prev = _context4.next) {
|
|
|
case 0:
|
|
|
params = getJsonFromUrl();
|
|
|
_context4.next = 3;
|
|
|
return getWindowVnc();
|
|
|
case 3:
|
|
|
res = _context4.sent;
|
|
|
if (!(linux_vnc || virtual_machine)) {
|
|
|
_context4.next = 11;
|
|
|
break;
|
|
|
}
|
|
|
character = res !== null && res !== void 0 && (_res$data5 = res.data) !== null && _res$data5 !== void 0 && (_res$data5 = _res$data5.link_url) !== null && _res$data5 !== void 0 && _res$data5.includes('?') ? "&" : "?";
|
|
|
iframeRef.current.src = (res === null || res === void 0 || (_res$data6 = res.data) === null || _res$data6 === void 0 ? void 0 : _res$data6.link_url) + character + 'time=' + Date.now();
|
|
|
dispatch({
|
|
|
type: Types.SET_LOADING,
|
|
|
payload: false
|
|
|
});
|
|
|
return _context4.abrupt("return");
|
|
|
case 11:
|
|
|
if (window_vnc_url) {
|
|
|
passwordRef.current = 'Edu123';
|
|
|
socketUrlRef.current = decodeURIComponent(res === null || res === void 0 || (_res$data7 = res.data) === null || _res$data7 === void 0 ? void 0 : _res$data7.link_url);
|
|
|
} else {
|
|
|
urlParser = new URL(decodeURIComponent(res === null || res === void 0 || (_res$data8 = res.data) === null || _res$data8 === void 0 ? void 0 : _res$data8.link_url)); //no IE11 support
|
|
|
protocol = urlParser.protocol, searchParams = urlParser.searchParams, host = urlParser.host, search = urlParser.search;
|
|
|
searchUrl = (0,util/* parseUrl */.en)(search);
|
|
|
passwordRef.current = searchParams.get('password');
|
|
|
socketUrlRef.current = "".concat(protocol === 'https:' ? 'wss' : 'ws', "://").concat(host, "/").concat(searchUrl.path || 'websockify');
|
|
|
}
|
|
|
case 12:
|
|
|
if (!(instance_startup_type === 2)) {
|
|
|
_context4.next = 15;
|
|
|
break;
|
|
|
}
|
|
|
setTimeout(function () {
|
|
|
var _taskData$myshixun2;
|
|
|
onLayout();
|
|
|
iframeRef.current.style.cssText = iframeRef.current.style.cssText + "width:1920px;height:1080px;position:initial";
|
|
|
iframeRef.current.src = "/rdp.html?tpiId=".concat(taskData === null || taskData === void 0 || (_taskData$myshixun2 = taskData.myshixun) === null || _taskData$myshixun2 === void 0 ? void 0 : _taskData$myshixun2.id, "&envId=").concat(shixun_environment_id, "&tpiType=").concat(tpi_type);
|
|
|
dispatch({
|
|
|
type: Types.SET_LOADING,
|
|
|
payload: false
|
|
|
});
|
|
|
}, 5000);
|
|
|
return _context4.abrupt("return");
|
|
|
case 15:
|
|
|
toConnect();
|
|
|
case 16:
|
|
|
case "end":
|
|
|
return _context4.stop();
|
|
|
}
|
|
|
}, _callee4);
|
|
|
})));
|
|
|
var unsub = mediator/* default */.Z.subscribe("vnc-reset-".concat(index_tab), function (text) {
|
|
|
if (text === '取消') {
|
|
|
dispatch({
|
|
|
type: Types.SET_LOADING,
|
|
|
payload: false
|
|
|
});
|
|
|
return;
|
|
|
}
|
|
|
setPercent(0);
|
|
|
dispatch({
|
|
|
type: Types.SET_STATE,
|
|
|
payload: {
|
|
|
loading: true,
|
|
|
mes: text || '实验环境重置中'
|
|
|
}
|
|
|
});
|
|
|
});
|
|
|
var unsub2 = mediator/* default */.Z.subscribe("send-ctrl-alt-delete-".concat(index_tab), function () {
|
|
|
var _rfbRef$current3;
|
|
|
(_rfbRef$current3 = rfbRef.current) === null || _rfbRef$current3 === void 0 || _rfbRef$current3.sendCtrlAltDel();
|
|
|
message/* default */.ZP.success('发送成功');
|
|
|
});
|
|
|
var unSub3 = mediator/* default */.Z.subscribe("show-clipboard-box-".concat(index_tab), function () {
|
|
|
dispatch({
|
|
|
type: Types.SHOW_CLIPBOARD_BOX,
|
|
|
payload: true
|
|
|
});
|
|
|
});
|
|
|
setPercent(0);
|
|
|
return function () {
|
|
|
var _rfbRef$current4, _rfbRef$current5, _rfbRef$current6, _roRef$current;
|
|
|
(_rfbRef$current4 = rfbRef.current) === null || _rfbRef$current4 === void 0 || _rfbRef$current4.removeEventListener('disconnect', onDisconnect);
|
|
|
(_rfbRef$current5 = rfbRef.current) === null || _rfbRef$current5 === void 0 || _rfbRef$current5.removeEventListener('connect', onConnect);
|
|
|
(_rfbRef$current6 = rfbRef.current) === null || _rfbRef$current6 === void 0 || _rfbRef$current6.removeEventListener('clipboard', onClipboardReceive);
|
|
|
unsub();
|
|
|
unsub2();
|
|
|
unSub3();
|
|
|
el.current && ((_roRef$current = roRef.current) === null || _roRef$current === void 0 ? void 0 : _roRef$current.unobserve(el.current));
|
|
|
};
|
|
|
}
|
|
|
}, [vnc_url, window_vnc_url, linux_vnc, linkNum, shixun_environment_id, tab_type]);
|
|
|
function sendRFBMessage() {
|
|
|
var _rfbRef$current7, _rfbRef$current7$send;
|
|
|
(_rfbRef$current7 = rfbRef.current) === null || _rfbRef$current7 === void 0 || (_rfbRef$current7$send = _rfbRef$current7.sendKey) === null || _rfbRef$current7$send === void 0 || _rfbRef$current7$send.call(_rfbRef$current7, 135);
|
|
|
}
|
|
|
function clipboardSend(_x3) {
|
|
|
return _clipboardSend.apply(this, arguments);
|
|
|
}
|
|
|
function _clipboardSend() {
|
|
|
_clipboardSend = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee5(content) {
|
|
|
var s, res, _rfbRef$current8;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee5$(_context5) {
|
|
|
while (1) switch (_context5.prev = _context5.next) {
|
|
|
case 0:
|
|
|
if (!vnc_url) {
|
|
|
_context5.next = 8;
|
|
|
break;
|
|
|
}
|
|
|
s = content;
|
|
|
_context5.next = 4;
|
|
|
return (0,fetch/* default */.ZP)("/api/tasks/".concat(params.taskId, "/vnc_paste.json"), {
|
|
|
method: "post",
|
|
|
body: {
|
|
|
content: Base64.encode(s),
|
|
|
shixun_environment_id: shixun_environment_id
|
|
|
}
|
|
|
});
|
|
|
case 4:
|
|
|
res = _context5.sent;
|
|
|
if ((res === null || res === void 0 ? void 0 : res.status) === 0) {
|
|
|
dispatch({
|
|
|
type: Types.SET_TRANSFER_CONTENT,
|
|
|
payload: content
|
|
|
});
|
|
|
message/* default */.ZP.success('保存成功!你可以在实验环境中粘贴该内容');
|
|
|
onCancelClipboardBox();
|
|
|
}
|
|
|
_context5.next = 12;
|
|
|
break;
|
|
|
case 8:
|
|
|
(_rfbRef$current8 = rfbRef.current) === null || _rfbRef$current8 === void 0 || _rfbRef$current8.clipboardPasteFrom(content);
|
|
|
dispatch({
|
|
|
type: Types.SET_TRANSFER_CONTENT,
|
|
|
payload: content
|
|
|
});
|
|
|
message/* default */.ZP.success('保存成功!你可以在实验环境中粘贴该内容');
|
|
|
onCancelClipboardBox();
|
|
|
case 12:
|
|
|
case "end":
|
|
|
return _context5.stop();
|
|
|
}
|
|
|
}, _callee5);
|
|
|
}));
|
|
|
return _clipboardSend.apply(this, arguments);
|
|
|
}
|
|
|
function doResize() {
|
|
|
// function doResize(event, ui) {
|
|
|
var scale, origin;
|
|
|
scale = Math.min(document.getElementById("task-right-panel").clientWidth / 1920, document.getElementById("task-right-panel").clientHeight / 1260);
|
|
|
iframeRef.current.parentElement.className = "wh1080p";
|
|
|
iframeRef.current.parentElement.style.cssText = "transform:scale(".concat(scale, ");transform-origin:center center");
|
|
|
el.current.style.cssText = "translate(-50%, -50%) " + "scale(" + scale + ")";
|
|
|
}
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (percent == 0) {
|
|
|
clearTimeout(timeout.current);
|
|
|
increase();
|
|
|
}
|
|
|
}, [percent]);
|
|
|
var increase = function increase() {
|
|
|
if (percent > 99) {
|
|
|
percent = 99;
|
|
|
} else {
|
|
|
percent = percent + 1;
|
|
|
timeout.current = setTimeout(function () {
|
|
|
increase();
|
|
|
}, 1500);
|
|
|
}
|
|
|
if (percent < 100) setPercent(percent);
|
|
|
};
|
|
|
var showIframe = (0,_react_17_0_2_react.useMemo)(function () {
|
|
|
if (loading) {
|
|
|
return 'none';
|
|
|
}
|
|
|
if (linux_vnc || virtual_machine || window_vnc_url && instance_startup_type === 2) {
|
|
|
return 'block';
|
|
|
} else {
|
|
|
return 'none';
|
|
|
}
|
|
|
}, [linux_vnc, loading, virtual_machine, window_vnc_url]);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(_react_17_0_2_react.Fragment, {
|
|
|
children: [isLarge && /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
className: "btn-vnc-resize",
|
|
|
onClick: onResizeSet,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-tuichuquanping"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
style: {
|
|
|
width: "100%",
|
|
|
height: "100%",
|
|
|
overflow: "hidden",
|
|
|
position: "absolute",
|
|
|
display: showIframe === "block" ? "flex" : "none",
|
|
|
alignItems: "center",
|
|
|
justifyContent: "center",
|
|
|
zIndex: 6
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("iframe", {
|
|
|
style: {
|
|
|
position: isLarge ? "fixed" : "absolute",
|
|
|
left: 0,
|
|
|
top: isLarge ? 40 : 0,
|
|
|
width: "100%",
|
|
|
height: "calc(100% - ".concat(isLarge ? "100px" : "0px", ")")
|
|
|
},
|
|
|
frameBorder: "0",
|
|
|
ref: iframeRef,
|
|
|
allowFullScreen: true
|
|
|
})
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
style: {
|
|
|
position: isLarge ? "fixed" : "absolute",
|
|
|
left: 0,
|
|
|
top: isLarge ? 40 : 0,
|
|
|
zIndex: 5,
|
|
|
width: "100%",
|
|
|
height: "calc(100% - ".concat(isLarge ? "100px" : "0px", ")")
|
|
|
},
|
|
|
className: "".concat(window_vnc_url ? "vnc-panel-wrapper-windows" : "vnc-panel-wrapper", " ").concat(isLarge ? 'full-screen' : ''),
|
|
|
children: [loading ? /*#__PURE__*/(0,jsx_runtime.jsx)(Spinner/* default */.Z, {
|
|
|
message: mes,
|
|
|
style: {
|
|
|
color: '#0152d9'
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "tc",
|
|
|
style: {
|
|
|
width: 500,
|
|
|
margin: "0 auto",
|
|
|
color: "#FFF"
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(progress/* default */.Z, {
|
|
|
percent: percent,
|
|
|
format: function format(p) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
className: "c-white",
|
|
|
children: [p, "%"]
|
|
|
});
|
|
|
}
|
|
|
})
|
|
|
})
|
|
|
}) : null, /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
ref: el,
|
|
|
className: "vnc-panel ".concat(loading ? "hidden zIndexf1" : "animated fadeIn")
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(components_modal/* default */.Z, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
title: "\u590D\u5236\u7C98\u8D34",
|
|
|
centered: true,
|
|
|
maskClosable: false,
|
|
|
open: showClipBoardBox,
|
|
|
onCancel: onCancelClipboardBox,
|
|
|
footer: null,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(clipboard_box, {
|
|
|
onCancel: onCancelClipboardBox,
|
|
|
onSave: clipboardSend,
|
|
|
content: transferContent
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 69497:
|
|
|
/*!***********************************************************!*\
|
|
|
!*** ./src/pages/tasks/xterm-panel/index.jsx + 1 modules ***!
|
|
|
\***********************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
Z: function() { return /* binding */ xterm_panel; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/regeneratorRuntime.js
|
|
|
var regeneratorRuntime = __webpack_require__(7557);
|
|
|
var regeneratorRuntime_default = /*#__PURE__*/__webpack_require__.n(regeneratorRuntime);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/objectSpread2.js
|
|
|
var objectSpread2 = __webpack_require__(82242);
|
|
|
var objectSpread2_default = /*#__PURE__*/__webpack_require__.n(objectSpread2);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/asyncToGenerator.js
|
|
|
var asyncToGenerator = __webpack_require__(41498);
|
|
|
var asyncToGenerator_default = /*#__PURE__*/__webpack_require__.n(asyncToGenerator);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/createForOfIteratorHelper.js
|
|
|
var createForOfIteratorHelper = __webpack_require__(91232);
|
|
|
var createForOfIteratorHelper_default = /*#__PURE__*/__webpack_require__.n(createForOfIteratorHelper);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/slicedToArray.js
|
|
|
var slicedToArray = __webpack_require__(79800);
|
|
|
var slicedToArray_default = /*#__PURE__*/__webpack_require__.n(slicedToArray);
|
|
|
// EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/index.js
|
|
|
var _react_17_0_2_react = __webpack_require__(59301);
|
|
|
// EXTERNAL MODULE: ./node_modules/_js-base64@2.6.4@js-base64/base64.js
|
|
|
var base64 = __webpack_require__(24334);
|
|
|
// EXTERNAL MODULE: ./node_modules/_xterm@4.8.1@xterm/lib/xterm.js
|
|
|
var xterm = __webpack_require__(34376);
|
|
|
// EXTERNAL MODULE: ./node_modules/_xterm@4.8.1@xterm/css/xterm.css
|
|
|
var css_xterm = __webpack_require__(86730);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/xterm-panel/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var xterm_panelmodules = ({"xterm-panel":"xterm-panel___XA0p9"});
|
|
|
// EXTERNAL MODULE: ./src/components/mediator.js
|
|
|
var mediator = __webpack_require__(74692);
|
|
|
// EXTERNAL MODULE: ./node_modules/_resize-observer-polyfill@1.5.1@resize-observer-polyfill/dist/ResizeObserver.es.js
|
|
|
var ResizeObserver_es = __webpack_require__(76374);
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/service/index.js
|
|
|
var service = __webpack_require__(57014);
|
|
|
// EXTERNAL MODULE: ./src/.umi-production/exports.ts
|
|
|
var _umi_production_exports = __webpack_require__(3634);
|
|
|
// EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/jsx-runtime.js
|
|
|
var jsx_runtime = __webpack_require__(37712);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/xterm-panel/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var TimeTicket = 30000;
|
|
|
|
|
|
//建立 websockt 来交互
|
|
|
//根据容器大小计算行数和列数并做到自适应
|
|
|
//socket 与 term 需要分开初始化 因为socket 可能重置连接
|
|
|
//mediator 监听消息,如果和id匹配,则建立连接,重置,或关闭连接
|
|
|
|
|
|
/* harmony default export */ var xterm_panel = (function (_ref) {
|
|
|
var _ref$itemData = _ref.itemData,
|
|
|
itemData = _ref$itemData === void 0 ? {} : _ref$itemData,
|
|
|
game = _ref.game,
|
|
|
myshixun = _ref.myshixun;
|
|
|
var params = (0,_umi_production_exports.useParams)();
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(null),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
term = _useState2[0],
|
|
|
setTerm = _useState2[1];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)({}),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
sshConfigData = _useState4[0],
|
|
|
setSshConfigData = _useState4[1];
|
|
|
var link_url = sshConfigData.link_url,
|
|
|
password = sshConfigData.password,
|
|
|
port = sshConfigData.port;
|
|
|
var el = (0,_react_17_0_2_react.useRef)();
|
|
|
var socket = (0,_react_17_0_2_react.useRef)();
|
|
|
var isFirstConnected = (0,_react_17_0_2_react.useRef)(false);
|
|
|
var shixun_environment_id = itemData.shixun_environment_id,
|
|
|
position = itemData.position,
|
|
|
tab_type = itemData.tab_type,
|
|
|
index_tab = itemData.index_tab;
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
getInitData();
|
|
|
}, []);
|
|
|
function getColsAndRows(width, height, term) {
|
|
|
var w = term._core._renderService.dimensions.actualCellWidth || 9.5;
|
|
|
var h = term._core._renderService.dimensions.actualCellHeight || 18;
|
|
|
var rows = Math.floor(height / h);
|
|
|
var cols = Math.floor(width / w);
|
|
|
return [cols, rows];
|
|
|
}
|
|
|
function onLayout(term, el) {
|
|
|
var ro = new ResizeObserver_es/* default */.Z(function (entries) {
|
|
|
var _iterator = createForOfIteratorHelper_default()(entries),
|
|
|
_step;
|
|
|
try {
|
|
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
|
var entry = _step.value;
|
|
|
if (entry.target.offsetHeight > 0 || entry.target.offsetWidth > 0) {
|
|
|
var _getColsAndRows = getColsAndRows(entry.target.offsetWidth, entry.target.offsetHeight, term),
|
|
|
_getColsAndRows2 = slicedToArray_default()(_getColsAndRows, 2),
|
|
|
cols = _getColsAndRows2[0],
|
|
|
rows = _getColsAndRows2[1];
|
|
|
console.log('cols, rows', cols, rows);
|
|
|
mediator/* default */.Z.publish("ssh-xterm-resize-".concat(index_tab), {
|
|
|
columns: cols,
|
|
|
rows: rows,
|
|
|
width: entry.target.offsetWidth,
|
|
|
height: entry.target.offsetHeight
|
|
|
});
|
|
|
term.resize(cols, rows);
|
|
|
var data1 = base64.Base64.decode('IA==');
|
|
|
var data = base64.Base64.decode('CBtbSw==');
|
|
|
term.write(data1);
|
|
|
term.write(data);
|
|
|
}
|
|
|
}
|
|
|
} catch (err) {
|
|
|
_iterator.e(err);
|
|
|
} finally {
|
|
|
_iterator.f();
|
|
|
}
|
|
|
});
|
|
|
ro.observe(el);
|
|
|
return ro;
|
|
|
}
|
|
|
function getInitData() {
|
|
|
return _getInitData.apply(this, arguments);
|
|
|
} //term init
|
|
|
function _getInitData() {
|
|
|
_getInitData = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3() {
|
|
|
var _response$data;
|
|
|
var response, _response$data2, _response$data3;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
_context3.next = 2;
|
|
|
return (0,service/* startInit */.sA)(myshixun === null || myshixun === void 0 ? void 0 : myshixun.identifier, {
|
|
|
shixun_environment_id: shixun_environment_id,
|
|
|
tab_type: tab_type,
|
|
|
game_id: game.id
|
|
|
});
|
|
|
case 2:
|
|
|
response = _context3.sent;
|
|
|
if (!(response !== null && response !== void 0 && (_response$data = response.data) !== null && _response$data !== void 0 && (_response$data = _response$data.data_list) !== null && _response$data !== void 0 && _response$data.length)) {
|
|
|
_context3.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
mediator/* default */.Z.publish('pod-restrict-data', {
|
|
|
identifier: response === null || response === void 0 || (_response$data2 = response.data) === null || _response$data2 === void 0 ? void 0 : _response$data2.identifier,
|
|
|
data_list: response === null || response === void 0 || (_response$data3 = response.data) === null || _response$data3 === void 0 ? void 0 : _response$data3.data_list
|
|
|
});
|
|
|
return _context3.abrupt("return");
|
|
|
case 6:
|
|
|
if (!((response === null || response === void 0 ? void 0 : response.status) === -3)) {
|
|
|
_context3.next = 8;
|
|
|
break;
|
|
|
}
|
|
|
return _context3.abrupt("return", new Promise( /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2(resolve, reject) {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
Modal.confirm({
|
|
|
content: '检测到您已经开启了其他实验环境,请先关闭环境后,再连接',
|
|
|
okText: '立即关闭',
|
|
|
cancelText: '稍后关闭',
|
|
|
onOk: function () {
|
|
|
var _onOk = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.next = 2;
|
|
|
return closeWindowsVnc(params.taskId, response === null || response === void 0 ? void 0 : response.message);
|
|
|
case 2:
|
|
|
init();
|
|
|
return _context.abrupt("return");
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
function onOk() {
|
|
|
return _onOk.apply(this, arguments);
|
|
|
}
|
|
|
return onOk;
|
|
|
}()
|
|
|
});
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return function (_x, _x2) {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}()));
|
|
|
case 8:
|
|
|
if ((response === null || response === void 0 ? void 0 : response.status) === 0) {
|
|
|
mediator/* default */.Z.publish('update-windows-time', response === null || response === void 0 ? void 0 : response.data);
|
|
|
mediator/* default */.Z.publish('send-tabs-result-data', objectSpread2_default()(objectSpread2_default()({}, response === null || response === void 0 ? void 0 : response.data), {}, {
|
|
|
index_tab: index_tab
|
|
|
}));
|
|
|
setSshConfigData(response.data);
|
|
|
setTimeout(function () {
|
|
|
return mediator/* default */.Z.publish("create-socket-".concat(index_tab));
|
|
|
}, 300);
|
|
|
}
|
|
|
case 9:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
}));
|
|
|
return _getInitData.apply(this, arguments);
|
|
|
}
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (el.current && link_url) {
|
|
|
var _term = new xterm.Terminal({
|
|
|
fontSize: 16,
|
|
|
rendererType: 'dom'
|
|
|
});
|
|
|
_term.open(el.current);
|
|
|
_term.onData(function (data) {
|
|
|
if (socket.current) {
|
|
|
if (socket.current.readyState === 1) {
|
|
|
socket.current.send(JSON.stringify({
|
|
|
tp: 'client',
|
|
|
data: data
|
|
|
}));
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
_term.write('Connecting...');
|
|
|
setTerm(_term);
|
|
|
var ro = onLayout(_term, el.current);
|
|
|
return function () {
|
|
|
_term.dispose();
|
|
|
el.current && (ro === null || ro === void 0 ? void 0 : ro.unobserve(el.current));
|
|
|
};
|
|
|
}
|
|
|
}, [link_url, el.current]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (term && link_url) {
|
|
|
var createSocket = function createSocket() {
|
|
|
var socketInstance = new WebSocket(link_url);
|
|
|
socket.current = socketInstance;
|
|
|
socketInstance.onopen = function () {
|
|
|
var container = term.element.parentElement;
|
|
|
if (container) {
|
|
|
var width = container.offsetWidth;
|
|
|
var height = container.offsetHeight;
|
|
|
console.log('init', {
|
|
|
tp: 'init',
|
|
|
data: objectSpread2_default()(objectSpread2_default()({}, sshConfigData), {}, {
|
|
|
secret: password,
|
|
|
width: width,
|
|
|
height: height,
|
|
|
rows: term.rows,
|
|
|
columns: term.cols
|
|
|
})
|
|
|
});
|
|
|
socketInstance.send(JSON.stringify({
|
|
|
tp: 'init',
|
|
|
data: objectSpread2_default()(objectSpread2_default()({}, sshConfigData), {}, {
|
|
|
secret: password,
|
|
|
width: width,
|
|
|
height: height,
|
|
|
rows: term.rows,
|
|
|
columns: term.cols
|
|
|
})
|
|
|
}));
|
|
|
}
|
|
|
term.focus();
|
|
|
};
|
|
|
socketInstance.onerror = function (error) {
|
|
|
console.log('------in socket error----', error, socketInstance, link_url);
|
|
|
};
|
|
|
socketInstance.onmessage = function (event) {
|
|
|
if (!isFirstConnected.current) {
|
|
|
term.write('\r');
|
|
|
// term.focus()
|
|
|
setTimeout(function () {
|
|
|
// term.clear();
|
|
|
}, 1000);
|
|
|
}
|
|
|
isFirstConnected.current = true;
|
|
|
console.log('event:', event);
|
|
|
var data = base64.Base64.decode(event.data.toString());
|
|
|
var w = term._core._renderService.dimensions.actualCellWidth || 9.5;
|
|
|
console.log('data:', data, w, term);
|
|
|
term.write(data);
|
|
|
};
|
|
|
var tid = setInterval(function () {
|
|
|
if (socket.current) {
|
|
|
var _socket$current;
|
|
|
(_socket$current = socket.current) === null || _socket$current === void 0 || _socket$current.send(JSON.stringify({
|
|
|
tp: 'h'
|
|
|
}));
|
|
|
}
|
|
|
}, TimeTicket);
|
|
|
socketInstance.onclose = function (evt) {
|
|
|
if (tid) {
|
|
|
clearInterval(tid);
|
|
|
}
|
|
|
console.log(tid, 'tid', index_tab);
|
|
|
term.write('\r\nconnection closed');
|
|
|
setTimeout(function () {
|
|
|
createSocket();
|
|
|
}, 10 * 1000);
|
|
|
};
|
|
|
};
|
|
|
var unSubCreate = mediator/* default */.Z.subscribe("create-socket-".concat(index_tab), function () {
|
|
|
createSocket();
|
|
|
});
|
|
|
var unSubResize = mediator/* default */.Z.subscribe("ssh-xterm-resize-".concat(index_tab), function (option) {
|
|
|
if (socket.current && socket.current.readyState === 1) {
|
|
|
socket.current.send(JSON.stringify({
|
|
|
tp: 'resize',
|
|
|
data: objectSpread2_default()({}, option)
|
|
|
}));
|
|
|
}
|
|
|
});
|
|
|
return function () {
|
|
|
unSubCreate();
|
|
|
unSubResize();
|
|
|
if (socket.current) {
|
|
|
socket.current.close();
|
|
|
isFirstConnected.current = false;
|
|
|
}
|
|
|
};
|
|
|
}
|
|
|
}, [term, link_url, port]);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
ref: el,
|
|
|
className: xterm_panelmodules['xterm-panel'],
|
|
|
children: !link_url ? /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
style: {
|
|
|
color: '#fff'
|
|
|
},
|
|
|
children: "\u6B63\u5728\u8FDE\u63A5\u547D\u4EE4\u884C\u670D\u52A1..."
|
|
|
}) : null
|
|
|
});
|
|
|
});
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 52988:
|
|
|
/*!********************************************!*\
|
|
|
!*** ./src/utils/hooks/useRemindModal.tsx ***!
|
|
|
\********************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
|
/* harmony export */ _: function() { return /* binding */ useRemindModal; }
|
|
|
/* harmony export */ });
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_local_v9_test4_node_modules_babel_runtime_7_23_6_babel_runtime_helpers_createForOfIteratorHelper_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/createForOfIteratorHelper.js */ 91232);
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_local_v9_test4_node_modules_babel_runtime_7_23_6_babel_runtime_helpers_createForOfIteratorHelper_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_root_workspace_ppte5yg23_local_v9_test4_node_modules_babel_runtime_7_23_6_babel_runtime_helpers_createForOfIteratorHelper_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ 59301);
|
|
|
/* harmony import */ var antd__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! antd */ 43418);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//只需要left_time和exercise_events参数,实际上传进来的answerData还有很多其它的属性
|
|
|
|
|
|
var useRemindModal = function useRemindModal(answerData) {
|
|
|
var _answerData$exercise6, _answerData$exercise7;
|
|
|
var countDownRefArr = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)([]);
|
|
|
var clearCountdownTimeout = function clearCountdownTimeout() {
|
|
|
var _iterator = _root_workspace_ppte5yg23_local_v9_test4_node_modules_babel_runtime_7_23_6_babel_runtime_helpers_createForOfIteratorHelper_js__WEBPACK_IMPORTED_MODULE_0___default()(countDownRefArr.current),
|
|
|
_step;
|
|
|
try {
|
|
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
|
var id = _step.value;
|
|
|
clearTimeout(id);
|
|
|
}
|
|
|
} catch (err) {
|
|
|
_iterator.e(err);
|
|
|
} finally {
|
|
|
_iterator.f();
|
|
|
}
|
|
|
countDownRefArr.current = [];
|
|
|
};
|
|
|
(0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function () {
|
|
|
var _answerData$exercise, _answerData$exercise2;
|
|
|
clearCountdownTimeout();
|
|
|
if (answerData !== null && answerData !== void 0 && (_answerData$exercise = answerData.exercise) !== null && _answerData$exercise !== void 0 && _answerData$exercise.left_time && (answerData === null || answerData === void 0 || (_answerData$exercise2 = answerData.exercise) === null || _answerData$exercise2 === void 0 || (_answerData$exercise2 = _answerData$exercise2.exercise_events) === null || _answerData$exercise2 === void 0 ? void 0 : _answerData$exercise2.length) > 0) {
|
|
|
var _answerData$exercise3;
|
|
|
var _iterator2 = _root_workspace_ppte5yg23_local_v9_test4_node_modules_babel_runtime_7_23_6_babel_runtime_helpers_createForOfIteratorHelper_js__WEBPACK_IMPORTED_MODULE_0___default()(answerData === null || answerData === void 0 || (_answerData$exercise3 = answerData.exercise) === null || _answerData$exercise3 === void 0 ? void 0 : _answerData$exercise3.exercise_events),
|
|
|
_step2;
|
|
|
try {
|
|
|
var _loop = function _loop() {
|
|
|
var _answerData$exercise4;
|
|
|
var eventItem = _step2.value;
|
|
|
if ((answerData === null || answerData === void 0 || (_answerData$exercise4 = answerData.exercise) === null || _answerData$exercise4 === void 0 ? void 0 : _answerData$exercise4.left_time) > (eventItem === null || eventItem === void 0 ? void 0 : eventItem.reminder_time) * 60) {
|
|
|
var _answerData$exercise5;
|
|
|
var timeoutId = setTimeout(function () {
|
|
|
antd__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z.info({
|
|
|
content: "".concat(eventItem === null || eventItem === void 0 ? void 0 : eventItem.reminder_content),
|
|
|
icon: null,
|
|
|
title: '提示',
|
|
|
centered: true,
|
|
|
okText: "知道了"
|
|
|
});
|
|
|
}, ((answerData === null || answerData === void 0 || (_answerData$exercise5 = answerData.exercise) === null || _answerData$exercise5 === void 0 ? void 0 : _answerData$exercise5.left_time) - (eventItem === null || eventItem === void 0 ? void 0 : eventItem.reminder_time) * 60) * 1000);
|
|
|
countDownRefArr.current.push(timeoutId);
|
|
|
}
|
|
|
};
|
|
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
|
_loop();
|
|
|
}
|
|
|
} catch (err) {
|
|
|
_iterator2.e(err);
|
|
|
} finally {
|
|
|
_iterator2.f();
|
|
|
}
|
|
|
}
|
|
|
}, [answerData === null || answerData === void 0 || (_answerData$exercise6 = answerData.exercise) === null || _answerData$exercise6 === void 0 ? void 0 : _answerData$exercise6.left_time, answerData === null || answerData === void 0 || (_answerData$exercise7 = answerData.exercise) === null || _answerData$exercise7 === void 0 ? void 0 : _answerData$exercise7.exercise_events]);
|
|
|
return clearCountdownTimeout;
|
|
|
};
|
|
|
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 35567:
|
|
|
/*!******************************!*\
|
|
|
!*** ./src/utils/urlTool.ts ***!
|
|
|
\******************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
|
/* harmony export */ G: function() { return /* binding */ fromStore; },
|
|
|
/* harmony export */ t: function() { return /* binding */ toStore; }
|
|
|
/* harmony export */ });
|
|
|
/* harmony import */ var store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! store */ 7062);
|
|
|
/* harmony import */ var store__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(store__WEBPACK_IMPORTED_MODULE_0__);
|
|
|
var isDev = (/* unused pure expression or super */ null && ("production" === 'development'));
|
|
|
|
|
|
function toStore(key, val) {
|
|
|
var _config = store__WEBPACK_IMPORTED_MODULE_0___default().get('__ec');
|
|
|
if (!_config) _config = {};
|
|
|
_config[key] = val;
|
|
|
store__WEBPACK_IMPORTED_MODULE_0___default().set('__ec', _config);
|
|
|
}
|
|
|
function fromStore(key, defaultVal) {
|
|
|
var _config = store__WEBPACK_IMPORTED_MODULE_0___default().get('__ec');
|
|
|
if (!_config) return defaultVal;
|
|
|
return _config[key] === undefined ? defaultVal : _config[key];
|
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 34459:
|
|
|
/*!*********************************************!*\
|
|
|
!*** ./src/pages/tasks/vnc-view/index.less ***!
|
|
|
\*********************************************/
|
|
|
/***/ (function() {
|
|
|
|
|
|
"use strict";
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 60141:
|
|
|
/*!***************************************************************!*\
|
|
|
!*** ./src/pages/tasks/code-repository/action-bar/notice.gif ***!
|
|
|
\***************************************************************/
|
|
|
/***/ (function(module) {
|
|
|
|
|
|
"use strict";
|
|
|
module.exports = "data:image/gif;base64,R0lGODlh6QDIAPf/APrMTf789vrMUPvdi/zfkfi4CvvYef713fnKSfzosP7wyvrSZfjAKPzmqf3wzP767fnHPv7xzf3wzvjFOfe2BP767vi8F/i8GPvagfnGO/jDMv3uxv3svfrNUvzkov724fvWcfzinPvbhPi5DfrTZv734vi6EPzglfnKSP3tw/nJR/3qtv3nrPrRYPjAJf/++/702PvVbvrUbfrUafrQX/rOVvnLTfrWcvi+H/i7Fv7y0P3y0/3wyv3uxPzjoPzglvi/I/vejvvZfPe5D/rTaPrPWvrOVPrKSf3vyPzlpPnNU/nKRvnENfe6E/Ly8v3sv+Xl5frZf9ra2vnIQOjo6Pv7+9jY2PX19d7e3tTU1Ovr6/n5+dzc3O7u7uLi4tDQ0M7Oztvb2/j4+N3d3ezs7NHR0f7+/tXV1fHx8fDw8NLS0uHh4d/f3/jAJvb29vT09M/Pz+/v7/f39+rq6uPj49bW1vr6+uDg4NfX1+Tk5PPz89PT0+np6efn59nZ2e3t7frPWfzmqvnFN/39/fz8/P756/723/vdif3ru/745/zhmObm5vrUav3ps/zim/zdiv757Pzlpvzruvzhmfe3Bve3B/zimvvhmvnCK/jAJ//56v/9+f7z1f702vvciPvXdfnBJ/jFN/jDL/735PvZe/e7Ffzjn/e3CPznq/3twf3ruvi+IPnFNvvdjPzps/3psvrOWP702/rQXfvYevnOWfvUav3quPrWdP302//56/i9G/zejP712/778/nIQv3orfnOV/i3BvnGOv/+/frKR/////3nqv3uw/vYd/3y1frUa/713v3ruPvZevrXd/e2BvnEM//+/P7z1v///f3rufnDMPnHQPe2A/i/JPrIQvnMUP3z2PnLSv/88/e8Gv746P7uxfvUa/vgk/vglPzgk/rNVPvaffnBKf3xz/756vi6D/rSYvrVcPe4C/jENvi7E/789PrPWPnIQfzchv3tv/3svvzquf3qufi9Hfi9Hve4DPnCLvjCL/e1AM3Nzf///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ4IDc5LjE2NDAzNiwgMjAxOS8wOC8xMy0wMTowNjo1NyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjAgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDJDNDJCNzNGQjY2MTFFREE3MTFEMUFDMEEzQzRDM0MiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDJDNDJCNzRGQjY2MTFFREE3MTFEMUFDMEEzQzRDM0MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowMkM0MkI3MUZCNjYxMUVEQTcxMUQxQUMwQTNDNEMzQyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowMkM0MkI3MkZCNjYxMUVEQTcxMUQxQUMwQTNDNEMzQyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2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";
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 3828:
|
|
|
/*!************************!*\
|
|
|
!*** crypto (ignored) ***!
|
|
|
\************************/
|
|
|
/***/ (function() {
|
|
|
|
|
|
/* (ignored) */
|
|
|
|
|
|
/***/ })
|
|
|
|
|
|
}]); |