@next-libs/cmdb-instances 6.23.0 → 6.25.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/CHANGELOG.md +30 -0
- package/dist/cjs/cmdb-instances-select-panel/CmdbInstancesSelectPanel.js +4 -2
- package/dist/cjs/cmdb-instances-select-panel/CmdbInstancesSelectPanel.js.map +1 -1
- package/dist/cjs/index.js +52 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/instance-list/InstanceList.js +6 -6
- package/dist/cjs/instance-list/InstanceList.js.map +1 -1
- package/dist/cjs/instance-list-modal/InstanceListModal.js +4 -3
- package/dist/cjs/instance-list-modal/InstanceListModal.js.map +1 -1
- package/dist/cjs/instance-list-table/AdvancedSearch.js +30 -61
- package/dist/cjs/instance-list-table/AdvancedSearch.js.map +1 -1
- package/dist/cjs/processors.js.map +1 -1
- package/dist/esm/cmdb-instances-select-panel/CmdbInstancesSelectPanel.js +4 -2
- package/dist/esm/cmdb-instances-select-panel/CmdbInstancesSelectPanel.js.map +1 -1
- package/dist/esm/index.js +3 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/instance-list/InstanceList.js +3 -3
- package/dist/esm/instance-list/InstanceList.js.map +1 -1
- package/dist/esm/instance-list-modal/InstanceListModal.js +3 -2
- package/dist/esm/instance-list-modal/InstanceListModal.js.map +1 -1
- package/dist/esm/instance-list-table/AdvancedSearch.js +1 -29
- package/dist/esm/instance-list-table/AdvancedSearch.js.map +1 -1
- package/dist/esm/processors.js.map +1 -1
- package/dist/types/cmdb-instances-select-panel/CmdbInstancesSelectPanel.d.ts +2 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/instance-list/InstanceList.d.ts +2 -1
- package/dist/types/instance-list-modal/InstanceListModal.d.ts +2 -1
- package/dist/types/instance-list-table/AdvancedSearch.d.ts +1 -23
- package/dist/types/processors.d.ts +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/instance-list-modal/InstanceListModal.tsx"],"names":["React","useState","WarningOutlined","Modal","Button","i18n","K","NS_LIBS_CMDB_INSTANCES","InstanceApi_postSearch","InstanceList","addResourceBundle","InstanceListModal","props","selectedInstanceListTemp","setSelectedInstanceListTemp","handleOk","length","every","i","resp","objectId","query","instanceId","$in","page_size","onSelected","onSelectedV2","list","map","selectedInstance","handleCancel","selectedRowKeys","onCancel","handleSelectionChange","event","selectedItems","selectedKeys","presetConfigs","fixAliveHosts","_agentStatus","useEffect","filter","Boolean","renderFooter","singleSelect","color","marginRight","t","ONLY_ONE_INSTANCE_TO_ALLOWED","selectDisabled","CLOSE","CANCEL","CONFIRM","title","visible","modalZIndex","maxHeight","overflow","aq","Object","values","objectMap","permission","instanceSourceQuery","searchDisabled","filterInstanceSourceDisabled","advancedSearchDisabled","aliveHostsDisabled","relatedToMeDisabled","moreButtonsDisabled","sortDisabled","showSizeChanger","pageSizeOptions","pageSize","defaultQuery","enableSearchByApp","hideSearchConditions","isInstanceFilterForm"],"mappings":"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","sourcesContent":["import React, { useState } from \"react\";\nimport { WarningOutlined } from \"@ant-design/icons\";\nimport { Modal, Button } from \"antd\";\nimport i18n from \"i18next\";\nimport { K, NS_LIBS_CMDB_INSTANCES } from \"../i18n/constants\";\nimport { CmdbModels, InstanceApi_postSearch } from \"@next-sdk/cmdb-sdk\";\nimport { InstanceList } from \"../instance-list/InstanceList\";\nimport { InstanceListPresetConfigs } from \"../instance-list-table/interfaces\";\nimport { Query } from \"../instance-list-table\";\nimport { addResourceBundle } from \"../i18n\";\naddResourceBundle();\nexport interface InstanceListModalProps {\n objectMap: { [key: string]: Partial<CmdbModels.ModelCmdbObject> };\n objectId: string;\n visible: boolean;\n title: React.ReactNode | string;\n query?: any;\n presetConfigs?: InstanceListPresetConfigs;\n permission?: string[];\n aq?: Query[];\n instanceSourceQuery?: string;\n isInstanceFilterForm?: boolean;\n searchDisabled?: boolean;\n advancedSearchDisabled?: boolean;\n aliveHostsDisabled?: boolean;\n relatedToMeDisabled?: boolean;\n moreButtonsDisabled?: boolean;\n filterInstanceSourceDisabled?: boolean;\n sortDisabled?: boolean;\n selectDisabled?: boolean;\n singleSelect?: boolean;\n selectedRowKeys?: string[];\n onCancel: () => void;\n onSelected?: (instanceIds: any[]) => void;\n onSelectedV2?: (instanceDataList: any[]) => void;\n modalZIndex?: number;\n pageSize?: number;\n showSizeChanger?: boolean;\n pageSizeOptions?: string[];\n defaultQuery?: { [fieldId: string]: any }[];\n enableSearchByApp?: boolean;\n hideSearchConditions?: boolean;\n}\n\nexport function InstanceListModal(\n props: InstanceListModalProps\n): React.ReactElement {\n const [selectedInstanceListTemp, setSelectedInstanceListTemp] = useState([]);\n\n // istanbul ignore next\n const handleOk = async () => {\n if (\n selectedInstanceListTemp.length &&\n selectedInstanceListTemp.every((i) => typeof i === \"string\")\n ) {\n const resp = await InstanceApi_postSearch(props.objectId, {\n query: {\n instanceId: {\n $in: selectedInstanceListTemp,\n },\n },\n page_size: selectedInstanceListTemp.length,\n });\n props.onSelected?.(selectedInstanceListTemp);\n props.onSelectedV2?.(resp.list);\n return;\n }\n\n props.onSelected?.(\n selectedInstanceListTemp.map(\n (selectedInstance) => selectedInstance.instanceId\n )\n );\n props.onSelectedV2?.(selectedInstanceListTemp);\n };\n // istanbul ignore next\n const handleCancel = () => {\n // reset selected\n setSelectedInstanceListTemp(props.selectedRowKeys ?? []);\n props.onCancel();\n };\n // istanbul ignore next\n const handleSelectionChange = (event: {\n selectedKeys: string[];\n selectedItems: any[];\n }) => {\n if (event.selectedItems.length < event.selectedKeys.length) {\n setSelectedInstanceListTemp(event.selectedKeys);\n } else {\n setSelectedInstanceListTemp(event.selectedItems);\n }\n };\n\n const presetConfigs = props.presetConfigs ?? {\n query: props.query,\n };\n\n const fixAliveHosts = presetConfigs.query?._agentStatus === \"正常\";\n\n React.useEffect(() => {\n if (props.selectedRowKeys) {\n setSelectedInstanceListTemp(props.selectedRowKeys.filter(Boolean));\n }\n }, [props.selectedRowKeys]);\n\n const renderFooter = (): React.ReactElement => {\n return (\n <>\n {props.singleSelect && selectedInstanceListTemp.length > 1 && (\n <span style={{ color: \"#ff0016\", marginRight: \"20px\" }}>\n <WarningOutlined\n style={{ color: \"#ff0016\", marginRight: \"10px\" }}\n />\n {i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.ONLY_ONE_INSTANCE_TO_ALLOWED}`\n )}\n </span>\n )}\n {props.selectDisabled && (\n <Button key=\"back\" onClick={props.onCancel}>\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.CLOSE}`)}\n </Button>\n )}\n {!props.selectDisabled && (\n <>\n <Button key=\"back\" onClick={handleCancel} type=\"text\">\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.CANCEL}`)}\n </Button>\n <Button\n key=\"submit\"\n type=\"primary\"\n onClick={handleOk}\n disabled={\n !selectedInstanceListTemp.length ||\n (props.singleSelect && selectedInstanceListTemp.length > 1)\n }\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.CONFIRM}`)}\n </Button>\n </>\n )}\n </>\n );\n };\n\n return (\n <Modal\n title={props.title}\n visible={props.visible}\n width={900}\n onOk={handleOk}\n onCancel={handleCancel}\n destroyOnClose={true}\n footer={renderFooter()}\n zIndex={props.modalZIndex ?? 1000}\n >\n <div style={{ maxHeight: 720, overflow: \"auto\" }}>\n <InstanceList\n aq={props.aq}\n objectId={props.objectId}\n objectList={Object.values(props.objectMap)}\n presetConfigs={presetConfigs}\n permission={props.permission}\n aliveHosts={fixAliveHosts}\n fixAliveHosts={fixAliveHosts}\n instanceSourceQuery={props.instanceSourceQuery}\n searchDisabled={props.searchDisabled}\n filterInstanceSourceDisabled={props.filterInstanceSourceDisabled}\n advancedSearchDisabled={props.advancedSearchDisabled}\n aliveHostsDisabled={props.aliveHostsDisabled}\n relatedToMeDisabled={props.relatedToMeDisabled}\n moreButtonsDisabled={props.moreButtonsDisabled}\n sortDisabled={props.sortDisabled}\n selectDisabled={props.selectDisabled}\n selectedRowKeys={props.selectedRowKeys}\n onSelectionChange={handleSelectionChange}\n showSizeChanger={props.showSizeChanger}\n pageSizeOptions={props.pageSizeOptions}\n pageSize={props.pageSize || 10}\n defaultQuery={props.defaultQuery}\n enableSearchByApp={props.enableSearchByApp}\n hideSearchConditions={props.hideSearchConditions}\n isInstanceFilterForm={props.isInstanceFilterForm}\n />\n </div>\n </Modal>\n );\n}\n"],"file":"InstanceListModal.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/instance-list-modal/InstanceListModal.tsx"],"names":["React","useState","WarningOutlined","Modal","Button","i18n","InstanceApi_postSearch","K","NS_LIBS_CMDB_INSTANCES","InstanceList","addResourceBundle","InstanceListModal","props","selectedInstanceListTemp","setSelectedInstanceListTemp","handleOk","length","every","i","resp","objectId","query","instanceId","$in","page_size","onSelected","onSelectedV2","list","map","selectedInstance","handleCancel","selectedRowKeys","onCancel","handleSelectionChange","event","selectedItems","selectedKeys","presetConfigs","fixAliveHosts","_agentStatus","useEffect","filter","Boolean","renderFooter","singleSelect","color","marginRight","t","ONLY_ONE_INSTANCE_TO_ALLOWED","selectDisabled","CLOSE","CANCEL","CONFIRM","title","visible","modalZIndex","maxHeight","overflow","aq","Object","values","objectMap","permission","instanceSourceQuery","searchDisabled","filterInstanceSourceDisabled","advancedSearchDisabled","aliveHostsDisabled","relatedToMeDisabled","moreButtonsDisabled","sortDisabled","showSizeChanger","pageSizeOptions","pageSize","defaultQuery","enableSearchByApp","hideSearchConditions","isInstanceFilterForm","ipCopy"],"mappings":"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","sourcesContent":["import React, { useState } from \"react\";\nimport { WarningOutlined } from \"@ant-design/icons\";\nimport { Modal, Button } from \"antd\";\nimport i18n from \"i18next\";\nimport { CmdbModels, InstanceApi_postSearch } from \"@next-sdk/cmdb-sdk\";\nimport { Query } from \"@next-libs/cmdb-utils\";\nimport { K, NS_LIBS_CMDB_INSTANCES } from \"../i18n/constants\";\nimport { InstanceList } from \"../instance-list/InstanceList\";\nimport { InstanceListPresetConfigs } from \"../instance-list-table/interfaces\";\nimport { addResourceBundle } from \"../i18n\";\naddResourceBundle();\nexport interface InstanceListModalProps {\n objectMap: { [key: string]: Partial<CmdbModels.ModelCmdbObject> };\n objectId: string;\n visible: boolean;\n title: React.ReactNode | string;\n query?: any;\n presetConfigs?: InstanceListPresetConfigs;\n permission?: string[];\n aq?: Query[];\n instanceSourceQuery?: string;\n isInstanceFilterForm?: boolean;\n searchDisabled?: boolean;\n advancedSearchDisabled?: boolean;\n aliveHostsDisabled?: boolean;\n relatedToMeDisabled?: boolean;\n moreButtonsDisabled?: boolean;\n filterInstanceSourceDisabled?: boolean;\n sortDisabled?: boolean;\n selectDisabled?: boolean;\n ipCopy?: boolean;\n singleSelect?: boolean;\n selectedRowKeys?: string[];\n onCancel: () => void;\n onSelected?: (instanceIds: any[]) => void;\n onSelectedV2?: (instanceDataList: any[]) => void;\n modalZIndex?: number;\n pageSize?: number;\n showSizeChanger?: boolean;\n pageSizeOptions?: string[];\n defaultQuery?: { [fieldId: string]: any }[];\n enableSearchByApp?: boolean;\n hideSearchConditions?: boolean;\n}\n\nexport function InstanceListModal(\n props: InstanceListModalProps\n): React.ReactElement {\n const [selectedInstanceListTemp, setSelectedInstanceListTemp] = useState([]);\n\n // istanbul ignore next\n const handleOk = async () => {\n if (\n selectedInstanceListTemp.length &&\n selectedInstanceListTemp.every((i) => typeof i === \"string\")\n ) {\n const resp = await InstanceApi_postSearch(props.objectId, {\n query: {\n instanceId: {\n $in: selectedInstanceListTemp,\n },\n },\n page_size: selectedInstanceListTemp.length,\n });\n props.onSelected?.(selectedInstanceListTemp);\n props.onSelectedV2?.(resp.list);\n return;\n }\n\n props.onSelected?.(\n selectedInstanceListTemp.map(\n (selectedInstance) => selectedInstance.instanceId\n )\n );\n props.onSelectedV2?.(selectedInstanceListTemp);\n };\n // istanbul ignore next\n const handleCancel = () => {\n // reset selected\n setSelectedInstanceListTemp(props.selectedRowKeys ?? []);\n props.onCancel();\n };\n // istanbul ignore next\n const handleSelectionChange = (event: {\n selectedKeys: string[];\n selectedItems: any[];\n }) => {\n if (event.selectedItems.length < event.selectedKeys.length) {\n setSelectedInstanceListTemp(event.selectedKeys);\n } else {\n setSelectedInstanceListTemp(event.selectedItems);\n }\n };\n\n const presetConfigs = props.presetConfigs ?? {\n query: props.query,\n };\n\n const fixAliveHosts = presetConfigs.query?._agentStatus === \"正常\";\n\n React.useEffect(() => {\n if (props.selectedRowKeys) {\n setSelectedInstanceListTemp(props.selectedRowKeys.filter(Boolean));\n }\n }, [props.selectedRowKeys]);\n\n const renderFooter = (): React.ReactElement => {\n return (\n <>\n {props.singleSelect && selectedInstanceListTemp.length > 1 && (\n <span style={{ color: \"#ff0016\", marginRight: \"20px\" }}>\n <WarningOutlined\n style={{ color: \"#ff0016\", marginRight: \"10px\" }}\n />\n {i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.ONLY_ONE_INSTANCE_TO_ALLOWED}`\n )}\n </span>\n )}\n {props.selectDisabled && (\n <Button key=\"back\" onClick={props.onCancel}>\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.CLOSE}`)}\n </Button>\n )}\n {!props.selectDisabled && (\n <>\n <Button key=\"back\" onClick={handleCancel} type=\"text\">\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.CANCEL}`)}\n </Button>\n <Button\n key=\"submit\"\n type=\"primary\"\n onClick={handleOk}\n disabled={\n !selectedInstanceListTemp.length ||\n (props.singleSelect && selectedInstanceListTemp.length > 1)\n }\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.CONFIRM}`)}\n </Button>\n </>\n )}\n </>\n );\n };\n return (\n <Modal\n title={props.title}\n visible={props.visible}\n width={900}\n onOk={handleOk}\n onCancel={handleCancel}\n destroyOnClose={true}\n footer={renderFooter()}\n zIndex={props.modalZIndex ?? 1000}\n >\n <div style={{ maxHeight: 720, overflow: \"auto\" }}>\n <InstanceList\n aq={props.aq}\n objectId={props.objectId}\n objectList={Object.values(props.objectMap)}\n presetConfigs={presetConfigs}\n permission={props.permission}\n aliveHosts={fixAliveHosts}\n fixAliveHosts={fixAliveHosts}\n instanceSourceQuery={props.instanceSourceQuery}\n searchDisabled={props.searchDisabled}\n filterInstanceSourceDisabled={props.filterInstanceSourceDisabled}\n advancedSearchDisabled={props.advancedSearchDisabled}\n aliveHostsDisabled={props.aliveHostsDisabled}\n relatedToMeDisabled={props.relatedToMeDisabled}\n moreButtonsDisabled={props.moreButtonsDisabled}\n sortDisabled={props.sortDisabled}\n selectDisabled={props.selectDisabled}\n selectedRowKeys={props.selectedRowKeys}\n onSelectionChange={handleSelectionChange}\n showSizeChanger={props.showSizeChanger}\n pageSizeOptions={props.pageSizeOptions}\n pageSize={props.pageSize || 10}\n defaultQuery={props.defaultQuery}\n enableSearchByApp={props.enableSearchByApp}\n hideSearchConditions={props.hideSearchConditions}\n isInstanceFilterForm={props.isInstanceFilterForm}\n ipCopy={props.ipCopy}\n />\n </div>\n </Modal>\n );\n}\n"],"file":"InstanceListModal.js"}
|
|
@@ -5,41 +5,13 @@ import update from "immutability-helper";
|
|
|
5
5
|
import { isEqual, find, startsWith, findKey, isNil, flatten, isString, isArray } from "lodash";
|
|
6
6
|
import { Form } from "@ant-design/compatible";
|
|
7
7
|
import { Button, Col, Input, Row, Select } from "antd";
|
|
8
|
-
import { forEachAvailableFields, getInstanceNameKeys } from "@next-libs/cmdb-utils";
|
|
8
|
+
import { ComparisonOperators, ElementOperators, forEachAvailableFields, getInstanceNameKeys, LogicalOperators } from "@next-libs/cmdb-utils";
|
|
9
9
|
import { clusterMap } from "./constants";
|
|
10
10
|
import styles from "./AdvancedSearch.module.css";
|
|
11
11
|
import i18n from "i18next";
|
|
12
12
|
import { NS_LIBS_CMDB_INSTANCES, K } from "../i18n/constants";
|
|
13
13
|
import { FormControlTypeEnum, ModelAttributeFormControl, ModelAttributeValueType } from "../model-attribute-form-control/ModelAttributeFormControl";
|
|
14
14
|
import { processAttrValueWithQuote, ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE } from "../processors";
|
|
15
|
-
export var ComparisonOperators;
|
|
16
|
-
|
|
17
|
-
(function (ComparisonOperators) {
|
|
18
|
-
ComparisonOperators["Equal"] = "$eq";
|
|
19
|
-
ComparisonOperators["NotEqual"] = "$ne";
|
|
20
|
-
ComparisonOperators["Like"] = "$like";
|
|
21
|
-
ComparisonOperators["NotLike"] = "$nlike";
|
|
22
|
-
ComparisonOperators["GreaterThan"] = "$gt";
|
|
23
|
-
ComparisonOperators["GreaterThanOrEqual"] = "$gte";
|
|
24
|
-
ComparisonOperators["LessThan"] = "$lt";
|
|
25
|
-
ComparisonOperators["LessThanOrEqual"] = "$lte";
|
|
26
|
-
ComparisonOperators["In"] = "$in";
|
|
27
|
-
ComparisonOperators["NotIn"] = "$nin";
|
|
28
|
-
})(ComparisonOperators || (ComparisonOperators = {}));
|
|
29
|
-
|
|
30
|
-
export var ElementOperators;
|
|
31
|
-
|
|
32
|
-
(function (ElementOperators) {
|
|
33
|
-
ElementOperators["Exists"] = "$exists";
|
|
34
|
-
})(ElementOperators || (ElementOperators = {}));
|
|
35
|
-
|
|
36
|
-
export var LogicalOperators;
|
|
37
|
-
|
|
38
|
-
(function (LogicalOperators) {
|
|
39
|
-
LogicalOperators["And"] = "$and";
|
|
40
|
-
LogicalOperators["Or"] = "$or";
|
|
41
|
-
})(LogicalOperators || (LogicalOperators = {}));
|
|
42
|
-
|
|
43
15
|
export var ConditionType;
|
|
44
16
|
|
|
45
17
|
(function (ConditionType) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/instance-list-table/AdvancedSearch.tsx"],"names":["React","update","isEqual","find","startsWith","findKey","isNil","flatten","isString","isArray","Form","Button","Col","Input","Row","Select","forEachAvailableFields","getInstanceNameKeys","clusterMap","styles","i18n","NS_LIBS_CMDB_INSTANCES","K","FormControlTypeEnum","ModelAttributeFormControl","ModelAttributeValueType","processAttrValueWithQuote","ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE","ComparisonOperators","ElementOperators","LogicalOperators","ConditionType","FieldTypeConditionTypesMap","STRING","Contain","NotContain","Equal","NotEqual","Empty","NotEmpty","INTEGER","Between","FLOAT","DATE","DATETIME","ENUM","ENUMS","ARR","STRUCT","IP","BOOLEAN","JSON","multiValueSearchOperators","comparisonOperator","Like","logicalOperator","Or","NotLike","And","STRUCT_LIST","getCondition","conditionType","fieldType","label","operations","t","OPERATOR_EQUAL_DEFINE","operator","In","OPERATOR_NOT_EQUAL_DEFINE","NotIn","OPERATOR_CONTAIN_DEFINE","prefix","suffix","OPERATOR_NOT_CONTAIN_DEFINE","OPERATOR_IS_EMPTY_DEFINE","Exists","fixedValue","OPERATOR_IS_NOT_EMPTY_DEFINE","True","False","GreaterThanOrEqual","LessThanOrEqual","OPERATOR_BETWEEN_DEFINE_TEXT_INT","OPERATOR_BETWEEN_DEFINE_TEXT_TIME","OPERATOR_BETWEEN_DEFINE_TEXT","OPERATOR_BETWEEN_DEFINE_TEXT_THE","type","convertValue","valueType","value","parseInt","parseFloat","getFieldConditionsAndValues","fieldQueryOperatorExpressionsMap","id","isRelation","relationSideId","objectId","attrId","isRelationWithNoExpression","expressions","expressionsKeysStr","relatedKey","v","k","relatedExpressions","Object","keys","join","currentCondition","availableConditions","map","condition","operatorsStr","isFixedValueEqual","every","operation","undefined","queryValuesStr","values","i","multiValueSearchOperator","trim","split","slice","length","endsWith","includes","disabled","AdvancedSearchForm","Component","constructor","props","valueIndex","field","fieldIndex","setState","fields","state","$set","hasFixedValues","some","newValues","newFields","relatedFieldIndex","findIndex","f","relatedField","relatedCondition","setFormFieldValues","e","preventDefault","autoSearch","onSearch","queries","queriesToShow","fieldToShow","forEach","fieldQuery","fieldQueryToShow","hasValue","structQueryId","isStruct","attrValue","struct_define","struct_item","index","fieldId","fieldIdToShow","Array","structId","push","q","form","resetFields","computeState","componentDidUpdate","prevProps","newState","query","entries","key","firstSubQuery","compareOperator","subQueryValue","targetField","fieldItem","item","targetValue","modelData","attr","regex","name","relation","sides","relationObject","idObjectMap","that","showKeys","showKey","nameOfShowKey","attrList","this","fieldIds","reduce","acc","setFieldsValue","getFields","getFieldDecorator","hasBetween","style","multiSelect","SELECT","minWidth","conditionInputGroup","onConditionChange","separatorInput","initialValue","onValueChange","conditionInput","render","advancedSearch","advancedSearchForm","handleSearch","textAlign","SEARCH","marginLeft","handleReset","RESET","AdvancedSearch","create"],"mappings":"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","sourcesContent":["import React, { ChangeEvent, FormEvent } from \"react\";\nimport update from \"immutability-helper\";\nimport {\n isEqual,\n find,\n startsWith,\n findKey,\n isNil,\n flatten,\n isString,\n isArray,\n} from \"lodash\";\nimport { Form } from \"@ant-design/compatible\";\nimport { Button, Col, Input, Row, Select } from \"antd\";\nimport { FormComponentProps } from \"@ant-design/compatible/lib/form\";\nimport { CmdbModels } from \"@next-sdk/cmdb-sdk\";\nimport {\n forEachAvailableFields,\n getInstanceNameKeys,\n RelationIdKeys,\n RelationNameKeys,\n RelationObjectIdKeys,\n} from \"@next-libs/cmdb-utils\";\nimport { clusterMap } from \"./constants\";\nimport styles from \"./AdvancedSearch.module.css\";\nimport i18n from \"i18next\";\nimport { NS_LIBS_CMDB_INSTANCES, K } from \"../i18n/constants\";\nimport {\n FormControlTypeEnum,\n ModelAttributeFormControl,\n ModelAttributeValueType,\n} from \"../model-attribute-form-control/ModelAttributeFormControl\";\nimport {\n processAttrValueWithQuote,\n ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE,\n} from \"../processors\";\n\nexport enum ComparisonOperators {\n Equal = \"$eq\",\n NotEqual = \"$ne\",\n Like = \"$like\",\n NotLike = \"$nlike\",\n GreaterThan = \"$gt\",\n GreaterThanOrEqual = \"$gte\",\n LessThan = \"$lt\",\n LessThanOrEqual = \"$lte\",\n In = \"$in\",\n NotIn = \"$nin\",\n}\n\nexport enum ElementOperators {\n Exists = \"$exists\",\n}\n\nexport enum LogicalOperators {\n And = \"$and\",\n Or = \"$or\",\n}\n\nexport type QueryOperatorExpressions = Partial<\n Record<ComparisonOperators | ElementOperators, any>\n>;\n\nexport interface Query {\n [fieldOrLogical: string]: QueryOperatorExpressions | Query[];\n}\n\nexport enum ConditionType {\n Equal = \"equal\",\n NotEqual = \"notEqual\",\n Contain = \"contain\",\n NotContain = \"notContain\",\n Empty = \"empty\",\n NotEmpty = \"notEmpty\",\n Between = \"between\",\n True = \"true\",\n False = \"false\",\n}\n\ninterface ConditionOperation {\n operator: ComparisonOperators | ElementOperators;\n fixedValue?: any;\n prefix?: string;\n suffix?: string;\n}\n\ninterface Condition {\n type: ConditionType;\n label: string;\n operations: ConditionOperation[];\n}\n\nconst FieldTypeConditionTypesMap: Record<string, ConditionType[]> = {\n [ModelAttributeValueType.STRING]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.INTEGER]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.FLOAT]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.DATE]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.DATETIME]: [\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ENUM]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ENUMS]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ARR]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.STRUCT]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.IP]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.BOOLEAN]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.JSON]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n};\n\nconst multiValueSearchOperators = [\n {\n comparisonOperator: ComparisonOperators.Like,\n logicalOperator: LogicalOperators.Or,\n },\n {\n comparisonOperator: ComparisonOperators.NotLike,\n logicalOperator: LogicalOperators.And,\n },\n {\n comparisonOperator: ComparisonOperators.Equal,\n logicalOperator: LogicalOperators.Or,\n },\n {\n comparisonOperator: ComparisonOperators.NotEqual,\n logicalOperator: LogicalOperators.And,\n },\n];\nFieldTypeConditionTypesMap[ModelAttributeValueType.STRUCT_LIST] =\n FieldTypeConditionTypesMap[ModelAttributeValueType.STRUCT];\n\nexport function getCondition(\n conditionType: ConditionType,\n fieldType: ModelAttributeValueType\n): Condition {\n let label: string;\n let operations: ConditionOperation[];\n\n switch (conditionType) {\n case ConditionType.Equal:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_EQUAL_DEFINE}`);\n switch (fieldType) {\n case ModelAttributeValueType.ARR:\n operations = [\n {\n operator: ComparisonOperators.In,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.Equal,\n },\n ];\n }\n break;\n case ConditionType.NotEqual:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_NOT_EQUAL_DEFINE}`\n );\n switch (fieldType) {\n case ModelAttributeValueType.ARR:\n operations = [\n {\n operator: ComparisonOperators.NotIn,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.NotEqual,\n },\n ];\n }\n break;\n case ConditionType.Contain:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_CONTAIN_DEFINE}`);\n switch (fieldType) {\n case ModelAttributeValueType.ENUMS:\n operations = [\n {\n operator: ComparisonOperators.In,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.Like,\n prefix: \"%\",\n suffix: \"%\",\n },\n ];\n }\n break;\n case ConditionType.NotContain:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_NOT_CONTAIN_DEFINE}`\n );\n switch (fieldType) {\n case ModelAttributeValueType.ENUMS:\n operations = [\n {\n operator: ComparisonOperators.NotIn,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.NotLike,\n prefix: \"%\",\n suffix: \"%\",\n },\n ];\n }\n break;\n case ConditionType.Empty:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_IS_EMPTY_DEFINE}`);\n operations = [\n {\n operator: ElementOperators.Exists,\n fixedValue: false,\n },\n ];\n break;\n case ConditionType.NotEmpty:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_IS_NOT_EMPTY_DEFINE}`\n );\n operations = [\n {\n operator: ElementOperators.Exists,\n fixedValue: true,\n },\n ];\n break;\n case ConditionType.True:\n label = \"true\";\n operations = [\n {\n operator: ComparisonOperators.Equal,\n fixedValue: true,\n },\n ];\n break;\n case ConditionType.False:\n label = \"false\";\n operations = [\n {\n operator: ComparisonOperators.Equal,\n fixedValue: false,\n },\n ];\n break;\n case ConditionType.Between:\n operations = [\n {\n operator: ComparisonOperators.GreaterThanOrEqual,\n },\n {\n operator: ComparisonOperators.LessThanOrEqual,\n },\n ];\n switch (fieldType) {\n case ModelAttributeValueType.INTEGER:\n case ModelAttributeValueType.FLOAT:\n // label = \"在此区间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_INT}`\n );\n break;\n case ModelAttributeValueType.DATE:\n case ModelAttributeValueType.DATETIME:\n // label = \"在此期间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_TIME}`\n );\n break;\n case ModelAttributeValueType.IP:\n // label = \"范围\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT}`\n );\n break;\n default:\n // label = \"在此之间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_THE}`\n );\n }\n break;\n }\n\n return {\n type: conditionType,\n label,\n operations,\n };\n}\n\nexport function convertValue(valueType: string, value: any): any {\n if (typeof value !== \"boolean\") {\n switch (valueType) {\n case ModelAttributeValueType.INTEGER:\n return parseInt(value);\n case ModelAttributeValueType.FLOAT:\n return parseFloat(value);\n case ModelAttributeValueType.BOOLEAN:\n return value === \"true\";\n }\n }\n return value;\n}\n\nexport function getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap: Record<string, QueryOperatorExpressions>,\n id: string,\n valueType: ModelAttributeValueType,\n isRelation?: boolean,\n relationSideId?: string,\n objectId?: string,\n attrId?: string\n) {\n let isRelationWithNoExpression = false;\n let expressions = fieldQueryOperatorExpressionsMap[id];\n let expressionsKeysStr: string;\n if (!expressions && isRelation) {\n isRelationWithNoExpression = true;\n const relatedKey = findKey(\n fieldQueryOperatorExpressionsMap,\n (v, k) => startsWith(k, `${relationSideId}.`) || k === relationSideId\n );\n const relatedExpressions = fieldQueryOperatorExpressionsMap[relatedKey];\n if (\n relatedExpressions &&\n !isNil(relatedExpressions[ElementOperators.Exists])\n ) {\n expressions = fieldQueryOperatorExpressionsMap[relatedKey];\n }\n }\n\n if (expressions) {\n expressionsKeysStr = Object.keys(expressions).join(\"\");\n }\n let currentCondition: Condition;\n const availableConditions = FieldTypeConditionTypesMap[valueType].map(\n (conditionType) => {\n const condition = getCondition(conditionType, valueType);\n\n if (expressionsKeysStr) {\n let operatorsStr = \"\";\n const isFixedValueEqual = condition.operations.every((operation) => {\n operatorsStr += operation.operator;\n\n if (operation.fixedValue !== undefined) {\n return operation.fixedValue === expressions[operation.operator];\n } else {\n return true;\n }\n });\n if (isFixedValueEqual && operatorsStr === expressionsKeysStr) {\n currentCondition = condition;\n }\n }\n\n return condition;\n }\n );\n if (!currentCondition) {\n currentCondition = availableConditions[0];\n }\n let queryValuesStr = \"\";\n const values = currentCondition.operations.map((operation) => {\n let value: any;\n // istanbul ignore else\n if (expressions?.[operation.operator] !== undefined) {\n value = expressions[operation.operator];\n let values = [expressions[operation.operator]];\n const i = multiValueSearchOperators.find(\n (multiValueSearchOperator) =>\n multiValueSearchOperator.comparisonOperator === operation.operator\n );\n if (i) {\n if (\n valueType === ModelAttributeValueType.ENUM ||\n typeof expressions[operation.operator] === \"string\"\n ) {\n values = expressions[operation.operator]\n .trim()\n .split(/\\s+/)\n .map((value: string) => convertValue(valueType, value));\n if (objectId === \"CLUSTER\" && attrId === \"type\") {\n values = values.map((value) => clusterMap[value]);\n }\n }\n }\n if (\n typeof values[0] === \"string\" ||\n typeof values[0] === \"number\" ||\n (operation.operator !== ElementOperators.Exists &&\n typeof values[0] === \"boolean\")\n ) {\n queryValuesStr = values.join(\" \");\n values = values.map((value: string) => {\n if (operation.prefix && value.startsWith(operation.prefix)) {\n value = value.slice(operation.prefix.length);\n }\n if (operation.suffix && value.endsWith(operation.suffix)) {\n value = value.slice(0, value.length - operation.suffix.length);\n }\n return value;\n });\n value = [\n ModelAttributeValueType.ENUM,\n ModelAttributeValueType.ARR,\n ].includes(valueType)\n ? values\n : values.join(\" \");\n }\n } else {\n value = operation.fixedValue !== undefined ? operation.fixedValue : null;\n }\n\n return value;\n });\n\n const disabled = false;\n\n // if (\n // isRelation &&\n // expressions &&\n // currentCondition.operations[0].operator === ElementOperators.Exists &&\n // isRelationWithNoExpression\n // ) {\n // disabled = true;\n // currentCondition = availableConditions[0];\n // values = [null];\n // queryValuesStr = \"\";\n // }\n\n return {\n availableConditions,\n currentCondition,\n values,\n queryValuesStr,\n disabled,\n };\n}\n\nexport interface Field {\n id: string;\n name: string;\n attrValue: Partial<CmdbModels.ModelObjectAttrValue>;\n values: any[];\n availableConditions: Condition[];\n currentCondition: Condition;\n isRelation: boolean;\n relationSideId?: string;\n disabled?: boolean;\n}\n\nexport interface AdvancedSearchFormProps extends FormComponentProps {\n fieldIds?: string[];\n idObjectMap: Record<string, Partial<CmdbModels.ModelCmdbObject>>;\n modelData: Partial<CmdbModels.ModelCmdbObject>;\n q?: Query[];\n placeholder?: string;\n onSearch?(\n queries: Query[],\n queriesToShow?: Query[],\n fieldToShow?: Record<string, any[]>[]\n ): void;\n autoSearch?: (fields: Field[]) => void;\n fieldToShow?: Record<string, any[]>[]; // 回填高级搜索的field值(根据query回填丢失了引号信息)\n onChange?(e: ChangeEvent<HTMLInputElement>): void;\n}\n\nexport interface AdvancedSearchFormState {\n fields: Field[];\n}\n\nexport class AdvancedSearchForm extends React.Component<\n AdvancedSearchFormProps,\n AdvancedSearchFormState\n> {\n constructor(props: AdvancedSearchFormProps) {\n super(props);\n\n this.state = this.computeState();\n }\n\n componentDidUpdate(prevProps: Readonly<AdvancedSearchFormProps>): void {\n if (!isEqual(this.props.q, prevProps.q)) {\n const newState = this.computeState();\n this.setState(newState);\n\n this.setFormFieldValues(newState.fields);\n }\n }\n\n computeState(): { fields: Field[] } {\n const fieldQueryOperatorExpressionsMap: Record<\n string,\n QueryOperatorExpressions\n > = {};\n const fields: Field[] = [];\n if (this.props.q) {\n this.props.q.forEach((query) => {\n Object.entries(query).forEach(([key, expressions]) => {\n if (key === LogicalOperators.Or || key === LogicalOperators.And) {\n const firstSubQuery = (expressions as Query[])[0];\n const fieldId = Object.keys(firstSubQuery)[0];\n const compareOperator = Object.keys(firstSubQuery[fieldId])[0];\n let subQueryValue = \"\";\n let targetField;\n if (ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE) {\n targetField = this.props.fieldToShow?.find(\n (fieldItem) => Object.keys(fieldItem)[0] === fieldId\n );\n }\n if (!isNil(targetField)) {\n // 二维数组会有问题,\n subQueryValue = isArray(targetField[fieldId])\n ? targetField[fieldId]\n .map((item) => (isArray(item) ? item.join(\" \") : item))\n .join(\"\")\n : (targetField[fieldId] as any);\n } else {\n subQueryValue = (expressions as Query[])\n .map((query) => {\n const targetValue = (\n query[fieldId] as Record<ComparisonOperators, any>\n )[compareOperator as ComparisonOperators];\n if (\n compareOperator === ComparisonOperators.Like ||\n compareOperator === ComparisonOperators.NotLike\n ) {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `${targetValue[0]}\"${targetValue.slice(\n 1,\n targetValue.length - 1\n )}\"${targetValue[targetValue.length - 1]}`\n : targetValue;\n } else {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `\"${targetValue}\"`\n : targetValue;\n }\n })\n .join(\" \");\n }\n key = fieldId;\n expressions = {\n [compareOperator]: subQueryValue,\n };\n }\n\n fieldQueryOperatorExpressionsMap[key] =\n expressions as QueryOperatorExpressions;\n });\n });\n }\n forEachAvailableFields(\n this.props.modelData,\n (attr) => {\n const attrValue: Partial<CmdbModels.ModelObjectAttrValue> & {\n isStruct?: boolean;\n } & { isClusterType?: boolean } = {};\n\n switch (attr.value.type) {\n case ModelAttributeValueType.STRUCT:\n case ModelAttributeValueType.STRUCT_LIST:\n attrValue.type = ModelAttributeValueType.STRING;\n attrValue.struct_define = attr.value.struct_define;\n attrValue.isStruct = true;\n break;\n case ModelAttributeValueType.ENUM:\n case ModelAttributeValueType.ENUMS:\n attrValue.type = attr.value.type;\n attrValue.regex = attr.value.regex;\n break;\n default:\n attrValue.type = attr.value.type;\n }\n\n fields.push({\n id: attr.id,\n name: attr.name,\n attrValue,\n isRelation: false,\n ...getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap,\n attr.id,\n attr.value.type as ModelAttributeValueType\n ),\n });\n },\n (relation, sides) => {\n const relationObject =\n this.props.idObjectMap[\n relation[`${sides.that}_object_id` as RelationObjectIdKeys]\n ];\n const showKeys = getInstanceNameKeys(relationObject);\n showKeys.forEach((showKey, index) => {\n const nameOfShowKey =\n find(relationObject?.attrList, [\"id\", showKey])?.name ?? showKey;\n const id = `${\n relation[`${sides.this}_id` as RelationIdKeys]\n }.${showKey}`;\n const type = ModelAttributeValueType.STRING;\n\n fields.push({\n id,\n name: `${\n relation[`${sides.this}_name` as RelationNameKeys]\n }(${nameOfShowKey})`,\n attrValue: { type },\n isRelation: true,\n relationSideId: relation[`${sides.this}_id` as RelationIdKeys],\n ...getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap,\n id,\n type,\n true,\n relation[`${sides.this}_id` as RelationNameKeys]\n ),\n });\n });\n },\n this.props.fieldIds\n );\n\n return { fields };\n }\n\n setFormFieldValues(fields: Field[]): void {\n const values = fields.reduce<{ [key: string]: any }>((acc, field) => {\n field.values.map((value, valueIndex) => {\n const operation = field.currentCondition.operations[valueIndex];\n acc[`${field.id}[${valueIndex}]`] =\n operation.fixedValue === undefined ? value : \"\";\n });\n return acc;\n }, {});\n this.props.form.setFieldsValue(values);\n }\n\n onValueChange = (\n value: any,\n valueIndex: number,\n field: Field,\n fieldIndex: number\n ) => {\n this.setState({\n fields: update(this.state.fields, {\n [fieldIndex]: { values: { [valueIndex]: { $set: value } } },\n }),\n });\n };\n\n onConditionChange = (\n value: ConditionType,\n field: Field,\n fieldIndex: number\n ) => {\n const hasFixedValues = field.currentCondition.operations.some(\n (operation) => operation.fixedValue !== undefined\n );\n\n const condition = field.availableConditions.find(\n (condition) => condition.type === value\n );\n let newValues = condition.operations.map((operation) =>\n operation.fixedValue !== undefined ? operation.fixedValue : null\n );\n if (\n newValues.every((value) => value === null) &&\n !hasFixedValues &&\n this.state.fields[fieldIndex].values.length === newValues.length\n ) {\n newValues = this.state.fields[fieldIndex].values;\n }\n\n let newFields = update(this.state.fields, {\n [fieldIndex]: {\n currentCondition: { $set: condition },\n values: {\n $set: newValues,\n },\n },\n });\n\n const relatedFieldIndex = newFields.findIndex(\n (f) =>\n f.isRelation &&\n f.relationSideId === field.relationSideId &&\n f.id !== field.id\n );\n if (relatedFieldIndex !== -1) {\n const relatedField = newFields[relatedFieldIndex];\n const relatedCondition = relatedField.availableConditions.find(\n (condition) => condition.type === value\n );\n if (condition.operations[0].operator === ElementOperators.Exists) {\n newFields = update(newFields, {\n [relatedFieldIndex]: {\n currentCondition: { $set: relatedCondition },\n values: {\n $set: [null],\n },\n },\n });\n } else if (\n relatedField.currentCondition.operations[0].operator ===\n ElementOperators.Exists\n ) {\n newFields = update(newFields, {\n [relatedFieldIndex]: {\n currentCondition: { $set: relatedField.availableConditions[0] },\n values: {\n $set: [null],\n },\n },\n });\n }\n }\n\n this.setState({\n fields: newFields,\n });\n\n this.setFormFieldValues(newFields);\n };\n\n getFields() {\n const { getFieldDecorator } = this.props.form;\n const hasBetween = this.state.fields.some((field) =>\n [\n ModelAttributeValueType.IP,\n ModelAttributeValueType.DATE,\n ModelAttributeValueType.DATETIME,\n ].includes(field.attrValue.type as ModelAttributeValueType)\n );\n return this.state.fields.map((field, fieldIndex) => {\n let type: string;\n let style: React.CSSProperties;\n let attrValue: any = field.attrValue;\n let multiSelect = false;\n switch (field.attrValue.type) {\n case ModelAttributeValueType.INTEGER:\n case ModelAttributeValueType.FLOAT:\n attrValue = {\n type: ModelAttributeValueType.STRING,\n };\n break;\n case ModelAttributeValueType.ENUM:\n case ModelAttributeValueType.ENUMS:\n type = FormControlTypeEnum.SELECT;\n multiSelect = true;\n break;\n case ModelAttributeValueType.DATETIME:\n style = { minWidth: \"auto\" };\n break;\n }\n //高级搜索这里即使是json格式,也用input输入框进行搜索\n if ((attrValue as any).type === \"json\") {\n attrValue = { ...attrValue, type: \"str\" };\n }\n return (\n <Col span={hasBetween ? 12 : 8} key={field.id}>\n <Form.Item label={field.name}>\n <Input.Group className={styles.conditionInputGroup} compact>\n <Select\n dropdownMatchSelectWidth={false}\n value={field.currentCondition.type}\n onChange={(value: ConditionType) =>\n this.onConditionChange(value, field, fieldIndex)\n }\n disabled={field.disabled}\n >\n {field.availableConditions.map((condition) => (\n <Select.Option value={condition.type} key={condition.type}>\n {condition.label}\n </Select.Option>\n ))}\n </Select>\n {field.values.map((value, valueIndex) => {\n const operation = field.currentCondition.operations[valueIndex];\n\n return (\n <React.Fragment\n key={`${field.currentCondition.type}-${operation.operator}`}\n >\n {valueIndex > 0 && (\n <Input\n className={styles.separatorInput}\n placeholder=\"~\"\n disabled\n />\n )}\n {getFieldDecorator(`${field.id}[${valueIndex}]`, {\n initialValue:\n operation.fixedValue === undefined ? value : \"\",\n })(\n operation.fixedValue === undefined && !field.disabled ? (\n <ModelAttributeFormControl\n type={type}\n attribute={{\n id: field.id,\n name: field.name,\n value: attrValue,\n }}\n objectId={this.props.modelData.objectId}\n multiSelect={multiSelect}\n onChange={(value: any) =>\n this.onValueChange(\n value,\n valueIndex,\n field,\n fieldIndex\n )\n }\n className={styles.conditionInput}\n style={style}\n />\n ) : (\n <Input disabled />\n )\n )}\n </React.Fragment>\n );\n })}\n </Input.Group>\n </Form.Item>\n </Col>\n );\n });\n }\n\n handleSearch = (e: FormEvent<any>): void => {\n e.preventDefault();\n if (this.props?.autoSearch) this.props.autoSearch(this.state.fields);\n if (this.props.onSearch) {\n // 当过滤字段为relation并且过滤条件为ElementOperators.Exists的时候,发起后台请求的搜索queries与负责前端展示的query不同。需要额外处理。\n let queries: Query[] = [];\n let queriesToShow: Query[] = [];\n const fieldToShow: Record<string, any[]>[] = [];\n this.state.fields.forEach((field) => {\n const expressions: QueryOperatorExpressions = {};\n let fieldQuery: Query = { [field.id]: expressions };\n let fieldQueryToShow: Query = { [field.id]: expressions };\n let hasValue = false;\n let structQueryId: string[];\n const isStruct = !!(field.attrValue as any).isStruct;\n if (isStruct) {\n structQueryId = field.attrValue.struct_define.map(\n (struct_item) => `${field.id}.${struct_item.id}`\n );\n }\n field.values.forEach((value, index) => {\n const operation = field.currentCondition.operations[index];\n const fieldId =\n field.isRelation && ElementOperators.Exists === operation.operator\n ? field.relationSideId\n : field.id;\n fieldQuery = { [fieldId]: expressions };\n\n const fieldIdToShow = field.id;\n fieldQueryToShow = { [fieldIdToShow]: expressions };\n\n if (\n value !== null &&\n value !== \"\" &&\n !(Array.isArray(value) && value.length === 0)\n ) {\n const multiValueSearchOperator = multiValueSearchOperators.find(\n (operator) => operator.comparisonOperator === operation.operator\n );\n if (multiValueSearchOperator) {\n let values: any[];\n if (\n field.attrValue.type === ModelAttributeValueType.ENUM ||\n field.attrValue.type === ModelAttributeValueType.ARR\n ) {\n values = value;\n } else if (typeof value === \"string\") {\n if (\n !ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE ||\n !value.includes('\"')\n ) {\n values = value\n .trim()\n .split(/\\s+/)\n .map((value) => convertValue(field.attrValue.type, value));\n } else {\n values = processAttrValueWithQuote(value, []);\n }\n } else {\n values = [value];\n }\n if (values.length) {\n if (isStruct) {\n fieldQuery = {\n [multiValueSearchOperator.logicalOperator]: flatten(\n values.map((value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n\n return structQueryId.map(\n (structId: string | number) => ({\n [structId]: {\n [operation.operator]: value,\n },\n })\n );\n })\n ),\n };\n } else {\n fieldQuery = {\n [multiValueSearchOperator.logicalOperator]: values.map(\n (value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n return {\n [fieldId]: {\n [operation.operator]: value,\n },\n };\n }\n ),\n };\n }\n fieldQueryToShow = {\n [multiValueSearchOperator.logicalOperator]: values.map(\n (value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n return {\n [fieldIdToShow]: {\n [operation.operator]: value,\n },\n };\n }\n ),\n };\n hasValue = true;\n fieldToShow.push({ [field.id]: field.values });\n }\n } else {\n value = convertValue(field.attrValue.type, value);\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n expressions[operation.operator] = value;\n hasValue = true;\n fieldToShow.push({ [field.id]: field.values });\n }\n }\n });\n if (hasValue) {\n queries.push(fieldQuery);\n queriesToShow.push(fieldQueryToShow);\n }\n });\n if (queries.length === 0) {\n queries = undefined;\n queriesToShow = undefined;\n }\n if (!isEqual(this.props.q, queries)) {\n this.props.onSearch(queries, queriesToShow, fieldToShow);\n }\n }\n };\n\n handleReset = () => {\n if (this.props.autoSearch) this.props.autoSearch([]);\n this.props.onSearch([], [], []);\n this.props.form.resetFields();\n };\n\n render(): React.ReactNode {\n return (\n <div className={styles.advancedSearch}>\n <Form\n layout=\"vertical\"\n className={styles.advancedSearchForm}\n onSubmit={this.handleSearch}\n >\n <Row gutter={50}>{this.getFields()}</Row>\n <Row>\n <Col span={24} style={{ textAlign: \"right\" }}>\n <Button\n type=\"primary\"\n htmlType=\"submit\"\n data-testid=\"submit-button\"\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.SEARCH}`)}\n </Button>\n <Button\n style={{ marginLeft: 8 }}\n onClick={this.handleReset}\n data-testid=\"reset-button\"\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.RESET}`)}\n </Button>\n </Col>\n </Row>\n </Form>\n </div>\n );\n }\n}\n\nexport const AdvancedSearch = Form.create<AdvancedSearchFormProps>({\n name: \"advanced_search\",\n})(AdvancedSearchForm);\n"],"file":"AdvancedSearch.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/instance-list-table/AdvancedSearch.tsx"],"names":["React","update","isEqual","find","startsWith","findKey","isNil","flatten","isString","isArray","Form","Button","Col","Input","Row","Select","ComparisonOperators","ElementOperators","forEachAvailableFields","getInstanceNameKeys","LogicalOperators","clusterMap","styles","i18n","NS_LIBS_CMDB_INSTANCES","K","FormControlTypeEnum","ModelAttributeFormControl","ModelAttributeValueType","processAttrValueWithQuote","ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE","ConditionType","FieldTypeConditionTypesMap","STRING","Contain","NotContain","Equal","NotEqual","Empty","NotEmpty","INTEGER","Between","FLOAT","DATE","DATETIME","ENUM","ENUMS","ARR","STRUCT","IP","BOOLEAN","JSON","multiValueSearchOperators","comparisonOperator","Like","logicalOperator","Or","NotLike","And","STRUCT_LIST","getCondition","conditionType","fieldType","label","operations","t","OPERATOR_EQUAL_DEFINE","operator","In","OPERATOR_NOT_EQUAL_DEFINE","NotIn","OPERATOR_CONTAIN_DEFINE","prefix","suffix","OPERATOR_NOT_CONTAIN_DEFINE","OPERATOR_IS_EMPTY_DEFINE","Exists","fixedValue","OPERATOR_IS_NOT_EMPTY_DEFINE","True","False","GreaterThanOrEqual","LessThanOrEqual","OPERATOR_BETWEEN_DEFINE_TEXT_INT","OPERATOR_BETWEEN_DEFINE_TEXT_TIME","OPERATOR_BETWEEN_DEFINE_TEXT","OPERATOR_BETWEEN_DEFINE_TEXT_THE","type","convertValue","valueType","value","parseInt","parseFloat","getFieldConditionsAndValues","fieldQueryOperatorExpressionsMap","id","isRelation","relationSideId","objectId","attrId","isRelationWithNoExpression","expressions","expressionsKeysStr","relatedKey","v","k","relatedExpressions","Object","keys","join","currentCondition","availableConditions","map","condition","operatorsStr","isFixedValueEqual","every","operation","undefined","queryValuesStr","values","i","multiValueSearchOperator","trim","split","slice","length","endsWith","includes","disabled","AdvancedSearchForm","Component","constructor","props","valueIndex","field","fieldIndex","setState","fields","state","$set","hasFixedValues","some","newValues","newFields","relatedFieldIndex","findIndex","f","relatedField","relatedCondition","setFormFieldValues","e","preventDefault","autoSearch","onSearch","queries","queriesToShow","fieldToShow","forEach","fieldQuery","fieldQueryToShow","hasValue","structQueryId","isStruct","attrValue","struct_define","struct_item","index","fieldId","fieldIdToShow","Array","structId","push","q","form","resetFields","computeState","componentDidUpdate","prevProps","newState","query","entries","key","firstSubQuery","compareOperator","subQueryValue","targetField","fieldItem","item","targetValue","modelData","attr","regex","name","relation","sides","relationObject","idObjectMap","that","showKeys","showKey","nameOfShowKey","attrList","this","fieldIds","reduce","acc","setFieldsValue","getFields","getFieldDecorator","hasBetween","style","multiSelect","SELECT","minWidth","conditionInputGroup","onConditionChange","separatorInput","initialValue","onValueChange","conditionInput","render","advancedSearch","advancedSearchForm","handleSearch","textAlign","SEARCH","marginLeft","handleReset","RESET","AdvancedSearch","create"],"mappings":"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","sourcesContent":["import React, { ChangeEvent, FormEvent } from \"react\";\nimport update from \"immutability-helper\";\nimport {\n isEqual,\n find,\n startsWith,\n findKey,\n isNil,\n flatten,\n isString,\n isArray,\n} from \"lodash\";\nimport { Form } from \"@ant-design/compatible\";\nimport { Button, Col, Input, Row, Select } from \"antd\";\nimport { FormComponentProps } from \"@ant-design/compatible/lib/form\";\nimport { CmdbModels } from \"@next-sdk/cmdb-sdk\";\nimport {\n ComparisonOperators,\n ElementOperators,\n forEachAvailableFields,\n getInstanceNameKeys,\n LogicalOperators,\n Query,\n QueryOperatorExpressions,\n RelationIdKeys,\n RelationNameKeys,\n RelationObjectIdKeys,\n} from \"@next-libs/cmdb-utils\";\nimport { clusterMap } from \"./constants\";\nimport styles from \"./AdvancedSearch.module.css\";\nimport i18n from \"i18next\";\nimport { NS_LIBS_CMDB_INSTANCES, K } from \"../i18n/constants\";\nimport {\n FormControlTypeEnum,\n ModelAttributeFormControl,\n ModelAttributeValueType,\n} from \"../model-attribute-form-control/ModelAttributeFormControl\";\nimport {\n processAttrValueWithQuote,\n ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE,\n} from \"../processors\";\n\nexport enum ConditionType {\n Equal = \"equal\",\n NotEqual = \"notEqual\",\n Contain = \"contain\",\n NotContain = \"notContain\",\n Empty = \"empty\",\n NotEmpty = \"notEmpty\",\n Between = \"between\",\n True = \"true\",\n False = \"false\",\n}\n\ninterface ConditionOperation {\n operator: ComparisonOperators | ElementOperators;\n fixedValue?: any;\n prefix?: string;\n suffix?: string;\n}\n\ninterface Condition {\n type: ConditionType;\n label: string;\n operations: ConditionOperation[];\n}\n\nconst FieldTypeConditionTypesMap: Record<string, ConditionType[]> = {\n [ModelAttributeValueType.STRING]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.INTEGER]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.FLOAT]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.DATE]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.DATETIME]: [\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ENUM]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ENUMS]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ARR]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.STRUCT]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.IP]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.BOOLEAN]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.JSON]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n};\n\nconst multiValueSearchOperators = [\n {\n comparisonOperator: ComparisonOperators.Like,\n logicalOperator: LogicalOperators.Or,\n },\n {\n comparisonOperator: ComparisonOperators.NotLike,\n logicalOperator: LogicalOperators.And,\n },\n {\n comparisonOperator: ComparisonOperators.Equal,\n logicalOperator: LogicalOperators.Or,\n },\n {\n comparisonOperator: ComparisonOperators.NotEqual,\n logicalOperator: LogicalOperators.And,\n },\n];\nFieldTypeConditionTypesMap[ModelAttributeValueType.STRUCT_LIST] =\n FieldTypeConditionTypesMap[ModelAttributeValueType.STRUCT];\n\nexport function getCondition(\n conditionType: ConditionType,\n fieldType: ModelAttributeValueType\n): Condition {\n let label: string;\n let operations: ConditionOperation[];\n\n switch (conditionType) {\n case ConditionType.Equal:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_EQUAL_DEFINE}`);\n switch (fieldType) {\n case ModelAttributeValueType.ARR:\n operations = [\n {\n operator: ComparisonOperators.In,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.Equal,\n },\n ];\n }\n break;\n case ConditionType.NotEqual:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_NOT_EQUAL_DEFINE}`\n );\n switch (fieldType) {\n case ModelAttributeValueType.ARR:\n operations = [\n {\n operator: ComparisonOperators.NotIn,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.NotEqual,\n },\n ];\n }\n break;\n case ConditionType.Contain:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_CONTAIN_DEFINE}`);\n switch (fieldType) {\n case ModelAttributeValueType.ENUMS:\n operations = [\n {\n operator: ComparisonOperators.In,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.Like,\n prefix: \"%\",\n suffix: \"%\",\n },\n ];\n }\n break;\n case ConditionType.NotContain:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_NOT_CONTAIN_DEFINE}`\n );\n switch (fieldType) {\n case ModelAttributeValueType.ENUMS:\n operations = [\n {\n operator: ComparisonOperators.NotIn,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.NotLike,\n prefix: \"%\",\n suffix: \"%\",\n },\n ];\n }\n break;\n case ConditionType.Empty:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_IS_EMPTY_DEFINE}`);\n operations = [\n {\n operator: ElementOperators.Exists,\n fixedValue: false,\n },\n ];\n break;\n case ConditionType.NotEmpty:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_IS_NOT_EMPTY_DEFINE}`\n );\n operations = [\n {\n operator: ElementOperators.Exists,\n fixedValue: true,\n },\n ];\n break;\n case ConditionType.True:\n label = \"true\";\n operations = [\n {\n operator: ComparisonOperators.Equal,\n fixedValue: true,\n },\n ];\n break;\n case ConditionType.False:\n label = \"false\";\n operations = [\n {\n operator: ComparisonOperators.Equal,\n fixedValue: false,\n },\n ];\n break;\n case ConditionType.Between:\n operations = [\n {\n operator: ComparisonOperators.GreaterThanOrEqual,\n },\n {\n operator: ComparisonOperators.LessThanOrEqual,\n },\n ];\n switch (fieldType) {\n case ModelAttributeValueType.INTEGER:\n case ModelAttributeValueType.FLOAT:\n // label = \"在此区间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_INT}`\n );\n break;\n case ModelAttributeValueType.DATE:\n case ModelAttributeValueType.DATETIME:\n // label = \"在此期间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_TIME}`\n );\n break;\n case ModelAttributeValueType.IP:\n // label = \"范围\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT}`\n );\n break;\n default:\n // label = \"在此之间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_THE}`\n );\n }\n break;\n }\n\n return {\n type: conditionType,\n label,\n operations,\n };\n}\n\nexport function convertValue(valueType: string, value: any): any {\n if (typeof value !== \"boolean\") {\n switch (valueType) {\n case ModelAttributeValueType.INTEGER:\n return parseInt(value);\n case ModelAttributeValueType.FLOAT:\n return parseFloat(value);\n case ModelAttributeValueType.BOOLEAN:\n return value === \"true\";\n }\n }\n return value;\n}\n\nexport function getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap: Record<string, QueryOperatorExpressions>,\n id: string,\n valueType: ModelAttributeValueType,\n isRelation?: boolean,\n relationSideId?: string,\n objectId?: string,\n attrId?: string\n) {\n let isRelationWithNoExpression = false;\n let expressions = fieldQueryOperatorExpressionsMap[id];\n let expressionsKeysStr: string;\n if (!expressions && isRelation) {\n isRelationWithNoExpression = true;\n const relatedKey = findKey(\n fieldQueryOperatorExpressionsMap,\n (v, k) => startsWith(k, `${relationSideId}.`) || k === relationSideId\n );\n const relatedExpressions = fieldQueryOperatorExpressionsMap[relatedKey];\n if (\n relatedExpressions &&\n !isNil(relatedExpressions[ElementOperators.Exists])\n ) {\n expressions = fieldQueryOperatorExpressionsMap[relatedKey];\n }\n }\n\n if (expressions) {\n expressionsKeysStr = Object.keys(expressions).join(\"\");\n }\n let currentCondition: Condition;\n const availableConditions = FieldTypeConditionTypesMap[valueType].map(\n (conditionType) => {\n const condition = getCondition(conditionType, valueType);\n\n if (expressionsKeysStr) {\n let operatorsStr = \"\";\n const isFixedValueEqual = condition.operations.every((operation) => {\n operatorsStr += operation.operator;\n\n if (operation.fixedValue !== undefined) {\n return operation.fixedValue === expressions[operation.operator];\n } else {\n return true;\n }\n });\n if (isFixedValueEqual && operatorsStr === expressionsKeysStr) {\n currentCondition = condition;\n }\n }\n\n return condition;\n }\n );\n if (!currentCondition) {\n currentCondition = availableConditions[0];\n }\n let queryValuesStr = \"\";\n const values = currentCondition.operations.map((operation) => {\n let value: any;\n // istanbul ignore else\n if (expressions?.[operation.operator] !== undefined) {\n value = expressions[operation.operator];\n let values = [expressions[operation.operator]];\n const i = multiValueSearchOperators.find(\n (multiValueSearchOperator) =>\n multiValueSearchOperator.comparisonOperator === operation.operator\n );\n if (i) {\n if (\n valueType === ModelAttributeValueType.ENUM ||\n typeof expressions[operation.operator] === \"string\"\n ) {\n values = expressions[operation.operator]\n .trim()\n .split(/\\s+/)\n .map((value: string) => convertValue(valueType, value));\n if (objectId === \"CLUSTER\" && attrId === \"type\") {\n values = values.map((value) => clusterMap[value]);\n }\n }\n }\n if (\n typeof values[0] === \"string\" ||\n typeof values[0] === \"number\" ||\n (operation.operator !== ElementOperators.Exists &&\n typeof values[0] === \"boolean\")\n ) {\n queryValuesStr = values.join(\" \");\n values = values.map((value: string) => {\n if (operation.prefix && value.startsWith(operation.prefix)) {\n value = value.slice(operation.prefix.length);\n }\n if (operation.suffix && value.endsWith(operation.suffix)) {\n value = value.slice(0, value.length - operation.suffix.length);\n }\n return value;\n });\n value = [\n ModelAttributeValueType.ENUM,\n ModelAttributeValueType.ARR,\n ].includes(valueType)\n ? values\n : values.join(\" \");\n }\n } else {\n value = operation.fixedValue !== undefined ? operation.fixedValue : null;\n }\n\n return value;\n });\n\n const disabled = false;\n\n // if (\n // isRelation &&\n // expressions &&\n // currentCondition.operations[0].operator === ElementOperators.Exists &&\n // isRelationWithNoExpression\n // ) {\n // disabled = true;\n // currentCondition = availableConditions[0];\n // values = [null];\n // queryValuesStr = \"\";\n // }\n\n return {\n availableConditions,\n currentCondition,\n values,\n queryValuesStr,\n disabled,\n };\n}\n\nexport interface Field {\n id: string;\n name: string;\n attrValue: Partial<CmdbModels.ModelObjectAttrValue>;\n values: any[];\n availableConditions: Condition[];\n currentCondition: Condition;\n isRelation: boolean;\n relationSideId?: string;\n disabled?: boolean;\n}\n\nexport interface AdvancedSearchFormProps extends FormComponentProps {\n fieldIds?: string[];\n idObjectMap: Record<string, Partial<CmdbModels.ModelCmdbObject>>;\n modelData: Partial<CmdbModels.ModelCmdbObject>;\n q?: Query[];\n placeholder?: string;\n onSearch?(\n queries: Query[],\n queriesToShow?: Query[],\n fieldToShow?: Record<string, any[]>[]\n ): void;\n autoSearch?: (fields: Field[]) => void;\n fieldToShow?: Record<string, any[]>[]; // 回填高级搜索的field值(根据query回填丢失了引号信息)\n onChange?(e: ChangeEvent<HTMLInputElement>): void;\n}\n\nexport interface AdvancedSearchFormState {\n fields: Field[];\n}\n\nexport class AdvancedSearchForm extends React.Component<\n AdvancedSearchFormProps,\n AdvancedSearchFormState\n> {\n constructor(props: AdvancedSearchFormProps) {\n super(props);\n\n this.state = this.computeState();\n }\n\n componentDidUpdate(prevProps: Readonly<AdvancedSearchFormProps>): void {\n if (!isEqual(this.props.q, prevProps.q)) {\n const newState = this.computeState();\n this.setState(newState);\n\n this.setFormFieldValues(newState.fields);\n }\n }\n\n computeState(): { fields: Field[] } {\n const fieldQueryOperatorExpressionsMap: Record<\n string,\n QueryOperatorExpressions\n > = {};\n const fields: Field[] = [];\n if (this.props.q) {\n this.props.q.forEach((query) => {\n Object.entries(query).forEach(([key, expressions]) => {\n if (key === LogicalOperators.Or || key === LogicalOperators.And) {\n const firstSubQuery = (expressions as Query[])[0];\n const fieldId = Object.keys(firstSubQuery)[0];\n const compareOperator = Object.keys(firstSubQuery[fieldId])[0];\n let subQueryValue = \"\";\n let targetField;\n if (ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE) {\n targetField = this.props.fieldToShow?.find(\n (fieldItem) => Object.keys(fieldItem)[0] === fieldId\n );\n }\n if (!isNil(targetField)) {\n // 二维数组会有问题,\n subQueryValue = isArray(targetField[fieldId])\n ? targetField[fieldId]\n .map((item) => (isArray(item) ? item.join(\" \") : item))\n .join(\"\")\n : (targetField[fieldId] as any);\n } else {\n subQueryValue = (expressions as Query[])\n .map((query) => {\n const targetValue = (\n query[fieldId] as Record<ComparisonOperators, any>\n )[compareOperator as ComparisonOperators];\n if (\n compareOperator === ComparisonOperators.Like ||\n compareOperator === ComparisonOperators.NotLike\n ) {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `${targetValue[0]}\"${targetValue.slice(\n 1,\n targetValue.length - 1\n )}\"${targetValue[targetValue.length - 1]}`\n : targetValue;\n } else {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `\"${targetValue}\"`\n : targetValue;\n }\n })\n .join(\" \");\n }\n key = fieldId;\n expressions = {\n [compareOperator]: subQueryValue,\n };\n }\n\n fieldQueryOperatorExpressionsMap[key] =\n expressions as QueryOperatorExpressions;\n });\n });\n }\n forEachAvailableFields(\n this.props.modelData,\n (attr) => {\n const attrValue: Partial<CmdbModels.ModelObjectAttrValue> & {\n isStruct?: boolean;\n } & { isClusterType?: boolean } = {};\n\n switch (attr.value.type) {\n case ModelAttributeValueType.STRUCT:\n case ModelAttributeValueType.STRUCT_LIST:\n attrValue.type = ModelAttributeValueType.STRING;\n attrValue.struct_define = attr.value.struct_define;\n attrValue.isStruct = true;\n break;\n case ModelAttributeValueType.ENUM:\n case ModelAttributeValueType.ENUMS:\n attrValue.type = attr.value.type;\n attrValue.regex = attr.value.regex;\n break;\n default:\n attrValue.type = attr.value.type;\n }\n\n fields.push({\n id: attr.id,\n name: attr.name,\n attrValue,\n isRelation: false,\n ...getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap,\n attr.id,\n attr.value.type as ModelAttributeValueType\n ),\n });\n },\n (relation, sides) => {\n const relationObject =\n this.props.idObjectMap[\n relation[`${sides.that}_object_id` as RelationObjectIdKeys]\n ];\n const showKeys = getInstanceNameKeys(relationObject);\n showKeys.forEach((showKey, index) => {\n const nameOfShowKey =\n find(relationObject?.attrList, [\"id\", showKey])?.name ?? showKey;\n const id = `${\n relation[`${sides.this}_id` as RelationIdKeys]\n }.${showKey}`;\n const type = ModelAttributeValueType.STRING;\n\n fields.push({\n id,\n name: `${\n relation[`${sides.this}_name` as RelationNameKeys]\n }(${nameOfShowKey})`,\n attrValue: { type },\n isRelation: true,\n relationSideId: relation[`${sides.this}_id` as RelationIdKeys],\n ...getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap,\n id,\n type,\n true,\n relation[`${sides.this}_id` as RelationNameKeys]\n ),\n });\n });\n },\n this.props.fieldIds\n );\n\n return { fields };\n }\n\n setFormFieldValues(fields: Field[]): void {\n const values = fields.reduce<{ [key: string]: any }>((acc, field) => {\n field.values.map((value, valueIndex) => {\n const operation = field.currentCondition.operations[valueIndex];\n acc[`${field.id}[${valueIndex}]`] =\n operation.fixedValue === undefined ? value : \"\";\n });\n return acc;\n }, {});\n this.props.form.setFieldsValue(values);\n }\n\n onValueChange = (\n value: any,\n valueIndex: number,\n field: Field,\n fieldIndex: number\n ) => {\n this.setState({\n fields: update(this.state.fields, {\n [fieldIndex]: { values: { [valueIndex]: { $set: value } } },\n }),\n });\n };\n\n onConditionChange = (\n value: ConditionType,\n field: Field,\n fieldIndex: number\n ) => {\n const hasFixedValues = field.currentCondition.operations.some(\n (operation) => operation.fixedValue !== undefined\n );\n\n const condition = field.availableConditions.find(\n (condition) => condition.type === value\n );\n let newValues = condition.operations.map((operation) =>\n operation.fixedValue !== undefined ? operation.fixedValue : null\n );\n if (\n newValues.every((value) => value === null) &&\n !hasFixedValues &&\n this.state.fields[fieldIndex].values.length === newValues.length\n ) {\n newValues = this.state.fields[fieldIndex].values;\n }\n\n let newFields = update(this.state.fields, {\n [fieldIndex]: {\n currentCondition: { $set: condition },\n values: {\n $set: newValues,\n },\n },\n });\n\n const relatedFieldIndex = newFields.findIndex(\n (f) =>\n f.isRelation &&\n f.relationSideId === field.relationSideId &&\n f.id !== field.id\n );\n if (relatedFieldIndex !== -1) {\n const relatedField = newFields[relatedFieldIndex];\n const relatedCondition = relatedField.availableConditions.find(\n (condition) => condition.type === value\n );\n if (condition.operations[0].operator === ElementOperators.Exists) {\n newFields = update(newFields, {\n [relatedFieldIndex]: {\n currentCondition: { $set: relatedCondition },\n values: {\n $set: [null],\n },\n },\n });\n } else if (\n relatedField.currentCondition.operations[0].operator ===\n ElementOperators.Exists\n ) {\n newFields = update(newFields, {\n [relatedFieldIndex]: {\n currentCondition: { $set: relatedField.availableConditions[0] },\n values: {\n $set: [null],\n },\n },\n });\n }\n }\n\n this.setState({\n fields: newFields,\n });\n\n this.setFormFieldValues(newFields);\n };\n\n getFields() {\n const { getFieldDecorator } = this.props.form;\n const hasBetween = this.state.fields.some((field) =>\n [\n ModelAttributeValueType.IP,\n ModelAttributeValueType.DATE,\n ModelAttributeValueType.DATETIME,\n ].includes(field.attrValue.type as ModelAttributeValueType)\n );\n return this.state.fields.map((field, fieldIndex) => {\n let type: string;\n let style: React.CSSProperties;\n let attrValue: any = field.attrValue;\n let multiSelect = false;\n switch (field.attrValue.type) {\n case ModelAttributeValueType.INTEGER:\n case ModelAttributeValueType.FLOAT:\n attrValue = {\n type: ModelAttributeValueType.STRING,\n };\n break;\n case ModelAttributeValueType.ENUM:\n case ModelAttributeValueType.ENUMS:\n type = FormControlTypeEnum.SELECT;\n multiSelect = true;\n break;\n case ModelAttributeValueType.DATETIME:\n style = { minWidth: \"auto\" };\n break;\n }\n //高级搜索这里即使是json格式,也用input输入框进行搜索\n if ((attrValue as any).type === \"json\") {\n attrValue = { ...attrValue, type: \"str\" };\n }\n return (\n <Col span={hasBetween ? 12 : 8} key={field.id}>\n <Form.Item label={field.name}>\n <Input.Group className={styles.conditionInputGroup} compact>\n <Select\n dropdownMatchSelectWidth={false}\n value={field.currentCondition.type}\n onChange={(value: ConditionType) =>\n this.onConditionChange(value, field, fieldIndex)\n }\n disabled={field.disabled}\n >\n {field.availableConditions.map((condition) => (\n <Select.Option value={condition.type} key={condition.type}>\n {condition.label}\n </Select.Option>\n ))}\n </Select>\n {field.values.map((value, valueIndex) => {\n const operation = field.currentCondition.operations[valueIndex];\n\n return (\n <React.Fragment\n key={`${field.currentCondition.type}-${operation.operator}`}\n >\n {valueIndex > 0 && (\n <Input\n className={styles.separatorInput}\n placeholder=\"~\"\n disabled\n />\n )}\n {getFieldDecorator(`${field.id}[${valueIndex}]`, {\n initialValue:\n operation.fixedValue === undefined ? value : \"\",\n })(\n operation.fixedValue === undefined && !field.disabled ? (\n <ModelAttributeFormControl\n type={type}\n attribute={{\n id: field.id,\n name: field.name,\n value: attrValue,\n }}\n objectId={this.props.modelData.objectId}\n multiSelect={multiSelect}\n onChange={(value: any) =>\n this.onValueChange(\n value,\n valueIndex,\n field,\n fieldIndex\n )\n }\n className={styles.conditionInput}\n style={style}\n />\n ) : (\n <Input disabled />\n )\n )}\n </React.Fragment>\n );\n })}\n </Input.Group>\n </Form.Item>\n </Col>\n );\n });\n }\n\n handleSearch = (e: FormEvent<any>): void => {\n e.preventDefault();\n if (this.props?.autoSearch) this.props.autoSearch(this.state.fields);\n if (this.props.onSearch) {\n // 当过滤字段为relation并且过滤条件为ElementOperators.Exists的时候,发起后台请求的搜索queries与负责前端展示的query不同。需要额外处理。\n let queries: Query[] = [];\n let queriesToShow: Query[] = [];\n const fieldToShow: Record<string, any[]>[] = [];\n this.state.fields.forEach((field) => {\n const expressions: QueryOperatorExpressions = {};\n let fieldQuery: Query = { [field.id]: expressions };\n let fieldQueryToShow: Query = { [field.id]: expressions };\n let hasValue = false;\n let structQueryId: string[];\n const isStruct = !!(field.attrValue as any).isStruct;\n if (isStruct) {\n structQueryId = field.attrValue.struct_define.map(\n (struct_item) => `${field.id}.${struct_item.id}`\n );\n }\n field.values.forEach((value, index) => {\n const operation = field.currentCondition.operations[index];\n const fieldId =\n field.isRelation && ElementOperators.Exists === operation.operator\n ? field.relationSideId\n : field.id;\n fieldQuery = { [fieldId]: expressions };\n\n const fieldIdToShow = field.id;\n fieldQueryToShow = { [fieldIdToShow]: expressions };\n\n if (\n value !== null &&\n value !== \"\" &&\n !(Array.isArray(value) && value.length === 0)\n ) {\n const multiValueSearchOperator = multiValueSearchOperators.find(\n (operator) => operator.comparisonOperator === operation.operator\n );\n if (multiValueSearchOperator) {\n let values: any[];\n if (\n field.attrValue.type === ModelAttributeValueType.ENUM ||\n field.attrValue.type === ModelAttributeValueType.ARR\n ) {\n values = value;\n } else if (typeof value === \"string\") {\n if (\n !ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE ||\n !value.includes('\"')\n ) {\n values = value\n .trim()\n .split(/\\s+/)\n .map((value) => convertValue(field.attrValue.type, value));\n } else {\n values = processAttrValueWithQuote(value, []);\n }\n } else {\n values = [value];\n }\n if (values.length) {\n if (isStruct) {\n fieldQuery = {\n [multiValueSearchOperator.logicalOperator]: flatten(\n values.map((value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n\n return structQueryId.map(\n (structId: string | number) => ({\n [structId]: {\n [operation.operator]: value,\n },\n })\n );\n })\n ),\n };\n } else {\n fieldQuery = {\n [multiValueSearchOperator.logicalOperator]: values.map(\n (value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n return {\n [fieldId]: {\n [operation.operator]: value,\n },\n };\n }\n ),\n };\n }\n fieldQueryToShow = {\n [multiValueSearchOperator.logicalOperator]: values.map(\n (value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n return {\n [fieldIdToShow]: {\n [operation.operator]: value,\n },\n };\n }\n ),\n };\n hasValue = true;\n fieldToShow.push({ [field.id]: field.values });\n }\n } else {\n value = convertValue(field.attrValue.type, value);\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n expressions[operation.operator] = value;\n hasValue = true;\n fieldToShow.push({ [field.id]: field.values });\n }\n }\n });\n if (hasValue) {\n queries.push(fieldQuery);\n queriesToShow.push(fieldQueryToShow);\n }\n });\n if (queries.length === 0) {\n queries = undefined;\n queriesToShow = undefined;\n }\n if (!isEqual(this.props.q, queries)) {\n this.props.onSearch(queries, queriesToShow, fieldToShow);\n }\n }\n };\n\n handleReset = () => {\n if (this.props.autoSearch) this.props.autoSearch([]);\n this.props.onSearch([], [], []);\n this.props.form.resetFields();\n };\n\n render(): React.ReactNode {\n return (\n <div className={styles.advancedSearch}>\n <Form\n layout=\"vertical\"\n className={styles.advancedSearchForm}\n onSubmit={this.handleSearch}\n >\n <Row gutter={50}>{this.getFields()}</Row>\n <Row>\n <Col span={24} style={{ textAlign: \"right\" }}>\n <Button\n type=\"primary\"\n htmlType=\"submit\"\n data-testid=\"submit-button\"\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.SEARCH}`)}\n </Button>\n <Button\n style={{ marginLeft: 8 }}\n onClick={this.handleReset}\n data-testid=\"reset-button\"\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.RESET}`)}\n </Button>\n </Col>\n </Row>\n </Form>\n </div>\n );\n }\n}\n\nexport const AdvancedSearch = Form.create<AdvancedSearchFormProps>({\n name: \"advanced_search\",\n})(AdvancedSearchForm);\n"],"file":"AdvancedSearch.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/processors.ts"],"names":["getRuntime","uniq","compact","moment","FormControlTypeEnum","clusterMap","featureFlags","process","env","NODE_ENV","getFeatureFlags","ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE","processAttrValueWithQuote","attrValue","resultArray","quoteIndex","indexOf","nextQuoteIndex","length","split","slice","push","computeDateFormat","type","value","dateFormat","dateTimeFormat","format","DATETIME","changeQueryWithCustomRules","objectId","attrId","q","modifiedQuery","operator","Object","keys","values"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/processors.ts"],"names":["getRuntime","uniq","compact","moment","FormControlTypeEnum","clusterMap","featureFlags","process","env","NODE_ENV","getFeatureFlags","ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE","processAttrValueWithQuote","attrValue","resultArray","quoteIndex","indexOf","nextQuoteIndex","length","split","slice","push","computeDateFormat","type","value","dateFormat","dateTimeFormat","format","DATETIME","changeQueryWithCustomRules","objectId","attrId","q","modifiedQuery","operator","Object","keys","values"],"mappings":"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","sourcesContent":["import { getRuntime } from \"@next-core/brick-kit\";\nimport { uniq, compact } from \"lodash\";\nimport moment, { Moment } from \"moment\";\nimport { Query } from \"@next-libs/cmdb-utils\";\n\nimport { FormControlTypeEnum } from \"./model-attribute-form-control/ModelAttributeFormControl\";\nimport { clusterMap } from \"./instance-list-table/constants\";\n\nconst featureFlags =\n process.env.NODE_ENV === \"test\"\n ? { \"cmdb-advance-search-with-quote\": true }\n : getRuntime().getFeatureFlags();\nexport const ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE = true;\n// featureFlags[\"cmdb-advance-search-with-quote\"];\n\nexport const processAttrValueWithQuote = (\n attrValue: string,\n resultArray: any\n): any => {\n const quoteIndex = attrValue.indexOf('\"');\n const nextQuoteIndex = attrValue.indexOf('\"', quoteIndex + 1);\n if (nextQuoteIndex == -1 || quoteIndex === -1) {\n if (attrValue.length) {\n resultArray = [...resultArray, ...attrValue.split(\" \")];\n }\n return uniq(compact(resultArray));\n } else if (nextQuoteIndex != -1) {\n if (quoteIndex !== 0) {\n resultArray = [\n ...resultArray,\n ...attrValue.slice(0, quoteIndex).split(\" \"),\n ];\n resultArray.push(attrValue.slice(quoteIndex + 1, nextQuoteIndex));\n return processAttrValueWithQuote(\n attrValue.slice(nextQuoteIndex + 1),\n resultArray\n );\n } else {\n resultArray.push(attrValue.slice(quoteIndex + 1, nextQuoteIndex));\n return processAttrValueWithQuote(\n attrValue.slice(nextQuoteIndex + 1),\n resultArray\n );\n }\n }\n};\n\nexport const computeDateFormat = (\n type: string,\n value: any\n): { format: string; value: Moment | null } => {\n const dateFormat = \"YYYY-MM-DD\";\n const dateTimeFormat = \"YYYY-MM-DD HH:mm:ss\";\n let format;\n if (type === FormControlTypeEnum.DATETIME) {\n format = dateTimeFormat;\n } else {\n format = dateFormat;\n }\n return {\n value: value ? moment(value, format) : null,\n format,\n };\n};\n\nexport const changeQueryWithCustomRules = (\n objectId: string,\n attrId: string,\n q: Query\n): Query => {\n let modifiedQuery = q;\n if (objectId === \"CLUSTER\" && attrId === \"type\") {\n const operator = Object.keys(modifiedQuery[\"type\"])[0];\n const value = Object.values(modifiedQuery[\"type\"])[0];\n modifiedQuery = {\n type: {\n [operator]: clusterMap[value],\n },\n };\n }\n return modifiedQuery;\n};\n"],"file":"processors.js"}
|
|
@@ -24,9 +24,11 @@ export interface BaseCmdbInstancesSelectPanelProps {
|
|
|
24
24
|
}
|
|
25
25
|
export interface CmdbInstancesSelectPanelPropsWithObjectMap extends BaseCmdbInstancesSelectPanelProps {
|
|
26
26
|
objectMap: Record<string, Partial<CmdbModels.ModelCmdbObject>>;
|
|
27
|
+
ipCopy?: boolean;
|
|
27
28
|
}
|
|
28
29
|
export interface CmdbInstancesSelectPanelPropsWithModelData extends BaseCmdbInstancesSelectPanelProps {
|
|
29
30
|
modelData: Partial<CmdbModels.ModelCmdbObject>;
|
|
31
|
+
ipCopy?: boolean;
|
|
30
32
|
}
|
|
31
33
|
export declare type CmdbInstancesSelectPanelProps = CmdbInstancesSelectPanelPropsWithObjectMap | CmdbInstancesSelectPanelPropsWithModelData;
|
|
32
34
|
export declare function isCmdbInstancesSelectPanelPropsWithObjectMap(props: CmdbInstancesSelectPanelProps): props is CmdbInstancesSelectPanelPropsWithObjectMap;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -11,3 +11,4 @@ export * from "./cmdb-instances-input-form/CmdbInstancesInputFormItem";
|
|
|
11
11
|
export * from "./cmdb-instances-select-panel/CmdbInstancesSelectPanel";
|
|
12
12
|
export * from "./instance-detail/InstanceDetail";
|
|
13
13
|
export * from "./float-display-brick/FloatDisplayBrick";
|
|
14
|
+
export { ComparisonOperators, ElementOperators, LogicalOperators, Query, QueryOperatorExpressions, } from "@next-libs/cmdb-utils";
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { PropertyDisplayConfig, ReadPaginationChangeDetail, ReadSelectionChangeDetail, ReadSortingChangeDetail, UseBrickConf } from "@next-core/brick-types";
|
|
3
3
|
import { CmdbModels, InstanceApi_PostSearchRequestBody, InstanceApi_PostSearchV3RequestBody, InstanceApi_PostSearchV3ResponseBody } from "@next-sdk/cmdb-sdk";
|
|
4
|
-
import { Query
|
|
4
|
+
import { Query } from "@next-libs/cmdb-utils";
|
|
5
|
+
import { CustomColumn, Field } from "../instance-list-table";
|
|
5
6
|
export interface InstanceListPresetConfigs {
|
|
6
7
|
query?: Record<string, any>;
|
|
7
8
|
fieldIds?: string[];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { CmdbModels } from "@next-sdk/cmdb-sdk";
|
|
3
|
+
import { Query } from "@next-libs/cmdb-utils";
|
|
3
4
|
import { InstanceListPresetConfigs } from "../instance-list-table/interfaces";
|
|
4
|
-
import { Query } from "../instance-list-table";
|
|
5
5
|
export interface InstanceListModalProps {
|
|
6
6
|
objectMap: {
|
|
7
7
|
[key: string]: Partial<CmdbModels.ModelCmdbObject>;
|
|
@@ -23,6 +23,7 @@ export interface InstanceListModalProps {
|
|
|
23
23
|
filterInstanceSourceDisabled?: boolean;
|
|
24
24
|
sortDisabled?: boolean;
|
|
25
25
|
selectDisabled?: boolean;
|
|
26
|
+
ipCopy?: boolean;
|
|
26
27
|
singleSelect?: boolean;
|
|
27
28
|
selectedRowKeys?: string[];
|
|
28
29
|
onCancel: () => void;
|
|
@@ -1,30 +1,8 @@
|
|
|
1
1
|
import React, { ChangeEvent, FormEvent } from "react";
|
|
2
2
|
import { FormComponentProps } from "@ant-design/compatible/lib/form";
|
|
3
3
|
import { CmdbModels } from "@next-sdk/cmdb-sdk";
|
|
4
|
+
import { ComparisonOperators, ElementOperators, Query, QueryOperatorExpressions } from "@next-libs/cmdb-utils";
|
|
4
5
|
import { ModelAttributeValueType } from "../model-attribute-form-control/ModelAttributeFormControl";
|
|
5
|
-
export declare enum ComparisonOperators {
|
|
6
|
-
Equal = "$eq",
|
|
7
|
-
NotEqual = "$ne",
|
|
8
|
-
Like = "$like",
|
|
9
|
-
NotLike = "$nlike",
|
|
10
|
-
GreaterThan = "$gt",
|
|
11
|
-
GreaterThanOrEqual = "$gte",
|
|
12
|
-
LessThan = "$lt",
|
|
13
|
-
LessThanOrEqual = "$lte",
|
|
14
|
-
In = "$in",
|
|
15
|
-
NotIn = "$nin"
|
|
16
|
-
}
|
|
17
|
-
export declare enum ElementOperators {
|
|
18
|
-
Exists = "$exists"
|
|
19
|
-
}
|
|
20
|
-
export declare enum LogicalOperators {
|
|
21
|
-
And = "$and",
|
|
22
|
-
Or = "$or"
|
|
23
|
-
}
|
|
24
|
-
export declare type QueryOperatorExpressions = Partial<Record<ComparisonOperators | ElementOperators, any>>;
|
|
25
|
-
export interface Query {
|
|
26
|
-
[fieldOrLogical: string]: QueryOperatorExpressions | Query[];
|
|
27
|
-
}
|
|
28
6
|
export declare enum ConditionType {
|
|
29
7
|
Equal = "equal",
|
|
30
8
|
NotEqual = "notEqual",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Query } from "./instance-list-table/AdvancedSearch";
|
|
2
1
|
import { Moment } from "moment";
|
|
2
|
+
import { Query } from "@next-libs/cmdb-utils";
|
|
3
3
|
export declare const ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE = true;
|
|
4
4
|
export declare const processAttrValueWithQuote: (attrValue: string, resultArray: any) => any;
|
|
5
5
|
export declare const computeDateFormat: (type: string, value: any) => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@next-libs/cmdb-instances",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.25.1",
|
|
4
4
|
"description": "> TODO: description",
|
|
5
5
|
"homepage": "https://github.com/easyops-cn/next-libs/tree/master/libs/cmdb-instances",
|
|
6
6
|
"license": "GPL-3.0",
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@next-core/brick-types": "^2.16.0",
|
|
39
39
|
"@next-libs/basic-components": "^3.5.0",
|
|
40
|
-
"@next-libs/cmdb-utils": "^3.
|
|
41
|
-
"@next-libs/code-editor-components": "^4.0.
|
|
40
|
+
"@next-libs/cmdb-utils": "^3.2.0",
|
|
41
|
+
"@next-libs/code-editor-components": "^4.0.33",
|
|
42
42
|
"@next-libs/forms": "^3.2.24",
|
|
43
43
|
"@next-libs/storage": "^2.0.2",
|
|
44
44
|
"@next-sdk/cmdb-sdk": "^2.3.1",
|
|
@@ -50,5 +50,5 @@
|
|
|
50
50
|
"immutability-helper": "^3.1.1",
|
|
51
51
|
"marked": "^2.1.3"
|
|
52
52
|
},
|
|
53
|
-
"gitHead": "
|
|
53
|
+
"gitHead": "3c61a80013235138af852f9125905d8a2581b2b9"
|
|
54
54
|
}
|