@next-libs/cmdb-instances 6.48.0 → 6.49.1
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/dist/cjs/attribute-form-control-url/AttributeFormControlUrl.js +8 -23
- package/dist/cjs/attribute-form-control-url/AttributeFormControlUrl.js.map +1 -1
- package/dist/cjs/cmdb-instances-input-form/CmdbInstancesInputFormItem.js +3 -43
- package/dist/cjs/cmdb-instances-input-form/CmdbInstancesInputFormItem.js.map +1 -1
- package/dist/cjs/cmdb-instances-select-panel/CmdbInstancesSelectPanel.js +6 -45
- package/dist/cjs/cmdb-instances-select-panel/CmdbInstancesSelectPanel.js.map +1 -1
- package/dist/cjs/cmdb-url-link/CmdbUrlLink.js +0 -11
- package/dist/cjs/cmdb-url-link/CmdbUrlLink.js.map +1 -1
- package/dist/cjs/components/index.js +0 -4
- package/dist/cjs/components/index.js.map +1 -1
- package/dist/cjs/components/instance-format/index.js +0 -15
- package/dist/cjs/components/instance-format/index.js.map +1 -1
- package/dist/cjs/components/user-or-user-group-select/UserOrUserGroupSelect.js +33 -92
- package/dist/cjs/components/user-or-user-group-select/UserOrUserGroupSelect.js.map +1 -1
- package/dist/cjs/data-providers/fetchCmdbInstanceDetail.js +0 -3
- package/dist/cjs/data-providers/fetchCmdbInstanceDetail.js.map +1 -1
- package/dist/cjs/data-providers/fetchCmdbInstanceSearch.js +0 -2
- package/dist/cjs/data-providers/fetchCmdbInstanceSearch.js.map +1 -1
- package/dist/cjs/data-providers/fetchCmdbObjectDetail.js +0 -2
- package/dist/cjs/data-providers/fetchCmdbObjectDetail.js.map +1 -1
- package/dist/cjs/data-providers/fetchCmdbObjectList.js +0 -2
- package/dist/cjs/data-providers/fetchCmdbObjectList.js.map +1 -1
- package/dist/cjs/data-providers/fetchCmdbObjectRef.js +0 -2
- package/dist/cjs/data-providers/fetchCmdbObjectRef.js.map +1 -1
- package/dist/cjs/data-providers/index.js +0 -10
- package/dist/cjs/data-providers/index.js.map +1 -1
- package/dist/cjs/float-display-brick/FloatDisplayBrick.js +0 -7
- package/dist/cjs/float-display-brick/FloatDisplayBrick.js.map +1 -1
- package/dist/cjs/i18n/constants.js +0 -1
- package/dist/cjs/i18n/constants.js.map +1 -1
- package/dist/cjs/i18n/index.js +0 -7
- package/dist/cjs/i18n/index.js.map +1 -1
- package/dist/cjs/i18n/locales/en.js +0 -2
- package/dist/cjs/i18n/locales/en.js.map +1 -1
- package/dist/cjs/i18n/locales/zh.js +0 -2
- package/dist/cjs/i18n/locales/zh.js.map +1 -1
- package/dist/cjs/index.js +0 -29
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/instance-attribute-form/InstanceAttributeForm.js +4 -25
- package/dist/cjs/instance-attribute-form/InstanceAttributeForm.js.map +1 -1
- package/dist/cjs/instance-detail/InstanceDetail.js +42 -124
- 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 +4 -19
- 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 +4 -11
- 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 +0 -18
- package/dist/cjs/instance-list/IconButton.js.map +1 -1
- package/dist/cjs/instance-list/InstanceList.js +47 -212
- package/dist/cjs/instance-list/InstanceList.js.map +1 -1
- package/dist/cjs/instance-list/constants.js +0 -7
- package/dist/cjs/instance-list/constants.js.map +1 -1
- package/dist/cjs/instance-list-modal/InstanceListModal.js +8 -32
- package/dist/cjs/instance-list-modal/InstanceListModal.js.map +1 -1
- package/dist/cjs/instance-list-table/AdvancedSearch.js +12 -133
- package/dist/cjs/instance-list-table/AdvancedSearch.js.map +1 -1
- package/dist/cjs/instance-list-table/AdvancedSearchCondition.js +3 -45
- package/dist/cjs/instance-list-table/AdvancedSearchCondition.js.map +1 -1
- package/dist/cjs/instance-list-table/DisplaySettings.js +0 -24
- package/dist/cjs/instance-list-table/DisplaySettings.js.map +1 -1
- package/dist/cjs/instance-list-table/DisplaySettingsModal.js +0 -10
- package/dist/cjs/instance-list-table/DisplaySettingsModal.js.map +1 -1
- package/dist/cjs/instance-list-table/DynamicSearch.js +4 -44
- package/dist/cjs/instance-list-table/DynamicSearch.js.map +1 -1
- package/dist/cjs/instance-list-table/InstanceListTable.js +30 -151
- package/dist/cjs/instance-list-table/InstanceListTable.js.map +1 -1
- package/dist/cjs/instance-list-table/MoreButtonsContainer.js +0 -15
- package/dist/cjs/instance-list-table/MoreButtonsContainer.js.map +1 -1
- package/dist/cjs/instance-list-table/constants.js +0 -2
- package/dist/cjs/instance-list-table/constants.js.map +1 -1
- package/dist/cjs/instance-list-table/data-providers/fetchCmdbInstanceAggregateCount.js +0 -2
- package/dist/cjs/instance-list-table/data-providers/fetchCmdbInstanceAggregateCount.js.map +1 -1
- package/dist/cjs/instance-list-table/data-providers/fetchCmdbInstanceCount.js +0 -2
- package/dist/cjs/instance-list-table/data-providers/fetchCmdbInstanceCount.js.map +1 -1
- package/dist/cjs/instance-list-table/data-providers/fetchCmdbInstanceDetail.js +0 -2
- package/dist/cjs/instance-list-table/data-providers/fetchCmdbInstanceDetail.js.map +1 -1
- package/dist/cjs/instance-list-table/data-providers/fetchCmdbObjectDetail.js +0 -2
- package/dist/cjs/instance-list-table/data-providers/fetchCmdbObjectDetail.js.map +1 -1
- package/dist/cjs/instance-list-table/data-providers/fetchPermRoleList.js +0 -2
- package/dist/cjs/instance-list-table/data-providers/fetchPermRoleList.js.map +1 -1
- package/dist/cjs/instance-list-table/data-providers/fetchPermissionList.js +0 -2
- package/dist/cjs/instance-list-table/data-providers/fetchPermissionList.js.map +1 -1
- package/dist/cjs/instance-list-table/data-providers/getDefaultValueTemplate.js +1 -2
- package/dist/cjs/instance-list-table/data-providers/getDefaultValueTemplate.js.map +1 -1
- package/dist/cjs/instance-list-table/data-providers/index.js +0 -16
- package/dist/cjs/instance-list-table/data-providers/index.js.map +1 -1
- package/dist/cjs/instance-list-table/data-providers/searchCmdbInstances.js +0 -2
- package/dist/cjs/instance-list-table/data-providers/searchCmdbInstances.js.map +1 -1
- package/dist/cjs/instance-list-table/index.js +0 -12
- package/dist/cjs/instance-list-table/index.js.map +1 -1
- package/dist/cjs/instance-list-table/utils.js +0 -24
- package/dist/cjs/instance-list-table/utils.js.map +1 -1
- package/dist/cjs/model-attribute-form/ModelAttributeForm.js +27 -99
- 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 +13 -94
- package/dist/cjs/model-attribute-form-control/ModelAttributeFormControl.js.map +1 -1
- package/dist/cjs/model-relation-form/ModelRelationForm.js +0 -18
- package/dist/cjs/model-relation-form/ModelRelationForm.js.map +1 -1
- package/dist/cjs/processors.js +2 -21
- package/dist/cjs/processors.js.map +1 -1
- package/dist/cjs/struct-components/AddStruct.js +4 -15
- package/dist/cjs/struct-components/AddStruct.js.map +1 -1
- package/dist/cjs/struct-components/AddStructModal.js +0 -48
- package/dist/cjs/struct-components/AddStructModal.js.map +1 -1
- package/dist/cjs/struct-components/StructTable.js +3 -32
- package/dist/cjs/struct-components/StructTable.js.map +1 -1
- package/dist/cjs/struct-components/index.js +0 -8
- package/dist/cjs/struct-components/index.js.map +1 -1
- package/dist/cjs/struct-components/interfaces.js +0 -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 +8 -18
- package/dist/esm/attribute-form-control-url/AttributeFormControlUrl.js.map +1 -1
- package/dist/esm/cmdb-instances-input-form/CmdbInstancesInputFormItem.js +3 -35
- package/dist/esm/cmdb-instances-input-form/CmdbInstancesInputFormItem.js.map +1 -1
- package/dist/esm/cmdb-instances-select-panel/CmdbInstancesSelectPanel.js +4 -32
- package/dist/esm/cmdb-instances-select-panel/CmdbInstancesSelectPanel.js.map +1 -1
- package/dist/esm/cmdb-url-link/CmdbUrlLink.js +0 -3
- 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 +0 -5
- package/dist/esm/components/instance-format/index.js.map +1 -1
- package/dist/esm/components/user-or-user-group-select/UserOrUserGroupSelect.js +19 -74
- 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 +0 -1
- package/dist/esm/float-display-brick/FloatDisplayBrick.js.map +1 -1
- package/dist/esm/i18n/constants.js +0 -1
- package/dist/esm/i18n/constants.js.map +1 -1
- package/dist/esm/i18n/index.js +2 -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 +2 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/instance-attribute-form/InstanceAttributeForm.js +4 -10
- package/dist/esm/instance-attribute-form/InstanceAttributeForm.js.map +1 -1
- package/dist/esm/instance-detail/InstanceDetail.js +36 -111
- 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 +4 -10
- 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 +2 -2
- 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 +0 -8
- package/dist/esm/instance-list/IconButton.js.map +1 -1
- package/dist/esm/instance-list/InstanceList.js +41 -182
- package/dist/esm/instance-list/InstanceList.js.map +1 -1
- package/dist/esm/instance-list/constants.js +0 -2
- package/dist/esm/instance-list/constants.js.map +1 -1
- package/dist/esm/instance-list-modal/InstanceListModal.js +8 -20
- package/dist/esm/instance-list-modal/InstanceListModal.js.map +1 -1
- package/dist/esm/instance-list-table/AdvancedSearch.js +10 -119
- package/dist/esm/instance-list-table/AdvancedSearch.js.map +1 -1
- package/dist/esm/instance-list-table/AdvancedSearchCondition.js +1 -31
- package/dist/esm/instance-list-table/AdvancedSearchCondition.js.map +1 -1
- package/dist/esm/instance-list-table/DisplaySettings.js +0 -16
- package/dist/esm/instance-list-table/DisplaySettings.js.map +1 -1
- package/dist/esm/instance-list-table/DisplaySettingsModal.js +0 -3
- package/dist/esm/instance-list-table/DisplaySettingsModal.js.map +1 -1
- package/dist/esm/instance-list-table/DynamicSearch.js +0 -34
- package/dist/esm/instance-list-table/DynamicSearch.js.map +1 -1
- package/dist/esm/instance-list-table/InstanceListTable.js +23 -138
- package/dist/esm/instance-list-table/InstanceListTable.js.map +1 -1
- package/dist/esm/instance-list-table/MoreButtonsContainer.js +0 -7
- package/dist/esm/instance-list-table/MoreButtonsContainer.js.map +1 -1
- package/dist/esm/instance-list-table/constants.js +0 -2
- 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 +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/utils.js +0 -15
- package/dist/esm/instance-list-table/utils.js.map +1 -1
- package/dist/esm/model-attribute-form/ModelAttributeForm.js +19 -92
- 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 +27 -102
- package/dist/esm/model-attribute-form-control/ModelAttributeFormControl.js.map +1 -1
- package/dist/esm/model-relation-form/ModelRelationForm.js +0 -10
- package/dist/esm/model-relation-form/ModelRelationForm.js.map +1 -1
- package/dist/esm/processors.js +2 -7
- package/dist/esm/processors.js.map +1 -1
- package/dist/esm/struct-components/AddStruct.js +4 -9
- package/dist/esm/struct-components/AddStruct.js.map +1 -1
- package/dist/esm/struct-components/AddStructModal.js +0 -36
- package/dist/esm/struct-components/AddStructModal.js.map +1 -1
- package/dist/esm/struct-components/StructTable.js +3 -26
- 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 +0 -1
- package/dist/esm/struct-components/interfaces.js.map +1 -1
- package/dist/esm/struct-components/mockData.js.map +1 -1
- package/package.json +9 -9
- package/CHANGELOG.md +0 -3687
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdvancedSearch.js","names":["ConditionType","FieldTypeConditionTypesMap","ModelAttributeValueType","STRING","Contain","NotContain","Equal","NotEqual","Empty","NotEmpty","INTEGER","Between","FLOAT","DATE","DATETIME","ENUM","ENUMS","ARR","STRUCT","IP","BOOLEAN","JSON","multiValueSearchOperators","comparisonOperator","ComparisonOperators","Like","logicalOperator","LogicalOperators","Or","NotLike","And","STRUCT_LIST","getCondition","conditionType","fieldType","label","operations","i18n","t","NS_LIBS_CMDB_INSTANCES","K","OPERATOR_EQUAL_DEFINE","operator","In","OPERATOR_NOT_EQUAL_DEFINE","NotIn","OPERATOR_CONTAIN_DEFINE","prefix","suffix","OPERATOR_NOT_CONTAIN_DEFINE","OPERATOR_IS_EMPTY_DEFINE","ElementOperators","Exists","fixedValue","OPERATOR_IS_NOT_EMPTY_DEFINE","True","False","GreaterThanOrEqual","LessThanOrEqual","OPERATOR_BETWEEN_DEFINE_TEXT_INT","OPERATOR_BETWEEN_DEFINE_TEXT_TIME","OPERATOR_BETWEEN_DEFINE_TEXT","OPERATOR_BETWEEN_DEFINE_TEXT_THE","type","convertValue","valueType","value","parseInt","parseFloat","getFieldConditionsAndValues","fieldQueryOperatorExpressionsMap","id","isRelation","relationSideId","objectId","attrId","isRelationWithNoExpression","expressions","expressionsKeys","relatedKey","findKey","v","k","startsWith","relatedExpressions","isNil","Object","keys","currentCondition","availableConditions","map","condition","length","operatorsStr","isFixedValueEqual","every","operation","push","undefined","toString","includes","queryValuesStr","values","i","find","multiValueSearchOperator","trim","split","clusterMap","join","slice","endsWith","disabled","AdvancedSearchForm","React","Component","constructor","props","valueIndex","field","fieldIndex","setState","fields","update","state","$set","hasFixedValues","some","newValues","newFields","relatedFieldIndex","findIndex","f","relatedField","relatedCondition","setFormFieldValues","e","preventDefault","autoSearch","onSearch","queries","queriesToShow","fieldToShow","forEach","fieldQuery","fieldQueryToShow","hasValue","structQueryId","isStruct","attrValue","struct_define","struct_item","index","fieldId","fieldIdToShow","Array","isArray","ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE","processAttrValueWithQuote","flatten","structId","isEqual","q","form","resetFields","computeState","componentDidUpdate","prevProps","newState","query","entries","key","firstSubQuery","compareOperators","compareOperator","subQueryValue","targetField","fieldItem","item","targetValue","isString","forEachAvailableFields","modelData","attr","regex","name","relation","sides","relationObject","idObjectMap","that","showKeys","getInstanceNameKeys","showKey","nameOfShowKey","attrList","this","fieldIds","reduce","acc","setFieldsValue","getFields","getFieldDecorator","hasBetween","style","multiSelect","FormControlTypeEnum","SELECT","minWidth","styles","conditionInputGroup","onConditionChange","separatorInput","initialValue","onValueChange","conditionInput","render","advancedSearch","advancedSearchForm","handleSearch","textAlign","SEARCH","marginLeft","handleReset","RESET","AdvancedSearch","Form","create"],"sources":["../../../src/instance-list-table/AdvancedSearch.tsx"],"sourcesContent":["import React, { ChangeEvent, FormEvent } from \"react\";\nimport update from \"immutability-helper\";\nimport {\n isEqual,\n find,\n startsWith,\n findKey,\n isNil,\n flatten,\n isString,\n isArray,\n} from \"lodash\";\nimport { Form } from \"@ant-design/compatible\";\nimport { Button, Col, Input, Row, Select } from \"antd\";\nimport { FormComponentProps } from \"@ant-design/compatible/lib/form\";\nimport { CmdbModels } from \"@next-sdk/cmdb-sdk\";\nimport {\n ComparisonOperators,\n ElementOperators,\n forEachAvailableFields,\n getInstanceNameKeys,\n LogicalOperators,\n Query,\n QueryOperatorExpressions,\n RelationIdKeys,\n RelationNameKeys,\n RelationObjectIdKeys,\n} from \"@next-libs/cmdb-utils\";\nimport { clusterMap } from \"./constants\";\nimport styles from \"./AdvancedSearch.module.css\";\nimport i18n from \"i18next\";\nimport { NS_LIBS_CMDB_INSTANCES, K } from \"../i18n/constants\";\nimport {\n FormControlTypeEnum,\n ModelAttributeFormControl,\n ModelAttributeValueType,\n} from \"../model-attribute-form-control/ModelAttributeFormControl\";\nimport {\n processAttrValueWithQuote,\n ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE,\n} from \"../processors\";\n\nexport enum ConditionType {\n Equal = \"equal\",\n NotEqual = \"notEqual\",\n Contain = \"contain\",\n NotContain = \"notContain\",\n Empty = \"empty\",\n NotEmpty = \"notEmpty\",\n Between = \"between\",\n True = \"true\",\n False = \"false\",\n}\n\ninterface ConditionOperation {\n operator: ComparisonOperators | ElementOperators;\n fixedValue?: any;\n prefix?: string;\n suffix?: string;\n}\n\ninterface Condition {\n type: ConditionType;\n label: string;\n operations: ConditionOperation[];\n}\n\nconst FieldTypeConditionTypesMap: Record<string, ConditionType[]> = {\n [ModelAttributeValueType.STRING]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.INTEGER]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.FLOAT]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.DATE]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.DATETIME]: [\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ENUM]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ENUMS]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ARR]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.STRUCT]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.IP]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.BOOLEAN]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.JSON]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n};\n\nconst multiValueSearchOperators = [\n {\n comparisonOperator: ComparisonOperators.Like,\n logicalOperator: LogicalOperators.Or,\n },\n {\n comparisonOperator: ComparisonOperators.NotLike,\n logicalOperator: LogicalOperators.And,\n },\n {\n comparisonOperator: ComparisonOperators.Equal,\n logicalOperator: LogicalOperators.Or,\n },\n {\n comparisonOperator: ComparisonOperators.NotEqual,\n logicalOperator: LogicalOperators.And,\n },\n];\nFieldTypeConditionTypesMap[ModelAttributeValueType.STRUCT_LIST] =\n FieldTypeConditionTypesMap[ModelAttributeValueType.STRUCT];\n\nexport function getCondition(\n conditionType: ConditionType,\n fieldType: ModelAttributeValueType\n): Condition {\n let label: string;\n let operations: ConditionOperation[];\n\n switch (conditionType) {\n case ConditionType.Equal:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_EQUAL_DEFINE}`);\n switch (fieldType) {\n case ModelAttributeValueType.ARR:\n operations = [\n {\n operator: ComparisonOperators.In,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.Equal,\n },\n ];\n }\n break;\n case ConditionType.NotEqual:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_NOT_EQUAL_DEFINE}`\n );\n switch (fieldType) {\n case ModelAttributeValueType.ARR:\n operations = [\n {\n operator: ComparisonOperators.NotIn,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.NotEqual,\n },\n ];\n }\n break;\n case ConditionType.Contain:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_CONTAIN_DEFINE}`);\n switch (fieldType) {\n case ModelAttributeValueType.ENUMS:\n operations = [\n {\n operator: ComparisonOperators.In,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.Like,\n prefix: \"%\",\n suffix: \"%\",\n },\n ];\n }\n break;\n case ConditionType.NotContain:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_NOT_CONTAIN_DEFINE}`\n );\n switch (fieldType) {\n case ModelAttributeValueType.ENUMS:\n operations = [\n {\n operator: ComparisonOperators.NotIn,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.NotLike,\n prefix: \"%\",\n suffix: \"%\",\n },\n ];\n }\n break;\n case ConditionType.Empty:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_IS_EMPTY_DEFINE}`);\n operations = [\n {\n operator: ElementOperators.Exists,\n fixedValue: false,\n },\n ];\n break;\n case ConditionType.NotEmpty:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_IS_NOT_EMPTY_DEFINE}`\n );\n operations = [\n {\n operator: ElementOperators.Exists,\n fixedValue: true,\n },\n ];\n break;\n case ConditionType.True:\n label = \"true\";\n operations = [\n {\n operator: ComparisonOperators.Equal,\n fixedValue: true,\n },\n ];\n break;\n case ConditionType.False:\n label = \"false\";\n operations = [\n {\n operator: ComparisonOperators.Equal,\n fixedValue: false,\n },\n ];\n break;\n case ConditionType.Between:\n operations = [\n {\n operator: ComparisonOperators.GreaterThanOrEqual,\n },\n {\n operator: ComparisonOperators.LessThanOrEqual,\n },\n ];\n switch (fieldType) {\n case ModelAttributeValueType.INTEGER:\n case ModelAttributeValueType.FLOAT:\n // label = \"在此区间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_INT}`\n );\n break;\n case ModelAttributeValueType.DATE:\n case ModelAttributeValueType.DATETIME:\n // label = \"在此期间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_TIME}`\n );\n break;\n case ModelAttributeValueType.IP:\n // label = \"范围\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT}`\n );\n break;\n default:\n // label = \"在此之间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_THE}`\n );\n }\n break;\n }\n\n return {\n type: conditionType,\n label,\n operations,\n };\n}\n\nexport function convertValue(valueType: string, value: any): any {\n if (typeof value !== \"boolean\") {\n switch (valueType) {\n case ModelAttributeValueType.INTEGER:\n return parseInt(value);\n case ModelAttributeValueType.FLOAT:\n return parseFloat(value);\n case ModelAttributeValueType.BOOLEAN:\n return value === \"true\";\n }\n }\n return value;\n}\n\nexport function getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap: Record<string, QueryOperatorExpressions>,\n id: string,\n valueType: ModelAttributeValueType,\n isRelation?: boolean,\n relationSideId?: string,\n objectId?: string,\n attrId?: string\n) {\n let isRelationWithNoExpression = false;\n let expressions = fieldQueryOperatorExpressionsMap[id];\n let expressionsKeys: string[];\n if (!expressions && isRelation) {\n isRelationWithNoExpression = true;\n const relatedKey = findKey(\n fieldQueryOperatorExpressionsMap,\n (v, k) => startsWith(k, `${relationSideId}.`) || k === relationSideId\n );\n const relatedExpressions = fieldQueryOperatorExpressionsMap[relatedKey];\n if (\n relatedExpressions &&\n !isNil(relatedExpressions[ElementOperators.Exists])\n ) {\n expressions = fieldQueryOperatorExpressionsMap[relatedKey];\n }\n }\n\n if (expressions) {\n expressionsKeys = Object.keys(expressions);\n }\n let currentCondition: Condition;\n const availableConditions = FieldTypeConditionTypesMap[valueType].map(\n (conditionType) => {\n const condition = getCondition(conditionType, valueType);\n\n if (expressionsKeys?.length) {\n const operatorsStr: string[] = [];\n // 由于当 ConditionType.Between ,operations 有两个,当用户只填选一个时,currentCondition会默认第一个选择器。与实际不符\n const isFixedValueEqual = condition.operations.every((operation) => {\n operatorsStr.push(operation.operator);\n\n if (operation.fixedValue !== undefined) {\n return (\n operation.fixedValue?.toString() ===\n expressions[operation?.operator]?.toString()\n );\n } else {\n return true;\n }\n });\n if (\n isFixedValueEqual &&\n expressionsKeys.every((operator) => operatorsStr.includes(operator))\n ) {\n currentCondition = condition;\n }\n }\n\n return condition;\n }\n );\n if (!currentCondition) {\n currentCondition = availableConditions[0];\n }\n let queryValuesStr = \"\";\n const values = currentCondition.operations.map((operation) => {\n let value: any;\n // istanbul ignore else ElementOperators.Exists时直接返回fixedValue\n if (\n expressions?.[operation.operator] !== undefined &&\n operation.operator !== ElementOperators.Exists\n ) {\n value = expressions[operation.operator];\n let values = [expressions[operation.operator]];\n const i = multiValueSearchOperators.find(\n (multiValueSearchOperator) =>\n multiValueSearchOperator.comparisonOperator === operation.operator\n );\n if (i) {\n if (\n valueType === ModelAttributeValueType.ENUM ||\n typeof expressions[operation.operator] === \"string\"\n ) {\n values = expressions[operation.operator]\n .trim()\n .split(/\\s+/)\n .map((value: string) => convertValue(valueType, value));\n if (objectId === \"CLUSTER\" && attrId === \"type\") {\n values = values.map((value) => clusterMap[value]);\n }\n }\n }\n if (\n typeof values[0] === \"string\" ||\n typeof values[0] === \"number\" ||\n typeof values[0] === \"boolean\"\n ) {\n queryValuesStr = values.join(\" \");\n values = values.map((value: string) => {\n if (operation.prefix && value.startsWith(operation.prefix)) {\n value = value.slice(operation.prefix.length);\n }\n if (operation.suffix && value.endsWith(operation.suffix)) {\n value = value.slice(0, value.length - operation.suffix.length);\n }\n return value;\n });\n value = [\n ModelAttributeValueType.ENUM,\n ModelAttributeValueType.ARR,\n ].includes(valueType)\n ? values\n : values.join(\" \");\n }\n } else {\n value = operation.fixedValue !== undefined ? operation.fixedValue : null;\n }\n\n return value;\n });\n const disabled = false;\n return {\n availableConditions,\n currentCondition,\n values,\n queryValuesStr,\n disabled,\n };\n}\n\nexport interface Field {\n id: string;\n name: string;\n attrValue: Partial<CmdbModels.ModelObjectAttrValue>;\n values: any[];\n availableConditions: Condition[];\n currentCondition: Condition;\n isRelation: boolean;\n relationSideId?: string;\n disabled?: boolean;\n}\n\nexport interface AdvancedSearchFormProps extends FormComponentProps {\n fieldIds?: string[];\n idObjectMap: Record<string, Partial<CmdbModels.ModelCmdbObject>>;\n modelData: Partial<CmdbModels.ModelCmdbObject>;\n q?: Query[];\n placeholder?: string;\n onSearch?(\n queries: Query[],\n queriesToShow?: Query[],\n fieldToShow?: Record<string, any[]>[]\n ): void;\n autoSearch?: (fields: Field[]) => void;\n fieldToShow?: Record<string, any[]>[]; // 回填高级搜索的field值(根据query回填丢失了引号信息)\n onChange?(e: ChangeEvent<HTMLInputElement>): void;\n}\n\nexport interface AdvancedSearchFormState {\n fields: Field[];\n}\n\nexport class AdvancedSearchForm extends React.Component<\n AdvancedSearchFormProps,\n AdvancedSearchFormState\n> {\n constructor(props: AdvancedSearchFormProps) {\n super(props);\n\n this.state = this.computeState();\n }\n\n componentDidUpdate(prevProps: Readonly<AdvancedSearchFormProps>): void {\n if (!isEqual(this.props.q, prevProps.q)) {\n const newState = this.computeState();\n this.setState(newState);\n\n this.setFormFieldValues(newState.fields);\n }\n }\n\n computeState(): { fields: Field[] } {\n const fieldQueryOperatorExpressionsMap: Record<\n string,\n QueryOperatorExpressions\n > = {};\n const fields: Field[] = [];\n if (this.props.q) {\n this.props.q.forEach((query) => {\n Object.entries(query).forEach(([key, expressions]) => {\n if (key === LogicalOperators.Or || key === LogicalOperators.And) {\n const firstSubQuery = (expressions as Query[])[0];\n const fieldId = Object.keys(firstSubQuery)[0];\n // 由于 ConditionType.Between 这边的 operator 是两个,由于需要支持选择一个的时候也要显示出来,这边不能将选择器合并成str吐出去\n const compareOperators = Object.keys(firstSubQuery[fieldId]);\n const compareOperator =\n compareOperators.length > 1\n ? compareOperators\n : compareOperators.join(\"\");\n let subQueryValue = \"\";\n let targetField;\n if (ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE) {\n targetField = this.props.fieldToShow?.find(\n (fieldItem) => Object.keys(fieldItem)[0] === fieldId\n );\n }\n if (!isNil(targetField)) {\n // 二维数组会有问题,\n subQueryValue = isArray(targetField[fieldId])\n ? targetField[fieldId]\n .map((item) => (isArray(item) ? item.join(\" \") : item))\n .join(\"\")\n : (targetField[fieldId] as any);\n } else {\n subQueryValue = (expressions as Query[])\n .map((query) => {\n const targetValue = (\n query[fieldId] as Record<ComparisonOperators, any>\n )[compareOperator as ComparisonOperators];\n if (\n compareOperator === ComparisonOperators.Like ||\n compareOperator === ComparisonOperators.NotLike\n ) {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `${targetValue[0]}\"${targetValue.slice(\n 1,\n targetValue.length - 1\n )}\"${targetValue[targetValue.length - 1]}`\n : targetValue;\n }\n // 对于时间选择器有两个的,不用特意将值转换成str,因为不需要这里的值\n else {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `\"${targetValue}\"`\n : targetValue;\n }\n })\n .join(\" \");\n }\n key = fieldId;\n expressions = Array.isArray(compareOperator)\n ? firstSubQuery[fieldId]\n : {\n [compareOperator]: subQueryValue,\n };\n }\n\n fieldQueryOperatorExpressionsMap[key] =\n expressions as QueryOperatorExpressions;\n });\n });\n }\n forEachAvailableFields(\n this.props.modelData,\n (attr) => {\n const attrValue: Partial<CmdbModels.ModelObjectAttrValue> & {\n isStruct?: boolean;\n } & { isClusterType?: boolean } = {};\n\n switch (attr.value.type) {\n case ModelAttributeValueType.STRUCT:\n case ModelAttributeValueType.STRUCT_LIST:\n attrValue.type = ModelAttributeValueType.STRING;\n attrValue.struct_define = attr.value.struct_define;\n attrValue.isStruct = true;\n break;\n case ModelAttributeValueType.ENUM:\n case ModelAttributeValueType.ENUMS:\n attrValue.type = attr.value.type;\n attrValue.regex = attr.value.regex;\n break;\n default:\n attrValue.type = attr.value.type;\n }\n\n fields.push({\n id: attr.id,\n name: attr.name,\n attrValue,\n isRelation: false,\n ...getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap,\n attr.id,\n attr.value.type as ModelAttributeValueType\n ),\n });\n },\n (relation, sides) => {\n const relationObject =\n this.props.idObjectMap[\n relation[`${sides.that}_object_id` as RelationObjectIdKeys]\n ];\n const showKeys = getInstanceNameKeys(relationObject);\n showKeys.forEach((showKey, index) => {\n const nameOfShowKey =\n find(relationObject?.attrList, [\"id\", showKey])?.name ?? showKey;\n const id = `${\n relation[`${sides.this}_id` as RelationIdKeys]\n }.${showKey}`;\n const type = ModelAttributeValueType.STRING;\n\n fields.push({\n id,\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
|
+
{"version":3,"file":"AdvancedSearch.js","names":["ConditionType","FieldTypeConditionTypesMap","ModelAttributeValueType","STRING","Contain","NotContain","Equal","NotEqual","Empty","NotEmpty","INTEGER","Between","FLOAT","DATE","DATETIME","ENUM","ENUMS","ARR","STRUCT","IP","BOOLEAN","JSON","multiValueSearchOperators","comparisonOperator","ComparisonOperators","Like","logicalOperator","LogicalOperators","Or","NotLike","And","STRUCT_LIST","getCondition","conditionType","fieldType","label","operations","i18n","t","NS_LIBS_CMDB_INSTANCES","K","OPERATOR_EQUAL_DEFINE","operator","In","OPERATOR_NOT_EQUAL_DEFINE","NotIn","OPERATOR_CONTAIN_DEFINE","prefix","suffix","OPERATOR_NOT_CONTAIN_DEFINE","OPERATOR_IS_EMPTY_DEFINE","ElementOperators","Exists","fixedValue","OPERATOR_IS_NOT_EMPTY_DEFINE","True","False","GreaterThanOrEqual","LessThanOrEqual","OPERATOR_BETWEEN_DEFINE_TEXT_INT","OPERATOR_BETWEEN_DEFINE_TEXT_TIME","OPERATOR_BETWEEN_DEFINE_TEXT","OPERATOR_BETWEEN_DEFINE_TEXT_THE","type","convertValue","valueType","value","parseInt","parseFloat","getFieldConditionsAndValues","fieldQueryOperatorExpressionsMap","id","isRelation","relationSideId","objectId","attrId","isRelationWithNoExpression","expressions","expressionsKeys","relatedKey","findKey","v","k","startsWith","relatedExpressions","isNil","Object","keys","currentCondition","availableConditions","map","condition","length","operatorsStr","isFixedValueEqual","every","operation","push","undefined","toString","includes","queryValuesStr","values","i","find","multiValueSearchOperator","trim","split","clusterMap","join","slice","endsWith","disabled","AdvancedSearchForm","React","Component","constructor","props","valueIndex","field","fieldIndex","setState","fields","update","state","$set","hasFixedValues","some","newValues","newFields","relatedFieldIndex","findIndex","f","relatedField","relatedCondition","setFormFieldValues","e","preventDefault","autoSearch","onSearch","queries","queriesToShow","fieldToShow","forEach","fieldQuery","fieldQueryToShow","hasValue","structQueryId","isStruct","attrValue","struct_define","struct_item","index","fieldId","fieldIdToShow","Array","isArray","ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE","processAttrValueWithQuote","flatten","structId","isEqual","q","form","resetFields","computeState","componentDidUpdate","prevProps","newState","query","entries","key","firstSubQuery","compareOperators","compareOperator","subQueryValue","targetField","fieldItem","item","targetValue","isString","forEachAvailableFields","modelData","attr","regex","name","relation","sides","relationObject","idObjectMap","that","showKeys","getInstanceNameKeys","showKey","nameOfShowKey","attrList","this","fieldIds","reduce","acc","setFieldsValue","getFields","getFieldDecorator","hasBetween","style","multiSelect","FormControlTypeEnum","SELECT","minWidth","styles","conditionInputGroup","onConditionChange","separatorInput","initialValue","onValueChange","conditionInput","render","advancedSearch","advancedSearchForm","handleSearch","textAlign","SEARCH","marginLeft","handleReset","RESET","AdvancedSearch","Form","create"],"sources":["../../../src/instance-list-table/AdvancedSearch.tsx"],"sourcesContent":["import React, { ChangeEvent, FormEvent } from \"react\";\nimport update from \"immutability-helper\";\nimport {\n isEqual,\n find,\n startsWith,\n findKey,\n isNil,\n flatten,\n isString,\n isArray,\n} from \"lodash\";\nimport { Form } from \"@ant-design/compatible\";\nimport { Button, Col, Input, Row, Select } from \"antd\";\nimport { FormComponentProps } from \"@ant-design/compatible/lib/form\";\nimport { CmdbModels } from \"@next-sdk/cmdb-sdk\";\nimport {\n ComparisonOperators,\n ElementOperators,\n forEachAvailableFields,\n getInstanceNameKeys,\n LogicalOperators,\n Query,\n QueryOperatorExpressions,\n RelationIdKeys,\n RelationNameKeys,\n RelationObjectIdKeys,\n} from \"@next-libs/cmdb-utils\";\nimport { clusterMap } from \"./constants\";\nimport styles from \"./AdvancedSearch.module.css\";\nimport i18n from \"i18next\";\nimport { NS_LIBS_CMDB_INSTANCES, K } from \"../i18n/constants\";\nimport {\n FormControlTypeEnum,\n ModelAttributeFormControl,\n ModelAttributeValueType,\n} from \"../model-attribute-form-control/ModelAttributeFormControl\";\nimport {\n processAttrValueWithQuote,\n ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE,\n} from \"../processors\";\n\nexport enum ConditionType {\n Equal = \"equal\",\n NotEqual = \"notEqual\",\n Contain = \"contain\",\n NotContain = \"notContain\",\n Empty = \"empty\",\n NotEmpty = \"notEmpty\",\n Between = \"between\",\n True = \"true\",\n False = \"false\",\n}\n\ninterface ConditionOperation {\n operator: ComparisonOperators | ElementOperators;\n fixedValue?: any;\n prefix?: string;\n suffix?: string;\n}\n\ninterface Condition {\n type: ConditionType;\n label: string;\n operations: ConditionOperation[];\n}\n\nconst FieldTypeConditionTypesMap: Record<string, ConditionType[]> = {\n [ModelAttributeValueType.STRING]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.INTEGER]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.FLOAT]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.DATE]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.DATETIME]: [\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ENUM]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ENUMS]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ARR]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.STRUCT]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.IP]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.BOOLEAN]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.JSON]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n};\n\nconst multiValueSearchOperators = [\n {\n comparisonOperator: ComparisonOperators.Like,\n logicalOperator: LogicalOperators.Or,\n },\n {\n comparisonOperator: ComparisonOperators.NotLike,\n logicalOperator: LogicalOperators.And,\n },\n {\n comparisonOperator: ComparisonOperators.Equal,\n logicalOperator: LogicalOperators.Or,\n },\n {\n comparisonOperator: ComparisonOperators.NotEqual,\n logicalOperator: LogicalOperators.And,\n },\n];\nFieldTypeConditionTypesMap[ModelAttributeValueType.STRUCT_LIST] =\n FieldTypeConditionTypesMap[ModelAttributeValueType.STRUCT];\n\nexport function getCondition(\n conditionType: ConditionType,\n fieldType: ModelAttributeValueType\n): Condition {\n let label: string;\n let operations: ConditionOperation[];\n\n switch (conditionType) {\n case ConditionType.Equal:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_EQUAL_DEFINE}`);\n switch (fieldType) {\n case ModelAttributeValueType.ARR:\n operations = [\n {\n operator: ComparisonOperators.In,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.Equal,\n },\n ];\n }\n break;\n case ConditionType.NotEqual:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_NOT_EQUAL_DEFINE}`\n );\n switch (fieldType) {\n case ModelAttributeValueType.ARR:\n operations = [\n {\n operator: ComparisonOperators.NotIn,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.NotEqual,\n },\n ];\n }\n break;\n case ConditionType.Contain:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_CONTAIN_DEFINE}`);\n switch (fieldType) {\n case ModelAttributeValueType.ENUMS:\n operations = [\n {\n operator: ComparisonOperators.In,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.Like,\n prefix: \"%\",\n suffix: \"%\",\n },\n ];\n }\n break;\n case ConditionType.NotContain:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_NOT_CONTAIN_DEFINE}`\n );\n switch (fieldType) {\n case ModelAttributeValueType.ENUMS:\n operations = [\n {\n operator: ComparisonOperators.NotIn,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.NotLike,\n prefix: \"%\",\n suffix: \"%\",\n },\n ];\n }\n break;\n case ConditionType.Empty:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_IS_EMPTY_DEFINE}`);\n operations = [\n {\n operator: ElementOperators.Exists,\n fixedValue: false,\n },\n ];\n break;\n case ConditionType.NotEmpty:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_IS_NOT_EMPTY_DEFINE}`\n );\n operations = [\n {\n operator: ElementOperators.Exists,\n fixedValue: true,\n },\n ];\n break;\n case ConditionType.True:\n label = \"true\";\n operations = [\n {\n operator: ComparisonOperators.Equal,\n fixedValue: true,\n },\n ];\n break;\n case ConditionType.False:\n label = \"false\";\n operations = [\n {\n operator: ComparisonOperators.Equal,\n fixedValue: false,\n },\n ];\n break;\n case ConditionType.Between:\n operations = [\n {\n operator: ComparisonOperators.GreaterThanOrEqual,\n },\n {\n operator: ComparisonOperators.LessThanOrEqual,\n },\n ];\n switch (fieldType) {\n case ModelAttributeValueType.INTEGER:\n case ModelAttributeValueType.FLOAT:\n // label = \"在此区间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_INT}`\n );\n break;\n case ModelAttributeValueType.DATE:\n case ModelAttributeValueType.DATETIME:\n // label = \"在此期间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_TIME}`\n );\n break;\n case ModelAttributeValueType.IP:\n // label = \"范围\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT}`\n );\n break;\n default:\n // label = \"在此之间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_THE}`\n );\n }\n break;\n }\n\n return {\n type: conditionType,\n label,\n operations,\n };\n}\n\nexport function convertValue(valueType: string, value: any): any {\n if (typeof value !== \"boolean\") {\n switch (valueType) {\n case ModelAttributeValueType.INTEGER:\n return parseInt(value);\n case ModelAttributeValueType.FLOAT:\n return parseFloat(value);\n case ModelAttributeValueType.BOOLEAN:\n return value === \"true\";\n }\n }\n return value;\n}\n\nexport function getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap: Record<string, QueryOperatorExpressions>,\n id: string,\n valueType: ModelAttributeValueType,\n isRelation?: boolean,\n relationSideId?: string,\n objectId?: string,\n attrId?: string\n) {\n let isRelationWithNoExpression = false;\n let expressions = fieldQueryOperatorExpressionsMap[id];\n let expressionsKeys: string[];\n if (!expressions && isRelation) {\n isRelationWithNoExpression = true;\n const relatedKey = findKey(\n fieldQueryOperatorExpressionsMap,\n (v, k) => startsWith(k, `${relationSideId}.`) || k === relationSideId\n );\n const relatedExpressions = fieldQueryOperatorExpressionsMap[relatedKey];\n if (\n relatedExpressions &&\n !isNil(relatedExpressions[ElementOperators.Exists])\n ) {\n expressions = fieldQueryOperatorExpressionsMap[relatedKey];\n }\n }\n\n if (expressions) {\n expressionsKeys = Object.keys(expressions);\n }\n let currentCondition: Condition;\n const availableConditions = FieldTypeConditionTypesMap[valueType].map(\n (conditionType) => {\n const condition = getCondition(conditionType, valueType);\n\n if (expressionsKeys?.length) {\n const operatorsStr: string[] = [];\n // 由于当 ConditionType.Between ,operations 有两个,当用户只填选一个时,currentCondition会默认第一个选择器。与实际不符\n const isFixedValueEqual = condition.operations.every((operation) => {\n operatorsStr.push(operation.operator);\n\n if (operation.fixedValue !== undefined) {\n return (\n operation.fixedValue?.toString() ===\n expressions[operation?.operator]?.toString()\n );\n } else {\n return true;\n }\n });\n if (\n isFixedValueEqual &&\n expressionsKeys.every((operator) => operatorsStr.includes(operator))\n ) {\n currentCondition = condition;\n }\n }\n\n return condition;\n }\n );\n if (!currentCondition) {\n currentCondition = availableConditions[0];\n }\n let queryValuesStr = \"\";\n const values = currentCondition.operations.map((operation) => {\n let value: any;\n // istanbul ignore else ElementOperators.Exists时直接返回fixedValue\n if (\n expressions?.[operation.operator] !== undefined &&\n operation.operator !== ElementOperators.Exists\n ) {\n value = expressions[operation.operator];\n let values = [expressions[operation.operator]];\n const i = multiValueSearchOperators.find(\n (multiValueSearchOperator) =>\n multiValueSearchOperator.comparisonOperator === operation.operator\n );\n if (i) {\n if (\n valueType === ModelAttributeValueType.ENUM ||\n typeof expressions[operation.operator] === \"string\"\n ) {\n values = expressions[operation.operator]\n .trim()\n .split(/\\s+/)\n .map((value: string) => convertValue(valueType, value));\n if (objectId === \"CLUSTER\" && attrId === \"type\") {\n values = values.map((value) => clusterMap[value]);\n }\n }\n }\n if (\n typeof values[0] === \"string\" ||\n typeof values[0] === \"number\" ||\n typeof values[0] === \"boolean\"\n ) {\n queryValuesStr = values.join(\" \");\n values = values.map((value: string) => {\n if (operation.prefix && value.startsWith(operation.prefix)) {\n value = value.slice(operation.prefix.length);\n }\n if (operation.suffix && value.endsWith(operation.suffix)) {\n value = value.slice(0, value.length - operation.suffix.length);\n }\n return value;\n });\n value = [\n ModelAttributeValueType.ENUM,\n ModelAttributeValueType.ARR,\n ].includes(valueType)\n ? values\n : values.join(\" \");\n }\n } else {\n value = operation.fixedValue !== undefined ? operation.fixedValue : null;\n }\n\n return value;\n });\n const disabled = false;\n return {\n availableConditions,\n currentCondition,\n values,\n queryValuesStr,\n disabled,\n };\n}\n\nexport interface Field {\n id: string;\n name: string;\n attrValue: Partial<CmdbModels.ModelObjectAttrValue>;\n values: any[];\n availableConditions: Condition[];\n currentCondition: Condition;\n isRelation: boolean;\n relationSideId?: string;\n disabled?: boolean;\n}\n\nexport interface AdvancedSearchFormProps extends FormComponentProps {\n fieldIds?: string[];\n idObjectMap: Record<string, Partial<CmdbModels.ModelCmdbObject>>;\n modelData: Partial<CmdbModels.ModelCmdbObject>;\n q?: Query[];\n placeholder?: string;\n onSearch?(\n queries: Query[],\n queriesToShow?: Query[],\n fieldToShow?: Record<string, any[]>[]\n ): void;\n autoSearch?: (fields: Field[]) => void;\n fieldToShow?: Record<string, any[]>[]; // 回填高级搜索的field值(根据query回填丢失了引号信息)\n onChange?(e: ChangeEvent<HTMLInputElement>): void;\n}\n\nexport interface AdvancedSearchFormState {\n fields: Field[];\n}\n\nexport class AdvancedSearchForm extends React.Component<\n AdvancedSearchFormProps,\n AdvancedSearchFormState\n> {\n constructor(props: AdvancedSearchFormProps) {\n super(props);\n\n this.state = this.computeState();\n }\n\n componentDidUpdate(prevProps: Readonly<AdvancedSearchFormProps>): void {\n if (!isEqual(this.props.q, prevProps.q)) {\n const newState = this.computeState();\n this.setState(newState);\n\n this.setFormFieldValues(newState.fields);\n }\n }\n\n computeState(): { fields: Field[] } {\n const fieldQueryOperatorExpressionsMap: Record<\n string,\n QueryOperatorExpressions\n > = {};\n const fields: Field[] = [];\n if (this.props.q) {\n this.props.q.forEach((query) => {\n Object.entries(query).forEach(([key, expressions]) => {\n if (key === LogicalOperators.Or || key === LogicalOperators.And) {\n const firstSubQuery = (expressions as Query[])[0];\n const fieldId = Object.keys(firstSubQuery)[0];\n // 由于 ConditionType.Between 这边的 operator 是两个,由于需要支持选择一个的时候也要显示出来,这边不能将选择器合并成str吐出去\n const compareOperators = Object.keys(firstSubQuery[fieldId]);\n const compareOperator =\n compareOperators.length > 1\n ? compareOperators\n : compareOperators.join(\"\");\n let subQueryValue = \"\";\n let targetField;\n if (ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE) {\n targetField = this.props.fieldToShow?.find(\n (fieldItem) => Object.keys(fieldItem)[0] === fieldId\n );\n }\n if (!isNil(targetField)) {\n // 二维数组会有问题,\n subQueryValue = isArray(targetField[fieldId])\n ? targetField[fieldId]\n .map((item) => (isArray(item) ? item.join(\" \") : item))\n .join(\"\")\n : (targetField[fieldId] as any);\n } else {\n subQueryValue = (expressions as Query[])\n .map((query) => {\n const targetValue = (\n query[fieldId] as Record<ComparisonOperators, any>\n )[compareOperator as ComparisonOperators];\n if (\n compareOperator === ComparisonOperators.Like ||\n compareOperator === ComparisonOperators.NotLike\n ) {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `${targetValue[0]}\"${targetValue.slice(\n 1,\n targetValue.length - 1\n )}\"${targetValue[targetValue.length - 1]}`\n : targetValue;\n }\n // 对于时间选择器有两个的,不用特意将值转换成str,因为不需要这里的值\n else {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `\"${targetValue}\"`\n : targetValue;\n }\n })\n .join(\" \");\n }\n key = fieldId;\n expressions = Array.isArray(compareOperator)\n ? firstSubQuery[fieldId]\n : {\n [compareOperator]: subQueryValue,\n };\n }\n\n fieldQueryOperatorExpressionsMap[key] =\n expressions as QueryOperatorExpressions;\n });\n });\n }\n forEachAvailableFields(\n this.props.modelData,\n (attr) => {\n const attrValue: Partial<CmdbModels.ModelObjectAttrValue> & {\n isStruct?: boolean;\n } & { isClusterType?: boolean } = {};\n\n switch (attr.value.type) {\n case ModelAttributeValueType.STRUCT:\n case ModelAttributeValueType.STRUCT_LIST:\n attrValue.type = ModelAttributeValueType.STRING;\n attrValue.struct_define = attr.value.struct_define;\n attrValue.isStruct = true;\n break;\n case ModelAttributeValueType.ENUM:\n case ModelAttributeValueType.ENUMS:\n attrValue.type = attr.value.type;\n attrValue.regex = attr.value.regex;\n break;\n default:\n attrValue.type = attr.value.type;\n }\n\n fields.push({\n id: attr.id,\n name: attr.name,\n attrValue,\n isRelation: false,\n ...getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap,\n attr.id,\n attr.value.type as ModelAttributeValueType\n ),\n });\n },\n (relation, sides) => {\n const relationObject =\n this.props.idObjectMap[\n relation[`${sides.that}_object_id` as RelationObjectIdKeys]\n ];\n const showKeys = getInstanceNameKeys(relationObject);\n showKeys.forEach((showKey, index) => {\n const nameOfShowKey =\n find(relationObject?.attrList, [\"id\", showKey])?.name ?? showKey;\n const id = `${\n relation[`${sides.this}_id` as RelationIdKeys]\n }.${showKey}`;\n const type = ModelAttributeValueType.STRING;\n\n fields.push({\n id,\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,62 +1,44 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
|
|
5
4
|
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
6
|
-
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
8
|
exports.AdvancedSearchCondition = AdvancedSearchCondition;
|
|
11
9
|
exports.formatAqToShow = void 0;
|
|
12
|
-
|
|
13
10
|
var _react = _interopRequireWildcard(require("react"));
|
|
14
|
-
|
|
15
11
|
var _i18next = _interopRequireDefault(require("i18next"));
|
|
16
|
-
|
|
17
12
|
var _constants = require("../i18n/constants");
|
|
18
|
-
|
|
19
13
|
var _cmdbUtils = require("@next-libs/cmdb-utils");
|
|
20
|
-
|
|
21
14
|
var _DynamicSearch = require("./DynamicSearch");
|
|
22
|
-
|
|
23
15
|
var _lodash = require("lodash");
|
|
24
|
-
|
|
25
16
|
var _antd = require("antd");
|
|
26
|
-
|
|
27
17
|
var _AdvancedSearchConditionModule = _interopRequireDefault(require("./AdvancedSearchCondition.module.css"));
|
|
28
|
-
|
|
29
18
|
/* istanbul ignore next */
|
|
30
19
|
function newKey(fieldIds, aq) {
|
|
31
20
|
let key = "";
|
|
32
|
-
|
|
33
21
|
if (!(0, _lodash.isEmpty)(fieldIds)) {
|
|
34
22
|
key += fieldIds.join("-");
|
|
35
23
|
}
|
|
36
|
-
|
|
37
24
|
if (!(0, _lodash.isEmpty)(aq)) {
|
|
38
25
|
key += `-${aq.length}`;
|
|
39
26
|
}
|
|
40
|
-
|
|
41
27
|
return key;
|
|
42
28
|
}
|
|
43
29
|
/* istanbul ignore next */
|
|
44
|
-
|
|
45
|
-
|
|
46
30
|
const reducer = (prevState, updatedProperty) => {
|
|
47
|
-
return {
|
|
31
|
+
return {
|
|
32
|
+
...prevState,
|
|
48
33
|
...updatedProperty
|
|
49
34
|
};
|
|
50
35
|
};
|
|
51
|
-
|
|
52
36
|
const formatAqToShow = aq => {
|
|
53
37
|
let newAqToShow = [];
|
|
54
|
-
|
|
55
38
|
if (aq) {
|
|
56
39
|
aq.forEach(query => {
|
|
57
40
|
const aqToShow = Object.entries(query).map(([key, expressions]) => {
|
|
58
41
|
let newExpressions = [];
|
|
59
|
-
|
|
60
42
|
if (key === _cmdbUtils.LogicalOperators.Or || key === _cmdbUtils.LogicalOperators.And) {
|
|
61
43
|
newExpressions = [...newExpressions, ...expressions];
|
|
62
44
|
return {
|
|
@@ -70,30 +52,22 @@ const formatAqToShow = aq => {
|
|
|
70
52
|
});
|
|
71
53
|
return newAqToShow;
|
|
72
54
|
}
|
|
73
|
-
|
|
74
55
|
return newAqToShow;
|
|
75
56
|
};
|
|
76
|
-
|
|
77
57
|
exports.formatAqToShow = formatAqToShow;
|
|
78
|
-
|
|
79
58
|
function translateAqConditions(aq, fields) {
|
|
80
59
|
const conditions = [];
|
|
81
|
-
|
|
82
60
|
if (!(0, _lodash.isEmpty)(aq)) {
|
|
83
61
|
for (const query of aq) {
|
|
84
62
|
let queries = [query];
|
|
85
|
-
|
|
86
63
|
if (Object.keys(query)[0] === _cmdbUtils.LogicalOperators.Or || Object.keys(query)[0] === _cmdbUtils.LogicalOperators.And) {
|
|
87
64
|
queries = query[Object.keys(query)[0]];
|
|
88
65
|
}
|
|
89
|
-
|
|
90
66
|
queries.forEach(query => {
|
|
91
67
|
const key = Object.keys(query)[0];
|
|
92
68
|
const value = Object.values(query)[0];
|
|
93
69
|
const attr = fields.find(v => v.id === key);
|
|
94
|
-
|
|
95
70
|
const contain = _i18next.default.t(`${_constants.NS_LIBS_CMDB_INSTANCES}:${_constants.K.OPERATOR_CONTAIN_DEFINE}`);
|
|
96
|
-
|
|
97
71
|
const condition = `${attr === null || attr === void 0 ? void 0 : attr.name}:${contain}"${Object.values(value)[0].replace(/%/g, "")}"`;
|
|
98
72
|
const curCondition = {
|
|
99
73
|
attrId: key,
|
|
@@ -104,10 +78,8 @@ function translateAqConditions(aq, fields) {
|
|
|
104
78
|
});
|
|
105
79
|
}
|
|
106
80
|
}
|
|
107
|
-
|
|
108
81
|
return conditions;
|
|
109
82
|
}
|
|
110
|
-
|
|
111
83
|
function AdvancedSearchCondition(props) {
|
|
112
84
|
const [state, setState] = (0, _react.useReducer)(reducer, undefined, () => ({
|
|
113
85
|
aq: formatAqToShow(props.aq),
|
|
@@ -115,10 +87,8 @@ function AdvancedSearchCondition(props) {
|
|
|
115
87
|
fieldIds: (props.fields || []).map(v => v.id),
|
|
116
88
|
fields: props.fields || []
|
|
117
89
|
}));
|
|
118
|
-
|
|
119
90
|
const onAdvancedSearch = (queries, queriesToShow, fieldToShow) => {
|
|
120
91
|
var _props$onAdvancedSear;
|
|
121
|
-
|
|
122
92
|
setState({
|
|
123
93
|
aq: queries,
|
|
124
94
|
fieldToShow,
|
|
@@ -126,40 +96,30 @@ function AdvancedSearchCondition(props) {
|
|
|
126
96
|
});
|
|
127
97
|
(_props$onAdvancedSear = props.onAdvancedSearch) === null || _props$onAdvancedSear === void 0 ? void 0 : _props$onAdvancedSear.call(props, queries);
|
|
128
98
|
};
|
|
129
|
-
/* istanbul ignore next */
|
|
130
|
-
|
|
131
99
|
|
|
100
|
+
/* istanbul ignore next */
|
|
132
101
|
const onAdvancedSearchCloseGen = (attrId, valuesStr) => {
|
|
133
102
|
return () => {
|
|
134
103
|
var _props$onAdvancedSear2;
|
|
135
|
-
|
|
136
104
|
const queries = [];
|
|
137
105
|
const queriesToShow = [];
|
|
138
|
-
|
|
139
106
|
const isValueEqual = query => query[attrId] ? Object.values(query[attrId]).join(" ") !== valuesStr : false;
|
|
140
|
-
|
|
141
107
|
const filterAq = queries => queries.filter(v => isValueEqual(v));
|
|
142
|
-
|
|
143
108
|
const specialQueryHandler = (query, key, queries) => {
|
|
144
109
|
// $exists $gte $lte 针对为空,不为空,时间范围特殊处理
|
|
145
110
|
const isSpecial = Object.keys(query[key]).some(v => v === "$exists" || v === "$gte" || v === "$lte");
|
|
146
|
-
|
|
147
111
|
if (isSpecial) {
|
|
148
112
|
return;
|
|
149
113
|
}
|
|
150
|
-
|
|
151
114
|
queries.push(query);
|
|
152
115
|
};
|
|
153
|
-
|
|
154
116
|
const formatAqQuery = (querys, queries, isAq) => {
|
|
155
117
|
querys.forEach(query => {
|
|
156
118
|
const key = Object.keys(query)[0];
|
|
157
119
|
const isKey = key !== attrId;
|
|
158
120
|
const isStart = isAq ? isKey && !(0, _lodash.startsWith)(attrId, `${key}.`) : isKey;
|
|
159
|
-
|
|
160
121
|
if ((key === "$or" || key === "$and") && Object.keys(query[key][0])[0] === attrId) {
|
|
161
122
|
const filteredSubQueries = filterAq(query[key]);
|
|
162
|
-
|
|
163
123
|
if (filteredSubQueries.length > 0) {
|
|
164
124
|
queries.push({
|
|
165
125
|
[key]: filteredSubQueries
|
|
@@ -172,7 +132,6 @@ function AdvancedSearchCondition(props) {
|
|
|
172
132
|
}
|
|
173
133
|
});
|
|
174
134
|
};
|
|
175
|
-
|
|
176
135
|
formatAqQuery(state.aq, queries, true);
|
|
177
136
|
formatAqQuery(state.aqToShow, queriesToShow, false);
|
|
178
137
|
setState({
|
|
@@ -182,7 +141,6 @@ function AdvancedSearchCondition(props) {
|
|
|
182
141
|
(_props$onAdvancedSear2 = props.onAdvancedSearch) === null || _props$onAdvancedSear2 === void 0 ? void 0 : _props$onAdvancedSear2.call(props, queries);
|
|
183
142
|
};
|
|
184
143
|
};
|
|
185
|
-
|
|
186
144
|
const conditions = translateAqConditions(state.aqToShow, state.fields);
|
|
187
145
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
188
146
|
className: _AdvancedSearchConditionModule.default.advancedSearchWrapper
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdvancedSearchCondition.js","names":["newKey","fieldIds","aq","key","isEmpty","join","length","reducer","prevState","updatedProperty","formatAqToShow","newAqToShow","forEach","query","aqToShow","Object","entries","map","expressions","newExpressions","LogicalOperators","Or","And","translateAqConditions","fields","conditions","queries","keys","value","values","attr","find","v","id","contain","i18n","t","NS_LIBS_CMDB_INSTANCES","K","OPERATOR_CONTAIN_DEFINE","condition","name","replace","curCondition","attrId","valuesStr","push","AdvancedSearchCondition","props","state","setState","useReducer","undefined","onAdvancedSearch","queriesToShow","fieldToShow","onAdvancedSearchCloseGen","isValueEqual","filterAq","filter","specialQueryHandler","isSpecial","some","formatAqQuery","querys","isAq","isKey","isStart","startsWith","filteredSubQueries","isInstanceFilterForm","styles","advancedSearchWrapper","marginBottom","hideSearchConditions","searchConditions","CURRENT_FILTER_REQUIREMENTS","uniqueId"],"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
|
+
{"version":3,"file":"AdvancedSearchCondition.js","names":["newKey","fieldIds","aq","key","isEmpty","join","length","reducer","prevState","updatedProperty","formatAqToShow","newAqToShow","forEach","query","aqToShow","Object","entries","map","expressions","newExpressions","LogicalOperators","Or","And","translateAqConditions","fields","conditions","queries","keys","value","values","attr","find","v","id","contain","i18n","t","NS_LIBS_CMDB_INSTANCES","K","OPERATOR_CONTAIN_DEFINE","condition","name","replace","curCondition","attrId","valuesStr","push","AdvancedSearchCondition","props","state","setState","useReducer","undefined","onAdvancedSearch","queriesToShow","fieldToShow","onAdvancedSearchCloseGen","isValueEqual","filterAq","filter","specialQueryHandler","isSpecial","some","formatAqQuery","querys","isAq","isKey","isStart","startsWith","filteredSubQueries","isInstanceFilterForm","styles","advancedSearchWrapper","marginBottom","hideSearchConditions","searchConditions","CURRENT_FILTER_REQUIREMENTS","uniqueId"],"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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"}
|