@next-libs/cmdb-instances 6.24.0 → 6.25.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 +11 -0
- package/dist/cjs/index.js +52 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/instance-list/InstanceList.js +6 -6
- package/dist/cjs/instance-list/InstanceList.js.map +1 -1
- package/dist/cjs/instance-list-modal/InstanceListModal.js +2 -2
- package/dist/cjs/instance-list-modal/InstanceListModal.js.map +1 -1
- package/dist/cjs/instance-list-table/AdvancedSearch.js +30 -61
- package/dist/cjs/instance-list-table/AdvancedSearch.js.map +1 -1
- package/dist/cjs/processors.js.map +1 -1
- package/dist/esm/index.js +3 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/instance-list/InstanceList.js +3 -3
- package/dist/esm/instance-list/InstanceList.js.map +1 -1
- package/dist/esm/instance-list-modal/InstanceListModal.js +1 -1
- package/dist/esm/instance-list-modal/InstanceListModal.js.map +1 -1
- package/dist/esm/instance-list-table/AdvancedSearch.js +1 -29
- package/dist/esm/instance-list-table/AdvancedSearch.js.map +1 -1
- package/dist/esm/processors.js.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/instance-list/InstanceList.d.ts +2 -1
- package/dist/types/instance-list-modal/InstanceListModal.d.ts +1 -1
- package/dist/types/instance-list-table/AdvancedSearch.d.ts +1 -23
- package/dist/types/processors.d.ts +1 -1
- package/package.json +3 -3
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.
|
|
8
|
+
exports.ConditionType = exports.AdvancedSearchForm = exports.AdvancedSearch = void 0;
|
|
9
9
|
exports.convertValue = convertValue;
|
|
10
10
|
exports.getCondition = getCondition;
|
|
11
11
|
exports.getFieldConditionsAndValues = getFieldConditionsAndValues;
|
|
@@ -36,37 +36,6 @@ var _ModelAttributeFormControl = require("../model-attribute-form-control/ModelA
|
|
|
36
36
|
|
|
37
37
|
var _processors = require("../processors");
|
|
38
38
|
|
|
39
|
-
let ComparisonOperators;
|
|
40
|
-
exports.ComparisonOperators = ComparisonOperators;
|
|
41
|
-
|
|
42
|
-
(function (ComparisonOperators) {
|
|
43
|
-
ComparisonOperators["Equal"] = "$eq";
|
|
44
|
-
ComparisonOperators["NotEqual"] = "$ne";
|
|
45
|
-
ComparisonOperators["Like"] = "$like";
|
|
46
|
-
ComparisonOperators["NotLike"] = "$nlike";
|
|
47
|
-
ComparisonOperators["GreaterThan"] = "$gt";
|
|
48
|
-
ComparisonOperators["GreaterThanOrEqual"] = "$gte";
|
|
49
|
-
ComparisonOperators["LessThan"] = "$lt";
|
|
50
|
-
ComparisonOperators["LessThanOrEqual"] = "$lte";
|
|
51
|
-
ComparisonOperators["In"] = "$in";
|
|
52
|
-
ComparisonOperators["NotIn"] = "$nin";
|
|
53
|
-
})(ComparisonOperators || (exports.ComparisonOperators = ComparisonOperators = {}));
|
|
54
|
-
|
|
55
|
-
let ElementOperators;
|
|
56
|
-
exports.ElementOperators = ElementOperators;
|
|
57
|
-
|
|
58
|
-
(function (ElementOperators) {
|
|
59
|
-
ElementOperators["Exists"] = "$exists";
|
|
60
|
-
})(ElementOperators || (exports.ElementOperators = ElementOperators = {}));
|
|
61
|
-
|
|
62
|
-
let LogicalOperators;
|
|
63
|
-
exports.LogicalOperators = LogicalOperators;
|
|
64
|
-
|
|
65
|
-
(function (LogicalOperators) {
|
|
66
|
-
LogicalOperators["And"] = "$and";
|
|
67
|
-
LogicalOperators["Or"] = "$or";
|
|
68
|
-
})(LogicalOperators || (exports.LogicalOperators = LogicalOperators = {}));
|
|
69
|
-
|
|
70
39
|
let ConditionType;
|
|
71
40
|
exports.ConditionType = ConditionType;
|
|
72
41
|
|
|
@@ -97,17 +66,17 @@ const FieldTypeConditionTypesMap = {
|
|
|
97
66
|
[_ModelAttributeFormControl.ModelAttributeValueType.JSON]: [ConditionType.Contain, ConditionType.NotContain, ConditionType.Empty, ConditionType.NotEmpty]
|
|
98
67
|
};
|
|
99
68
|
const multiValueSearchOperators = [{
|
|
100
|
-
comparisonOperator: ComparisonOperators.Like,
|
|
101
|
-
logicalOperator: LogicalOperators.Or
|
|
69
|
+
comparisonOperator: _cmdbUtils.ComparisonOperators.Like,
|
|
70
|
+
logicalOperator: _cmdbUtils.LogicalOperators.Or
|
|
102
71
|
}, {
|
|
103
|
-
comparisonOperator: ComparisonOperators.NotLike,
|
|
104
|
-
logicalOperator: LogicalOperators.And
|
|
72
|
+
comparisonOperator: _cmdbUtils.ComparisonOperators.NotLike,
|
|
73
|
+
logicalOperator: _cmdbUtils.LogicalOperators.And
|
|
105
74
|
}, {
|
|
106
|
-
comparisonOperator: ComparisonOperators.Equal,
|
|
107
|
-
logicalOperator: LogicalOperators.Or
|
|
75
|
+
comparisonOperator: _cmdbUtils.ComparisonOperators.Equal,
|
|
76
|
+
logicalOperator: _cmdbUtils.LogicalOperators.Or
|
|
108
77
|
}, {
|
|
109
|
-
comparisonOperator: ComparisonOperators.NotEqual,
|
|
110
|
-
logicalOperator: LogicalOperators.And
|
|
78
|
+
comparisonOperator: _cmdbUtils.ComparisonOperators.NotEqual,
|
|
79
|
+
logicalOperator: _cmdbUtils.LogicalOperators.And
|
|
111
80
|
}];
|
|
112
81
|
FieldTypeConditionTypesMap[_ModelAttributeFormControl.ModelAttributeValueType.STRUCT_LIST] = FieldTypeConditionTypesMap[_ModelAttributeFormControl.ModelAttributeValueType.STRUCT];
|
|
113
82
|
|
|
@@ -122,13 +91,13 @@ function getCondition(conditionType, fieldType) {
|
|
|
122
91
|
switch (fieldType) {
|
|
123
92
|
case _ModelAttributeFormControl.ModelAttributeValueType.ARR:
|
|
124
93
|
operations = [{
|
|
125
|
-
operator: ComparisonOperators.In
|
|
94
|
+
operator: _cmdbUtils.ComparisonOperators.In
|
|
126
95
|
}];
|
|
127
96
|
break;
|
|
128
97
|
|
|
129
98
|
default:
|
|
130
99
|
operations = [{
|
|
131
|
-
operator: ComparisonOperators.Equal
|
|
100
|
+
operator: _cmdbUtils.ComparisonOperators.Equal
|
|
132
101
|
}];
|
|
133
102
|
}
|
|
134
103
|
|
|
@@ -140,13 +109,13 @@ function getCondition(conditionType, fieldType) {
|
|
|
140
109
|
switch (fieldType) {
|
|
141
110
|
case _ModelAttributeFormControl.ModelAttributeValueType.ARR:
|
|
142
111
|
operations = [{
|
|
143
|
-
operator: ComparisonOperators.NotIn
|
|
112
|
+
operator: _cmdbUtils.ComparisonOperators.NotIn
|
|
144
113
|
}];
|
|
145
114
|
break;
|
|
146
115
|
|
|
147
116
|
default:
|
|
148
117
|
operations = [{
|
|
149
|
-
operator: ComparisonOperators.NotEqual
|
|
118
|
+
operator: _cmdbUtils.ComparisonOperators.NotEqual
|
|
150
119
|
}];
|
|
151
120
|
}
|
|
152
121
|
|
|
@@ -158,13 +127,13 @@ function getCondition(conditionType, fieldType) {
|
|
|
158
127
|
switch (fieldType) {
|
|
159
128
|
case _ModelAttributeFormControl.ModelAttributeValueType.ENUMS:
|
|
160
129
|
operations = [{
|
|
161
|
-
operator: ComparisonOperators.In
|
|
130
|
+
operator: _cmdbUtils.ComparisonOperators.In
|
|
162
131
|
}];
|
|
163
132
|
break;
|
|
164
133
|
|
|
165
134
|
default:
|
|
166
135
|
operations = [{
|
|
167
|
-
operator: ComparisonOperators.Like,
|
|
136
|
+
operator: _cmdbUtils.ComparisonOperators.Like,
|
|
168
137
|
prefix: "%",
|
|
169
138
|
suffix: "%"
|
|
170
139
|
}];
|
|
@@ -178,13 +147,13 @@ function getCondition(conditionType, fieldType) {
|
|
|
178
147
|
switch (fieldType) {
|
|
179
148
|
case _ModelAttributeFormControl.ModelAttributeValueType.ENUMS:
|
|
180
149
|
operations = [{
|
|
181
|
-
operator: ComparisonOperators.NotIn
|
|
150
|
+
operator: _cmdbUtils.ComparisonOperators.NotIn
|
|
182
151
|
}];
|
|
183
152
|
break;
|
|
184
153
|
|
|
185
154
|
default:
|
|
186
155
|
operations = [{
|
|
187
|
-
operator: ComparisonOperators.NotLike,
|
|
156
|
+
operator: _cmdbUtils.ComparisonOperators.NotLike,
|
|
188
157
|
prefix: "%",
|
|
189
158
|
suffix: "%"
|
|
190
159
|
}];
|
|
@@ -195,7 +164,7 @@ function getCondition(conditionType, fieldType) {
|
|
|
195
164
|
case ConditionType.Empty:
|
|
196
165
|
label = _i18next.default.t(`${_constants2.NS_LIBS_CMDB_INSTANCES}:${_constants2.K.OPERATOR_IS_EMPTY_DEFINE}`);
|
|
197
166
|
operations = [{
|
|
198
|
-
operator: ElementOperators.Exists,
|
|
167
|
+
operator: _cmdbUtils.ElementOperators.Exists,
|
|
199
168
|
fixedValue: false
|
|
200
169
|
}];
|
|
201
170
|
break;
|
|
@@ -203,7 +172,7 @@ function getCondition(conditionType, fieldType) {
|
|
|
203
172
|
case ConditionType.NotEmpty:
|
|
204
173
|
label = _i18next.default.t(`${_constants2.NS_LIBS_CMDB_INSTANCES}:${_constants2.K.OPERATOR_IS_NOT_EMPTY_DEFINE}`);
|
|
205
174
|
operations = [{
|
|
206
|
-
operator: ElementOperators.Exists,
|
|
175
|
+
operator: _cmdbUtils.ElementOperators.Exists,
|
|
207
176
|
fixedValue: true
|
|
208
177
|
}];
|
|
209
178
|
break;
|
|
@@ -211,7 +180,7 @@ function getCondition(conditionType, fieldType) {
|
|
|
211
180
|
case ConditionType.True:
|
|
212
181
|
label = "true";
|
|
213
182
|
operations = [{
|
|
214
|
-
operator: ComparisonOperators.Equal,
|
|
183
|
+
operator: _cmdbUtils.ComparisonOperators.Equal,
|
|
215
184
|
fixedValue: true
|
|
216
185
|
}];
|
|
217
186
|
break;
|
|
@@ -219,16 +188,16 @@ function getCondition(conditionType, fieldType) {
|
|
|
219
188
|
case ConditionType.False:
|
|
220
189
|
label = "false";
|
|
221
190
|
operations = [{
|
|
222
|
-
operator: ComparisonOperators.Equal,
|
|
191
|
+
operator: _cmdbUtils.ComparisonOperators.Equal,
|
|
223
192
|
fixedValue: false
|
|
224
193
|
}];
|
|
225
194
|
break;
|
|
226
195
|
|
|
227
196
|
case ConditionType.Between:
|
|
228
197
|
operations = [{
|
|
229
|
-
operator: ComparisonOperators.GreaterThanOrEqual
|
|
198
|
+
operator: _cmdbUtils.ComparisonOperators.GreaterThanOrEqual
|
|
230
199
|
}, {
|
|
231
|
-
operator: ComparisonOperators.LessThanOrEqual
|
|
200
|
+
operator: _cmdbUtils.ComparisonOperators.LessThanOrEqual
|
|
232
201
|
}];
|
|
233
202
|
|
|
234
203
|
switch (fieldType) {
|
|
@@ -291,7 +260,7 @@ function getFieldConditionsAndValues(fieldQueryOperatorExpressionsMap, id, value
|
|
|
291
260
|
const relatedKey = (0, _lodash.findKey)(fieldQueryOperatorExpressionsMap, (v, k) => (0, _lodash.startsWith)(k, `${relationSideId}.`) || k === relationSideId);
|
|
292
261
|
const relatedExpressions = fieldQueryOperatorExpressionsMap[relatedKey];
|
|
293
262
|
|
|
294
|
-
if (relatedExpressions && !(0, _lodash.isNil)(relatedExpressions[ElementOperators.Exists])) {
|
|
263
|
+
if (relatedExpressions && !(0, _lodash.isNil)(relatedExpressions[_cmdbUtils.ElementOperators.Exists])) {
|
|
295
264
|
expressions = fieldQueryOperatorExpressionsMap[relatedKey];
|
|
296
265
|
}
|
|
297
266
|
}
|
|
@@ -349,7 +318,7 @@ function getFieldConditionsAndValues(fieldQueryOperatorExpressionsMap, id, value
|
|
|
349
318
|
}
|
|
350
319
|
}
|
|
351
320
|
|
|
352
|
-
if (typeof values[0] === "string" || typeof values[0] === "number" || operation.operator !== ElementOperators.Exists && typeof values[0] === "boolean") {
|
|
321
|
+
if (typeof values[0] === "string" || typeof values[0] === "number" || operation.operator !== _cmdbUtils.ElementOperators.Exists && typeof values[0] === "boolean") {
|
|
353
322
|
queryValuesStr = values.join(" ");
|
|
354
323
|
values = values.map(value => {
|
|
355
324
|
if (operation.prefix && value.startsWith(operation.prefix)) {
|
|
@@ -432,7 +401,7 @@ class AdvancedSearchForm extends _react.default.Component {
|
|
|
432
401
|
const relatedField = newFields[relatedFieldIndex];
|
|
433
402
|
const relatedCondition = relatedField.availableConditions.find(condition => condition.type === value);
|
|
434
403
|
|
|
435
|
-
if (condition.operations[0].operator === ElementOperators.Exists) {
|
|
404
|
+
if (condition.operations[0].operator === _cmdbUtils.ElementOperators.Exists) {
|
|
436
405
|
newFields = (0, _immutabilityHelper.default)(newFields, {
|
|
437
406
|
[relatedFieldIndex]: {
|
|
438
407
|
currentCondition: {
|
|
@@ -443,7 +412,7 @@ class AdvancedSearchForm extends _react.default.Component {
|
|
|
443
412
|
}
|
|
444
413
|
}
|
|
445
414
|
});
|
|
446
|
-
} else if (relatedField.currentCondition.operations[0].operator === ElementOperators.Exists) {
|
|
415
|
+
} else if (relatedField.currentCondition.operations[0].operator === _cmdbUtils.ElementOperators.Exists) {
|
|
447
416
|
newFields = (0, _immutabilityHelper.default)(newFields, {
|
|
448
417
|
[relatedFieldIndex]: {
|
|
449
418
|
currentCondition: {
|
|
@@ -491,7 +460,7 @@ class AdvancedSearchForm extends _react.default.Component {
|
|
|
491
460
|
|
|
492
461
|
field.values.forEach((value, index) => {
|
|
493
462
|
const operation = field.currentCondition.operations[index];
|
|
494
|
-
const fieldId = field.isRelation && ElementOperators.Exists === operation.operator ? field.relationSideId : field.id;
|
|
463
|
+
const fieldId = field.isRelation && _cmdbUtils.ElementOperators.Exists === operation.operator ? field.relationSideId : field.id;
|
|
495
464
|
fieldQuery = {
|
|
496
465
|
[fieldId]: expressions
|
|
497
466
|
};
|
|
@@ -638,7 +607,7 @@ class AdvancedSearchForm extends _react.default.Component {
|
|
|
638
607
|
if (this.props.q) {
|
|
639
608
|
this.props.q.forEach(query => {
|
|
640
609
|
Object.entries(query).forEach(([key, expressions]) => {
|
|
641
|
-
if (key === LogicalOperators.Or || key === LogicalOperators.And) {
|
|
610
|
+
if (key === _cmdbUtils.LogicalOperators.Or || key === _cmdbUtils.LogicalOperators.And) {
|
|
642
611
|
const firstSubQuery = expressions[0];
|
|
643
612
|
const fieldId = Object.keys(firstSubQuery)[0];
|
|
644
613
|
const compareOperator = Object.keys(firstSubQuery[fieldId])[0];
|
|
@@ -658,7 +627,7 @@ class AdvancedSearchForm extends _react.default.Component {
|
|
|
658
627
|
subQueryValue = expressions.map(query => {
|
|
659
628
|
const targetValue = query[fieldId][compareOperator];
|
|
660
629
|
|
|
661
|
-
if (compareOperator === ComparisonOperators.Like || compareOperator === ComparisonOperators.NotLike) {
|
|
630
|
+
if (compareOperator === _cmdbUtils.ComparisonOperators.Like || compareOperator === _cmdbUtils.ComparisonOperators.NotLike) {
|
|
662
631
|
return (0, _lodash.isString)(targetValue) && targetValue.includes(" ") ? `${targetValue[0]}"${targetValue.slice(1, targetValue.length - 1)}"${targetValue[targetValue.length - 1]}` : targetValue;
|
|
663
632
|
} else {
|
|
664
633
|
return (0, _lodash.isString)(targetValue) && targetValue.includes(" ") ? `"${targetValue}"` : targetValue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/instance-list-table/AdvancedSearch.tsx"],"names":["ComparisonOperators","ElementOperators","LogicalOperators","ConditionType","FieldTypeConditionTypesMap","ModelAttributeValueType","STRING","Contain","NotContain","Equal","NotEqual","Empty","NotEmpty","INTEGER","Between","FLOAT","DATE","DATETIME","ENUM","ENUMS","ARR","STRUCT","IP","BOOLEAN","JSON","multiValueSearchOperators","comparisonOperator","Like","logicalOperator","Or","NotLike","And","STRUCT_LIST","getCondition","conditionType","fieldType","label","operations","i18n","t","NS_LIBS_CMDB_INSTANCES","K","OPERATOR_EQUAL_DEFINE","operator","In","OPERATOR_NOT_EQUAL_DEFINE","NotIn","OPERATOR_CONTAIN_DEFINE","prefix","suffix","OPERATOR_NOT_CONTAIN_DEFINE","OPERATOR_IS_EMPTY_DEFINE","Exists","fixedValue","OPERATOR_IS_NOT_EMPTY_DEFINE","True","False","GreaterThanOrEqual","LessThanOrEqual","OPERATOR_BETWEEN_DEFINE_TEXT_INT","OPERATOR_BETWEEN_DEFINE_TEXT_TIME","OPERATOR_BETWEEN_DEFINE_TEXT","OPERATOR_BETWEEN_DEFINE_TEXT_THE","type","convertValue","valueType","value","parseInt","parseFloat","getFieldConditionsAndValues","fieldQueryOperatorExpressionsMap","id","isRelation","relationSideId","objectId","attrId","isRelationWithNoExpression","expressions","expressionsKeysStr","relatedKey","v","k","relatedExpressions","Object","keys","join","currentCondition","availableConditions","map","condition","operatorsStr","isFixedValueEqual","every","operation","undefined","queryValuesStr","values","i","find","multiValueSearchOperator","trim","split","clusterMap","startsWith","slice","length","endsWith","includes","disabled","AdvancedSearchForm","React","Component","constructor","props","valueIndex","field","fieldIndex","setState","fields","state","$set","hasFixedValues","some","newValues","newFields","relatedFieldIndex","findIndex","f","relatedField","relatedCondition","setFormFieldValues","e","preventDefault","autoSearch","onSearch","queries","queriesToShow","fieldToShow","forEach","fieldQuery","fieldQueryToShow","hasValue","structQueryId","isStruct","attrValue","struct_define","struct_item","index","fieldId","fieldIdToShow","Array","isArray","ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE","structId","push","q","form","resetFields","computeState","componentDidUpdate","prevProps","newState","query","entries","key","firstSubQuery","compareOperator","subQueryValue","targetField","fieldItem","item","targetValue","modelData","attr","regex","name","relation","sides","relationObject","idObjectMap","that","showKeys","showKey","nameOfShowKey","attrList","this","fieldIds","reduce","acc","setFieldsValue","getFields","getFieldDecorator","hasBetween","style","multiSelect","FormControlTypeEnum","SELECT","minWidth","styles","conditionInputGroup","onConditionChange","separatorInput","initialValue","onValueChange","conditionInput","render","advancedSearch","advancedSearchForm","handleSearch","textAlign","SEARCH","marginLeft","handleReset","RESET","AdvancedSearch","Form","create"],"mappings":"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","sourcesContent":["import React, { ChangeEvent, FormEvent } from \"react\";\nimport update from \"immutability-helper\";\nimport {\n isEqual,\n find,\n startsWith,\n findKey,\n isNil,\n flatten,\n isString,\n isArray,\n} from \"lodash\";\nimport { Form } from \"@ant-design/compatible\";\nimport { Button, Col, Input, Row, Select } from \"antd\";\nimport { FormComponentProps } from \"@ant-design/compatible/lib/form\";\nimport { CmdbModels } from \"@next-sdk/cmdb-sdk\";\nimport {\n forEachAvailableFields,\n getInstanceNameKeys,\n RelationIdKeys,\n RelationNameKeys,\n RelationObjectIdKeys,\n} from \"@next-libs/cmdb-utils\";\nimport { clusterMap } from \"./constants\";\nimport styles from \"./AdvancedSearch.module.css\";\nimport i18n from \"i18next\";\nimport { NS_LIBS_CMDB_INSTANCES, K } from \"../i18n/constants\";\nimport {\n FormControlTypeEnum,\n ModelAttributeFormControl,\n ModelAttributeValueType,\n} from \"../model-attribute-form-control/ModelAttributeFormControl\";\nimport {\n processAttrValueWithQuote,\n ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE,\n} from \"../processors\";\n\nexport enum ComparisonOperators {\n Equal = \"$eq\",\n NotEqual = \"$ne\",\n Like = \"$like\",\n NotLike = \"$nlike\",\n GreaterThan = \"$gt\",\n GreaterThanOrEqual = \"$gte\",\n LessThan = \"$lt\",\n LessThanOrEqual = \"$lte\",\n In = \"$in\",\n NotIn = \"$nin\",\n}\n\nexport enum ElementOperators {\n Exists = \"$exists\",\n}\n\nexport enum LogicalOperators {\n And = \"$and\",\n Or = \"$or\",\n}\n\nexport type QueryOperatorExpressions = Partial<\n Record<ComparisonOperators | ElementOperators, any>\n>;\n\nexport interface Query {\n [fieldOrLogical: string]: QueryOperatorExpressions | Query[];\n}\n\nexport enum ConditionType {\n Equal = \"equal\",\n NotEqual = \"notEqual\",\n Contain = \"contain\",\n NotContain = \"notContain\",\n Empty = \"empty\",\n NotEmpty = \"notEmpty\",\n Between = \"between\",\n True = \"true\",\n False = \"false\",\n}\n\ninterface ConditionOperation {\n operator: ComparisonOperators | ElementOperators;\n fixedValue?: any;\n prefix?: string;\n suffix?: string;\n}\n\ninterface Condition {\n type: ConditionType;\n label: string;\n operations: ConditionOperation[];\n}\n\nconst FieldTypeConditionTypesMap: Record<string, ConditionType[]> = {\n [ModelAttributeValueType.STRING]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.INTEGER]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.FLOAT]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.DATE]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.DATETIME]: [\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ENUM]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ENUMS]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ARR]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.STRUCT]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.IP]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.BOOLEAN]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.JSON]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n};\n\nconst multiValueSearchOperators = [\n {\n comparisonOperator: ComparisonOperators.Like,\n logicalOperator: LogicalOperators.Or,\n },\n {\n comparisonOperator: ComparisonOperators.NotLike,\n logicalOperator: LogicalOperators.And,\n },\n {\n comparisonOperator: ComparisonOperators.Equal,\n logicalOperator: LogicalOperators.Or,\n },\n {\n comparisonOperator: ComparisonOperators.NotEqual,\n logicalOperator: LogicalOperators.And,\n },\n];\nFieldTypeConditionTypesMap[ModelAttributeValueType.STRUCT_LIST] =\n FieldTypeConditionTypesMap[ModelAttributeValueType.STRUCT];\n\nexport function getCondition(\n conditionType: ConditionType,\n fieldType: ModelAttributeValueType\n): Condition {\n let label: string;\n let operations: ConditionOperation[];\n\n switch (conditionType) {\n case ConditionType.Equal:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_EQUAL_DEFINE}`);\n switch (fieldType) {\n case ModelAttributeValueType.ARR:\n operations = [\n {\n operator: ComparisonOperators.In,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.Equal,\n },\n ];\n }\n break;\n case ConditionType.NotEqual:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_NOT_EQUAL_DEFINE}`\n );\n switch (fieldType) {\n case ModelAttributeValueType.ARR:\n operations = [\n {\n operator: ComparisonOperators.NotIn,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.NotEqual,\n },\n ];\n }\n break;\n case ConditionType.Contain:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_CONTAIN_DEFINE}`);\n switch (fieldType) {\n case ModelAttributeValueType.ENUMS:\n operations = [\n {\n operator: ComparisonOperators.In,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.Like,\n prefix: \"%\",\n suffix: \"%\",\n },\n ];\n }\n break;\n case ConditionType.NotContain:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_NOT_CONTAIN_DEFINE}`\n );\n switch (fieldType) {\n case ModelAttributeValueType.ENUMS:\n operations = [\n {\n operator: ComparisonOperators.NotIn,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.NotLike,\n prefix: \"%\",\n suffix: \"%\",\n },\n ];\n }\n break;\n case ConditionType.Empty:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_IS_EMPTY_DEFINE}`);\n operations = [\n {\n operator: ElementOperators.Exists,\n fixedValue: false,\n },\n ];\n break;\n case ConditionType.NotEmpty:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_IS_NOT_EMPTY_DEFINE}`\n );\n operations = [\n {\n operator: ElementOperators.Exists,\n fixedValue: true,\n },\n ];\n break;\n case ConditionType.True:\n label = \"true\";\n operations = [\n {\n operator: ComparisonOperators.Equal,\n fixedValue: true,\n },\n ];\n break;\n case ConditionType.False:\n label = \"false\";\n operations = [\n {\n operator: ComparisonOperators.Equal,\n fixedValue: false,\n },\n ];\n break;\n case ConditionType.Between:\n operations = [\n {\n operator: ComparisonOperators.GreaterThanOrEqual,\n },\n {\n operator: ComparisonOperators.LessThanOrEqual,\n },\n ];\n switch (fieldType) {\n case ModelAttributeValueType.INTEGER:\n case ModelAttributeValueType.FLOAT:\n // label = \"在此区间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_INT}`\n );\n break;\n case ModelAttributeValueType.DATE:\n case ModelAttributeValueType.DATETIME:\n // label = \"在此期间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_TIME}`\n );\n break;\n case ModelAttributeValueType.IP:\n // label = \"范围\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT}`\n );\n break;\n default:\n // label = \"在此之间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_THE}`\n );\n }\n break;\n }\n\n return {\n type: conditionType,\n label,\n operations,\n };\n}\n\nexport function convertValue(valueType: string, value: any): any {\n if (typeof value !== \"boolean\") {\n switch (valueType) {\n case ModelAttributeValueType.INTEGER:\n return parseInt(value);\n case ModelAttributeValueType.FLOAT:\n return parseFloat(value);\n case ModelAttributeValueType.BOOLEAN:\n return value === \"true\";\n }\n }\n return value;\n}\n\nexport function getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap: Record<string, QueryOperatorExpressions>,\n id: string,\n valueType: ModelAttributeValueType,\n isRelation?: boolean,\n relationSideId?: string,\n objectId?: string,\n attrId?: string\n) {\n let isRelationWithNoExpression = false;\n let expressions = fieldQueryOperatorExpressionsMap[id];\n let expressionsKeysStr: string;\n if (!expressions && isRelation) {\n isRelationWithNoExpression = true;\n const relatedKey = findKey(\n fieldQueryOperatorExpressionsMap,\n (v, k) => startsWith(k, `${relationSideId}.`) || k === relationSideId\n );\n const relatedExpressions = fieldQueryOperatorExpressionsMap[relatedKey];\n if (\n relatedExpressions &&\n !isNil(relatedExpressions[ElementOperators.Exists])\n ) {\n expressions = fieldQueryOperatorExpressionsMap[relatedKey];\n }\n }\n\n if (expressions) {\n expressionsKeysStr = Object.keys(expressions).join(\"\");\n }\n let currentCondition: Condition;\n const availableConditions = FieldTypeConditionTypesMap[valueType].map(\n (conditionType) => {\n const condition = getCondition(conditionType, valueType);\n\n if (expressionsKeysStr) {\n let operatorsStr = \"\";\n const isFixedValueEqual = condition.operations.every((operation) => {\n operatorsStr += operation.operator;\n\n if (operation.fixedValue !== undefined) {\n return operation.fixedValue === expressions[operation.operator];\n } else {\n return true;\n }\n });\n if (isFixedValueEqual && operatorsStr === expressionsKeysStr) {\n currentCondition = condition;\n }\n }\n\n return condition;\n }\n );\n if (!currentCondition) {\n currentCondition = availableConditions[0];\n }\n let queryValuesStr = \"\";\n const values = currentCondition.operations.map((operation) => {\n let value: any;\n // istanbul ignore else\n if (expressions?.[operation.operator] !== undefined) {\n value = expressions[operation.operator];\n let values = [expressions[operation.operator]];\n const i = multiValueSearchOperators.find(\n (multiValueSearchOperator) =>\n multiValueSearchOperator.comparisonOperator === operation.operator\n );\n if (i) {\n if (\n valueType === ModelAttributeValueType.ENUM ||\n typeof expressions[operation.operator] === \"string\"\n ) {\n values = expressions[operation.operator]\n .trim()\n .split(/\\s+/)\n .map((value: string) => convertValue(valueType, value));\n if (objectId === \"CLUSTER\" && attrId === \"type\") {\n values = values.map((value) => clusterMap[value]);\n }\n }\n }\n if (\n typeof values[0] === \"string\" ||\n typeof values[0] === \"number\" ||\n (operation.operator !== ElementOperators.Exists &&\n typeof values[0] === \"boolean\")\n ) {\n queryValuesStr = values.join(\" \");\n values = values.map((value: string) => {\n if (operation.prefix && value.startsWith(operation.prefix)) {\n value = value.slice(operation.prefix.length);\n }\n if (operation.suffix && value.endsWith(operation.suffix)) {\n value = value.slice(0, value.length - operation.suffix.length);\n }\n return value;\n });\n value = [\n ModelAttributeValueType.ENUM,\n ModelAttributeValueType.ARR,\n ].includes(valueType)\n ? values\n : values.join(\" \");\n }\n } else {\n value = operation.fixedValue !== undefined ? operation.fixedValue : null;\n }\n\n return value;\n });\n\n const disabled = false;\n\n // if (\n // isRelation &&\n // expressions &&\n // currentCondition.operations[0].operator === ElementOperators.Exists &&\n // isRelationWithNoExpression\n // ) {\n // disabled = true;\n // currentCondition = availableConditions[0];\n // values = [null];\n // queryValuesStr = \"\";\n // }\n\n return {\n availableConditions,\n currentCondition,\n values,\n queryValuesStr,\n disabled,\n };\n}\n\nexport interface Field {\n id: string;\n name: string;\n attrValue: Partial<CmdbModels.ModelObjectAttrValue>;\n values: any[];\n availableConditions: Condition[];\n currentCondition: Condition;\n isRelation: boolean;\n relationSideId?: string;\n disabled?: boolean;\n}\n\nexport interface AdvancedSearchFormProps extends FormComponentProps {\n fieldIds?: string[];\n idObjectMap: Record<string, Partial<CmdbModels.ModelCmdbObject>>;\n modelData: Partial<CmdbModels.ModelCmdbObject>;\n q?: Query[];\n placeholder?: string;\n onSearch?(\n queries: Query[],\n queriesToShow?: Query[],\n fieldToShow?: Record<string, any[]>[]\n ): void;\n autoSearch?: (fields: Field[]) => void;\n fieldToShow?: Record<string, any[]>[]; // 回填高级搜索的field值(根据query回填丢失了引号信息)\n onChange?(e: ChangeEvent<HTMLInputElement>): void;\n}\n\nexport interface AdvancedSearchFormState {\n fields: Field[];\n}\n\nexport class AdvancedSearchForm extends React.Component<\n AdvancedSearchFormProps,\n AdvancedSearchFormState\n> {\n constructor(props: AdvancedSearchFormProps) {\n super(props);\n\n this.state = this.computeState();\n }\n\n componentDidUpdate(prevProps: Readonly<AdvancedSearchFormProps>): void {\n if (!isEqual(this.props.q, prevProps.q)) {\n const newState = this.computeState();\n this.setState(newState);\n\n this.setFormFieldValues(newState.fields);\n }\n }\n\n computeState(): { fields: Field[] } {\n const fieldQueryOperatorExpressionsMap: Record<\n string,\n QueryOperatorExpressions\n > = {};\n const fields: Field[] = [];\n if (this.props.q) {\n this.props.q.forEach((query) => {\n Object.entries(query).forEach(([key, expressions]) => {\n if (key === LogicalOperators.Or || key === LogicalOperators.And) {\n const firstSubQuery = (expressions as Query[])[0];\n const fieldId = Object.keys(firstSubQuery)[0];\n const compareOperator = Object.keys(firstSubQuery[fieldId])[0];\n let subQueryValue = \"\";\n let targetField;\n if (ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE) {\n targetField = this.props.fieldToShow?.find(\n (fieldItem) => Object.keys(fieldItem)[0] === fieldId\n );\n }\n if (!isNil(targetField)) {\n // 二维数组会有问题,\n subQueryValue = isArray(targetField[fieldId])\n ? targetField[fieldId]\n .map((item) => (isArray(item) ? item.join(\" \") : item))\n .join(\"\")\n : (targetField[fieldId] as any);\n } else {\n subQueryValue = (expressions as Query[])\n .map((query) => {\n const targetValue = (\n query[fieldId] as Record<ComparisonOperators, any>\n )[compareOperator as ComparisonOperators];\n if (\n compareOperator === ComparisonOperators.Like ||\n compareOperator === ComparisonOperators.NotLike\n ) {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `${targetValue[0]}\"${targetValue.slice(\n 1,\n targetValue.length - 1\n )}\"${targetValue[targetValue.length - 1]}`\n : targetValue;\n } else {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `\"${targetValue}\"`\n : targetValue;\n }\n })\n .join(\" \");\n }\n key = fieldId;\n expressions = {\n [compareOperator]: subQueryValue,\n };\n }\n\n fieldQueryOperatorExpressionsMap[key] =\n expressions as QueryOperatorExpressions;\n });\n });\n }\n forEachAvailableFields(\n this.props.modelData,\n (attr) => {\n const attrValue: Partial<CmdbModels.ModelObjectAttrValue> & {\n isStruct?: boolean;\n } & { isClusterType?: boolean } = {};\n\n switch (attr.value.type) {\n case ModelAttributeValueType.STRUCT:\n case ModelAttributeValueType.STRUCT_LIST:\n attrValue.type = ModelAttributeValueType.STRING;\n attrValue.struct_define = attr.value.struct_define;\n attrValue.isStruct = true;\n break;\n case ModelAttributeValueType.ENUM:\n case ModelAttributeValueType.ENUMS:\n attrValue.type = attr.value.type;\n attrValue.regex = attr.value.regex;\n break;\n default:\n attrValue.type = attr.value.type;\n }\n\n fields.push({\n id: attr.id,\n name: attr.name,\n attrValue,\n isRelation: false,\n ...getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap,\n attr.id,\n attr.value.type as ModelAttributeValueType\n ),\n });\n },\n (relation, sides) => {\n const relationObject =\n this.props.idObjectMap[\n relation[`${sides.that}_object_id` as RelationObjectIdKeys]\n ];\n const showKeys = getInstanceNameKeys(relationObject);\n showKeys.forEach((showKey, index) => {\n const nameOfShowKey =\n find(relationObject?.attrList, [\"id\", showKey])?.name ?? showKey;\n const id = `${\n relation[`${sides.this}_id` as RelationIdKeys]\n }.${showKey}`;\n const type = ModelAttributeValueType.STRING;\n\n fields.push({\n id,\n name: `${\n relation[`${sides.this}_name` as RelationNameKeys]\n }(${nameOfShowKey})`,\n attrValue: { type },\n isRelation: true,\n relationSideId: relation[`${sides.this}_id` as RelationIdKeys],\n ...getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap,\n id,\n type,\n true,\n relation[`${sides.this}_id` as RelationNameKeys]\n ),\n });\n });\n },\n this.props.fieldIds\n );\n\n return { fields };\n }\n\n setFormFieldValues(fields: Field[]): void {\n const values = fields.reduce<{ [key: string]: any }>((acc, field) => {\n field.values.map((value, valueIndex) => {\n const operation = field.currentCondition.operations[valueIndex];\n acc[`${field.id}[${valueIndex}]`] =\n operation.fixedValue === undefined ? value : \"\";\n });\n return acc;\n }, {});\n this.props.form.setFieldsValue(values);\n }\n\n onValueChange = (\n value: any,\n valueIndex: number,\n field: Field,\n fieldIndex: number\n ) => {\n this.setState({\n fields: update(this.state.fields, {\n [fieldIndex]: { values: { [valueIndex]: { $set: value } } },\n }),\n });\n };\n\n onConditionChange = (\n value: ConditionType,\n field: Field,\n fieldIndex: number\n ) => {\n const hasFixedValues = field.currentCondition.operations.some(\n (operation) => operation.fixedValue !== undefined\n );\n\n const condition = field.availableConditions.find(\n (condition) => condition.type === value\n );\n let newValues = condition.operations.map((operation) =>\n operation.fixedValue !== undefined ? operation.fixedValue : null\n );\n if (\n newValues.every((value) => value === null) &&\n !hasFixedValues &&\n this.state.fields[fieldIndex].values.length === newValues.length\n ) {\n newValues = this.state.fields[fieldIndex].values;\n }\n\n let newFields = update(this.state.fields, {\n [fieldIndex]: {\n currentCondition: { $set: condition },\n values: {\n $set: newValues,\n },\n },\n });\n\n const relatedFieldIndex = newFields.findIndex(\n (f) =>\n f.isRelation &&\n f.relationSideId === field.relationSideId &&\n f.id !== field.id\n );\n if (relatedFieldIndex !== -1) {\n const relatedField = newFields[relatedFieldIndex];\n const relatedCondition = relatedField.availableConditions.find(\n (condition) => condition.type === value\n );\n if (condition.operations[0].operator === ElementOperators.Exists) {\n newFields = update(newFields, {\n [relatedFieldIndex]: {\n currentCondition: { $set: relatedCondition },\n values: {\n $set: [null],\n },\n },\n });\n } else if (\n relatedField.currentCondition.operations[0].operator ===\n ElementOperators.Exists\n ) {\n newFields = update(newFields, {\n [relatedFieldIndex]: {\n currentCondition: { $set: relatedField.availableConditions[0] },\n values: {\n $set: [null],\n },\n },\n });\n }\n }\n\n this.setState({\n fields: newFields,\n });\n\n this.setFormFieldValues(newFields);\n };\n\n getFields() {\n const { getFieldDecorator } = this.props.form;\n const hasBetween = this.state.fields.some((field) =>\n [\n ModelAttributeValueType.IP,\n ModelAttributeValueType.DATE,\n ModelAttributeValueType.DATETIME,\n ].includes(field.attrValue.type as ModelAttributeValueType)\n );\n return this.state.fields.map((field, fieldIndex) => {\n let type: string;\n let style: React.CSSProperties;\n let attrValue: any = field.attrValue;\n let multiSelect = false;\n switch (field.attrValue.type) {\n case ModelAttributeValueType.INTEGER:\n case ModelAttributeValueType.FLOAT:\n attrValue = {\n type: ModelAttributeValueType.STRING,\n };\n break;\n case ModelAttributeValueType.ENUM:\n case ModelAttributeValueType.ENUMS:\n type = FormControlTypeEnum.SELECT;\n multiSelect = true;\n break;\n case ModelAttributeValueType.DATETIME:\n style = { minWidth: \"auto\" };\n break;\n }\n //高级搜索这里即使是json格式,也用input输入框进行搜索\n if ((attrValue as any).type === \"json\") {\n attrValue = { ...attrValue, type: \"str\" };\n }\n return (\n <Col span={hasBetween ? 12 : 8} key={field.id}>\n <Form.Item label={field.name}>\n <Input.Group className={styles.conditionInputGroup} compact>\n <Select\n dropdownMatchSelectWidth={false}\n value={field.currentCondition.type}\n onChange={(value: ConditionType) =>\n this.onConditionChange(value, field, fieldIndex)\n }\n disabled={field.disabled}\n >\n {field.availableConditions.map((condition) => (\n <Select.Option value={condition.type} key={condition.type}>\n {condition.label}\n </Select.Option>\n ))}\n </Select>\n {field.values.map((value, valueIndex) => {\n const operation = field.currentCondition.operations[valueIndex];\n\n return (\n <React.Fragment\n key={`${field.currentCondition.type}-${operation.operator}`}\n >\n {valueIndex > 0 && (\n <Input\n className={styles.separatorInput}\n placeholder=\"~\"\n disabled\n />\n )}\n {getFieldDecorator(`${field.id}[${valueIndex}]`, {\n initialValue:\n operation.fixedValue === undefined ? value : \"\",\n })(\n operation.fixedValue === undefined && !field.disabled ? (\n <ModelAttributeFormControl\n type={type}\n attribute={{\n id: field.id,\n name: field.name,\n value: attrValue,\n }}\n objectId={this.props.modelData.objectId}\n multiSelect={multiSelect}\n onChange={(value: any) =>\n this.onValueChange(\n value,\n valueIndex,\n field,\n fieldIndex\n )\n }\n className={styles.conditionInput}\n style={style}\n />\n ) : (\n <Input disabled />\n )\n )}\n </React.Fragment>\n );\n })}\n </Input.Group>\n </Form.Item>\n </Col>\n );\n });\n }\n\n handleSearch = (e: FormEvent<any>): void => {\n e.preventDefault();\n if (this.props?.autoSearch) this.props.autoSearch(this.state.fields);\n if (this.props.onSearch) {\n // 当过滤字段为relation并且过滤条件为ElementOperators.Exists的时候,发起后台请求的搜索queries与负责前端展示的query不同。需要额外处理。\n let queries: Query[] = [];\n let queriesToShow: Query[] = [];\n const fieldToShow: Record<string, any[]>[] = [];\n this.state.fields.forEach((field) => {\n const expressions: QueryOperatorExpressions = {};\n let fieldQuery: Query = { [field.id]: expressions };\n let fieldQueryToShow: Query = { [field.id]: expressions };\n let hasValue = false;\n let structQueryId: string[];\n const isStruct = !!(field.attrValue as any).isStruct;\n if (isStruct) {\n structQueryId = field.attrValue.struct_define.map(\n (struct_item) => `${field.id}.${struct_item.id}`\n );\n }\n field.values.forEach((value, index) => {\n const operation = field.currentCondition.operations[index];\n const fieldId =\n field.isRelation && ElementOperators.Exists === operation.operator\n ? field.relationSideId\n : field.id;\n fieldQuery = { [fieldId]: expressions };\n\n const fieldIdToShow = field.id;\n fieldQueryToShow = { [fieldIdToShow]: expressions };\n\n if (\n value !== null &&\n value !== \"\" &&\n !(Array.isArray(value) && value.length === 0)\n ) {\n const multiValueSearchOperator = multiValueSearchOperators.find(\n (operator) => operator.comparisonOperator === operation.operator\n );\n if (multiValueSearchOperator) {\n let values: any[];\n if (\n field.attrValue.type === ModelAttributeValueType.ENUM ||\n field.attrValue.type === ModelAttributeValueType.ARR\n ) {\n values = value;\n } else if (typeof value === \"string\") {\n if (\n !ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE ||\n !value.includes('\"')\n ) {\n values = value\n .trim()\n .split(/\\s+/)\n .map((value) => convertValue(field.attrValue.type, value));\n } else {\n values = processAttrValueWithQuote(value, []);\n }\n } else {\n values = [value];\n }\n if (values.length) {\n if (isStruct) {\n fieldQuery = {\n [multiValueSearchOperator.logicalOperator]: flatten(\n values.map((value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n\n return structQueryId.map(\n (structId: string | number) => ({\n [structId]: {\n [operation.operator]: value,\n },\n })\n );\n })\n ),\n };\n } else {\n fieldQuery = {\n [multiValueSearchOperator.logicalOperator]: values.map(\n (value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n return {\n [fieldId]: {\n [operation.operator]: value,\n },\n };\n }\n ),\n };\n }\n fieldQueryToShow = {\n [multiValueSearchOperator.logicalOperator]: values.map(\n (value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n return {\n [fieldIdToShow]: {\n [operation.operator]: value,\n },\n };\n }\n ),\n };\n hasValue = true;\n fieldToShow.push({ [field.id]: field.values });\n }\n } else {\n value = convertValue(field.attrValue.type, value);\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n expressions[operation.operator] = value;\n hasValue = true;\n fieldToShow.push({ [field.id]: field.values });\n }\n }\n });\n if (hasValue) {\n queries.push(fieldQuery);\n queriesToShow.push(fieldQueryToShow);\n }\n });\n if (queries.length === 0) {\n queries = undefined;\n queriesToShow = undefined;\n }\n if (!isEqual(this.props.q, queries)) {\n this.props.onSearch(queries, queriesToShow, fieldToShow);\n }\n }\n };\n\n handleReset = () => {\n if (this.props.autoSearch) this.props.autoSearch([]);\n this.props.onSearch([], [], []);\n this.props.form.resetFields();\n };\n\n render(): React.ReactNode {\n return (\n <div className={styles.advancedSearch}>\n <Form\n layout=\"vertical\"\n className={styles.advancedSearchForm}\n onSubmit={this.handleSearch}\n >\n <Row gutter={50}>{this.getFields()}</Row>\n <Row>\n <Col span={24} style={{ textAlign: \"right\" }}>\n <Button\n type=\"primary\"\n htmlType=\"submit\"\n data-testid=\"submit-button\"\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.SEARCH}`)}\n </Button>\n <Button\n style={{ marginLeft: 8 }}\n onClick={this.handleReset}\n data-testid=\"reset-button\"\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.RESET}`)}\n </Button>\n </Col>\n </Row>\n </Form>\n </div>\n );\n }\n}\n\nexport const AdvancedSearch = Form.create<AdvancedSearchFormProps>({\n name: \"advanced_search\",\n})(AdvancedSearchForm);\n"],"file":"AdvancedSearch.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/instance-list-table/AdvancedSearch.tsx"],"names":["ConditionType","FieldTypeConditionTypesMap","ModelAttributeValueType","STRING","Contain","NotContain","Equal","NotEqual","Empty","NotEmpty","INTEGER","Between","FLOAT","DATE","DATETIME","ENUM","ENUMS","ARR","STRUCT","IP","BOOLEAN","JSON","multiValueSearchOperators","comparisonOperator","ComparisonOperators","Like","logicalOperator","LogicalOperators","Or","NotLike","And","STRUCT_LIST","getCondition","conditionType","fieldType","label","operations","i18n","t","NS_LIBS_CMDB_INSTANCES","K","OPERATOR_EQUAL_DEFINE","operator","In","OPERATOR_NOT_EQUAL_DEFINE","NotIn","OPERATOR_CONTAIN_DEFINE","prefix","suffix","OPERATOR_NOT_CONTAIN_DEFINE","OPERATOR_IS_EMPTY_DEFINE","ElementOperators","Exists","fixedValue","OPERATOR_IS_NOT_EMPTY_DEFINE","True","False","GreaterThanOrEqual","LessThanOrEqual","OPERATOR_BETWEEN_DEFINE_TEXT_INT","OPERATOR_BETWEEN_DEFINE_TEXT_TIME","OPERATOR_BETWEEN_DEFINE_TEXT","OPERATOR_BETWEEN_DEFINE_TEXT_THE","type","convertValue","valueType","value","parseInt","parseFloat","getFieldConditionsAndValues","fieldQueryOperatorExpressionsMap","id","isRelation","relationSideId","objectId","attrId","isRelationWithNoExpression","expressions","expressionsKeysStr","relatedKey","v","k","relatedExpressions","Object","keys","join","currentCondition","availableConditions","map","condition","operatorsStr","isFixedValueEqual","every","operation","undefined","queryValuesStr","values","i","find","multiValueSearchOperator","trim","split","clusterMap","startsWith","slice","length","endsWith","includes","disabled","AdvancedSearchForm","React","Component","constructor","props","valueIndex","field","fieldIndex","setState","fields","state","$set","hasFixedValues","some","newValues","newFields","relatedFieldIndex","findIndex","f","relatedField","relatedCondition","setFormFieldValues","e","preventDefault","autoSearch","onSearch","queries","queriesToShow","fieldToShow","forEach","fieldQuery","fieldQueryToShow","hasValue","structQueryId","isStruct","attrValue","struct_define","struct_item","index","fieldId","fieldIdToShow","Array","isArray","ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE","structId","push","q","form","resetFields","computeState","componentDidUpdate","prevProps","newState","query","entries","key","firstSubQuery","compareOperator","subQueryValue","targetField","fieldItem","item","targetValue","modelData","attr","regex","name","relation","sides","relationObject","idObjectMap","that","showKeys","showKey","nameOfShowKey","attrList","this","fieldIds","reduce","acc","setFieldsValue","getFields","getFieldDecorator","hasBetween","style","multiSelect","FormControlTypeEnum","SELECT","minWidth","styles","conditionInputGroup","onConditionChange","separatorInput","initialValue","onValueChange","conditionInput","render","advancedSearch","advancedSearchForm","handleSearch","textAlign","SEARCH","marginLeft","handleReset","RESET","AdvancedSearch","Form","create"],"mappings":"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","sourcesContent":["import React, { ChangeEvent, FormEvent } from \"react\";\nimport update from \"immutability-helper\";\nimport {\n isEqual,\n find,\n startsWith,\n findKey,\n isNil,\n flatten,\n isString,\n isArray,\n} from \"lodash\";\nimport { Form } from \"@ant-design/compatible\";\nimport { Button, Col, Input, Row, Select } from \"antd\";\nimport { FormComponentProps } from \"@ant-design/compatible/lib/form\";\nimport { CmdbModels } from \"@next-sdk/cmdb-sdk\";\nimport {\n ComparisonOperators,\n ElementOperators,\n forEachAvailableFields,\n getInstanceNameKeys,\n LogicalOperators,\n Query,\n QueryOperatorExpressions,\n RelationIdKeys,\n RelationNameKeys,\n RelationObjectIdKeys,\n} from \"@next-libs/cmdb-utils\";\nimport { clusterMap } from \"./constants\";\nimport styles from \"./AdvancedSearch.module.css\";\nimport i18n from \"i18next\";\nimport { NS_LIBS_CMDB_INSTANCES, K } from \"../i18n/constants\";\nimport {\n FormControlTypeEnum,\n ModelAttributeFormControl,\n ModelAttributeValueType,\n} from \"../model-attribute-form-control/ModelAttributeFormControl\";\nimport {\n processAttrValueWithQuote,\n ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE,\n} from \"../processors\";\n\nexport enum ConditionType {\n Equal = \"equal\",\n NotEqual = \"notEqual\",\n Contain = \"contain\",\n NotContain = \"notContain\",\n Empty = \"empty\",\n NotEmpty = \"notEmpty\",\n Between = \"between\",\n True = \"true\",\n False = \"false\",\n}\n\ninterface ConditionOperation {\n operator: ComparisonOperators | ElementOperators;\n fixedValue?: any;\n prefix?: string;\n suffix?: string;\n}\n\ninterface Condition {\n type: ConditionType;\n label: string;\n operations: ConditionOperation[];\n}\n\nconst FieldTypeConditionTypesMap: Record<string, ConditionType[]> = {\n [ModelAttributeValueType.STRING]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.INTEGER]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.FLOAT]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.DATE]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.DATETIME]: [\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ENUM]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ENUMS]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ARR]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.STRUCT]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.IP]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.BOOLEAN]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.JSON]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n};\n\nconst multiValueSearchOperators = [\n {\n comparisonOperator: ComparisonOperators.Like,\n logicalOperator: LogicalOperators.Or,\n },\n {\n comparisonOperator: ComparisonOperators.NotLike,\n logicalOperator: LogicalOperators.And,\n },\n {\n comparisonOperator: ComparisonOperators.Equal,\n logicalOperator: LogicalOperators.Or,\n },\n {\n comparisonOperator: ComparisonOperators.NotEqual,\n logicalOperator: LogicalOperators.And,\n },\n];\nFieldTypeConditionTypesMap[ModelAttributeValueType.STRUCT_LIST] =\n FieldTypeConditionTypesMap[ModelAttributeValueType.STRUCT];\n\nexport function getCondition(\n conditionType: ConditionType,\n fieldType: ModelAttributeValueType\n): Condition {\n let label: string;\n let operations: ConditionOperation[];\n\n switch (conditionType) {\n case ConditionType.Equal:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_EQUAL_DEFINE}`);\n switch (fieldType) {\n case ModelAttributeValueType.ARR:\n operations = [\n {\n operator: ComparisonOperators.In,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.Equal,\n },\n ];\n }\n break;\n case ConditionType.NotEqual:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_NOT_EQUAL_DEFINE}`\n );\n switch (fieldType) {\n case ModelAttributeValueType.ARR:\n operations = [\n {\n operator: ComparisonOperators.NotIn,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.NotEqual,\n },\n ];\n }\n break;\n case ConditionType.Contain:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_CONTAIN_DEFINE}`);\n switch (fieldType) {\n case ModelAttributeValueType.ENUMS:\n operations = [\n {\n operator: ComparisonOperators.In,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.Like,\n prefix: \"%\",\n suffix: \"%\",\n },\n ];\n }\n break;\n case ConditionType.NotContain:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_NOT_CONTAIN_DEFINE}`\n );\n switch (fieldType) {\n case ModelAttributeValueType.ENUMS:\n operations = [\n {\n operator: ComparisonOperators.NotIn,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.NotLike,\n prefix: \"%\",\n suffix: \"%\",\n },\n ];\n }\n break;\n case ConditionType.Empty:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_IS_EMPTY_DEFINE}`);\n operations = [\n {\n operator: ElementOperators.Exists,\n fixedValue: false,\n },\n ];\n break;\n case ConditionType.NotEmpty:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_IS_NOT_EMPTY_DEFINE}`\n );\n operations = [\n {\n operator: ElementOperators.Exists,\n fixedValue: true,\n },\n ];\n break;\n case ConditionType.True:\n label = \"true\";\n operations = [\n {\n operator: ComparisonOperators.Equal,\n fixedValue: true,\n },\n ];\n break;\n case ConditionType.False:\n label = \"false\";\n operations = [\n {\n operator: ComparisonOperators.Equal,\n fixedValue: false,\n },\n ];\n break;\n case ConditionType.Between:\n operations = [\n {\n operator: ComparisonOperators.GreaterThanOrEqual,\n },\n {\n operator: ComparisonOperators.LessThanOrEqual,\n },\n ];\n switch (fieldType) {\n case ModelAttributeValueType.INTEGER:\n case ModelAttributeValueType.FLOAT:\n // label = \"在此区间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_INT}`\n );\n break;\n case ModelAttributeValueType.DATE:\n case ModelAttributeValueType.DATETIME:\n // label = \"在此期间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_TIME}`\n );\n break;\n case ModelAttributeValueType.IP:\n // label = \"范围\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT}`\n );\n break;\n default:\n // label = \"在此之间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_THE}`\n );\n }\n break;\n }\n\n return {\n type: conditionType,\n label,\n operations,\n };\n}\n\nexport function convertValue(valueType: string, value: any): any {\n if (typeof value !== \"boolean\") {\n switch (valueType) {\n case ModelAttributeValueType.INTEGER:\n return parseInt(value);\n case ModelAttributeValueType.FLOAT:\n return parseFloat(value);\n case ModelAttributeValueType.BOOLEAN:\n return value === \"true\";\n }\n }\n return value;\n}\n\nexport function getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap: Record<string, QueryOperatorExpressions>,\n id: string,\n valueType: ModelAttributeValueType,\n isRelation?: boolean,\n relationSideId?: string,\n objectId?: string,\n attrId?: string\n) {\n let isRelationWithNoExpression = false;\n let expressions = fieldQueryOperatorExpressionsMap[id];\n let expressionsKeysStr: string;\n if (!expressions && isRelation) {\n isRelationWithNoExpression = true;\n const relatedKey = findKey(\n fieldQueryOperatorExpressionsMap,\n (v, k) => startsWith(k, `${relationSideId}.`) || k === relationSideId\n );\n const relatedExpressions = fieldQueryOperatorExpressionsMap[relatedKey];\n if (\n relatedExpressions &&\n !isNil(relatedExpressions[ElementOperators.Exists])\n ) {\n expressions = fieldQueryOperatorExpressionsMap[relatedKey];\n }\n }\n\n if (expressions) {\n expressionsKeysStr = Object.keys(expressions).join(\"\");\n }\n let currentCondition: Condition;\n const availableConditions = FieldTypeConditionTypesMap[valueType].map(\n (conditionType) => {\n const condition = getCondition(conditionType, valueType);\n\n if (expressionsKeysStr) {\n let operatorsStr = \"\";\n const isFixedValueEqual = condition.operations.every((operation) => {\n operatorsStr += operation.operator;\n\n if (operation.fixedValue !== undefined) {\n return operation.fixedValue === expressions[operation.operator];\n } else {\n return true;\n }\n });\n if (isFixedValueEqual && operatorsStr === expressionsKeysStr) {\n currentCondition = condition;\n }\n }\n\n return condition;\n }\n );\n if (!currentCondition) {\n currentCondition = availableConditions[0];\n }\n let queryValuesStr = \"\";\n const values = currentCondition.operations.map((operation) => {\n let value: any;\n // istanbul ignore else\n if (expressions?.[operation.operator] !== undefined) {\n value = expressions[operation.operator];\n let values = [expressions[operation.operator]];\n const i = multiValueSearchOperators.find(\n (multiValueSearchOperator) =>\n multiValueSearchOperator.comparisonOperator === operation.operator\n );\n if (i) {\n if (\n valueType === ModelAttributeValueType.ENUM ||\n typeof expressions[operation.operator] === \"string\"\n ) {\n values = expressions[operation.operator]\n .trim()\n .split(/\\s+/)\n .map((value: string) => convertValue(valueType, value));\n if (objectId === \"CLUSTER\" && attrId === \"type\") {\n values = values.map((value) => clusterMap[value]);\n }\n }\n }\n if (\n typeof values[0] === \"string\" ||\n typeof values[0] === \"number\" ||\n (operation.operator !== ElementOperators.Exists &&\n typeof values[0] === \"boolean\")\n ) {\n queryValuesStr = values.join(\" \");\n values = values.map((value: string) => {\n if (operation.prefix && value.startsWith(operation.prefix)) {\n value = value.slice(operation.prefix.length);\n }\n if (operation.suffix && value.endsWith(operation.suffix)) {\n value = value.slice(0, value.length - operation.suffix.length);\n }\n return value;\n });\n value = [\n ModelAttributeValueType.ENUM,\n ModelAttributeValueType.ARR,\n ].includes(valueType)\n ? values\n : values.join(\" \");\n }\n } else {\n value = operation.fixedValue !== undefined ? operation.fixedValue : null;\n }\n\n return value;\n });\n\n const disabled = false;\n\n // if (\n // isRelation &&\n // expressions &&\n // currentCondition.operations[0].operator === ElementOperators.Exists &&\n // isRelationWithNoExpression\n // ) {\n // disabled = true;\n // currentCondition = availableConditions[0];\n // values = [null];\n // queryValuesStr = \"\";\n // }\n\n return {\n availableConditions,\n currentCondition,\n values,\n queryValuesStr,\n disabled,\n };\n}\n\nexport interface Field {\n id: string;\n name: string;\n attrValue: Partial<CmdbModels.ModelObjectAttrValue>;\n values: any[];\n availableConditions: Condition[];\n currentCondition: Condition;\n isRelation: boolean;\n relationSideId?: string;\n disabled?: boolean;\n}\n\nexport interface AdvancedSearchFormProps extends FormComponentProps {\n fieldIds?: string[];\n idObjectMap: Record<string, Partial<CmdbModels.ModelCmdbObject>>;\n modelData: Partial<CmdbModels.ModelCmdbObject>;\n q?: Query[];\n placeholder?: string;\n onSearch?(\n queries: Query[],\n queriesToShow?: Query[],\n fieldToShow?: Record<string, any[]>[]\n ): void;\n autoSearch?: (fields: Field[]) => void;\n fieldToShow?: Record<string, any[]>[]; // 回填高级搜索的field值(根据query回填丢失了引号信息)\n onChange?(e: ChangeEvent<HTMLInputElement>): void;\n}\n\nexport interface AdvancedSearchFormState {\n fields: Field[];\n}\n\nexport class AdvancedSearchForm extends React.Component<\n AdvancedSearchFormProps,\n AdvancedSearchFormState\n> {\n constructor(props: AdvancedSearchFormProps) {\n super(props);\n\n this.state = this.computeState();\n }\n\n componentDidUpdate(prevProps: Readonly<AdvancedSearchFormProps>): void {\n if (!isEqual(this.props.q, prevProps.q)) {\n const newState = this.computeState();\n this.setState(newState);\n\n this.setFormFieldValues(newState.fields);\n }\n }\n\n computeState(): { fields: Field[] } {\n const fieldQueryOperatorExpressionsMap: Record<\n string,\n QueryOperatorExpressions\n > = {};\n const fields: Field[] = [];\n if (this.props.q) {\n this.props.q.forEach((query) => {\n Object.entries(query).forEach(([key, expressions]) => {\n if (key === LogicalOperators.Or || key === LogicalOperators.And) {\n const firstSubQuery = (expressions as Query[])[0];\n const fieldId = Object.keys(firstSubQuery)[0];\n const compareOperator = Object.keys(firstSubQuery[fieldId])[0];\n let subQueryValue = \"\";\n let targetField;\n if (ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE) {\n targetField = this.props.fieldToShow?.find(\n (fieldItem) => Object.keys(fieldItem)[0] === fieldId\n );\n }\n if (!isNil(targetField)) {\n // 二维数组会有问题,\n subQueryValue = isArray(targetField[fieldId])\n ? targetField[fieldId]\n .map((item) => (isArray(item) ? item.join(\" \") : item))\n .join(\"\")\n : (targetField[fieldId] as any);\n } else {\n subQueryValue = (expressions as Query[])\n .map((query) => {\n const targetValue = (\n query[fieldId] as Record<ComparisonOperators, any>\n )[compareOperator as ComparisonOperators];\n if (\n compareOperator === ComparisonOperators.Like ||\n compareOperator === ComparisonOperators.NotLike\n ) {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `${targetValue[0]}\"${targetValue.slice(\n 1,\n targetValue.length - 1\n )}\"${targetValue[targetValue.length - 1]}`\n : targetValue;\n } else {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `\"${targetValue}\"`\n : targetValue;\n }\n })\n .join(\" \");\n }\n key = fieldId;\n expressions = {\n [compareOperator]: subQueryValue,\n };\n }\n\n fieldQueryOperatorExpressionsMap[key] =\n expressions as QueryOperatorExpressions;\n });\n });\n }\n forEachAvailableFields(\n this.props.modelData,\n (attr) => {\n const attrValue: Partial<CmdbModels.ModelObjectAttrValue> & {\n isStruct?: boolean;\n } & { isClusterType?: boolean } = {};\n\n switch (attr.value.type) {\n case ModelAttributeValueType.STRUCT:\n case ModelAttributeValueType.STRUCT_LIST:\n attrValue.type = ModelAttributeValueType.STRING;\n attrValue.struct_define = attr.value.struct_define;\n attrValue.isStruct = true;\n break;\n case ModelAttributeValueType.ENUM:\n case ModelAttributeValueType.ENUMS:\n attrValue.type = attr.value.type;\n attrValue.regex = attr.value.regex;\n break;\n default:\n attrValue.type = attr.value.type;\n }\n\n fields.push({\n id: attr.id,\n name: attr.name,\n attrValue,\n isRelation: false,\n ...getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap,\n attr.id,\n attr.value.type as ModelAttributeValueType\n ),\n });\n },\n (relation, sides) => {\n const relationObject =\n this.props.idObjectMap[\n relation[`${sides.that}_object_id` as RelationObjectIdKeys]\n ];\n const showKeys = getInstanceNameKeys(relationObject);\n showKeys.forEach((showKey, index) => {\n const nameOfShowKey =\n find(relationObject?.attrList, [\"id\", showKey])?.name ?? showKey;\n const id = `${\n relation[`${sides.this}_id` as RelationIdKeys]\n }.${showKey}`;\n const type = ModelAttributeValueType.STRING;\n\n fields.push({\n id,\n name: `${\n relation[`${sides.this}_name` as RelationNameKeys]\n }(${nameOfShowKey})`,\n attrValue: { type },\n isRelation: true,\n relationSideId: relation[`${sides.this}_id` as RelationIdKeys],\n ...getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap,\n id,\n type,\n true,\n relation[`${sides.this}_id` as RelationNameKeys]\n ),\n });\n });\n },\n this.props.fieldIds\n );\n\n return { fields };\n }\n\n setFormFieldValues(fields: Field[]): void {\n const values = fields.reduce<{ [key: string]: any }>((acc, field) => {\n field.values.map((value, valueIndex) => {\n const operation = field.currentCondition.operations[valueIndex];\n acc[`${field.id}[${valueIndex}]`] =\n operation.fixedValue === undefined ? value : \"\";\n });\n return acc;\n }, {});\n this.props.form.setFieldsValue(values);\n }\n\n onValueChange = (\n value: any,\n valueIndex: number,\n field: Field,\n fieldIndex: number\n ) => {\n this.setState({\n fields: update(this.state.fields, {\n [fieldIndex]: { values: { [valueIndex]: { $set: value } } },\n }),\n });\n };\n\n onConditionChange = (\n value: ConditionType,\n field: Field,\n fieldIndex: number\n ) => {\n const hasFixedValues = field.currentCondition.operations.some(\n (operation) => operation.fixedValue !== undefined\n );\n\n const condition = field.availableConditions.find(\n (condition) => condition.type === value\n );\n let newValues = condition.operations.map((operation) =>\n operation.fixedValue !== undefined ? operation.fixedValue : null\n );\n if (\n newValues.every((value) => value === null) &&\n !hasFixedValues &&\n this.state.fields[fieldIndex].values.length === newValues.length\n ) {\n newValues = this.state.fields[fieldIndex].values;\n }\n\n let newFields = update(this.state.fields, {\n [fieldIndex]: {\n currentCondition: { $set: condition },\n values: {\n $set: newValues,\n },\n },\n });\n\n const relatedFieldIndex = newFields.findIndex(\n (f) =>\n f.isRelation &&\n f.relationSideId === field.relationSideId &&\n f.id !== field.id\n );\n if (relatedFieldIndex !== -1) {\n const relatedField = newFields[relatedFieldIndex];\n const relatedCondition = relatedField.availableConditions.find(\n (condition) => condition.type === value\n );\n if (condition.operations[0].operator === ElementOperators.Exists) {\n newFields = update(newFields, {\n [relatedFieldIndex]: {\n currentCondition: { $set: relatedCondition },\n values: {\n $set: [null],\n },\n },\n });\n } else if (\n relatedField.currentCondition.operations[0].operator ===\n ElementOperators.Exists\n ) {\n newFields = update(newFields, {\n [relatedFieldIndex]: {\n currentCondition: { $set: relatedField.availableConditions[0] },\n values: {\n $set: [null],\n },\n },\n });\n }\n }\n\n this.setState({\n fields: newFields,\n });\n\n this.setFormFieldValues(newFields);\n };\n\n getFields() {\n const { getFieldDecorator } = this.props.form;\n const hasBetween = this.state.fields.some((field) =>\n [\n ModelAttributeValueType.IP,\n ModelAttributeValueType.DATE,\n ModelAttributeValueType.DATETIME,\n ].includes(field.attrValue.type as ModelAttributeValueType)\n );\n return this.state.fields.map((field, fieldIndex) => {\n let type: string;\n let style: React.CSSProperties;\n let attrValue: any = field.attrValue;\n let multiSelect = false;\n switch (field.attrValue.type) {\n case ModelAttributeValueType.INTEGER:\n case ModelAttributeValueType.FLOAT:\n attrValue = {\n type: ModelAttributeValueType.STRING,\n };\n break;\n case ModelAttributeValueType.ENUM:\n case ModelAttributeValueType.ENUMS:\n type = FormControlTypeEnum.SELECT;\n multiSelect = true;\n break;\n case ModelAttributeValueType.DATETIME:\n style = { minWidth: \"auto\" };\n break;\n }\n //高级搜索这里即使是json格式,也用input输入框进行搜索\n if ((attrValue as any).type === \"json\") {\n attrValue = { ...attrValue, type: \"str\" };\n }\n return (\n <Col span={hasBetween ? 12 : 8} key={field.id}>\n <Form.Item label={field.name}>\n <Input.Group className={styles.conditionInputGroup} compact>\n <Select\n dropdownMatchSelectWidth={false}\n value={field.currentCondition.type}\n onChange={(value: ConditionType) =>\n this.onConditionChange(value, field, fieldIndex)\n }\n disabled={field.disabled}\n >\n {field.availableConditions.map((condition) => (\n <Select.Option value={condition.type} key={condition.type}>\n {condition.label}\n </Select.Option>\n ))}\n </Select>\n {field.values.map((value, valueIndex) => {\n const operation = field.currentCondition.operations[valueIndex];\n\n return (\n <React.Fragment\n key={`${field.currentCondition.type}-${operation.operator}`}\n >\n {valueIndex > 0 && (\n <Input\n className={styles.separatorInput}\n placeholder=\"~\"\n disabled\n />\n )}\n {getFieldDecorator(`${field.id}[${valueIndex}]`, {\n initialValue:\n operation.fixedValue === undefined ? value : \"\",\n })(\n operation.fixedValue === undefined && !field.disabled ? (\n <ModelAttributeFormControl\n type={type}\n attribute={{\n id: field.id,\n name: field.name,\n value: attrValue,\n }}\n objectId={this.props.modelData.objectId}\n multiSelect={multiSelect}\n onChange={(value: any) =>\n this.onValueChange(\n value,\n valueIndex,\n field,\n fieldIndex\n )\n }\n className={styles.conditionInput}\n style={style}\n />\n ) : (\n <Input disabled />\n )\n )}\n </React.Fragment>\n );\n })}\n </Input.Group>\n </Form.Item>\n </Col>\n );\n });\n }\n\n handleSearch = (e: FormEvent<any>): void => {\n e.preventDefault();\n if (this.props?.autoSearch) this.props.autoSearch(this.state.fields);\n if (this.props.onSearch) {\n // 当过滤字段为relation并且过滤条件为ElementOperators.Exists的时候,发起后台请求的搜索queries与负责前端展示的query不同。需要额外处理。\n let queries: Query[] = [];\n let queriesToShow: Query[] = [];\n const fieldToShow: Record<string, any[]>[] = [];\n this.state.fields.forEach((field) => {\n const expressions: QueryOperatorExpressions = {};\n let fieldQuery: Query = { [field.id]: expressions };\n let fieldQueryToShow: Query = { [field.id]: expressions };\n let hasValue = false;\n let structQueryId: string[];\n const isStruct = !!(field.attrValue as any).isStruct;\n if (isStruct) {\n structQueryId = field.attrValue.struct_define.map(\n (struct_item) => `${field.id}.${struct_item.id}`\n );\n }\n field.values.forEach((value, index) => {\n const operation = field.currentCondition.operations[index];\n const fieldId =\n field.isRelation && ElementOperators.Exists === operation.operator\n ? field.relationSideId\n : field.id;\n fieldQuery = { [fieldId]: expressions };\n\n const fieldIdToShow = field.id;\n fieldQueryToShow = { [fieldIdToShow]: expressions };\n\n if (\n value !== null &&\n value !== \"\" &&\n !(Array.isArray(value) && value.length === 0)\n ) {\n const multiValueSearchOperator = multiValueSearchOperators.find(\n (operator) => operator.comparisonOperator === operation.operator\n );\n if (multiValueSearchOperator) {\n let values: any[];\n if (\n field.attrValue.type === ModelAttributeValueType.ENUM ||\n field.attrValue.type === ModelAttributeValueType.ARR\n ) {\n values = value;\n } else if (typeof value === \"string\") {\n if (\n !ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE ||\n !value.includes('\"')\n ) {\n values = value\n .trim()\n .split(/\\s+/)\n .map((value) => convertValue(field.attrValue.type, value));\n } else {\n values = processAttrValueWithQuote(value, []);\n }\n } else {\n values = [value];\n }\n if (values.length) {\n if (isStruct) {\n fieldQuery = {\n [multiValueSearchOperator.logicalOperator]: flatten(\n values.map((value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n\n return structQueryId.map(\n (structId: string | number) => ({\n [structId]: {\n [operation.operator]: value,\n },\n })\n );\n })\n ),\n };\n } else {\n fieldQuery = {\n [multiValueSearchOperator.logicalOperator]: values.map(\n (value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n return {\n [fieldId]: {\n [operation.operator]: value,\n },\n };\n }\n ),\n };\n }\n fieldQueryToShow = {\n [multiValueSearchOperator.logicalOperator]: values.map(\n (value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n return {\n [fieldIdToShow]: {\n [operation.operator]: value,\n },\n };\n }\n ),\n };\n hasValue = true;\n fieldToShow.push({ [field.id]: field.values });\n }\n } else {\n value = convertValue(field.attrValue.type, value);\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n expressions[operation.operator] = value;\n hasValue = true;\n fieldToShow.push({ [field.id]: field.values });\n }\n }\n });\n if (hasValue) {\n queries.push(fieldQuery);\n queriesToShow.push(fieldQueryToShow);\n }\n });\n if (queries.length === 0) {\n queries = undefined;\n queriesToShow = undefined;\n }\n if (!isEqual(this.props.q, queries)) {\n this.props.onSearch(queries, queriesToShow, fieldToShow);\n }\n }\n };\n\n handleReset = () => {\n if (this.props.autoSearch) this.props.autoSearch([]);\n this.props.onSearch([], [], []);\n this.props.form.resetFields();\n };\n\n render(): React.ReactNode {\n return (\n <div className={styles.advancedSearch}>\n <Form\n layout=\"vertical\"\n className={styles.advancedSearchForm}\n onSubmit={this.handleSearch}\n >\n <Row gutter={50}>{this.getFields()}</Row>\n <Row>\n <Col span={24} style={{ textAlign: \"right\" }}>\n <Button\n type=\"primary\"\n htmlType=\"submit\"\n data-testid=\"submit-button\"\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.SEARCH}`)}\n </Button>\n <Button\n style={{ marginLeft: 8 }}\n onClick={this.handleReset}\n data-testid=\"reset-button\"\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.RESET}`)}\n </Button>\n </Col>\n </Row>\n </Form>\n </div>\n );\n }\n}\n\nexport const AdvancedSearch = Form.create<AdvancedSearchFormProps>({\n name: \"advanced_search\",\n})(AdvancedSearchForm);\n"],"file":"AdvancedSearch.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/processors.ts"],"names":["featureFlags","process","env","NODE_ENV","getFeatureFlags","ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE","processAttrValueWithQuote","attrValue","resultArray","quoteIndex","indexOf","nextQuoteIndex","length","split","slice","push","computeDateFormat","type","value","dateFormat","dateTimeFormat","format","FormControlTypeEnum","DATETIME","changeQueryWithCustomRules","objectId","attrId","q","modifiedQuery","operator","Object","keys","values","clusterMap"],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../src/processors.ts"],"names":["featureFlags","process","env","NODE_ENV","getFeatureFlags","ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE","processAttrValueWithQuote","attrValue","resultArray","quoteIndex","indexOf","nextQuoteIndex","length","split","slice","push","computeDateFormat","type","value","dateFormat","dateTimeFormat","format","FormControlTypeEnum","DATETIME","changeQueryWithCustomRules","objectId","attrId","q","modifiedQuery","operator","Object","keys","values","clusterMap"],"mappings":"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","sourcesContent":["import { getRuntime } from \"@next-core/brick-kit\";\nimport { uniq, compact } from \"lodash\";\nimport moment, { Moment } from \"moment\";\nimport { Query } from \"@next-libs/cmdb-utils\";\n\nimport { FormControlTypeEnum } from \"./model-attribute-form-control/ModelAttributeFormControl\";\nimport { clusterMap } from \"./instance-list-table/constants\";\n\nconst featureFlags =\n process.env.NODE_ENV === \"test\"\n ? { \"cmdb-advance-search-with-quote\": true }\n : getRuntime().getFeatureFlags();\nexport const ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE = true;\n// featureFlags[\"cmdb-advance-search-with-quote\"];\n\nexport const processAttrValueWithQuote = (\n attrValue: string,\n resultArray: any\n): any => {\n const quoteIndex = attrValue.indexOf('\"');\n const nextQuoteIndex = attrValue.indexOf('\"', quoteIndex + 1);\n if (nextQuoteIndex == -1 || quoteIndex === -1) {\n if (attrValue.length) {\n resultArray = [...resultArray, ...attrValue.split(\" \")];\n }\n return uniq(compact(resultArray));\n } else if (nextQuoteIndex != -1) {\n if (quoteIndex !== 0) {\n resultArray = [\n ...resultArray,\n ...attrValue.slice(0, quoteIndex).split(\" \"),\n ];\n resultArray.push(attrValue.slice(quoteIndex + 1, nextQuoteIndex));\n return processAttrValueWithQuote(\n attrValue.slice(nextQuoteIndex + 1),\n resultArray\n );\n } else {\n resultArray.push(attrValue.slice(quoteIndex + 1, nextQuoteIndex));\n return processAttrValueWithQuote(\n attrValue.slice(nextQuoteIndex + 1),\n resultArray\n );\n }\n }\n};\n\nexport const computeDateFormat = (\n type: string,\n value: any\n): { format: string; value: Moment | null } => {\n const dateFormat = \"YYYY-MM-DD\";\n const dateTimeFormat = \"YYYY-MM-DD HH:mm:ss\";\n let format;\n if (type === FormControlTypeEnum.DATETIME) {\n format = dateTimeFormat;\n } else {\n format = dateFormat;\n }\n return {\n value: value ? moment(value, format) : null,\n format,\n };\n};\n\nexport const changeQueryWithCustomRules = (\n objectId: string,\n attrId: string,\n q: Query\n): Query => {\n let modifiedQuery = q;\n if (objectId === \"CLUSTER\" && attrId === \"type\") {\n const operator = Object.keys(modifiedQuery[\"type\"])[0];\n const value = Object.values(modifiedQuery[\"type\"])[0];\n modifiedQuery = {\n type: {\n [operator]: clusterMap[value],\n },\n };\n }\n return modifiedQuery;\n};\n"],"file":"processors.js"}
|
package/dist/esm/index.js
CHANGED
|
@@ -10,5 +10,7 @@ export * from "./instance-list/InstanceList";
|
|
|
10
10
|
export * from "./cmdb-instances-input-form/CmdbInstancesInputFormItem";
|
|
11
11
|
export * from "./cmdb-instances-select-panel/CmdbInstancesSelectPanel";
|
|
12
12
|
export * from "./instance-detail/InstanceDetail";
|
|
13
|
-
export * from "./float-display-brick/FloatDisplayBrick";
|
|
13
|
+
export * from "./float-display-brick/FloatDisplayBrick"; // For compatibility
|
|
14
|
+
|
|
15
|
+
export { ComparisonOperators, ElementOperators, LogicalOperators, Query, QueryOperatorExpressions } from "@next-libs/cmdb-utils";
|
|
14
16
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts"],"names":[],"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","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"],"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,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"}
|
|
@@ -9,11 +9,11 @@ import { K, NS_LIBS_CMDB_INSTANCES } from "../i18n/constants";
|
|
|
9
9
|
import { InstanceApi_postSearchV3, CmdbObjectApi_getIdMapName } from "@next-sdk/cmdb-sdk";
|
|
10
10
|
import { Icon as LegacyIcon } from "@ant-design/compatible";
|
|
11
11
|
import { Button, Spin, Input, Tag, Select } from "antd";
|
|
12
|
-
import { getRelationObjectSides, forEachAvailableFields, getInstanceNameKeys, isSelfRelation } from "@next-libs/cmdb-utils";
|
|
13
|
-
import {
|
|
12
|
+
import { getRelationObjectSides, forEachAvailableFields, getInstanceNameKeys, isSelfRelation, ElementOperators, LogicalOperators } from "@next-libs/cmdb-utils";
|
|
13
|
+
import { JsonStorage } from "@next-libs/storage";
|
|
14
|
+
import { ConditionType, AdvancedSearch, getFieldConditionsAndValues, MoreButtonsContainer, InstanceListTable } from "../instance-list-table";
|
|
14
15
|
import styles from "./InstanceList.module.css";
|
|
15
16
|
import { extraFieldAttrs, CMDB_MODAL_FIELDS_SETTINGS, CMDB_RESOURCE_FIELDS_SETTINGS } from "./constants";
|
|
16
|
-
import { JsonStorage } from "@next-libs/storage";
|
|
17
17
|
import { ModelAttributeValueType } from "../model-attribute-form-control/ModelAttributeFormControl";
|
|
18
18
|
import { IconButton } from "./IconButton";
|
|
19
19
|
import { changeQueryWithCustomRules } from "../processors";
|