@skbkontur/cassandra-distributed-task-queue-ui
Version:
.NET library implementing distributed task queue machinery using Apache Cassandra
86 lines • 5.31 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.TasksTable = void 0;
const tslib_1 = require("tslib");
const jsx_runtime_1 = require("react/jsx-runtime");
const react_stack_layout_1 = require("@skbkontur/react-stack-layout");
const react_ui_1 = require("@skbkontur/react-ui");
const isEqual_1 = tslib_1.__importDefault(require("lodash/isEqual"));
const react_1 = require("react");
const TaskDetails_1 = require("./TaskDetails/TaskDetails");
const TaskTable_styles_1 = require("./TaskTable.styles");
class TasksTable extends react_1.Component {
constructor() {
super(...arguments);
Object.defineProperty(this, "state", {
enumerable: true,
configurable: true,
writable: true,
value: {
openedModal: false,
modalType: "Cancel",
actionTask: "",
}
});
Object.defineProperty(this, "theme", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
}
shouldComponentUpdate(nextProps, nextState) {
return (this.props.chosenTasks.size !== nextProps.chosenTasks.size ||
!(0, isEqual_1.default)(this.props.taskInfos, nextProps.taskInfos) ||
!(0, isEqual_1.default)(this.props.allowRerunOrCancel, nextProps.allowRerunOrCancel) ||
!(0, isEqual_1.default)(this.state.openedModal, nextState.openedModal) ||
!(0, isEqual_1.default)(this.state.modalType, nextState.modalType) ||
!(0, isEqual_1.default)(this.state.actionTask, nextState.actionTask));
}
render() {
const { taskInfos } = this.props;
const { openedModal } = this.state;
return ((0, jsx_runtime_1.jsx)(react_ui_1.ThemeContext.Consumer, { children: theme => {
this.theme = theme;
return ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { "data-tid": "Tasks", children: taskInfos.map(item => this.renderRow(item)) }), openedModal && this.renderModal()] }));
} }));
}
renderRow(item) {
const { allowRerunOrCancel, chosenTasks, onCheck, getTaskLocation } = this.props;
return ((0, jsx_runtime_1.jsx)("div", { className: TaskTable_styles_1.jsStyles.taskDetailsRow(), children: (0, jsx_runtime_1.jsx)(TaskDetails_1.TaskDetails, { getTaskLocation: getTaskLocation, "data-tid": "Task", onCancel: () => this.cancel(item.id), onRerun: () => this.rerun(item.id), taskInfo: item, allowRerunOrCancel: allowRerunOrCancel, isChecked: chosenTasks.has(item.id), onCheck: () => onCheck(item.id) }) }, item.id));
}
renderModal() {
const { onCancel, onRerun } = this.props;
const { modalType, actionTask } = this.state;
return ((0, jsx_runtime_1.jsxs)(react_ui_1.Modal, { onClose: () => this.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: TaskTable_styles_1.jsStyles.modalText(this.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: TaskTable_styles_1.jsStyles.modalText(this.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(actionTask);
this.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(actionTask);
this.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: () => this.closeModal(), children: "\u0417\u0430\u043A\u0440\u044B\u0442\u044C" }) })] }) })] }));
}
rerun(id) {
this.setState({
openedModal: true,
modalType: "Rerun",
actionTask: id,
});
}
cancel(id) {
this.setState({
openedModal: true,
modalType: "Cancel",
actionTask: id,
});
}
closeModal() {
this.setState({
openedModal: false,
});
}
}
exports.TasksTable = TasksTable;
//# sourceMappingURL=TaskTable.js.map