@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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [6.27.1](https://github.com/easyops-cn/next-libs/compare/@next-libs/cmdb-instances@6.27.0...@next-libs/cmdb-instances@6.27.1) (2022-05-31)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * 新增动态筛选的构件 ([19e81d9](https://github.com/easyops-cn/next-libs/commit/19e81d90823904ef2d1189c6c230d588363f17b3))
12
+
13
+
14
+
15
+
16
+
6
17
  # [6.27.0](https://github.com/easyops-cn/next-libs/compare/@next-libs/cmdb-instances@6.26.8...@next-libs/cmdb-instances@6.27.0) (2022-05-30)
7
18
 
8
19
 
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
10
  exports.AdvancedSearchCondition = AdvancedSearchCondition;
11
+ exports.formatAqToShow = void 0;
11
12
 
12
13
  var _react = _interopRequireWildcard(require("react"));
13
14
 
@@ -17,18 +18,12 @@ var _constants = require("../i18n/constants");
17
18
 
18
19
  var _cmdbUtils = require("@next-libs/cmdb-utils");
19
20
 
20
- var _constants2 = require("./constants");
21
-
22
- var _processors = require("../processors");
23
-
24
- var _InstanceList = require("../instance-list/InstanceList");
21
+ var _DynamicSearch = require("./DynamicSearch");
25
22
 
26
23
  var _lodash = require("lodash");
27
24
 
28
25
  var _antd = require("antd");
29
26
 
30
- var _AdvancedSearch = require("./AdvancedSearch");
31
-
32
27
  var _AdvancedSearchConditionModule = _interopRequireDefault(require("./AdvancedSearchCondition.module.css"));
33
28
 
34
29
  /* istanbul ignore next */
@@ -54,97 +49,58 @@ const reducer = (prevState, updatedProperty) => {
54
49
  };
55
50
  };
56
51
 
57
- function translateConditions(aq, idObjectMap, modelData, t) {
58
- const conditions = [];
59
- const relations = [];
60
- modelData.relation_list.forEach(relation => {
61
- let sidesArr = [];
62
-
63
- if ((0, _cmdbUtils.isSelfRelation)(relation)) {
64
- sidesArr = [{
65
- this: "left",
66
- that: "right"
67
- }, {
68
- this: "right",
69
- that: "left"
70
- }];
71
- } else {
72
- sidesArr = [(0, _cmdbUtils.getRelationObjectSides)(relation, modelData)];
73
- }
52
+ const formatAqToShow = aq => {
53
+ let newAqToShow = [];
74
54
 
75
- sidesArr.forEach(sides => {
76
- const objectId = relation[`${sides.this}_id`];
77
- const relationObject = idObjectMap[relation[`${sides.that}_object_id`]];
78
- const nameKeys = (0, _cmdbUtils.getInstanceNameKeys)(relationObject);
79
- nameKeys.forEach(nameKey => {
80
- var _find$name, _find;
81
-
82
- const nameOfNameKey = (_find$name = (_find = (0, _lodash.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;
83
- const id = `${objectId}.${nameKey}`;
84
- const name = `${relation[`${sides.this}_name`]}(${nameOfNameKey})`;
85
- relations.push({
86
- id,
87
- name,
88
- value: {
89
- type: "str"
90
- },
91
- relationSideId: relation[`${sides.this}_id`]
92
- });
93
- });
94
- relations.push({
95
- id: `${objectId}.`,
96
- name: `${relation[`${sides.this}_name`]}`,
97
- value: {
98
- type: "str"
99
- },
100
- relationSideId: relation[`${sides.this}_id`]
55
+ if (aq) {
56
+ aq.forEach(query => {
57
+ const aqToShow = Object.entries(query).map(([key, expressions]) => {
58
+ let newExpressions = [];
59
+
60
+ if (key === _cmdbUtils.LogicalOperators.Or || key === _cmdbUtils.LogicalOperators.And) {
61
+ newExpressions = [...newExpressions, ...expressions];
62
+ return {
63
+ [key]: newExpressions
64
+ };
65
+ } else {
66
+ return query;
67
+ }
101
68
  });
69
+ newAqToShow = [...newAqToShow, ...aqToShow];
102
70
  });
103
- });
104
- const attrAndRelationList = [...modelData.attrList, ...relations];
71
+ return newAqToShow;
72
+ }
73
+
74
+ return newAqToShow;
75
+ };
76
+
77
+ exports.formatAqToShow = formatAqToShow;
78
+
79
+ function translateAqConditions(aq, fields) {
80
+ const conditions = [];
105
81
 
106
82
  if (!(0, _lodash.isEmpty)(aq)) {
107
83
  for (const query of aq) {
108
84
  let queries = [query];
109
85
 
110
- if (Object.keys(query)[0] === "$or" || Object.keys(query)[0] === "$and") {
86
+ if (Object.keys(query)[0] === _cmdbUtils.LogicalOperators.Or || Object.keys(query)[0] === _cmdbUtils.LogicalOperators.And) {
111
87
  queries = query[Object.keys(query)[0]];
112
88
  }
113
89
 
114
90
  queries.forEach(query => {
115
91
  const key = Object.keys(query)[0];
116
92
  const value = Object.values(query)[0];
117
- let attr = attrAndRelationList.find(attr => attr.id === key || attr.relationSideId === key);
93
+ const attr = fields.find(v => v.id === key);
118
94
 
119
- if (Object.keys(value)[0] === _cmdbUtils.ElementOperators.Exists && attr.relationSideId) {
120
- const relationSideId = attr.relationSideId;
121
- attr = attrAndRelationList.find(attr => attr.id === `${relationSideId}.`) || attr;
122
- }
123
-
124
- if (attr) {
125
- query = (0, _processors.changeQueryWithCustomRules)(modelData.objectId, attr.id, query);
126
- const info = (0, _AdvancedSearch.getFieldConditionsAndValues)(query, key, attr.value.type, undefined, undefined, modelData.objectId, attr.id);
127
-
128
- if (![_AdvancedSearch.ConditionType.Between, _AdvancedSearch.ConditionType.Empty, _AdvancedSearch.ConditionType.NotEmpty, _AdvancedSearch.ConditionType.False, _AdvancedSearch.ConditionType.True].includes(info.currentCondition.type)) {
129
- info.values = info.values.map(v => (0, _lodash.isString)(v) && v.includes(" ") ? v.replace(/^"+|"+$/g, "") : v);
130
- }
95
+ const contain = _i18next.default.t(`${_constants.NS_LIBS_CMDB_INSTANCES}:${_constants.K.OPERATOR_CONTAIN_DEFINE}`);
131
96
 
132
- let condition = `${attr.name}: ${info.currentCondition.label}`;
133
-
134
- if (![_AdvancedSearch.ConditionType.Empty, _AdvancedSearch.ConditionType.NotEmpty].includes(info.currentCondition.type)) {
135
- condition += `"${info.values.join(" ~ ")}"`;
136
- }
137
-
138
- const curCondition = {
139
- attrId: key,
140
- condition,
141
- valuesStr: info.queryValuesStr
142
- };
143
-
144
- if (conditions.every(v => !(0, _lodash.isEqual)((0, _lodash.omit)(v, "attrId"), (0, _lodash.omit)(curCondition, "attrId")))) {
145
- conditions.push(curCondition);
146
- }
147
- }
97
+ const condition = `${attr === null || attr === void 0 ? void 0 : attr.name}:${contain}"${Object.values(value)[0].replace(/%/g, "")}"`;
98
+ const curCondition = {
99
+ attrId: key,
100
+ condition,
101
+ valuesStr: Object.values(value)[0]
102
+ };
103
+ conditions.push(curCondition);
148
104
  });
149
105
  }
150
106
  }
@@ -153,86 +109,11 @@ function translateConditions(aq, idObjectMap, modelData, t) {
153
109
  }
154
110
 
155
111
  function AdvancedSearchCondition(props) {
156
- const {
157
- modelData,
158
- idObjectMap
159
- } = (0, _react.useMemo)(() => {
160
- let modelData;
161
- const idObjectMap = {};
162
- props.objectList.forEach(object => {
163
- idObjectMap[object.objectId] = object;
164
-
165
- if (object.objectId === props.objectId) {
166
- modelData = object;
167
- modelData.attrList = object.attrList;
168
- }
169
- });
170
- return {
171
- modelData,
172
- idObjectMap
173
- };
174
- }, [props.objectList, props.objectId]);
175
-
176
- const computeDefaultFields = ({
177
- inModal
178
- } = {
179
- inModal: false
180
- }) => {
181
- // 原来有隐藏逻辑,针对 APP、HOST、USER、USER_GROUP模型,默认字段特殊处理了,现产品要求干掉,统一取8个默认字段,也不区分是否是内置模型
182
- const settings = inModal ? _constants2.CMDB_MODAL_FIELDS_SETTINGS : _constants2.CMDB_RESOURCE_FIELDS_SETTINGS;
183
- const ignoredFields = settings.ignoredFields[modelData.objectId] || [];
184
- let fieldIds = (0, _lodash.difference)((0, _lodash.uniq)((0, _lodash.map)(modelData.attrList, "id")), ignoredFields).slice(0, 8);
185
- const hideModelData = modelData.view.hide_columns || [];
186
- fieldIds = fieldIds.filter(field => !hideModelData.includes(field));
187
- return {
188
- fieldIds
189
- };
190
- }; // 根据用户预定义的 presetConfigs.fieldIds 进行排序,如果不在预定义的字段,则根据 modelData.view.attr_order 进行排序
191
-
192
-
193
- const _sortFieldIds = fieldIds => {
194
- var _props$fieldIds;
195
-
196
- let frontFields = [];
197
- let restFields = [];
198
-
199
- if ((_props$fieldIds = props.fieldIds) !== null && _props$fieldIds !== void 0 && _props$fieldIds.length) {
200
- frontFields = (0, _lodash.filter)(props.fieldIds, id => fieldIds.includes(id));
201
- }
202
-
203
- restFields = (0, _lodash.sortBy)((0, _lodash.reject)(fieldIds, id => frontFields.includes(id)), fieldId => {
204
- const foundIndex = (0, _lodash.findIndex)(modelData.view.attr_order, orderId => orderId === fieldId);
205
-
206
- if (foundIndex === -1) {
207
- return null;
208
- } else {
209
- return foundIndex;
210
- }
211
- });
212
- return [...frontFields, ...restFields];
213
- };
214
-
215
- const getFields = () => {
216
- var _fieldIds;
217
-
218
- let fieldIds = props.fieldIds;
219
-
220
- if (!((_fieldIds = fieldIds) !== null && _fieldIds !== void 0 && _fieldIds.length)) {
221
- fieldIds = computeDefaultFields().fieldIds;
222
- }
223
-
224
- fieldIds = _sortFieldIds(fieldIds);
225
- const hideModelData = modelData.view.hide_columns || [];
226
- fieldIds = fieldIds.filter(field => !hideModelData.includes(field));
227
- modelData.isAbstract && fieldIds.push("_object_id");
228
- return fieldIds;
229
- };
230
-
231
112
  const [state, setState] = (0, _react.useReducer)(reducer, undefined, () => ({
232
- objectId: props.objectId,
233
- aq: (0, _InstanceList.initAqToShow)(props.aq, modelData, false),
234
- aqToShow: props.aqToShow || (0, _InstanceList.initAqToShow)(props.aq, modelData),
235
- fieldIds: getFields()
113
+ aq: formatAqToShow(props.aq),
114
+ aqToShow: props.aqToShow || formatAqToShow(props.aq),
115
+ fieldIds: (props.fields || []).map(v => v.id),
116
+ fields: props.fields || []
236
117
  }));
237
118
 
238
119
  const onAdvancedSearch = (queries, queriesToShow, fieldToShow) => {
@@ -245,6 +126,8 @@ function AdvancedSearchCondition(props) {
245
126
  });
246
127
  (_props$onAdvancedSear = props.onAdvancedSearch) === null || _props$onAdvancedSear === void 0 ? void 0 : _props$onAdvancedSear.call(props, queries);
247
128
  };
129
+ /* istanbul ignore next */
130
+
248
131
 
249
132
  const onAdvancedSearchCloseGen = (attrId, valuesStr) => {
250
133
  return () => {
@@ -268,40 +151,30 @@ function AdvancedSearchCondition(props) {
268
151
  queries.push(query);
269
152
  };
270
153
 
271
- state.aq.forEach(query => {
272
- const key = Object.keys(query)[0];
273
-
274
- if ((key === "$or" || key === "$and") && Object.keys(query[key][0])[0] === attrId) {
275
- const filteredSubQueries = filterAq(query[key]);
276
-
277
- if (filteredSubQueries.length > 0) {
278
- queries.push({
279
- [key]: filteredSubQueries
280
- });
154
+ const formatAqQuery = (querys, queries, isAq) => {
155
+ querys.forEach(query => {
156
+ const key = Object.keys(query)[0];
157
+ const isKey = key !== attrId;
158
+ const isStart = isAq ? isKey && !(0, _lodash.startsWith)(attrId, `${key}.`) : isKey;
159
+
160
+ if ((key === "$or" || key === "$and") && Object.keys(query[key][0])[0] === attrId) {
161
+ const filteredSubQueries = filterAq(query[key]);
162
+
163
+ if (filteredSubQueries.length > 0) {
164
+ queries.push({
165
+ [key]: filteredSubQueries
166
+ });
167
+ }
168
+ } else if (isStart) {
169
+ queries.push(query);
170
+ } else if (props.isInstanceFilterForm && key === attrId && isValueEqual(query)) {
171
+ specialQueryHandler(query, key, queries);
281
172
  }
282
- } else if (key !== attrId && !(0, _lodash.startsWith)(attrId, `${key}.`)) {
283
- queries.push(query);
284
- } else if (props.isInstanceFilterForm && key === attrId && isValueEqual(query)) {
285
- specialQueryHandler(query, key, queries);
286
- }
287
- });
288
- state.aqToShow.forEach(query => {
289
- const key = Object.keys(query)[0];
290
-
291
- if ((key === "$or" || key === "$and") && Object.keys(query[key][0])[0] === attrId) {
292
- const filteredSubQueries = filterAq(query[key]);
173
+ });
174
+ };
293
175
 
294
- if (filteredSubQueries.length > 0) {
295
- queriesToShow.push({
296
- [key]: filteredSubQueries
297
- });
298
- }
299
- } else if (key !== attrId) {
300
- queriesToShow.push(query);
301
- } else if (props.isInstanceFilterForm && key === attrId && isValueEqual(query)) {
302
- specialQueryHandler(query, key, queriesToShow);
303
- }
304
- });
176
+ formatAqQuery(state.aq, queries, true);
177
+ formatAqQuery(state.aqToShow, queriesToShow, false);
305
178
  setState({
306
179
  aq: queries,
307
180
  aqToShow: queriesToShow
@@ -310,21 +183,19 @@ function AdvancedSearchCondition(props) {
310
183
  };
311
184
  };
312
185
 
313
- const conditions = translateConditions(state.aqToShow, idObjectMap, modelData);
186
+ const conditions = translateAqConditions(state.aqToShow, state.fields);
314
187
  return /*#__PURE__*/_react.default.createElement("div", {
315
188
  className: _AdvancedSearchConditionModule.default.advancedSearchWrapper
316
189
  }, /*#__PURE__*/_react.default.createElement("div", {
317
190
  style: {
318
191
  marginBottom: "18px"
319
192
  }
320
- }, /*#__PURE__*/_react.default.createElement(_AdvancedSearch.AdvancedSearch, {
321
- modelData: modelData,
322
- idObjectMap: idObjectMap,
193
+ }, /*#__PURE__*/_react.default.createElement(_DynamicSearch.DynamicSearch, {
194
+ fields: state.fields,
195
+ onSearch: onAdvancedSearch,
323
196
  key: newKey(state.fieldIds, state.aq),
324
- fieldIds: state.fieldIds,
325
197
  q: state.aqToShow,
326
- fieldToShow: state.fieldToShow,
327
- onSearch: onAdvancedSearch
198
+ fieldToShow: state.fieldToShow
328
199
  })), !props.hideSearchConditions && !(0, _lodash.isEmpty)(conditions) && /*#__PURE__*/_react.default.createElement("div", {
329
200
  className: _AdvancedSearchConditionModule.default.searchConditions
330
201
  }, /*#__PURE__*/_react.default.createElement("span", null, _i18next.default.t(`${_constants.NS_LIBS_CMDB_INSTANCES}:${_constants.K.CURRENT_FILTER_REQUIREMENTS}`)), conditions.map(condition => /*#__PURE__*/_react.default.createElement(_antd.Tag, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/instance-list-table/AdvancedSearchCondition.tsx"],"names":["newKey","fieldIds","aq","key","join","length","reducer","prevState","updatedProperty","translateConditions","idObjectMap","modelData","t","conditions","relations","relation_list","forEach","relation","sidesArr","this","that","sides","objectId","relationObject","nameKeys","nameKey","nameOfNameKey","attrList","name","id","push","value","type","relationSideId","attrAndRelationList","query","queries","Object","keys","values","attr","find","ElementOperators","Exists","info","undefined","ConditionType","Between","Empty","NotEmpty","False","True","includes","currentCondition","map","v","replace","condition","label","curCondition","attrId","valuesStr","queryValuesStr","every","AdvancedSearchCondition","props","objectList","object","computeDefaultFields","inModal","settings","CMDB_MODAL_FIELDS_SETTINGS","CMDB_RESOURCE_FIELDS_SETTINGS","ignoredFields","slice","hideModelData","view","hide_columns","filter","field","_sortFieldIds","frontFields","restFields","fieldId","foundIndex","attr_order","orderId","getFields","isAbstract","state","setState","aqToShow","onAdvancedSearch","queriesToShow","fieldToShow","onAdvancedSearchCloseGen","isValueEqual","filterAq","specialQueryHandler","isSpecial","some","filteredSubQueries","isInstanceFilterForm","styles","advancedSearchWrapper","marginBottom","hideSearchConditions","searchConditions","i18n","NS_LIBS_CMDB_INSTANCES","K","CURRENT_FILTER_REQUIREMENTS"],"mappings":"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","sourcesContent":["import React, { useMemo, useReducer } from \"react\";\nimport { CmdbModels } from \"@next-sdk/cmdb-sdk\";\nimport i18n from \"i18next\";\nimport { K, NS_LIBS_CMDB_INSTANCES } from \"../i18n/constants\";\nimport {\n getRelationObjectSides,\n getInstanceNameKeys,\n RelationIdKeys,\n RelationNameKeys,\n RelationObjectIdKeys,\n RelationObjectSides,\n isSelfRelation,\n Query,\n ElementOperators,\n} from \"@next-libs/cmdb-utils\";\nimport {\n extraFieldAttrs,\n CMDB_MODAL_FIELDS_SETTINGS,\n CMDB_RESOURCE_FIELDS_SETTINGS,\n} from \"./constants\";\nimport { ModelAttributeValueType } from \"../model-attribute-form-control/ModelAttributeFormControl\";\nimport { changeQueryWithCustomRules } from \"../processors\";\nimport { initAqToShow } from \"../instance-list/InstanceList\";\nimport {\n difference,\n isEmpty,\n isEqual,\n isString,\n map,\n uniq,\n filter,\n reject,\n sortBy,\n uniqueId,\n findIndex,\n find,\n startsWith,\n omit,\n} from \"lodash\";\nimport { Tag } from \"antd\";\nimport {\n AdvancedSearch,\n ConditionType,\n getFieldConditionsAndValues,\n} from \"./AdvancedSearch\";\nimport styles from \"./AdvancedSearchCondition.module.css\";\n\nexport interface AdvancedSearchConditionProps {\n objectId: string;\n objectList: Partial<CmdbModels.ModelCmdbObject>[];\n onAdvancedSearch?(queries: Query[]): void;\n autoSearch?: boolean;\n isInstanceFilterForm?: boolean;\n aq?: Query[];\n aqToShow?: Query[];\n fieldIds?: string[];\n hideSearchConditions?: boolean;\n}\n\ninterface AdvancedSearchConditionState {\n objectId: string;\n aq: Query[];\n aqToShow?: Query[];\n idObjectMap?: Record<string, Partial<CmdbModels.ModelCmdbObject>>;\n fieldIds: string[];\n fieldToShow?: Record<string, any[]>[];\n}\n\n/* istanbul ignore next */\nfunction newKey(fieldIds: string[], aq: Query[]): string {\n let key = \"\";\n if (!isEmpty(fieldIds)) {\n key += fieldIds.join(\"-\");\n }\n if (!isEmpty(aq)) {\n key += `-${aq.length}`;\n }\n return key;\n}\n/* istanbul ignore next */\nconst reducer = (\n prevState: AdvancedSearchConditionState,\n updatedProperty: Partial<AdvancedSearchConditionState>\n): AdvancedSearchConditionState => {\n return {\n ...prevState,\n ...updatedProperty,\n };\n};\n\nfunction translateConditions(\n aq: Query[],\n idObjectMap: Record<string, Partial<CmdbModels.ModelCmdbObject>>,\n modelData: Partial<CmdbModels.ModelCmdbObject>,\n t?: () => string\n): { attrId: string; condition: string; valuesStr: string }[] {\n const conditions: {\n attrId: string;\n condition: string;\n valuesStr: string;\n }[] = [];\n const relations: any[] = [];\n modelData.relation_list.forEach((relation) => {\n let sidesArr: RelationObjectSides[] = [];\n if (isSelfRelation(relation)) {\n sidesArr = [\n { this: \"left\", that: \"right\" },\n { this: \"right\", that: \"left\" },\n ];\n } else {\n sidesArr = [getRelationObjectSides(relation, modelData)];\n }\n sidesArr.forEach((sides) => {\n const objectId = relation[`${sides.this}_id` as RelationIdKeys];\n const relationObject =\n idObjectMap[\n relation[`${sides.that}_object_id` as RelationObjectIdKeys]\n ];\n const nameKeys = getInstanceNameKeys(relationObject);\n nameKeys.forEach((nameKey) => {\n const nameOfNameKey =\n find(relationObject?.attrList, [\"id\", nameKey])?.name ?? nameKey;\n const id = `${objectId}.${nameKey}`;\n const name = `${\n relation[`${sides.this}_name` as RelationNameKeys]\n }(${nameOfNameKey})`;\n relations.push({\n id,\n name,\n value: { type: \"str\" },\n relationSideId: relation[`${sides.this}_id` as RelationIdKeys],\n });\n });\n relations.push({\n id: `${objectId}.`,\n name: `${relation[`${sides.this}_name` as RelationNameKeys]}`,\n value: { type: \"str\" },\n relationSideId: relation[`${sides.this}_id` as RelationIdKeys],\n });\n });\n });\n const attrAndRelationList = [...modelData.attrList, ...relations];\n if (!isEmpty(aq)) {\n for (const query of aq) {\n let queries: Query[] = [query];\n if (Object.keys(query)[0] === \"$or\" || Object.keys(query)[0] === \"$and\") {\n queries = query[Object.keys(query)[0]] as Query[];\n }\n\n queries.forEach((query) => {\n const key = Object.keys(query)[0];\n const value = Object.values(query)[0];\n let attr = attrAndRelationList.find(\n (attr) => attr.id === key || attr.relationSideId === key\n );\n if (\n Object.keys(value)[0] === ElementOperators.Exists &&\n attr.relationSideId\n ) {\n const relationSideId = attr.relationSideId;\n attr =\n attrAndRelationList.find(\n (attr) => attr.id === `${relationSideId}.`\n ) || attr;\n }\n if (attr) {\n query = changeQueryWithCustomRules(\n modelData.objectId,\n attr.id,\n query\n );\n const info = getFieldConditionsAndValues(\n query as any,\n key,\n attr.value.type as ModelAttributeValueType,\n undefined,\n undefined,\n modelData.objectId,\n attr.id\n );\n if (\n ![\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ConditionType.False,\n ConditionType.True,\n ].includes(info.currentCondition.type)\n ) {\n info.values = info.values.map((v) =>\n isString(v) && v.includes(\" \") ? v.replace(/^\"+|\"+$/g, \"\") : v\n );\n }\n\n let condition = `${attr.name}: ${info.currentCondition.label}`;\n if (\n ![ConditionType.Empty, ConditionType.NotEmpty].includes(\n info.currentCondition.type\n )\n ) {\n condition += `\"${info.values.join(\" ~ \")}\"`;\n }\n const curCondition = {\n attrId: key,\n condition,\n valuesStr: info.queryValuesStr,\n };\n if (\n conditions.every(\n (v) => !isEqual(omit(v, \"attrId\"), omit(curCondition, \"attrId\"))\n )\n ) {\n conditions.push(curCondition);\n }\n }\n });\n }\n }\n\n return conditions;\n}\n\nexport function AdvancedSearchCondition(\n props: AdvancedSearchConditionProps\n): React.ReactElement {\n const { modelData, idObjectMap } = useMemo(() => {\n let modelData: Partial<CmdbModels.ModelCmdbObject>;\n const idObjectMap: Record<string, Partial<CmdbModels.ModelCmdbObject>> = {};\n props.objectList.forEach((object) => {\n idObjectMap[object.objectId] = object;\n if (object.objectId === props.objectId) {\n modelData = object;\n modelData.attrList = object.attrList;\n }\n });\n\n return { modelData, idObjectMap };\n }, [props.objectList, props.objectId]);\n\n const computeDefaultFields = (\n { inModal } = { inModal: false }\n ): { fieldIds: string[] } => {\n // 原来有隐藏逻辑,针对 APP、HOST、USER、USER_GROUP模型,默认字段特殊处理了,现产品要求干掉,统一取8个默认字段,也不区分是否是内置模型\n const settings: any = inModal\n ? CMDB_MODAL_FIELDS_SETTINGS\n : CMDB_RESOURCE_FIELDS_SETTINGS;\n const ignoredFields: string[] =\n settings.ignoredFields[modelData.objectId] || [];\n let fieldIds: string[] = difference(\n uniq(map(modelData.attrList, \"id\")),\n ignoredFields\n ).slice(0, 8);\n const hideModelData: string[] = modelData.view.hide_columns || [];\n fieldIds = fieldIds.filter((field) => !hideModelData.includes(field));\n return { fieldIds };\n };\n\n // 根据用户预定义的 presetConfigs.fieldIds 进行排序,如果不在预定义的字段,则根据 modelData.view.attr_order 进行排序\n const _sortFieldIds = (fieldIds: any[]) => {\n let frontFields: any[] = [];\n let restFields: any[] = [];\n if (props.fieldIds?.length) {\n frontFields = filter(props.fieldIds, (id) => fieldIds.includes(id));\n }\n restFields = sortBy(\n reject(fieldIds, (id) => frontFields.includes(id)),\n (fieldId) => {\n const foundIndex = findIndex(\n modelData.view.attr_order,\n (orderId) => orderId === fieldId\n );\n if (foundIndex === -1) {\n return null;\n } else {\n return foundIndex;\n }\n }\n );\n return [...frontFields, ...restFields];\n };\n\n const getFields = () => {\n let fieldIds = props.fieldIds;\n if (!fieldIds?.length) {\n fieldIds = computeDefaultFields().fieldIds;\n }\n\n fieldIds = _sortFieldIds(fieldIds);\n const hideModelData: string[] = modelData.view.hide_columns || [];\n fieldIds = fieldIds.filter((field) => !hideModelData.includes(field));\n modelData.isAbstract && fieldIds.push(\"_object_id\");\n return fieldIds;\n };\n\n const [state, setState] = useReducer(reducer, undefined, () => ({\n objectId: props.objectId,\n aq: initAqToShow(props.aq, modelData, false),\n aqToShow: props.aqToShow || initAqToShow(props.aq, modelData),\n fieldIds: getFields(),\n }));\n\n const onAdvancedSearch = (\n queries: Query[],\n queriesToShow: Query[],\n fieldToShow: Record<string, any[]>[]\n ) => {\n setState({\n aq: queries,\n fieldToShow,\n aqToShow: queriesToShow,\n });\n props.onAdvancedSearch?.(queries);\n };\n\n const onAdvancedSearchCloseGen = (attrId: string, valuesStr: string) => {\n return () => {\n const queries: Query[] = [];\n const queriesToShow: Query[] = [];\n const isValueEqual = (query: any) =>\n query[attrId]\n ? Object.values(query[attrId]).join(\" \") !== valuesStr\n : false;\n const filterAq = (queries: any[]) =>\n queries.filter((v: any) => isValueEqual(v));\n const specialQueryHandler = (query: any, key: any, queries: Query[]) => {\n // $exists $gte $lte 针对为空,不为空,时间范围特殊处理\n const isSpecial = Object.keys(query[key] as Query[]).some(\n (v) => v === \"$exists\" || v === \"$gte\" || v === \"$lte\"\n );\n if (isSpecial) {\n return;\n }\n queries.push(query);\n };\n state.aq.forEach((query) => {\n const key = Object.keys(query)[0];\n if (\n (key === \"$or\" || key === \"$and\") &&\n Object.keys((query[key] as Query[])[0])[0] === attrId\n ) {\n const filteredSubQueries = filterAq(query[key] as Query[]);\n if (filteredSubQueries.length > 0) {\n queries.push({\n [key]: filteredSubQueries,\n });\n }\n } else if (key !== attrId && !startsWith(attrId, `${key}.`)) {\n queries.push(query);\n } else if (\n props.isInstanceFilterForm &&\n key === attrId &&\n isValueEqual(query)\n ) {\n specialQueryHandler(query, key, queries);\n }\n });\n state.aqToShow.forEach((query) => {\n const key = Object.keys(query)[0];\n if (\n (key === \"$or\" || key === \"$and\") &&\n Object.keys((query[key] as Query[])[0])[0] === attrId\n ) {\n const filteredSubQueries = filterAq(query[key] as Query[]);\n if (filteredSubQueries.length > 0) {\n queriesToShow.push({\n [key]: filteredSubQueries,\n });\n }\n } else if (key !== attrId) {\n queriesToShow.push(query);\n } else if (\n props.isInstanceFilterForm &&\n key === attrId &&\n isValueEqual(query)\n ) {\n specialQueryHandler(query, key, queriesToShow);\n }\n });\n setState({\n aq: queries,\n aqToShow: queriesToShow,\n });\n props.onAdvancedSearch?.(queries);\n };\n };\n\n const conditions = translateConditions(\n state.aqToShow,\n idObjectMap,\n modelData\n );\n\n return (\n <div className={styles.advancedSearchWrapper}>\n <div style={{ marginBottom: \"18px\" }}>\n <AdvancedSearch\n modelData={modelData}\n idObjectMap={idObjectMap}\n key={newKey(state.fieldIds, state.aq)}\n fieldIds={state.fieldIds}\n q={state.aqToShow}\n fieldToShow={state.fieldToShow}\n onSearch={onAdvancedSearch}\n ></AdvancedSearch>\n </div>\n {!props.hideSearchConditions && !isEmpty(conditions) && (\n <div className={styles.searchConditions}>\n <span>\n {i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.CURRENT_FILTER_REQUIREMENTS}`\n )}\n </span>\n {conditions.map((condition) => (\n <Tag\n key={`${condition.attrId}${condition.valuesStr}-${uniqueId()}`}\n closable\n onClose={onAdvancedSearchCloseGen(\n condition.attrId,\n condition.valuesStr\n )}\n >\n {condition.condition}\n </Tag>\n ))}\n </div>\n )}\n </div>\n );\n}\n"],"file":"AdvancedSearchCondition.js"}
1
+ {"version":3,"sources":["../../../src/instance-list-table/AdvancedSearchCondition.tsx"],"names":["newKey","fieldIds","aq","key","join","length","reducer","prevState","updatedProperty","formatAqToShow","newAqToShow","forEach","query","aqToShow","Object","entries","map","expressions","newExpressions","LogicalOperators","Or","And","translateAqConditions","fields","conditions","queries","keys","value","values","attr","find","v","id","contain","i18n","t","NS_LIBS_CMDB_INSTANCES","K","OPERATOR_CONTAIN_DEFINE","condition","name","replace","curCondition","attrId","valuesStr","push","AdvancedSearchCondition","props","state","setState","undefined","onAdvancedSearch","queriesToShow","fieldToShow","onAdvancedSearchCloseGen","isValueEqual","filterAq","filter","specialQueryHandler","isSpecial","some","formatAqQuery","querys","isAq","isKey","isStart","filteredSubQueries","isInstanceFilterForm","styles","advancedSearchWrapper","marginBottom","hideSearchConditions","searchConditions","CURRENT_FILTER_REQUIREMENTS"],"mappings":"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","sourcesContent":["import React, { useReducer } from \"react\";\nimport i18n from \"i18next\";\nimport { K, NS_LIBS_CMDB_INSTANCES } from \"../i18n/constants\";\nimport { Query, LogicalOperators } from \"@next-libs/cmdb-utils\";\nimport { DynamicSearch } from \"./DynamicSearch\";\nimport { isEmpty, uniqueId, startsWith } from \"lodash\";\nimport { Tag } from \"antd\";\nimport styles from \"./AdvancedSearchCondition.module.css\";\nexport interface AdvancedSearchConditionProps {\n fields: Record<string, any>[];\n onAdvancedSearch?(queries: Query[]): void;\n isInstanceFilterForm?: boolean;\n aq?: Query[];\n aqToShow?: Query[];\n hideSearchConditions?: boolean;\n}\n\ninterface AdvancedSearchConditionState {\n aq: Query[];\n aqToShow?: Query[];\n fieldIds: string[];\n fieldToShow?: Record<string, any[]>[];\n fields?: Record<string, any>[];\n}\n\n/* istanbul ignore next */\nfunction newKey(fieldIds: string[], aq: Query[]): string {\n let key = \"\";\n if (!isEmpty(fieldIds)) {\n key += fieldIds.join(\"-\");\n }\n if (!isEmpty(aq)) {\n key += `-${aq.length}`;\n }\n return key;\n}\n/* istanbul ignore next */\nconst reducer = (\n prevState: AdvancedSearchConditionState,\n updatedProperty: Partial<AdvancedSearchConditionState>\n): AdvancedSearchConditionState => {\n return {\n ...prevState,\n ...updatedProperty,\n };\n};\n\nexport const formatAqToShow = (aq: Query[]) => {\n let newAqToShow: any[] = [];\n if (aq) {\n aq.forEach((query) => {\n const aqToShow = Object.entries(query).map(([key, expressions]) => {\n let newExpressions: any[] = [];\n if (key === LogicalOperators.Or || key === LogicalOperators.And) {\n newExpressions = [...newExpressions, ...(expressions as Query[])];\n\n return { [key]: newExpressions };\n } else {\n return query;\n }\n });\n newAqToShow = [...newAqToShow, ...aqToShow];\n });\n return newAqToShow;\n }\n return newAqToShow;\n};\n\nfunction translateAqConditions(\n aq: Query[],\n fields: any[]\n): { attrId: string; condition: string; valuesStr: string }[] {\n const conditions: {\n attrId: string;\n condition: string;\n valuesStr: string;\n }[] = [];\n if (!isEmpty(aq)) {\n for (const query of aq) {\n let queries: Query[] = [query];\n if (\n Object.keys(query)[0] === LogicalOperators.Or ||\n Object.keys(query)[0] === LogicalOperators.And\n ) {\n queries = query[Object.keys(query)[0]] as Query[];\n }\n queries.forEach((query) => {\n const key = Object.keys(query)[0];\n const value = Object.values(query)[0];\n const attr = fields.find((v) => v.id === key);\n const contain = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_CONTAIN_DEFINE}`\n );\n const condition = `${attr?.name}:${contain}\"${Object.values(\n value\n )[0].replace(/%/g, \"\")}\"`;\n const curCondition = {\n attrId: key,\n condition,\n valuesStr: Object.values(value)[0],\n };\n conditions.push(curCondition);\n });\n }\n }\n return conditions;\n}\n\nexport function AdvancedSearchCondition(\n props: AdvancedSearchConditionProps\n): React.ReactElement {\n const [state, setState] = useReducer(reducer, undefined, () => ({\n aq: formatAqToShow(props.aq),\n aqToShow: props.aqToShow || formatAqToShow(props.aq),\n fieldIds: (props.fields || []).map((v) => v.id),\n fields: props.fields || [],\n }));\n\n const onAdvancedSearch = (\n queries: Query[],\n queriesToShow: Query[],\n fieldToShow: Record<string, any[]>[]\n ) => {\n setState({\n aq: queries,\n fieldToShow,\n aqToShow: queriesToShow,\n });\n props.onAdvancedSearch?.(queries);\n };\n\n /* istanbul ignore next */\n const onAdvancedSearchCloseGen = (attrId: string, valuesStr: string) => {\n return () => {\n const queries: Query[] = [];\n const queriesToShow: Query[] = [];\n const isValueEqual = (query: any) =>\n query[attrId]\n ? Object.values(query[attrId]).join(\" \") !== valuesStr\n : false;\n const filterAq = (queries: any[]) =>\n queries.filter((v: any) => isValueEqual(v));\n const specialQueryHandler = (query: any, key: any, queries: Query[]) => {\n // $exists $gte $lte 针对为空,不为空,时间范围特殊处理\n const isSpecial = Object.keys(query[key] as Query[]).some(\n (v) => v === \"$exists\" || v === \"$gte\" || v === \"$lte\"\n );\n if (isSpecial) {\n return;\n }\n queries.push(query);\n };\n const formatAqQuery = (\n querys: any[],\n queries: Query[],\n isAq: boolean\n ) => {\n querys.forEach((query) => {\n const key = Object.keys(query)[0];\n const isKey = key !== attrId;\n const isStart = isAq\n ? isKey && !startsWith(attrId, `${key}.`)\n : isKey;\n if (\n (key === \"$or\" || key === \"$and\") &&\n Object.keys((query[key] as Query[])[0])[0] === attrId\n ) {\n const filteredSubQueries = filterAq(query[key] as Query[]);\n if (filteredSubQueries.length > 0) {\n queries.push({\n [key]: filteredSubQueries,\n });\n }\n } else if (isStart) {\n queries.push(query);\n } else if (\n props.isInstanceFilterForm &&\n key === attrId &&\n isValueEqual(query)\n ) {\n specialQueryHandler(query, key, queries);\n }\n });\n };\n formatAqQuery(state.aq, queries, true);\n formatAqQuery(state.aqToShow, queriesToShow, false);\n setState({\n aq: queries,\n aqToShow: queriesToShow,\n });\n props.onAdvancedSearch?.(queries);\n };\n };\n\n const conditions = translateAqConditions(state.aqToShow, state.fields);\n\n return (\n <div className={styles.advancedSearchWrapper}>\n <div style={{ marginBottom: \"18px\" }}>\n <DynamicSearch\n fields={state.fields}\n onSearch={onAdvancedSearch}\n key={newKey(state.fieldIds, state.aq)}\n q={state.aqToShow}\n fieldToShow={state.fieldToShow}\n />\n </div>\n {!props.hideSearchConditions && !isEmpty(conditions) && (\n <div className={styles.searchConditions}>\n <span>\n {i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.CURRENT_FILTER_REQUIREMENTS}`\n )}\n </span>\n {conditions.map((condition) => (\n <Tag\n key={`${condition.attrId}${condition.valuesStr}-${uniqueId()}`}\n closable\n onClose={onAdvancedSearchCloseGen(\n condition.attrId,\n condition.valuesStr\n )}\n >\n {condition.condition}\n </Tag>\n ))}\n </div>\n )}\n </div>\n );\n}\n"],"file":"AdvancedSearchCondition.js"}