@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 +11 -0
- 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 +291 -0
- package/dist/cjs/instance-list-table/DynamicSearch.js.map +1 -0
- 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 +276 -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/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/package.json +2 -2
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
|
|
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
|
-
|
|
58
|
-
|
|
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
|
-
|
|
76
|
-
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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
|
-
|
|
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] ===
|
|
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
|
-
|
|
93
|
+
const attr = fields.find(v => v.id === key);
|
|
118
94
|
|
|
119
|
-
|
|
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
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
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
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
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
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
const
|
|
276
|
-
|
|
277
|
-
if (
|
|
278
|
-
|
|
279
|
-
|
|
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
|
-
}
|
|
283
|
-
|
|
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
|
-
|
|
295
|
-
|
|
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 =
|
|
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(
|
|
321
|
-
|
|
322
|
-
|
|
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"}
|