UNPKG

ze-react-component-library

Version:
291 lines (260 loc) 7.55 kB
import "antd/es/modal/style"; import _Modal from "antd/es/modal"; import "antd/es/table/style"; import _Table from "antd/es/table"; import "antd/es/button/style"; import _Button from "antd/es/button"; import "antd/es/checkbox/style"; import _Checkbox from "antd/es/checkbox"; import "antd/es/auto-complete/style"; import _AutoComplete from "antd/es/auto-complete"; var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; var __spreadArray = this && this.__spreadArray || function (to, from) { for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) { to[j] = from[i]; } return to; }; import React, { useState, useEffect } from "react"; import ZEOperator from "../ZEOperator"; import ZELogicformVisualizer from "../ZELogicformVisualizer"; import { treeRulesToDefaultQuery } from "../ZEUtil/rule.util"; import ZETreeFilter from "../ZETreeFilter"; var getPropertyValueProps = function getPropertyValueProps(property) { var _a, _b; var type = "String"; if (!property) { return { type: type }; } var options = (_b = (_a = property === null || property === void 0 ? void 0 : property.constraints) === null || _a === void 0 ? void 0 : _a.enum) === null || _b === void 0 ? void 0 : _b.map(function (d) { return { value: d instanceof Array ? d[0] : d, label: d instanceof Array ? d[0] : d }; }); switch (property.primal_type) { case "boolean": type = "Boolean"; break; case "number": type = "Number"; break; case "date": type = "Date"; break; default: break; } return { type: type, valueProps: { options: options } }; }; var TreeFilterItem = function TreeFilterItem(_a) { var _b, _c; var item = _a.item, properties = _a.properties, _onChange2 = _a.onChange; var property = (_b = properties === null || properties === void 0 ? void 0 : properties.find(function (d) { return d.value === item.props.value; })) === null || _b === void 0 ? void 0 : _b.data; return /*#__PURE__*/React.createElement("div", { style: { width: "100%", display: "flex", gap: 8 } }, /*#__PURE__*/React.createElement(_AutoComplete, { options: properties, placeholder: "\u8BF7\u9009\u62E9\u6216\u8F93\u5165", value: item.props.value, onChange: function onChange(v, option) { _onChange2 === null || _onChange2 === void 0 ? void 0 : _onChange2(item.id, { value: v, filter: { operator: "=" } }); }, style: { flex: 1, maxWidth: 300, minWidth: 120 } }), item.props.value && /*#__PURE__*/React.createElement(ZEOperator, __assign({}, getPropertyValueProps(property), { value: (_c = item.props) === null || _c === void 0 ? void 0 : _c.filter, onChange: function onChange(v) { _onChange2 === null || _onChange2 === void 0 ? void 0 : _onChange2(item.id, __assign(__assign({}, item.props), { filter: v })); } }))); }; var DefaultQueryHandler = function DefaultQueryHandler(_a) { var _b = _a.value, _value = _b === void 0 ? [] : _b, _onChange = _a.onChange, type = _a.type; var _c = useState(_value), value = _c[0], setValue = _c[1]; var _d = useState(-1), editingIndex = _d[0], setEditingIndex = _d[1]; useEffect(function () { setValue(_value); }, [JSON.stringify(_value)]); var columns = [{ title: "Schema", dataIndex: "_id", render: function render(_value, record) { return record.schema._id + "(" + record.schema.name + ")"; } }, { title: "读", dataIndex: "permission", render: function render(v, record) { return /*#__PURE__*/React.createElement(_Checkbox, { checked: v === "r" || v === "w", onChange: function onChange(e) { if (e.target.checked) { record.permission = "r"; } else { record.permission = "n"; } setValue(__spreadArray([], value)); if (_onChange) { _onChange(value); } } }); } }, { title: "写", dataIndex: "permission", render: function render(v, record) { return /*#__PURE__*/React.createElement(_Checkbox, { checked: v === "w", onChange: function onChange(e) { if (e.target.checked) { record.permission = "w"; } else { record.permission = "r"; } setValue(__spreadArray([], value)); if (_onChange) { _onChange(value); } } }); } }, { title: "读限制", dataIndex: "ruleQuery", render: function render(v, record) { return /*#__PURE__*/React.createElement(ZELogicformVisualizer, { display: { schema: false }, showQueryFilter: false, logicform: { schema: record === null || record === void 0 ? void 0 : record._id, query: treeRulesToDefaultQuery(record === null || record === void 0 ? void 0 : record.rule)[0] } }); } }, { title: "操作", dataIndex: "rule", render: function render(_v, _r, index) { return /*#__PURE__*/React.createElement(_Button, { type: "link", style: { padding: 0 }, onClick: function onClick() { setEditingIndex(index); } }, "\u7F16\u8F91"); } }]; if (type === "account") { columns = columns.filter(function (c) { return c.dataIndex !== "permission"; }); } return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_Table, { rowKey: "_id", dataSource: _value, columns: columns, pagination: false }), /*#__PURE__*/React.createElement(_Modal, { open: editingIndex >= 0, title: "\u7528\u6237\u67E5\u8BE2\u8303\u56F4\u7684\u89C4\u5219", closable: false, maskClosable: false, onOk: function onOk() { setEditingIndex(-1); if (_onChange) { _onChange(value); } }, onCancel: function onCancel() { setEditingIndex(-1); setValue(_value); }, bodyStyle: { paddingTop: 8 } }, /*#__PURE__*/React.createElement(ZETreeFilter, { maxCount: 100, maxLevel: 2, value: editingIndex >= 0 ? value[editingIndex].rule : [], title: "\u89C4\u5219", onChange: function onChange(rule) { var newValue = __spreadArray([], value); newValue[editingIndex] = __assign(__assign({}, newValue[editingIndex]), { rule: rule }); setValue(newValue); }, conditions: [{ label: "且", value: "and" }, { label: "或", value: "or" }], enableRootAdd: true, renderItem: function renderItem(item, onChange, disabled) { return /*#__PURE__*/React.createElement(TreeFilterItem, { item: item, onChange: onChange, disabled: disabled, properties: value[editingIndex].schema.properties.map(function (d) { return { value: d.name, label: d.name, data: d }; }) }); } }))); }; export default DefaultQueryHandler;