@next-libs/cmdb-instances 6.14.0 → 6.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/dist/cjs/instance-detail/InstanceDetail.js +8 -1
  3. package/dist/cjs/instance-detail/InstanceDetail.js.map +1 -1
  4. package/dist/cjs/instance-list-table/AdvancedSearch.js +1 -1
  5. package/dist/cjs/instance-list-table/AdvancedSearch.js.map +1 -1
  6. package/dist/cjs/model-attribute-form/ModelAttributeForm.js +42 -26
  7. package/dist/cjs/model-attribute-form/ModelAttributeForm.js.map +1 -1
  8. package/dist/cjs/model-attribute-form-control/ModelAttributeFormControl.js +2 -1
  9. package/dist/cjs/model-attribute-form-control/ModelAttributeFormControl.js.map +1 -1
  10. package/dist/cjs/struct-components/AddStruct.js +2 -2
  11. package/dist/cjs/struct-components/AddStruct.js.map +1 -1
  12. package/dist/esm/instance-detail/InstanceDetail.js +10 -3
  13. package/dist/esm/instance-detail/InstanceDetail.js.map +1 -1
  14. package/dist/esm/instance-list-table/AdvancedSearch.js +1 -1
  15. package/dist/esm/instance-list-table/AdvancedSearch.js.map +1 -1
  16. package/dist/esm/model-attribute-form/ModelAttributeForm.js +69 -41
  17. package/dist/esm/model-attribute-form/ModelAttributeForm.js.map +1 -1
  18. package/dist/esm/model-attribute-form-control/ModelAttributeFormControl.js +2 -1
  19. package/dist/esm/model-attribute-form-control/ModelAttributeFormControl.js.map +1 -1
  20. package/dist/esm/struct-components/AddStruct.js +2 -2
  21. package/dist/esm/struct-components/AddStruct.js.map +1 -1
  22. package/dist/types/model-attribute-form/ModelAttributeForm.d.ts +3 -0
  23. package/dist/types/struct-components/AddStruct.d.ts +1 -0
  24. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/instance-list-table/AdvancedSearch.tsx"],"names":["ComparisonOperators","ElementOperators","LogicalOperators","ConditionType","FieldTypeConditionTypesMap","ModelAttributeValueType","STRING","Contain","NotContain","Equal","NotEqual","Empty","NotEmpty","INTEGER","Between","FLOAT","DATE","DATETIME","ENUM","ENUMS","ARR","STRUCT","IP","BOOLEAN","JSON","multiValueSearchOperators","comparisonOperator","Like","logicalOperator","Or","NotLike","And","STRUCT_LIST","getCondition","conditionType","fieldType","label","operations","i18n","t","NS_LIBS_CMDB_INSTANCES","K","OPERATOR_EQUAL_DEFINE","operator","OPERATOR_NOT_EQUAL_DEFINE","OPERATOR_CONTAIN_DEFINE","In","prefix","suffix","OPERATOR_NOT_CONTAIN_DEFINE","NotIn","OPERATOR_IS_EMPTY_DEFINE","Exists","fixedValue","OPERATOR_IS_NOT_EMPTY_DEFINE","True","False","GreaterThanOrEqual","LessThanOrEqual","OPERATOR_BETWEEN_DEFINE_TEXT_INT","OPERATOR_BETWEEN_DEFINE_TEXT_TIME","OPERATOR_BETWEEN_DEFINE_TEXT","OPERATOR_BETWEEN_DEFINE_TEXT_THE","type","convertValue","valueType","value","parseInt","parseFloat","getFieldConditionsAndValues","fieldQueryOperatorExpressionsMap","id","isRelation","relationSideId","objectId","attrId","isRelationWithNoExpression","expressions","expressionsKeysStr","relatedKey","v","k","relatedExpressions","Object","keys","join","currentCondition","availableConditions","map","condition","operatorsStr","isFixedValueEqual","every","operation","undefined","queryValuesStr","values","i","find","multiValueSearchOperator","trim","split","clusterMap","startsWith","slice","length","endsWith","disabled","AdvancedSearchForm","React","Component","constructor","props","valueIndex","field","fieldIndex","setState","fields","state","$set","hasFixedValues","some","newValues","newFields","relatedFieldIndex","findIndex","f","relatedField","relatedCondition","setFormFieldValues","e","preventDefault","autoSearch","onSearch","queries","queriesToShow","fieldToShow","forEach","fieldQuery","fieldQueryToShow","hasValue","structQueryId","isStruct","attrValue","struct_define","struct_item","index","fieldId","fieldIdToShow","Array","isArray","ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE","includes","structId","push","q","form","resetFields","computeState","componentDidUpdate","prevProps","newState","query","entries","key","firstSubQuery","compareOperator","subQueryValue","targetField","fieldItem","targetValue","modelData","attr","regex","name","relation","sides","relationObject","idObjectMap","that","showKeys","showKey","nameOfShowKey","attrList","this","fieldIds","reduce","acc","setFieldsValue","getFields","getFieldDecorator","hasBetween","style","multiSelect","FormControlTypeEnum","SELECT","minWidth","styles","conditionInputGroup","onConditionChange","separatorInput","initialValue","onValueChange","conditionInput","render","advancedSearch","advancedSearchForm","handleSearch","textAlign","SEARCH","marginLeft","handleReset","RESET","AdvancedSearch","Form","create"],"mappings":"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","sourcesContent":["import React, { ChangeEvent, FormEvent } from \"react\";\nimport update from \"immutability-helper\";\nimport {\n isEqual,\n find,\n startsWith,\n findKey,\n isNil,\n flatten,\n isString,\n isArray,\n} from \"lodash\";\nimport { Form } from \"@ant-design/compatible\";\nimport { Button, Col, Input, Row, Select } from \"antd\";\nimport { FormComponentProps } from \"@ant-design/compatible/lib/form\";\nimport { CmdbModels } from \"@next-sdk/cmdb-sdk\";\nimport {\n forEachAvailableFields,\n getInstanceNameKeys,\n RelationIdKeys,\n RelationNameKeys,\n RelationObjectIdKeys,\n} from \"@next-libs/cmdb-utils\";\nimport { clusterMap } from \"./constants\";\nimport styles from \"./AdvancedSearch.module.css\";\nimport i18n from \"i18next\";\nimport { NS_LIBS_CMDB_INSTANCES, K } from \"../i18n/constants\";\nimport {\n FormControlTypeEnum,\n ModelAttributeFormControl,\n ModelAttributeValueType,\n} from \"../model-attribute-form-control/ModelAttributeFormControl\";\nimport {\n processAttrValueWithQuote,\n ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE,\n} from \"../processors\";\n\nexport enum ComparisonOperators {\n Equal = \"$eq\",\n NotEqual = \"$ne\",\n Like = \"$like\",\n NotLike = \"$nlike\",\n GreaterThan = \"$gt\",\n GreaterThanOrEqual = \"$gte\",\n LessThan = \"$lt\",\n LessThanOrEqual = \"$lte\",\n In = \"$in\",\n NotIn = \"$nin\",\n}\n\nexport enum ElementOperators {\n Exists = \"$exists\",\n}\n\nexport enum LogicalOperators {\n And = \"$and\",\n Or = \"$or\",\n}\n\nexport type QueryOperatorExpressions = Partial<\n Record<ComparisonOperators | ElementOperators, any>\n>;\n\nexport interface Query {\n [fieldOrLogical: string]: QueryOperatorExpressions | Query[];\n}\n\nexport enum ConditionType {\n Equal = \"equal\",\n NotEqual = \"notEqual\",\n Contain = \"contain\",\n NotContain = \"notContain\",\n Empty = \"empty\",\n NotEmpty = \"notEmpty\",\n Between = \"between\",\n True = \"true\",\n False = \"false\",\n}\n\ninterface ConditionOperation {\n operator: ComparisonOperators | ElementOperators;\n fixedValue?: any;\n prefix?: string;\n suffix?: string;\n}\n\ninterface Condition {\n type: ConditionType;\n label: string;\n operations: ConditionOperation[];\n}\n\nconst FieldTypeConditionTypesMap: Record<string, ConditionType[]> = {\n [ModelAttributeValueType.STRING]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.INTEGER]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.FLOAT]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.DATE]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.DATETIME]: [\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ENUM]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ENUMS]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ARR]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.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\nfunction 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 operations = [\n {\n operator: ComparisonOperators.Equal,\n },\n ];\n break;\n case ConditionType.NotEqual:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_NOT_EQUAL_DEFINE}`\n );\n operations = [\n {\n operator: ComparisonOperators.NotEqual,\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 case ModelAttributeValueType.ARR:\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 case ModelAttributeValueType.ARR:\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 }\n }\n return value;\n}\n\nexport function getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap: Record<string, QueryOperatorExpressions>,\n id: string,\n valueType: ModelAttributeValueType,\n isRelation?: boolean,\n relationSideId?: string,\n objectId?: string,\n attrId?: string\n) {\n let isRelationWithNoExpression = false;\n let expressions = fieldQueryOperatorExpressionsMap[id];\n let expressionsKeysStr: string;\n if (!expressions && isRelation) {\n isRelationWithNoExpression = true;\n const relatedKey = findKey(\n fieldQueryOperatorExpressionsMap,\n (v, k) => startsWith(k, `${relationSideId}.`) || k === relationSideId\n );\n const relatedExpressions = fieldQueryOperatorExpressionsMap[relatedKey];\n if (\n relatedExpressions &&\n !isNil(relatedExpressions[ElementOperators.Exists])\n ) {\n expressions = fieldQueryOperatorExpressionsMap[relatedKey];\n }\n }\n\n if (expressions) {\n expressionsKeysStr = Object.keys(expressions).join(\"\");\n }\n let currentCondition: Condition;\n const availableConditions = FieldTypeConditionTypesMap[valueType].map(\n (conditionType) => {\n const condition = getCondition(conditionType, valueType);\n\n if (expressionsKeysStr) {\n let operatorsStr = \"\";\n const isFixedValueEqual = condition.operations.every((operation) => {\n operatorsStr += operation.operator;\n\n if (operation.fixedValue !== undefined) {\n return operation.fixedValue === expressions[operation.operator];\n } else {\n return true;\n }\n });\n if (isFixedValueEqual && operatorsStr === expressionsKeysStr) {\n currentCondition = condition;\n }\n }\n\n return condition;\n }\n );\n if (!currentCondition) {\n currentCondition = availableConditions[0];\n }\n let queryValuesStr = \"\";\n const values = currentCondition.operations.map((operation) => {\n let value: any;\n // istanbul ignore else\n if (expressions?.[operation.operator] !== undefined) {\n value = expressions[operation.operator];\n let values = [expressions[operation.operator]];\n const i = multiValueSearchOperators.find(\n (multiValueSearchOperator) =>\n multiValueSearchOperator.comparisonOperator === operation.operator\n );\n if (i) {\n if (\n valueType === ModelAttributeValueType.ENUM ||\n typeof expressions[operation.operator] === \"string\"\n ) {\n values = expressions[operation.operator]\n .trim()\n .split(/\\s+/)\n .map((value: string) => convertValue(valueType, value));\n if (objectId === \"CLUSTER\" && attrId === \"type\") {\n values = values.map((value) => clusterMap[value]);\n }\n }\n }\n if (\n typeof values[0] === \"string\" ||\n typeof values[0] === \"number\" ||\n (operation.operator !== ElementOperators.Exists &&\n typeof values[0] === \"boolean\")\n ) {\n queryValuesStr = values.join(\" \");\n values = values.map((value: string) => {\n if (operation.prefix && value.startsWith(operation.prefix)) {\n value = value.slice(operation.prefix.length);\n }\n if (operation.suffix && value.endsWith(operation.suffix)) {\n value = value.slice(0, value.length - operation.suffix.length);\n }\n return value;\n });\n value =\n valueType === ModelAttributeValueType.ENUM\n ? values\n : values.join(\" \");\n }\n } else {\n value = operation.fixedValue !== undefined ? operation.fixedValue : null;\n }\n\n return value;\n });\n\n const disabled = false;\n\n // if (\n // isRelation &&\n // expressions &&\n // currentCondition.operations[0].operator === ElementOperators.Exists &&\n // isRelationWithNoExpression\n // ) {\n // disabled = true;\n // currentCondition = availableConditions[0];\n // values = [null];\n // queryValuesStr = \"\";\n // }\n\n return {\n availableConditions,\n currentCondition,\n values,\n queryValuesStr,\n disabled,\n };\n}\n\nexport interface Field {\n id: string;\n name: string;\n attrValue: Partial<CmdbModels.ModelObjectAttrValue>;\n values: any[];\n availableConditions: Condition[];\n currentCondition: Condition;\n isRelation: boolean;\n relationSideId?: string;\n disabled?: boolean;\n}\n\nexport interface AdvancedSearchFormProps extends FormComponentProps {\n fieldIds?: string[];\n idObjectMap: Record<string, Partial<CmdbModels.ModelCmdbObject>>;\n modelData: Partial<CmdbModels.ModelCmdbObject>;\n q?: Query[];\n placeholder?: string;\n onSearch?(\n queries: Query[],\n queriesToShow?: Query[],\n fieldToShow?: Record<string, any[]>[]\n ): void;\n autoSearch?: (fields: Field[]) => void;\n fieldToShow?: Record<string, any[]>[]; // 回填高级搜索的field值(根据query回填丢失了引号信息)\n onChange?(e: ChangeEvent<HTMLInputElement>): void;\n}\n\nexport interface AdvancedSearchFormState {\n fields: Field[];\n}\n\nexport class AdvancedSearchForm extends React.Component<\n AdvancedSearchFormProps,\n AdvancedSearchFormState\n> {\n constructor(props: AdvancedSearchFormProps) {\n super(props);\n\n this.state = this.computeState();\n }\n\n componentDidUpdate(prevProps: Readonly<AdvancedSearchFormProps>): void {\n if (!isEqual(this.props.q, prevProps.q)) {\n const newState = this.computeState();\n this.setState(newState);\n\n this.setFormFieldValues(newState.fields);\n }\n }\n\n computeState(): { fields: Field[] } {\n const fieldQueryOperatorExpressionsMap: Record<\n string,\n QueryOperatorExpressions\n > = {};\n const fields: Field[] = [];\n if (this.props.q) {\n this.props.q.forEach((query) => {\n Object.entries(query).forEach(([key, expressions]) => {\n if (key === LogicalOperators.Or || key === LogicalOperators.And) {\n const firstSubQuery = (expressions as Query[])[0];\n const fieldId = Object.keys(firstSubQuery)[0];\n const compareOperator = Object.keys(firstSubQuery[fieldId])[0];\n let subQueryValue = \"\";\n let targetField;\n if (ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE) {\n targetField = this.props.fieldToShow?.find(\n (fieldItem) => Object.keys(fieldItem)[0] === fieldId\n );\n }\n if (!isNil(targetField)) {\n subQueryValue = isArray(targetField[fieldId])\n ? targetField[fieldId].join(\"\")\n : (targetField[fieldId] as any);\n } else {\n subQueryValue = (expressions as Query[])\n .map((query) => {\n const targetValue = (\n query[fieldId] as Record<ComparisonOperators, any>\n )[compareOperator as ComparisonOperators];\n if (\n compareOperator === ComparisonOperators.Like ||\n compareOperator === ComparisonOperators.NotLike\n ) {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `${targetValue[0]}\"${targetValue.slice(\n 1,\n targetValue.length - 1\n )}\"${targetValue[targetValue.length - 1]}`\n : targetValue;\n } else {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `\"${targetValue}\"`\n : targetValue;\n }\n })\n .join(\" \");\n }\n key = fieldId;\n expressions = {\n [compareOperator]: subQueryValue,\n };\n }\n\n fieldQueryOperatorExpressionsMap[key] =\n expressions as QueryOperatorExpressions;\n });\n });\n }\n forEachAvailableFields(\n this.props.modelData,\n (attr) => {\n const attrValue: Partial<CmdbModels.ModelObjectAttrValue> & {\n isStruct?: boolean;\n } & { isClusterType?: boolean } = {};\n\n switch (attr.value.type) {\n case ModelAttributeValueType.STRUCT:\n case ModelAttributeValueType.STRUCT_LIST:\n attrValue.type = ModelAttributeValueType.STRING;\n attrValue.struct_define = attr.value.struct_define;\n attrValue.isStruct = true;\n break;\n case ModelAttributeValueType.ENUM:\n case ModelAttributeValueType.ENUMS:\n attrValue.type = attr.value.type;\n attrValue.regex = attr.value.regex;\n break;\n default:\n attrValue.type = attr.value.type;\n }\n\n fields.push({\n id: attr.id,\n name: attr.name,\n attrValue,\n isRelation: false,\n ...getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap,\n attr.id,\n attr.value.type as ModelAttributeValueType\n ),\n });\n },\n (relation, sides) => {\n const relationObject =\n this.props.idObjectMap[\n relation[`${sides.that}_object_id` as RelationObjectIdKeys]\n ];\n const showKeys = getInstanceNameKeys(relationObject);\n showKeys.forEach((showKey, index) => {\n const nameOfShowKey =\n find(relationObject?.attrList, [\"id\", showKey])?.name ?? showKey;\n const id = `${\n relation[`${sides.this}_id` as RelationIdKeys]\n }.${showKey}`;\n const type = ModelAttributeValueType.STRING;\n\n fields.push({\n id,\n name: `${\n relation[`${sides.this}_name` as RelationNameKeys]\n }(${nameOfShowKey})`,\n attrValue: { type },\n isRelation: true,\n relationSideId: relation[`${sides.this}_id` as RelationIdKeys],\n ...getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap,\n id,\n type,\n true,\n relation[`${sides.this}_id` as RelationNameKeys]\n ),\n });\n });\n },\n this.props.fieldIds\n );\n\n return { fields };\n }\n\n setFormFieldValues(fields: Field[]): void {\n const values = fields.reduce<{ [key: string]: any }>((acc, field) => {\n field.values.map((value, valueIndex) => {\n const operation = field.currentCondition.operations[valueIndex];\n acc[`${field.id}[${valueIndex}]`] =\n operation.fixedValue === undefined ? value : \"\";\n });\n return acc;\n }, {});\n this.props.form.setFieldsValue(values);\n }\n\n onValueChange = (\n value: any,\n valueIndex: number,\n field: Field,\n fieldIndex: number\n ) => {\n this.setState({\n fields: update(this.state.fields, {\n [fieldIndex]: { values: { [valueIndex]: { $set: value } } },\n }),\n });\n };\n\n onConditionChange = (\n value: ConditionType,\n field: Field,\n fieldIndex: number\n ) => {\n const hasFixedValues = field.currentCondition.operations.some(\n (operation) => operation.fixedValue !== undefined\n );\n\n const condition = field.availableConditions.find(\n (condition) => condition.type === value\n );\n let newValues = condition.operations.map((operation) =>\n operation.fixedValue !== undefined ? operation.fixedValue : null\n );\n if (\n newValues.every((value) => value === null) &&\n !hasFixedValues &&\n this.state.fields[fieldIndex].values.length === newValues.length\n ) {\n newValues = this.state.fields[fieldIndex].values;\n }\n\n let newFields = update(this.state.fields, {\n [fieldIndex]: {\n currentCondition: { $set: condition },\n values: {\n $set: newValues,\n },\n },\n });\n\n const relatedFieldIndex = newFields.findIndex(\n (f) =>\n f.isRelation &&\n f.relationSideId === field.relationSideId &&\n f.id !== field.id\n );\n if (relatedFieldIndex !== -1) {\n const relatedField = newFields[relatedFieldIndex];\n const relatedCondition = relatedField.availableConditions.find(\n (condition) => condition.type === value\n );\n if (condition.operations[0].operator === ElementOperators.Exists) {\n newFields = update(newFields, {\n [relatedFieldIndex]: {\n currentCondition: { $set: relatedCondition },\n values: {\n $set: [null],\n },\n },\n });\n } else if (\n relatedField.currentCondition.operations[0].operator ===\n ElementOperators.Exists\n ) {\n newFields = update(newFields, {\n [relatedFieldIndex]: {\n currentCondition: { $set: relatedField.availableConditions[0] },\n values: {\n $set: [null],\n },\n },\n });\n }\n }\n\n this.setState({\n fields: newFields,\n });\n\n this.setFormFieldValues(newFields);\n };\n\n getFields() {\n const { getFieldDecorator } = this.props.form;\n const hasBetween = this.state.fields.some((field) =>\n [\n ModelAttributeValueType.IP,\n ModelAttributeValueType.DATE,\n ModelAttributeValueType.DATETIME,\n ].includes(field.attrValue.type as ModelAttributeValueType)\n );\n return this.state.fields.map((field, fieldIndex) => {\n let type: string;\n let style: React.CSSProperties;\n let attrValue: any = field.attrValue;\n let multiSelect = false;\n switch (field.attrValue.type) {\n case ModelAttributeValueType.INTEGER:\n case ModelAttributeValueType.FLOAT:\n attrValue = {\n type: ModelAttributeValueType.STRING,\n };\n break;\n case ModelAttributeValueType.ENUM:\n case ModelAttributeValueType.ENUMS:\n type = FormControlTypeEnum.SELECT;\n multiSelect = true;\n break;\n case ModelAttributeValueType.DATETIME:\n style = { minWidth: \"auto\" };\n break;\n }\n //高级搜索这里即使是json格式,也用input输入框进行搜索\n if ((attrValue as any).type === \"json\") {\n attrValue = { ...attrValue, type: \"str\" };\n }\n return (\n <Col span={hasBetween ? 12 : 8} key={field.id}>\n <Form.Item label={field.name}>\n <Input.Group className={styles.conditionInputGroup} compact>\n <Select\n dropdownMatchSelectWidth={false}\n value={field.currentCondition.type}\n onChange={(value: ConditionType) =>\n this.onConditionChange(value, field, fieldIndex)\n }\n disabled={field.disabled}\n >\n {field.availableConditions.map((condition) => (\n <Select.Option value={condition.type} key={condition.type}>\n {condition.label}\n </Select.Option>\n ))}\n </Select>\n {field.values.map((value, valueIndex) => {\n const operation = field.currentCondition.operations[valueIndex];\n\n return (\n <React.Fragment\n key={`${field.currentCondition.type}-${operation.operator}`}\n >\n {valueIndex > 0 && (\n <Input\n className={styles.separatorInput}\n placeholder=\"~\"\n disabled\n />\n )}\n {getFieldDecorator(`${field.id}[${valueIndex}]`, {\n initialValue:\n operation.fixedValue === undefined ? value : \"\",\n })(\n operation.fixedValue === undefined && !field.disabled ? (\n <ModelAttributeFormControl\n type={type}\n attribute={{\n id: field.id,\n name: field.name,\n value: attrValue,\n }}\n objectId={this.props.modelData.objectId}\n multiSelect={multiSelect}\n onChange={(value: any) =>\n this.onValueChange(\n value,\n valueIndex,\n field,\n fieldIndex\n )\n }\n className={styles.conditionInput}\n style={style}\n />\n ) : (\n <Input disabled />\n )\n )}\n </React.Fragment>\n );\n })}\n </Input.Group>\n </Form.Item>\n </Col>\n );\n });\n }\n\n handleSearch = (e: FormEvent<any>): void => {\n e.preventDefault();\n this.props?.autoSearch(this.state.fields);\n if (this.props.onSearch) {\n // 当过滤字段为relation并且过滤条件为ElementOperators.Exists的时候,发起后台请求的搜索queries与负责前端展示的query不同。需要额外处理。\n let queries: Query[] = [];\n let queriesToShow: Query[] = [];\n const fieldToShow: Record<string, any[]>[] = [];\n this.state.fields.forEach((field) => {\n const expressions: QueryOperatorExpressions = {};\n let fieldQuery: Query = { [field.id]: expressions };\n let fieldQueryToShow: Query = { [field.id]: expressions };\n let hasValue = false;\n let structQueryId: string[];\n const isStruct = !!(field.attrValue as any).isStruct;\n if (isStruct) {\n structQueryId = field.attrValue.struct_define.map(\n (struct_item) => `${field.id}.${struct_item.id}`\n );\n }\n field.values.forEach((value, index) => {\n const operation = field.currentCondition.operations[index];\n const fieldId =\n field.isRelation && ElementOperators.Exists === operation.operator\n ? field.relationSideId\n : field.id;\n fieldQuery = { [fieldId]: expressions };\n\n const fieldIdToShow = field.id;\n fieldQueryToShow = { [fieldIdToShow]: expressions };\n\n if (\n value !== null &&\n value !== \"\" &&\n !(Array.isArray(value) && value.length === 0)\n ) {\n const multiValueSearchOperator = multiValueSearchOperators.find(\n (operator) => operator.comparisonOperator === operation.operator\n );\n if (multiValueSearchOperator) {\n let values: any[];\n if (field.attrValue.type === ModelAttributeValueType.ENUM) {\n values = value;\n } else if (typeof value === \"string\") {\n if (\n !ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE ||\n !value.includes('\"')\n ) {\n values = value\n .trim()\n .split(/\\s+/)\n .map((value) => convertValue(field.attrValue.type, value));\n } else {\n values = processAttrValueWithQuote(value, []);\n }\n } else {\n values = [value];\n }\n if (values.length) {\n if (isStruct) {\n fieldQuery = {\n [multiValueSearchOperator.logicalOperator]: flatten(\n values.map((value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n\n return structQueryId.map(\n (structId: string | number) => ({\n [structId]: {\n [operation.operator]: value,\n },\n })\n );\n })\n ),\n };\n } else {\n fieldQuery = {\n [multiValueSearchOperator.logicalOperator]: values.map(\n (value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n return {\n [fieldId]: {\n [operation.operator]: value,\n },\n };\n }\n ),\n };\n }\n fieldQueryToShow = {\n [multiValueSearchOperator.logicalOperator]: values.map(\n (value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n return {\n [fieldIdToShow]: {\n [operation.operator]: value,\n },\n };\n }\n ),\n };\n hasValue = true;\n fieldToShow.push({ [field.id]: field.values });\n }\n } else {\n value = convertValue(field.attrValue.type, value);\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n expressions[operation.operator] = value;\n hasValue = true;\n fieldToShow.push({ [field.id]: field.values });\n }\n }\n });\n if (hasValue) {\n queries.push(fieldQuery);\n queriesToShow.push(fieldQueryToShow);\n }\n });\n if (queries.length === 0) {\n queries = undefined;\n queriesToShow = undefined;\n }\n if (!isEqual(this.props.q, queries)) {\n this.props.onSearch(queries, queriesToShow, fieldToShow);\n }\n }\n };\n\n handleReset = () => {\n if (this.props.autoSearch) this.props.autoSearch([]);\n this.props.onSearch([], [], []);\n this.props.form.resetFields();\n };\n\n render(): React.ReactNode {\n return (\n <div className={styles.advancedSearch}>\n <Form\n layout=\"vertical\"\n className={styles.advancedSearchForm}\n onSubmit={this.handleSearch}\n >\n <Row gutter={50}>{this.getFields()}</Row>\n <Row>\n <Col span={24} style={{ textAlign: \"right\" }}>\n <Button\n type=\"primary\"\n htmlType=\"submit\"\n data-testid=\"submit-button\"\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.SEARCH}`)}\n </Button>\n <Button\n style={{ marginLeft: 8 }}\n onClick={this.handleReset}\n data-testid=\"reset-button\"\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.RESET}`)}\n </Button>\n </Col>\n </Row>\n </Form>\n </div>\n );\n }\n}\n\nexport const AdvancedSearch = Form.create<AdvancedSearchFormProps>({\n name: \"advanced_search\",\n})(AdvancedSearchForm);\n"],"file":"AdvancedSearch.js"}
