UNPKG

ze-react-component-library

Version:
320 lines (270 loc) 9.79 kB
"use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; require("antd/lib/modal/style"); var _modal = _interopRequireDefault(require("antd/lib/modal")); require("antd/lib/table/style"); var _table = _interopRequireDefault(require("antd/lib/table")); require("antd/lib/button/style"); var _button = _interopRequireDefault(require("antd/lib/button")); require("antd/lib/checkbox/style"); var _checkbox = _interopRequireDefault(require("antd/lib/checkbox")); require("antd/lib/auto-complete/style"); var _autoComplete = _interopRequireDefault(require("antd/lib/auto-complete")); var _react = _interopRequireWildcard(require("react")); var _ZEOperator = _interopRequireDefault(require("../ZEOperator")); var _ZELogicformVisualizer = _interopRequireDefault(require("../ZELogicformVisualizer")); var _rule = require("../ZEUtil/rule.util"); var _ZETreeFilter = _interopRequireDefault(require("../ZETreeFilter")); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var __assign = void 0 && (void 0).__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 = void 0 && (void 0).__spreadArray || function (to, from) { for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) { to[j] = from[i]; } return to; }; 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.default.createElement("div", { style: { width: "100%", display: "flex", gap: 8 } }, /*#__PURE__*/_react.default.createElement(_autoComplete.default, { 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.default.createElement(_ZEOperator.default, __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 = (0, _react.useState)(_value), value = _c[0], setValue = _c[1]; var _d = (0, _react.useState)(-1), editingIndex = _d[0], setEditingIndex = _d[1]; (0, _react.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.default.createElement(_checkbox.default, { 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.default.createElement(_checkbox.default, { 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.default.createElement(_ZELogicformVisualizer.default, { display: { schema: false }, showQueryFilter: false, logicform: { schema: record === null || record === void 0 ? void 0 : record._id, query: (0, _rule.treeRulesToDefaultQuery)(record === null || record === void 0 ? void 0 : record.rule)[0] } }); } }, { title: "操作", dataIndex: "rule", render: function render(_v, _r, index) { return /*#__PURE__*/_react.default.createElement(_button.default, { 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.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_table.default, { rowKey: "_id", dataSource: _value, columns: columns, pagination: false }), /*#__PURE__*/_react.default.createElement(_modal.default, { 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.default.createElement(_ZETreeFilter.default, { 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.default.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 }; }) }); } }))); }; var _default = DefaultQueryHandler; exports.default = _default;