@next-libs/cmdb-instances 6.26.8 → 6.27.0

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.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
+
8
+
9
+ ### Features
10
+
11
+ * finish AdvancedSearchCondition component ([9f11d8a](https://github.com/easyops-cn/next-libs/commit/9f11d8acc5142f149952dc3662dbc8f615140faf)), closes [Refs#MONITOR-3554](https://github.com/Refs/issues/MONITOR-3554)
12
+
13
+
14
+
15
+
16
+
6
17
  ## [6.26.8](https://github.com/easyops-cn/next-libs/compare/@next-libs/cmdb-instances@6.26.7...@next-libs/cmdb-instances@6.26.8) (2022-05-27)
7
18
 
8
19
 
package/dist/cjs/index.js CHANGED
@@ -139,6 +139,20 @@ Object.keys(_instanceListTable).forEach(function (key) {
139
139
  });
140
140
  });
141
141
 
142
+ var _AdvancedSearchCondition = require("./instance-list-table/AdvancedSearchCondition");
143
+
144
+ Object.keys(_AdvancedSearchCondition).forEach(function (key) {
145
+ if (key === "default" || key === "__esModule") return;
146
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
147
+ if (key in exports && exports[key] === _AdvancedSearchCondition[key]) return;
148
+ Object.defineProperty(exports, key, {
149
+ enumerable: true,
150
+ get: function () {
151
+ return _AdvancedSearchCondition[key];
152
+ }
153
+ });
154
+ });
155
+
142
156
  var _InstanceListModal = require("./instance-list-modal/InstanceListModal");
143
157
 
144
158
  Object.keys(_InstanceListModal).forEach(function (key) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAEA","sourcesContent":["export * from \"./instance-attribute-form/InstanceAttributeForm\";\nexport * from \"./model-attribute-form/ModelAttributeForm\";\nexport * from \"./model-relation-form/ModelRelationForm\";\nexport * from \"./attribute-form-control-url/AttributeFormControlUrl\";\nexport * from \"./model-attribute-form-control/ModelAttributeFormControl\";\nexport * from \"./struct-components\";\nexport * from \"./instance-list-table\";\nexport * from \"./instance-list-modal/InstanceListModal\";\nexport * from \"./instance-list/InstanceList\";\nexport * from \"./cmdb-instances-input-form/CmdbInstancesInputFormItem\";\nexport * from \"./cmdb-instances-select-panel/CmdbInstancesSelectPanel\";\nexport * from \"./instance-detail/InstanceDetail\";\nexport * from \"./float-display-brick/FloatDisplayBrick\";\n// For compatibility\nexport {\n ComparisonOperators,\n ElementOperators,\n LogicalOperators,\n Query,\n QueryOperatorExpressions,\n} from \"@next-libs/cmdb-utils\";\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAEA","sourcesContent":["export * from \"./instance-attribute-form/InstanceAttributeForm\";\nexport * from \"./model-attribute-form/ModelAttributeForm\";\nexport * from \"./model-relation-form/ModelRelationForm\";\nexport * from \"./attribute-form-control-url/AttributeFormControlUrl\";\nexport * from \"./model-attribute-form-control/ModelAttributeFormControl\";\nexport * from \"./struct-components\";\nexport * from \"./instance-list-table\";\nexport * from \"./instance-list-table/AdvancedSearchCondition\";\nexport * from \"./instance-list-modal/InstanceListModal\";\nexport * from \"./instance-list/InstanceList\";\nexport * from \"./cmdb-instances-input-form/CmdbInstancesInputFormItem\";\nexport * from \"./cmdb-instances-select-panel/CmdbInstancesSelectPanel\";\nexport * from \"./instance-detail/InstanceDetail\";\nexport * from \"./float-display-brick/FloatDisplayBrick\";\n// For compatibility\nexport {\n ComparisonOperators,\n ElementOperators,\n LogicalOperators,\n Query,\n QueryOperatorExpressions,\n} from \"@next-libs/cmdb-utils\";\n"],"file":"index.js"}
