UNPKG

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

Version:

.NET library implementing distributed task queue machinery using Apache Cassandra

88 lines 3.89 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TaskDetailsPageContainer = void 0; const tslib_1 = require("tslib"); const jsx_runtime_1 = require("react/jsx-runtime"); const react_ui_1 = require("@skbkontur/react-ui"); const react_1 = require("react"); const react_router_dom_1 = require("react-router-dom"); const RouteUtils_1 = require("../Domain/Utils/RouteUtils"); const ErrorHandlingContainer_1 = require("../components/ErrorHandling/ErrorHandlingContainer"); const TaskDetailsPage_1 = require("../components/TaskDetailsPage/TaskDetailsPage"); const TaskNotFoundPage_1 = require("../components/TaskNotFoundPage/TaskNotFoundPage"); const TaskDetailsPageContainer = ({ rtqMonitoringApi, useErrorHandlingContainer, isSuperUser, }) => { const { pathname, state } = react_router_dom_1.useLocation(); const parentLocation = tryGetParentLocationFromHistoryState(state); const { id = "" } = react_router_dom_1.useParams(); const [loading, setLoading] = react_1.useState(false); const [taskDetails, setTaskDetails] = react_1.useState(null); const [notFoundError, setNotFoundError] = react_1.useState(false); react_1.useEffect(() => { loadData(id); }, [id]); const getTaskLocation = (id) => ({ pathname: `../${id}`, state: { parentLocation }, }); const handlerRerun = () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { setLoading(true); try { yield rtqMonitoringApi.rerunTasks([id]); const taskDetails = yield rtqMonitoringApi.getTaskDetails(id); setTaskDetails(taskDetails); } finally { setLoading(false); } }); const handlerCancel = () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { setLoading(true); try { yield rtqMonitoringApi.cancelTasks([id]); const taskDetails = yield rtqMonitoringApi.getTaskDetails(id); setTaskDetails(taskDetails); } finally { setLoading(false); } }); if (notFoundError) { return jsx_runtime_1.jsx(TaskNotFoundPage_1.TaskNotFoundPage, {}, void 0); } return (jsx_runtime_1.jsxs(react_ui_1.Loader, Object.assign({ active: loading, type: "big", "data-tid": "Loader" }, { children: [taskDetails && (jsx_runtime_1.jsx(TaskDetailsPage_1.TaskDetailsPage, { getTaskLocation: getTaskLocation, parentLocation: parentLocation || RouteUtils_1.RouteUtils.backUrl(pathname), allowRerunOrCancel: isSuperUser, taskDetails: taskDetails, onRerun: handlerRerun, onCancel: handlerCancel }, void 0)), useErrorHandlingContainer && jsx_runtime_1.jsx(ErrorHandlingContainer_1.ErrorHandlingContainer, {}, void 0)] }), void 0)); function loadData(id) { return tslib_1.__awaiter(this, void 0, void 0, function* () { setLoading(true); setNotFoundError(false); try { const taskDetails = yield rtqMonitoringApi.getTaskDetails(id); if (taskDetails.taskMeta) { setTaskDetails(taskDetails); return; } setNotFoundError(true); } finally { setLoading(false); } }); } }; exports.TaskDetailsPageContainer = TaskDetailsPageContainer; function tryGetParentLocationFromHistoryState(state) { if (!state) { return null; } if (state.parentLocation) { const parentLocation = state.parentLocation; if (typeof parentLocation === "string") { return parentLocation; } if (typeof parentLocation === "object") { const { pathname, search } = parentLocation; return `${pathname}${search}`; } } return null; } //# sourceMappingURL=TaskDetailsPageContainer.js.map