ze-react-component-library
Version:
ZeroETP React Component Library
172 lines (152 loc) • 5.21 kB
JavaScript
import "antd/es/switch/style";
import _Switch from "antd/es/switch";
import "antd/es/card/style";
import _Card from "antd/es/card";
import "antd/es/drawer/style";
import _Drawer from "antd/es/drawer";
import "antd/es/button/style";
import _Button from "antd/es/button";
import "antd/es/list/style";
import _List from "antd/es/list";
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); }
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);
};
import React, { useState } from "react";
import ZELogicformVisualizer from "../ZELogicformVisualizer";
import _ from "underscore";
import useLocale from "../hooks/useLocale";
/**
* 注意,ZELogicformVisualizerList只接受norm后的logicform
*/
var ZELogicformVisualizerList = function ZELogicformVisualizerList(_a) {
var initLogicforms = _a.logicforms,
_b = _a.compact,
compact = _b === void 0 ? false : _b,
isDrawer = _a.isDrawer,
_onClick = _a.onClick;
var t = useLocale().t; // 按照schema排序
var logicforms = _.sortBy(initLogicforms, "schema");
var _c = useState(false),
showDiff = _c[0],
setShowDiff = _c[1];
var diffLogicforms = getDiffLogicforms(logicforms);
var content = /*#__PURE__*/React.createElement(_List, {
dataSource: showDiff ? diffLogicforms : logicforms,
renderItem: function renderItem(logicform, index) {
return /*#__PURE__*/React.createElement(_List.Item, {
key: JSON.stringify(logicform),
actions: [/*#__PURE__*/React.createElement(_Button, {
onClick: function onClick() {
return _onClick(logicforms[index]);
},
type: "primary"
}, t("nlq.logicforms.choose"))]
}, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(ZELogicformVisualizer, {
logicform: logicform,
mode: "verbose",
showQueryFilter: false
})));
},
bordered: true
});
var publicProps = {
title: t("nlq.logicforms")
};
if (isDrawer) {
return /*#__PURE__*/React.createElement(_Drawer, __assign({
open: true,
width: "100vw",
contentWrapperStyle: {
bottom: 80,
top: "unset"
},
closable: false,
closeIcon: false,
placement: "bottom"
}, publicProps), content);
}
return /*#__PURE__*/React.createElement(_Card, __assign({}, publicProps, {
size: compact ? "small" : "default",
bodyStyle: {
maxHeight: "60vh",
overflowY: "scroll"
},
className: "ze-logicform-visual-list"
}), /*#__PURE__*/React.createElement("div", {
style: {
paddingTop: 10,
paddingBottom: 10,
width: "100%",
display: "flex"
}
}, /*#__PURE__*/React.createElement("span", {
style: {
marginRight: 5
}
}, t("nlq.logicforms.showDiff")), /*#__PURE__*/React.createElement(_Switch, {
checked: showDiff,
onChange: function onChange() {
setShowDiff(!showDiff);
}
})), content);
};
var getDiffLogicforms = function getDiffLogicforms(logicforms) {
var diffKeyValuePool = {}; // 下面循环的一个帮助函数
var iterObject = function iterObject(obj, field) {
Object.entries(obj).forEach(function (_a) {
var _b;
var k = _a[0],
v = _a[1];
var key = field ? field + "_" + k : k;
var isObj = v && _typeof(v) === "object" && !(v instanceof Array) && !((_b = Object.keys(v)[0]) === null || _b === void 0 ? void 0 : _b.startsWith("$"));
if (isObj) {
iterObject(v, key);
} else {
var value = JSON.stringify(v);
if (!(key in diffKeyValuePool)) {
diffKeyValuePool[key] = {
value: value,
count: 1
};
} else if (value === diffKeyValuePool[key].value) {
diffKeyValuePool[key].count++;
}
}
});
};
logicforms.forEach(function (logicform) {
iterObject(logicform);
}); // 生成diffLogicforms
var diffLogicforms = JSON.parse(JSON.stringify(logicforms));
diffLogicforms.forEach(function (logicform) {
Object.keys(diffKeyValuePool).forEach(function (key) {
if (diffKeyValuePool[key].count === logicforms.length) {
var keys_1 = key.split("_");
var obj_1 = logicform;
keys_1.forEach(function (k, i) {
if (i === keys_1.length - 1) {
if (obj_1) {
delete obj_1[k];
}
} else {
if (obj_1) {
obj_1 = obj_1[k];
}
}
});
}
});
});
return diffLogicforms;
};
export default ZELogicformVisualizerList;