@@ -0,0 +1,336 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
5
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.AdvancedSearchCondition = AdvancedSearchCondition;
11
+
12
+ var _react = _interopRequireWildcard(require("react"));
13
+
14
+ var _i18next = _interopRequireDefault(require("i18next"));
15
+
16
+ var _constants = require("../i18n/constants");
17
+
18
+ var _cmdbUtils = require("@next-libs/cmdb-utils");
19
+
20
+ var _constants2 = require("./constants");
21
+
22
+ var _processors = require("../processors");
23
+
24
+ var _InstanceList = require("../instance-list/InstanceList");
25
+
26
+ var _lodash = require("lodash");
27
+
28
+ var _antd = require("antd");
29
+
30
+ var _AdvancedSearch = require("./AdvancedSearch");
31
+
32
+ var _AdvancedSearchConditionModule = _interopRequireDefault(require("./AdvancedSearchCondition.module.css"));
33
+
34
+ /* istanbul ignore next */
35
+ function newKey(fieldIds, aq) {
36
+ let key = "";
37
+
38
+ if (!(0, _lodash.isEmpty)(fieldIds)) {
39
+ key += fieldIds.join("-");
40
+ }
41
+
42
+ if (!(0, _lodash.isEmpty)(aq)) {
43
+ key += `-${aq.length}`;
44
+ }
45
+
46
+ return key;
47
+ }
48
+ /* istanbul ignore next */
49
+
50
+
51
+ const reducer = (prevState, updatedProperty) => {
52
+ return { ...prevState,
53
+ ...updatedProperty
54
+ };
55
+ };
56
+
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
+ }
74
+
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`]
101
+ });
102
+ });
103
+ });
104
+ const attrAndRelationList = [...modelData.attrList, ...relations];
105
+
106
+ if (!(0, _lodash.isEmpty)(aq)) {
107
+ for (const query of aq) {
108
+ let queries = [query];
109
+
110
+ if (Object.keys(query)[0] === "$or" || Object.keys(query)[0] === "$and") {
111
+ queries = query[Object.keys(query)[0]];
112
+ }
113
+
114
+ queries.forEach(query => {
115
+ const key = Object.keys(query)[0];
116
+ const value = Object.values(query)[0];
117
+ let attr = attrAndRelationList.find(attr => attr.id === key || attr.relationSideId === key);
118
+
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
+ }
131
+
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
+ }
148
+ });
149
+ }
150
+ }
151
+
152
+ return conditions;
153
+ }
154
+
155
+ 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
+ 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()
236
+ }));
237
+
238
+ const onAdvancedSearch = (queries, queriesToShow, fieldToShow) => {
239
+ var _props$onAdvancedSear;
240
+
241
+ setState({
242
+ aq: queries,
243
+ fieldToShow,
244
+ aqToShow: queriesToShow
245
+ });
246
+ (_props$onAdvancedSear = props.onAdvancedSearch) === null || _props$onAdvancedSear === void 0 ? void 0 : _props$onAdvancedSear.call(props, queries);
247
+ };
248
+
249
+ const onAdvancedSearchCloseGen = (attrId, valuesStr) => {
250
+ return () => {
251
+ var _props$onAdvancedSear2;
252
+
253
+ const queries = [];
254
+ const queriesToShow = [];
255
+
256
+ const isValueEqual = query => query[attrId] ? Object.values(query[attrId]).join(" ") !== valuesStr : false;
257
+
258
+ const filterAq = queries => queries.filter(v => isValueEqual(v));
259
+
260
+ const specialQueryHandler = (query, key, queries) => {
261
+ // $exists $gte $lte 针对为空,不为空,时间范围特殊处理
262
+ const isSpecial = Object.keys(query[key]).some(v => v === "$exists" || v === "$gte" || v === "$lte");
263
+
264
+ if (isSpecial) {
265
+ return;
266
+ }
267
+
268
+ queries.push(query);
269
+ };
270
+
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
+ });
281
+ }
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]);
293
+
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
+ });
305
+ setState({
306
+ aq: queries,
307
+ aqToShow: queriesToShow
308
+ });
309
+ (_props$onAdvancedSear2 = props.onAdvancedSearch) === null || _props$onAdvancedSear2 === void 0 ? void 0 : _props$onAdvancedSear2.call(props, queries);
310
+ };
311
+ };
312
+
313
+ const conditions = translateConditions(state.aqToShow, idObjectMap, modelData);
314
+ return /*#__PURE__*/_react.default.createElement("div", {
315
+ className: _AdvancedSearchConditionModule.default.advancedSearchWrapper
316
+ }, /*#__PURE__*/_react.default.createElement("div", {
317
+ style: {
318
+ marginBottom: "18px"
319
+ }
320
+ }, /*#__PURE__*/_react.default.createElement(_AdvancedSearch.AdvancedSearch, {
321
+ modelData: modelData,
322
+ idObjectMap: idObjectMap,
323
+ key: newKey(state.fieldIds, state.aq),
324
+ fieldIds: state.fieldIds,
325
+ q: state.aqToShow,
326
+ fieldToShow: state.fieldToShow,
327
+ onSearch: onAdvancedSearch
328
+ })), !props.hideSearchConditions && !(0, _lodash.isEmpty)(conditions) && /*#__PURE__*/_react.default.createElement("div", {
329
+ className: _AdvancedSearchConditionModule.default.searchConditions
330
+ }, /*#__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, {
331
+ key: `${condition.attrId}${condition.valuesStr}-${(0, _lodash.uniqueId)()}`,
332
+ closable: true,
333
+ onClose: onAdvancedSearchCloseGen(condition.attrId, condition.valuesStr)
334
+ }, condition.condition))));
335
+ }
336
+ //# sourceMappingURL=AdvancedSearchCondition.js.map
@@ -0,0 +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"}
@@ -68,4 +68,17 @@ Object.keys(_InstanceListTable).forEach(function (key) {
68
68
  }
69
69
  });
70
70
  });
71
+
72
+ var _AdvancedSearchCondition = require("./AdvancedSearchCondition");
73
+
74
+ Object.keys(_AdvancedSearchCondition).forEach(function (key) {
75
+ if (key === "default" || key === "__esModule") return;
76
+ if (key in exports && exports[key] === _AdvancedSearchCondition[key]) return;
77
+ Object.defineProperty(exports, key, {
78
+ enumerable: true,
79
+ get: function () {
80
+ return _AdvancedSearchCondition[key];
81
+ }
82
+ });
83
+ });
71
84
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/instance-list-table/index.ts"],"names":[],"mappings":";;;;;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export * from \"./AdvancedSearch\";\nexport * from \"./MoreButtonsContainer\";\nexport * from \"./DisplaySettings\";\nexport * from \"./DisplaySettingsModal\";\nexport * from \"./InstanceListTable\";\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/instance-list-table/index.ts"],"names":[],"mappings":";;;;;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export * from \"./AdvancedSearch\";\nexport * from \"./MoreButtonsContainer\";\nexport * from \"./DisplaySettings\";\nexport * from \"./DisplaySettingsModal\";\nexport * from \"./InstanceListTable\";\nexport * from \"./AdvancedSearchCondition\";\n"],"file":"index.js"}
package/dist/esm/index.js CHANGED
@@ -5,6 +5,7 @@ export * from "./attribute-form-control-url/AttributeFormControlUrl";
5
5
  export * from "./model-attribute-form-control/ModelAttributeFormControl";
6
6
  export * from "./struct-components";
7
7
  export * from "./instance-list-table";
8
+ export * from "./instance-list-table/AdvancedSearchCondition";
8
9
  export * from "./instance-list-modal/InstanceListModal";
9
10
  export * from "./instance-list/InstanceList";
10
11
  export * from "./cmdb-instances-input-form/CmdbInstancesInputFormItem";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"names":["ComparisonOperators","ElementOperators","LogicalOperators","Query","QueryOperatorExpressions"],"mappings":"AAAA,cAAc,iDAAd;AACA,cAAc,2CAAd;AACA,cAAc,yCAAd;AACA,cAAc,sDAAd;AACA,cAAc,0DAAd;AACA,cAAc,qBAAd;AACA,cAAc,uBAAd;AACA,cAAc,yCAAd;AACA,cAAc,8BAAd;AACA,cAAc,wDAAd;AACA,cAAc,wDAAd;AACA,cAAc,kCAAd;AACA,cAAc,yCAAd,C,CACA;;AACA,SACEA,mBADF,EAEEC,gBAFF,EAGEC,gBAHF,EAIEC,KAJF,EAKEC,wBALF,QAMO,uBANP","sourcesContent":["export * from \"./instance-attribute-form/InstanceAttributeForm\";\nexport * from \"./model-attribute-form/ModelAttributeForm\";\nexport * from \"./model-relation-form/ModelRelationForm\";\nexport * from \"./attribute-form-control-url/AttributeFormControlUrl\";\nexport * from \"./model-attribute-form-control/ModelAttributeFormControl\";\nexport * from \"./struct-components\";\nexport * from \"./instance-list-table\";\nexport * from \"./instance-list-modal/InstanceListModal\";\nexport * from \"./instance-list/InstanceList\";\nexport * from \"./cmdb-instances-input-form/CmdbInstancesInputFormItem\";\nexport * from \"./cmdb-instances-select-panel/CmdbInstancesSelectPanel\";\nexport * from \"./instance-detail/InstanceDetail\";\nexport * from \"./float-display-brick/FloatDisplayBrick\";\n// For compatibility\nexport {\n ComparisonOperators,\n ElementOperators,\n LogicalOperators,\n Query,\n QueryOperatorExpressions,\n} from \"@next-libs/cmdb-utils\";\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/index.ts"],"names":["ComparisonOperators","ElementOperators","LogicalOperators","Query","QueryOperatorExpressions"],"mappings":"AAAA,cAAc,iDAAd;AACA,cAAc,2CAAd;AACA,cAAc,yCAAd;AACA,cAAc,sDAAd;AACA,cAAc,0DAAd;AACA,cAAc,qBAAd;AACA,cAAc,uBAAd;AACA,cAAc,+CAAd;AACA,cAAc,yCAAd;AACA,cAAc,8BAAd;AACA,cAAc,wDAAd;AACA,cAAc,wDAAd;AACA,cAAc,kCAAd;AACA,cAAc,yCAAd,C,CACA;;AACA,SACEA,mBADF,EAEEC,gBAFF,EAGEC,gBAHF,EAIEC,KAJF,EAKEC,wBALF,QAMO,uBANP","sourcesContent":["export * from \"./instance-attribute-form/InstanceAttributeForm\";\nexport * from \"./model-attribute-form/ModelAttributeForm\";\nexport * from \"./model-relation-form/ModelRelationForm\";\nexport * from \"./attribute-form-control-url/AttributeFormControlUrl\";\nexport * from \"./model-attribute-form-control/ModelAttributeFormControl\";\nexport * from \"./struct-components\";\nexport * from \"./instance-list-table\";\nexport * from \"./instance-list-table/AdvancedSearchCondition\";\nexport * from \"./instance-list-modal/InstanceListModal\";\nexport * from \"./instance-list/InstanceList\";\nexport * from \"./cmdb-instances-input-form/CmdbInstancesInputFormItem\";\nexport * from \"./cmdb-instances-select-panel/CmdbInstancesSelectPanel\";\nexport * from \"./instance-detail/InstanceDetail\";\nexport * from \"./float-display-brick/FloatDisplayBrick\";\n// For compatibility\nexport {\n ComparisonOperators,\n ElementOperators,\n LogicalOperators,\n Query,\n QueryOperatorExpressions,\n} from \"@next-libs/cmdb-utils\";\n"],"file":"index.js"}
@@ -0,0 +1,315 @@
1
+ import _objectSpread from "@babel/runtime/helpers/objectSpread2";
2
+ import React, { useMemo, useReducer } from "react";
3
+ import i18n from "i18next";
4
+ import { K, NS_LIBS_CMDB_INSTANCES } from "../i18n/constants";
5
+ import { getRelationObjectSides, getInstanceNameKeys, isSelfRelation, ElementOperators } from "@next-libs/cmdb-utils";
6
+ import { CMDB_MODAL_FIELDS_SETTINGS, CMDB_RESOURCE_FIELDS_SETTINGS } from "./constants";
7
+ import { changeQueryWithCustomRules } from "../processors";
8
+ import { initAqToShow } from "../instance-list/InstanceList";
9
+ import { difference, isEmpty, isEqual, isString, map, uniq, filter, reject, sortBy, uniqueId, findIndex, find, startsWith, omit } from "lodash";
10
+ import { Tag } from "antd";
11
+ import { AdvancedSearch, ConditionType, getFieldConditionsAndValues } from "./AdvancedSearch";
12
+ import styles from "./AdvancedSearchCondition.module.css";
13
+
14
+ /* istanbul ignore next */
15
+ function newKey(fieldIds, aq) {
16
+ var key = "";
17
+
18
+ if (!isEmpty(fieldIds)) {
19
+ key += fieldIds.join("-");
20
+ }
21
+
22
+ if (!isEmpty(aq)) {
23
+ key += "-".concat(aq.length);
24
+ }
25
+
26
+ return key;
27
+ }
28
+ /* istanbul ignore next */
29
+
30
+
31
+ var reducer = (prevState, updatedProperty) => {
32
+ return _objectSpread(_objectSpread({}, prevState), updatedProperty);
33
+ };
34
+
35
+ function translateConditions(aq, idObjectMap, modelData, t) {
36
+ var conditions = [];
37
+ var relations = [];
38
+ modelData.relation_list.forEach(relation => {
39
+ var sidesArr = [];
40
+
41
+ if (isSelfRelation(relation)) {
42
+ sidesArr = [{
43
+ this: "left",
44
+ that: "right"
45
+ }, {
46
+ this: "right",
47
+ that: "left"
48
+ }];
49
+ } else {
50
+ sidesArr = [getRelationObjectSides(relation, modelData)];
51
+ }
52
+
53
+ sidesArr.forEach(sides => {
54
+ var objectId = relation["".concat(sides.this, "_id")];
55
+ var relationObject = idObjectMap[relation["".concat(sides.that, "_object_id")]];
56
+ var nameKeys = getInstanceNameKeys(relationObject);
57
+ nameKeys.forEach(nameKey => {
58
+ var _find$name, _find;
59
+
60
+ var nameOfNameKey = (_find$name = (_find = find(relationObject === null || relationObject === void 0 ? void 0 : relationObject.attrList, ["id", nameKey])) === null || _find === void 0 ? void 0 : _find.name) !== null && _find$name !== void 0 ? _find$name : nameKey;
61
+ var id = "".concat(objectId, ".").concat(nameKey);
62
+ var name = "".concat(relation["".concat(sides.this, "_name")], "(").concat(nameOfNameKey, ")");
63
+ relations.push({
64
+ id,
65
+ name,
66
+ value: {
67
+ type: "str"
68
+ },
69
+ relationSideId: relation["".concat(sides.this, "_id")]
70
+ });
71
+ });
72
+ relations.push({
73
+ id: "".concat(objectId, "."),
74
+ name: "".concat(relation["".concat(sides.this, "_name")]),
75
+ value: {
76
+ type: "str"
77
+ },
78
+ relationSideId: relation["".concat(sides.this, "_id")]
79
+ });
80
+ });
81
+ });
82
+ var attrAndRelationList = [...modelData.attrList, ...relations];
83
+
84
+ if (!isEmpty(aq)) {
85
+ for (var query of aq) {
86
+ var _queries = [query];
87
+
88
+ if (Object.keys(query)[0] === "$or" || Object.keys(query)[0] === "$and") {
89
+ _queries = query[Object.keys(query)[0]];
90
+ }
91
+
92
+ _queries.forEach(query => {
93
+ var key = Object.keys(query)[0];
94
+ var value = Object.values(query)[0];
95
+ var attr = attrAndRelationList.find(attr => attr.id === key || attr.relationSideId === key);
96
+
97
+ if (Object.keys(value)[0] === ElementOperators.Exists && attr.relationSideId) {
98
+ var relationSideId = attr.relationSideId;
99
+ attr = attrAndRelationList.find(attr => attr.id === "".concat(relationSideId, ".")) || attr;
100
+ }
101
+
102
+ if (attr) {
103
+ query = changeQueryWithCustomRules(modelData.objectId, attr.id, query);
104
+ var info = getFieldConditionsAndValues(query, key, attr.value.type, undefined, undefined, modelData.objectId, attr.id);
105
+
106
+ if (![ConditionType.Between, ConditionType.Empty, ConditionType.NotEmpty, ConditionType.False, ConditionType.True].includes(info.currentCondition.type)) {
107
+ info.values = info.values.map(v => isString(v) && v.includes(" ") ? v.replace(/^"+|"+$/g, "") : v);
108
+ }
109
+
110
+ var condition = "".concat(attr.name, ": ").concat(info.currentCondition.label);
111
+
112
+ if (![ConditionType.Empty, ConditionType.NotEmpty].includes(info.currentCondition.type)) {
113
+ condition += "\"".concat(info.values.join(" ~ "), "\"");
114
+ }
115
+
116
+ var curCondition = {
117
+ attrId: key,
118
+ condition,
119
+ valuesStr: info.queryValuesStr
120
+ };
121
+
122
+ if (conditions.every(v => !isEqual(omit(v, "attrId"), omit(curCondition, "attrId")))) {
123
+ conditions.push(curCondition);
124
+ }
125
+ }
126
+ });
127
+ }
128
+ }
129
+
130
+ return conditions;
131
+ }
132
+
133
+ 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
+ var [state, setState] = useReducer(reducer, undefined, () => ({
211
+ objectId: props.objectId,
212
+ aq: initAqToShow(props.aq, modelData, false),
213
+ aqToShow: props.aqToShow || initAqToShow(props.aq, modelData),
214
+ fieldIds: getFields()
215
+ }));
216
+
217
+ var onAdvancedSearch = (queries, queriesToShow, fieldToShow) => {
218
+ var _props$onAdvancedSear;
219
+
220
+ setState({
221
+ aq: queries,
222
+ fieldToShow,
223
+ aqToShow: queriesToShow
224
+ });
225
+ (_props$onAdvancedSear = props.onAdvancedSearch) === null || _props$onAdvancedSear === void 0 ? void 0 : _props$onAdvancedSear.call(props, queries);
226
+ };
227
+
228
+ var onAdvancedSearchCloseGen = (attrId, valuesStr) => {
229
+ return () => {
230
+ var _props$onAdvancedSear2;
231
+
232
+ var queries = [];
233
+ var queriesToShow = [];
234
+
235
+ var isValueEqual = query => query[attrId] ? Object.values(query[attrId]).join(" ") !== valuesStr : false;
236
+
237
+ var filterAq = queries => queries.filter(v => isValueEqual(v));
238
+
239
+ var specialQueryHandler = (query, key, queries) => {
240
+ // $exists $gte $lte 针对为空,不为空,时间范围特殊处理
241
+ var isSpecial = Object.keys(query[key]).some(v => v === "$exists" || v === "$gte" || v === "$lte");
242
+
243
+ if (isSpecial) {
244
+ return;
245
+ }
246
+
247
+ queries.push(query);
248
+ };
249
+
250
+ state.aq.forEach(query => {
251
+ var key = Object.keys(query)[0];
252
+
253
+ if ((key === "$or" || key === "$and") && Object.keys(query[key][0])[0] === attrId) {
254
+ var filteredSubQueries = filterAq(query[key]);
255
+
256
+ if (filteredSubQueries.length > 0) {
257
+ queries.push({
258
+ [key]: filteredSubQueries
259
+ });
260
+ }
261
+ } else if (key !== attrId && !startsWith(attrId, "".concat(key, "."))) {
262
+ queries.push(query);
263
+ } else if (props.isInstanceFilterForm && key === attrId && isValueEqual(query)) {
264
+ specialQueryHandler(query, key, queries);
265
+ }
266
+ });
267
+ state.aqToShow.forEach(query => {
268
+ var key = Object.keys(query)[0];
269
+
270
+ if ((key === "$or" || key === "$and") && Object.keys(query[key][0])[0] === attrId) {
271
+ var filteredSubQueries = filterAq(query[key]);
272
+
273
+ if (filteredSubQueries.length > 0) {
274
+ queriesToShow.push({
275
+ [key]: filteredSubQueries
276
+ });
277
+ }
278
+ } else if (key !== attrId) {
279
+ queriesToShow.push(query);
280
+ } else if (props.isInstanceFilterForm && key === attrId && isValueEqual(query)) {
281
+ specialQueryHandler(query, key, queriesToShow);
282
+ }
283
+ });
284
+ setState({
285
+ aq: queries,
286
+ aqToShow: queriesToShow
287
+ });
288
+ (_props$onAdvancedSear2 = props.onAdvancedSearch) === null || _props$onAdvancedSear2 === void 0 ? void 0 : _props$onAdvancedSear2.call(props, queries);
289
+ };
290
+ };
291
+
292
+ var conditions = translateConditions(state.aqToShow, idObjectMap, modelData);
293
+ return /*#__PURE__*/React.createElement("div", {
294
+ className: styles.advancedSearchWrapper
295
+ }, /*#__PURE__*/React.createElement("div", {
296
+ style: {
297
+ marginBottom: "18px"
298
+ }
299
+ }, /*#__PURE__*/React.createElement(AdvancedSearch, {
300
+ modelData: modelData,
301
+ idObjectMap: idObjectMap,
302
+ key: newKey(state.fieldIds, state.aq),
303
+ fieldIds: state.fieldIds,
304
+ q: state.aqToShow,
305
+ fieldToShow: state.fieldToShow,
306
+ onSearch: onAdvancedSearch
307
+ })), !props.hideSearchConditions && !isEmpty(conditions) && /*#__PURE__*/React.createElement("div", {
308
+ className: styles.searchConditions
309
+ }, /*#__PURE__*/React.createElement("span", null, i18n.t("".concat(NS_LIBS_CMDB_INSTANCES, ":").concat(K.CURRENT_FILTER_REQUIREMENTS))), conditions.map(condition => /*#__PURE__*/React.createElement(Tag, {
310
+ key: "".concat(condition.attrId).concat(condition.valuesStr, "-").concat(uniqueId()),
311
+ closable: true,
312
+ onClose: onAdvancedSearchCloseGen(condition.attrId, condition.valuesStr)
313
+ }, condition.condition))));
314
+ }
315
+ //# sourceMappingURL=AdvancedSearchCondition.js.map
@@ -0,0 +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"}
@@ -0,0 +1,22 @@
1
+ .searchConditions {
2
+ background-color: var(
3
+ --cmdb-instance-detail-search-container-bg,
4
+ rgb(250, 250, 250)
5
+ );
6
+ padding: 8px 16px;
7
+ margin-bottom: 18px;
8
+ border-radius: 6px;
9
+ }
10
+
11
+ .searchConditions :global(.ant-tag) {
12
+ margin-top: 3px;
13
+ background: var(--cmdb-instance-detail-search-container-tag-bg, #f5f5f5);
14
+ color: var(--cmdb-instance-detail-search-container-tag-color, #595959);
15
+
16
+ :global(.anticon-close):hover {
17
+ color: var(
18
+ --cmdb-instance-detail-search-container-tag-close-hover-color,
19
+ #595959
20
+ );
21
+ }
22
+ }
@@ -3,4 +3,5 @@ export * from "./MoreButtonsContainer";
3
3
  export * from "./DisplaySettings";
4
4
  export * from "./DisplaySettingsModal";
5
5
  export * from "./InstanceListTable";
6
+ export * from "./AdvancedSearchCondition";
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/instance-list-table/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAd;AACA,cAAc,wBAAd;AACA,cAAc,mBAAd;AACA,cAAc,wBAAd;AACA,cAAc,qBAAd","sourcesContent":["export * from \"./AdvancedSearch\";\nexport * from \"./MoreButtonsContainer\";\nexport * from \"./DisplaySettings\";\nexport * from \"./DisplaySettingsModal\";\nexport * from \"./InstanceListTable\";\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/instance-list-table/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAd;AACA,cAAc,wBAAd;AACA,cAAc,mBAAd;AACA,cAAc,wBAAd;AACA,cAAc,qBAAd;AACA,cAAc,2BAAd","sourcesContent":["export * from \"./AdvancedSearch\";\nexport * from \"./MoreButtonsContainer\";\nexport * from \"./DisplaySettings\";\nexport * from \"./DisplaySettingsModal\";\nexport * from \"./InstanceListTable\";\nexport * from \"./AdvancedSearchCondition\";\n"],"file":"index.js"}
@@ -5,6 +5,7 @@ export * from "./attribute-form-control-url/AttributeFormControlUrl";
5
5
  export * from "./model-attribute-form-control/ModelAttributeFormControl";
6
6
  export * from "./struct-components";
7
7
  export * from "./instance-list-table";
8
+ export * from "./instance-list-table/AdvancedSearchCondition";
8
9
  export * from "./instance-list-modal/InstanceListModal";
9
10
  export * from "./instance-list/InstanceList";
10
11
  export * from "./cmdb-instances-input-form/CmdbInstancesInputFormItem";
@@ -0,0 +1,15 @@
1
+ import React from "react";
2
+ import { CmdbModels } from "@next-sdk/cmdb-sdk";
3
+ import { Query } from "@next-libs/cmdb-utils";
4
+ export interface AdvancedSearchConditionProps {
5
+ objectId: string;
6
+ objectList: Partial<CmdbModels.ModelCmdbObject>[];
7
+ onAdvancedSearch?(queries: Query[]): void;
8
+ autoSearch?: boolean;
9
+ isInstanceFilterForm?: boolean;
10
+ aq?: Query[];
11
+ aqToShow?: Query[];
12
+ fieldIds?: string[];
13
+ hideSearchConditions?: boolean;
14
+ }
15
+ export declare function AdvancedSearchCondition(props: AdvancedSearchConditionProps): React.ReactElement;
@@ -0,0 +1 @@
1
+ import "@testing-library/jest-dom/extend-expect";
@@ -3,3 +3,4 @@ export * from "./MoreButtonsContainer";
3
3
  export * from "./DisplaySettings";
4
4
  export * from "./DisplaySettingsModal";
5
5
  export * from "./InstanceListTable";
6
+ export * from "./AdvancedSearchCondition";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@next-libs/cmdb-instances",
3
- "version": "6.26.8",
3
+ "version": "6.27.0",
4
4
  "description": "> TODO: description",
5
5
  "homepage": "https://github.com/easyops-cn/next-libs/tree/master/libs/cmdb-instances",
6
6
  "license": "GPL-3.0",
@@ -50,5 +50,5 @@
50
50
  "immutability-helper": "^3.1.1",
51
51
  "marked": "^2.1.3"
52
52
  },
53
- "gitHead": "c742f6cb39a3044aa8fdc2e8d411982846a58fbf"
53
+ "gitHead": "273624387b00bcfbb938f4c2b1bc52d58cc90c94"
54
54
  }