1
+ {"version":3,"sources":["../../../src/instance-list-table/AdvancedSearch.tsx"],"names":["ComparisonOperators","ElementOperators","LogicalOperators","ConditionType","FieldTypeConditionTypesMap","ModelAttributeValueType","STRING","Contain","NotContain","Equal","NotEqual","Empty","NotEmpty","INTEGER","Between","FLOAT","DATE","DATETIME","ENUM","ENUMS","ARR","STRUCT","IP","BOOLEAN","JSON","multiValueSearchOperators","comparisonOperator","Like","logicalOperator","Or","NotLike","And","STRUCT_LIST","getCondition","conditionType","fieldType","label","operations","i18n","t","NS_LIBS_CMDB_INSTANCES","K","OPERATOR_EQUAL_DEFINE","operator","OPERATOR_NOT_EQUAL_DEFINE","OPERATOR_CONTAIN_DEFINE","In","prefix","suffix","OPERATOR_NOT_CONTAIN_DEFINE","NotIn","OPERATOR_IS_EMPTY_DEFINE","Exists","fixedValue","OPERATOR_IS_NOT_EMPTY_DEFINE","True","False","GreaterThanOrEqual","LessThanOrEqual","OPERATOR_BETWEEN_DEFINE_TEXT_INT","OPERATOR_BETWEEN_DEFINE_TEXT_TIME","OPERATOR_BETWEEN_DEFINE_TEXT","OPERATOR_BETWEEN_DEFINE_TEXT_THE","type","convertValue","valueType","value","parseInt","parseFloat","getFieldConditionsAndValues","fieldQueryOperatorExpressionsMap","id","isRelation","relationSideId","objectId","attrId","isRelationWithNoExpression","expressions","expressionsKeysStr","relatedKey","v","k","relatedExpressions","Object","keys","join","currentCondition","availableConditions","map","condition","operatorsStr","isFixedValueEqual","every","operation","undefined","queryValuesStr","values","i","find","multiValueSearchOperator","trim","split","clusterMap","startsWith","slice","length","endsWith","disabled","AdvancedSearchForm","React","Component","constructor","props","valueIndex","field","fieldIndex","setState","fields","state","$set","hasFixedValues","some","newValues","newFields","relatedFieldIndex","findIndex","f","relatedField","relatedCondition","setFormFieldValues","e","preventDefault","autoSearch","onSearch","queries","queriesToShow","fieldToShow","forEach","fieldQuery","fieldQueryToShow","hasValue","structQueryId","isStruct","attrValue","struct_define","struct_item","index","fieldId","fieldIdToShow","Array","isArray","ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE","includes","structId","push","q","form","resetFields","computeState","componentDidUpdate","prevProps","newState","query","entries","key","firstSubQuery","compareOperator","subQueryValue","targetField","fieldItem","targetValue","modelData","attr","regex","name","relation","sides","relationObject","idObjectMap","that","showKeys","showKey","nameOfShowKey","attrList","this","fieldIds","reduce","acc","setFieldsValue","getFields","getFieldDecorator","hasBetween","style","multiSelect","FormControlTypeEnum","SELECT","minWidth","styles","conditionInputGroup","onConditionChange","separatorInput","initialValue","onValueChange","conditionInput","render","advancedSearch","advancedSearchForm","handleSearch","textAlign","SEARCH","marginLeft","handleReset","RESET","AdvancedSearch","Form","create"],"mappings":"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","sourcesContent":["import React, { ChangeEvent, FormEvent } from \"react\";\nimport update from \"immutability-helper\";\nimport {\n isEqual,\n find,\n startsWith,\n findKey,\n isNil,\n flatten,\n isString,\n isArray,\n} from \"lodash\";\nimport { Form } from \"@ant-design/compatible\";\nimport { Button, Col, Input, Row, Select } from \"antd\";\nimport { FormComponentProps } from \"@ant-design/compatible/lib/form\";\nimport { CmdbModels } from \"@next-sdk/cmdb-sdk\";\nimport {\n forEachAvailableFields,\n getInstanceNameKeys,\n RelationIdKeys,\n RelationNameKeys,\n RelationObjectIdKeys,\n} from \"@next-libs/cmdb-utils\";\nimport { clusterMap } from \"./constants\";\nimport styles from \"./AdvancedSearch.module.css\";\nimport i18n from \"i18next\";\nimport { NS_LIBS_CMDB_INSTANCES, K } from \"../i18n/constants\";\nimport {\n FormControlTypeEnum,\n ModelAttributeFormControl,\n ModelAttributeValueType,\n} from \"../model-attribute-form-control/ModelAttributeFormControl\";\nimport {\n processAttrValueWithQuote,\n ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE,\n} from \"../processors\";\n\nexport enum ComparisonOperators {\n Equal = \"$eq\",\n NotEqual = \"$ne\",\n Like = \"$like\",\n NotLike = \"$nlike\",\n GreaterThan = \"$gt\",\n GreaterThanOrEqual = \"$gte\",\n LessThan = \"$lt\",\n LessThanOrEqual = \"$lte\",\n In = \"$in\",\n NotIn = \"$nin\",\n}\n\nexport enum ElementOperators {\n Exists = \"$exists\",\n}\n\nexport enum LogicalOperators {\n And = \"$and\",\n Or = \"$or\",\n}\n\nexport type QueryOperatorExpressions = Partial<\n Record<ComparisonOperators | ElementOperators, any>\n>;\n\nexport interface Query {\n [fieldOrLogical: string]: QueryOperatorExpressions | Query[];\n}\n\nexport enum ConditionType {\n Equal = \"equal\",\n NotEqual = \"notEqual\",\n Contain = \"contain\",\n NotContain = \"notContain\",\n Empty = \"empty\",\n NotEmpty = \"notEmpty\",\n Between = \"between\",\n True = \"true\",\n False = \"false\",\n}\n\ninterface ConditionOperation {\n operator: ComparisonOperators | ElementOperators;\n fixedValue?: any;\n prefix?: string;\n suffix?: string;\n}\n\ninterface Condition {\n type: ConditionType;\n label: string;\n operations: ConditionOperation[];\n}\n\nconst FieldTypeConditionTypesMap: Record<string, ConditionType[]> = {\n [ModelAttributeValueType.STRING]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.INTEGER]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.FLOAT]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.DATE]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.DATETIME]: [\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ENUM]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ENUMS]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ARR]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.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\nfunction 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 operations = [\n {\n operator: ComparisonOperators.Equal,\n },\n ];\n break;\n case ConditionType.NotEqual:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_NOT_EQUAL_DEFINE}`\n );\n operations = [\n {\n operator: ComparisonOperators.NotEqual,\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 case ModelAttributeValueType.ARR:\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 case ModelAttributeValueType.ARR:\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 }\n }\n return value;\n}\n\nexport function getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap: Record<string, QueryOperatorExpressions>,\n id: string,\n valueType: ModelAttributeValueType,\n isRelation?: boolean,\n relationSideId?: string,\n objectId?: string,\n attrId?: string\n) {\n let isRelationWithNoExpression = false;\n let expressions = fieldQueryOperatorExpressionsMap[id];\n let expressionsKeysStr: string;\n if (!expressions && isRelation) {\n isRelationWithNoExpression = true;\n const relatedKey = findKey(\n fieldQueryOperatorExpressionsMap,\n (v, k) => startsWith(k, `${relationSideId}.`) || k === relationSideId\n );\n const relatedExpressions = fieldQueryOperatorExpressionsMap[relatedKey];\n if (\n relatedExpressions &&\n !isNil(relatedExpressions[ElementOperators.Exists])\n ) {\n expressions = fieldQueryOperatorExpressionsMap[relatedKey];\n }\n }\n\n if (expressions) {\n expressionsKeysStr = Object.keys(expressions).join(\"\");\n }\n let currentCondition: Condition;\n const availableConditions = FieldTypeConditionTypesMap[valueType].map(\n (conditionType) => {\n const condition = getCondition(conditionType, valueType);\n\n if (expressionsKeysStr) {\n let operatorsStr = \"\";\n const isFixedValueEqual = condition.operations.every((operation) => {\n operatorsStr += operation.operator;\n\n if (operation.fixedValue !== undefined) {\n return operation.fixedValue === expressions[operation.operator];\n } else {\n return true;\n }\n });\n if (isFixedValueEqual && operatorsStr === expressionsKeysStr) {\n currentCondition = condition;\n }\n }\n\n return condition;\n }\n );\n if (!currentCondition) {\n currentCondition = availableConditions[0];\n }\n let queryValuesStr = \"\";\n const values = currentCondition.operations.map((operation) => {\n let value: any;\n // istanbul ignore else\n if (expressions?.[operation.operator] !== undefined) {\n value = expressions[operation.operator];\n let values = [expressions[operation.operator]];\n const i = multiValueSearchOperators.find(\n (multiValueSearchOperator) =>\n multiValueSearchOperator.comparisonOperator === operation.operator\n );\n if (i) {\n if (\n valueType === ModelAttributeValueType.ENUM ||\n typeof expressions[operation.operator] === \"string\"\n ) {\n values = expressions[operation.operator]\n .trim()\n .split(/\\s+/)\n .map((value: string) => convertValue(valueType, value));\n if (objectId === \"CLUSTER\" && attrId === \"type\") {\n values = values.map((value) => clusterMap[value]);\n }\n }\n }\n if (\n typeof values[0] === \"string\" ||\n typeof values[0] === \"number\" ||\n (operation.operator !== ElementOperators.Exists &&\n typeof values[0] === \"boolean\")\n ) {\n queryValuesStr = values.join(\" \");\n values = values.map((value: string) => {\n if (operation.prefix && value.startsWith(operation.prefix)) {\n value = value.slice(operation.prefix.length);\n }\n if (operation.suffix && value.endsWith(operation.suffix)) {\n value = value.slice(0, value.length - operation.suffix.length);\n }\n return value;\n });\n value =\n valueType === ModelAttributeValueType.ENUM\n ? values\n : values.join(\" \");\n }\n } else {\n value = operation.fixedValue !== undefined ? operation.fixedValue : null;\n }\n\n return value;\n });\n\n const disabled = false;\n\n // if (\n // isRelation &&\n // expressions &&\n // currentCondition.operations[0].operator === ElementOperators.Exists &&\n // isRelationWithNoExpression\n // ) {\n // disabled = true;\n // currentCondition = availableConditions[0];\n // values = [null];\n // queryValuesStr = \"\";\n // }\n\n return {\n availableConditions,\n currentCondition,\n values,\n queryValuesStr,\n disabled,\n };\n}\n\nexport interface Field {\n id: string;\n name: string;\n attrValue: Partial<CmdbModels.ModelObjectAttrValue>;\n values: any[];\n availableConditions: Condition[];\n currentCondition: Condition;\n isRelation: boolean;\n relationSideId?: string;\n disabled?: boolean;\n}\n\nexport interface AdvancedSearchFormProps extends FormComponentProps {\n fieldIds?: string[];\n idObjectMap: Record<string, Partial<CmdbModels.ModelCmdbObject>>;\n modelData: Partial<CmdbModels.ModelCmdbObject>;\n q?: Query[];\n placeholder?: string;\n onSearch?(\n queries: Query[],\n queriesToShow?: Query[],\n fieldToShow?: Record<string, any[]>[]\n ): void;\n autoSearch?: (fields: Field[]) => void;\n fieldToShow?: Record<string, any[]>[]; // 回填高级搜索的field值(根据query回填丢失了引号信息)\n onChange?(e: ChangeEvent<HTMLInputElement>): void;\n}\n\nexport interface AdvancedSearchFormState {\n fields: Field[];\n}\n\nexport class AdvancedSearchForm extends React.Component<\n AdvancedSearchFormProps,\n AdvancedSearchFormState\n> {\n constructor(props: AdvancedSearchFormProps) {\n super(props);\n\n this.state = this.computeState();\n }\n\n componentDidUpdate(prevProps: Readonly<AdvancedSearchFormProps>): void {\n if (!isEqual(this.props.q, prevProps.q)) {\n const newState = this.computeState();\n this.setState(newState);\n\n this.setFormFieldValues(newState.fields);\n }\n }\n\n computeState(): { fields: Field[] } {\n const fieldQueryOperatorExpressionsMap: Record<\n string,\n QueryOperatorExpressions\n > = {};\n const fields: Field[] = [];\n if (this.props.q) {\n this.props.q.forEach((query) => {\n Object.entries(query).forEach(([key, expressions]) => {\n if (key === LogicalOperators.Or || key === LogicalOperators.And) {\n const firstSubQuery = (expressions as Query[])[0];\n const fieldId = Object.keys(firstSubQuery)[0];\n const compareOperator = Object.keys(firstSubQuery[fieldId])[0];\n let subQueryValue = \"\";\n let targetField;\n if (ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE) {\n targetField = this.props.fieldToShow?.find(\n (fieldItem) => Object.keys(fieldItem)[0] === fieldId\n );\n }\n if (!isNil(targetField)) {\n subQueryValue = isArray(targetField[fieldId])\n ? targetField[fieldId].join(\"\")\n : (targetField[fieldId] as any);\n } else {\n subQueryValue = (expressions as Query[])\n .map((query) => {\n const targetValue = (\n query[fieldId] as Record<ComparisonOperators, any>\n )[compareOperator as ComparisonOperators];\n if (\n compareOperator === ComparisonOperators.Like ||\n compareOperator === ComparisonOperators.NotLike\n ) {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `${targetValue[0]}\"${targetValue.slice(\n 1,\n targetValue.length - 1\n )}\"${targetValue[targetValue.length - 1]}`\n : targetValue;\n } else {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `\"${targetValue}\"`\n : targetValue;\n }\n })\n .join(\" \");\n }\n key = fieldId;\n expressions = {\n [compareOperator]: subQueryValue,\n };\n }\n\n fieldQueryOperatorExpressionsMap[key] =\n expressions as QueryOperatorExpressions;\n });\n });\n }\n forEachAvailableFields(\n this.props.modelData,\n (attr) => {\n const attrValue: Partial<CmdbModels.ModelObjectAttrValue> & {\n isStruct?: boolean;\n } & { isClusterType?: boolean } = {};\n\n switch (attr.value.type) {\n case ModelAttributeValueType.STRUCT:\n case ModelAttributeValueType.STRUCT_LIST:\n attrValue.type = ModelAttributeValueType.STRING;\n attrValue.struct_define = attr.value.struct_define;\n attrValue.isStruct = true;\n break;\n case ModelAttributeValueType.ENUM:\n case ModelAttributeValueType.ENUMS:\n attrValue.type = attr.value.type;\n attrValue.regex = attr.value.regex;\n break;\n default:\n attrValue.type = attr.value.type;\n }\n\n fields.push({\n id: attr.id,\n name: attr.name,\n attrValue,\n isRelation: false,\n ...getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap,\n attr.id,\n attr.value.type as ModelAttributeValueType\n ),\n });\n },\n (relation, sides) => {\n const relationObject =\n this.props.idObjectMap[\n relation[`${sides.that}_object_id` as RelationObjectIdKeys]\n ];\n const showKeys = getInstanceNameKeys(relationObject);\n showKeys.forEach((showKey, index) => {\n const nameOfShowKey =\n find(relationObject?.attrList, [\"id\", showKey])?.name ?? showKey;\n const id = `${\n relation[`${sides.this}_id` as RelationIdKeys]\n }.${showKey}`;\n const type = ModelAttributeValueType.STRING;\n\n fields.push({\n id,\n name: `${\n relation[`${sides.this}_name` as RelationNameKeys]\n }(${nameOfShowKey})`,\n attrValue: { type },\n isRelation: true,\n relationSideId: relation[`${sides.this}_id` as RelationIdKeys],\n ...getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap,\n id,\n type,\n true,\n relation[`${sides.this}_id` as RelationNameKeys]\n ),\n });\n });\n },\n this.props.fieldIds\n );\n\n return { fields };\n }\n\n setFormFieldValues(fields: Field[]): void {\n const values = fields.reduce<{ [key: string]: any }>((acc, field) => {\n field.values.map((value, valueIndex) => {\n const operation = field.currentCondition.operations[valueIndex];\n acc[`${field.id}[${valueIndex}]`] =\n operation.fixedValue === undefined ? value : \"\";\n });\n return acc;\n }, {});\n this.props.form.setFieldsValue(values);\n }\n\n onValueChange = (\n value: any,\n valueIndex: number,\n field: Field,\n fieldIndex: number\n ) => {\n this.setState({\n fields: update(this.state.fields, {\n [fieldIndex]: { values: { [valueIndex]: { $set: value } } },\n }),\n });\n };\n\n onConditionChange = (\n value: ConditionType,\n field: Field,\n fieldIndex: number\n ) => {\n const hasFixedValues = field.currentCondition.operations.some(\n (operation) => operation.fixedValue !== undefined\n );\n\n const condition = field.availableConditions.find(\n (condition) => condition.type === value\n );\n let newValues = condition.operations.map((operation) =>\n operation.fixedValue !== undefined ? operation.fixedValue : null\n );\n if (\n newValues.every((value) => value === null) &&\n !hasFixedValues &&\n this.state.fields[fieldIndex].values.length === newValues.length\n ) {\n newValues = this.state.fields[fieldIndex].values;\n }\n\n let newFields = update(this.state.fields, {\n [fieldIndex]: {\n currentCondition: { $set: condition },\n values: {\n $set: newValues,\n },\n },\n });\n\n const relatedFieldIndex = newFields.findIndex(\n (f) =>\n f.isRelation &&\n f.relationSideId === field.relationSideId &&\n f.id !== field.id\n );\n if (relatedFieldIndex !== -1) {\n const relatedField = newFields[relatedFieldIndex];\n const relatedCondition = relatedField.availableConditions.find(\n (condition) => condition.type === value\n );\n if (condition.operations[0].operator === ElementOperators.Exists) {\n newFields = update(newFields, {\n [relatedFieldIndex]: {\n currentCondition: { $set: relatedCondition },\n values: {\n $set: [null],\n },\n },\n });\n } else if (\n relatedField.currentCondition.operations[0].operator ===\n ElementOperators.Exists\n ) {\n newFields = update(newFields, {\n [relatedFieldIndex]: {\n currentCondition: { $set: relatedField.availableConditions[0] },\n values: {\n $set: [null],\n },\n },\n });\n }\n }\n\n this.setState({\n fields: newFields,\n });\n\n this.setFormFieldValues(newFields);\n };\n\n getFields() {\n const { getFieldDecorator } = this.props.form;\n const hasBetween = this.state.fields.some((field) =>\n [\n ModelAttributeValueType.IP,\n ModelAttributeValueType.DATE,\n ModelAttributeValueType.DATETIME,\n ].includes(field.attrValue.type as ModelAttributeValueType)\n );\n return this.state.fields.map((field, fieldIndex) => {\n let type: string;\n let style: React.CSSProperties;\n let attrValue: any = field.attrValue;\n let multiSelect = false;\n switch (field.attrValue.type) {\n case ModelAttributeValueType.INTEGER:\n case ModelAttributeValueType.FLOAT:\n attrValue = {\n type: ModelAttributeValueType.STRING,\n };\n break;\n case ModelAttributeValueType.ENUM:\n case ModelAttributeValueType.ENUMS:\n type = FormControlTypeEnum.SELECT;\n multiSelect = true;\n break;\n case ModelAttributeValueType.DATETIME:\n style = { minWidth: \"auto\" };\n break;\n }\n //高级搜索这里即使是json格式,也用input输入框进行搜索\n if ((attrValue as any).type === \"json\") {\n attrValue = { ...attrValue, type: \"str\" };\n }\n return (\n <Col span={hasBetween ? 12 : 8} key={field.id}>\n <Form.Item label={field.name}>\n <Input.Group className={styles.conditionInputGroup} compact>\n <Select\n dropdownMatchSelectWidth={false}\n value={field.currentCondition.type}\n onChange={(value: ConditionType) =>\n this.onConditionChange(value, field, fieldIndex)\n }\n disabled={field.disabled}\n >\n {field.availableConditions.map((condition) => (\n <Select.Option value={condition.type} key={condition.type}>\n {condition.label}\n </Select.Option>\n ))}\n </Select>\n {field.values.map((value, valueIndex) => {\n const operation = field.currentCondition.operations[valueIndex];\n\n return (\n <React.Fragment\n key={`${field.currentCondition.type}-${operation.operator}`}\n >\n {valueIndex > 0 && (\n <Input\n className={styles.separatorInput}\n placeholder=\"~\"\n disabled\n />\n )}\n {getFieldDecorator(`${field.id}[${valueIndex}]`, {\n initialValue:\n operation.fixedValue === undefined ? value : \"\",\n })(\n operation.fixedValue === undefined && !field.disabled ? (\n <ModelAttributeFormControl\n type={type}\n attribute={{\n id: field.id,\n name: field.name,\n value: attrValue,\n }}\n objectId={this.props.modelData.objectId}\n multiSelect={multiSelect}\n onChange={(value: any) =>\n this.onValueChange(\n value,\n valueIndex,\n field,\n fieldIndex\n )\n }\n className={styles.conditionInput}\n style={style}\n />\n ) : (\n <Input disabled />\n )\n )}\n </React.Fragment>\n );\n })}\n </Input.Group>\n </Form.Item>\n </Col>\n );\n });\n }\n\n handleSearch = (e: FormEvent<any>): void => {\n e.preventDefault();\n if (this.props?.autoSearch) this.props.autoSearch(this.state.fields);\n if (this.props.onSearch) {\n // 当过滤字段为relation并且过滤条件为ElementOperators.Exists的时候,发起后台请求的搜索queries与负责前端展示的query不同。需要额外处理。\n let queries: Query[] = [];\n let queriesToShow: Query[] = [];\n const fieldToShow: Record<string, any[]>[] = [];\n this.state.fields.forEach((field) => {\n const expressions: QueryOperatorExpressions = {};\n let fieldQuery: Query = { [field.id]: expressions };\n let fieldQueryToShow: Query = { [field.id]: expressions };\n let hasValue = false;\n let structQueryId: string[];\n const isStruct = !!(field.attrValue as any).isStruct;\n if (isStruct) {\n structQueryId = field.attrValue.struct_define.map(\n (struct_item) => `${field.id}.${struct_item.id}`\n );\n }\n field.values.forEach((value, index) => {\n const operation = field.currentCondition.operations[index];\n const fieldId =\n field.isRelation && ElementOperators.Exists === operation.operator\n ? field.relationSideId\n : field.id;\n fieldQuery = { [fieldId]: expressions };\n\n const fieldIdToShow = field.id;\n fieldQueryToShow = { [fieldIdToShow]: expressions };\n\n if (\n value !== null &&\n value !== \"\" &&\n !(Array.isArray(value) && value.length === 0)\n ) {\n const multiValueSearchOperator = multiValueSearchOperators.find(\n (operator) => operator.comparisonOperator === operation.operator\n );\n if (multiValueSearchOperator) {\n let values: any[];\n if (field.attrValue.type === ModelAttributeValueType.ENUM) {\n values = value;\n } else if (typeof value === \"string\") {\n if (\n !ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE ||\n !value.includes('\"')\n ) {\n values = value\n .trim()\n .split(/\\s+/)\n .map((value) => convertValue(field.attrValue.type, value));\n } else {\n values = processAttrValueWithQuote(value, []);\n }\n } else {\n values = [value];\n }\n if (values.length) {\n if (isStruct) {\n fieldQuery = {\n [multiValueSearchOperator.logicalOperator]: flatten(\n values.map((value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n\n return structQueryId.map(\n (structId: string | number) => ({\n [structId]: {\n [operation.operator]: value,\n },\n })\n );\n })\n ),\n };\n } else {\n fieldQuery = {\n [multiValueSearchOperator.logicalOperator]: values.map(\n (value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n return {\n [fieldId]: {\n [operation.operator]: value,\n },\n };\n }\n ),\n };\n }\n fieldQueryToShow = {\n [multiValueSearchOperator.logicalOperator]: values.map(\n (value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n return {\n [fieldIdToShow]: {\n [operation.operator]: value,\n },\n };\n }\n ),\n };\n hasValue = true;\n fieldToShow.push({ [field.id]: field.values });\n }\n } else {\n value = convertValue(field.attrValue.type, value);\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n expressions[operation.operator] = value;\n hasValue = true;\n fieldToShow.push({ [field.id]: field.values });\n }\n }\n });\n if (hasValue) {\n queries.push(fieldQuery);\n queriesToShow.push(fieldQueryToShow);\n }\n });\n if (queries.length === 0) {\n queries = undefined;\n queriesToShow = undefined;\n }\n if (!isEqual(this.props.q, queries)) {\n this.props.onSearch(queries, queriesToShow, fieldToShow);\n }\n }\n };\n\n handleReset = () => {\n if (this.props.autoSearch) this.props.autoSearch([]);\n this.props.onSearch([], [], []);\n this.props.form.resetFields();\n };\n\n render(): React.ReactNode {\n return (\n <div className={styles.advancedSearch}>\n <Form\n layout=\"vertical\"\n className={styles.advancedSearchForm}\n onSubmit={this.handleSearch}\n >\n <Row gutter={50}>{this.getFields()}</Row>\n <Row>\n <Col span={24} style={{ textAlign: \"right\" }}>\n <Button\n type=\"primary\"\n htmlType=\"submit\"\n data-testid=\"submit-button\"\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.SEARCH}`)}\n </Button>\n <Button\n style={{ marginLeft: 8 }}\n onClick={this.handleReset}\n data-testid=\"reset-button\"\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.RESET}`)}\n </Button>\n </Col>\n </Row>\n </Form>\n </div>\n );\n }\n}\n\nexport const AdvancedSearch = Form.create<AdvancedSearchFormProps>({\n name: \"advanced_search\",\n})(AdvancedSearchForm);\n"],"file":"AdvancedSearch.js"}
@@ -19,6 +19,8 @@ var _compatible = require("@ant-design/compatible");
19
19
 
