@skbkontur/cassandra-distributed-task-queue-ui
Version:
.NET library implementing distributed task queue machinery using Apache Cassandra
88 lines • 3.89 kB
JavaScript
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
;