@next-libs/cmdb-instances 6.27.0 → 6.27.3
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 +33 -0
- package/dist/cjs/instance-list/InstanceList.js +1 -0
- package/dist/cjs/instance-list/InstanceList.js.map +1 -1
- package/dist/cjs/instance-list-table/AdvancedSearchCondition.js +71 -200
- package/dist/cjs/instance-list-table/AdvancedSearchCondition.js.map +1 -1
- package/dist/cjs/instance-list-table/DynamicSearch.js +284 -0
- package/dist/cjs/instance-list-table/DynamicSearch.js.map +1 -0
- package/dist/cjs/instance-list-table/InstanceListTable.js +10 -6
- package/dist/cjs/instance-list-table/InstanceListTable.js.map +1 -1
- package/dist/esm/instance-list/InstanceList.js +1 -0
- package/dist/esm/instance-list/InstanceList.js.map +1 -1
- package/dist/esm/instance-list-table/AdvancedSearchCondition.js +71 -202
- package/dist/esm/instance-list-table/AdvancedSearchCondition.js.map +1 -1
- package/dist/esm/instance-list-table/DynamicSearch.js +269 -0
- package/dist/esm/instance-list-table/DynamicSearch.js.map +1 -0
- package/dist/esm/instance-list-table/DynamicSearch.module.css +40 -0
- package/dist/esm/instance-list-table/InstanceListTable.js +10 -6
- package/dist/esm/instance-list-table/InstanceListTable.js.map +1 -1
- package/dist/types/instance-list/InstanceList.d.ts +1 -0
- package/dist/types/instance-list-table/AdvancedSearchCondition.d.ts +2 -5
- package/dist/types/instance-list-table/DynamicSearch.d.ts +32 -0
- package/dist/types/instance-list-table/DynamicSearch.spec.d.ts +1 -0
- package/dist/types/instance-list-table/InstanceListTable.d.ts +2 -1
- package/package.json +2 -2
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
import _objectSpread from "@babel/runtime/helpers/objectSpread2";
|
|
2
|
-
import 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 {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
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
|
-
|
|
36
|
-
var
|
|
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
|
-
|
|
54
|
-
|
|
55
|
-
var
|
|
56
|
-
|
|
57
|
-
|
|
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
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
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
|
-
|
|
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] ===
|
|
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 =
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
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
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
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
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
var
|
|
255
|
-
|
|
256
|
-
if (
|
|
257
|
-
|
|
258
|
-
|
|
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
|
-
}
|
|
262
|
-
|
|
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
|
-
|
|
274
|
-
|
|
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 =
|
|
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(
|
|
300
|
-
|
|
301
|
-
|
|
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, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/instance-list-table/AdvancedSearchCondition.tsx"],"names":["React","useMemo","useReducer","i18n","K","NS_LIBS_CMDB_INSTANCES","getRelationObjectSides","getInstanceNameKeys","isSelfRelation","ElementOperators","CMDB_MODAL_FIELDS_SETTINGS","CMDB_RESOURCE_FIELDS_SETTINGS","changeQueryWithCustomRules","initAqToShow","difference","isEmpty","isEqual","isString","map","uniq","filter","reject","sortBy","uniqueId","findIndex","find","startsWith","omit","Tag","AdvancedSearch","ConditionType","getFieldConditionsAndValues","styles","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","Exists","info","undefined","Between","Empty","NotEmpty","False","True","includes","currentCondition","v","replace","condition","label","curCondition","attrId","valuesStr","queryValuesStr","every","AdvancedSearchCondition","props","objectList","object","computeDefaultFields","inModal","settings","ignoredFields","slice","hideModelData","view","hide_columns","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","advancedSearchWrapper","marginBottom","hideSearchConditions","searchConditions","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":["React","useReducer","i18n","K","NS_LIBS_CMDB_INSTANCES","LogicalOperators","DynamicSearch","isEmpty","uniqueId","startsWith","Tag","styles","newKey","fieldIds","aq","key","join","length","reducer","prevState","updatedProperty","formatAqToShow","newAqToShow","forEach","query","aqToShow","Object","entries","map","expressions","newExpressions","Or","And","translateAqConditions","fields","conditions","queries","keys","value","values","attr","find","v","id","contain","t","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","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"}
|