20
20
  var _antd = require("antd");
21
21
 
22
+ var _icons = require("@ant-design/icons");
23
+
22
24
  var _ModelAttributeFormControl = require("../model-attribute-form-control/ModelAttributeFormControl");
23
25
 
24
26
  var _AttributeFormControlUrl = require("../attribute-form-control-url/AttributeFormControlUrl");
@@ -78,29 +80,38 @@ class ModelAttributeForm extends _react.Component {
78
80
  ...(this.props.objectId === "APP" ? appPermissionAuthorizers : {})
79
81
  };
80
82
  });
81
- (0, _defineProperty2.default)(this, "handleSubmit", e => {
82
- e.preventDefault();
83
- this.props.form.validateFields(async (err, values) => {
84
- if (!err) {
85
- const {
86
- continueCreating
87
- } = this.state;
88
- this.setState({
89
- sending: true
90
- });
91
- const result = await this.props.onSubmit({
92
- continueCreating,
93
- values: this.props.enabledWhiteList && this.props.permissionList ? this.valuesProcess(values) : values
94
- });
83
+ (0, _defineProperty2.default)(this, "validateFieldsCallback", async (err, values) => {
84
+ if (!err) {
85
+ const {
86
+ continueCreating
87
+ } = this.state;
88
+ this.setState({
89
+ sending: true
90
+ });
91
+ const result = await this.props.onSubmit({
92
+ continueCreating,
93
+ values: this.props.enabledWhiteList && this.props.permissionList ? this.valuesProcess(values) : values
94
+ });
95
95
 
96
- if (result !== "error" && continueCreating) {
97
- this.props.form.resetFields();
98
- }
96
+ if (result !== "error" && continueCreating) {
97
+ this.props.form.resetFields();
98
+ }
99
99
 
100
- this.setState({
101
- sending: false
102
- });
100
+ this.setState({
101
+ sending: false
102
+ });
103
+ }
104
+ });
105
+ (0, _defineProperty2.default)(this, "handleSubmit", e => {
106
+ e.preventDefault();
107
+ this.props.scrollToFirstError ? this.props.form.validateFieldsAndScroll({
108
+ scroll: {
109
+ offsetTop: this.props.offsetTop || 60
103
110
  }
111
+ }, async (err, values) => {
112
+ await this.validateFieldsCallback(err, values);
113
+ }) : this.props.form.validateFields(async (err, values) => {
114
+ await this.validateFieldsCallback(err, values);
104
115
  });
105
116
  });
106
117
  (0, _defineProperty2.default)(this, "handleCheckContinueCreating", e => {
@@ -239,11 +250,9 @@ class ModelAttributeForm extends _react.Component {
239
250
  get disabled() {
240
251
  const {
241
252
  sending
242
- } = this.state;
243
- const {
244
- getFieldsError
245
- } = this.props.form;
246
- return this.handleFormErrors(getFieldsError()) || sending;
253
+ } = this.state; // const { getFieldsError } = this.props.form;
254
+
255
+ return sending;
247
256
  } // get submitBtnText() {
248
257
  // return this.props.isCreate
249
258
  // ? i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.SAVE}`)
@@ -353,7 +362,14 @@ class ModelAttributeForm extends _react.Component {
353
362
  var _attribute$value;
354
363
 
355
364
  return attribute.__isRelation ? this.renderRelationFormControl(attribute) : /*#__PURE__*/_react.default.createElement(_compatible.Form.Item, (0, _extends2.default)({
356
- label: attribute.name,
365
+ label: /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement("span", null, attribute.name), attribute.description && attribute.description !== "" && /*#__PURE__*/_react.default.createElement(_antd.Tooltip, {
366
+ title: attribute.description
367
+ }, /*#__PURE__*/_react.default.createElement(_icons.InfoCircleOutlined, {
368
+ style: {
369
+ padding: "0 2px",
370
+ color: "var(--theme-blue-color)"
371
+ }
372
+ }))),
357
373
  key: attribute.name
358
374
  }, this.formItemProps), getFieldDecorator(attribute.id, {
359
375
  rules: this.rules(attribute),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/model-attribute-form/ModelAttributeForm.tsx"],"names":["DEFAULT_ATTRIBUTE_TAG","ModelAttributeForm","Component","constructor","props","labelCol","span","wrapperCol","key","includes","permissionListMapOfApp","values","appPermissionAuthorizers","Object","forEach","r","selectedUser","concat","selectedUserGroup","deleteAuthorizers","readAuthorizers","updateAuthorizers","objectId","operateAuthorizers","e","preventDefault","form","validateFields","err","continueCreating","state","setState","sending","result","onSubmit","enabledWhiteList","permissionList","valuesProcess","resetFields","target","checked","relation","InitialRelationValue","attributeFormControlInitialValueMap","left_id","initialValue","map","instanceData","instanceId","left_name","formItemProps","getFieldDecorator","isFilterView","right_object_id","modelMap","i18n","t","NS_LIBS_CMDB_INSTANCES","K","ADD","left_max","showDetailUrl","onCancel","objectList","modelData","hideModelData","view","hide_columns","AttrListGroupByTag","fieldsByTag","items","fields","filter","item","name","getFieldsByTag","basicInfoAttrList","basicInfoAttr","groupTag","tag","left_tags","attrs","find","blackList","id","push","attrListGroupByTag","showError","attributeList","Map","has","set","field","appendAttr","__fieldList","__field","__id","undefined","get","Array","from","sortAttributeList","tagList","store","prop","v","handleFormErrors","fieldsError","keys","some","disabled","getFieldsError","tagsValidator","attribute","rule","value","callback","isArray","NOT_MEET_REGEX","isValidAll","every","ModelAttributeFormControl","computePattern","test","urlValidator","url","AttributeFormControlUrl","breakDownValue","rules","required","requiredRule","ModelAttributeValueType","IP","STRING","JSON","type","whitespace","message","ATTRIBUTE_NAME_REQUIRED","attribute_name","computeFormControlType","regex","INTEGER","ENUMS","FormControlTypeEnum","URL","validator","TAGS","pattern","error","render","Panel","Collapse","brickList","allowContinueCreate","showCancelButton","cancelText","cancelType","defaultActiveKey","brick","collapse","styles","collapseStyle","list","index","__isRelation","renderRelationFormControl","_","isString","stringify","isCreate","header","label","element","getFieldsValue","options","PERMISSION_WHITELIST","remark","permissionAttrProcess","action","objectListOfUser","submitContainer","borderTop","paddingTop","paddingLeft","handleCheckContinueCreating","CREATE_ANOTHER","handleSubmit","SAVE","marginLeft","handleCancel","CANCEL","InstanceModelAttributeForm","Form","create"],"mappings":"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","sourcesContent":["import React, { Component, FormEvent } from \"react\";\nimport { Form } from \"@ant-design/compatible\";\nimport { Button, Checkbox, Collapse } from \"antd\";\nimport { ButtonType } from \"antd/lib/button\";\nimport {\n CmdbModels,\n InstanceApi_GetDefaultValueTemplateResponseBody,\n InstanceApi_GetDetailResponseBody,\n} from \"@next-sdk/cmdb-sdk\";\nimport {\n FormComponentProps,\n FormItemProps,\n ValidationRule,\n} from \"@ant-design/compatible/lib/form\";\nimport {\n FormControlTypeEnum,\n ModelAttributeFormControl,\n ModelAttributeValueType,\n} from \"../model-attribute-form-control/ModelAttributeFormControl\";\nimport { AttributeFormControlUrl } from \"../attribute-form-control-url/AttributeFormControlUrl\";\nimport _, { get, isNil, keyBy } from \"lodash\";\n\nimport { CmdbInstancesSelectPanel } from \"../cmdb-instances-select-panel/CmdbInstancesSelectPanel\";\nimport {\n ModifiedModelCmdbObject,\n ModifiedModelObjectAttr,\n ModifiedModelObjectField,\n ModifiedModelObjectRelation,\n modifyModelData,\n} from \"@next-libs/cmdb-utils\";\nimport styles from \"./ModelAttributeForm.module.css\";\nimport { UserOrUserGroupSelect } from \"../components\";\nimport { permissionListMapOfApp } from \"./constants\";\nimport i18n from \"i18next\";\nimport { K, NS_LIBS_CMDB_INSTANCES } from \"../i18n/constants\";\nconst DEFAULT_ATTRIBUTE_TAG = \"基本信息\";\nexport interface ModelAttributeFormChildren {\n header: string;\n name: string;\n label: string;\n options?: { [key: string]: any };\n}\n\nexport interface FieldsByTag {\n name: string;\n fields: string[];\n}\n\ninterface ModelAttributeFormProps extends FormComponentProps {\n isCreate?: boolean;\n disabled?: boolean;\n objectId?: string;\n allowContinueCreate?: boolean;\n blackList?: string[]; // 黑名单\n brickList?: ModelAttributeFormChildren[];\n fieldsByTag?: FieldsByTag[];\n formItemProps?: FormItemProps;\n onSubmit(data: any): Promise<any>;\n basicInfoAttrList?: Partial<CmdbModels.ModelObjectAttr>[];\n objectList?: Partial<CmdbModels.ModelCmdbObject>[];\n modelData?: Partial<CmdbModels.ModelCmdbObject>;\n attributeFormControlInitialValueMap:\n | InstanceApi_GetDefaultValueTemplateResponseBody\n | Partial<InstanceApi_GetDetailResponseBody>;\n showCancelButton?: boolean;\n cancelText?: string;\n cancelType?: ButtonType;\n onCancel?(): void;\n showDetailUrl?: boolean;\n isFilterView?: boolean;\n objectListOfUser?: Partial<CmdbModels.ModelCmdbObject>[];\n permissionList?: Record<string, any>[];\n enabledWhiteList?: boolean;\n}\n\nexport type attributesFieldsByTag = [string, ModifiedModelObjectField[]];\n\ninterface ModelAttributeFormState {\n sending: boolean;\n attrListGroupByTag: attributesFieldsByTag[];\n continueCreating: boolean;\n showError?: Record<string, any>;\n}\n\nexport class ModelAttributeForm extends Component<\n ModelAttributeFormProps,\n ModelAttributeFormState\n> {\n private modelMap: Record<string, Partial<CmdbModels.ModelCmdbObject>> = {};\n private modelData: Partial<CmdbModels.ModelCmdbObject> = null;\n\n static defaultProps = {\n showCancelButton: true,\n cancelType: \"default\" as ButtonType,\n };\n\n formItemProps: FormItemProps = {\n labelCol: { span: 6 },\n wrapperCol: { span: 18 },\n };\n\n constructor(props: ModelAttributeFormProps) {\n super(props);\n if (this.props.objectList) {\n this.modelMap = keyBy(this.props.objectList, \"objectId\");\n }\n // istanbul ignore else\n if (this.props.modelData) {\n this.modelData = modifyModelData(this.props.modelData);\n } else {\n if (this.props.objectList) {\n this.modelData = modifyModelData(this.modelMap[this.props.objectId]);\n }\n }\n\n const hideModelData: string[] = this.modelData.view.hide_columns || [];\n let AttrListGroupByTag: attributesFieldsByTag[] = [];\n let fieldsByTag;\n if (props.formItemProps) {\n this.formItemProps = props.formItemProps;\n }\n if (props.fieldsByTag) {\n fieldsByTag = this.props.fieldsByTag.map((items) => {\n let fields;\n if (items.fields) {\n fields = items.fields.filter(\n (item) => item && !hideModelData.includes(item)\n );\n }\n return {\n name: items.name,\n fields,\n };\n });\n AttrListGroupByTag = ModelAttributeForm.getFieldsByTag(\n this.props.basicInfoAttrList,\n fieldsByTag,\n this.modelData\n );\n } else {\n props.basicInfoAttrList.forEach((basicInfoAttr) => {\n const groupTag =\n basicInfoAttr?.tag?.[0] ||\n (basicInfoAttr as any)?.left_tags?.[0] ||\n DEFAULT_ATTRIBUTE_TAG;\n\n const attrs = AttrListGroupByTag.find(([key]) => key === groupTag);\n // 判断是否为黑名单内的属性\n if (\n isNil(props.blackList) ||\n !props.blackList.includes(basicInfoAttr.id)\n ) {\n if (attrs) {\n attrs[1].push(basicInfoAttr);\n } else {\n AttrListGroupByTag.push([groupTag, [basicInfoAttr]]);\n }\n }\n });\n }\n this.state = {\n sending: false,\n attrListGroupByTag: AttrListGroupByTag,\n continueCreating: false,\n showError: {},\n };\n }\n\n static getFieldsByTag(\n attributeList: Partial<CmdbModels.ModelObjectAttr>[],\n fieldsByTag: FieldsByTag[],\n modelData?: Partial<ModifiedModelCmdbObject>\n ): attributesFieldsByTag[] {\n const map = new Map<string, Partial<CmdbModels.ModelObjectAttr>[]>([]);\n\n fieldsByTag.forEach(({ name, fields }) => {\n if (!map.has(name)) {\n map.set(name, []);\n fields.forEach((field) => {\n const appendAttr = modelData\n ? modelData.__fieldList.find((__field) => __field.__id === field)\n : attributeList.find(({ id }) => id === field);\n if (appendAttr !== undefined) {\n map.set(name, [...map.get(name), appendAttr]);\n }\n });\n }\n });\n\n return Array.from(map);\n }\n\n static sortAttributeList(\n attributeList: { [s: string]: Partial<CmdbModels.ModelObjectAttr>[] },\n tagList: { [s: string]: string[] }\n ): { [s: string]: Partial<CmdbModels.ModelObjectAttr>[] } {\n const store: { [s: string]: Partial<CmdbModels.ModelObjectAttr>[] } = {};\n /* istanbul ignore next */\n for (const tag in tagList) {\n if (!store[tag]) {\n store[tag] = [];\n }\n\n tagList[tag].forEach((prop) => {\n const result = attributeList[tag].find((v) => v.id === prop);\n store[tag].push(result);\n });\n }\n\n return store;\n }\n\n handleFormErrors(fieldsError: Record<string, string[] | undefined>) {\n return Object.keys(fieldsError).some((field) => fieldsError[field]);\n }\n permissionAttrProcess = (key: string) => {\n if (key.includes(\"instance_access\")) return \"readAuthorizers\";\n if (key.includes(\"instance_delete\")) return \"deleteAuthorizers\";\n if (key.includes(\"instance_update\")) return \"updateAuthorizers\";\n // HOST特有\n if (key.includes(\"instance_operate\")) return \"operateAuthorizers\";\n // APP特有\n return permissionListMapOfApp[key] || key;\n };\n\n valuesProcess = (values: Record<string, any>) => {\n const appPermissionAuthorizers: Record<string, any> = {};\n Object.values(permissionListMapOfApp).forEach((r) => {\n appPermissionAuthorizers[r] = values[r]\n ? values[r].selectedUser.concat(values[r].selectedUserGroup)\n : [];\n });\n return {\n ...values,\n deleteAuthorizers: values.deleteAuthorizers\n ? values.deleteAuthorizers.selectedUser.concat(\n values.deleteAuthorizers.selectedUserGroup\n )\n : [],\n readAuthorizers: values.readAuthorizers\n ? values.readAuthorizers.selectedUser.concat(\n values.readAuthorizers.selectedUserGroup\n )\n : [],\n updateAuthorizers: values.updateAuthorizers\n ? values.updateAuthorizers.selectedUser.concat(\n values.updateAuthorizers.selectedUserGroup\n )\n : [],\n ...(this.props.objectId === \"HOST\"\n ? {\n operateAuthorizers: values.operateAuthorizers\n ? values.operateAuthorizers.selectedUser.concat(\n values.operateAuthorizers.selectedUserGroup\n )\n : [],\n }\n : {}),\n ...(this.props.objectId === \"APP\" ? appPermissionAuthorizers : {}),\n };\n };\n\n handleSubmit = (e: FormEvent) => {\n e.preventDefault();\n this.props.form.validateFields(async (err, values) => {\n if (!err) {\n const { continueCreating } = this.state;\n this.setState({ sending: true });\n const result = await this.props.onSubmit({\n continueCreating,\n values:\n this.props.enabledWhiteList && this.props.permissionList\n ? this.valuesProcess(values)\n : values,\n });\n if (result !== \"error\" && continueCreating) {\n this.props.form.resetFields();\n }\n this.setState({ sending: false });\n }\n });\n };\n\n get disabled(): boolean {\n const { sending } = this.state;\n const { getFieldsError } = this.props.form;\n return this.handleFormErrors(getFieldsError()) || sending;\n }\n\n // get submitBtnText() {\n // return this.props.isCreate\n // ? i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.SAVE}`)\n // : i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.MODIFICATION}`);\n // }\n\n static tagsValidator(\n attribute: Partial<CmdbModels.ModelObjectAttr>\n ): (rule: any, value: string[], callback: (msg?: string) => void) => void {\n return (rule: any, value: string[], callback: (msg?: string) => void) => {\n if (!value) {\n return callback();\n }\n if (!Array.isArray(value)) {\n return callback(\n i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.NOT_MEET_REGEX}`)\n );\n }\n\n const isValidAll = value.every((v) =>\n ModelAttributeFormControl.computePattern(attribute).test(v)\n );\n\n isValidAll\n ? callback()\n : callback(i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.NOT_MEET_REGEX}`));\n };\n }\n\n static urlValidator(\n attribute: Partial<CmdbModels.ModelObjectAttr>\n ): (rule: any, value: string, callback: (msg?: string) => void) => void {\n return (rule: any, value: string, callback: (msg?: string) => void) => {\n const { url } = AttributeFormControlUrl.breakDownValue(value);\n ModelAttributeFormControl.computePattern(attribute).test(url)\n ? callback()\n : callback(i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.NOT_MEET_REGEX}`));\n };\n }\n\n rules(attribute: Partial<CmdbModels.ModelObjectAttr>): ValidationRule[] {\n // historical issues: 如果是INTEGER和URL类型暂时不用正则表达式验证\n const required = attribute.required !== \"false\";\n const requiredRule = [\n ModelAttributeValueType.IP,\n ModelAttributeValueType.STRING,\n ModelAttributeValueType.JSON,\n ].includes(attribute.value.type as ModelAttributeValueType)\n ? {\n required,\n whitespace: required,\n message: i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.ATTRIBUTE_NAME_REQUIRED}`,\n { attribute_name: attribute.name }\n ),\n }\n : {\n required,\n message: i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.ATTRIBUTE_NAME_REQUIRED}`,\n { attribute_name: attribute.name }\n ),\n };\n try {\n const type = ModelAttributeFormControl.computeFormControlType(attribute);\n if (\n attribute.value.regex === null ||\n attribute.value.type === ModelAttributeValueType.INTEGER ||\n attribute.value.type === ModelAttributeValueType.ENUMS\n ) {\n return [requiredRule];\n }\n\n if (type === FormControlTypeEnum.URL) {\n return [\n requiredRule,\n { validator: ModelAttributeForm.urlValidator(attribute) },\n ];\n }\n\n if (type === FormControlTypeEnum.TAGS) {\n return [\n requiredRule,\n { validator: ModelAttributeForm.tagsValidator(attribute) },\n ];\n }\n\n return [\n requiredRule,\n {\n pattern: ModelAttributeFormControl.computePattern(attribute),\n message: i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.NOT_MEET_REGEX}`),\n },\n ];\n } catch (error) {\n // 例如无枚举值、结构体未添加字段等\n return [requiredRule];\n }\n }\n\n handleCheckContinueCreating = (e: any) => {\n this.setState({ continueCreating: e.target.checked });\n };\n\n renderRelationFormControl = (\n relation: Partial<ModifiedModelObjectRelation>\n ) => {\n const InitialRelationValue = get(\n this.props.attributeFormControlInitialValueMap,\n relation.left_id\n );\n const initialValue = InitialRelationValue\n ? InitialRelationValue.map((instanceData: any) => instanceData.instanceId)\n : [];\n\n return (\n <Form.Item\n label={relation.left_name}\n key={relation.left_id}\n {...this.formItemProps}\n >\n {this.props.form.getFieldDecorator(relation.left_id, { initialValue })(\n <CmdbInstancesSelectPanel\n isFilterView={this.props.isFilterView}\n objectId={relation.right_object_id}\n objectMap={this.modelMap}\n addTitle={i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.ADD}`)}\n singleSelect={relation.left_max === 1}\n isOperate={true}\n showDetailUrl={this.props.showDetailUrl}\n />\n )}\n </Form.Item>\n );\n };\n\n handleCancel = () => {\n this.props.onCancel?.();\n };\n\n render(): React.ReactNode {\n const Panel = Collapse.Panel;\n const {\n form,\n attributeFormControlInitialValueMap,\n brickList,\n allowContinueCreate,\n showCancelButton,\n cancelText,\n cancelType,\n } = this.props;\n const { getFieldDecorator } = form;\n\n let defaultActiveKey = this.state.attrListGroupByTag.map(([key]) => key);\n\n if (Array.isArray(brickList)) {\n defaultActiveKey = [\n ...defaultActiveKey,\n ...brickList.map((brick) => brick.name),\n ];\n }\n\n const collapse = this.state.attrListGroupByTag && (\n <Collapse\n bordered={false}\n defaultActiveKey={defaultActiveKey}\n className={styles.collapseStyle}\n >\n {this.state.attrListGroupByTag.map(([tag, list]) => (\n <Panel header={tag} key={tag} forceRender={true}>\n {list.map(\n (attribute: Partial<ModifiedModelObjectAttr>, index: number) =>\n attribute.__isRelation ? (\n this.renderRelationFormControl(attribute)\n ) : (\n <Form.Item\n label={attribute.name}\n key={attribute.name}\n {...this.formItemProps}\n >\n {getFieldDecorator(attribute.id, {\n rules: this.rules(attribute),\n //默认值为string,但是新建时接口转成了object,故编辑时后台返回的也是object\n initialValue:\n attribute.value.type === \"json\" &&\n !_.isString(\n attributeFormControlInitialValueMap[attribute.id]\n )\n ? JSON.stringify(\n attributeFormControlInitialValueMap[attribute.id],\n null,\n 2\n )\n : attributeFormControlInitialValueMap[attribute.id],\n })(\n <ModelAttributeFormControl\n isCreate={this.props.isCreate}\n attribute={attribute}\n multiSelect={\n attribute?.value?.type ===\n ModelAttributeValueType.ENUMS\n }\n objectId={this.props.objectId}\n jsonValidateCollection={(err: any) => {\n const showError = { ...this.state.showError };\n showError[tag + index] = err;\n this.setState({ showError });\n }}\n />\n )}\n </Form.Item>\n )\n )}\n </Panel>\n ))}\n\n {brickList &&\n brickList.map((brick) => (\n <Panel header={brick.header} key={brick.name}>\n <Form.Item\n label={brick.label}\n key={brick.name}\n {...this.formItemProps}\n >\n <brick.name\n ref={(element: any) => {\n element &&\n ((element[\"value\"] = this.props.form.getFieldsValue()),\n (element[\"options\"] = brick.options));\n }}\n />\n </Form.Item>\n </Panel>\n ))}\n\n {this.props.enabledWhiteList && this.props.permissionList && (\n <Panel\n header={i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.PERMISSION_WHITELIST}`\n )}\n key={\"permission\"}\n >\n {this.props.permissionList.map((r) => {\n return (\n <Form.Item label={r.remark} key={r.id} {...this.formItemProps}>\n {getFieldDecorator(\n this.permissionAttrProcess(r.action) as string,\n {}\n )(\n <UserOrUserGroupSelect\n objectMap={keyBy(this.props.objectListOfUser, \"objectId\")}\n optionsMode=\"all\"\n ></UserOrUserGroupSelect>\n )}\n </Form.Item>\n );\n })}\n </Panel>\n )}\n </Collapse>\n );\n const submitContainer = (\n <div\n className=\"ant-collapse-content\"\n style={{ borderTop: \"none\", paddingTop: \"16px\", paddingLeft: \"20px\" }}\n >\n <div className=\"ant-collapse-content-box\">\n <Form.Item {...this.formItemProps} label=\" \" colon={false}>\n {allowContinueCreate && (\n <Checkbox onChange={this.handleCheckContinueCreating}>\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.CREATE_ANOTHER}`)}\n </Checkbox>\n )}\n <Button\n type=\"primary\"\n onClick={(e) => this.handleSubmit(e)}\n disabled={\n this.disabled ||\n Object.values(this.state.showError).includes(true)\n }\n data-testid=\"submit-btn\"\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.SAVE}`)}\n </Button>\n\n {showCancelButton && (\n <Button\n type={cancelType}\n style={{ marginLeft: 8 }}\n onClick={this.handleCancel}\n >\n {cancelText ?? i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.CANCEL}`)}\n </Button>\n )}\n </Form.Item>\n </div>\n </div>\n );\n\n return (\n <Form>\n {collapse}\n {submitContainer}\n </Form>\n );\n }\n}\n\nexport const InstanceModelAttributeForm =\n Form.create<ModelAttributeFormProps>()(ModelAttributeForm);\n"],"file":"ModelAttributeForm.js"}
1
+ {"version":3,"sources":["../../../src/model-attribute-form/ModelAttributeForm.tsx"],"names":["DEFAULT_ATTRIBUTE_TAG","ModelAttributeForm","Component","constructor","props","labelCol","span","wrapperCol","key","includes","permissionListMapOfApp","values","appPermissionAuthorizers","Object","forEach","r","selectedUser","concat","selectedUserGroup","deleteAuthorizers","readAuthorizers","updateAuthorizers","objectId","operateAuthorizers","err","continueCreating","state","setState","sending","result","onSubmit","enabledWhiteList","permissionList","valuesProcess","form","resetFields","e","preventDefault","scrollToFirstError","validateFieldsAndScroll","scroll","offsetTop","validateFieldsCallback","validateFields","target","checked","relation","InitialRelationValue","attributeFormControlInitialValueMap","left_id","initialValue","map","instanceData","instanceId","left_name","formItemProps","getFieldDecorator","isFilterView","right_object_id","modelMap","i18n","t","NS_LIBS_CMDB_INSTANCES","K","ADD","left_max","showDetailUrl","onCancel","objectList","modelData","hideModelData","view","hide_columns","AttrListGroupByTag","fieldsByTag","items","fields","filter","item","name","getFieldsByTag","basicInfoAttrList","basicInfoAttr","groupTag","tag","left_tags","attrs","find","blackList","id","push","attrListGroupByTag","showError","attributeList","Map","has","set","field","appendAttr","__fieldList","__field","__id","undefined","get","Array","from","sortAttributeList","tagList","store","prop","v","handleFormErrors","fieldsError","keys","some","disabled","tagsValidator","attribute","rule","value","callback","isArray","NOT_MEET_REGEX","isValidAll","every","ModelAttributeFormControl","computePattern","test","urlValidator","url","AttributeFormControlUrl","breakDownValue","rules","required","requiredRule","ModelAttributeValueType","IP","STRING","JSON","type","whitespace","message","ATTRIBUTE_NAME_REQUIRED","attribute_name","computeFormControlType","regex","INTEGER","ENUMS","FormControlTypeEnum","URL","validator","TAGS","pattern","error","render","Panel","Collapse","brickList","allowContinueCreate","showCancelButton","cancelText","cancelType","defaultActiveKey","brick","collapse","styles","collapseStyle","list","index","__isRelation","renderRelationFormControl","description","padding","color","_","isString","stringify","isCreate","header","label","element","getFieldsValue","options","PERMISSION_WHITELIST","remark","permissionAttrProcess","action","objectListOfUser","submitContainer","borderTop","paddingTop","paddingLeft","handleCheckContinueCreating","CREATE_ANOTHER","handleSubmit","SAVE","marginLeft","handleCancel","CANCEL","InstanceModelAttributeForm","Form","create"],"mappings":"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","sourcesContent":["import React, { Component, FormEvent } from \"react\";\nimport { Form } from \"@ant-design/compatible\";\nimport { Button, Checkbox, Collapse, Tooltip } from \"antd\";\nimport { ButtonType } from \"antd/lib/button\";\nimport { InfoCircleOutlined } from \"@ant-design/icons\";\nimport {\n CmdbModels,\n InstanceApi_GetDefaultValueTemplateResponseBody,\n InstanceApi_GetDetailResponseBody,\n} from \"@next-sdk/cmdb-sdk\";\nimport {\n FormComponentProps,\n FormItemProps,\n ValidationRule,\n} from \"@ant-design/compatible/lib/form\";\nimport {\n FormControlTypeEnum,\n ModelAttributeFormControl,\n ModelAttributeValueType,\n} from \"../model-attribute-form-control/ModelAttributeFormControl\";\nimport { AttributeFormControlUrl } from \"../attribute-form-control-url/AttributeFormControlUrl\";\nimport _, { get, isNil, keyBy } from \"lodash\";\n\nimport { CmdbInstancesSelectPanel } from \"../cmdb-instances-select-panel/CmdbInstancesSelectPanel\";\nimport {\n ModifiedModelCmdbObject,\n ModifiedModelObjectAttr,\n ModifiedModelObjectField,\n ModifiedModelObjectRelation,\n modifyModelData,\n} from \"@next-libs/cmdb-utils\";\nimport styles from \"./ModelAttributeForm.module.css\";\nimport { UserOrUserGroupSelect } from \"../components\";\nimport { permissionListMapOfApp } from \"./constants\";\nimport i18n from \"i18next\";\nimport { K, NS_LIBS_CMDB_INSTANCES } from \"../i18n/constants\";\nconst DEFAULT_ATTRIBUTE_TAG = \"基本信息\";\nexport interface ModelAttributeFormChildren {\n header: string;\n name: string;\n label: string;\n options?: { [key: string]: any };\n}\n\nexport interface FieldsByTag {\n name: string;\n fields: string[];\n}\n\ninterface ModelAttributeFormProps extends FormComponentProps {\n isCreate?: boolean;\n disabled?: boolean;\n objectId?: string;\n allowContinueCreate?: boolean;\n blackList?: string[]; // 黑名单\n brickList?: ModelAttributeFormChildren[];\n fieldsByTag?: FieldsByTag[];\n formItemProps?: FormItemProps;\n onSubmit(data: any): Promise<any>;\n basicInfoAttrList?: Partial<CmdbModels.ModelObjectAttr>[];\n objectList?: Partial<CmdbModels.ModelCmdbObject>[];\n modelData?: Partial<CmdbModels.ModelCmdbObject>;\n attributeFormControlInitialValueMap:\n | InstanceApi_GetDefaultValueTemplateResponseBody\n | Partial<InstanceApi_GetDetailResponseBody>;\n showCancelButton?: boolean;\n cancelText?: string;\n cancelType?: ButtonType;\n onCancel?(): void;\n showDetailUrl?: boolean;\n isFilterView?: boolean;\n objectListOfUser?: Partial<CmdbModels.ModelCmdbObject>[];\n permissionList?: Record<string, any>[];\n enabledWhiteList?: boolean;\n scrollToFirstError?: boolean;\n offsetTop?: number;\n}\n\nexport type attributesFieldsByTag = [string, ModifiedModelObjectField[]];\n\ninterface ModelAttributeFormState {\n sending: boolean;\n attrListGroupByTag: attributesFieldsByTag[];\n continueCreating: boolean;\n showError?: Record<string, any>;\n}\n\nexport class ModelAttributeForm extends Component<\n ModelAttributeFormProps,\n ModelAttributeFormState\n> {\n private modelMap: Record<string, Partial<CmdbModels.ModelCmdbObject>> = {};\n private modelData: Partial<CmdbModels.ModelCmdbObject> = null;\n\n static defaultProps = {\n showCancelButton: true,\n cancelType: \"default\" as ButtonType,\n };\n\n formItemProps: FormItemProps = {\n labelCol: { span: 6 },\n wrapperCol: { span: 18 },\n };\n\n constructor(props: ModelAttributeFormProps) {\n super(props);\n if (this.props.objectList) {\n this.modelMap = keyBy(this.props.objectList, \"objectId\");\n }\n // istanbul ignore else\n if (this.props.modelData) {\n this.modelData = modifyModelData(this.props.modelData);\n } else {\n if (this.props.objectList) {\n this.modelData = modifyModelData(this.modelMap[this.props.objectId]);\n }\n }\n\n const hideModelData: string[] = this.modelData.view.hide_columns || [];\n let AttrListGroupByTag: attributesFieldsByTag[] = [];\n let fieldsByTag;\n if (props.formItemProps) {\n this.formItemProps = props.formItemProps;\n }\n if (props.fieldsByTag) {\n fieldsByTag = this.props.fieldsByTag.map((items) => {\n let fields;\n if (items.fields) {\n fields = items.fields.filter(\n (item) => item && !hideModelData.includes(item)\n );\n }\n return {\n name: items.name,\n fields,\n };\n });\n AttrListGroupByTag = ModelAttributeForm.getFieldsByTag(\n this.props.basicInfoAttrList,\n fieldsByTag,\n this.modelData\n );\n } else {\n props.basicInfoAttrList.forEach((basicInfoAttr) => {\n const groupTag =\n basicInfoAttr?.tag?.[0] ||\n (basicInfoAttr as any)?.left_tags?.[0] ||\n DEFAULT_ATTRIBUTE_TAG;\n\n const attrs = AttrListGroupByTag.find(([key]) => key === groupTag);\n // 判断是否为黑名单内的属性\n if (\n isNil(props.blackList) ||\n !props.blackList.includes(basicInfoAttr.id)\n ) {\n if (attrs) {\n attrs[1].push(basicInfoAttr);\n } else {\n AttrListGroupByTag.push([groupTag, [basicInfoAttr]]);\n }\n }\n });\n }\n this.state = {\n sending: false,\n attrListGroupByTag: AttrListGroupByTag,\n continueCreating: false,\n showError: {},\n };\n }\n\n static getFieldsByTag(\n attributeList: Partial<CmdbModels.ModelObjectAttr>[],\n fieldsByTag: FieldsByTag[],\n modelData?: Partial<ModifiedModelCmdbObject>\n ): attributesFieldsByTag[] {\n const map = new Map<string, Partial<CmdbModels.ModelObjectAttr>[]>([]);\n\n fieldsByTag.forEach(({ name, fields }) => {\n if (!map.has(name)) {\n map.set(name, []);\n fields.forEach((field) => {\n const appendAttr = modelData\n ? modelData.__fieldList.find((__field) => __field.__id === field)\n : attributeList.find(({ id }) => id === field);\n if (appendAttr !== undefined) {\n map.set(name, [...map.get(name), appendAttr]);\n }\n });\n }\n });\n\n return Array.from(map);\n }\n\n static sortAttributeList(\n attributeList: { [s: string]: Partial<CmdbModels.ModelObjectAttr>[] },\n tagList: { [s: string]: string[] }\n ): { [s: string]: Partial<CmdbModels.ModelObjectAttr>[] } {\n const store: { [s: string]: Partial<CmdbModels.ModelObjectAttr>[] } = {};\n /* istanbul ignore next */\n for (const tag in tagList) {\n if (!store[tag]) {\n store[tag] = [];\n }\n\n tagList[tag].forEach((prop) => {\n const result = attributeList[tag].find((v) => v.id === prop);\n store[tag].push(result);\n });\n }\n\n return store;\n }\n\n handleFormErrors(fieldsError: Record<string, string[] | undefined>) {\n return Object.keys(fieldsError).some((field) => fieldsError[field]);\n }\n permissionAttrProcess = (key: string) => {\n if (key.includes(\"instance_access\")) return \"readAuthorizers\";\n if (key.includes(\"instance_delete\")) return \"deleteAuthorizers\";\n if (key.includes(\"instance_update\")) return \"updateAuthorizers\";\n // HOST特有\n if (key.includes(\"instance_operate\")) return \"operateAuthorizers\";\n // APP特有\n return permissionListMapOfApp[key] || key;\n };\n\n valuesProcess = (values: Record<string, any>) => {\n const appPermissionAuthorizers: Record<string, any> = {};\n Object.values(permissionListMapOfApp).forEach((r) => {\n appPermissionAuthorizers[r] = values[r]\n ? values[r].selectedUser.concat(values[r].selectedUserGroup)\n : [];\n });\n return {\n ...values,\n deleteAuthorizers: values.deleteAuthorizers\n ? values.deleteAuthorizers.selectedUser.concat(\n values.deleteAuthorizers.selectedUserGroup\n )\n : [],\n readAuthorizers: values.readAuthorizers\n ? values.readAuthorizers.selectedUser.concat(\n values.readAuthorizers.selectedUserGroup\n )\n : [],\n updateAuthorizers: values.updateAuthorizers\n ? values.updateAuthorizers.selectedUser.concat(\n values.updateAuthorizers.selectedUserGroup\n )\n : [],\n ...(this.props.objectId === \"HOST\"\n ? {\n operateAuthorizers: values.operateAuthorizers\n ? values.operateAuthorizers.selectedUser.concat(\n values.operateAuthorizers.selectedUserGroup\n )\n : [],\n }\n : {}),\n ...(this.props.objectId === \"APP\" ? appPermissionAuthorizers : {}),\n };\n };\n /* istanbul ignore next */\n validateFieldsCallback = async (err: any, values: any) => {\n if (!err) {\n const { continueCreating } = this.state;\n this.setState({ sending: true });\n const result = await this.props.onSubmit({\n continueCreating,\n values:\n this.props.enabledWhiteList && this.props.permissionList\n ? this.valuesProcess(values)\n : values,\n });\n if (result !== \"error\" && continueCreating) {\n this.props.form.resetFields();\n }\n this.setState({ sending: false });\n }\n };\n /* istanbul ignore next */\n handleSubmit = (e: FormEvent) => {\n e.preventDefault();\n this.props.scrollToFirstError\n ? this.props.form.validateFieldsAndScroll(\n {\n scroll: {\n offsetTop: this.props.offsetTop || 60,\n },\n },\n async (err, values) => {\n await this.validateFieldsCallback(err, values);\n }\n )\n : this.props.form.validateFields(async (err, values) => {\n await this.validateFieldsCallback(err, values);\n });\n };\n\n get disabled(): boolean {\n const { sending } = this.state;\n // const { getFieldsError } = this.props.form;\n return sending;\n }\n\n // get submitBtnText() {\n // return this.props.isCreate\n // ? i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.SAVE}`)\n // : i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.MODIFICATION}`);\n // }\n\n static tagsValidator(\n attribute: Partial<CmdbModels.ModelObjectAttr>\n ): (rule: any, value: string[], callback: (msg?: string) => void) => void {\n return (rule: any, value: string[], callback: (msg?: string) => void) => {\n if (!value) {\n return callback();\n }\n if (!Array.isArray(value)) {\n return callback(\n i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.NOT_MEET_REGEX}`)\n );\n }\n\n const isValidAll = value.every((v) =>\n ModelAttributeFormControl.computePattern(attribute).test(v)\n );\n\n isValidAll\n ? callback()\n : callback(i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.NOT_MEET_REGEX}`));\n };\n }\n\n static urlValidator(\n attribute: Partial<CmdbModels.ModelObjectAttr>\n ): (rule: any, value: string, callback: (msg?: string) => void) => void {\n return (rule: any, value: string, callback: (msg?: string) => void) => {\n const { url } = AttributeFormControlUrl.breakDownValue(value);\n ModelAttributeFormControl.computePattern(attribute).test(url)\n ? callback()\n : callback(i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.NOT_MEET_REGEX}`));\n };\n }\n\n rules(attribute: Partial<CmdbModels.ModelObjectAttr>): ValidationRule[] {\n // historical issues: 如果是INTEGER和URL类型暂时不用正则表达式验证\n const required = attribute.required !== \"false\";\n const requiredRule = [\n ModelAttributeValueType.IP,\n ModelAttributeValueType.STRING,\n ModelAttributeValueType.JSON,\n ].includes(attribute.value.type as ModelAttributeValueType)\n ? {\n required,\n whitespace: required,\n message: i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.ATTRIBUTE_NAME_REQUIRED}`,\n { attribute_name: attribute.name }\n ),\n }\n : {\n required,\n message: i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.ATTRIBUTE_NAME_REQUIRED}`,\n { attribute_name: attribute.name }\n ),\n };\n try {\n const type = ModelAttributeFormControl.computeFormControlType(attribute);\n if (\n attribute.value.regex === null ||\n attribute.value.type === ModelAttributeValueType.INTEGER ||\n attribute.value.type === ModelAttributeValueType.ENUMS\n ) {\n return [requiredRule];\n }\n\n if (type === FormControlTypeEnum.URL) {\n return [\n requiredRule,\n { validator: ModelAttributeForm.urlValidator(attribute) },\n ];\n }\n\n if (type === FormControlTypeEnum.TAGS) {\n return [\n requiredRule,\n { validator: ModelAttributeForm.tagsValidator(attribute) },\n ];\n }\n\n return [\n requiredRule,\n {\n pattern: ModelAttributeFormControl.computePattern(attribute),\n message: i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.NOT_MEET_REGEX}`),\n },\n ];\n } catch (error) {\n // 例如无枚举值、结构体未添加字段等\n return [requiredRule];\n }\n }\n\n handleCheckContinueCreating = (e: any) => {\n this.setState({ continueCreating: e.target.checked });\n };\n\n renderRelationFormControl = (\n relation: Partial<ModifiedModelObjectRelation>\n ) => {\n const InitialRelationValue = get(\n this.props.attributeFormControlInitialValueMap,\n relation.left_id\n );\n const initialValue = InitialRelationValue\n ? InitialRelationValue.map((instanceData: any) => instanceData.instanceId)\n : [];\n\n return (\n <Form.Item\n label={relation.left_name}\n key={relation.left_id}\n {...this.formItemProps}\n >\n {this.props.form.getFieldDecorator(relation.left_id, { initialValue })(\n <CmdbInstancesSelectPanel\n isFilterView={this.props.isFilterView}\n objectId={relation.right_object_id}\n objectMap={this.modelMap}\n addTitle={i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.ADD}`)}\n singleSelect={relation.left_max === 1}\n isOperate={true}\n showDetailUrl={this.props.showDetailUrl}\n />\n )}\n </Form.Item>\n );\n };\n\n handleCancel = () => {\n this.props.onCancel?.();\n };\n\n render(): React.ReactNode {\n const Panel = Collapse.Panel;\n const {\n form,\n attributeFormControlInitialValueMap,\n brickList,\n allowContinueCreate,\n showCancelButton,\n cancelText,\n cancelType,\n } = this.props;\n const { getFieldDecorator } = form;\n\n let defaultActiveKey = this.state.attrListGroupByTag.map(([key]) => key);\n\n if (Array.isArray(brickList)) {\n defaultActiveKey = [\n ...defaultActiveKey,\n ...brickList.map((brick) => brick.name),\n ];\n }\n\n const collapse = this.state.attrListGroupByTag && (\n <Collapse\n bordered={false}\n defaultActiveKey={defaultActiveKey}\n className={styles.collapseStyle}\n >\n {this.state.attrListGroupByTag.map(([tag, list]) => (\n <Panel header={tag} key={tag} forceRender={true}>\n {list.map(\n (attribute: Partial<ModifiedModelObjectAttr>, index: number) =>\n attribute.__isRelation ? (\n this.renderRelationFormControl(attribute)\n ) : (\n <Form.Item\n label={\n <span>\n <span>{attribute.name}</span>\n {attribute.description && attribute.description !== \"\" && (\n <Tooltip title={attribute.description}>\n <InfoCircleOutlined\n style={{\n padding: \"0 2px\",\n color: \"var(--theme-blue-color)\",\n }}\n />\n </Tooltip>\n )}\n </span>\n }\n key={attribute.name}\n {...this.formItemProps}\n >\n {getFieldDecorator(attribute.id, {\n rules: this.rules(attribute),\n //默认值为string,但是新建时接口转成了object,故编辑时后台返回的也是object\n initialValue:\n attribute.value.type === \"json\" &&\n !_.isString(\n attributeFormControlInitialValueMap[attribute.id]\n )\n ? JSON.stringify(\n attributeFormControlInitialValueMap[attribute.id],\n null,\n 2\n )\n : attributeFormControlInitialValueMap[attribute.id],\n })(\n <ModelAttributeFormControl\n isCreate={this.props.isCreate}\n attribute={attribute}\n multiSelect={\n attribute?.value?.type ===\n ModelAttributeValueType.ENUMS\n }\n objectId={this.props.objectId}\n jsonValidateCollection={(err: any) => {\n const showError = { ...this.state.showError };\n showError[tag + index] = err;\n this.setState({ showError });\n }}\n />\n )}\n </Form.Item>\n )\n )}\n </Panel>\n ))}\n\n {brickList &&\n brickList.map((brick) => (\n <Panel header={brick.header} key={brick.name}>\n <Form.Item\n label={brick.label}\n key={brick.name}\n {...this.formItemProps}\n >\n <brick.name\n ref={(element: any) => {\n element &&\n ((element[\"value\"] = this.props.form.getFieldsValue()),\n (element[\"options\"] = brick.options));\n }}\n />\n </Form.Item>\n </Panel>\n ))}\n\n {this.props.enabledWhiteList && this.props.permissionList && (\n <Panel\n header={i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.PERMISSION_WHITELIST}`\n )}\n key={\"permission\"}\n >\n {this.props.permissionList.map((r) => {\n return (\n <Form.Item label={r.remark} key={r.id} {...this.formItemProps}>\n {getFieldDecorator(\n this.permissionAttrProcess(r.action) as string,\n {}\n )(\n <UserOrUserGroupSelect\n objectMap={keyBy(this.props.objectListOfUser, \"objectId\")}\n optionsMode=\"all\"\n ></UserOrUserGroupSelect>\n )}\n </Form.Item>\n );\n })}\n </Panel>\n )}\n </Collapse>\n );\n const submitContainer = (\n <div\n className=\"ant-collapse-content\"\n style={{ borderTop: \"none\", paddingTop: \"16px\", paddingLeft: \"20px\" }}\n >\n <div className=\"ant-collapse-content-box\">\n <Form.Item {...this.formItemProps} label=\" \" colon={false}>\n {allowContinueCreate && (\n <Checkbox onChange={this.handleCheckContinueCreating}>\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.CREATE_ANOTHER}`)}\n </Checkbox>\n )}\n <Button\n type=\"primary\"\n onClick={(e) => this.handleSubmit(e)}\n disabled={\n this.disabled ||\n Object.values(this.state.showError).includes(true)\n }\n data-testid=\"submit-btn\"\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.SAVE}`)}\n </Button>\n\n {showCancelButton && (\n <Button\n type={cancelType}\n style={{ marginLeft: 8 }}\n onClick={this.handleCancel}\n >\n {cancelText ?? i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.CANCEL}`)}\n </Button>\n )}\n </Form.Item>\n </div>\n </div>\n );\n\n return (\n <Form>\n {collapse}\n {submitContainer}\n </Form>\n );\n }\n}\n\nexport const InstanceModelAttributeForm =\n Form.create<ModelAttributeFormProps>()(ModelAttributeForm);\n"],"file":"ModelAttributeForm.js"}
@@ -282,7 +282,8 @@ class ModelAttributeFormControl extends _react.Component {
282
282
  structData: value,
283
283
  handleStoreFunction: formData => this.onChange(formData),
284
284
  className: this.props.className,
285
- style: this.props.style
285
+ style: this.props.style,
286
+ isCreate: this.props.isCreate
286
287
  });
287
288
 
288
289
  case FormControlTypeEnum.RADIO: