UNPKG

@skbkontur/cassandra-distributed-task-queue-ui

Version:

.NET library implementing distributed task queue machinery using Apache Cassandra

66 lines 7.75 kB
"use strict"; 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