@next-libs/cmdb-instances 7.2.8 → 7.2.9

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.
@@ -191,9 +191,10 @@ function convertValue(valueType, value) {
191
191
  if (typeof value !== "boolean") {
192
192
  switch (valueType) {
193
193
  case _ModelAttributeFormControl.ModelAttributeValueType.INTEGER:
194
- return parseInt(value);
194
+ // undefined 后台可剔除
195
+ return isNaN(parseInt(value)) ? undefined : parseInt(value);
195
196
  case _ModelAttributeFormControl.ModelAttributeValueType.FLOAT:
196
- return parseFloat(value);
197
+ return isNaN(parseFloat(value)) ? undefined : parseFloat(value);
197
198
  case _ModelAttributeFormControl.ModelAttributeValueType.BOOLEAN:
198
199
  return value === "true";
199
200
  }
@@ -201,11 +202,11 @@ function convertValue(valueType, value) {
201
202
  return value;
202
203
  }
203
204
  function getFieldConditionsAndValues(fieldQueryOperatorExpressionsMap, id, valueType, isRelation, relationSideId, objectId, attrId) {
204
- let isRelationWithNoExpression = false;
205
+ // let isRelationWithNoExpression = false;
205
206
  let expressions = fieldQueryOperatorExpressionsMap[id];
206
207
  let expressionsKeys;
207
208
  if (!expressions && isRelation) {
208
- isRelationWithNoExpression = true;
209
+ // isRelationWithNoExpression = true;
209
210
  const relatedKey = (0, _lodash.findKey)(fieldQueryOperatorExpressionsMap, (v, k) => (0, _lodash.startsWith)(k, `${relationSideId}.`) || k === relationSideId);
210
211
  const relatedExpressions = fieldQueryOperatorExpressionsMap[relatedKey];
211
212
  if (relatedExpressions && !(0, _lodash.isNil)(relatedExpressions[_cmdbUtils.ElementOperators.Exists])) {
@@ -251,7 +252,7 @@ function getFieldConditionsAndValues(fieldQueryOperatorExpressionsMap, id, value
251
252
  const i = multiValueSearchOperators.find(multiValueSearchOperator => multiValueSearchOperator.comparisonOperator === operation.operator);
252
253
  if (i) {
253
254
  if (valueType === _ModelAttributeFormControl.ModelAttributeValueType.ENUM || typeof expressions[operation.operator] === "string") {
254
- values = expressions[operation.operator].trim().split(/\s+/).map(value => convertValue(valueType, value));
255
+ values = expressions[operation.operator].trim().split(/\s+/).map(value => convertValue(valueType, value)).filter(value => !(0, _lodash.isNil)(value));
255
256
  if (objectId === "CLUSTER" && attrId === "type") {
256
257
  values = values.map(value => _constants.clusterMap[value]);
257
258
  }
@@ -395,7 +396,7 @@ class AdvancedSearchForm extends _react.default.Component {
395
396
  values = value;
396
397
  } else if (typeof value === "string") {
397
398
  if (!_processors.ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE || !value.includes('"')) {
398
- values = value.trim().split(/\s+/).map(value => convertValue(field.attrValue.type, value));
399
+ values = value.trim().split(/\s+/).map(value => convertValue(field.attrValue.type, value)).filter(value => !(0, _lodash.isNil)(value));
399
400
  } else {
400
401
  values = (0, _processors.processAttrValueWithQuote)(value, []);
401
402
  }
@@ -610,11 +611,12 @@ class AdvancedSearchForm extends _react.default.Component {
610
611
  let style;
611
612
  let attrValue = field.attrValue;
612
613
  let multiSelect = false;
614
+ const isBetween = field.currentCondition.type === ConditionType.Between;
613
615
  switch (field.attrValue.type) {
614
616
  case _ModelAttributeFormControl.ModelAttributeValueType.INTEGER:
615
617
  case _ModelAttributeFormControl.ModelAttributeValueType.FLOAT:
616
618
  attrValue = {
617
- type: _ModelAttributeFormControl.ModelAttributeValueType.STRING
619
+ type: isBetween ? _ModelAttributeFormControl.ModelAttributeValueType.INTEGER : _ModelAttributeFormControl.ModelAttributeValueType.STRING
618
620
  };
619
621
  break;
620
622
  case _ModelAttributeFormControl.ModelAttributeValueType.ENUM:
@@ -1 +1 @@
1
- {"version":3,"file":"AdvancedSearch.js","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","expressionsKeys","relatedKey","findKey","v","k","startsWith","relatedExpressions","isNil","Object","keys","currentCondition","availableConditions","map","condition","length","operatorsStr","isFixedValueEqual","every","operation","push","undefined","toString","includes","queryValuesStr","values","i","find","multiValueSearchOperator","trim","split","clusterMap","join","slice","endsWith","disabled","AdvancedSearchForm","React","Component","constructor","props","valueIndex","field","fieldIndex","setState","fields","update","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","processAttrValueWithQuote","flatten","structId","isEqual","q","form","resetFields","computeState","componentDidUpdate","prevProps","newState","query","entries","key","firstSubQuery","compareOperators","compareOperator","subQueryValue","targetField","fieldItem","item","targetValue","isString","forEachAvailableFields","modelData","attr","regex","name","relation","sides","relationObject","idObjectMap","that","showKeys","getInstanceNameKeys","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"],"sources":["../../../src/instance-list-table/AdvancedSearch.tsx"],"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 expressionsKeys: 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 expressionsKeys = Object.keys(expressions);\n }\n let currentCondition: Condition;\n const availableConditions = FieldTypeConditionTypesMap[valueType].map(\n (conditionType) => {\n const condition = getCondition(conditionType, valueType);\n\n if (expressionsKeys?.length) {\n const operatorsStr: string[] = [];\n // 由于当 ConditionType.Between ,operations 有两个,当用户只填选一个时,currentCondition会默认第一个选择器。与实际不符\n const isFixedValueEqual = condition.operations.every((operation) => {\n operatorsStr.push(operation.operator);\n\n if (operation.fixedValue !== undefined) {\n return (\n operation.fixedValue?.toString() ===\n expressions[operation?.operator]?.toString()\n );\n } else {\n return true;\n }\n });\n if (\n isFixedValueEqual &&\n expressionsKeys.every((operator) => operatorsStr.includes(operator))\n ) {\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 ElementOperators.Exists时直接返回fixedValue\n if (\n expressions?.[operation.operator] !== undefined &&\n operation.operator !== ElementOperators.Exists\n ) {\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 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 const disabled = false;\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 // 由于 ConditionType.Between 这边的 operator 是两个,由于需要支持选择一个的时候也要显示出来,这边不能将选择器合并成str吐出去\n const compareOperators = Object.keys(firstSubQuery[fieldId]);\n const compareOperator =\n compareOperators.length > 1\n ? compareOperators\n : compareOperators.join(\"\");\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 }\n // 对于时间选择器有两个的,不用特意将值转换成str,因为不需要这里的值\n else {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `\"${targetValue}\"`\n : targetValue;\n }\n })\n .join(\" \");\n }\n key = fieldId;\n expressions = Array.isArray(compareOperator)\n ? firstSubQuery[fieldId]\n : {\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: `_${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 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 const fields = this.state.fields.map((v) => ({ ...v, id: v.id.slice(1) }));\n if (this.props?.autoSearch) this.props.autoSearch(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 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"],"mappings":"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"}
1
+ {"version":3,"file":"AdvancedSearch.js","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","isNaN","parseInt","undefined","parseFloat","getFieldConditionsAndValues","fieldQueryOperatorExpressionsMap","id","isRelation","relationSideId","objectId","attrId","expressions","expressionsKeys","relatedKey","findKey","v","k","startsWith","relatedExpressions","isNil","Object","keys","currentCondition","availableConditions","map","condition","length","operatorsStr","isFixedValueEqual","every","operation","push","toString","includes","queryValuesStr","values","i","find","multiValueSearchOperator","trim","split","filter","clusterMap","join","slice","endsWith","disabled","AdvancedSearchForm","React","Component","constructor","props","valueIndex","field","fieldIndex","setState","fields","update","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","processAttrValueWithQuote","flatten","structId","isEqual","q","form","resetFields","computeState","componentDidUpdate","prevProps","newState","query","entries","key","firstSubQuery","compareOperators","compareOperator","subQueryValue","targetField","fieldItem","item","targetValue","isString","forEachAvailableFields","modelData","attr","regex","name","relation","sides","relationObject","idObjectMap","that","showKeys","getInstanceNameKeys","showKey","nameOfShowKey","attrList","this","fieldIds","reduce","acc","setFieldsValue","getFields","getFieldDecorator","hasBetween","style","multiSelect","isBetween","FormControlTypeEnum","SELECT","minWidth","styles","conditionInputGroup","onConditionChange","separatorInput","initialValue","onValueChange","conditionInput","render","advancedSearch","advancedSearchForm","handleSearch","textAlign","SEARCH","marginLeft","handleReset","RESET","AdvancedSearch","Form","create"],"sources":["../../../src/instance-list-table/AdvancedSearch.tsx"],"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 // undefined 后台可剔除\n return isNaN(parseInt(value)) ? undefined : parseInt(value);\n case ModelAttributeValueType.FLOAT:\n return isNaN(parseFloat(value)) ? undefined : 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 expressionsKeys: 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 expressionsKeys = Object.keys(expressions);\n }\n let currentCondition: Condition;\n const availableConditions = FieldTypeConditionTypesMap[valueType].map(\n (conditionType) => {\n const condition = getCondition(conditionType, valueType);\n\n if (expressionsKeys?.length) {\n const operatorsStr: string[] = [];\n // 由于当 ConditionType.Between ,operations 有两个,当用户只填选一个时,currentCondition会默认第一个选择器。与实际不符\n const isFixedValueEqual = condition.operations.every((operation) => {\n operatorsStr.push(operation.operator);\n\n if (operation.fixedValue !== undefined) {\n return (\n operation.fixedValue?.toString() ===\n expressions[operation?.operator]?.toString()\n );\n } else {\n return true;\n }\n });\n if (\n isFixedValueEqual &&\n expressionsKeys.every((operator) => operatorsStr.includes(operator))\n ) {\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 ElementOperators.Exists时直接返回fixedValue\n if (\n expressions?.[operation.operator] !== undefined &&\n operation.operator !== ElementOperators.Exists\n ) {\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 .filter((value: any) => !isNil(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 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 const disabled = false;\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 // 由于 ConditionType.Between 这边的 operator 是两个,由于需要支持选择一个的时候也要显示出来,这边不能将选择器合并成str吐出去\n const compareOperators = Object.keys(firstSubQuery[fieldId]);\n const compareOperator =\n compareOperators.length > 1\n ? compareOperators\n : compareOperators.join(\"\");\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 }\n // 对于时间选择器有两个的,不用特意将值转换成str,因为不需要这里的值\n else {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `\"${targetValue}\"`\n : targetValue;\n }\n })\n .join(\" \");\n }\n key = fieldId;\n expressions = Array.isArray(compareOperator)\n ? firstSubQuery[fieldId]\n : {\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: `_${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 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 const isBetween: boolean =\n field.currentCondition.type === ConditionType.Between;\n switch (field.attrValue.type) {\n case ModelAttributeValueType.INTEGER:\n case ModelAttributeValueType.FLOAT:\n attrValue = {\n type: isBetween\n ? ModelAttributeValueType.INTEGER\n : 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 const fields = this.state.fields.map((v) => ({ ...v, id: v.id.slice(1) }));\n if (this.props?.autoSearch) this.props.autoSearch(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 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 .filter((value) => !isNil(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"],"mappings":"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"}
@@ -181,9 +181,10 @@ export function convertValue(valueType, value) {
181
181
  if (typeof value !== "boolean") {
182
182
  switch (valueType) {
183
183
  case ModelAttributeValueType.INTEGER:
184
- return parseInt(value);
184
+ // undefined 后台可剔除
185
+ return isNaN(parseInt(value)) ? undefined : parseInt(value);
185
186
  case ModelAttributeValueType.FLOAT:
186
- return parseFloat(value);
187
+ return isNaN(parseFloat(value)) ? undefined : parseFloat(value);
187
188
  case ModelAttributeValueType.BOOLEAN:
188
189
  return value === "true";
189
190
  }
@@ -191,11 +192,11 @@ export function convertValue(valueType, value) {
191
192
  return value;
192
193
  }
193
194
  export function getFieldConditionsAndValues(fieldQueryOperatorExpressionsMap, id, valueType, isRelation, relationSideId, objectId, attrId) {
194
- var isRelationWithNoExpression = false;
195
+ // let isRelationWithNoExpression = false;
195
196
  var expressions = fieldQueryOperatorExpressionsMap[id];
196
197
  var expressionsKeys;
197
198
  if (!expressions && isRelation) {
198
- isRelationWithNoExpression = true;
199
+ // isRelationWithNoExpression = true;
199
200
  var relatedKey = findKey(fieldQueryOperatorExpressionsMap, (v, k) => startsWith(k, "".concat(relationSideId, ".")) || k === relationSideId);
200
201
  var relatedExpressions = fieldQueryOperatorExpressionsMap[relatedKey];
201
202
  if (relatedExpressions && !isNil(relatedExpressions[ElementOperators.Exists])) {
@@ -241,7 +242,7 @@ export function getFieldConditionsAndValues(fieldQueryOperatorExpressionsMap, id
241
242
  var i = multiValueSearchOperators.find(multiValueSearchOperator => multiValueSearchOperator.comparisonOperator === operation.operator);
242
243
  if (i) {
243
244
  if (valueType === ModelAttributeValueType.ENUM || typeof expressions[operation.operator] === "string") {
244
- _values = expressions[operation.operator].trim().split(/\s+/).map(value => convertValue(valueType, value));
245
+ _values = expressions[operation.operator].trim().split(/\s+/).map(value => convertValue(valueType, value)).filter(value => !isNil(value));
245
246
  if (objectId === "CLUSTER" && attrId === "type") {
246
247
  _values = _values.map(value => clusterMap[value]);
247
248
  }
@@ -384,7 +385,7 @@ export class AdvancedSearchForm extends React.Component {
384
385
  values = value;
385
386
  } else if (typeof value === "string") {
386
387
  if (!ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE || !value.includes('"')) {
387
- values = value.trim().split(/\s+/).map(value => convertValue(field.attrValue.type, value));
388
+ values = value.trim().split(/\s+/).map(value => convertValue(field.attrValue.type, value)).filter(value => !isNil(value));
388
389
  } else {
389
390
  values = processAttrValueWithQuote(value, []);
390
391
  }
@@ -598,11 +599,12 @@ export class AdvancedSearchForm extends React.Component {
598
599
  var style;
599
600
  var attrValue = field.attrValue;
600
601
  var multiSelect = false;
602
+ var isBetween = field.currentCondition.type === ConditionType.Between;
601
603
  switch (field.attrValue.type) {
602
604
  case ModelAttributeValueType.INTEGER:
603
605
  case ModelAttributeValueType.FLOAT:
604
606
  attrValue = {
605
- type: ModelAttributeValueType.STRING
607
+ type: isBetween ? ModelAttributeValueType.INTEGER : ModelAttributeValueType.STRING
606
608
  };
607
609
  break;
608
610
  case ModelAttributeValueType.ENUM:
@@ -1 +1 @@
1
- {"version":3,"file":"AdvancedSearch.js","names":["React","update","isEqual","find","startsWith","findKey","isNil","flatten","isString","isArray","Form","Button","Col","Input","Row","Select","ComparisonOperators","ElementOperators","forEachAvailableFields","getInstanceNameKeys","LogicalOperators","clusterMap","styles","i18n","NS_LIBS_CMDB_INSTANCES","K","FormControlTypeEnum","ModelAttributeFormControl","ModelAttributeValueType","processAttrValueWithQuote","ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE","ConditionType","FieldTypeConditionTypesMap","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","t","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","expressionsKeys","relatedKey","v","k","relatedExpressions","Object","keys","currentCondition","availableConditions","map","condition","length","operatorsStr","isFixedValueEqual","every","operation","push","undefined","toString","includes","queryValuesStr","values","i","multiValueSearchOperator","trim","split","join","slice","endsWith","disabled","AdvancedSearchForm","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","structId","q","form","resetFields","computeState","componentDidUpdate","prevProps","newState","query","entries","key","firstSubQuery","compareOperators","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","SELECT","minWidth","conditionInputGroup","onConditionChange","separatorInput","initialValue","onValueChange","conditionInput","render","advancedSearch","advancedSearchForm","handleSearch","textAlign","SEARCH","marginLeft","handleReset","RESET","AdvancedSearch","create"],"sources":["../../../src/instance-list-table/AdvancedSearch.tsx"],"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 expressionsKeys: 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 expressionsKeys = Object.keys(expressions);\n }\n let currentCondition: Condition;\n const availableConditions = FieldTypeConditionTypesMap[valueType].map(\n (conditionType) => {\n const condition = getCondition(conditionType, valueType);\n\n if (expressionsKeys?.length) {\n const operatorsStr: string[] = [];\n // 由于当 ConditionType.Between ,operations 有两个,当用户只填选一个时,currentCondition会默认第一个选择器。与实际不符\n const isFixedValueEqual = condition.operations.every((operation) => {\n operatorsStr.push(operation.operator);\n\n if (operation.fixedValue !== undefined) {\n return (\n operation.fixedValue?.toString() ===\n expressions[operation?.operator]?.toString()\n );\n } else {\n return true;\n }\n });\n if (\n isFixedValueEqual &&\n expressionsKeys.every((operator) => operatorsStr.includes(operator))\n ) {\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 ElementOperators.Exists时直接返回fixedValue\n if (\n expressions?.[operation.operator] !== undefined &&\n operation.operator !== ElementOperators.Exists\n ) {\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 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 const disabled = false;\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 // 由于 ConditionType.Between 这边的 operator 是两个,由于需要支持选择一个的时候也要显示出来,这边不能将选择器合并成str吐出去\n const compareOperators = Object.keys(firstSubQuery[fieldId]);\n const compareOperator =\n compareOperators.length > 1\n ? compareOperators\n : compareOperators.join(\"\");\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 }\n // 对于时间选择器有两个的,不用特意将值转换成str,因为不需要这里的值\n else {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `\"${targetValue}\"`\n : targetValue;\n }\n })\n .join(\" \");\n }\n key = fieldId;\n expressions = Array.isArray(compareOperator)\n ? firstSubQuery[fieldId]\n : {\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: `_${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 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 const fields = this.state.fields.map((v) => ({ ...v, id: v.id.slice(1) }));\n if (this.props?.autoSearch) this.props.autoSearch(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 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"],"mappings":"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"}
1
+ {"version":3,"file":"AdvancedSearch.js","names":["React","update","isEqual","find","startsWith","findKey","isNil","flatten","isString","isArray","Form","Button","Col","Input","Row","Select","ComparisonOperators","ElementOperators","forEachAvailableFields","getInstanceNameKeys","LogicalOperators","clusterMap","styles","i18n","NS_LIBS_CMDB_INSTANCES","K","FormControlTypeEnum","ModelAttributeFormControl","ModelAttributeValueType","processAttrValueWithQuote","ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE","ConditionType","FieldTypeConditionTypesMap","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","t","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","isNaN","parseInt","undefined","parseFloat","getFieldConditionsAndValues","fieldQueryOperatorExpressionsMap","id","isRelation","relationSideId","objectId","attrId","expressions","expressionsKeys","relatedKey","v","k","relatedExpressions","Object","keys","currentCondition","availableConditions","map","condition","length","operatorsStr","isFixedValueEqual","every","operation","push","toString","includes","queryValuesStr","values","i","multiValueSearchOperator","trim","split","filter","join","slice","endsWith","disabled","AdvancedSearchForm","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","structId","q","form","resetFields","computeState","componentDidUpdate","prevProps","newState","query","entries","key","firstSubQuery","compareOperators","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","isBetween","SELECT","minWidth","conditionInputGroup","onConditionChange","separatorInput","initialValue","onValueChange","conditionInput","render","advancedSearch","advancedSearchForm","handleSearch","textAlign","SEARCH","marginLeft","handleReset","RESET","AdvancedSearch","create"],"sources":["../../../src/instance-list-table/AdvancedSearch.tsx"],"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 // undefined 后台可剔除\n return isNaN(parseInt(value)) ? undefined : parseInt(value);\n case ModelAttributeValueType.FLOAT:\n return isNaN(parseFloat(value)) ? undefined : 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 expressionsKeys: 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 expressionsKeys = Object.keys(expressions);\n }\n let currentCondition: Condition;\n const availableConditions = FieldTypeConditionTypesMap[valueType].map(\n (conditionType) => {\n const condition = getCondition(conditionType, valueType);\n\n if (expressionsKeys?.length) {\n const operatorsStr: string[] = [];\n // 由于当 ConditionType.Between ,operations 有两个,当用户只填选一个时,currentCondition会默认第一个选择器。与实际不符\n const isFixedValueEqual = condition.operations.every((operation) => {\n operatorsStr.push(operation.operator);\n\n if (operation.fixedValue !== undefined) {\n return (\n operation.fixedValue?.toString() ===\n expressions[operation?.operator]?.toString()\n );\n } else {\n return true;\n }\n });\n if (\n isFixedValueEqual &&\n expressionsKeys.every((operator) => operatorsStr.includes(operator))\n ) {\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 ElementOperators.Exists时直接返回fixedValue\n if (\n expressions?.[operation.operator] !== undefined &&\n operation.operator !== ElementOperators.Exists\n ) {\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 .filter((value: any) => !isNil(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 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 const disabled = false;\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 // 由于 ConditionType.Between 这边的 operator 是两个,由于需要支持选择一个的时候也要显示出来,这边不能将选择器合并成str吐出去\n const compareOperators = Object.keys(firstSubQuery[fieldId]);\n const compareOperator =\n compareOperators.length > 1\n ? compareOperators\n : compareOperators.join(\"\");\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 }\n // 对于时间选择器有两个的,不用特意将值转换成str,因为不需要这里的值\n else {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `\"${targetValue}\"`\n : targetValue;\n }\n })\n .join(\" \");\n }\n key = fieldId;\n expressions = Array.isArray(compareOperator)\n ? firstSubQuery[fieldId]\n : {\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: `_${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 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 const isBetween: boolean =\n field.currentCondition.type === ConditionType.Between;\n switch (field.attrValue.type) {\n case ModelAttributeValueType.INTEGER:\n case ModelAttributeValueType.FLOAT:\n attrValue = {\n type: isBetween\n ? ModelAttributeValueType.INTEGER\n : 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 const fields = this.state.fields.map((v) => ({ ...v, id: v.id.slice(1) }));\n if (this.props?.autoSearch) this.props.autoSearch(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 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 .filter((value) => !isNil(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"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@next-libs/cmdb-instances",
3
- "version": "7.2.8",
3
+ "version": "7.2.9",
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": "af3be5cf0b93397e4e981611c0b5b9eb2c1118fd"
53
+ "gitHead": "870f1b0cb3541d00e1f89550258dc17209b272d2"
54
54
  }