@next-libs/cmdb-instances 6.27.0 → 6.27.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,291 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.DynamicSearchForm = exports.DynamicSearch = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _react = _interopRequireDefault(require("react"));
13
+
14
+ var _immutabilityHelper = _interopRequireDefault(require("immutability-helper"));
15
+
16
+ var _lodash = require("lodash");
17
+
18
+ var _compatible = require("@ant-design/compatible");
19
+
20
+ var _antd = require("antd");
21
+
22
+ var _cmdbUtils = require("@next-libs/cmdb-utils");
23
+
24
+ var _DynamicSearchModule = _interopRequireDefault(require("./DynamicSearch.module.css"));
25
+
26
+ var _i18next = _interopRequireDefault(require("i18next"));
27
+
28
+ var _constants = require("../i18n/constants");
29
+
30
+ var _processors = require("../processors");
31
+
32
+ class DynamicSearchForm extends _react.default.Component {
33
+ constructor(props) {
34
+ super(props);
35
+ (0, _defineProperty2.default)(this, "onValueChange", (value, fieldIndex, valueIndex) => {
36
+ this.setState({
37
+ fields: (0, _immutabilityHelper.default)(this.state.fields, {
38
+ [fieldIndex]: {
39
+ values: {
40
+ [valueIndex]: {
41
+ $set: value
42
+ }
43
+ }
44
+ }
45
+ })
46
+ });
47
+ });
48
+ (0, _defineProperty2.default)(this, "handleValueChange", (e, fieldIndex) => {
49
+ this.onValueChange(e.target.value, fieldIndex, 0);
50
+ });
51
+ (0, _defineProperty2.default)(this, "handleSearch", e => {
52
+ e.preventDefault();
53
+
54
+ if (this.props.onSearch) {
55
+ let queries = [];
56
+ let queriesToShow = [];
57
+ const fieldToShow = [];
58
+ this.state.fields.forEach(field => {
59
+ const expressions = {};
60
+ const fieldId = field.id;
61
+ let fieldQuery = {
62
+ [fieldId]: expressions
63
+ };
64
+ let fieldQueryToShow = {
65
+ [fieldId]: expressions
66
+ };
67
+ let hasValue = false;
68
+ const operator = {
69
+ comparisonOperator: _cmdbUtils.ComparisonOperators.Like,
70
+ logicalOperator: _cmdbUtils.LogicalOperators.Or
71
+ };
72
+ field.values.forEach(value => {
73
+ fieldQuery = {
74
+ [field.id]: expressions
75
+ };
76
+ const fieldIdToShow = field.id;
77
+ fieldQueryToShow = {
78
+ [fieldIdToShow]: expressions
79
+ };
80
+
81
+ if (value !== null && value !== "" && !(Array.isArray(value) && value.length === 0)) {
82
+ let values;
83
+
84
+ if (typeof value === "string") {
85
+ values = (0, _processors.processAttrValueWithQuote)(value, []);
86
+ }
87
+
88
+ if (values.length) {
89
+ fieldQuery = {
90
+ [operator.logicalOperator]: values.map(value => {
91
+ return {
92
+ [fieldId]: {
93
+ [operator.comparisonOperator]: `%${value}%`
94
+ }
95
+ };
96
+ })
97
+ };
98
+ }
99
+
100
+ fieldQueryToShow = {
101
+ [operator.logicalOperator]: values.map(value => {
102
+ return {
103
+ [fieldIdToShow]: {
104
+ [operator.comparisonOperator]: `%${value}%`
105
+ }
106
+ };
107
+ })
108
+ };
109
+ hasValue = true;
110
+ fieldToShow.push({
111
+ [field.id]: field.values
112
+ });
113
+ }
114
+ });
115
+
116
+ if (hasValue) {
117
+ queries.push(fieldQuery);
118
+ queriesToShow.push(fieldQueryToShow);
119
+ }
120
+ });
121
+
122
+ if (queries.length === 0) {
123
+ queries = undefined;
124
+ queriesToShow = undefined;
125
+ }
126
+
127
+ if (!(0, _lodash.isEqual)(this.props.q, queries)) {
128
+ this.props.onSearch(queries, queriesToShow, fieldToShow);
129
+ }
130
+ }
131
+ });
132
+ (0, _defineProperty2.default)(this, "handleReset", () => {
133
+ this.props.onSearch([], [], []);
134
+ this.props.form.resetFields();
135
+ });
136
+ this.state = this.computeState();
137
+ }
138
+
139
+ componentDidUpdate(prevProps) {
140
+ if (!(0, _lodash.isEqual)(this.props.q, prevProps.q)) {
141
+ const newState = this.computeState();
142
+ this.setState(newState);
143
+ this.setFormFieldValues(newState.fields);
144
+ }
145
+ }
146
+
147
+ computeState() {
148
+ const fieldQueryOperatorExpressionsMap = {};
149
+ let fields = [];
150
+
151
+ if (this.props.q) {
152
+ this.props.q.forEach(query => {
153
+ Object.entries(query).forEach(([key, expressions]) => {
154
+ if (key === _cmdbUtils.LogicalOperators.Or || key === _cmdbUtils.LogicalOperators.And) {
155
+ const firstSubQuery = expressions[0];
156
+ const fieldId = Object.keys(firstSubQuery)[0];
157
+ const compareOperator = Object.keys(firstSubQuery[fieldId])[0];
158
+ let subQueryValue = "";
159
+ let targetField;
160
+
161
+ if (_processors.ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE) {
162
+ var _this$props$fieldToSh;
163
+
164
+ targetField = (_this$props$fieldToSh = this.props.fieldToShow) === null || _this$props$fieldToSh === void 0 ? void 0 : _this$props$fieldToSh.find(fieldItem => Object.keys(fieldItem)[0] === fieldId);
165
+ }
166
+
167
+ if (!(0, _lodash.isNil)(targetField)) {
168
+ // 二维数组会有问题,
169
+ subQueryValue = (0, _lodash.isArray)(targetField[fieldId]) ? targetField[fieldId].map(item => (0, _lodash.isArray)(item) ? item.join(" ") : item).join("") : targetField[fieldId];
170
+ } else {
171
+ subQueryValue = expressions.map(query => {
172
+ const targetValue = query[fieldId][compareOperator];
173
+
174
+ if (compareOperator === _cmdbUtils.ComparisonOperators.Like || compareOperator === _cmdbUtils.ComparisonOperators.NotLike) {
175
+ return (0, _lodash.isString)(targetValue) && targetValue.includes(" ") ? `${targetValue[0]}"${targetValue.slice(1, targetValue.length - 1)}"${targetValue[targetValue.length - 1]}` : targetValue;
176
+ } else {
177
+ return (0, _lodash.isString)(targetValue) && targetValue.includes(" ") ? `"${targetValue}"` : targetValue;
178
+ }
179
+ }).join(" ");
180
+ }
181
+
182
+ key = fieldId;
183
+ expressions = {
184
+ [compareOperator]: subQueryValue
185
+ };
186
+ }
187
+
188
+ fieldQueryOperatorExpressionsMap[key] = expressions;
189
+ });
190
+ });
191
+ }
192
+
193
+ if (this.props.fields) {
194
+ fields = this.props.fields.map(v => ({ ...v,
195
+ values: [null]
196
+ }));
197
+
198
+ if (!(0, _lodash.isEmpty)(fieldQueryOperatorExpressionsMap)) {
199
+ fields = this.props.fields.map(v => {
200
+ let str = null;
201
+
202
+ if (fieldQueryOperatorExpressionsMap[v.id]) {
203
+ const expressions = fieldQueryOperatorExpressionsMap[v.id]["$like"];
204
+ str = expressions.replace(/%/g, "");
205
+ }
206
+
207
+ return { ...v,
208
+ values: [str]
209
+ };
210
+ });
211
+ }
212
+ }
213
+
214
+ return {
215
+ fields
216
+ };
217
+ }
218
+
219
+ setFormFieldValues(fields) {
220
+ const values = fields.reduce((acc, field) => {
221
+ acc[`${field.id}`] = field.values.join("");
222
+ return acc;
223
+ }, {});
224
+ this.props.form.setFieldsValue(values);
225
+ }
226
+
227
+ getFields() {
228
+ const {
229
+ getFieldDecorator
230
+ } = this.props.form;
231
+ return this.state.fields.map((field, fieldIndex) => {
232
+ return /*#__PURE__*/_react.default.createElement(_antd.Col, {
233
+ span: 12,
234
+ key: field.id
235
+ }, /*#__PURE__*/_react.default.createElement(_compatible.Form.Item, {
236
+ label: field.name
237
+ }, /*#__PURE__*/_react.default.createElement(_antd.Input.Group, {
238
+ className: _DynamicSearchModule.default.conditionInputGroup,
239
+ compact: true
240
+ }, /*#__PURE__*/_react.default.createElement(_antd.Select, {
241
+ dropdownMatchSelectWidth: false,
242
+ defaultValue: "contain"
243
+ }, /*#__PURE__*/_react.default.createElement(_antd.Select.Option, {
244
+ value: "contain",
245
+ key: "contain"
246
+ }, _i18next.default.t(`${_constants.NS_LIBS_CMDB_INSTANCES}:${_constants.K.OPERATOR_CONTAIN_DEFINE}`))), getFieldDecorator(`${field.id}`, {
247
+ initialValue: field.values || ""
248
+ })( /*#__PURE__*/_react.default.createElement(_antd.Input, {
249
+ placeholder: _i18next.default.t(`${_constants.NS_LIBS_CMDB_INSTANCES}:${_constants.K.ADVANCE_SEARCH_SINGLE_INPUT_PLACEHOLDER}`),
250
+ onChange: e => this.handleValueChange(e, fieldIndex)
251
+ })))));
252
+ });
253
+ }
254
+
255
+ render() {
256
+ return /*#__PURE__*/_react.default.createElement("div", {
257
+ className: _DynamicSearchModule.default.dynamicSearch
258
+ }, /*#__PURE__*/_react.default.createElement(_compatible.Form, {
259
+ layout: "vertical",
260
+ className: _DynamicSearchModule.default.dynamicSearchForm,
261
+ onSubmit: this.handleSearch
262
+ }, /*#__PURE__*/_react.default.createElement(_antd.Row, {
263
+ gutter: 50
264
+ }, this.getFields()), /*#__PURE__*/_react.default.createElement(_antd.Row, null, /*#__PURE__*/_react.default.createElement(_antd.Col, {
265
+ span: 24,
266
+ style: {
267
+ textAlign: "right"
268
+ }
269
+ }, /*#__PURE__*/_react.default.createElement(_antd.Button, {
270
+ type: "primary",
271
+ htmlType: "submit",
272
+ "data-testid": "submit-button"
273
+ }, _i18next.default.t(`${_constants.NS_LIBS_CMDB_INSTANCES}:${_constants.K.SEARCH}`)), /*#__PURE__*/_react.default.createElement(_antd.Button, {
274
+ style: {
275
+ marginLeft: 8
276
+ },
277
+ onClick: this.handleReset,
278
+ "data-testid": "reset-button"
279
+ }, _i18next.default.t(`${_constants.NS_LIBS_CMDB_INSTANCES}:${_constants.K.RESET}`))))));
280
+ }
281
+
282
+ }
283
+
284
+ exports.DynamicSearchForm = DynamicSearchForm;
285
+
286
+ const DynamicSearch = _compatible.Form.create({
287
+ name: "dynamic_search"
288
+ })(DynamicSearchForm);
289
+
290
+ exports.DynamicSearch = DynamicSearch;
291
+ //# sourceMappingURL=DynamicSearch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/instance-list-table/DynamicSearch.tsx"],"names":["DynamicSearchForm","React","Component","constructor","props","value","fieldIndex","valueIndex","setState","fields","state","values","$set","e","onValueChange","target","preventDefault","onSearch","queries","queriesToShow","fieldToShow","forEach","field","expressions","fieldId","id","fieldQuery","fieldQueryToShow","hasValue","operator","comparisonOperator","ComparisonOperators","Like","logicalOperator","LogicalOperators","Or","fieldIdToShow","Array","isArray","length","map","push","undefined","q","form","resetFields","computeState","componentDidUpdate","prevProps","newState","setFormFieldValues","fieldQueryOperatorExpressionsMap","query","Object","entries","key","And","firstSubQuery","keys","compareOperator","subQueryValue","targetField","ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE","find","fieldItem","item","join","targetValue","NotLike","includes","slice","v","str","replace","reduce","acc","setFieldsValue","getFields","getFieldDecorator","name","styles","conditionInputGroup","i18n","t","NS_LIBS_CMDB_INSTANCES","K","OPERATOR_CONTAIN_DEFINE","initialValue","ADVANCE_SEARCH_SINGLE_INPUT_PLACEHOLDER","handleValueChange","render","dynamicSearch","dynamicSearchForm","handleSearch","textAlign","SEARCH","marginLeft","handleReset","RESET","DynamicSearch","Form","create"],"mappings":"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","sourcesContent":["import React, { FormEvent } from \"react\";\nimport update from \"immutability-helper\";\nimport { isEqual, isNil, isString, isArray, isEmpty } from \"lodash\";\nimport { Form } from \"@ant-design/compatible\";\nimport { Button, Col, Input, Row, Select } from \"antd\";\nimport { FormComponentProps } from \"@ant-design/compatible/lib/form\";\nimport {\n ComparisonOperators,\n LogicalOperators,\n Query,\n QueryOperatorExpressions,\n} from \"@next-libs/cmdb-utils\";\nimport styles from \"./DynamicSearch.module.css\";\nimport i18n from \"i18next\";\nimport { NS_LIBS_CMDB_INSTANCES, K } from \"../i18n/constants\";\nimport {\n processAttrValueWithQuote,\n ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE,\n} from \"../processors\";\n\nexport interface Field {\n id: string;\n name: string;\n values?: any[];\n}\n\nexport interface DynamicSearchFormProps extends FormComponentProps {\n fields: Record<string, any>[];\n q?: Query[];\n onSearch?(\n queries: Query[],\n queriesToShow?: Query[],\n fieldToShow?: Record<string, any[]>[]\n ): void;\n fieldToShow?: Record<string, any[]>[]; // 回填高级搜索的field值(根据query回填丢失了引号信息)\n}\n\nexport interface DynamicSearchFormState {\n fields: Field[];\n}\n\nexport class DynamicSearchForm extends React.Component<\n DynamicSearchFormProps,\n DynamicSearchFormState\n> {\n constructor(props: DynamicSearchFormProps) {\n super(props);\n\n this.state = this.computeState();\n }\n\n componentDidUpdate(prevProps: Readonly<DynamicSearchFormProps>): void {\n if (!isEqual(this.props.q, prevProps.q)) {\n const newState = this.computeState();\n this.setState(newState);\n this.setFormFieldValues(newState.fields);\n }\n }\n\n computeState(): { fields: Field[] } {\n const fieldQueryOperatorExpressionsMap: Record<\n string,\n QueryOperatorExpressions\n > = {};\n let fields: Field[] = [];\n if (this.props.q) {\n this.props.q.forEach((query) => {\n Object.entries(query).forEach(([key, expressions]) => {\n if (key === LogicalOperators.Or || key === LogicalOperators.And) {\n const firstSubQuery = (expressions as Query[])[0];\n const fieldId = Object.keys(firstSubQuery)[0];\n const compareOperator = Object.keys(firstSubQuery[fieldId])[0];\n let subQueryValue = \"\";\n let targetField;\n if (ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE) {\n targetField = this.props.fieldToShow?.find(\n (fieldItem) => Object.keys(fieldItem)[0] === fieldId\n );\n }\n if (!isNil(targetField)) {\n // 二维数组会有问题,\n subQueryValue = isArray(targetField[fieldId])\n ? targetField[fieldId]\n .map((item) => (isArray(item) ? item.join(\" \") : item))\n .join(\"\")\n : (targetField[fieldId] as any);\n } else {\n subQueryValue = (expressions as Query[])\n .map((query) => {\n const targetValue = (\n query[fieldId] as Record<ComparisonOperators, any>\n )[compareOperator as ComparisonOperators];\n if (\n compareOperator === ComparisonOperators.Like ||\n compareOperator === ComparisonOperators.NotLike\n ) {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `${targetValue[0]}\"${targetValue.slice(\n 1,\n targetValue.length - 1\n )}\"${targetValue[targetValue.length - 1]}`\n : targetValue;\n } else {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `\"${targetValue}\"`\n : targetValue;\n }\n })\n .join(\" \");\n }\n key = fieldId;\n expressions = {\n [compareOperator]: subQueryValue,\n };\n }\n\n fieldQueryOperatorExpressionsMap[key] =\n expressions as QueryOperatorExpressions;\n });\n });\n }\n if (this.props.fields) {\n fields = this.props.fields.map(\n (v) => ({ ...v, values: [null] } as Field)\n );\n if (!isEmpty(fieldQueryOperatorExpressionsMap)) {\n fields = this.props.fields.map((v) => {\n let str: any = null;\n if (fieldQueryOperatorExpressionsMap[v.id]) {\n const expressions = fieldQueryOperatorExpressionsMap[v.id][\"$like\"];\n str = expressions.replace(/%/g, \"\");\n }\n return {\n ...v,\n values: [str],\n } as Field;\n });\n }\n }\n return { fields };\n }\n\n setFormFieldValues(fields: Field[]): void {\n const values = fields.reduce<{ [key: string]: any }>((acc, field) => {\n acc[`${field.id}`] = field.values.join(\"\");\n return acc;\n }, {});\n this.props.form.setFieldsValue(values);\n }\n\n onValueChange = (value: any, fieldIndex: number, valueIndex: number) => {\n this.setState({\n fields: update(this.state.fields, {\n [fieldIndex]: { values: { [valueIndex]: { $set: value } } },\n }),\n });\n };\n\n getFields() {\n const { getFieldDecorator } = this.props.form;\n return this.state.fields.map((field, fieldIndex) => {\n return (\n <Col span={12} key={field.id}>\n <Form.Item label={field.name}>\n <Input.Group className={styles.conditionInputGroup} compact>\n <Select dropdownMatchSelectWidth={false} defaultValue={\"contain\"}>\n <Select.Option value={\"contain\"} key={\"contain\"}>\n {i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_CONTAIN_DEFINE}`\n )}\n </Select.Option>\n </Select>\n {getFieldDecorator(`${field.id}`, {\n initialValue: field.values || \"\",\n })(\n <Input\n placeholder={i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.ADVANCE_SEARCH_SINGLE_INPUT_PLACEHOLDER}`\n )}\n onChange={(e) => this.handleValueChange(e, fieldIndex)}\n />\n )}\n </Input.Group>\n </Form.Item>\n </Col>\n );\n });\n }\n\n handleValueChange = (e: any, fieldIndex: number) => {\n this.onValueChange(e.target.value, fieldIndex, 0);\n };\n\n handleSearch = (e: FormEvent<any>): void => {\n e.preventDefault();\n if (this.props.onSearch) {\n let queries: Query[] = [];\n let queriesToShow: Query[] = [];\n const fieldToShow: Record<string, any[]>[] = [];\n this.state.fields.forEach((field) => {\n const expressions: QueryOperatorExpressions = {};\n const fieldId = field.id;\n let fieldQuery: Query = { [fieldId]: expressions };\n let fieldQueryToShow: Query = { [fieldId]: expressions };\n let hasValue = false;\n const operator = {\n comparisonOperator: ComparisonOperators.Like,\n logicalOperator: LogicalOperators.Or,\n };\n field.values.forEach((value) => {\n fieldQuery = { [field.id]: expressions };\n const fieldIdToShow = field.id;\n fieldQueryToShow = { [fieldIdToShow]: expressions };\n if (\n value !== null &&\n value !== \"\" &&\n !(Array.isArray(value) && value.length === 0)\n ) {\n let values: any[];\n if (typeof value === \"string\") {\n values = processAttrValueWithQuote(value, []);\n }\n if (values.length) {\n fieldQuery = {\n [operator.logicalOperator]: values.map((value) => {\n return {\n [fieldId]: {\n [operator.comparisonOperator]: `%${value}%`,\n },\n };\n }),\n };\n }\n fieldQueryToShow = {\n [operator.logicalOperator]: values.map((value) => {\n return {\n [fieldIdToShow]: {\n [operator.comparisonOperator]: `%${value}%`,\n },\n };\n }),\n };\n hasValue = true;\n fieldToShow.push({ [field.id]: field.values });\n }\n });\n if (hasValue) {\n queries.push(fieldQuery);\n queriesToShow.push(fieldQueryToShow);\n }\n });\n if (queries.length === 0) {\n queries = undefined;\n queriesToShow = undefined;\n }\n if (!isEqual(this.props.q, queries)) {\n this.props.onSearch(queries, queriesToShow, fieldToShow);\n }\n }\n };\n\n handleReset = () => {\n this.props.onSearch([], [], []);\n this.props.form.resetFields();\n };\n\n render(): React.ReactNode {\n return (\n <div className={styles.dynamicSearch}>\n <Form\n layout=\"vertical\"\n className={styles.dynamicSearchForm}\n onSubmit={this.handleSearch}\n >\n <Row gutter={50}>{this.getFields()}</Row>\n <Row>\n <Col span={24} style={{ textAlign: \"right\" }}>\n <Button\n type=\"primary\"\n htmlType=\"submit\"\n data-testid=\"submit-button\"\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.SEARCH}`)}\n </Button>\n <Button\n style={{ marginLeft: 8 }}\n onClick={this.handleReset}\n data-testid=\"reset-button\"\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.RESET}`)}\n </Button>\n </Col>\n </Row>\n </Form>\n </div>\n );\n }\n}\n\nexport const DynamicSearch = Form.create<DynamicSearchFormProps>({\n name: \"dynamic_search\",\n})(DynamicSearchForm);\n"],"file":"DynamicSearch.js"}
@@ -1,14 +1,11 @@
1
1
  import _objectSpread from "@babel/runtime/helpers/objectSpread2";
