ze-react-component-library
Version:
ZeroETP React Component Library
320 lines (270 loc) • 9.79 kB
JavaScript
;
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;