@next-libs/cmdb-instances 6.42.3 → 6.42.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/dist/cjs/attribute-form-control-url/AttributeFormControlUrl.js.map +1 -1
- package/dist/cjs/cmdb-instances-input-form/CmdbInstancesInputFormItem.js.map +1 -1
- package/dist/cjs/cmdb-instances-select-panel/CmdbInstancesSelectPanel.js.map +1 -1
- package/dist/cjs/cmdb-url-link/CmdbUrlLink.js.map +1 -1
- package/dist/cjs/components/index.js.map +1 -1
- package/dist/cjs/components/instance-format/index.js.map +1 -1
- package/dist/cjs/components/user-or-user-group-select/UserOrUserGroupSelect.js.map +1 -1
- package/dist/cjs/data-providers/fetchCmdbInstanceDetail.js.map +1 -1
- package/dist/cjs/data-providers/fetchCmdbInstanceSearch.js.map +1 -1
- package/dist/cjs/data-providers/fetchCmdbObjectDetail.js.map +1 -1
- package/dist/cjs/data-providers/fetchCmdbObjectList.js.map +1 -1
- package/dist/cjs/data-providers/fetchCmdbObjectRef.js.map +1 -1
- package/dist/cjs/data-providers/index.js.map +1 -1
- package/dist/cjs/float-display-brick/FloatDisplayBrick.js.map +1 -1
- package/dist/cjs/i18n/constants.js.map +1 -1
- package/dist/cjs/i18n/index.js.map +1 -1
- package/dist/cjs/i18n/locales/en.js.map +1 -1
- package/dist/cjs/i18n/locales/zh.js.map +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/instance-attribute-form/InstanceAttributeForm.js.map +1 -1
- package/dist/cjs/instance-detail/InstanceDetail.js.map +1 -1
- package/dist/cjs/instance-detail/components/instance-relation-field-display/constants.js.map +1 -1
- package/dist/cjs/instance-detail/components/instance-relation-field-display/instance-relation-field-display.js.map +1 -1
- package/dist/cjs/instance-detail/components/instance-relation-table-show/instance-relation-table-show.js.map +1 -1
- package/dist/cjs/instance-detail/constants/index.js.map +1 -1
- package/dist/cjs/instance-list/IconButton.js.map +1 -1
- package/dist/cjs/instance-list/InstanceList.js.map +1 -1
- package/dist/cjs/instance-list/constants.js.map +1 -1
- package/dist/cjs/instance-list-modal/InstanceListModal.js.map +1 -1
- package/dist/cjs/instance-list-table/AdvancedSearch.js.map +1 -1
- package/dist/cjs/instance-list-table/AdvancedSearchCondition.js.map +1 -1
- package/dist/cjs/instance-list-table/DisplaySettings.js.map +1 -1
- package/dist/cjs/instance-list-table/DisplaySettingsModal.js.map +1 -1
- package/dist/cjs/instance-list-table/DynamicSearch.js.map +1 -1
- package/dist/cjs/instance-list-table/InstanceListTable.js.map +1 -1
- package/dist/cjs/instance-list-table/MoreButtonsContainer.js.map +1 -1
- package/dist/cjs/instance-list-table/constants.js.map +1 -1
- package/dist/cjs/instance-list-table/data-providers/fetchCmdbInstanceAggregateCount.js.map +1 -1
- package/dist/cjs/instance-list-table/data-providers/fetchCmdbInstanceCount.js.map +1 -1
- package/dist/cjs/instance-list-table/data-providers/fetchCmdbInstanceDetail.js.map +1 -1
- package/dist/cjs/instance-list-table/data-providers/fetchCmdbObjectDetail.js.map +1 -1
- package/dist/cjs/instance-list-table/data-providers/fetchPermRoleList.js.map +1 -1
- package/dist/cjs/instance-list-table/data-providers/fetchPermissionList.js.map +1 -1
- package/dist/cjs/instance-list-table/data-providers/getDefaultValueTemplate.js.map +1 -1
- package/dist/cjs/instance-list-table/data-providers/index.js.map +1 -1
- package/dist/cjs/instance-list-table/data-providers/searchCmdbInstances.js.map +1 -1
- package/dist/cjs/instance-list-table/index.js.map +1 -1
- package/dist/cjs/instance-list-table/interfaces.js.map +1 -1
- package/dist/cjs/instance-list-table/utils.js.map +1 -1
- package/dist/cjs/model-attribute-form/ModelAttributeForm.js.map +1 -1
- package/dist/cjs/model-attribute-form/constants.js.map +1 -1
- package/dist/cjs/model-attribute-form-control/ModelAttributeFormControl.js.map +1 -1
- package/dist/cjs/model-relation-form/ModelRelationForm.js.map +1 -1
- package/dist/cjs/processors.js.map +1 -1
- package/dist/cjs/struct-components/AddStruct.js.map +1 -1
- package/dist/cjs/struct-components/AddStructModal.js.map +1 -1
- package/dist/cjs/struct-components/StructTable.js.map +1 -1
- package/dist/cjs/struct-components/index.js.map +1 -1
- package/dist/cjs/struct-components/interfaces.js.map +1 -1
- package/dist/cjs/struct-components/mockData.js.map +1 -1
- package/dist/esm/attribute-form-control-url/AttributeFormControlUrl.js.map +1 -1
- package/dist/esm/cmdb-instances-input-form/CmdbInstancesInputFormItem.js.map +1 -1
- package/dist/esm/cmdb-instances-select-panel/CmdbInstancesSelectPanel.js.map +1 -1
- package/dist/esm/cmdb-url-link/CmdbUrlLink.js.map +1 -1
- package/dist/esm/components/index.js.map +1 -1
- package/dist/esm/components/instance-format/index.js.map +1 -1
- package/dist/esm/components/user-or-user-group-select/UserOrUserGroupSelect.js.map +1 -1
- package/dist/esm/data-providers/fetchCmdbInstanceDetail.js.map +1 -1
- package/dist/esm/data-providers/fetchCmdbInstanceSearch.js.map +1 -1
- package/dist/esm/data-providers/fetchCmdbObjectDetail.js.map +1 -1
- package/dist/esm/data-providers/fetchCmdbObjectList.js.map +1 -1
- package/dist/esm/data-providers/fetchCmdbObjectRef.js.map +1 -1
- package/dist/esm/data-providers/index.js.map +1 -1
- package/dist/esm/float-display-brick/FloatDisplayBrick.js.map +1 -1
- package/dist/esm/i18n/constants.js.map +1 -1
- package/dist/esm/i18n/index.js.map +1 -1
- package/dist/esm/i18n/locales/en.js.map +1 -1
- package/dist/esm/i18n/locales/zh.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/instance-attribute-form/InstanceAttributeForm.js.map +1 -1
- package/dist/esm/instance-detail/InstanceDetail.js.map +1 -1
- package/dist/esm/instance-detail/components/instance-relation-field-display/constants.js.map +1 -1
- package/dist/esm/instance-detail/components/instance-relation-field-display/instance-relation-field-display.js.map +1 -1
- package/dist/esm/instance-detail/components/instance-relation-table-show/instance-relation-table-show.js.map +1 -1
- package/dist/esm/instance-detail/constants/index.js.map +1 -1
- package/dist/esm/instance-list/IconButton.js.map +1 -1
- package/dist/esm/instance-list/InstanceList.js.map +1 -1
- package/dist/esm/instance-list/constants.js.map +1 -1
- package/dist/esm/instance-list-modal/InstanceListModal.js.map +1 -1
- package/dist/esm/instance-list-table/AdvancedSearch.js.map +1 -1
- package/dist/esm/instance-list-table/AdvancedSearchCondition.js.map +1 -1
- package/dist/esm/instance-list-table/DisplaySettings.js.map +1 -1
- package/dist/esm/instance-list-table/DisplaySettingsModal.js.map +1 -1
- package/dist/esm/instance-list-table/DynamicSearch.js.map +1 -1
- package/dist/esm/instance-list-table/InstanceListTable.js.map +1 -1
- package/dist/esm/instance-list-table/MoreButtonsContainer.js.map +1 -1
- package/dist/esm/instance-list-table/constants.js.map +1 -1
- package/dist/esm/instance-list-table/data-providers/fetchCmdbInstanceAggregateCount.js.map +1 -1
- package/dist/esm/instance-list-table/data-providers/fetchCmdbInstanceCount.js.map +1 -1
- package/dist/esm/instance-list-table/data-providers/fetchCmdbInstanceDetail.js.map +1 -1
- package/dist/esm/instance-list-table/data-providers/fetchCmdbObjectDetail.js.map +1 -1
- package/dist/esm/instance-list-table/data-providers/fetchPermRoleList.js.map +1 -1
- package/dist/esm/instance-list-table/data-providers/fetchPermissionList.js.map +1 -1
- package/dist/esm/instance-list-table/data-providers/getDefaultValueTemplate.js.map +1 -1
- package/dist/esm/instance-list-table/data-providers/index.js.map +1 -1
- package/dist/esm/instance-list-table/data-providers/searchCmdbInstances.js.map +1 -1
- package/dist/esm/instance-list-table/index.js.map +1 -1
- package/dist/esm/instance-list-table/interfaces.js.map +1 -1
- package/dist/esm/instance-list-table/utils.js.map +1 -1
- package/dist/esm/model-attribute-form/ModelAttributeForm.js.map +1 -1
- package/dist/esm/model-attribute-form/constants.js.map +1 -1
- package/dist/esm/model-attribute-form-control/ModelAttributeFormControl.js.map +1 -1
- package/dist/esm/model-relation-form/ModelRelationForm.js.map +1 -1
- package/dist/esm/processors.js.map +1 -1
- package/dist/esm/struct-components/AddStruct.js.map +1 -1
- package/dist/esm/struct-components/AddStructModal.js.map +1 -1
- package/dist/esm/struct-components/StructTable.js.map +1 -1
- package/dist/esm/struct-components/index.js.map +1 -1
- package/dist/esm/struct-components/interfaces.js.map +1 -1
- package/dist/esm/struct-components/mockData.js.map +1 -1
- package/dist/types/instance-detail/InstanceDetail.d.ts +1 -1
- package/dist/types/instance-list-table/InstanceListTable.d.ts +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/instance-list-table/AdvancedSearch.tsx"],"names":["React","update","isEqual","find","startsWith","findKey","isNil","flatten","isString","isArray","Form","Button","Col","Input","Row","Select","ComparisonOperators","ElementOperators","forEachAvailableFields","getInstanceNameKeys","LogicalOperators","clusterMap","styles","i18n","NS_LIBS_CMDB_INSTANCES","K","FormControlTypeEnum","ModelAttributeFormControl","ModelAttributeValueType","processAttrValueWithQuote","ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE","ConditionType","FieldTypeConditionTypesMap","STRING","Contain","NotContain","Equal","NotEqual","Empty","NotEmpty","INTEGER","Between","FLOAT","DATE","DATETIME","ENUM","ENUMS","ARR","STRUCT","IP","BOOLEAN","JSON","multiValueSearchOperators","comparisonOperator","Like","logicalOperator","Or","NotLike","And","STRUCT_LIST","getCondition","conditionType","fieldType","label","operations","t","OPERATOR_EQUAL_DEFINE","operator","In","OPERATOR_NOT_EQUAL_DEFINE","NotIn","OPERATOR_CONTAIN_DEFINE","prefix","suffix","OPERATOR_NOT_CONTAIN_DEFINE","OPERATOR_IS_EMPTY_DEFINE","Exists","fixedValue","OPERATOR_IS_NOT_EMPTY_DEFINE","True","False","GreaterThanOrEqual","LessThanOrEqual","OPERATOR_BETWEEN_DEFINE_TEXT_INT","OPERATOR_BETWEEN_DEFINE_TEXT_TIME","OPERATOR_BETWEEN_DEFINE_TEXT","OPERATOR_BETWEEN_DEFINE_TEXT_THE","type","convertValue","valueType","value","parseInt","parseFloat","getFieldConditionsAndValues","fieldQueryOperatorExpressionsMap","id","isRelation","relationSideId","objectId","attrId","isRelationWithNoExpression","expressions","expressionsKeys","relatedKey","v","k","relatedExpressions","Object","keys","currentCondition","availableConditions","map","condition","length","operatorsStr","isFixedValueEqual","every","operation","push","undefined","toString","includes","queryValuesStr","values","i","multiValueSearchOperator","trim","split","join","slice","endsWith","disabled","AdvancedSearchForm","Component","constructor","props","valueIndex","field","fieldIndex","setState","fields","state","$set","hasFixedValues","some","newValues","newFields","relatedFieldIndex","findIndex","f","relatedField","relatedCondition","setFormFieldValues","e","preventDefault","autoSearch","onSearch","queries","queriesToShow","fieldToShow","forEach","fieldQuery","fieldQueryToShow","hasValue","structQueryId","isStruct","attrValue","struct_define","struct_item","index","fieldId","fieldIdToShow","Array","structId","q","form","resetFields","computeState","componentDidUpdate","prevProps","newState","query","entries","key","firstSubQuery","compareOperators","compareOperator","subQueryValue","targetField","fieldItem","item","targetValue","modelData","attr","regex","name","relation","sides","relationObject","idObjectMap","that","showKeys","showKey","nameOfShowKey","attrList","this","fieldIds","reduce","acc","setFieldsValue","getFields","getFieldDecorator","hasBetween","style","multiSelect","SELECT","minWidth","conditionInputGroup","onConditionChange","separatorInput","initialValue","onValueChange","conditionInput","render","advancedSearch","advancedSearchForm","handleSearch","textAlign","SEARCH","marginLeft","handleReset","RESET","AdvancedSearch","create"],"mappings":"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","sourcesContent":["import React, { ChangeEvent, FormEvent } from \"react\";\nimport update from \"immutability-helper\";\nimport {\n isEqual,\n find,\n startsWith,\n findKey,\n isNil,\n flatten,\n isString,\n isArray,\n} from \"lodash\";\nimport { Form } from \"@ant-design/compatible\";\nimport { Button, Col, Input, Row, Select } from \"antd\";\nimport { FormComponentProps } from \"@ant-design/compatible/lib/form\";\nimport { CmdbModels } from \"@next-sdk/cmdb-sdk\";\nimport {\n ComparisonOperators,\n ElementOperators,\n forEachAvailableFields,\n getInstanceNameKeys,\n LogicalOperators,\n Query,\n QueryOperatorExpressions,\n RelationIdKeys,\n RelationNameKeys,\n RelationObjectIdKeys,\n} from \"@next-libs/cmdb-utils\";\nimport { clusterMap } from \"./constants\";\nimport styles from \"./AdvancedSearch.module.css\";\nimport i18n from \"i18next\";\nimport { NS_LIBS_CMDB_INSTANCES, K } from \"../i18n/constants\";\nimport {\n FormControlTypeEnum,\n ModelAttributeFormControl,\n ModelAttributeValueType,\n} from \"../model-attribute-form-control/ModelAttributeFormControl\";\nimport {\n processAttrValueWithQuote,\n ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE,\n} from \"../processors\";\n\nexport enum ConditionType {\n Equal = \"equal\",\n NotEqual = \"notEqual\",\n Contain = \"contain\",\n NotContain = \"notContain\",\n Empty = \"empty\",\n NotEmpty = \"notEmpty\",\n Between = \"between\",\n True = \"true\",\n False = \"false\",\n}\n\ninterface ConditionOperation {\n operator: ComparisonOperators | ElementOperators;\n fixedValue?: any;\n prefix?: string;\n suffix?: string;\n}\n\ninterface Condition {\n type: ConditionType;\n label: string;\n operations: ConditionOperation[];\n}\n\nconst FieldTypeConditionTypesMap: Record<string, ConditionType[]> = {\n [ModelAttributeValueType.STRING]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.INTEGER]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.FLOAT]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.DATE]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.DATETIME]: [\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ENUM]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ENUMS]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ARR]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.STRUCT]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.IP]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.BOOLEAN]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.JSON]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n};\n\nconst multiValueSearchOperators = [\n {\n comparisonOperator: ComparisonOperators.Like,\n logicalOperator: LogicalOperators.Or,\n },\n {\n comparisonOperator: ComparisonOperators.NotLike,\n logicalOperator: LogicalOperators.And,\n },\n {\n comparisonOperator: ComparisonOperators.Equal,\n logicalOperator: LogicalOperators.Or,\n },\n {\n comparisonOperator: ComparisonOperators.NotEqual,\n logicalOperator: LogicalOperators.And,\n },\n];\nFieldTypeConditionTypesMap[ModelAttributeValueType.STRUCT_LIST] =\n FieldTypeConditionTypesMap[ModelAttributeValueType.STRUCT];\n\nexport function getCondition(\n conditionType: ConditionType,\n fieldType: ModelAttributeValueType\n): Condition {\n let label: string;\n let operations: ConditionOperation[];\n\n switch (conditionType) {\n case ConditionType.Equal:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_EQUAL_DEFINE}`);\n switch (fieldType) {\n case ModelAttributeValueType.ARR:\n operations = [\n {\n operator: ComparisonOperators.In,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.Equal,\n },\n ];\n }\n break;\n case ConditionType.NotEqual:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_NOT_EQUAL_DEFINE}`\n );\n switch (fieldType) {\n case ModelAttributeValueType.ARR:\n operations = [\n {\n operator: ComparisonOperators.NotIn,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.NotEqual,\n },\n ];\n }\n break;\n case ConditionType.Contain:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_CONTAIN_DEFINE}`);\n switch (fieldType) {\n case ModelAttributeValueType.ENUMS:\n operations = [\n {\n operator: ComparisonOperators.In,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.Like,\n prefix: \"%\",\n suffix: \"%\",\n },\n ];\n }\n break;\n case ConditionType.NotContain:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_NOT_CONTAIN_DEFINE}`\n );\n switch (fieldType) {\n case ModelAttributeValueType.ENUMS:\n operations = [\n {\n operator: ComparisonOperators.NotIn,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.NotLike,\n prefix: \"%\",\n suffix: \"%\",\n },\n ];\n }\n break;\n case ConditionType.Empty:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_IS_EMPTY_DEFINE}`);\n operations = [\n {\n operator: ElementOperators.Exists,\n fixedValue: false,\n },\n ];\n break;\n case ConditionType.NotEmpty:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_IS_NOT_EMPTY_DEFINE}`\n );\n operations = [\n {\n operator: ElementOperators.Exists,\n fixedValue: true,\n },\n ];\n break;\n case ConditionType.True:\n label = \"true\";\n operations = [\n {\n operator: ComparisonOperators.Equal,\n fixedValue: true,\n },\n ];\n break;\n case ConditionType.False:\n label = \"false\";\n operations = [\n {\n operator: ComparisonOperators.Equal,\n fixedValue: false,\n },\n ];\n break;\n case ConditionType.Between:\n operations = [\n {\n operator: ComparisonOperators.GreaterThanOrEqual,\n },\n {\n operator: ComparisonOperators.LessThanOrEqual,\n },\n ];\n switch (fieldType) {\n case ModelAttributeValueType.INTEGER:\n case ModelAttributeValueType.FLOAT:\n // label = \"在此区间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_INT}`\n );\n break;\n case ModelAttributeValueType.DATE:\n case ModelAttributeValueType.DATETIME:\n // label = \"在此期间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_TIME}`\n );\n break;\n case ModelAttributeValueType.IP:\n // label = \"范围\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT}`\n );\n break;\n default:\n // label = \"在此之间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_THE}`\n );\n }\n break;\n }\n\n return {\n type: conditionType,\n label,\n operations,\n };\n}\n\nexport function convertValue(valueType: string, value: any): any {\n if (typeof value !== \"boolean\") {\n switch (valueType) {\n case ModelAttributeValueType.INTEGER:\n return parseInt(value);\n case ModelAttributeValueType.FLOAT:\n return parseFloat(value);\n case ModelAttributeValueType.BOOLEAN:\n return value === \"true\";\n }\n }\n return value;\n}\n\nexport function getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap: Record<string, QueryOperatorExpressions>,\n id: string,\n valueType: ModelAttributeValueType,\n isRelation?: boolean,\n relationSideId?: string,\n objectId?: string,\n attrId?: string\n) {\n let isRelationWithNoExpression = false;\n let expressions = fieldQueryOperatorExpressionsMap[id];\n let expressionsKeys: string[];\n if (!expressions && isRelation) {\n isRelationWithNoExpression = true;\n const relatedKey = findKey(\n fieldQueryOperatorExpressionsMap,\n (v, k) => startsWith(k, `${relationSideId}.`) || k === relationSideId\n );\n const relatedExpressions = fieldQueryOperatorExpressionsMap[relatedKey];\n if (\n relatedExpressions &&\n !isNil(relatedExpressions[ElementOperators.Exists])\n ) {\n expressions = fieldQueryOperatorExpressionsMap[relatedKey];\n }\n }\n\n if (expressions) {\n expressionsKeys = Object.keys(expressions);\n }\n let currentCondition: Condition;\n const availableConditions = FieldTypeConditionTypesMap[valueType].map(\n (conditionType) => {\n const condition = getCondition(conditionType, valueType);\n\n if (expressionsKeys?.length) {\n const operatorsStr: string[] = [];\n // 由于当 ConditionType.Between ,operations 有两个,当用户只填选一个时,currentCondition会默认第一个选择器。与实际不符\n const isFixedValueEqual = condition.operations.every((operation) => {\n operatorsStr.push(operation.operator);\n\n if (operation.fixedValue !== undefined) {\n return (\n operation.fixedValue?.toString() ===\n expressions[operation?.operator]?.toString()\n );\n } else {\n return true;\n }\n });\n if (\n isFixedValueEqual &&\n expressionsKeys.every((operator) => operatorsStr.includes(operator))\n ) {\n currentCondition = condition;\n }\n }\n\n return condition;\n }\n );\n if (!currentCondition) {\n currentCondition = availableConditions[0];\n }\n let queryValuesStr = \"\";\n const values = currentCondition.operations.map((operation) => {\n let value: any;\n // istanbul ignore else ElementOperators.Exists时直接返回fixedValue\n if (\n expressions?.[operation.operator] !== undefined &&\n operation.operator !== ElementOperators.Exists\n ) {\n value = expressions[operation.operator];\n let values = [expressions[operation.operator]];\n const i = multiValueSearchOperators.find(\n (multiValueSearchOperator) =>\n multiValueSearchOperator.comparisonOperator === operation.operator\n );\n if (i) {\n if (\n valueType === ModelAttributeValueType.ENUM ||\n typeof expressions[operation.operator] === \"string\"\n ) {\n values = expressions[operation.operator]\n .trim()\n .split(/\\s+/)\n .map((value: string) => convertValue(valueType, value));\n if (objectId === \"CLUSTER\" && attrId === \"type\") {\n values = values.map((value) => clusterMap[value]);\n }\n }\n }\n if (\n typeof values[0] === \"string\" ||\n typeof values[0] === \"number\" ||\n typeof values[0] === \"boolean\"\n ) {\n queryValuesStr = values.join(\" \");\n values = values.map((value: string) => {\n if (operation.prefix && value.startsWith(operation.prefix)) {\n value = value.slice(operation.prefix.length);\n }\n if (operation.suffix && value.endsWith(operation.suffix)) {\n value = value.slice(0, value.length - operation.suffix.length);\n }\n return value;\n });\n value = [\n ModelAttributeValueType.ENUM,\n ModelAttributeValueType.ARR,\n ].includes(valueType)\n ? values\n : values.join(\" \");\n }\n } else {\n value = operation.fixedValue !== undefined ? operation.fixedValue : null;\n }\n\n return value;\n });\n const disabled = false;\n return {\n availableConditions,\n currentCondition,\n values,\n queryValuesStr,\n disabled,\n };\n}\n\nexport interface Field {\n id: string;\n name: string;\n attrValue: Partial<CmdbModels.ModelObjectAttrValue>;\n values: any[];\n availableConditions: Condition[];\n currentCondition: Condition;\n isRelation: boolean;\n relationSideId?: string;\n disabled?: boolean;\n}\n\nexport interface AdvancedSearchFormProps extends FormComponentProps {\n fieldIds?: string[];\n idObjectMap: Record<string, Partial<CmdbModels.ModelCmdbObject>>;\n modelData: Partial<CmdbModels.ModelCmdbObject>;\n q?: Query[];\n placeholder?: string;\n onSearch?(\n queries: Query[],\n queriesToShow?: Query[],\n fieldToShow?: Record<string, any[]>[]\n ): void;\n autoSearch?: (fields: Field[]) => void;\n fieldToShow?: Record<string, any[]>[]; // 回填高级搜索的field值(根据query回填丢失了引号信息)\n onChange?(e: ChangeEvent<HTMLInputElement>): void;\n}\n\nexport interface AdvancedSearchFormState {\n fields: Field[];\n}\n\nexport class AdvancedSearchForm extends React.Component<\n AdvancedSearchFormProps,\n AdvancedSearchFormState\n> {\n constructor(props: AdvancedSearchFormProps) {\n super(props);\n\n this.state = this.computeState();\n }\n\n componentDidUpdate(prevProps: Readonly<AdvancedSearchFormProps>): void {\n if (!isEqual(this.props.q, prevProps.q)) {\n const newState = this.computeState();\n this.setState(newState);\n\n this.setFormFieldValues(newState.fields);\n }\n }\n\n computeState(): { fields: Field[] } {\n const fieldQueryOperatorExpressionsMap: Record<\n string,\n QueryOperatorExpressions\n > = {};\n const fields: Field[] = [];\n if (this.props.q) {\n this.props.q.forEach((query) => {\n Object.entries(query).forEach(([key, expressions]) => {\n if (key === LogicalOperators.Or || key === LogicalOperators.And) {\n const firstSubQuery = (expressions as Query[])[0];\n const fieldId = Object.keys(firstSubQuery)[0];\n // 由于 ConditionType.Between 这边的 operator 是两个,由于需要支持选择一个的时候也要显示出来,这边不能将选择器合并成str吐出去\n const compareOperators = Object.keys(firstSubQuery[fieldId]);\n const compareOperator =\n compareOperators.length > 1\n ? compareOperators\n : compareOperators.join(\"\");\n let subQueryValue = \"\";\n let targetField;\n if (ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE) {\n targetField = this.props.fieldToShow?.find(\n (fieldItem) => Object.keys(fieldItem)[0] === fieldId\n );\n }\n if (!isNil(targetField)) {\n // 二维数组会有问题,\n subQueryValue = isArray(targetField[fieldId])\n ? targetField[fieldId]\n .map((item) => (isArray(item) ? item.join(\" \") : item))\n .join(\"\")\n : (targetField[fieldId] as any);\n } else {\n subQueryValue = (expressions as Query[])\n .map((query) => {\n const targetValue = (\n query[fieldId] as Record<ComparisonOperators, any>\n )[compareOperator as ComparisonOperators];\n if (\n compareOperator === ComparisonOperators.Like ||\n compareOperator === ComparisonOperators.NotLike\n ) {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `${targetValue[0]}\"${targetValue.slice(\n 1,\n targetValue.length - 1\n )}\"${targetValue[targetValue.length - 1]}`\n : targetValue;\n }\n // 对于时间选择器有两个的,不用特意将值转换成str,因为不需要这里的值\n else {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `\"${targetValue}\"`\n : targetValue;\n }\n })\n .join(\" \");\n }\n key = fieldId;\n expressions = Array.isArray(compareOperator)\n ? firstSubQuery[fieldId]\n : {\n [compareOperator]: subQueryValue,\n };\n }\n\n fieldQueryOperatorExpressionsMap[key] =\n expressions as QueryOperatorExpressions;\n });\n });\n }\n forEachAvailableFields(\n this.props.modelData,\n (attr) => {\n const attrValue: Partial<CmdbModels.ModelObjectAttrValue> & {\n isStruct?: boolean;\n } & { isClusterType?: boolean } = {};\n\n switch (attr.value.type) {\n case ModelAttributeValueType.STRUCT:\n case ModelAttributeValueType.STRUCT_LIST:\n attrValue.type = ModelAttributeValueType.STRING;\n attrValue.struct_define = attr.value.struct_define;\n attrValue.isStruct = true;\n break;\n case ModelAttributeValueType.ENUM:\n case ModelAttributeValueType.ENUMS:\n attrValue.type = attr.value.type;\n attrValue.regex = attr.value.regex;\n break;\n default:\n attrValue.type = attr.value.type;\n }\n\n fields.push({\n id: attr.id,\n name: attr.name,\n attrValue,\n isRelation: false,\n ...getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap,\n attr.id,\n attr.value.type as ModelAttributeValueType\n ),\n });\n },\n (relation, sides) => {\n const relationObject =\n this.props.idObjectMap[\n relation[`${sides.that}_object_id` as RelationObjectIdKeys]\n ];\n const showKeys = getInstanceNameKeys(relationObject);\n showKeys.forEach((showKey, index) => {\n const nameOfShowKey =\n find(relationObject?.attrList, [\"id\", showKey])?.name ?? showKey;\n const id = `${\n relation[`${sides.this}_id` as RelationIdKeys]\n }.${showKey}`;\n const type = ModelAttributeValueType.STRING;\n\n fields.push({\n id,\n name: `${\n relation[`${sides.this}_name` as RelationNameKeys]\n }(${nameOfShowKey})`,\n attrValue: { type },\n isRelation: true,\n relationSideId: relation[`${sides.this}_id` as RelationIdKeys],\n ...getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap,\n id,\n type,\n true,\n relation[`${sides.this}_id` as RelationNameKeys]\n ),\n });\n });\n },\n this.props.fieldIds\n );\n return { fields };\n }\n\n setFormFieldValues(fields: Field[]): void {\n const values = fields.reduce<{ [key: string]: any }>((acc, field) => {\n field.values.map((value, valueIndex) => {\n const operation = field.currentCondition.operations[valueIndex];\n acc[`${field.id}[${valueIndex}]`] =\n operation.fixedValue === undefined ? value : \"\";\n });\n return acc;\n }, {});\n this.props.form.setFieldsValue(values);\n }\n\n onValueChange = (\n value: any,\n valueIndex: number,\n field: Field,\n fieldIndex: number\n ) => {\n this.setState({\n fields: update(this.state.fields, {\n [fieldIndex]: { values: { [valueIndex]: { $set: value } } },\n }),\n });\n };\n\n onConditionChange = (\n value: ConditionType,\n field: Field,\n fieldIndex: number\n ) => {\n const hasFixedValues = field.currentCondition.operations.some(\n (operation) => operation.fixedValue !== undefined\n );\n\n const condition = field.availableConditions.find(\n (condition) => condition.type === value\n );\n let newValues = condition.operations.map((operation) =>\n operation.fixedValue !== undefined ? operation.fixedValue : null\n );\n if (\n newValues.every((value) => value === null) &&\n !hasFixedValues &&\n this.state.fields[fieldIndex].values.length === newValues.length\n ) {\n newValues = this.state.fields[fieldIndex].values;\n }\n\n let newFields = update(this.state.fields, {\n [fieldIndex]: {\n currentCondition: { $set: condition },\n values: {\n $set: newValues,\n },\n },\n });\n\n const relatedFieldIndex = newFields.findIndex(\n (f) =>\n f.isRelation &&\n f.relationSideId === field.relationSideId &&\n f.id !== field.id\n );\n if (relatedFieldIndex !== -1) {\n const relatedField = newFields[relatedFieldIndex];\n const relatedCondition = relatedField.availableConditions.find(\n (condition) => condition.type === value\n );\n if (condition.operations[0].operator === ElementOperators.Exists) {\n newFields = update(newFields, {\n [relatedFieldIndex]: {\n currentCondition: { $set: relatedCondition },\n values: {\n $set: [null],\n },\n },\n });\n } else if (\n relatedField.currentCondition.operations[0].operator ===\n ElementOperators.Exists\n ) {\n newFields = update(newFields, {\n [relatedFieldIndex]: {\n currentCondition: { $set: relatedField.availableConditions[0] },\n values: {\n $set: [null],\n },\n },\n });\n }\n }\n\n this.setState({\n fields: newFields,\n });\n\n this.setFormFieldValues(newFields);\n };\n\n getFields() {\n const { getFieldDecorator } = this.props.form;\n const hasBetween = this.state.fields.some((field) =>\n [\n ModelAttributeValueType.IP,\n ModelAttributeValueType.DATE,\n ModelAttributeValueType.DATETIME,\n ].includes(field.attrValue.type as ModelAttributeValueType)\n );\n return this.state.fields.map((field, fieldIndex) => {\n let type: string;\n let style: React.CSSProperties;\n let attrValue: any = field.attrValue;\n let multiSelect = false;\n switch (field.attrValue.type) {\n case ModelAttributeValueType.INTEGER:\n case ModelAttributeValueType.FLOAT:\n attrValue = {\n type: ModelAttributeValueType.STRING,\n };\n break;\n case ModelAttributeValueType.ENUM:\n case ModelAttributeValueType.ENUMS:\n type = FormControlTypeEnum.SELECT;\n multiSelect = true;\n break;\n case ModelAttributeValueType.DATETIME:\n style = { minWidth: \"auto\" };\n break;\n }\n //高级搜索这里即使是json格式,也用input输入框进行搜索\n if ((attrValue as any).type === \"json\") {\n attrValue = { ...attrValue, type: \"str\" };\n }\n return (\n <Col span={hasBetween ? 12 : 8} key={field.id}>\n <Form.Item label={field.name}>\n <Input.Group className={styles.conditionInputGroup} compact>\n <Select\n dropdownMatchSelectWidth={false}\n value={field.currentCondition.type}\n onChange={(value: ConditionType) =>\n this.onConditionChange(value, field, fieldIndex)\n }\n disabled={field.disabled}\n >\n {field.availableConditions.map((condition) => (\n <Select.Option value={condition.type} key={condition.type}>\n {condition.label}\n </Select.Option>\n ))}\n </Select>\n {field.values.map((value, valueIndex) => {\n const operation = field.currentCondition.operations[valueIndex];\n\n return (\n <React.Fragment\n key={`${field.currentCondition.type}-${operation.operator}`}\n >\n {valueIndex > 0 && (\n <Input\n className={styles.separatorInput}\n placeholder=\"~\"\n disabled\n />\n )}\n {getFieldDecorator(`${field.id}[${valueIndex}]`, {\n initialValue:\n operation.fixedValue === undefined ? value : \"\",\n })(\n operation.fixedValue === undefined && !field.disabled ? (\n <ModelAttributeFormControl\n type={type}\n attribute={{\n id: field.id,\n name: field.name,\n value: attrValue,\n }}\n objectId={this.props.modelData.objectId}\n multiSelect={multiSelect}\n onChange={(value: any) =>\n this.onValueChange(\n value,\n valueIndex,\n field,\n fieldIndex\n )\n }\n className={styles.conditionInput}\n style={style}\n />\n ) : (\n <Input disabled />\n )\n )}\n </React.Fragment>\n );\n })}\n </Input.Group>\n </Form.Item>\n </Col>\n );\n });\n }\n\n handleSearch = (e: FormEvent<any>): void => {\n e.preventDefault();\n if (this.props?.autoSearch) this.props.autoSearch(this.state.fields);\n if (this.props.onSearch) {\n // 当过滤字段为relation并且过滤条件为ElementOperators.Exists的时候,发起后台请求的搜索queries与负责前端展示的query不同。需要额外处理。\n let queries: Query[] = [];\n let queriesToShow: Query[] = [];\n const fieldToShow: Record<string, any[]>[] = [];\n this.state.fields.forEach((field) => {\n const expressions: QueryOperatorExpressions = {};\n let fieldQuery: Query = { [field.id]: expressions };\n let fieldQueryToShow: Query = { [field.id]: expressions };\n let hasValue = false;\n let structQueryId: string[];\n const isStruct = !!(field.attrValue as any).isStruct;\n if (isStruct) {\n structQueryId = field.attrValue.struct_define.map(\n (struct_item) => `${field.id}.${struct_item.id}`\n );\n }\n field.values.forEach((value, index) => {\n const operation = field.currentCondition.operations[index];\n const fieldId =\n field.isRelation && ElementOperators.Exists === operation.operator\n ? field.relationSideId\n : field.id;\n fieldQuery = { [fieldId]: expressions };\n\n const fieldIdToShow = field.id;\n fieldQueryToShow = { [fieldIdToShow]: expressions };\n\n if (\n value !== null &&\n value !== \"\" &&\n !(Array.isArray(value) && value.length === 0)\n ) {\n const multiValueSearchOperator = multiValueSearchOperators.find(\n (operator) => operator.comparisonOperator === operation.operator\n );\n if (multiValueSearchOperator) {\n let values: any[];\n if (\n field.attrValue.type === ModelAttributeValueType.ENUM ||\n field.attrValue.type === ModelAttributeValueType.ARR\n ) {\n values = value;\n } else if (typeof value === \"string\") {\n if (\n !ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE ||\n !value.includes('\"')\n ) {\n values = value\n .trim()\n .split(/\\s+/)\n .map((value) => convertValue(field.attrValue.type, value));\n } else {\n values = processAttrValueWithQuote(value, []);\n }\n } else {\n values = [value];\n }\n if (values.length) {\n if (isStruct) {\n fieldQuery = {\n [multiValueSearchOperator.logicalOperator]: flatten(\n values.map((value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n\n return structQueryId.map(\n (structId: string | number) => ({\n [structId]: {\n [operation.operator]: value,\n },\n })\n );\n })\n ),\n };\n } else {\n fieldQuery = {\n [multiValueSearchOperator.logicalOperator]: values.map(\n (value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n return {\n [fieldId]: {\n [operation.operator]: value,\n },\n };\n }\n ),\n };\n }\n fieldQueryToShow = {\n [multiValueSearchOperator.logicalOperator]: values.map(\n (value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n return {\n [fieldIdToShow]: {\n [operation.operator]: value,\n },\n };\n }\n ),\n };\n hasValue = true;\n fieldToShow.push({ [field.id]: field.values });\n }\n } else {\n value = convertValue(field.attrValue.type, value);\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n expressions[operation.operator] = value;\n hasValue = true;\n fieldToShow.push({ [field.id]: field.values });\n }\n }\n });\n if (hasValue) {\n queries.push(fieldQuery);\n queriesToShow.push(fieldQueryToShow);\n }\n });\n if (queries.length === 0) {\n queries = undefined;\n queriesToShow = undefined;\n }\n if (!isEqual(this.props.q, queries)) {\n this.props.onSearch(queries, queriesToShow, fieldToShow);\n }\n }\n };\n\n handleReset = () => {\n if (this.props.autoSearch) this.props.autoSearch([]);\n this.props.onSearch([], [], []);\n this.props.form.resetFields();\n };\n\n render(): React.ReactNode {\n return (\n <div className={styles.advancedSearch}>\n <Form\n layout=\"vertical\"\n className={styles.advancedSearchForm}\n onSubmit={this.handleSearch}\n >\n <Row gutter={50}>{this.getFields()}</Row>\n <Row>\n <Col span={24} style={{ textAlign: \"right\" }}>\n <Button\n type=\"primary\"\n htmlType=\"submit\"\n data-testid=\"submit-button\"\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.SEARCH}`)}\n </Button>\n <Button\n style={{ marginLeft: 8 }}\n onClick={this.handleReset}\n data-testid=\"reset-button\"\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.RESET}`)}\n </Button>\n </Col>\n </Row>\n </Form>\n </div>\n );\n }\n}\n\nexport const AdvancedSearch = Form.create<AdvancedSearchFormProps>({\n name: \"advanced_search\",\n})(AdvancedSearchForm);\n"],"file":"AdvancedSearch.js"}
|
|
1
|
+
{"version":3,"file":"AdvancedSearch.js","names":["React","update","isEqual","find","startsWith","findKey","isNil","flatten","isString","isArray","Form","Button","Col","Input","Row","Select","ComparisonOperators","ElementOperators","forEachAvailableFields","getInstanceNameKeys","LogicalOperators","clusterMap","styles","i18n","NS_LIBS_CMDB_INSTANCES","K","FormControlTypeEnum","ModelAttributeFormControl","ModelAttributeValueType","processAttrValueWithQuote","ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE","ConditionType","FieldTypeConditionTypesMap","STRING","Contain","NotContain","Equal","NotEqual","Empty","NotEmpty","INTEGER","Between","FLOAT","DATE","DATETIME","ENUM","ENUMS","ARR","STRUCT","IP","BOOLEAN","JSON","multiValueSearchOperators","comparisonOperator","Like","logicalOperator","Or","NotLike","And","STRUCT_LIST","getCondition","conditionType","fieldType","label","operations","t","OPERATOR_EQUAL_DEFINE","operator","In","OPERATOR_NOT_EQUAL_DEFINE","NotIn","OPERATOR_CONTAIN_DEFINE","prefix","suffix","OPERATOR_NOT_CONTAIN_DEFINE","OPERATOR_IS_EMPTY_DEFINE","Exists","fixedValue","OPERATOR_IS_NOT_EMPTY_DEFINE","True","False","GreaterThanOrEqual","LessThanOrEqual","OPERATOR_BETWEEN_DEFINE_TEXT_INT","OPERATOR_BETWEEN_DEFINE_TEXT_TIME","OPERATOR_BETWEEN_DEFINE_TEXT","OPERATOR_BETWEEN_DEFINE_TEXT_THE","type","convertValue","valueType","value","parseInt","parseFloat","getFieldConditionsAndValues","fieldQueryOperatorExpressionsMap","id","isRelation","relationSideId","objectId","attrId","isRelationWithNoExpression","expressions","expressionsKeys","relatedKey","v","k","relatedExpressions","Object","keys","currentCondition","availableConditions","map","condition","length","operatorsStr","isFixedValueEqual","every","operation","push","undefined","toString","includes","queryValuesStr","values","i","multiValueSearchOperator","trim","split","join","slice","endsWith","disabled","AdvancedSearchForm","Component","constructor","props","valueIndex","field","fieldIndex","setState","fields","state","$set","hasFixedValues","some","newValues","newFields","relatedFieldIndex","findIndex","f","relatedField","relatedCondition","setFormFieldValues","e","preventDefault","autoSearch","onSearch","queries","queriesToShow","fieldToShow","forEach","fieldQuery","fieldQueryToShow","hasValue","structQueryId","isStruct","attrValue","struct_define","struct_item","index","fieldId","fieldIdToShow","Array","structId","q","form","resetFields","computeState","componentDidUpdate","prevProps","newState","query","entries","key","firstSubQuery","compareOperators","compareOperator","subQueryValue","targetField","fieldItem","item","targetValue","modelData","attr","regex","name","relation","sides","relationObject","idObjectMap","that","showKeys","showKey","nameOfShowKey","attrList","this","fieldIds","reduce","acc","setFieldsValue","getFields","getFieldDecorator","hasBetween","style","multiSelect","SELECT","minWidth","conditionInputGroup","onConditionChange","separatorInput","initialValue","onValueChange","conditionInput","render","advancedSearch","advancedSearchForm","handleSearch","textAlign","SEARCH","marginLeft","handleReset","RESET","AdvancedSearch","create"],"sources":["../../../src/instance-list-table/AdvancedSearch.tsx"],"sourcesContent":["import React, { ChangeEvent, FormEvent } from \"react\";\nimport update from \"immutability-helper\";\nimport {\n isEqual,\n find,\n startsWith,\n findKey,\n isNil,\n flatten,\n isString,\n isArray,\n} from \"lodash\";\nimport { Form } from \"@ant-design/compatible\";\nimport { Button, Col, Input, Row, Select } from \"antd\";\nimport { FormComponentProps } from \"@ant-design/compatible/lib/form\";\nimport { CmdbModels } from \"@next-sdk/cmdb-sdk\";\nimport {\n ComparisonOperators,\n ElementOperators,\n forEachAvailableFields,\n getInstanceNameKeys,\n LogicalOperators,\n Query,\n QueryOperatorExpressions,\n RelationIdKeys,\n RelationNameKeys,\n RelationObjectIdKeys,\n} from \"@next-libs/cmdb-utils\";\nimport { clusterMap } from \"./constants\";\nimport styles from \"./AdvancedSearch.module.css\";\nimport i18n from \"i18next\";\nimport { NS_LIBS_CMDB_INSTANCES, K } from \"../i18n/constants\";\nimport {\n FormControlTypeEnum,\n ModelAttributeFormControl,\n ModelAttributeValueType,\n} from \"../model-attribute-form-control/ModelAttributeFormControl\";\nimport {\n processAttrValueWithQuote,\n ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE,\n} from \"../processors\";\n\nexport enum ConditionType {\n Equal = \"equal\",\n NotEqual = \"notEqual\",\n Contain = \"contain\",\n NotContain = \"notContain\",\n Empty = \"empty\",\n NotEmpty = \"notEmpty\",\n Between = \"between\",\n True = \"true\",\n False = \"false\",\n}\n\ninterface ConditionOperation {\n operator: ComparisonOperators | ElementOperators;\n fixedValue?: any;\n prefix?: string;\n suffix?: string;\n}\n\ninterface Condition {\n type: ConditionType;\n label: string;\n operations: ConditionOperation[];\n}\n\nconst FieldTypeConditionTypesMap: Record<string, ConditionType[]> = {\n [ModelAttributeValueType.STRING]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.INTEGER]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.FLOAT]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.DATE]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.DATETIME]: [\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ENUM]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ENUMS]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ARR]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.STRUCT]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.IP]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.BOOLEAN]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.JSON]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n};\n\nconst multiValueSearchOperators = [\n {\n comparisonOperator: ComparisonOperators.Like,\n logicalOperator: LogicalOperators.Or,\n },\n {\n comparisonOperator: ComparisonOperators.NotLike,\n logicalOperator: LogicalOperators.And,\n },\n {\n comparisonOperator: ComparisonOperators.Equal,\n logicalOperator: LogicalOperators.Or,\n },\n {\n comparisonOperator: ComparisonOperators.NotEqual,\n logicalOperator: LogicalOperators.And,\n },\n];\nFieldTypeConditionTypesMap[ModelAttributeValueType.STRUCT_LIST] =\n FieldTypeConditionTypesMap[ModelAttributeValueType.STRUCT];\n\nexport function getCondition(\n conditionType: ConditionType,\n fieldType: ModelAttributeValueType\n): Condition {\n let label: string;\n let operations: ConditionOperation[];\n\n switch (conditionType) {\n case ConditionType.Equal:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_EQUAL_DEFINE}`);\n switch (fieldType) {\n case ModelAttributeValueType.ARR:\n operations = [\n {\n operator: ComparisonOperators.In,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.Equal,\n },\n ];\n }\n break;\n case ConditionType.NotEqual:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_NOT_EQUAL_DEFINE}`\n );\n switch (fieldType) {\n case ModelAttributeValueType.ARR:\n operations = [\n {\n operator: ComparisonOperators.NotIn,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.NotEqual,\n },\n ];\n }\n break;\n case ConditionType.Contain:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_CONTAIN_DEFINE}`);\n switch (fieldType) {\n case ModelAttributeValueType.ENUMS:\n operations = [\n {\n operator: ComparisonOperators.In,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.Like,\n prefix: \"%\",\n suffix: \"%\",\n },\n ];\n }\n break;\n case ConditionType.NotContain:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_NOT_CONTAIN_DEFINE}`\n );\n switch (fieldType) {\n case ModelAttributeValueType.ENUMS:\n operations = [\n {\n operator: ComparisonOperators.NotIn,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.NotLike,\n prefix: \"%\",\n suffix: \"%\",\n },\n ];\n }\n break;\n case ConditionType.Empty:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_IS_EMPTY_DEFINE}`);\n operations = [\n {\n operator: ElementOperators.Exists,\n fixedValue: false,\n },\n ];\n break;\n case ConditionType.NotEmpty:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_IS_NOT_EMPTY_DEFINE}`\n );\n operations = [\n {\n operator: ElementOperators.Exists,\n fixedValue: true,\n },\n ];\n break;\n case ConditionType.True:\n label = \"true\";\n operations = [\n {\n operator: ComparisonOperators.Equal,\n fixedValue: true,\n },\n ];\n break;\n case ConditionType.False:\n label = \"false\";\n operations = [\n {\n operator: ComparisonOperators.Equal,\n fixedValue: false,\n },\n ];\n break;\n case ConditionType.Between:\n operations = [\n {\n operator: ComparisonOperators.GreaterThanOrEqual,\n },\n {\n operator: ComparisonOperators.LessThanOrEqual,\n },\n ];\n switch (fieldType) {\n case ModelAttributeValueType.INTEGER:\n case ModelAttributeValueType.FLOAT:\n // label = \"在此区间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_INT}`\n );\n break;\n case ModelAttributeValueType.DATE:\n case ModelAttributeValueType.DATETIME:\n // label = \"在此期间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_TIME}`\n );\n break;\n case ModelAttributeValueType.IP:\n // label = \"范围\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT}`\n );\n break;\n default:\n // label = \"在此之间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_THE}`\n );\n }\n break;\n }\n\n return {\n type: conditionType,\n label,\n operations,\n };\n}\n\nexport function convertValue(valueType: string, value: any): any {\n if (typeof value !== \"boolean\") {\n switch (valueType) {\n case ModelAttributeValueType.INTEGER:\n return parseInt(value);\n case ModelAttributeValueType.FLOAT:\n return parseFloat(value);\n case ModelAttributeValueType.BOOLEAN:\n return value === \"true\";\n }\n }\n return value;\n}\n\nexport function getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap: Record<string, QueryOperatorExpressions>,\n id: string,\n valueType: ModelAttributeValueType,\n isRelation?: boolean,\n relationSideId?: string,\n objectId?: string,\n attrId?: string\n) {\n let isRelationWithNoExpression = false;\n let expressions = fieldQueryOperatorExpressionsMap[id];\n let expressionsKeys: string[];\n if (!expressions && isRelation) {\n isRelationWithNoExpression = true;\n const relatedKey = findKey(\n fieldQueryOperatorExpressionsMap,\n (v, k) => startsWith(k, `${relationSideId}.`) || k === relationSideId\n );\n const relatedExpressions = fieldQueryOperatorExpressionsMap[relatedKey];\n if (\n relatedExpressions &&\n !isNil(relatedExpressions[ElementOperators.Exists])\n ) {\n expressions = fieldQueryOperatorExpressionsMap[relatedKey];\n }\n }\n\n if (expressions) {\n expressionsKeys = Object.keys(expressions);\n }\n let currentCondition: Condition;\n const availableConditions = FieldTypeConditionTypesMap[valueType].map(\n (conditionType) => {\n const condition = getCondition(conditionType, valueType);\n\n if (expressionsKeys?.length) {\n const operatorsStr: string[] = [];\n // 由于当 ConditionType.Between ,operations 有两个,当用户只填选一个时,currentCondition会默认第一个选择器。与实际不符\n const isFixedValueEqual = condition.operations.every((operation) => {\n operatorsStr.push(operation.operator);\n\n if (operation.fixedValue !== undefined) {\n return (\n operation.fixedValue?.toString() ===\n expressions[operation?.operator]?.toString()\n );\n } else {\n return true;\n }\n });\n if (\n isFixedValueEqual &&\n expressionsKeys.every((operator) => operatorsStr.includes(operator))\n ) {\n currentCondition = condition;\n }\n }\n\n return condition;\n }\n );\n if (!currentCondition) {\n currentCondition = availableConditions[0];\n }\n let queryValuesStr = \"\";\n const values = currentCondition.operations.map((operation) => {\n let value: any;\n // istanbul ignore else ElementOperators.Exists时直接返回fixedValue\n if (\n expressions?.[operation.operator] !== undefined &&\n operation.operator !== ElementOperators.Exists\n ) {\n value = expressions[operation.operator];\n let values = [expressions[operation.operator]];\n const i = multiValueSearchOperators.find(\n (multiValueSearchOperator) =>\n multiValueSearchOperator.comparisonOperator === operation.operator\n );\n if (i) {\n if (\n valueType === ModelAttributeValueType.ENUM ||\n typeof expressions[operation.operator] === \"string\"\n ) {\n values = expressions[operation.operator]\n .trim()\n .split(/\\s+/)\n .map((value: string) => convertValue(valueType, value));\n if (objectId === \"CLUSTER\" && attrId === \"type\") {\n values = values.map((value) => clusterMap[value]);\n }\n }\n }\n if (\n typeof values[0] === \"string\" ||\n typeof values[0] === \"number\" ||\n typeof values[0] === \"boolean\"\n ) {\n queryValuesStr = values.join(\" \");\n values = values.map((value: string) => {\n if (operation.prefix && value.startsWith(operation.prefix)) {\n value = value.slice(operation.prefix.length);\n }\n if (operation.suffix && value.endsWith(operation.suffix)) {\n value = value.slice(0, value.length - operation.suffix.length);\n }\n return value;\n });\n value = [\n ModelAttributeValueType.ENUM,\n ModelAttributeValueType.ARR,\n ].includes(valueType)\n ? values\n : values.join(\" \");\n }\n } else {\n value = operation.fixedValue !== undefined ? operation.fixedValue : null;\n }\n\n return value;\n });\n const disabled = false;\n return {\n availableConditions,\n currentCondition,\n values,\n queryValuesStr,\n disabled,\n };\n}\n\nexport interface Field {\n id: string;\n name: string;\n attrValue: Partial<CmdbModels.ModelObjectAttrValue>;\n values: any[];\n availableConditions: Condition[];\n currentCondition: Condition;\n isRelation: boolean;\n relationSideId?: string;\n disabled?: boolean;\n}\n\nexport interface AdvancedSearchFormProps extends FormComponentProps {\n fieldIds?: string[];\n idObjectMap: Record<string, Partial<CmdbModels.ModelCmdbObject>>;\n modelData: Partial<CmdbModels.ModelCmdbObject>;\n q?: Query[];\n placeholder?: string;\n onSearch?(\n queries: Query[],\n queriesToShow?: Query[],\n fieldToShow?: Record<string, any[]>[]\n ): void;\n autoSearch?: (fields: Field[]) => void;\n fieldToShow?: Record<string, any[]>[]; // 回填高级搜索的field值(根据query回填丢失了引号信息)\n onChange?(e: ChangeEvent<HTMLInputElement>): void;\n}\n\nexport interface AdvancedSearchFormState {\n fields: Field[];\n}\n\nexport class AdvancedSearchForm extends React.Component<\n AdvancedSearchFormProps,\n AdvancedSearchFormState\n> {\n constructor(props: AdvancedSearchFormProps) {\n super(props);\n\n this.state = this.computeState();\n }\n\n componentDidUpdate(prevProps: Readonly<AdvancedSearchFormProps>): void {\n if (!isEqual(this.props.q, prevProps.q)) {\n const newState = this.computeState();\n this.setState(newState);\n\n this.setFormFieldValues(newState.fields);\n }\n }\n\n computeState(): { fields: Field[] } {\n const fieldQueryOperatorExpressionsMap: Record<\n string,\n QueryOperatorExpressions\n > = {};\n const fields: Field[] = [];\n if (this.props.q) {\n this.props.q.forEach((query) => {\n Object.entries(query).forEach(([key, expressions]) => {\n if (key === LogicalOperators.Or || key === LogicalOperators.And) {\n const firstSubQuery = (expressions as Query[])[0];\n const fieldId = Object.keys(firstSubQuery)[0];\n // 由于 ConditionType.Between 这边的 operator 是两个,由于需要支持选择一个的时候也要显示出来,这边不能将选择器合并成str吐出去\n const compareOperators = Object.keys(firstSubQuery[fieldId]);\n const compareOperator =\n compareOperators.length > 1\n ? compareOperators\n : compareOperators.join(\"\");\n let subQueryValue = \"\";\n let targetField;\n if (ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE) {\n targetField = this.props.fieldToShow?.find(\n (fieldItem) => Object.keys(fieldItem)[0] === fieldId\n );\n }\n if (!isNil(targetField)) {\n // 二维数组会有问题,\n subQueryValue = isArray(targetField[fieldId])\n ? targetField[fieldId]\n .map((item) => (isArray(item) ? item.join(\" \") : item))\n .join(\"\")\n : (targetField[fieldId] as any);\n } else {\n subQueryValue = (expressions as Query[])\n .map((query) => {\n const targetValue = (\n query[fieldId] as Record<ComparisonOperators, any>\n )[compareOperator as ComparisonOperators];\n if (\n compareOperator === ComparisonOperators.Like ||\n compareOperator === ComparisonOperators.NotLike\n ) {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `${targetValue[0]}\"${targetValue.slice(\n 1,\n targetValue.length - 1\n )}\"${targetValue[targetValue.length - 1]}`\n : targetValue;\n }\n // 对于时间选择器有两个的,不用特意将值转换成str,因为不需要这里的值\n else {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `\"${targetValue}\"`\n : targetValue;\n }\n })\n .join(\" \");\n }\n key = fieldId;\n expressions = Array.isArray(compareOperator)\n ? firstSubQuery[fieldId]\n : {\n [compareOperator]: subQueryValue,\n };\n }\n\n fieldQueryOperatorExpressionsMap[key] =\n expressions as QueryOperatorExpressions;\n });\n });\n }\n forEachAvailableFields(\n this.props.modelData,\n (attr) => {\n const attrValue: Partial<CmdbModels.ModelObjectAttrValue> & {\n isStruct?: boolean;\n } & { isClusterType?: boolean } = {};\n\n switch (attr.value.type) {\n case ModelAttributeValueType.STRUCT:\n case ModelAttributeValueType.STRUCT_LIST:\n attrValue.type = ModelAttributeValueType.STRING;\n attrValue.struct_define = attr.value.struct_define;\n attrValue.isStruct = true;\n break;\n case ModelAttributeValueType.ENUM:\n case ModelAttributeValueType.ENUMS:\n attrValue.type = attr.value.type;\n attrValue.regex = attr.value.regex;\n break;\n default:\n attrValue.type = attr.value.type;\n }\n\n fields.push({\n id: attr.id,\n name: attr.name,\n attrValue,\n isRelation: false,\n ...getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap,\n attr.id,\n attr.value.type as ModelAttributeValueType\n ),\n });\n },\n (relation, sides) => {\n const relationObject =\n this.props.idObjectMap[\n relation[`${sides.that}_object_id` as RelationObjectIdKeys]\n ];\n const showKeys = getInstanceNameKeys(relationObject);\n showKeys.forEach((showKey, index) => {\n const nameOfShowKey =\n find(relationObject?.attrList, [\"id\", showKey])?.name ?? showKey;\n const id = `${\n relation[`${sides.this}_id` as RelationIdKeys]\n }.${showKey}`;\n const type = ModelAttributeValueType.STRING;\n\n fields.push({\n id,\n name: `${\n relation[`${sides.this}_name` as RelationNameKeys]\n }(${nameOfShowKey})`,\n attrValue: { type },\n isRelation: true,\n relationSideId: relation[`${sides.this}_id` as RelationIdKeys],\n ...getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap,\n id,\n type,\n true,\n relation[`${sides.this}_id` as RelationNameKeys]\n ),\n });\n });\n },\n this.props.fieldIds\n );\n return { fields };\n }\n\n setFormFieldValues(fields: Field[]): void {\n const values = fields.reduce<{ [key: string]: any }>((acc, field) => {\n field.values.map((value, valueIndex) => {\n const operation = field.currentCondition.operations[valueIndex];\n acc[`${field.id}[${valueIndex}]`] =\n operation.fixedValue === undefined ? value : \"\";\n });\n return acc;\n }, {});\n this.props.form.setFieldsValue(values);\n }\n\n onValueChange = (\n value: any,\n valueIndex: number,\n field: Field,\n fieldIndex: number\n ) => {\n this.setState({\n fields: update(this.state.fields, {\n [fieldIndex]: { values: { [valueIndex]: { $set: value } } },\n }),\n });\n };\n\n onConditionChange = (\n value: ConditionType,\n field: Field,\n fieldIndex: number\n ) => {\n const hasFixedValues = field.currentCondition.operations.some(\n (operation) => operation.fixedValue !== undefined\n );\n\n const condition = field.availableConditions.find(\n (condition) => condition.type === value\n );\n let newValues = condition.operations.map((operation) =>\n operation.fixedValue !== undefined ? operation.fixedValue : null\n );\n if (\n newValues.every((value) => value === null) &&\n !hasFixedValues &&\n this.state.fields[fieldIndex].values.length === newValues.length\n ) {\n newValues = this.state.fields[fieldIndex].values;\n }\n\n let newFields = update(this.state.fields, {\n [fieldIndex]: {\n currentCondition: { $set: condition },\n values: {\n $set: newValues,\n },\n },\n });\n\n const relatedFieldIndex = newFields.findIndex(\n (f) =>\n f.isRelation &&\n f.relationSideId === field.relationSideId &&\n f.id !== field.id\n );\n if (relatedFieldIndex !== -1) {\n const relatedField = newFields[relatedFieldIndex];\n const relatedCondition = relatedField.availableConditions.find(\n (condition) => condition.type === value\n );\n if (condition.operations[0].operator === ElementOperators.Exists) {\n newFields = update(newFields, {\n [relatedFieldIndex]: {\n currentCondition: { $set: relatedCondition },\n values: {\n $set: [null],\n },\n },\n });\n } else if (\n relatedField.currentCondition.operations[0].operator ===\n ElementOperators.Exists\n ) {\n newFields = update(newFields, {\n [relatedFieldIndex]: {\n currentCondition: { $set: relatedField.availableConditions[0] },\n values: {\n $set: [null],\n },\n },\n });\n }\n }\n\n this.setState({\n fields: newFields,\n });\n\n this.setFormFieldValues(newFields);\n };\n\n getFields() {\n const { getFieldDecorator } = this.props.form;\n const hasBetween = this.state.fields.some((field) =>\n [\n ModelAttributeValueType.IP,\n ModelAttributeValueType.DATE,\n ModelAttributeValueType.DATETIME,\n ].includes(field.attrValue.type as ModelAttributeValueType)\n );\n return this.state.fields.map((field, fieldIndex) => {\n let type: string;\n let style: React.CSSProperties;\n let attrValue: any = field.attrValue;\n let multiSelect = false;\n switch (field.attrValue.type) {\n case ModelAttributeValueType.INTEGER:\n case ModelAttributeValueType.FLOAT:\n attrValue = {\n type: ModelAttributeValueType.STRING,\n };\n break;\n case ModelAttributeValueType.ENUM:\n case ModelAttributeValueType.ENUMS:\n type = FormControlTypeEnum.SELECT;\n multiSelect = true;\n break;\n case ModelAttributeValueType.DATETIME:\n style = { minWidth: \"auto\" };\n break;\n }\n //高级搜索这里即使是json格式,也用input输入框进行搜索\n if ((attrValue as any).type === \"json\") {\n attrValue = { ...attrValue, type: \"str\" };\n }\n return (\n <Col span={hasBetween ? 12 : 8} key={field.id}>\n <Form.Item label={field.name}>\n <Input.Group className={styles.conditionInputGroup} compact>\n <Select\n dropdownMatchSelectWidth={false}\n value={field.currentCondition.type}\n onChange={(value: ConditionType) =>\n this.onConditionChange(value, field, fieldIndex)\n }\n disabled={field.disabled}\n >\n {field.availableConditions.map((condition) => (\n <Select.Option value={condition.type} key={condition.type}>\n {condition.label}\n </Select.Option>\n ))}\n </Select>\n {field.values.map((value, valueIndex) => {\n const operation = field.currentCondition.operations[valueIndex];\n\n return (\n <React.Fragment\n key={`${field.currentCondition.type}-${operation.operator}`}\n >\n {valueIndex > 0 && (\n <Input\n className={styles.separatorInput}\n placeholder=\"~\"\n disabled\n />\n )}\n {getFieldDecorator(`${field.id}[${valueIndex}]`, {\n initialValue:\n operation.fixedValue === undefined ? value : \"\",\n })(\n operation.fixedValue === undefined && !field.disabled ? (\n <ModelAttributeFormControl\n type={type}\n attribute={{\n id: field.id,\n name: field.name,\n value: attrValue,\n }}\n objectId={this.props.modelData.objectId}\n multiSelect={multiSelect}\n onChange={(value: any) =>\n this.onValueChange(\n value,\n valueIndex,\n field,\n fieldIndex\n )\n }\n className={styles.conditionInput}\n style={style}\n />\n ) : (\n <Input disabled />\n )\n )}\n </React.Fragment>\n );\n })}\n </Input.Group>\n </Form.Item>\n </Col>\n );\n });\n }\n\n handleSearch = (e: FormEvent<any>): void => {\n e.preventDefault();\n if (this.props?.autoSearch) this.props.autoSearch(this.state.fields);\n if (this.props.onSearch) {\n // 当过滤字段为relation并且过滤条件为ElementOperators.Exists的时候,发起后台请求的搜索queries与负责前端展示的query不同。需要额外处理。\n let queries: Query[] = [];\n let queriesToShow: Query[] = [];\n const fieldToShow: Record<string, any[]>[] = [];\n this.state.fields.forEach((field) => {\n const expressions: QueryOperatorExpressions = {};\n let fieldQuery: Query = { [field.id]: expressions };\n let fieldQueryToShow: Query = { [field.id]: expressions };\n let hasValue = false;\n let structQueryId: string[];\n const isStruct = !!(field.attrValue as any).isStruct;\n if (isStruct) {\n structQueryId = field.attrValue.struct_define.map(\n (struct_item) => `${field.id}.${struct_item.id}`\n );\n }\n field.values.forEach((value, index) => {\n const operation = field.currentCondition.operations[index];\n const fieldId =\n field.isRelation && ElementOperators.Exists === operation.operator\n ? field.relationSideId\n : field.id;\n fieldQuery = { [fieldId]: expressions };\n\n const fieldIdToShow = field.id;\n fieldQueryToShow = { [fieldIdToShow]: expressions };\n\n if (\n value !== null &&\n value !== \"\" &&\n !(Array.isArray(value) && value.length === 0)\n ) {\n const multiValueSearchOperator = multiValueSearchOperators.find(\n (operator) => operator.comparisonOperator === operation.operator\n );\n if (multiValueSearchOperator) {\n let values: any[];\n if (\n field.attrValue.type === ModelAttributeValueType.ENUM ||\n field.attrValue.type === ModelAttributeValueType.ARR\n ) {\n values = value;\n } else if (typeof value === \"string\") {\n if (\n !ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE ||\n !value.includes('\"')\n ) {\n values = value\n .trim()\n .split(/\\s+/)\n .map((value) => convertValue(field.attrValue.type, value));\n } else {\n values = processAttrValueWithQuote(value, []);\n }\n } else {\n values = [value];\n }\n if (values.length) {\n if (isStruct) {\n fieldQuery = {\n [multiValueSearchOperator.logicalOperator]: flatten(\n values.map((value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n\n return structQueryId.map(\n (structId: string | number) => ({\n [structId]: {\n [operation.operator]: value,\n },\n })\n );\n })\n ),\n };\n } else {\n fieldQuery = {\n [multiValueSearchOperator.logicalOperator]: values.map(\n (value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n return {\n [fieldId]: {\n [operation.operator]: value,\n },\n };\n }\n ),\n };\n }\n fieldQueryToShow = {\n [multiValueSearchOperator.logicalOperator]: values.map(\n (value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n return {\n [fieldIdToShow]: {\n [operation.operator]: value,\n },\n };\n }\n ),\n };\n hasValue = true;\n fieldToShow.push({ [field.id]: field.values });\n }\n } else {\n value = convertValue(field.attrValue.type, value);\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n expressions[operation.operator] = value;\n hasValue = true;\n fieldToShow.push({ [field.id]: field.values });\n }\n }\n });\n if (hasValue) {\n queries.push(fieldQuery);\n queriesToShow.push(fieldQueryToShow);\n }\n });\n if (queries.length === 0) {\n queries = undefined;\n queriesToShow = undefined;\n }\n if (!isEqual(this.props.q, queries)) {\n this.props.onSearch(queries, queriesToShow, fieldToShow);\n }\n }\n };\n\n handleReset = () => {\n if (this.props.autoSearch) this.props.autoSearch([]);\n this.props.onSearch([], [], []);\n this.props.form.resetFields();\n };\n\n render(): React.ReactNode {\n return (\n <div className={styles.advancedSearch}>\n <Form\n layout=\"vertical\"\n className={styles.advancedSearchForm}\n onSubmit={this.handleSearch}\n >\n <Row gutter={50}>{this.getFields()}</Row>\n <Row>\n <Col span={24} style={{ textAlign: \"right\" }}>\n <Button\n type=\"primary\"\n htmlType=\"submit\"\n data-testid=\"submit-button\"\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.SEARCH}`)}\n </Button>\n <Button\n style={{ marginLeft: 8 }}\n onClick={this.handleReset}\n data-testid=\"reset-button\"\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.RESET}`)}\n </Button>\n </Col>\n </Row>\n </Form>\n </div>\n );\n }\n}\n\nexport const AdvancedSearch = Form.create<AdvancedSearchFormProps>({\n name: \"advanced_search\",\n})(AdvancedSearchForm);\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/instance-list-table/AdvancedSearchCondition.tsx"],"names":["React","useReducer","i18n","K","NS_LIBS_CMDB_INSTANCES","LogicalOperators","DynamicSearch","isEmpty","uniqueId","startsWith","Tag","styles","newKey","fieldIds","aq","key","join","length","reducer","prevState","updatedProperty","formatAqToShow","newAqToShow","forEach","query","aqToShow","Object","entries","map","expressions","newExpressions","Or","And","translateAqConditions","fields","conditions","queries","keys","value","values","attr","find","v","id","contain","t","OPERATOR_CONTAIN_DEFINE","condition","name","replace","curCondition","attrId","valuesStr","push","AdvancedSearchCondition","props","state","setState","undefined","onAdvancedSearch","queriesToShow","fieldToShow","onAdvancedSearchCloseGen","isValueEqual","filterAq","filter","specialQueryHandler","isSpecial","some","formatAqQuery","querys","isAq","isKey","isStart","filteredSubQueries","isInstanceFilterForm","advancedSearchWrapper","marginBottom","hideSearchConditions","searchConditions","CURRENT_FILTER_REQUIREMENTS"],"mappings":"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","sourcesContent":["import React, { useReducer } from \"react\";\nimport i18n from \"i18next\";\nimport { K, NS_LIBS_CMDB_INSTANCES } from \"../i18n/constants\";\nimport { Query, LogicalOperators } from \"@next-libs/cmdb-utils\";\nimport { DynamicSearch } from \"./DynamicSearch\";\nimport { isEmpty, uniqueId, startsWith } from \"lodash\";\nimport { Tag } from \"antd\";\nimport styles from \"./AdvancedSearchCondition.module.css\";\nexport interface AdvancedSearchConditionProps {\n fields: Record<string, any>[];\n onAdvancedSearch?(queries: Query[]): void;\n isInstanceFilterForm?: boolean;\n aq?: Query[];\n aqToShow?: Query[];\n hideSearchConditions?: boolean;\n}\n\ninterface AdvancedSearchConditionState {\n aq: Query[];\n aqToShow?: Query[];\n fieldIds: string[];\n fieldToShow?: Record<string, any[]>[];\n fields?: Record<string, any>[];\n}\n\n/* istanbul ignore next */\nfunction newKey(fieldIds: string[], aq: Query[]): string {\n let key = \"\";\n if (!isEmpty(fieldIds)) {\n key += fieldIds.join(\"-\");\n }\n if (!isEmpty(aq)) {\n key += `-${aq.length}`;\n }\n return key;\n}\n/* istanbul ignore next */\nconst reducer = (\n prevState: AdvancedSearchConditionState,\n updatedProperty: Partial<AdvancedSearchConditionState>\n): AdvancedSearchConditionState => {\n return {\n ...prevState,\n ...updatedProperty,\n };\n};\n\nexport const formatAqToShow = (aq: Query[]) => {\n let newAqToShow: any[] = [];\n if (aq) {\n aq.forEach((query) => {\n const aqToShow = Object.entries(query).map(([key, expressions]) => {\n let newExpressions: any[] = [];\n if (key === LogicalOperators.Or || key === LogicalOperators.And) {\n newExpressions = [...newExpressions, ...(expressions as Query[])];\n\n return { [key]: newExpressions };\n } else {\n return query;\n }\n });\n newAqToShow = [...newAqToShow, ...aqToShow];\n });\n return newAqToShow;\n }\n return newAqToShow;\n};\n\nfunction translateAqConditions(\n aq: Query[],\n fields: any[]\n): { attrId: string; condition: string; valuesStr: string }[] {\n const conditions: {\n attrId: string;\n condition: string;\n valuesStr: string;\n }[] = [];\n if (!isEmpty(aq)) {\n for (const query of aq) {\n let queries: Query[] = [query];\n if (\n Object.keys(query)[0] === LogicalOperators.Or ||\n Object.keys(query)[0] === LogicalOperators.And\n ) {\n queries = query[Object.keys(query)[0]] as Query[];\n }\n queries.forEach((query) => {\n const key = Object.keys(query)[0];\n const value = Object.values(query)[0];\n const attr = fields.find((v) => v.id === key);\n const contain = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_CONTAIN_DEFINE}`\n );\n const condition = `${attr?.name}:${contain}\"${Object.values(\n value\n )[0].replace(/%/g, \"\")}\"`;\n const curCondition = {\n attrId: key,\n condition,\n valuesStr: Object.values(value)[0],\n };\n conditions.push(curCondition);\n });\n }\n }\n return conditions;\n}\n\nexport function AdvancedSearchCondition(\n props: AdvancedSearchConditionProps\n): React.ReactElement {\n const [state, setState] = useReducer(reducer, undefined, () => ({\n aq: formatAqToShow(props.aq),\n aqToShow: props.aqToShow || formatAqToShow(props.aq),\n fieldIds: (props.fields || []).map((v) => v.id),\n fields: props.fields || [],\n }));\n\n const onAdvancedSearch = (\n queries: Query[],\n queriesToShow: Query[],\n fieldToShow: Record<string, any[]>[]\n ) => {\n setState({\n aq: queries,\n fieldToShow,\n aqToShow: queriesToShow,\n });\n props.onAdvancedSearch?.(queries);\n };\n\n /* istanbul ignore next */\n const onAdvancedSearchCloseGen = (attrId: string, valuesStr: string) => {\n return () => {\n const queries: Query[] = [];\n const queriesToShow: Query[] = [];\n const isValueEqual = (query: any) =>\n query[attrId]\n ? Object.values(query[attrId]).join(\" \") !== valuesStr\n : false;\n const filterAq = (queries: any[]) =>\n queries.filter((v: any) => isValueEqual(v));\n const specialQueryHandler = (query: any, key: any, queries: Query[]) => {\n // $exists $gte $lte 针对为空,不为空,时间范围特殊处理\n const isSpecial = Object.keys(query[key] as Query[]).some(\n (v) => v === \"$exists\" || v === \"$gte\" || v === \"$lte\"\n );\n if (isSpecial) {\n return;\n }\n queries.push(query);\n };\n const formatAqQuery = (\n querys: any[],\n queries: Query[],\n isAq: boolean\n ) => {\n querys.forEach((query) => {\n const key = Object.keys(query)[0];\n const isKey = key !== attrId;\n const isStart = isAq\n ? isKey && !startsWith(attrId, `${key}.`)\n : isKey;\n if (\n (key === \"$or\" || key === \"$and\") &&\n Object.keys((query[key] as Query[])[0])[0] === attrId\n ) {\n const filteredSubQueries = filterAq(query[key] as Query[]);\n if (filteredSubQueries.length > 0) {\n queries.push({\n [key]: filteredSubQueries,\n });\n }\n } else if (isStart) {\n queries.push(query);\n } else if (\n props.isInstanceFilterForm &&\n key === attrId &&\n isValueEqual(query)\n ) {\n specialQueryHandler(query, key, queries);\n }\n });\n };\n formatAqQuery(state.aq, queries, true);\n formatAqQuery(state.aqToShow, queriesToShow, false);\n setState({\n aq: queries,\n aqToShow: queriesToShow,\n });\n props.onAdvancedSearch?.(queries);\n };\n };\n\n const conditions = translateAqConditions(state.aqToShow, state.fields);\n\n return (\n <div className={styles.advancedSearchWrapper}>\n <div style={{ marginBottom: \"18px\" }}>\n <DynamicSearch\n fields={state.fields}\n onSearch={onAdvancedSearch}\n key={newKey(state.fieldIds, state.aq)}\n q={state.aqToShow}\n fieldToShow={state.fieldToShow}\n />\n </div>\n {!props.hideSearchConditions && !isEmpty(conditions) && (\n <div className={styles.searchConditions}>\n <span>\n {i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.CURRENT_FILTER_REQUIREMENTS}`\n )}\n </span>\n {conditions.map((condition) => (\n <Tag\n key={`${condition.attrId}${condition.valuesStr}-${uniqueId()}`}\n closable\n onClose={onAdvancedSearchCloseGen(\n condition.attrId,\n condition.valuesStr\n )}\n >\n {condition.condition}\n </Tag>\n ))}\n </div>\n )}\n </div>\n );\n}\n"],"file":"AdvancedSearchCondition.js"}
|
|
1
|
+
{"version":3,"file":"AdvancedSearchCondition.js","names":["React","useReducer","i18n","K","NS_LIBS_CMDB_INSTANCES","LogicalOperators","DynamicSearch","isEmpty","uniqueId","startsWith","Tag","styles","newKey","fieldIds","aq","key","join","length","reducer","prevState","updatedProperty","formatAqToShow","newAqToShow","forEach","query","aqToShow","Object","entries","map","expressions","newExpressions","Or","And","translateAqConditions","fields","conditions","queries","keys","value","values","attr","find","v","id","contain","t","OPERATOR_CONTAIN_DEFINE","condition","name","replace","curCondition","attrId","valuesStr","push","AdvancedSearchCondition","props","state","setState","undefined","onAdvancedSearch","queriesToShow","fieldToShow","onAdvancedSearchCloseGen","isValueEqual","filterAq","filter","specialQueryHandler","isSpecial","some","formatAqQuery","querys","isAq","isKey","isStart","filteredSubQueries","isInstanceFilterForm","advancedSearchWrapper","marginBottom","hideSearchConditions","searchConditions","CURRENT_FILTER_REQUIREMENTS"],"sources":["../../../src/instance-list-table/AdvancedSearchCondition.tsx"],"sourcesContent":["import React, { useReducer } from \"react\";\nimport i18n from \"i18next\";\nimport { K, NS_LIBS_CMDB_INSTANCES } from \"../i18n/constants\";\nimport { Query, LogicalOperators } from \"@next-libs/cmdb-utils\";\nimport { DynamicSearch } from \"./DynamicSearch\";\nimport { isEmpty, uniqueId, startsWith } from \"lodash\";\nimport { Tag } from \"antd\";\nimport styles from \"./AdvancedSearchCondition.module.css\";\nexport interface AdvancedSearchConditionProps {\n fields: Record<string, any>[];\n onAdvancedSearch?(queries: Query[]): void;\n isInstanceFilterForm?: boolean;\n aq?: Query[];\n aqToShow?: Query[];\n hideSearchConditions?: boolean;\n}\n\ninterface AdvancedSearchConditionState {\n aq: Query[];\n aqToShow?: Query[];\n fieldIds: string[];\n fieldToShow?: Record<string, any[]>[];\n fields?: Record<string, any>[];\n}\n\n/* istanbul ignore next */\nfunction newKey(fieldIds: string[], aq: Query[]): string {\n let key = \"\";\n if (!isEmpty(fieldIds)) {\n key += fieldIds.join(\"-\");\n }\n if (!isEmpty(aq)) {\n key += `-${aq.length}`;\n }\n return key;\n}\n/* istanbul ignore next */\nconst reducer = (\n prevState: AdvancedSearchConditionState,\n updatedProperty: Partial<AdvancedSearchConditionState>\n): AdvancedSearchConditionState => {\n return {\n ...prevState,\n ...updatedProperty,\n };\n};\n\nexport const formatAqToShow = (aq: Query[]) => {\n let newAqToShow: any[] = [];\n if (aq) {\n aq.forEach((query) => {\n const aqToShow = Object.entries(query).map(([key, expressions]) => {\n let newExpressions: any[] = [];\n if (key === LogicalOperators.Or || key === LogicalOperators.And) {\n newExpressions = [...newExpressions, ...(expressions as Query[])];\n\n return { [key]: newExpressions };\n } else {\n return query;\n }\n });\n newAqToShow = [...newAqToShow, ...aqToShow];\n });\n return newAqToShow;\n }\n return newAqToShow;\n};\n\nfunction translateAqConditions(\n aq: Query[],\n fields: any[]\n): { attrId: string; condition: string; valuesStr: string }[] {\n const conditions: {\n attrId: string;\n condition: string;\n valuesStr: string;\n }[] = [];\n if (!isEmpty(aq)) {\n for (const query of aq) {\n let queries: Query[] = [query];\n if (\n Object.keys(query)[0] === LogicalOperators.Or ||\n Object.keys(query)[0] === LogicalOperators.And\n ) {\n queries = query[Object.keys(query)[0]] as Query[];\n }\n queries.forEach((query) => {\n const key = Object.keys(query)[0];\n const value = Object.values(query)[0];\n const attr = fields.find((v) => v.id === key);\n const contain = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_CONTAIN_DEFINE}`\n );\n const condition = `${attr?.name}:${contain}\"${Object.values(\n value\n )[0].replace(/%/g, \"\")}\"`;\n const curCondition = {\n attrId: key,\n condition,\n valuesStr: Object.values(value)[0],\n };\n conditions.push(curCondition);\n });\n }\n }\n return conditions;\n}\n\nexport function AdvancedSearchCondition(\n props: AdvancedSearchConditionProps\n): React.ReactElement {\n const [state, setState] = useReducer(reducer, undefined, () => ({\n aq: formatAqToShow(props.aq),\n aqToShow: props.aqToShow || formatAqToShow(props.aq),\n fieldIds: (props.fields || []).map((v) => v.id),\n fields: props.fields || [],\n }));\n\n const onAdvancedSearch = (\n queries: Query[],\n queriesToShow: Query[],\n fieldToShow: Record<string, any[]>[]\n ) => {\n setState({\n aq: queries,\n fieldToShow,\n aqToShow: queriesToShow,\n });\n props.onAdvancedSearch?.(queries);\n };\n\n /* istanbul ignore next */\n const onAdvancedSearchCloseGen = (attrId: string, valuesStr: string) => {\n return () => {\n const queries: Query[] = [];\n const queriesToShow: Query[] = [];\n const isValueEqual = (query: any) =>\n query[attrId]\n ? Object.values(query[attrId]).join(\" \") !== valuesStr\n : false;\n const filterAq = (queries: any[]) =>\n queries.filter((v: any) => isValueEqual(v));\n const specialQueryHandler = (query: any, key: any, queries: Query[]) => {\n // $exists $gte $lte 针对为空,不为空,时间范围特殊处理\n const isSpecial = Object.keys(query[key] as Query[]).some(\n (v) => v === \"$exists\" || v === \"$gte\" || v === \"$lte\"\n );\n if (isSpecial) {\n return;\n }\n queries.push(query);\n };\n const formatAqQuery = (\n querys: any[],\n queries: Query[],\n isAq: boolean\n ) => {\n querys.forEach((query) => {\n const key = Object.keys(query)[0];\n const isKey = key !== attrId;\n const isStart = isAq\n ? isKey && !startsWith(attrId, `${key}.`)\n : isKey;\n if (\n (key === \"$or\" || key === \"$and\") &&\n Object.keys((query[key] as Query[])[0])[0] === attrId\n ) {\n const filteredSubQueries = filterAq(query[key] as Query[]);\n if (filteredSubQueries.length > 0) {\n queries.push({\n [key]: filteredSubQueries,\n });\n }\n } else if (isStart) {\n queries.push(query);\n } else if (\n props.isInstanceFilterForm &&\n key === attrId &&\n isValueEqual(query)\n ) {\n specialQueryHandler(query, key, queries);\n }\n });\n };\n formatAqQuery(state.aq, queries, true);\n formatAqQuery(state.aqToShow, queriesToShow, false);\n setState({\n aq: queries,\n aqToShow: queriesToShow,\n });\n props.onAdvancedSearch?.(queries);\n };\n };\n\n const conditions = translateAqConditions(state.aqToShow, state.fields);\n\n return (\n <div className={styles.advancedSearchWrapper}>\n <div style={{ marginBottom: \"18px\" }}>\n <DynamicSearch\n fields={state.fields}\n onSearch={onAdvancedSearch}\n key={newKey(state.fieldIds, state.aq)}\n q={state.aqToShow}\n fieldToShow={state.fieldToShow}\n />\n </div>\n {!props.hideSearchConditions && !isEmpty(conditions) && (\n <div className={styles.searchConditions}>\n <span>\n {i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.CURRENT_FILTER_REQUIREMENTS}`\n )}\n </span>\n {conditions.map((condition) => (\n <Tag\n key={`${condition.attrId}${condition.valuesStr}-${uniqueId()}`}\n closable\n onClose={onAdvancedSearchCloseGen(\n condition.attrId,\n condition.valuesStr\n )}\n >\n {condition.condition}\n </Tag>\n ))}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/instance-list-table/DisplaySettings.tsx"],"names":["React","debounce","remove","without","get","isEmpty","extraFieldAttrs","Checkbox","Col","Divider","Input","Row","getBatchEditableFields","CMDB_RESOURCE_FIELDS_SETTINGS","i18n","K","NS_LIBS_CMDB_INSTANCES","DisplaySettings","Component","constructor","props","filteredList","attrAndRelationList","q","state","trim","toLowerCase","filter","attr","name","includes","setState","event","value","target","debounceHandleSearch","modelData","hideColumns","view","hide_columns","ignoredFields","objectId","forEach","hideColumn","id","map","attribute","nextFields","currentFields","slice","extraDisabledFieldSet","Set","extraDisabledFields","filterColTag","componentDidUpdate","prevProps","handleChecked","fieldsKey","fields","checked","concat","onChange","renderCheckbox","field","disabled","extraDisabledField","has","padding","stopPropagation","width","wordBreak","render","extraAttrIds","extraFieldAttr","attrs","extraAttrs","marginTop","t","FIELD_SETTINGS","SEARCH_BY_FIELD_NAME","handleSearchChange","minHeight","maxHeight","overflow","length"],"mappings":"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","sourcesContent":["import React from \"react\";\nimport { debounce, remove, without, get, isEmpty } from \"lodash\";\nimport { extraFieldAttrs } from \"./constants\";\nimport { Checkbox, Col, Divider, Input, Row } from \"antd\";\nimport {\n getBatchEditableFields,\n CMDB_RESOURCE_FIELDS_SETTINGS,\n} from \"@next-libs/cmdb-utils\";\nimport { CmdbModels } from \"@next-sdk/cmdb-sdk\";\nimport i18n from \"i18next\";\nimport { K, NS_LIBS_CMDB_INSTANCES } from \"../i18n/constants\";\nexport interface DisplaySettingsProps {\n currentFields: string[];\n modelData: Partial<CmdbModels.ModelCmdbObject>;\n objectId?: string;\n extraDisabledField?: string;\n extraDisabledFields?: string[];\n onChange?(fields: string[]): void;\n}\n\ninterface DisplaySettingsState {\n nextFields: string[];\n q: string;\n filteredList: any;\n extraDisabledFieldSet: Set<string>;\n}\n\nexport class DisplaySettings extends React.Component<\n DisplaySettingsProps,\n DisplaySettingsState\n> {\n debounceHandleSearch: () => void;\n attrAndRelationList: { id: string; name: string }[] = [];\n\n constructor(props: DisplaySettingsProps) {\n super(props);\n const attrAndRelationList = getBatchEditableFields(this.props.modelData);\n let hideColumns = this.props.modelData.view.hide_columns || [];\n const ignoredFields = get(\n CMDB_RESOURCE_FIELDS_SETTINGS,\n `ignoredFields.${this.props.modelData.objectId}`,\n []\n );\n hideColumns = [...hideColumns, ...ignoredFields];\n\n if (!isEmpty(hideColumns)) {\n hideColumns.forEach((hideColumn: string) => {\n remove(attrAndRelationList, (attr) => attr.id === hideColumn);\n });\n }\n\n this.attrAndRelationList = attrAndRelationList.map((attribute: any) => ({\n id: attribute.id,\n name: attribute.name,\n }));\n\n this.state = {\n nextFields: props.currentFields ? props.currentFields.slice() : [],\n q: \"\",\n filteredList: this.attrAndRelationList,\n extraDisabledFieldSet: new Set(props.extraDisabledFields),\n };\n this.debounceHandleSearch = debounce(this.filterColTag, 300);\n }\n\n componentDidUpdate(prevProps: DisplaySettingsProps) {\n if (this.props.currentFields !== prevProps.currentFields) {\n this.setState({\n nextFields: this.props.currentFields\n ? this.props.currentFields.slice()\n : [],\n });\n }\n\n if (this.props.extraDisabledFields !== prevProps.extraDisabledFields) {\n this.setState({\n extraDisabledFieldSet: new Set(this.props.extraDisabledFields),\n });\n }\n }\n\n handleChecked(event: any, attr: any) {\n const fieldsKey = \"nextFields\";\n const fields = event.target.checked\n ? this.state[fieldsKey].concat(attr.id)\n : without(this.state[fieldsKey], attr.id);\n\n this.setState({ [fieldsKey]: fields });\n this.props.onChange?.(fields);\n }\n\n renderCheckbox(attr: any, field: \"nextFields\" | \"otherFields\") {\n const fieldsKey = \"nextFields\";\n const checked = this.state[fieldsKey].includes(attr.id);\n const disabled =\n attr.id === this.props.extraDisabledField ||\n this.state.extraDisabledFieldSet.has(attr.id);\n return (\n <Col\n key={attr.id}\n span={8}\n style={{ padding: 5 }}\n onClick={(event) => event.stopPropagation()}\n >\n <Checkbox\n name={field}\n style={{\n width: \"100%\",\n wordBreak: \"break-all\",\n }}\n checked={checked}\n disabled={disabled}\n onChange={(event) => this.handleChecked(event, attr)}\n data-testid={`${attr.id}-checkbox`}\n >\n {attr.name}\n </Checkbox>\n </Col>\n );\n }\n\n filterColTag = () => {\n let filteredList = this.attrAndRelationList;\n const q = this.state.q.trim().toLowerCase();\n if (q) {\n filteredList = filteredList.filter((attr) => {\n return attr.name.toLowerCase().includes(q);\n });\n }\n this.setState({\n filteredList,\n });\n };\n\n handleSearchChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const value = event.target.value;\n this.setState({\n q: value,\n });\n this.debounceHandleSearch();\n };\n\n render() {\n const filteredList = this.state.filteredList;\n const extraAttrIds = extraFieldAttrs.map(\n (extraFieldAttr) => extraFieldAttr.id\n );\n const attrs = filteredList.filter(\n (attr: any) => !extraAttrIds.includes(attr.id)\n );\n const extraAttrs = filteredList.filter((attr: any) =>\n extraAttrIds.includes(attr.id)\n );\n\n return (\n <>\n <Divider orientation=\"left\" plain style={{ marginTop: 0 }}>\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.FIELD_SETTINGS}`)}\n </Divider>\n <div>\n <Input.Search\n value={this.state.q}\n placeholder={i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.SEARCH_BY_FIELD_NAME}`\n )}\n onChange={this.handleSearchChange}\n style={{ width: 200 }}\n data-testid=\"search-input\"\n />\n </div>\n <div\n style={{\n marginTop: 15,\n minHeight: 200,\n maxHeight: 500,\n overflow: \"auto\",\n }}\n className=\"nextFields\"\n >\n <Row>\n {attrs.map((attr: any) => this.renderCheckbox(attr, \"nextFields\"))}\n {extraAttrs.length > 0 ? (\n <>\n <Divider />\n {extraAttrs.map((attr: any) =>\n this.renderCheckbox(attr, \"nextFields\")\n )}\n </>\n ) : null}\n </Row>\n </div>\n </>\n );\n }\n}\n"],"file":"DisplaySettings.js"}
|
|
1
|
+
{"version":3,"file":"DisplaySettings.js","names":["React","debounce","remove","without","get","isEmpty","extraFieldAttrs","Checkbox","Col","Divider","Input","Row","getBatchEditableFields","CMDB_RESOURCE_FIELDS_SETTINGS","i18n","K","NS_LIBS_CMDB_INSTANCES","DisplaySettings","Component","constructor","props","filteredList","attrAndRelationList","q","state","trim","toLowerCase","filter","attr","name","includes","setState","event","value","target","debounceHandleSearch","modelData","hideColumns","view","hide_columns","ignoredFields","objectId","forEach","hideColumn","id","map","attribute","nextFields","currentFields","slice","extraDisabledFieldSet","Set","extraDisabledFields","filterColTag","componentDidUpdate","prevProps","handleChecked","fieldsKey","fields","checked","concat","onChange","renderCheckbox","field","disabled","extraDisabledField","has","padding","stopPropagation","width","wordBreak","render","extraAttrIds","extraFieldAttr","attrs","extraAttrs","marginTop","t","FIELD_SETTINGS","SEARCH_BY_FIELD_NAME","handleSearchChange","minHeight","maxHeight","overflow","length"],"sources":["../../../src/instance-list-table/DisplaySettings.tsx"],"sourcesContent":["import React from \"react\";\nimport { debounce, remove, without, get, isEmpty } from \"lodash\";\nimport { extraFieldAttrs } from \"./constants\";\nimport { Checkbox, Col, Divider, Input, Row } from \"antd\";\nimport {\n getBatchEditableFields,\n CMDB_RESOURCE_FIELDS_SETTINGS,\n} from \"@next-libs/cmdb-utils\";\nimport { CmdbModels } from \"@next-sdk/cmdb-sdk\";\nimport i18n from \"i18next\";\nimport { K, NS_LIBS_CMDB_INSTANCES } from \"../i18n/constants\";\nexport interface DisplaySettingsProps {\n currentFields: string[];\n modelData: Partial<CmdbModels.ModelCmdbObject>;\n objectId?: string;\n extraDisabledField?: string;\n extraDisabledFields?: string[];\n onChange?(fields: string[]): void;\n}\n\ninterface DisplaySettingsState {\n nextFields: string[];\n q: string;\n filteredList: any;\n extraDisabledFieldSet: Set<string>;\n}\n\nexport class DisplaySettings extends React.Component<\n DisplaySettingsProps,\n DisplaySettingsState\n> {\n debounceHandleSearch: () => void;\n attrAndRelationList: { id: string; name: string }[] = [];\n\n constructor(props: DisplaySettingsProps) {\n super(props);\n const attrAndRelationList = getBatchEditableFields(this.props.modelData);\n let hideColumns = this.props.modelData.view.hide_columns || [];\n const ignoredFields = get(\n CMDB_RESOURCE_FIELDS_SETTINGS,\n `ignoredFields.${this.props.modelData.objectId}`,\n []\n );\n hideColumns = [...hideColumns, ...ignoredFields];\n\n if (!isEmpty(hideColumns)) {\n hideColumns.forEach((hideColumn: string) => {\n remove(attrAndRelationList, (attr) => attr.id === hideColumn);\n });\n }\n\n this.attrAndRelationList = attrAndRelationList.map((attribute: any) => ({\n id: attribute.id,\n name: attribute.name,\n }));\n\n this.state = {\n nextFields: props.currentFields ? props.currentFields.slice() : [],\n q: \"\",\n filteredList: this.attrAndRelationList,\n extraDisabledFieldSet: new Set(props.extraDisabledFields),\n };\n this.debounceHandleSearch = debounce(this.filterColTag, 300);\n }\n\n componentDidUpdate(prevProps: DisplaySettingsProps) {\n if (this.props.currentFields !== prevProps.currentFields) {\n this.setState({\n nextFields: this.props.currentFields\n ? this.props.currentFields.slice()\n : [],\n });\n }\n\n if (this.props.extraDisabledFields !== prevProps.extraDisabledFields) {\n this.setState({\n extraDisabledFieldSet: new Set(this.props.extraDisabledFields),\n });\n }\n }\n\n handleChecked(event: any, attr: any) {\n const fieldsKey = \"nextFields\";\n const fields = event.target.checked\n ? this.state[fieldsKey].concat(attr.id)\n : without(this.state[fieldsKey], attr.id);\n\n this.setState({ [fieldsKey]: fields });\n this.props.onChange?.(fields);\n }\n\n renderCheckbox(attr: any, field: \"nextFields\" | \"otherFields\") {\n const fieldsKey = \"nextFields\";\n const checked = this.state[fieldsKey].includes(attr.id);\n const disabled =\n attr.id === this.props.extraDisabledField ||\n this.state.extraDisabledFieldSet.has(attr.id);\n return (\n <Col\n key={attr.id}\n span={8}\n style={{ padding: 5 }}\n onClick={(event) => event.stopPropagation()}\n >\n <Checkbox\n name={field}\n style={{\n width: \"100%\",\n wordBreak: \"break-all\",\n }}\n checked={checked}\n disabled={disabled}\n onChange={(event) => this.handleChecked(event, attr)}\n data-testid={`${attr.id}-checkbox`}\n >\n {attr.name}\n </Checkbox>\n </Col>\n );\n }\n\n filterColTag = () => {\n let filteredList = this.attrAndRelationList;\n const q = this.state.q.trim().toLowerCase();\n if (q) {\n filteredList = filteredList.filter((attr) => {\n return attr.name.toLowerCase().includes(q);\n });\n }\n this.setState({\n filteredList,\n });\n };\n\n handleSearchChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const value = event.target.value;\n this.setState({\n q: value,\n });\n this.debounceHandleSearch();\n };\n\n render() {\n const filteredList = this.state.filteredList;\n const extraAttrIds = extraFieldAttrs.map(\n (extraFieldAttr) => extraFieldAttr.id\n );\n const attrs = filteredList.filter(\n (attr: any) => !extraAttrIds.includes(attr.id)\n );\n const extraAttrs = filteredList.filter((attr: any) =>\n extraAttrIds.includes(attr.id)\n );\n\n return (\n <>\n <Divider orientation=\"left\" plain style={{ marginTop: 0 }}>\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.FIELD_SETTINGS}`)}\n </Divider>\n <div>\n <Input.Search\n value={this.state.q}\n placeholder={i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.SEARCH_BY_FIELD_NAME}`\n )}\n onChange={this.handleSearchChange}\n style={{ width: 200 }}\n data-testid=\"search-input\"\n />\n </div>\n <div\n style={{\n marginTop: 15,\n minHeight: 200,\n maxHeight: 500,\n overflow: \"auto\",\n }}\n className=\"nextFields\"\n >\n <Row>\n {attrs.map((attr: any) => this.renderCheckbox(attr, \"nextFields\"))}\n {extraAttrs.length > 0 ? (\n <>\n <Divider />\n {extraAttrs.map((attr: any) =>\n this.renderCheckbox(attr, \"nextFields\")\n )}\n </>\n ) : null}\n </Row>\n </div>\n </>\n );\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"DisplaySettingsModal.js","names":["Button","Modal","React","useMemo","useState","useTranslation","K","NS_LIBS_CMDB_INSTANCES","DisplaySettings","DisplaySettingsModal","props","visible","objectId","modelData","currentFields","defaultFields","extraDisabledFields","onOk","onCancel","t","nextFields","setNextFields","count","filter","v","length","handleReset","fields","slice","isReset","handleCancel","DISPLAY_SETTINGS","display","RESTORE_DEFAULT","marginLeft","marginRight","CANCEL","CONFIRM"],"sources":["../../../src/instance-list-table/DisplaySettingsModal.tsx"],"sourcesContent":["import { Button, Modal } from \"antd\";\nimport React, { useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { K, NS_LIBS_CMDB_INSTANCES } from \"../i18n/constants\";\nimport { DisplaySettings, DisplaySettingsProps } from \"./DisplaySettings\";\n\nexport interface DisplaySettingsModalData {\n fields: string[];\n isReset?: boolean;\n}\n\nexport interface DisplaySettingsModalProps extends DisplaySettingsProps {\n visible?: boolean;\n defaultFields?: string[];\n onOk?(data: DisplaySettingsModalData): void;\n onCancel?(): void;\n}\n\nexport function DisplaySettingsModal(\n props: DisplaySettingsModalProps\n): React.ReactElement {\n const {\n visible,\n objectId,\n modelData,\n currentFields,\n defaultFields,\n extraDisabledFields,\n onOk,\n onCancel,\n } = props;\n const { t } = useTranslation(NS_LIBS_CMDB_INSTANCES);\n const [nextFields, setNextFields] = useState<string[]>(currentFields);\n const count = useMemo(\n () => nextFields?.filter((v) => v !== \"_object_id\").length,\n [nextFields]\n );\n\n const handleReset = (): void => {\n const fields = defaultFields ? defaultFields.slice() : [];\n\n setNextFields(fields);\n onOk?.({ fields, isReset: true });\n };\n\n const handleCancel = (): void => {\n setNextFields(currentFields ? [...currentFields] : []);\n onCancel?.();\n };\n\n return (\n <Modal\n title={t(K.DISPLAY_SETTINGS)}\n visible={visible}\n footer={\n <div style={{ display: \"flex\" }}>\n <div>\n <Button\n type=\"default\"\n onClick={handleReset}\n data-testid=\"reset-button\"\n >\n {t(K.RESTORE_DEFAULT)}\n </Button>\n </div>\n <div style={{ marginLeft: \"auto\" }}>\n <Button\n type=\"default\"\n onClick={handleCancel}\n style={{ marginRight: 10 }}\n data-testid=\"cancel-button\"\n >\n {t(K.CANCEL)}\n </Button>\n <Button\n type=\"primary\"\n onClick={() => props?.onOk({ fields: nextFields })}\n disabled={count === 0}\n data-testid=\"ok-button\"\n >\n {t(K.CONFIRM)}\n </Button>\n </div>\n </div>\n }\n onCancel={handleCancel}\n destroyOnClose={true}\n width={780}\n centered={true}\n >\n <DisplaySettings\n objectId={objectId}\n modelData={modelData}\n currentFields={nextFields}\n extraDisabledFields={extraDisabledFields}\n onChange={(fields) => setNextFields(fields)}\n />\n </Modal>\n );\n}\n"],"mappings":"AAAA,SAASA,MAAT,EAAiBC,KAAjB,QAA8B,MAA9B;AACA,OAAOC,KAAP,IAAgBC,OAAhB,EAAyBC,QAAzB,QAAyC,OAAzC;AACA,SAASC,cAAT,QAA+B,eAA/B;AACA,SAASC,CAAT,EAAYC,sBAAZ,QAA0C,mBAA1C;AACA,SAASC,eAAT,QAAsD,mBAAtD;AAcA,OAAO,SAASC,oBAAT,CACLC,KADK,EAEe;EACpB,IAAM;IACJC,OADI;IAEJC,QAFI;IAGJC,SAHI;IAIJC,aAJI;IAKJC,aALI;IAMJC,mBANI;IAOJC,IAPI;IAQJC;EARI,IASFR,KATJ;EAUA,IAAM;IAAES;EAAF,IAAQd,cAAc,CAACE,sBAAD,CAA5B;EACA,IAAM,CAACa,UAAD,EAAaC,aAAb,IAA8BjB,QAAQ,CAAWU,aAAX,CAA5C;EACA,IAAMQ,KAAK,GAAGnB,OAAO,CACnB,MAAMiB,UAAN,aAAMA,UAAN,uBAAMA,UAAU,CAAEG,MAAZ,CAAoBC,CAAD,IAAOA,CAAC,KAAK,YAAhC,EAA8CC,MADjC,EAEnB,CAACL,UAAD,CAFmB,CAArB;;EAKA,IAAMM,WAAW,GAAG,MAAY;IAC9B,IAAMC,MAAM,GAAGZ,aAAa,GAAGA,aAAa,CAACa,KAAd,EAAH,GAA2B,EAAvD;IAEAP,aAAa,CAACM,MAAD,CAAb;IACAV,IAAI,SAAJ,IAAAA,IAAI,WAAJ,YAAAA,IAAI,CAAG;MAAEU,MAAF;MAAUE,OAAO,EAAE;IAAnB,CAAH,CAAJ;EACD,CALD;;EAOA,IAAMC,YAAY,GAAG,MAAY;IAC/BT,aAAa,CAACP,aAAa,GAAG,CAAC,GAAGA,aAAJ,CAAH,GAAwB,EAAtC,CAAb;IACAI,QAAQ,SAAR,IAAAA,QAAQ,WAAR,YAAAA,QAAQ;EACT,CAHD;;EAKA,oBACE,oBAAC,KAAD;IACE,KAAK,EAAEC,CAAC,CAACb,CAAC,CAACyB,gBAAH,CADV;IAEE,OAAO,EAAEpB,OAFX;IAGE,MAAM,eACJ;MAAK,KAAK,EAAE;QAAEqB,OAAO,EAAE;MAAX;IAAZ,gBACE,8CACE,oBAAC,MAAD;MACE,IAAI,EAAC,SADP;MAEE,OAAO,EAAEN,WAFX;MAGE,eAAY;IAHd,GAKGP,CAAC,CAACb,CAAC,CAAC2B,eAAH,CALJ,CADF,CADF,eAUE;MAAK,KAAK,EAAE;QAAEC,UAAU,EAAE;MAAd;IAAZ,gBACE,oBAAC,MAAD;MACE,IAAI,EAAC,SADP;MAEE,OAAO,EAAEJ,YAFX;MAGE,KAAK,EAAE;QAAEK,WAAW,EAAE;MAAf,CAHT;MAIE,eAAY;IAJd,GAMGhB,CAAC,CAACb,CAAC,CAAC8B,MAAH,CANJ,CADF,eASE,oBAAC,MAAD;MACE,IAAI,EAAC,SADP;MAEE,OAAO,EAAE,MAAM1B,KAAN,aAAMA,KAAN,uBAAMA,KAAK,CAAEO,IAAP,CAAY;QAAEU,MAAM,EAAEP;MAAV,CAAZ,CAFjB;MAGE,QAAQ,EAAEE,KAAK,KAAK,CAHtB;MAIE,eAAY;IAJd,GAMGH,CAAC,CAACb,CAAC,CAAC+B,OAAH,CANJ,CATF,CAVF,CAJJ;IAkCE,QAAQ,EAAEP,YAlCZ;IAmCE,cAAc,EAAE,IAnClB;IAoCE,KAAK,EAAE,GApCT;IAqCE,QAAQ,EAAE;EArCZ,gBAuCE,oBAAC,eAAD;IACE,QAAQ,EAAElB,QADZ;IAEE,SAAS,EAAEC,SAFb;IAGE,aAAa,EAAEO,UAHjB;IAIE,mBAAmB,EAAEJ,mBAJvB;IAKE,QAAQ,EAAGW,MAAD,IAAYN,aAAa,CAACM,MAAD;EALrC,EAvCF,CADF;AAiDD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/instance-list-table/DynamicSearch.tsx"],"names":["React","update","isEqual","isNil","isString","isArray","isEmpty","Form","Button","Col","Input","Row","ComparisonOperators","LogicalOperators","styles","i18n","NS_LIBS_CMDB_INSTANCES","K","processAttrValueWithQuote","ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE","DynamicSearchForm","Component","constructor","props","value","fieldIndex","valueIndex","setState","fields","state","values","$set","e","onValueChange","target","preventDefault","onSearch","queries","queriesToShow","fieldToShow","forEach","field","expressions","fieldId","id","fieldQuery","fieldQueryToShow","hasValue","operator","comparisonOperator","Like","logicalOperator","Or","fieldIdToShow","Array","length","map","push","undefined","q","form","resetFields","computeState","componentDidUpdate","prevProps","newState","setFormFieldValues","fieldQueryOperatorExpressionsMap","query","Object","entries","key","And","firstSubQuery","keys","compareOperator","subQueryValue","targetField","find","fieldItem","item","join","targetValue","NotLike","includes","slice","v","str","replace","reduce","acc","setFieldsValue","getFields","getFieldDecorator","name","initialValue","conditionInput","t","OPERATOR_CONTAIN_DEFINE","ADVANCE_SEARCH_SINGLE_INPUT_PLACEHOLDER","handleValueChange","render","dynamicSearch","dynamicSearchForm","handleSearch","textAlign","SEARCH","marginLeft","handleReset","RESET","DynamicSearch","create"],"mappings":"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","sourcesContent":["import React, { FormEvent } from \"react\";\nimport update from \"immutability-helper\";\nimport { isEqual, isNil, isString, isArray, isEmpty } 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 {\n ComparisonOperators,\n LogicalOperators,\n Query,\n QueryOperatorExpressions,\n} from \"@next-libs/cmdb-utils\";\nimport styles from \"./DynamicSearch.module.css\";\nimport i18n from \"i18next\";\nimport { NS_LIBS_CMDB_INSTANCES, K } from \"../i18n/constants\";\nimport {\n processAttrValueWithQuote,\n ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE,\n} from \"../processors\";\n\nexport interface Field {\n id: string;\n name: string;\n values?: any[];\n}\n\nexport interface DynamicSearchFormProps extends FormComponentProps {\n fields: Record<string, any>[];\n q?: Query[];\n onSearch?(\n queries: Query[],\n queriesToShow?: Query[],\n fieldToShow?: Record<string, any[]>[]\n ): void;\n fieldToShow?: Record<string, any[]>[]; // 回填高级搜索的field值(根据query回填丢失了引号信息)\n}\n\nexport interface DynamicSearchFormState {\n fields: Field[];\n}\n\nexport class DynamicSearchForm extends React.Component<\n DynamicSearchFormProps,\n DynamicSearchFormState\n> {\n constructor(props: DynamicSearchFormProps) {\n super(props);\n\n this.state = this.computeState();\n }\n\n componentDidUpdate(prevProps: Readonly<DynamicSearchFormProps>): void {\n if (!isEqual(this.props.q, prevProps.q)) {\n const newState = this.computeState();\n this.setState(newState);\n this.setFormFieldValues(newState.fields);\n }\n }\n\n computeState(): { fields: Field[] } {\n const fieldQueryOperatorExpressionsMap: Record<\n string,\n QueryOperatorExpressions\n > = {};\n let fields: Field[] = [];\n if (this.props.q) {\n this.props.q.forEach((query) => {\n Object.entries(query).forEach(([key, expressions]) => {\n if (key === LogicalOperators.Or || key === LogicalOperators.And) {\n const firstSubQuery = (expressions as Query[])[0];\n const fieldId = Object.keys(firstSubQuery)[0];\n const compareOperator = Object.keys(firstSubQuery[fieldId])[0];\n let subQueryValue = \"\";\n let targetField;\n if (ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE) {\n targetField = this.props.fieldToShow?.find(\n (fieldItem) => Object.keys(fieldItem)[0] === fieldId\n );\n }\n if (!isNil(targetField)) {\n // 二维数组会有问题,\n subQueryValue = isArray(targetField[fieldId])\n ? targetField[fieldId]\n .map((item) => (isArray(item) ? item.join(\" \") : item))\n .join(\"\")\n : (targetField[fieldId] as any);\n } else {\n subQueryValue = (expressions as Query[])\n .map((query) => {\n const targetValue = (\n query[fieldId] as Record<ComparisonOperators, any>\n )[compareOperator as ComparisonOperators];\n if (\n compareOperator === ComparisonOperators.Like ||\n compareOperator === ComparisonOperators.NotLike\n ) {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `${targetValue[0]}\"${targetValue.slice(\n 1,\n targetValue.length - 1\n )}\"${targetValue[targetValue.length - 1]}`\n : targetValue;\n } else {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `\"${targetValue}\"`\n : targetValue;\n }\n })\n .join(\" \");\n }\n key = fieldId;\n expressions = {\n [compareOperator]: subQueryValue,\n };\n }\n\n fieldQueryOperatorExpressionsMap[key] =\n expressions as QueryOperatorExpressions;\n });\n });\n }\n if (this.props.fields) {\n fields = this.props.fields.map(\n (v) => ({ ...v, values: [null] } as Field)\n );\n if (!isEmpty(fieldQueryOperatorExpressionsMap)) {\n fields = this.props.fields.map((v) => {\n let str: any = null;\n if (fieldQueryOperatorExpressionsMap[v.id]) {\n const expressions = fieldQueryOperatorExpressionsMap[v.id][\"$like\"];\n str = expressions.replace(/%/g, \"\");\n }\n return {\n ...v,\n values: [str],\n } as Field;\n });\n }\n }\n return { fields };\n }\n\n setFormFieldValues(fields: Field[]): void {\n const values = fields.reduce<{ [key: string]: any }>((acc, field) => {\n acc[`${field.id}`] = field.values.join(\"\");\n return acc;\n }, {});\n this.props.form.setFieldsValue(values);\n }\n\n onValueChange = (value: any, fieldIndex: number, valueIndex: number) => {\n this.setState({\n fields: update(this.state.fields, {\n [fieldIndex]: { values: { [valueIndex]: { $set: value } } },\n }),\n });\n };\n\n getFields() {\n const { getFieldDecorator } = this.props.form;\n return this.state.fields.map((field, fieldIndex) => {\n return (\n <Col span={12} key={field.id}>\n <Form.Item label={field.name}>\n {getFieldDecorator(`${field.id}`, {\n initialValue: field.values || \"\",\n })(\n <Input\n className={styles.conditionInput}\n addonBefore={i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_CONTAIN_DEFINE}`\n )}\n placeholder={i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.ADVANCE_SEARCH_SINGLE_INPUT_PLACEHOLDER}`\n )}\n onChange={(e) => this.handleValueChange(e, fieldIndex)}\n />\n )}\n </Form.Item>\n </Col>\n );\n });\n }\n\n handleValueChange = (e: any, fieldIndex: number) => {\n this.onValueChange(e.target.value, fieldIndex, 0);\n };\n\n handleSearch = (e: FormEvent<any>): void => {\n e.preventDefault();\n if (this.props.onSearch) {\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 const fieldId = field.id;\n let fieldQuery: Query = { [fieldId]: expressions };\n let fieldQueryToShow: Query = { [fieldId]: expressions };\n let hasValue = false;\n const operator = {\n comparisonOperator: ComparisonOperators.Like,\n logicalOperator: LogicalOperators.Or,\n };\n field.values.forEach((value) => {\n fieldQuery = { [field.id]: expressions };\n const fieldIdToShow = field.id;\n fieldQueryToShow = { [fieldIdToShow]: expressions };\n if (\n value !== null &&\n value !== \"\" &&\n !(Array.isArray(value) && value.length === 0)\n ) {\n let values: any[];\n if (typeof value === \"string\") {\n values = processAttrValueWithQuote(value, []);\n }\n if (values.length) {\n fieldQuery = {\n [operator.logicalOperator]: values.map((value) => {\n return {\n [fieldId]: {\n [operator.comparisonOperator]: `%${value}%`,\n },\n };\n }),\n };\n }\n fieldQueryToShow = {\n [operator.logicalOperator]: values.map((value) => {\n return {\n [fieldIdToShow]: {\n [operator.comparisonOperator]: `%${value}%`,\n },\n };\n }),\n };\n hasValue = true;\n fieldToShow.push({ [field.id]: field.values });\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 this.props.onSearch([], [], []);\n this.props.form.resetFields();\n };\n\n render(): React.ReactNode {\n return (\n <div className={styles.dynamicSearch}>\n <Form\n layout=\"vertical\"\n className={styles.dynamicSearchForm}\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 DynamicSearch = Form.create<DynamicSearchFormProps>({\n name: \"dynamic_search\",\n})(DynamicSearchForm);\n"],"file":"DynamicSearch.js"}
|
|
1
|
+
{"version":3,"file":"DynamicSearch.js","names":["React","update","isEqual","isNil","isString","isArray","isEmpty","Form","Button","Col","Input","Row","ComparisonOperators","LogicalOperators","styles","i18n","NS_LIBS_CMDB_INSTANCES","K","processAttrValueWithQuote","ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE","DynamicSearchForm","Component","constructor","props","value","fieldIndex","valueIndex","setState","fields","state","values","$set","e","onValueChange","target","preventDefault","onSearch","queries","queriesToShow","fieldToShow","forEach","field","expressions","fieldId","id","fieldQuery","fieldQueryToShow","hasValue","operator","comparisonOperator","Like","logicalOperator","Or","fieldIdToShow","Array","length","map","push","undefined","q","form","resetFields","computeState","componentDidUpdate","prevProps","newState","setFormFieldValues","fieldQueryOperatorExpressionsMap","query","Object","entries","key","And","firstSubQuery","keys","compareOperator","subQueryValue","targetField","find","fieldItem","item","join","targetValue","NotLike","includes","slice","v","str","replace","reduce","acc","setFieldsValue","getFields","getFieldDecorator","name","initialValue","conditionInput","t","OPERATOR_CONTAIN_DEFINE","ADVANCE_SEARCH_SINGLE_INPUT_PLACEHOLDER","handleValueChange","render","dynamicSearch","dynamicSearchForm","handleSearch","textAlign","SEARCH","marginLeft","handleReset","RESET","DynamicSearch","create"],"sources":["../../../src/instance-list-table/DynamicSearch.tsx"],"sourcesContent":["import React, { FormEvent } from \"react\";\nimport update from \"immutability-helper\";\nimport { isEqual, isNil, isString, isArray, isEmpty } 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 {\n ComparisonOperators,\n LogicalOperators,\n Query,\n QueryOperatorExpressions,\n} from \"@next-libs/cmdb-utils\";\nimport styles from \"./DynamicSearch.module.css\";\nimport i18n from \"i18next\";\nimport { NS_LIBS_CMDB_INSTANCES, K } from \"../i18n/constants\";\nimport {\n processAttrValueWithQuote,\n ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE,\n} from \"../processors\";\n\nexport interface Field {\n id: string;\n name: string;\n values?: any[];\n}\n\nexport interface DynamicSearchFormProps extends FormComponentProps {\n fields: Record<string, any>[];\n q?: Query[];\n onSearch?(\n queries: Query[],\n queriesToShow?: Query[],\n fieldToShow?: Record<string, any[]>[]\n ): void;\n fieldToShow?: Record<string, any[]>[]; // 回填高级搜索的field值(根据query回填丢失了引号信息)\n}\n\nexport interface DynamicSearchFormState {\n fields: Field[];\n}\n\nexport class DynamicSearchForm extends React.Component<\n DynamicSearchFormProps,\n DynamicSearchFormState\n> {\n constructor(props: DynamicSearchFormProps) {\n super(props);\n\n this.state = this.computeState();\n }\n\n componentDidUpdate(prevProps: Readonly<DynamicSearchFormProps>): void {\n if (!isEqual(this.props.q, prevProps.q)) {\n const newState = this.computeState();\n this.setState(newState);\n this.setFormFieldValues(newState.fields);\n }\n }\n\n computeState(): { fields: Field[] } {\n const fieldQueryOperatorExpressionsMap: Record<\n string,\n QueryOperatorExpressions\n > = {};\n let fields: Field[] = [];\n if (this.props.q) {\n this.props.q.forEach((query) => {\n Object.entries(query).forEach(([key, expressions]) => {\n if (key === LogicalOperators.Or || key === LogicalOperators.And) {\n const firstSubQuery = (expressions as Query[])[0];\n const fieldId = Object.keys(firstSubQuery)[0];\n const compareOperator = Object.keys(firstSubQuery[fieldId])[0];\n let subQueryValue = \"\";\n let targetField;\n if (ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE) {\n targetField = this.props.fieldToShow?.find(\n (fieldItem) => Object.keys(fieldItem)[0] === fieldId\n );\n }\n if (!isNil(targetField)) {\n // 二维数组会有问题,\n subQueryValue = isArray(targetField[fieldId])\n ? targetField[fieldId]\n .map((item) => (isArray(item) ? item.join(\" \") : item))\n .join(\"\")\n : (targetField[fieldId] as any);\n } else {\n subQueryValue = (expressions as Query[])\n .map((query) => {\n const targetValue = (\n query[fieldId] as Record<ComparisonOperators, any>\n )[compareOperator as ComparisonOperators];\n if (\n compareOperator === ComparisonOperators.Like ||\n compareOperator === ComparisonOperators.NotLike\n ) {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `${targetValue[0]}\"${targetValue.slice(\n 1,\n targetValue.length - 1\n )}\"${targetValue[targetValue.length - 1]}`\n : targetValue;\n } else {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `\"${targetValue}\"`\n : targetValue;\n }\n })\n .join(\" \");\n }\n key = fieldId;\n expressions = {\n [compareOperator]: subQueryValue,\n };\n }\n\n fieldQueryOperatorExpressionsMap[key] =\n expressions as QueryOperatorExpressions;\n });\n });\n }\n if (this.props.fields) {\n fields = this.props.fields.map(\n (v) => ({ ...v, values: [null] } as Field)\n );\n if (!isEmpty(fieldQueryOperatorExpressionsMap)) {\n fields = this.props.fields.map((v) => {\n let str: any = null;\n if (fieldQueryOperatorExpressionsMap[v.id]) {\n const expressions = fieldQueryOperatorExpressionsMap[v.id][\"$like\"];\n str = expressions.replace(/%/g, \"\");\n }\n return {\n ...v,\n values: [str],\n } as Field;\n });\n }\n }\n return { fields };\n }\n\n setFormFieldValues(fields: Field[]): void {\n const values = fields.reduce<{ [key: string]: any }>((acc, field) => {\n acc[`${field.id}`] = field.values.join(\"\");\n return acc;\n }, {});\n this.props.form.setFieldsValue(values);\n }\n\n onValueChange = (value: any, fieldIndex: number, valueIndex: number) => {\n this.setState({\n fields: update(this.state.fields, {\n [fieldIndex]: { values: { [valueIndex]: { $set: value } } },\n }),\n });\n };\n\n getFields() {\n const { getFieldDecorator } = this.props.form;\n return this.state.fields.map((field, fieldIndex) => {\n return (\n <Col span={12} key={field.id}>\n <Form.Item label={field.name}>\n {getFieldDecorator(`${field.id}`, {\n initialValue: field.values || \"\",\n })(\n <Input\n className={styles.conditionInput}\n addonBefore={i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_CONTAIN_DEFINE}`\n )}\n placeholder={i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.ADVANCE_SEARCH_SINGLE_INPUT_PLACEHOLDER}`\n )}\n onChange={(e) => this.handleValueChange(e, fieldIndex)}\n />\n )}\n </Form.Item>\n </Col>\n );\n });\n }\n\n handleValueChange = (e: any, fieldIndex: number) => {\n this.onValueChange(e.target.value, fieldIndex, 0);\n };\n\n handleSearch = (e: FormEvent<any>): void => {\n e.preventDefault();\n if (this.props.onSearch) {\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 const fieldId = field.id;\n let fieldQuery: Query = { [fieldId]: expressions };\n let fieldQueryToShow: Query = { [fieldId]: expressions };\n let hasValue = false;\n const operator = {\n comparisonOperator: ComparisonOperators.Like,\n logicalOperator: LogicalOperators.Or,\n };\n field.values.forEach((value) => {\n fieldQuery = { [field.id]: expressions };\n const fieldIdToShow = field.id;\n fieldQueryToShow = { [fieldIdToShow]: expressions };\n if (\n value !== null &&\n value !== \"\" &&\n !(Array.isArray(value) && value.length === 0)\n ) {\n let values: any[];\n if (typeof value === \"string\") {\n values = processAttrValueWithQuote(value, []);\n }\n if (values.length) {\n fieldQuery = {\n [operator.logicalOperator]: values.map((value) => {\n return {\n [fieldId]: {\n [operator.comparisonOperator]: `%${value}%`,\n },\n };\n }),\n };\n }\n fieldQueryToShow = {\n [operator.logicalOperator]: values.map((value) => {\n return {\n [fieldIdToShow]: {\n [operator.comparisonOperator]: `%${value}%`,\n },\n };\n }),\n };\n hasValue = true;\n fieldToShow.push({ [field.id]: field.values });\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 this.props.onSearch([], [], []);\n this.props.form.resetFields();\n };\n\n render(): React.ReactNode {\n return (\n <div className={styles.dynamicSearch}>\n <Form\n layout=\"vertical\"\n className={styles.dynamicSearchForm}\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 DynamicSearch = Form.create<DynamicSearchFormProps>({\n name: \"dynamic_search\",\n})(DynamicSearchForm);\n"],"mappings":"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"}
|