2
- import React, { useMemo, useReducer } from "react";
2
+ import React, { useReducer } from "react";
3
3
  import i18n from "i18next";
4
4
  import { K, NS_LIBS_CMDB_INSTANCES } from "../i18n/constants";
5
- import { getRelationObjectSides, getInstanceNameKeys, isSelfRelation, ElementOperators } from "@next-libs/cmdb-utils";
6
- import { CMDB_MODAL_FIELDS_SETTINGS, CMDB_RESOURCE_FIELDS_SETTINGS } from "./constants";
7
- import { changeQueryWithCustomRules } from "../processors";
8
- import { initAqToShow } from "../instance-list/InstanceList";
9
- import { difference, isEmpty, isEqual, isString, map, uniq, filter, reject, sortBy, uniqueId, findIndex, find, startsWith, omit } from "lodash";
5
+ import { LogicalOperators } from "@next-libs/cmdb-utils";
6
+ import { DynamicSearch } from "./DynamicSearch";
7
+ import { isEmpty, uniqueId, startsWith } from "lodash";
10
8
  import { Tag } from "antd";
11
- import { AdvancedSearch, ConditionType, getFieldConditionsAndValues } from "./AdvancedSearch";
12
9
  import styles from "./AdvancedSearchCondition.module.css";
13
10
 
