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