UNPKG

ze-react-component-library

Version:
172 lines (152 loc) 5.21 kB
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;