14
11
  /* istanbul ignore next */
@@ -32,97 +29,55 @@ var reducer = (prevState, updatedProperty) => {
32
29
  return _objectSpread(_objectSpread({}, prevState), updatedProperty);
33
30
  };
34
31
 
35
- function translateConditions(aq, idObjectMap, modelData, t) {
36
- var conditions = [];
37
- var relations = [];
38
- modelData.relation_list.forEach(relation => {
39
- var sidesArr = [];
40
-
41
- if (isSelfRelation(relation)) {
42
- sidesArr = [{
43
- this: "left",
44
- that: "right"
45
- }, {
46
- this: "right",
47
- that: "left"
48
- }];
49
- } else {
50
- sidesArr = [getRelationObjectSides(relation, modelData)];
51
- }
32
+ export var formatAqToShow = aq => {
33
+ var newAqToShow = [];
52
34
 
53
- sidesArr.forEach(sides => {
54
- var objectId = relation["".concat(sides.this, "_id")];
55
- var relationObject = idObjectMap[relation["".concat(sides.that, "_object_id")]];
56
- var nameKeys = getInstanceNameKeys(relationObject);
57
- nameKeys.forEach(nameKey => {
58
- var _find$name, _find;
35
+ if (aq) {
36
+ aq.forEach(query => {
37
+ var aqToShow = Object.entries(query).map(_ref => {
38
+ var [key, expressions] = _ref;
39
+ var newExpressions = [];
59
40
 
60
- var nameOfNameKey = (_find$name = (_find = find(relationObject === null || relationObject === void 0 ? void 0 : relationObject.attrList, ["id", nameKey])) === null || _find === void 0 ? void 0 : _find.name) !== null && _find$name !== void 0 ? _find$name : nameKey;
61
- var id = "".concat(objectId, ".").concat(nameKey);
62
- var name = "".concat(relation["".concat(sides.this, "_name")], "(").concat(nameOfNameKey, ")");
63
- relations.push({
64
- id,
65
- name,
66
- value: {
67
- type: "str"
68
- },
69
- relationSideId: relation["".concat(sides.this, "_id")]
70
- });
71
- });
72
- relations.push({
73
- id: "".concat(objectId, "."),
74
- name: "".concat(relation["".concat(sides.this, "_name")]),
75
- value: {
76
- type: "str"
77
- },
78
- relationSideId: relation["".concat(sides.this, "_id")]
41
+ if (key === LogicalOperators.Or || key === LogicalOperators.And) {
42
+ newExpressions = [...newExpressions, ...expressions];
43
+ return {
44
+ [key]: newExpressions
45
+ };
46
+ } else {
47
+ return query;
48
+ }
79
49
  });
50
+ newAqToShow = [...newAqToShow, ...aqToShow];
80
51
  });
81
- });
82
- var attrAndRelationList = [...modelData.attrList, ...relations];
52
+ return newAqToShow;
53
+ }
54
+
55
+ return newAqToShow;
56
+ };
57
+
58
+ function translateAqConditions(aq, fields) {
59
+ var conditions = [];
83
60
 
84
61
  if (!isEmpty(aq)) {
85
62
  for (var query of aq) {
86
63
  var _queries = [query];
87
64
 
88
- if (Object.keys(query)[0] === "$or" || Object.keys(query)[0] === "$and") {
65
+ if (Object.keys(query)[0] === LogicalOperators.Or || Object.keys(query)[0] === LogicalOperators.And) {
89
66
  _queries = query[Object.keys(query)[0]];
90
67
  }
91
68
 
92
69
  _queries.forEach(query => {
93
70
  var key = Object.keys(query)[0];
94
71
  var value = Object.values(query)[0];
95
- var attr = attrAndRelationList.find(attr => attr.id === key || attr.relationSideId === key);
96
-
97
- if (Object.keys(value)[0] === ElementOperators.Exists && attr.relationSideId) {
98
- var relationSideId = attr.relationSideId;
99
- attr = attrAndRelationList.find(attr => attr.id === "".concat(relationSideId, ".")) || attr;
100
- }
101
-
102
- if (attr) {
103
- query = changeQueryWithCustomRules(modelData.objectId, attr.id, query);
104
- var info = getFieldConditionsAndValues(query, key, attr.value.type, undefined, undefined, modelData.objectId, attr.id);
105
-
106
- if (![ConditionType.Between, ConditionType.Empty, ConditionType.NotEmpty, ConditionType.False, ConditionType.True].includes(info.currentCondition.type)) {
107
- info.values = info.values.map(v => isString(v) && v.includes(" ") ? v.replace(/^"+|"+$/g, "") : v);
108
- }
109
-
110
- var condition = "".concat(attr.name, ": ").concat(info.currentCondition.label);
111
-
112
- if (![ConditionType.Empty, ConditionType.NotEmpty].includes(info.currentCondition.type)) {
113
- condition += "\"".concat(info.values.join(" ~ "), "\"");
114
- }
115
-
116
- var curCondition = {
117
- attrId: key,
118
- condition,
119
- valuesStr: info.queryValuesStr
120
- };
121
-
122
- if (conditions.every(v => !isEqual(omit(v, "attrId"), omit(curCondition, "attrId")))) {
123
- conditions.push(curCondition);
124
- }
125
- }
72
+ var attr = fields.find(v => v.id === key);
73
+ var contain = i18n.t("".concat(NS_LIBS_CMDB_INSTANCES, ":").concat(K.OPERATOR_CONTAIN_DEFINE));
74
+ var condition = "".concat(attr === null || attr === void 0 ? void 0 : attr.name, ":").concat(contain, "\"").concat(Object.values(value)[0].replace(/%/g, ""), "\"");
75
+ var curCondition = {
76
+ attrId: key,
77
+ condition,
78
+ valuesStr: Object.values(value)[0]
79
+ };
80
+ conditions.push(curCondition);
126
81
  });
127
82
  }
128
83
  }
@@ -131,87 +86,11 @@ function translateConditions(aq, idObjectMap, modelData, t) {
131
86
  }
132
87
 
133
88
  export function AdvancedSearchCondition(props) {
134
- var {
135
- modelData,
136
- idObjectMap
137
- } = useMemo(() => {
138
- var modelData;
139
- var idObjectMap = {};
140
- props.objectList.forEach(object => {
141
- idObjectMap[object.objectId] = object;
142
-
143
- if (object.objectId === props.objectId) {
144
- modelData = object;
145
- modelData.attrList = object.attrList;
146
- }
147
- });
148
- return {
149
- modelData,
150
- idObjectMap
151
- };
152
- }, [props.objectList, props.objectId]);
153
-
154
- var computeDefaultFields = function () {
155
- var {
156
- inModal
157
- } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
158
- inModal: false
159
- };
160
- // 原来有隐藏逻辑,针对 APP、HOST、USER、USER_GROUP模型,默认字段特殊处理了,现产品要求干掉,统一取8个默认字段,也不区分是否是内置模型
161
- var settings = inModal ? CMDB_MODAL_FIELDS_SETTINGS : CMDB_RESOURCE_FIELDS_SETTINGS;
162
- var ignoredFields = settings.ignoredFields[modelData.objectId] || [];
163
- var fieldIds = difference(uniq(map(modelData.attrList, "id")), ignoredFields).slice(0, 8);
164
- var hideModelData = modelData.view.hide_columns || [];
165
- fieldIds = fieldIds.filter(field => !hideModelData.includes(field));
166
- return {
167
- fieldIds
168
- };
169
- }; // 根据用户预定义的 presetConfigs.fieldIds 进行排序,如果不在预定义的字段,则根据 modelData.view.attr_order 进行排序
170
-
171
-
172
- var _sortFieldIds = fieldIds => {
173
- var _props$fieldIds;
174
-
175
- var frontFields = [];
176
- var restFields = [];
177
-
178
- if ((_props$fieldIds = props.fieldIds) !== null && _props$fieldIds !== void 0 && _props$fieldIds.length) {
179
- frontFields = filter(props.fieldIds, id => fieldIds.includes(id));
180
- }
181
-
182
- restFields = sortBy(reject(fieldIds, id => frontFields.includes(id)), fieldId => {
183
- var foundIndex = findIndex(modelData.view.attr_order, orderId => orderId === fieldId);
184
-
185
- if (foundIndex === -1) {
186
- return null;
187
- } else {
188
- return foundIndex;
189
- }
190
- });
191
- return [...frontFields, ...restFields];
192
- };
193
-
194
- var getFields = () => {
195
- var _fieldIds;
196
-
197
- var fieldIds = props.fieldIds;
198
-
199
- if (!((_fieldIds = fieldIds) !== null && _fieldIds !== void 0 && _fieldIds.length)) {
200
- fieldIds = computeDefaultFields().fieldIds;
201
- }
202
-
203
- fieldIds = _sortFieldIds(fieldIds);
204
- var hideModelData = modelData.view.hide_columns || [];
205
- fieldIds = fieldIds.filter(field => !hideModelData.includes(field));
206
- modelData.isAbstract && fieldIds.push("_object_id");
207
- return fieldIds;
208
- };
209
-
210
89
  var [state, setState] = useReducer(reducer, undefined, () => ({
211
- objectId: props.objectId,
212
- aq: initAqToShow(props.aq, modelData, false),
213
- aqToShow: props.aqToShow || initAqToShow(props.aq, modelData),
214
- fieldIds: getFields()
90
+ aq: formatAqToShow(props.aq),
91
+ aqToShow: props.aqToShow || formatAqToShow(props.aq),
92
+ fieldIds: (props.fields || []).map(v => v.id),
93
+ fields: props.fields || []
215
94
  }));
216
95
 
217
96
  var onAdvancedSearch = (queries, queriesToShow, fieldToShow) => {
@@ -224,6 +103,8 @@ export function AdvancedSearchCondition(props) {
224
103
  });
225
104
  (_props$onAdvancedSear = props.onAdvancedSearch) === null || _props$onAdvancedSear === void 0 ? void 0 : _props$onAdvancedSear.call(props, queries);
226
105
  };
106
+ /* istanbul ignore next */
107
+
227
108
 
228
109
  var onAdvancedSearchCloseGen = (attrId, valuesStr) => {
229
110
  return () => {
@@ -247,40 +128,30 @@ export function AdvancedSearchCondition(props) {
247
128
  queries.push(query);
248
129
  };
249
130
 
250
- state.aq.forEach(query => {
251
- var key = Object.keys(query)[0];
252
-
253
- if ((key === "$or" || key === "$and") && Object.keys(query[key][0])[0] === attrId) {
254
- var filteredSubQueries = filterAq(query[key]);
255
-
256
- if (filteredSubQueries.length > 0) {
257
- queries.push({
258
- [key]: filteredSubQueries
259
- });
131
+ var formatAqQuery = (querys, queries, isAq) => {
132
+ querys.forEach(query => {
133
+ var key = Object.keys(query)[0];
134
+ var isKey = key !== attrId;
135
+ var isStart = isAq ? isKey && !startsWith(attrId, "".concat(key, ".")) : isKey;
136
+
137
+ if ((key === "$or" || key === "$and") && Object.keys(query[key][0])[0] === attrId) {
138
+ var filteredSubQueries = filterAq(query[key]);
139
+
140
+ if (filteredSubQueries.length > 0) {
141
+ queries.push({
142
+ [key]: filteredSubQueries
143
+ });
144
+ }
145
+ } else if (isStart) {
146
+ queries.push(query);
147
+ } else if (props.isInstanceFilterForm && key === attrId && isValueEqual(query)) {
148
+ specialQueryHandler(query, key, queries);
260
149
  }
261
- } else if (key !== attrId && !startsWith(attrId, "".concat(key, "."))) {
262
- queries.push(query);
263
- } else if (props.isInstanceFilterForm && key === attrId && isValueEqual(query)) {
264
- specialQueryHandler(query, key, queries);
265
- }
266
- });
267
- state.aqToShow.forEach(query => {
268
- var key = Object.keys(query)[0];
269
-
270
- if ((key === "$or" || key === "$and") && Object.keys(query[key][0])[0] === attrId) {
271
- var filteredSubQueries = filterAq(query[key]);
150
+ });
151
+ };
272
152
 
273
- if (filteredSubQueries.length > 0) {
274
- queriesToShow.push({
275
- [key]: filteredSubQueries
276
- });
277
- }
278
- } else if (key !== attrId) {
279
- queriesToShow.push(query);
280
- } else if (props.isInstanceFilterForm && key === attrId && isValueEqual(query)) {
281
- specialQueryHandler(query, key, queriesToShow);
282
- }
283
- });
153
+ formatAqQuery(state.aq, queries, true);
154
+ formatAqQuery(state.aqToShow, queriesToShow, false);
284
155
  setState({
285
156
  aq: queries,
286
157
  aqToShow: queriesToShow
@@ -289,21 +160,19 @@ export function AdvancedSearchCondition(props) {
289
160
  };
290
161
  };
291
162
 
292
- var conditions = translateConditions(state.aqToShow, idObjectMap, modelData);
163
+ var conditions = translateAqConditions(state.aqToShow, state.fields);
293
164
  return /*#__PURE__*/React.createElement("div", {
294
165
  className: styles.advancedSearchWrapper
295
166
  }, /*#__PURE__*/React.createElement("div", {
296
167
  style: {
297
168
  marginBottom: "18px"
298
169
  }
299
- }, /*#__PURE__*/React.createElement(AdvancedSearch, {
300
- modelData: modelData,
301
- idObjectMap: idObjectMap,
170
+ }, /*#__PURE__*/React.createElement(DynamicSearch, {
171
+ fields: state.fields,
172
+ onSearch: onAdvancedSearch,
302
173
  key: newKey(state.fieldIds, state.aq),
303
- fieldIds: state.fieldIds,
304
174
  q: state.aqToShow,
305
- fieldToShow: state.fieldToShow,
306
- onSearch: onAdvancedSearch
175
+ fieldToShow: state.fieldToShow
307
176
  })), !props.hideSearchConditions && !isEmpty(conditions) && /*#__PURE__*/React.createElement("div", {
308
177
  className: styles.searchConditions
309
178
  }, /*#__PURE__*/React.createElement("span", null, i18n.t("".concat(NS_LIBS_CMDB_INSTANCES, ":").concat(K.CURRENT_FILTER_REQUIREMENTS))), conditions.map(condition => /*#__PURE__*/React.createElement(Tag, {