@skbkontur/cassandra-distributed-task-queue-ui
Version:
.NET library implementing distributed task queue machinery using Apache Cassandra
66 lines • 7.75 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.TaskDetailsPage = TaskDetailsPage;
const jsx_runtime_1 = require("react/jsx-runtime");
const edi_ui_1 = require("@skbkontur/edi-ui");
const ArrowRoundTimeForwardIcon16Regular_1 = require("@skbkontur/icons/ArrowRoundTimeForwardIcon16Regular");
const TextAlignCenterJustifyIcon16Regular_1 = require("@skbkontur/icons/TextAlignCenterJustifyIcon16Regular");
const XIcon16Regular_1 = require("@skbkontur/icons/XIcon16Regular");
const react_stack_layout_1 = require("@skbkontur/react-stack-layout");
const react_ui_1 = require("@skbkontur/react-ui");
const react_1 = require("react");
const CustomSettingsContext_1 = require("../../CustomSettingsContext");
const TaskStateExtensions_1 = require("../../Domain/TaskStateExtensions");
const TasksPageContainer_1 = require("../../containers/TasksPageContainer");
const CommonLayout_1 = require("../Layouts/CommonLayout");
const RouterLink_1 = require("../RouterLink/RouterLink");
const TaskDetailsMetaTable_1 = require("../TaskDetailsMetaTable/TaskDetailsMetaTable");
const TaskTimeLine_1 = require("../TaskTimeLine/TaskTimeLine");
const TaskDetailsPage_styles_1 = require("./TaskDetailsPage.styles");
function TaskDetailsPage({ parentLocation, taskDetails, getTaskLocation, allowRerunOrCancel, onRerun, onCancel, }) {
const [openedModal, setOpenedModal] = (0, react_1.useState)(false);
const [modalType, setModalType] = (0, react_1.useState)("Cancel");
const theme = (0, react_1.useContext)(react_ui_1.ThemeContext);
const { customDetailRenderer } = (0, CustomSettingsContext_1.useCustomSettings)();
const rerun = () => {
setOpenedModal(true);
setModalType("Rerun");
};
const cancel = () => {
setOpenedModal(true);
setModalType("Cancel");
};
const closeModal = () => setOpenedModal(false);
const renderButtons = () => {
if (!taskDetails) {
return null;
}
const canCancel = taskDetails.taskMeta.taskActions
? taskDetails.taskMeta.taskActions.canCancel
: allowRerunOrCancel && TaskStateExtensions_1.cancelableStates.includes(taskDetails.taskMeta.state);
const canRerun = taskDetails.taskMeta.taskActions
? taskDetails.taskMeta.taskActions.canRerun
: allowRerunOrCancel && TaskStateExtensions_1.rerunableStates.includes(taskDetails.taskMeta.state);
const relatedTasksRequest = customDetailRenderer.getRelatedTasksLocation(taskDetails);
if (!canCancel && !canRerun && relatedTasksRequest == null) {
return null;
}
return ((0, jsx_runtime_1.jsxs)(react_stack_layout_1.RowStack, { baseline: true, block: true, gap: 2, children: [(0, jsx_runtime_1.jsx)(react_stack_layout_1.Fill, {}), relatedTasksRequest && ((0, jsx_runtime_1.jsx)(react_stack_layout_1.Fit, { children: (0, jsx_runtime_1.jsxs)(RouterLink_1.RouterLink, { "data-tid": "RelatedTaskTree", to: `../Tree${TasksPageContainer_1.searchRequestMapping.stringify(relatedTasksRequest)}`, children: [(0, jsx_runtime_1.jsx)(TextAlignCenterJustifyIcon16Regular_1.TextAlignCenterJustifyIcon16Regular, {}), "\u00A0", "View related tasks tree"] }) })), canCancel && ((0, jsx_runtime_1.jsx)(react_stack_layout_1.Fit, { children: (0, jsx_runtime_1.jsx)(react_ui_1.Link, { icon: (0, jsx_runtime_1.jsx)(XIcon16Regular_1.XIcon16Regular, {}), use: "danger", "data-tid": "CancelButton", onClick: cancel, children: "Cancel task" }) })), canRerun && ((0, jsx_runtime_1.jsx)(react_stack_layout_1.Fit, { children: (0, jsx_runtime_1.jsx)(react_ui_1.Button, { use: "link", icon: (0, jsx_runtime_1.jsx)(ArrowRoundTimeForwardIcon16Regular_1.ArrowRoundTimeForwardIcon16Regular, {}), "data-tid": "RerunButton", onClick: rerun, children: "Rerun task" }) }))] }));
};
const renderModal = () => {
if (!taskDetails) {
return null;
}
return ((0, jsx_runtime_1.jsxs)(react_ui_1.Modal, { onClose: closeModal, width: 500, "data-tid": "ConfirmOperationModal", children: [(0, jsx_runtime_1.jsx)(react_ui_1.Modal.Header, { children: (0, jsx_runtime_1.jsx)("span", { className: TaskDetailsPage_styles_1.jsStyles.modalText(theme), children: "\u041D\u0443\u0436\u043D\u043E \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u0435" }) }), (0, jsx_runtime_1.jsx)(react_ui_1.Modal.Body, { children: (0, jsx_runtime_1.jsx)("span", { "data-tid": "ModalText", className: TaskDetailsPage_styles_1.jsStyles.modalText(theme), children: modalType === "Rerun"
? "Уверен, что таску надо перезапустить?"
: "Уверен, что таску надо остановить?" }) }), (0, jsx_runtime_1.jsx)(react_ui_1.Modal.Footer, { children: (0, jsx_runtime_1.jsxs)(react_stack_layout_1.RowStack, { gap: 2, children: [(0, jsx_runtime_1.jsx)(react_stack_layout_1.Fit, { children: modalType === "Rerun" ? ((0, jsx_runtime_1.jsx)(react_ui_1.Button, { "data-tid": "RerunButton", use: "success", onClick: () => {
onRerun(taskDetails.taskMeta.id);
closeModal();
}, children: "\u041F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C" })) : ((0, jsx_runtime_1.jsx)(react_ui_1.Button, { "data-tid": "CancelButton", use: "danger", onClick: () => {
onCancel(taskDetails.taskMeta.id);
closeModal();
}, children: "\u041E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C" })) }), (0, jsx_runtime_1.jsx)(react_stack_layout_1.Fit, { children: (0, jsx_runtime_1.jsx)(react_ui_1.Button, { "data-tid": "CloseButton", onClick: closeModal, children: "\u0417\u0430\u043A\u0440\u044B\u0442\u044C" }) })] }) })] }));
};
return ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)(CommonLayout_1.CommonLayout, { withArrow: true, children: [(0, jsx_runtime_1.jsx)(CommonLayout_1.CommonLayout.GoBack, { to: parentLocation }), taskDetails && ((0, jsx_runtime_1.jsx)(CommonLayout_1.CommonLayout.Header, { borderBottom: true, "data-tid": "Header", title: `Задача ${taskDetails.taskMeta.name}`, tools: renderButtons(), children: (0, jsx_runtime_1.jsx)(TaskTimeLine_1.TaskTimeLine, { getHrefToTask: getTaskLocation, taskMeta: taskDetails.taskMeta, childTaskIds: taskDetails.childTaskIds }) })), (0, jsx_runtime_1.jsx)(CommonLayout_1.CommonLayout.Content, { children: (0, jsx_runtime_1.jsxs)(react_stack_layout_1.ColumnStack, { block: true, stretch: true, gap: 2, children: [taskDetails && ((0, jsx_runtime_1.jsx)(react_stack_layout_1.Fit, { children: (0, jsx_runtime_1.jsx)(TaskDetailsMetaTable_1.TaskDetailsMetaTable, { taskMeta: taskDetails.taskMeta, childTaskIds: taskDetails.childTaskIds }) })), taskDetails && ((0, jsx_runtime_1.jsx)(react_stack_layout_1.Fit, { className: TaskDetailsPage_styles_1.jsStyles.taskDataContainer(), children: (0, jsx_runtime_1.jsx)(edi_ui_1.Accordion, { renderCaption: null, renderValue: customDetailRenderer.renderDetails, value: taskDetails.taskData, title: "TaskData" }) })), taskDetails && taskDetails.exceptionInfos && ((0, jsx_runtime_1.jsx)(react_stack_layout_1.Fit, { className: TaskDetailsPage_styles_1.jsStyles.exceptionContainer(), "data-tid": "Exceptions", children: taskDetails.exceptionInfos.map((exception, index) => ((0, jsx_runtime_1.jsx)("pre", { "data-tid": "Exception", className: TaskDetailsPage_styles_1.jsStyles.exception(theme), children: exception }, index))) }))] }) })] }), openedModal && renderModal()] }));
}
//# sourceMappingURL=TaskDetailsPage.js.map
;