@next-libs/cmdb-instances 7.13.1 → 7.13.3
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/cmdb-instances-select-panel/CmdbInstancesSelectPanel.js +60 -26
- package/dist/cjs/cmdb-instances-select-panel/CmdbInstancesSelectPanel.js.map +1 -1
- package/dist/cjs/instance-detail/components/instance-relation-table-show/instance-relation-table-show.js.map +1 -1
- package/dist/cjs/instance-list/InstanceList.js +125 -26
- package/dist/cjs/instance-list/InstanceList.js.map +1 -1
- package/dist/cjs/instance-list-modal/InstanceListModal.js +19 -4
- package/dist/cjs/instance-list-modal/InstanceListModal.js.map +1 -1
- package/dist/cjs/instance-list-table/InstanceListTable.js +46 -9
- package/dist/cjs/instance-list-table/InstanceListTable.js.map +1 -1
- package/dist/esm/cmdb-instances-select-panel/CmdbInstancesSelectPanel.js +58 -26
- package/dist/esm/cmdb-instances-select-panel/CmdbInstancesSelectPanel.js.map +1 -1
- package/dist/esm/instance-detail/components/instance-relation-table-show/instance-relation-table-show.js.map +1 -1
- package/dist/esm/instance-list/InstanceList.js +114 -25
- package/dist/esm/instance-list/InstanceList.js.map +1 -1
- package/dist/esm/instance-list-modal/InstanceListModal.js +19 -4
- package/dist/esm/instance-list-modal/InstanceListModal.js.map +1 -1
- package/dist/esm/instance-list-table/InstanceListTable.js +44 -9
- package/dist/esm/instance-list-table/InstanceListTable.js.map +1 -1
- package/dist/esm/model-attribute-form/ModelAttributeForm.module.css +0 -3
- package/dist/types/cmdb-instances-select-panel/CmdbInstancesSelectPanel.d.ts +2 -0
- package/dist/types/instance-list/InstanceList.d.ts +2 -0
- package/dist/types/instance-list-modal/InstanceListModal.d.ts +2 -0
- package/dist/types/instance-list-table/InstanceListTable.d.ts +4 -1
- package/package.json +2 -2
|
@@ -19,11 +19,19 @@ var _i18next = _interopRequireDefault(require("i18next"));
|
|
|
19
19
|
var _constants = require("../i18n/constants");
|
|
20
20
|
var _lodash = require("lodash");
|
|
21
21
|
var _antd = require("antd");
|
|
22
|
+
var _brickKit = require("@next-core/brick-kit");
|
|
22
23
|
function isCmdbInstancesSelectPanelPropsWithObjectMap(props) {
|
|
23
24
|
return !(0, _lodash.isNil)(props.objectMap);
|
|
24
25
|
}
|
|
25
26
|
function CmdbInstancesSelectPanel(props, ref) {
|
|
26
27
|
var _props$previewMaxNumb, _props$value, _props$instanceQuery, _props$modalTitle, _props$addTitle;
|
|
28
|
+
// 当useExternalCmdbApi为true, 外部接口才调用
|
|
29
|
+
const externalPostSearchV3 = (0, _brickKit.useProvider)("easyops.api.cmdb.topo_center@ProxyPostSearchV3:1.0.1", {
|
|
30
|
+
cache: false
|
|
31
|
+
});
|
|
32
|
+
const externalGetObjectRef = (0, _brickKit.useProvider)("easyops.api.cmdb.topo_center@ProxyGetObjectRef:1.0.0", {
|
|
33
|
+
cache: false
|
|
34
|
+
});
|
|
27
35
|
let modelData;
|
|
28
36
|
if (isCmdbInstancesSelectPanelPropsWithObjectMap(props)) {
|
|
29
37
|
modelData = props.objectMap[props.objectId];
|
|
@@ -51,26 +59,39 @@ function CmdbInstancesSelectPanel(props, ref) {
|
|
|
51
59
|
visible: false
|
|
52
60
|
});
|
|
53
61
|
const [modelMap, setModelMap] = (0, _react.useState)({});
|
|
62
|
+
const externalRequestParams = (0, _react.useMemo)(() => {
|
|
63
|
+
return {
|
|
64
|
+
objectId: props.objectId,
|
|
65
|
+
sourceId: props.externalSourceId
|
|
66
|
+
};
|
|
67
|
+
}, [props.objectId, props.externalSourceId]);
|
|
54
68
|
const fetchInstances = async instanceIdList => {
|
|
69
|
+
var _props$fields;
|
|
55
70
|
let instances = [];
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
instanceId: {
|
|
61
|
-
$in: instanceIdList
|
|
62
|
-
}
|
|
63
|
-
},
|
|
64
|
-
page: 1,
|
|
65
|
-
page_size: instanceIdList.length,
|
|
66
|
-
// todo(ice): selected confirm with instances
|
|
67
|
-
fields: (_props$fields = props.fields) !== null && _props$fields !== void 0 && _props$fields.length ? props.fields.reduce((prev, next) => ({
|
|
68
|
-
...prev,
|
|
69
|
-
[next]: true
|
|
70
|
-
}), {}) : {
|
|
71
|
-
"*": true
|
|
71
|
+
const instancesParams = {
|
|
72
|
+
query: {
|
|
73
|
+
instanceId: {
|
|
74
|
+
$in: instanceIdList
|
|
72
75
|
}
|
|
73
|
-
}
|
|
76
|
+
},
|
|
77
|
+
page: 1,
|
|
78
|
+
page_size: instanceIdList.length,
|
|
79
|
+
// todo(ice): selected confirm with instances
|
|
80
|
+
fields: (_props$fields = props.fields) !== null && _props$fields !== void 0 && _props$fields.length ? props.fields.reduce((prev, next) => ({
|
|
81
|
+
...prev,
|
|
82
|
+
[next]: true
|
|
83
|
+
}), {}) : {
|
|
84
|
+
"*": true
|
|
85
|
+
},
|
|
86
|
+
...(props.useExternalCmdbApi ? externalRequestParams : {})
|
|
87
|
+
};
|
|
88
|
+
if (instanceIdList !== null && instanceIdList !== void 0 && instanceIdList.length) {
|
|
89
|
+
// istanbul ignore if
|
|
90
|
+
if (props.useExternalCmdbApi) {
|
|
91
|
+
instances = (await externalPostSearchV3.query([instancesParams])).list;
|
|
92
|
+
} else {
|
|
93
|
+
instances = (await (0, _cmdbSdk.InstanceApi_postSearch)(props.objectId, instancesParams)).list;
|
|
94
|
+
}
|
|
74
95
|
}
|
|
75
96
|
return instances;
|
|
76
97
|
};
|
|
@@ -78,20 +99,27 @@ function CmdbInstancesSelectPanel(props, ref) {
|
|
|
78
99
|
(0, _react.useEffect)(() => {
|
|
79
100
|
const getModelMap = async () => {
|
|
80
101
|
let modelMap;
|
|
102
|
+
let objectRef;
|
|
81
103
|
if (isCmdbInstancesSelectPanelPropsWithObjectMap(props)) {
|
|
82
104
|
modelMap = props.objectMap;
|
|
83
105
|
} else {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
106
|
+
if (props.useExternalCmdbApi) {
|
|
107
|
+
objectRef = await externalGetObjectRef.query([{
|
|
108
|
+
ref_object: props.objectId,
|
|
109
|
+
...externalRequestParams
|
|
110
|
+
}]);
|
|
111
|
+
} else {
|
|
112
|
+
var _await$CmdbObjectApi_;
|
|
113
|
+
objectRef = (_await$CmdbObjectApi_ = await (0, _cmdbSdk.CmdbObjectApi_getObjectRef)({
|
|
114
|
+
ref_object: props.objectId
|
|
115
|
+
})) === null || _await$CmdbObjectApi_ === void 0 ? void 0 : _await$CmdbObjectApi_.data;
|
|
116
|
+
}
|
|
117
|
+
modelMap = (0, _lodash.keyBy)(objectRef, "objectId");
|
|
90
118
|
}
|
|
91
119
|
setModelMap(modelMap);
|
|
92
120
|
};
|
|
93
121
|
getModelMap();
|
|
94
|
-
}, [props.objectId]);
|
|
122
|
+
}, [props.objectId, props.useExternalCmdbApi, props.externalSourceId]);
|
|
95
123
|
(0, _react.useEffect)(() => {
|
|
96
124
|
let instances = [];
|
|
97
125
|
const initInstances = async () => {
|
|
@@ -186,7 +214,9 @@ function CmdbInstancesSelectPanel(props, ref) {
|
|
|
186
214
|
showSizeChanger: props.showSizeChanger,
|
|
187
215
|
pageSizeOptions: props.pageSizeOptions,
|
|
188
216
|
aq: props.aq,
|
|
189
|
-
saveFieldsBackend: props.saveFieldsBackend
|
|
217
|
+
saveFieldsBackend: props.saveFieldsBackend,
|
|
218
|
+
useExternalCmdbApi: props.useExternalCmdbApi,
|
|
219
|
+
externalSourceId: props.externalSourceId
|
|
190
220
|
}), /*#__PURE__*/_react.default.createElement(_InstanceListModal.InstanceListModal, {
|
|
191
221
|
objectMap: modelMap,
|
|
192
222
|
objectId: props.objectId,
|
|
@@ -211,7 +241,9 @@ function CmdbInstancesSelectPanel(props, ref) {
|
|
|
211
241
|
showSizeChanger: props.showSizeChanger,
|
|
212
242
|
pageSizeOptions: props.pageSizeOptions,
|
|
213
243
|
onCancel: closeAllSelectedInstancesModal,
|
|
214
|
-
saveFieldsBackend: props.saveFieldsBackend
|
|
244
|
+
saveFieldsBackend: props.saveFieldsBackend,
|
|
245
|
+
useExternalCmdbApi: props.useExternalCmdbApi,
|
|
246
|
+
externalSourceId: props.externalSourceId
|
|
215
247
|
}), /*#__PURE__*/_react.default.createElement(_antd.Spin, {
|
|
216
248
|
style: {
|
|
217
249
|
textAlign: "left",
|
|
@@ -251,6 +283,8 @@ function CmdbInstancesSelectPanel(props, ref) {
|
|
|
251
283
|
//
|
|
252
284
|
,
|
|
253
285
|
isOperate: props.isOperate,
|
|
286
|
+
useExternalCmdbApi: props.useExternalCmdbApi,
|
|
287
|
+
externalSourceId: props.externalSourceId,
|
|
254
288
|
handleDeleteFunction: v => {
|
|
255
289
|
var _props$onChange2;
|
|
256
290
|
setSelectedInstanceList(v);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CmdbInstancesSelectPanel.js","names":["isCmdbInstancesSelectPanelPropsWithObjectMap","props","isNil","objectMap","CmdbInstancesSelectPanel","ref","modelData","objectId","isFilterView","hideModelData","view","hide_columns","attrList","filter","item","includes","id","relation_list","left_id","left_object_id","right_id","right_object_id","displayedSelectedInstancesMaxNumber","previewMaxNumber","selectedInstanceList","setSelectedInstanceList","useState","partialSelectedInstances","setPartialSelectedInstances","addInstancesModal","setAddInstancesModal","visible","allSelectedInstancesModal","setAllSelectedInstancesModal","modelMap","setModelMap","fetchInstances","instanceIdList","instances","length","InstanceApi_postSearch","query","instanceId","$in","page","page_size","fields","reduce","prev","next","list","toLoadInstanceIds","value","map","i","isObject","useEffect","getModelMap","data","CmdbObjectApi_getObjectRef","ref_object","keyBy","initInstances","isOperate","slice","onFetchedInstances","isEmpty","sort","join","openAddInstancesModal","closeAddInstancesModal","openAllSelectedInstancesModal","closeAllSelectedInstancesModal","handleInstancesSelected","selectedKeys","onChange","fieldIds","modifyModelData","attr","showPreview","cs","classnames","style","selectedInstancesTableWrapper","withPreview","relation","relationLimit","right_max","$size","$lt","instanceQuery","wrapper","modalTitle","i18n","t","NS_LIBS_CMDB_INSTANCES","K","FILTER_FROM_CMDB","name","instance","singleSelect","showBindButton","bindButtonDisabled","bindButtonText","bindEvent","addInstancesModalPageSize","searchDisabled","advancedSearchDisabled","ipCopy","showCloseBtn","showSizeChanger","pageSizeOptions","aq","saveFieldsBackend","VIEW_ALL_SELECTED_INSTANCES","textAlign","marginBottom","isEqual","addButton","addTitle","useModelName","CHOOSE_INSTANCE_NAME","CHOOSE_INSTANCE","showDetailUrl","detailUrlTemplates","showPagination","pagination","v","showAllSelectedInstancesButton","VIEW_ALL_DATA","count"],"sources":["../../../src/cmdb-instances-select-panel/CmdbInstancesSelectPanel.tsx"],"sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport classnames from \"classnames\";\n\nimport {\n CmdbModels,\n InstanceApi_postSearch,\n CmdbObjectApi_getObjectRef,\n} from \"@next-sdk/cmdb-sdk\";\nimport { InstanceListTable } from \"../instance-list-table\";\nimport { InstanceListModal } from \"../instance-list-modal/InstanceListModal\";\nimport {\n modifyModelData,\n ModifiedModelObjectRelation,\n Query,\n} from \"@next-libs/cmdb-utils\";\nimport style from \"./style.module.css\";\nimport i18n from \"i18next\";\nimport { K, NS_LIBS_CMDB_INSTANCES } from \"../i18n/constants\";\nimport { keyBy, isEqual, isNil, isObject, isEmpty } from \"lodash\";\nimport { Spin } from \"antd\";\n\nexport interface BaseCmdbInstancesSelectPanelProps {\n objectId: string;\n value?: any[];\n onChange?: (instanceList: any[]) => void;\n instanceQuery?: any;\n fields?: string[];\n singleSelect?: boolean;\n showBindButton?: boolean;\n bindButtonDisabled?: boolean;\n bindButtonText?: string;\n bindEvent?: () => void;\n addTitle?: React.ReactNode | string;\n modalTitle?: React.ReactNode | string;\n previewMaxNumber?: number;\n addInstancesModalPageSize?: number;\n showSizeChanger?: boolean;\n pageSizeOptions?: string[];\n isOperate?: boolean; //cmdb实例列表支持删除实例\n showDetailUrl?: boolean;\n isFilterView?: boolean; //是否过滤视图属性\n onFetchedInstances?: (instanceList: any[]) => void; // objectId改变后触发\n relation?: Partial<ModifiedModelObjectRelation>;\n searchDisabled?: boolean;\n advancedSearchDisabled?: boolean;\n showPagination?: boolean;\n aq?: Query[];\n saveFieldsBackend?: boolean;\n useModelName?: boolean;\n}\n\nexport interface CmdbInstancesSelectPanelPropsWithObjectMap\n extends BaseCmdbInstancesSelectPanelProps {\n objectMap: Record<string, Partial<CmdbModels.ModelCmdbObject>>;\n ipCopy?: boolean;\n showSizeChanger?: boolean;\n showCloseBtn?: boolean;\n pageSizeOptions?: string[];\n saveFieldsBackend?: boolean;\n}\n\nexport interface CmdbInstancesSelectPanelPropsWithModelData\n extends BaseCmdbInstancesSelectPanelProps {\n modelData: Partial<CmdbModels.ModelCmdbObject>;\n ipCopy?: boolean;\n showSizeChanger?: boolean;\n showCloseBtn?: boolean;\n pageSizeOptions?: string[];\n saveFieldsBackend?: boolean;\n}\n\nexport type CmdbInstancesSelectPanelProps =\n | CmdbInstancesSelectPanelPropsWithObjectMap\n | CmdbInstancesSelectPanelPropsWithModelData;\n\nexport function isCmdbInstancesSelectPanelPropsWithObjectMap(\n props: CmdbInstancesSelectPanelProps\n): props is CmdbInstancesSelectPanelPropsWithObjectMap {\n return !isNil(\n (props as CmdbInstancesSelectPanelPropsWithObjectMap).objectMap\n );\n}\n\nexport function CmdbInstancesSelectPanel(\n props: CmdbInstancesSelectPanelProps,\n ref: any\n): React.ReactElement {\n let modelData: Partial<CmdbModels.ModelCmdbObject>;\n if (isCmdbInstancesSelectPanelPropsWithObjectMap(props)) {\n modelData = props.objectMap[props.objectId];\n } else {\n modelData = props.modelData;\n }\n\n if (props.isFilterView) {\n //过滤掉视图不可见字段\n const hideModelData = modelData?.view?.hide_columns || [];\n modelData = {\n ...modelData,\n attrList: modelData.attrList.filter(\n (item: any) => !hideModelData.includes(item.id)\n ),\n relation_list: modelData.relation_list.filter(\n (item: any) =>\n !(\n (hideModelData.includes(item.left_id) &&\n item.left_object_id === props.objectId) ||\n (hideModelData.includes(item.right_id) &&\n item.right_object_id === props.objectId)\n )\n ),\n };\n }\n\n const displayedSelectedInstancesMaxNumber = props.previewMaxNumber ?? 5;\n\n const [selectedInstanceList, setSelectedInstanceList] = useState([]);\n const [partialSelectedInstances, setPartialSelectedInstances] = useState([]);\n // const [instanceTableData, setInstanceTableData] = useState({list: []})\n const [addInstancesModal, setAddInstancesModal] = useState({\n visible: false,\n });\n const [allSelectedInstancesModal, setAllSelectedInstancesModal] = useState({\n visible: false,\n });\n const [modelMap, setModelMap] = useState({});\n\n const fetchInstances = async (instanceIdList: string[]): Promise<any[]> => {\n let instances: any[] = [];\n if (instanceIdList?.length) {\n instances = (\n await InstanceApi_postSearch(props.objectId, {\n query: {\n instanceId: {\n $in: instanceIdList,\n },\n },\n page: 1,\n page_size: instanceIdList.length,\n // todo(ice): selected confirm with instances\n fields: props.fields?.length\n ? props.fields.reduce(\n (prev, next) => ({ ...prev, [next]: true }),\n {}\n )\n : { \"*\": true },\n })\n ).list;\n }\n\n return instances;\n };\n const toLoadInstanceIds =\n props.value?.map((i) => (isObject(i) ? (i as any).instanceId : i)) || [];\n\n useEffect(() => {\n const getModelMap = async (): Promise<void> => {\n let modelMap: Record<string, Partial<CmdbModels.ModelCmdbObject>>;\n\n if (isCmdbInstancesSelectPanelPropsWithObjectMap(props)) {\n modelMap = props.objectMap;\n } else {\n const { data } = await CmdbObjectApi_getObjectRef({\n ref_object: props.objectId,\n });\n modelMap = keyBy(data, \"objectId\");\n }\n setModelMap(modelMap);\n };\n getModelMap();\n }, [props.objectId]);\n\n useEffect(() => {\n let instances = [];\n\n const initInstances = async (): Promise<void> => {\n instances = await fetchInstances(toLoadInstanceIds);\n setSelectedInstanceList(instances);\n setPartialSelectedInstances(\n props?.isOperate\n ? instances\n : instances.slice(0, displayedSelectedInstancesMaxNumber)\n );\n props.onFetchedInstances?.(instances);\n };\n if (!isEmpty(toLoadInstanceIds)) {\n initInstances();\n } else {\n setSelectedInstanceList([]);\n setPartialSelectedInstances([]);\n }\n }, [toLoadInstanceIds.sort().join()]);\n const openAddInstancesModal = () => {\n setAddInstancesModal({ visible: true });\n };\n\n const closeAddInstancesModal = () => {\n setAddInstancesModal({ visible: false });\n };\n\n const openAllSelectedInstancesModal = () => {\n setAllSelectedInstancesModal({ visible: true });\n };\n\n const closeAllSelectedInstancesModal = () => {\n setAllSelectedInstancesModal({ visible: false });\n };\n\n const handleInstancesSelected = async (selectedKeys: string[]) => {\n closeAddInstancesModal();\n\n const instances = await fetchInstances(selectedKeys);\n setSelectedInstanceList(instances);\n setPartialSelectedInstances(\n props?.isOperate\n ? instances\n : instances.slice(0, displayedSelectedInstancesMaxNumber)\n );\n props.onChange?.(instances);\n };\n\n const fieldIds = modifyModelData(modelData).attrList.map(\n (attr: any) => attr.id\n );\n const showPreview =\n selectedInstanceList.length > displayedSelectedInstancesMaxNumber;\n const cs = classnames({\n [style.selectedInstancesTableWrapper]: true,\n [style.withPreview]: showPreview,\n });\n const { relation } = props;\n let relationLimit;\n if (relation?.right_max === 1) {\n relationLimit = { [relation.right_id]: { $size: { $lt: 1 } } };\n }\n const query = props.instanceQuery ?? relationLimit;\n return (\n <div className={style.wrapper} ref={ref}>\n <InstanceListModal\n objectMap={modelMap}\n objectId={props.objectId}\n visible={addInstancesModal.visible}\n title={\n props.modalTitle ??\n i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.FILTER_FROM_CMDB}`, {\n name: modelData.name,\n })\n }\n selectedRowKeys={selectedInstanceList.map(\n (instance) => instance.instanceId\n )}\n onSelected={handleInstancesSelected}\n onCancel={closeAddInstancesModal}\n singleSelect={props.singleSelect}\n presetConfigs={{\n query,\n fieldIds: props.fields,\n }}\n showBindButton={props.showBindButton}\n bindButtonDisabled={props.bindButtonDisabled}\n bindButtonText={props.bindButtonText}\n bindEvent={props.bindEvent}\n pageSize={props.addInstancesModalPageSize}\n searchDisabled={props.searchDisabled}\n advancedSearchDisabled={props.advancedSearchDisabled}\n ipCopy={props.ipCopy}\n showCloseBtn={props.showCloseBtn}\n showSizeChanger={props.showSizeChanger}\n pageSizeOptions={props.pageSizeOptions}\n aq={props.aq}\n saveFieldsBackend={props.saveFieldsBackend}\n />\n <InstanceListModal\n objectMap={modelMap}\n objectId={props.objectId}\n visible={allSelectedInstancesModal.visible}\n showBindButton={props.showBindButton}\n bindButtonDisabled={props.bindButtonDisabled}\n bindButtonText={props.bindButtonText}\n bindEvent={props.bindEvent}\n title={i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.VIEW_ALL_SELECTED_INSTANCES}`\n )}\n presetConfigs={{\n query: {\n instanceId: {\n $in: selectedInstanceList.map((instance) => instance.instanceId),\n },\n },\n fieldIds: props.fields,\n }}\n selectDisabled={!props.ipCopy}\n ipCopy={props.ipCopy}\n showCloseBtn={props.ipCopy ? true : props.showCloseBtn}\n pageSize={props.addInstancesModalPageSize}\n showSizeChanger={props.showSizeChanger}\n pageSizeOptions={props.pageSizeOptions}\n onCancel={closeAllSelectedInstancesModal}\n saveFieldsBackend={props.saveFieldsBackend}\n />\n <Spin\n style={{ textAlign: \"left\", marginBottom: \"12px\" }}\n spinning={isEqual(modelMap, {})}\n >\n <a\n className={style.addButton}\n style={{\n marginBottom: \"20px\",\n }}\n onClick={openAddInstancesModal}\n >\n {props.addTitle ?? props.useModelName\n ? i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.CHOOSE_INSTANCE_NAME}`, {\n name: modelData.name,\n })\n : i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.CHOOSE_INSTANCE}`)}\n </a>\n </Spin>\n <div className={cs}>\n <InstanceListTable\n {...(props.showDetailUrl\n ? {\n detailUrlTemplates: {\n [props.objectId]:\n \"/next-cmdb-instance-management/next/#{objectId}/instance/#{instanceId}\",\n },\n }\n : {})}\n idObjectMap={modelMap}\n modelData={modelData}\n instanceListData={{ list: partialSelectedInstances }}\n fieldIds={props.fields || fieldIds}\n selectDisabled={true}\n sortDisabled={true}\n configProps={\n props.showPagination && partialSelectedInstances.length > 10\n ? { pagination: { showSizeChanger: true } }\n : { pagination: false }\n }\n //\n isOperate={props.isOperate}\n handleDeleteFunction={(v) => {\n setSelectedInstanceList(v);\n setPartialSelectedInstances(v);\n props.onChange?.(v);\n }}\n target={\"_blank\"}\n ></InstanceListTable>\n {!props?.isOperate && showPreview && (\n <div\n className={style.showAllSelectedInstancesButton}\n onClick={openAllSelectedInstancesModal}\n >\n <a>\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.VIEW_ALL_DATA}`, {\n count: selectedInstanceList.length,\n })}\n </a>\n </div>\n )}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CmdbInstancesSelectPanel.js","names":["isCmdbInstancesSelectPanelPropsWithObjectMap","props","isNil","objectMap","CmdbInstancesSelectPanel","ref","externalPostSearchV3","useProvider","cache","externalGetObjectRef","modelData","objectId","isFilterView","hideModelData","view","hide_columns","attrList","filter","item","includes","id","relation_list","left_id","left_object_id","right_id","right_object_id","displayedSelectedInstancesMaxNumber","previewMaxNumber","selectedInstanceList","setSelectedInstanceList","useState","partialSelectedInstances","setPartialSelectedInstances","addInstancesModal","setAddInstancesModal","visible","allSelectedInstancesModal","setAllSelectedInstancesModal","modelMap","setModelMap","externalRequestParams","useMemo","sourceId","externalSourceId","fetchInstances","instanceIdList","instances","instancesParams","query","instanceId","$in","page","page_size","length","fields","reduce","prev","next","useExternalCmdbApi","list","InstanceApi_postSearch","toLoadInstanceIds","value","map","i","isObject","useEffect","getModelMap","objectRef","ref_object","CmdbObjectApi_getObjectRef","data","keyBy","initInstances","isOperate","slice","onFetchedInstances","isEmpty","sort","join","openAddInstancesModal","closeAddInstancesModal","openAllSelectedInstancesModal","closeAllSelectedInstancesModal","handleInstancesSelected","selectedKeys","onChange","fieldIds","modifyModelData","attr","showPreview","cs","classnames","style","selectedInstancesTableWrapper","withPreview","relation","relationLimit","right_max","$size","$lt","instanceQuery","wrapper","modalTitle","i18n","t","NS_LIBS_CMDB_INSTANCES","K","FILTER_FROM_CMDB","name","instance","singleSelect","showBindButton","bindButtonDisabled","bindButtonText","bindEvent","addInstancesModalPageSize","searchDisabled","advancedSearchDisabled","ipCopy","showCloseBtn","showSizeChanger","pageSizeOptions","aq","saveFieldsBackend","VIEW_ALL_SELECTED_INSTANCES","textAlign","marginBottom","isEqual","addButton","addTitle","useModelName","CHOOSE_INSTANCE_NAME","CHOOSE_INSTANCE","showDetailUrl","detailUrlTemplates","showPagination","pagination","v","showAllSelectedInstancesButton","VIEW_ALL_DATA","count"],"sources":["../../../src/cmdb-instances-select-panel/CmdbInstancesSelectPanel.tsx"],"sourcesContent":["import React, { useState, useEffect, useMemo } from \"react\";\nimport classnames from \"classnames\";\n\nimport {\n CmdbModels,\n InstanceApi_postSearch,\n CmdbObjectApi_getObjectRef,\n} from \"@next-sdk/cmdb-sdk\";\nimport { InstanceListTable } from \"../instance-list-table\";\nimport { InstanceListModal } from \"../instance-list-modal/InstanceListModal\";\nimport {\n modifyModelData,\n ModifiedModelObjectRelation,\n Query,\n} from \"@next-libs/cmdb-utils\";\nimport style from \"./style.module.css\";\nimport i18n from \"i18next\";\nimport { K, NS_LIBS_CMDB_INSTANCES } from \"../i18n/constants\";\nimport { keyBy, isEqual, isNil, isObject, isEmpty } from \"lodash\";\nimport { Spin } from \"antd\";\nimport { useProvider } from \"@next-core/brick-kit\";\n\nexport interface BaseCmdbInstancesSelectPanelProps {\n objectId: string;\n value?: any[];\n onChange?: (instanceList: any[]) => void;\n instanceQuery?: any;\n fields?: string[];\n singleSelect?: boolean;\n showBindButton?: boolean;\n bindButtonDisabled?: boolean;\n bindButtonText?: string;\n bindEvent?: () => void;\n addTitle?: React.ReactNode | string;\n modalTitle?: React.ReactNode | string;\n previewMaxNumber?: number;\n addInstancesModalPageSize?: number;\n showSizeChanger?: boolean;\n pageSizeOptions?: string[];\n isOperate?: boolean; //cmdb实例列表支持删除实例\n showDetailUrl?: boolean;\n isFilterView?: boolean; //是否过滤视图属性\n onFetchedInstances?: (instanceList: any[]) => void; // objectId改变后触发\n relation?: Partial<ModifiedModelObjectRelation>;\n searchDisabled?: boolean;\n advancedSearchDisabled?: boolean;\n showPagination?: boolean;\n aq?: Query[];\n saveFieldsBackend?: boolean;\n useModelName?: boolean;\n useExternalCmdbApi?: boolean;\n externalSourceId?: string;\n}\n\nexport interface CmdbInstancesSelectPanelPropsWithObjectMap\n extends BaseCmdbInstancesSelectPanelProps {\n objectMap: Record<string, Partial<CmdbModels.ModelCmdbObject>>;\n ipCopy?: boolean;\n showSizeChanger?: boolean;\n showCloseBtn?: boolean;\n pageSizeOptions?: string[];\n saveFieldsBackend?: boolean;\n}\n\nexport interface CmdbInstancesSelectPanelPropsWithModelData\n extends BaseCmdbInstancesSelectPanelProps {\n modelData: Partial<CmdbModels.ModelCmdbObject>;\n ipCopy?: boolean;\n showSizeChanger?: boolean;\n showCloseBtn?: boolean;\n pageSizeOptions?: string[];\n saveFieldsBackend?: boolean;\n}\n\nexport type CmdbInstancesSelectPanelProps =\n | CmdbInstancesSelectPanelPropsWithObjectMap\n | CmdbInstancesSelectPanelPropsWithModelData;\n\nexport function isCmdbInstancesSelectPanelPropsWithObjectMap(\n props: CmdbInstancesSelectPanelProps\n): props is CmdbInstancesSelectPanelPropsWithObjectMap {\n return !isNil(\n (props as CmdbInstancesSelectPanelPropsWithObjectMap).objectMap\n );\n}\n\nexport function CmdbInstancesSelectPanel(\n props: CmdbInstancesSelectPanelProps,\n ref: any\n): React.ReactElement {\n // 当useExternalCmdbApi为true, 外部接口才调用\n const externalPostSearchV3 = useProvider(\n \"easyops.api.cmdb.topo_center@ProxyPostSearchV3:1.0.1\",\n { cache: false }\n );\n const externalGetObjectRef = useProvider(\n \"easyops.api.cmdb.topo_center@ProxyGetObjectRef:1.0.0\",\n { cache: false }\n );\n\n let modelData: Partial<CmdbModels.ModelCmdbObject>;\n if (isCmdbInstancesSelectPanelPropsWithObjectMap(props)) {\n modelData = props.objectMap[props.objectId];\n } else {\n modelData = props.modelData;\n }\n\n if (props.isFilterView) {\n //过滤掉视图不可见字段\n const hideModelData = modelData?.view?.hide_columns || [];\n modelData = {\n ...modelData,\n attrList: modelData.attrList.filter(\n (item: any) => !hideModelData.includes(item.id)\n ),\n relation_list: modelData.relation_list.filter(\n (item: any) =>\n !(\n (hideModelData.includes(item.left_id) &&\n item.left_object_id === props.objectId) ||\n (hideModelData.includes(item.right_id) &&\n item.right_object_id === props.objectId)\n )\n ),\n };\n }\n\n const displayedSelectedInstancesMaxNumber = props.previewMaxNumber ?? 5;\n\n const [selectedInstanceList, setSelectedInstanceList] = useState([]);\n const [partialSelectedInstances, setPartialSelectedInstances] = useState([]);\n // const [instanceTableData, setInstanceTableData] = useState({list: []})\n const [addInstancesModal, setAddInstancesModal] = useState({\n visible: false,\n });\n const [allSelectedInstancesModal, setAllSelectedInstancesModal] = useState({\n visible: false,\n });\n const [modelMap, setModelMap] = useState({});\n\n const externalRequestParams = useMemo(() => {\n return {\n objectId: props.objectId,\n sourceId: props.externalSourceId,\n };\n }, [props.objectId, props.externalSourceId]);\n\n const fetchInstances = async (instanceIdList: string[]): Promise<any[]> => {\n let instances: any[] = [];\n const instancesParams = {\n query: {\n instanceId: {\n $in: instanceIdList,\n },\n },\n page: 1,\n page_size: instanceIdList.length,\n // todo(ice): selected confirm with instances\n fields: props.fields?.length\n ? props.fields.reduce((prev, next) => ({ ...prev, [next]: true }), {})\n : { \"*\": true },\n ...(props.useExternalCmdbApi ? externalRequestParams : {}),\n };\n if (instanceIdList?.length) {\n // istanbul ignore if\n if (props.useExternalCmdbApi) {\n instances = (await externalPostSearchV3.query([instancesParams])).list;\n } else {\n instances = (\n await InstanceApi_postSearch(props.objectId, instancesParams)\n ).list;\n }\n }\n\n return instances;\n };\n const toLoadInstanceIds =\n props.value?.map((i) => (isObject(i) ? (i as any).instanceId : i)) || [];\n\n useEffect(() => {\n const getModelMap = async (): Promise<void> => {\n let modelMap: Record<string, Partial<CmdbModels.ModelCmdbObject>>;\n let objectRef;\n if (isCmdbInstancesSelectPanelPropsWithObjectMap(props)) {\n modelMap = props.objectMap;\n } else {\n if (props.useExternalCmdbApi) {\n objectRef = await externalGetObjectRef.query([\n {\n ref_object: props.objectId,\n ...externalRequestParams,\n },\n ]);\n } else {\n objectRef = (\n (await CmdbObjectApi_getObjectRef({\n ref_object: props.objectId,\n })) as any\n )?.data;\n }\n modelMap = keyBy(objectRef, \"objectId\");\n }\n setModelMap(modelMap);\n };\n getModelMap();\n }, [props.objectId, props.useExternalCmdbApi, props.externalSourceId]);\n\n useEffect(() => {\n let instances = [];\n\n const initInstances = async (): Promise<void> => {\n instances = await fetchInstances(toLoadInstanceIds);\n setSelectedInstanceList(instances);\n setPartialSelectedInstances(\n props?.isOperate\n ? instances\n : instances.slice(0, displayedSelectedInstancesMaxNumber)\n );\n props.onFetchedInstances?.(instances);\n };\n if (!isEmpty(toLoadInstanceIds)) {\n initInstances();\n } else {\n setSelectedInstanceList([]);\n setPartialSelectedInstances([]);\n }\n }, [toLoadInstanceIds.sort().join()]);\n const openAddInstancesModal = () => {\n setAddInstancesModal({ visible: true });\n };\n\n const closeAddInstancesModal = () => {\n setAddInstancesModal({ visible: false });\n };\n\n const openAllSelectedInstancesModal = () => {\n setAllSelectedInstancesModal({ visible: true });\n };\n\n const closeAllSelectedInstancesModal = () => {\n setAllSelectedInstancesModal({ visible: false });\n };\n\n const handleInstancesSelected = async (selectedKeys: string[]) => {\n closeAddInstancesModal();\n\n const instances = await fetchInstances(selectedKeys);\n setSelectedInstanceList(instances);\n setPartialSelectedInstances(\n props?.isOperate\n ? instances\n : instances.slice(0, displayedSelectedInstancesMaxNumber)\n );\n props.onChange?.(instances);\n };\n\n const fieldIds = modifyModelData(modelData).attrList.map(\n (attr: any) => attr.id\n );\n const showPreview =\n selectedInstanceList.length > displayedSelectedInstancesMaxNumber;\n const cs = classnames({\n [style.selectedInstancesTableWrapper]: true,\n [style.withPreview]: showPreview,\n });\n const { relation } = props;\n let relationLimit;\n if (relation?.right_max === 1) {\n relationLimit = { [relation.right_id]: { $size: { $lt: 1 } } };\n }\n const query = props.instanceQuery ?? relationLimit;\n return (\n <div className={style.wrapper} ref={ref}>\n <InstanceListModal\n objectMap={modelMap}\n objectId={props.objectId}\n visible={addInstancesModal.visible}\n title={\n props.modalTitle ??\n i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.FILTER_FROM_CMDB}`, {\n name: modelData.name,\n })\n }\n selectedRowKeys={selectedInstanceList.map(\n (instance) => instance.instanceId\n )}\n onSelected={handleInstancesSelected}\n onCancel={closeAddInstancesModal}\n singleSelect={props.singleSelect}\n presetConfigs={{\n query,\n fieldIds: props.fields,\n }}\n showBindButton={props.showBindButton}\n bindButtonDisabled={props.bindButtonDisabled}\n bindButtonText={props.bindButtonText}\n bindEvent={props.bindEvent}\n pageSize={props.addInstancesModalPageSize}\n searchDisabled={props.searchDisabled}\n advancedSearchDisabled={props.advancedSearchDisabled}\n ipCopy={props.ipCopy}\n showCloseBtn={props.showCloseBtn}\n showSizeChanger={props.showSizeChanger}\n pageSizeOptions={props.pageSizeOptions}\n aq={props.aq}\n saveFieldsBackend={props.saveFieldsBackend}\n useExternalCmdbApi={props.useExternalCmdbApi}\n externalSourceId={props.externalSourceId}\n />\n <InstanceListModal\n objectMap={modelMap}\n objectId={props.objectId}\n visible={allSelectedInstancesModal.visible}\n showBindButton={props.showBindButton}\n bindButtonDisabled={props.bindButtonDisabled}\n bindButtonText={props.bindButtonText}\n bindEvent={props.bindEvent}\n title={i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.VIEW_ALL_SELECTED_INSTANCES}`\n )}\n presetConfigs={{\n query: {\n instanceId: {\n $in: selectedInstanceList.map((instance) => instance.instanceId),\n },\n },\n fieldIds: props.fields,\n }}\n selectDisabled={!props.ipCopy}\n ipCopy={props.ipCopy}\n showCloseBtn={props.ipCopy ? true : props.showCloseBtn}\n pageSize={props.addInstancesModalPageSize}\n showSizeChanger={props.showSizeChanger}\n pageSizeOptions={props.pageSizeOptions}\n onCancel={closeAllSelectedInstancesModal}\n saveFieldsBackend={props.saveFieldsBackend}\n useExternalCmdbApi={props.useExternalCmdbApi}\n externalSourceId={props.externalSourceId}\n />\n <Spin\n style={{ textAlign: \"left\", marginBottom: \"12px\" }}\n spinning={isEqual(modelMap, {})}\n >\n <a\n className={style.addButton}\n style={{\n marginBottom: \"20px\",\n }}\n onClick={openAddInstancesModal}\n >\n {props.addTitle ?? props.useModelName\n ? i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.CHOOSE_INSTANCE_NAME}`, {\n name: modelData.name,\n })\n : i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.CHOOSE_INSTANCE}`)}\n </a>\n </Spin>\n <div className={cs}>\n <InstanceListTable\n {...(props.showDetailUrl\n ? {\n detailUrlTemplates: {\n [props.objectId]:\n \"/next-cmdb-instance-management/next/#{objectId}/instance/#{instanceId}\",\n },\n }\n : {})}\n idObjectMap={modelMap}\n modelData={modelData}\n instanceListData={{ list: partialSelectedInstances }}\n fieldIds={props.fields || fieldIds}\n selectDisabled={true}\n sortDisabled={true}\n configProps={\n props.showPagination && partialSelectedInstances.length > 10\n ? { pagination: { showSizeChanger: true } }\n : { pagination: false }\n }\n //\n isOperate={props.isOperate}\n useExternalCmdbApi={props.useExternalCmdbApi}\n externalSourceId={props.externalSourceId}\n handleDeleteFunction={(v: any) => {\n setSelectedInstanceList(v);\n setPartialSelectedInstances(v);\n props.onChange?.(v);\n }}\n target={\"_blank\"}\n ></InstanceListTable>\n {!props?.isOperate && showPreview && (\n <div\n className={style.showAllSelectedInstancesButton}\n onClick={openAllSelectedInstancesModal}\n >\n <a>\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.VIEW_ALL_DATA}`, {\n count: selectedInstanceList.length,\n })}\n </a>\n </div>\n )}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;AAAA;AACA;AAEA;AAKA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AA0DO,SAASA,4CAA4C,CAC1DC,KAAoC,EACiB;EACrD,OAAO,CAAC,IAAAC,aAAK,EACVD,KAAK,CAAgDE,SAAS,CAChE;AACH;AAEO,SAASC,wBAAwB,CACtCH,KAAoC,EACpCI,GAAQ,EACY;EAAA;EACpB;EACA,MAAMC,oBAAoB,GAAG,IAAAC,qBAAW,EACtC,sDAAsD,EACtD;IAAEC,KAAK,EAAE;EAAM,CAAC,CACjB;EACD,MAAMC,oBAAoB,GAAG,IAAAF,qBAAW,EACtC,sDAAsD,EACtD;IAAEC,KAAK,EAAE;EAAM,CAAC,CACjB;EAED,IAAIE,SAA8C;EAClD,IAAIV,4CAA4C,CAACC,KAAK,CAAC,EAAE;IACvDS,SAAS,GAAGT,KAAK,CAACE,SAAS,CAACF,KAAK,CAACU,QAAQ,CAAC;EAC7C,CAAC,MAAM;IACLD,SAAS,GAAGT,KAAK,CAACS,SAAS;EAC7B;EAEA,IAAIT,KAAK,CAACW,YAAY,EAAE;IAAA;IACtB;IACA,MAAMC,aAAa,GAAG,eAAAH,SAAS,kEAAT,WAAWI,IAAI,oDAAf,gBAAiBC,YAAY,KAAI,EAAE;IACzDL,SAAS,GAAG;MACV,GAAGA,SAAS;MACZM,QAAQ,EAAEN,SAAS,CAACM,QAAQ,CAACC,MAAM,CAChCC,IAAS,IAAK,CAACL,aAAa,CAACM,QAAQ,CAACD,IAAI,CAACE,EAAE,CAAC,CAChD;MACDC,aAAa,EAAEX,SAAS,CAACW,aAAa,CAACJ,MAAM,CAC1CC,IAAS,IACR,EACGL,aAAa,CAACM,QAAQ,CAACD,IAAI,CAACI,OAAO,CAAC,IACnCJ,IAAI,CAACK,cAAc,KAAKtB,KAAK,CAACU,QAAQ,IACvCE,aAAa,CAACM,QAAQ,CAACD,IAAI,CAACM,QAAQ,CAAC,IACpCN,IAAI,CAACO,eAAe,KAAKxB,KAAK,CAACU,QAAS,CAC3C;IAEP,CAAC;EACH;EAEA,MAAMe,mCAAmC,4BAAGzB,KAAK,CAAC0B,gBAAgB,yEAAI,CAAC;EAEvE,MAAM,CAACC,oBAAoB,EAAEC,uBAAuB,CAAC,GAAG,IAAAC,eAAQ,EAAC,EAAE,CAAC;EACpE,MAAM,CAACC,wBAAwB,EAAEC,2BAA2B,CAAC,GAAG,IAAAF,eAAQ,EAAC,EAAE,CAAC;EAC5E;EACA,MAAM,CAACG,iBAAiB,EAAEC,oBAAoB,CAAC,GAAG,IAAAJ,eAAQ,EAAC;IACzDK,OAAO,EAAE;EACX,CAAC,CAAC;EACF,MAAM,CAACC,yBAAyB,EAAEC,4BAA4B,CAAC,GAAG,IAAAP,eAAQ,EAAC;IACzEK,OAAO,EAAE;EACX,CAAC,CAAC;EACF,MAAM,CAACG,QAAQ,EAAEC,WAAW,CAAC,GAAG,IAAAT,eAAQ,EAAC,CAAC,CAAC,CAAC;EAE5C,MAAMU,qBAAqB,GAAG,IAAAC,cAAO,EAAC,MAAM;IAC1C,OAAO;MACL9B,QAAQ,EAAEV,KAAK,CAACU,QAAQ;MACxB+B,QAAQ,EAAEzC,KAAK,CAAC0C;IAClB,CAAC;EACH,CAAC,EAAE,CAAC1C,KAAK,CAACU,QAAQ,EAAEV,KAAK,CAAC0C,gBAAgB,CAAC,CAAC;EAE5C,MAAMC,cAAc,GAAG,MAAOC,cAAwB,IAAqB;IAAA;IACzE,IAAIC,SAAgB,GAAG,EAAE;IACzB,MAAMC,eAAe,GAAG;MACtBC,KAAK,EAAE;QACLC,UAAU,EAAE;UACVC,GAAG,EAAEL;QACP;MACF,CAAC;MACDM,IAAI,EAAE,CAAC;MACPC,SAAS,EAAEP,cAAc,CAACQ,MAAM;MAChC;MACAC,MAAM,EAAE,iBAAArD,KAAK,CAACqD,MAAM,0CAAZ,cAAcD,MAAM,GACxBpD,KAAK,CAACqD,MAAM,CAACC,MAAM,CAAC,CAACC,IAAI,EAAEC,IAAI,MAAM;QAAE,GAAGD,IAAI;QAAE,CAACC,IAAI,GAAG;MAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GACpE;QAAE,GAAG,EAAE;MAAK,CAAC;MACjB,IAAIxD,KAAK,CAACyD,kBAAkB,GAAGlB,qBAAqB,GAAG,CAAC,CAAC;IAC3D,CAAC;IACD,IAAIK,cAAc,aAAdA,cAAc,eAAdA,cAAc,CAAEQ,MAAM,EAAE;MAC1B;MACA,IAAIpD,KAAK,CAACyD,kBAAkB,EAAE;QAC5BZ,SAAS,GAAG,CAAC,MAAMxC,oBAAoB,CAAC0C,KAAK,CAAC,CAACD,eAAe,CAAC,CAAC,EAAEY,IAAI;MACxE,CAAC,MAAM;QACLb,SAAS,GAAG,CACV,MAAM,IAAAc,+BAAsB,EAAC3D,KAAK,CAACU,QAAQ,EAAEoC,eAAe,CAAC,EAC7DY,IAAI;MACR;IACF;IAEA,OAAOb,SAAS;EAClB,CAAC;EACD,MAAMe,iBAAiB,GACrB,iBAAA5D,KAAK,CAAC6D,KAAK,iDAAX,aAAaC,GAAG,CAAEC,CAAC,IAAM,IAAAC,gBAAQ,EAACD,CAAC,CAAC,GAAIA,CAAC,CAASf,UAAU,GAAGe,CAAE,CAAC,KAAI,EAAE;EAE1E,IAAAE,gBAAS,EAAC,MAAM;IACd,MAAMC,WAAW,GAAG,YAA2B;MAC7C,IAAI7B,QAA6D;MACjE,IAAI8B,SAAS;MACb,IAAIpE,4CAA4C,CAACC,KAAK,CAAC,EAAE;QACvDqC,QAAQ,GAAGrC,KAAK,CAACE,SAAS;MAC5B,CAAC,MAAM;QACL,IAAIF,KAAK,CAACyD,kBAAkB,EAAE;UAC5BU,SAAS,GAAG,MAAM3D,oBAAoB,CAACuC,KAAK,CAAC,CAC3C;YACEqB,UAAU,EAAEpE,KAAK,CAACU,QAAQ;YAC1B,GAAG6B;UACL,CAAC,CACF,CAAC;QACJ,CAAC,MAAM;UAAA;UACL4B,SAAS,4BACN,MAAM,IAAAE,mCAA0B,EAAC;YAChCD,UAAU,EAAEpE,KAAK,CAACU;UACpB,CAAC,CAAC,0DAHQ,sBAIT4D,IAAI;QACT;QACAjC,QAAQ,GAAG,IAAAkC,aAAK,EAACJ,SAAS,EAAE,UAAU,CAAC;MACzC;MACA7B,WAAW,CAACD,QAAQ,CAAC;IACvB,CAAC;IACD6B,WAAW,EAAE;EACf,CAAC,EAAE,CAAClE,KAAK,CAACU,QAAQ,EAAEV,KAAK,CAACyD,kBAAkB,EAAEzD,KAAK,CAAC0C,gBAAgB,CAAC,CAAC;EAEtE,IAAAuB,gBAAS,EAAC,MAAM;IACd,IAAIpB,SAAS,GAAG,EAAE;IAElB,MAAM2B,aAAa,GAAG,YAA2B;MAAA;MAC/C3B,SAAS,GAAG,MAAMF,cAAc,CAACiB,iBAAiB,CAAC;MACnDhC,uBAAuB,CAACiB,SAAS,CAAC;MAClCd,2BAA2B,CACzB/B,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEyE,SAAS,GACZ5B,SAAS,GACTA,SAAS,CAAC6B,KAAK,CAAC,CAAC,EAAEjD,mCAAmC,CAAC,CAC5D;MACD,yBAAAzB,KAAK,CAAC2E,kBAAkB,0DAAxB,2BAAA3E,KAAK,EAAsB6C,SAAS,CAAC;IACvC,CAAC;IACD,IAAI,CAAC,IAAA+B,eAAO,EAAChB,iBAAiB,CAAC,EAAE;MAC/BY,aAAa,EAAE;IACjB,CAAC,MAAM;MACL5C,uBAAuB,CAAC,EAAE,CAAC;MAC3BG,2BAA2B,CAAC,EAAE,CAAC;IACjC;EACF,CAAC,EAAE,CAAC6B,iBAAiB,CAACiB,IAAI,EAAE,CAACC,IAAI,EAAE,CAAC,CAAC;EACrC,MAAMC,qBAAqB,GAAG,MAAM;IAClC9C,oBAAoB,CAAC;MAAEC,OAAO,EAAE;IAAK,CAAC,CAAC;EACzC,CAAC;EAED,MAAM8C,sBAAsB,GAAG,MAAM;IACnC/C,oBAAoB,CAAC;MAAEC,OAAO,EAAE;IAAM,CAAC,CAAC;EAC1C,CAAC;EAED,MAAM+C,6BAA6B,GAAG,MAAM;IAC1C7C,4BAA4B,CAAC;MAAEF,OAAO,EAAE;IAAK,CAAC,CAAC;EACjD,CAAC;EAED,MAAMgD,8BAA8B,GAAG,MAAM;IAC3C9C,4BAA4B,CAAC;MAAEF,OAAO,EAAE;IAAM,CAAC,CAAC;EAClD,CAAC;EAED,MAAMiD,uBAAuB,GAAG,MAAOC,YAAsB,IAAK;IAAA;IAChEJ,sBAAsB,EAAE;IAExB,MAAMnC,SAAS,GAAG,MAAMF,cAAc,CAACyC,YAAY,CAAC;IACpDxD,uBAAuB,CAACiB,SAAS,CAAC;IAClCd,2BAA2B,CACzB/B,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEyE,SAAS,GACZ5B,SAAS,GACTA,SAAS,CAAC6B,KAAK,CAAC,CAAC,EAAEjD,mCAAmC,CAAC,CAC5D;IACD,mBAAAzB,KAAK,CAACqF,QAAQ,oDAAd,qBAAArF,KAAK,EAAY6C,SAAS,CAAC;EAC7B,CAAC;EAED,MAAMyC,QAAQ,GAAG,IAAAC,0BAAe,EAAC9E,SAAS,CAAC,CAACM,QAAQ,CAAC+C,GAAG,CACrD0B,IAAS,IAAKA,IAAI,CAACrE,EAAE,CACvB;EACD,MAAMsE,WAAW,GACf9D,oBAAoB,CAACyB,MAAM,GAAG3B,mCAAmC;EACnE,MAAMiE,EAAE,GAAG,IAAAC,mBAAU,EAAC;IACpB,CAACC,oBAAK,CAACC,6BAA6B,GAAG,IAAI;IAC3C,CAACD,oBAAK,CAACE,WAAW,GAAGL;EACvB,CAAC,CAAC;EACF,MAAM;IAAEM;EAAS,CAAC,GAAG/F,KAAK;EAC1B,IAAIgG,aAAa;EACjB,IAAI,CAAAD,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEE,SAAS,MAAK,CAAC,EAAE;IAC7BD,aAAa,GAAG;MAAE,CAACD,QAAQ,CAACxE,QAAQ,GAAG;QAAE2E,KAAK,EAAE;UAAEC,GAAG,EAAE;QAAE;MAAE;IAAE,CAAC;EAChE;EACA,MAAMpD,KAAK,2BAAG/C,KAAK,CAACoG,aAAa,uEAAIJ,aAAa;EAClD,oBACE;IAAK,SAAS,EAAEJ,oBAAK,CAACS,OAAQ;IAAC,GAAG,EAAEjG;EAAI,gBACtC,6BAAC,oCAAiB;IAChB,SAAS,EAAEiC,QAAS;IACpB,QAAQ,EAAErC,KAAK,CAACU,QAAS;IACzB,OAAO,EAAEsB,iBAAiB,CAACE,OAAQ;IACnC,KAAK,uBACHlC,KAAK,CAACsG,UAAU,iEAChBC,gBAAI,CAACC,CAAC,CAAE,GAAEC,iCAAuB,IAAGC,YAAC,CAACC,gBAAiB,EAAC,EAAE;MACxDC,IAAI,EAAEnG,SAAS,CAACmG;IAClB,CAAC,CACF;IACD,eAAe,EAAEjF,oBAAoB,CAACmC,GAAG,CACtC+C,QAAQ,IAAKA,QAAQ,CAAC7D,UAAU,CACjC;IACF,UAAU,EAAEmC,uBAAwB;IACpC,QAAQ,EAAEH,sBAAuB;IACjC,YAAY,EAAEhF,KAAK,CAAC8G,YAAa;IACjC,aAAa,EAAE;MACb/D,KAAK;MACLuC,QAAQ,EAAEtF,KAAK,CAACqD;IAClB,CAAE;IACF,cAAc,EAAErD,KAAK,CAAC+G,cAAe;IACrC,kBAAkB,EAAE/G,KAAK,CAACgH,kBAAmB;IAC7C,cAAc,EAAEhH,KAAK,CAACiH,cAAe;IACrC,SAAS,EAAEjH,KAAK,CAACkH,SAAU;IAC3B,QAAQ,EAAElH,KAAK,CAACmH,yBAA0B;IAC1C,cAAc,EAAEnH,KAAK,CAACoH,cAAe;IACrC,sBAAsB,EAAEpH,KAAK,CAACqH,sBAAuB;IACrD,MAAM,EAAErH,KAAK,CAACsH,MAAO;IACrB,YAAY,EAAEtH,KAAK,CAACuH,YAAa;IACjC,eAAe,EAAEvH,KAAK,CAACwH,eAAgB;IACvC,eAAe,EAAExH,KAAK,CAACyH,eAAgB;IACvC,EAAE,EAAEzH,KAAK,CAAC0H,EAAG;IACb,iBAAiB,EAAE1H,KAAK,CAAC2H,iBAAkB;IAC3C,kBAAkB,EAAE3H,KAAK,CAACyD,kBAAmB;IAC7C,gBAAgB,EAAEzD,KAAK,CAAC0C;EAAiB,EACzC,eACF,6BAAC,oCAAiB;IAChB,SAAS,EAAEL,QAAS;IACpB,QAAQ,EAAErC,KAAK,CAACU,QAAS;IACzB,OAAO,EAAEyB,yBAAyB,CAACD,OAAQ;IAC3C,cAAc,EAAElC,KAAK,CAAC+G,cAAe;IACrC,kBAAkB,EAAE/G,KAAK,CAACgH,kBAAmB;IAC7C,cAAc,EAAEhH,KAAK,CAACiH,cAAe;IACrC,SAAS,EAAEjH,KAAK,CAACkH,SAAU;IAC3B,KAAK,EAAEX,gBAAI,CAACC,CAAC,CACV,GAAEC,iCAAuB,IAAGC,YAAC,CAACkB,2BAA4B,EAAC,CAC5D;IACF,aAAa,EAAE;MACb7E,KAAK,EAAE;QACLC,UAAU,EAAE;UACVC,GAAG,EAAEtB,oBAAoB,CAACmC,GAAG,CAAE+C,QAAQ,IAAKA,QAAQ,CAAC7D,UAAU;QACjE;MACF,CAAC;MACDsC,QAAQ,EAAEtF,KAAK,CAACqD;IAClB,CAAE;IACF,cAAc,EAAE,CAACrD,KAAK,CAACsH,MAAO;IAC9B,MAAM,EAAEtH,KAAK,CAACsH,MAAO;IACrB,YAAY,EAAEtH,KAAK,CAACsH,MAAM,GAAG,IAAI,GAAGtH,KAAK,CAACuH,YAAa;IACvD,QAAQ,EAAEvH,KAAK,CAACmH,yBAA0B;IAC1C,eAAe,EAAEnH,KAAK,CAACwH,eAAgB;IACvC,eAAe,EAAExH,KAAK,CAACyH,eAAgB;IACvC,QAAQ,EAAEvC,8BAA+B;IACzC,iBAAiB,EAAElF,KAAK,CAAC2H,iBAAkB;IAC3C,kBAAkB,EAAE3H,KAAK,CAACyD,kBAAmB;IAC7C,gBAAgB,EAAEzD,KAAK,CAAC0C;EAAiB,EACzC,eACF,6BAAC,UAAI;IACH,KAAK,EAAE;MAAEmF,SAAS,EAAE,MAAM;MAAEC,YAAY,EAAE;IAAO,CAAE;IACnD,QAAQ,EAAE,IAAAC,eAAO,EAAC1F,QAAQ,EAAE,CAAC,CAAC;EAAE,gBAEhC;IACE,SAAS,EAAEuD,oBAAK,CAACoC,SAAU;IAC3B,KAAK,EAAE;MACLF,YAAY,EAAE;IAChB,CAAE;IACF,OAAO,EAAE/C;EAAsB,GAE9B,oBAAA/E,KAAK,CAACiI,QAAQ,6DAAIjI,KAAK,CAACkI,YAAY,IACjC3B,gBAAI,CAACC,CAAC,CAAE,GAAEC,iCAAuB,IAAGC,YAAC,CAACyB,oBAAqB,EAAC,EAAE;IAC5DvB,IAAI,EAAEnG,SAAS,CAACmG;EAClB,CAAC,CAAC,GACFL,gBAAI,CAACC,CAAC,CAAE,GAAEC,iCAAuB,IAAGC,YAAC,CAAC0B,eAAgB,EAAC,CAAC,CAC1D,CACC,eACP;IAAK,SAAS,EAAE1C;EAAG,gBACjB,6BAAC,oCAAiB,6BACX1F,KAAK,CAACqI,aAAa,GACpB;IACEC,kBAAkB,EAAE;MAClB,CAACtI,KAAK,CAACU,QAAQ,GACb;IACJ;EACF,CAAC,GACD,CAAC,CAAC;IACN,WAAW,EAAE2B,QAAS;IACtB,SAAS,EAAE5B,SAAU;IACrB,gBAAgB,EAAE;MAAEiD,IAAI,EAAE5B;IAAyB,CAAE;IACrD,QAAQ,EAAE9B,KAAK,CAACqD,MAAM,IAAIiC,QAAS;IACnC,cAAc,EAAE,IAAK;IACrB,YAAY,EAAE,IAAK;IACnB,WAAW,EACTtF,KAAK,CAACuI,cAAc,IAAIzG,wBAAwB,CAACsB,MAAM,GAAG,EAAE,GACxD;MAAEoF,UAAU,EAAE;QAAEhB,eAAe,EAAE;MAAK;IAAE,CAAC,GACzC;MAAEgB,UAAU,EAAE;IAAM;IAE1B;IAAA;IACA,SAAS,EAAExI,KAAK,CAACyE,SAAU;IAC3B,kBAAkB,EAAEzE,KAAK,CAACyD,kBAAmB;IAC7C,gBAAgB,EAAEzD,KAAK,CAAC0C,gBAAiB;IACzC,oBAAoB,EAAG+F,CAAM,IAAK;MAAA;MAChC7G,uBAAuB,CAAC6G,CAAC,CAAC;MAC1B1G,2BAA2B,CAAC0G,CAAC,CAAC;MAC9B,oBAAAzI,KAAK,CAACqF,QAAQ,qDAAd,sBAAArF,KAAK,EAAYyI,CAAC,CAAC;IACrB,CAAE;IACF,MAAM,EAAE;EAAS,GACE,EACpB,EAACzI,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEyE,SAAS,KAAIgB,WAAW,iBAC/B;IACE,SAAS,EAAEG,oBAAK,CAAC8C,8BAA+B;IAChD,OAAO,EAAEzD;EAA8B,gBAEvC,wCACGsB,gBAAI,CAACC,CAAC,CAAE,GAAEC,iCAAuB,IAAGC,YAAC,CAACiC,aAAc,EAAC,EAAE;IACtDC,KAAK,EAAEjH,oBAAoB,CAACyB;EAC9B,CAAC,CAAC,CACA,CAEP,CACG,CACF;AAEV"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instance-relation-table-show.js","names":["reOrderAttrs","fields","fieldOrder","sortBy","field","index","indexOf","length","getRelationShowFields","defaultRelationFields","oppositeAttrList","attr_order","showFields","map","item","startsWith","slice","InstanceRelationTableShow","props","modelDataMap","relationData","value","relationFieldUrlTemplate","paginationChange","total","relationTablePagination","oppositeModelDataMap","setOppositeModelDataMap","useState","useEffect","fetchOppositeModelData","modelListData","fetchCmdbObjectRef","right_object_id","keyBy","data","catch","error","handleHttpError","instanceSourceQuery","setInstanceSourceQuery","modelData","left_object_id","oppositeModelData","modifyModelData","get","__id","fieldIds","attrList","attr","id","hideModelData","view","hide_columns","filter","includes","relation_list","left_id","right_id","display","hideRelationLink","list","instanceQuery","onInstanceSourceChange","filterInstanceSourceDisabled","pagination","isPagination","showSizeChanger","pageSizeOptions","onChange","page","pageSize","showTotal","totals","styles","totalText","i18n","t","NS_LIBS_CMDB_INSTANCES","K","PAGINATION_TOTAL_TEXT","PAGINATION_TOTAL_UNIT"],"sources":["../../../../../src/instance-detail/components/instance-relation-table-show/instance-relation-table-show.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { Table } from \"antd\";\nimport {\n ModifiedModelObjectRelation,\n modifyModelData,\n} from \"@next-libs/cmdb-utils\";\nimport { CmdbModels } from \"@next-sdk/cmdb-sdk\";\nimport { InstanceListTable } from \"../../../instance-list-table\";\nimport { NS_LIBS_CMDB_INSTANCES, K } from \"../../../i18n/constants\";\nimport i18n from \"i18next\";\nimport { get, sortBy, keyBy } from \"lodash\";\nimport styles from \"../../../instance-list-table/InstanceListTable.module.css\";\nimport { fetchCmdbObjectRef } from \"../../../data-providers\";\nimport { handleHttpError } from \"@next-core/brick-kit\";\nexport interface InstanceRelationTableShowProps {\n modelDataMap: { [objectId: string]: CmdbModels.ModelCmdbObject };\n relationData: ModifiedModelObjectRelation;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: any[];\n relationFieldUrlTemplate?: string;\n isPagination?: boolean;\n total?: number;\n relationTablePagination?: {\n current?: number;\n pageSize?: number;\n };\n paginationChange?: (\n page: number,\n pageSize: number,\n relationData: ModifiedModelObjectRelation\n ) => Promise<void> | void;\n hideRelationLink?: boolean;\n onInstanceSourceChange?: (instanceSource: string) => void;\n filterInstanceSourceDisabled?: boolean;\n}\nexport function reOrderAttrs(fields: string[], fieldOrder: string[] = []) {\n return sortBy(fields, (field) => {\n const index = fieldOrder.indexOf(field);\n return index === -1 ? fields.length : index;\n });\n}\nexport function getRelationShowFields(\n defaultRelationFields: string[],\n oppositeAttrList: string[],\n attr_order: string[] = []\n) {\n let showFields = oppositeAttrList;\n if (defaultRelationFields?.length) {\n showFields = reOrderAttrs(\n defaultRelationFields.map((item: string) =>\n item.startsWith(\"#\") ? item.slice(1) : item\n ),\n attr_order\n );\n }\n return showFields;\n}\n//istanbul ignore next\nexport function InstanceRelationTableShow(\n props: InstanceRelationTableShowProps\n): React.ReactElement {\n const {\n modelDataMap,\n relationData,\n value,\n relationFieldUrlTemplate,\n paginationChange,\n total,\n relationTablePagination,\n } = props;\n const [oppositeModelDataMap, setOppositeModelDataMap] = useState({});\n /**\n * 实例详情中展示对端实例的关系时,需要重新拉取对端关系所关联的模型。\n * 如在主机详情中展示负责人所在的角色,需要拿到与USER相关的模型ROLE@ONEMODEL\n * 而原来的modelDataMap是与HOST相关的,可能不包括ROLE@ONEMODEL,就造成取不到角色的showKey\n */\n useEffect(() => {\n const fetchOppositeModelData = async () => {\n const modelListData = await fetchCmdbObjectRef(\n relationData.right_object_id\n );\n setOppositeModelDataMap(keyBy(modelListData.data, \"objectId\"));\n };\n fetchOppositeModelData().catch((error) => {\n handleHttpError(error);\n });\n }, [relationData]);\n const [instanceSourceQuery, setInstanceSourceQuery] = useState(null);\n const modelData = modelDataMap[relationData.left_object_id];\n let oppositeModelData = modifyModelData(\n modelDataMap[relationData.right_object_id]\n );\n // 如果指定了relation_default_attr,则取里面的字段\n const defaultRelationFields = get(modelData, [\n \"view\",\n \"relation_default_attr\",\n relationData.__id,\n ]);\n\n const fieldIds = getRelationShowFields(\n defaultRelationFields,\n oppositeModelData.attrList.map((attr) => attr.id),\n get(oppositeModelData, [\"view\", \"attr_order\"])\n );\n //过滤掉视图不可见字段\n const hideModelData = oppositeModelData.view?.hide_columns ?? [];\n oppositeModelData = {\n ...oppositeModelData,\n attrList: oppositeModelData.attrList.filter(\n (item: any) => !hideModelData.includes(item.id)\n ),\n relation_list: oppositeModelData.relation_list.filter(\n (item: any) =>\n !(\n (hideModelData.includes(item.left_id) &&\n item.left_object_id === props.relationData.right_object_id) ||\n (hideModelData.includes(item.right_id) &&\n item.right_object_id === props.relationData.right_object_id)\n )\n ),\n };\n\n return (\n <div style={{ display: \"grid\" }}>\n <InstanceListTable\n detailUrlTemplates={\n props.hideRelationLink\n ? null\n : {\n [relationData.right_object_id]:\n \"/next-cmdb-instance-management/next/#{objectId}/instance/#{instanceId}\",\n }\n }\n idObjectMap={oppositeModelDataMap}\n modelData={oppositeModelData}\n instanceListData={{\n list: value,\n }}\n onInstanceSourceChange={(instanceQuery) => {\n props.onInstanceSourceChange(instanceQuery);\n }}\n filterInstanceSourceDisabled={props.filterInstanceSourceDisabled}\n autoBreakLine={true}\n fieldIds={fieldIds}\n selectDisabled={true}\n sortDisabled={true}\n configProps={{\n pagination: props.isPagination\n ? {\n showSizeChanger: true,\n total: total,\n pageSizeOptions: [\"10\", \"20\", \"50\"],\n ...relationTablePagination,\n onChange: (page, pageSize) => {\n paginationChange(page, pageSize, relationData);\n },\n showTotal: (totals: number) => (\n <span className={styles.totalText}>\n {i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.PAGINATION_TOTAL_TEXT}`\n )}{\" \"}\n <strong className={styles.total}>{totals}</strong>{\" \"}\n {i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.PAGINATION_TOTAL_UNIT}`\n )}\n </span>\n ),\n }\n : false,\n }}\n target={\"_blank\"}\n ></InstanceListTable>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;AAAA;AAEA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AAsBO,SAASA,YAAY,CAACC,MAAgB,EAAEC,UAAoB,GAAG,EAAE,EAAE;EACxE,OAAO,IAAAC,cAAM,EAACF,MAAM,EAAGG,KAAK,IAAK;IAC/B,MAAMC,KAAK,GAAGH,UAAU,CAACI,OAAO,CAACF,KAAK,CAAC;IACvC,OAAOC,KAAK,KAAK,CAAC,CAAC,GAAGJ,MAAM,CAACM,MAAM,GAAGF,KAAK;EAC7C,CAAC,CAAC;AACJ;AACO,SAASG,qBAAqB,CACnCC,qBAA+B,EAC/BC,gBAA0B,EAC1BC,UAAoB,GAAG,EAAE,EACzB;EACA,IAAIC,UAAU,GAAGF,gBAAgB;EACjC,IAAID,qBAAqB,aAArBA,qBAAqB,eAArBA,qBAAqB,CAAEF,MAAM,EAAE;IACjCK,UAAU,GAAGZ,YAAY,CACvBS,qBAAqB,CAACI,GAAG,CAAEC,IAAY,IACrCA,IAAI,CAACC,UAAU,CAAC,GAAG,CAAC,GAAGD,IAAI,CAACE,KAAK,CAAC,CAAC,CAAC,GAAGF,IAAI,CAC5C,EACDH,UAAU,CACX;EACH;EACA,OAAOC,UAAU;AACnB;AACA;AACO,SAASK,yBAAyB,CACvCC,KAAqC,EACjB;EAAA;EACpB,MAAM;IACJC,YAAY;IACZC,YAAY;IACZC,KAAK;IACLC,wBAAwB;IACxBC,gBAAgB;IAChBC,KAAK;IACLC;EACF,CAAC,GAAGP,KAAK;EACT,MAAM,CAACQ,oBAAoB,EAAEC,uBAAuB,CAAC,GAAG,IAAAC,eAAQ,EAAC,CAAC,CAAC,CAAC;EACpE;AACF;AACA;AACA;AACA;EACE,IAAAC,gBAAS,EAAC,MAAM;IACd,MAAMC,sBAAsB,GAAG,YAAY;MACzC,MAAMC,aAAa,GAAG,MAAM,IAAAC,iCAAkB,EAC5CZ,YAAY,CAACa,eAAe,CAC7B;MACDN,uBAAuB,CAAC,IAAAO,aAAK,EAACH,aAAa,CAACI,IAAI,EAAE,UAAU,CAAC,CAAC;IAChE,CAAC;IACDL,sBAAsB,EAAE,CAACM,KAAK,CAAEC,KAAK,IAAK;MACxC,IAAAC,yBAAe,EAACD,KAAK,CAAC;IACxB,CAAC,CAAC;EACJ,CAAC,EAAE,CAACjB,YAAY,CAAC,CAAC;EAClB,MAAM,CAACmB,mBAAmB,EAAEC,sBAAsB,CAAC,GAAG,IAAAZ,eAAQ,EAAC,IAAI,CAAC;EACpE,MAAMa,SAAS,GAAGtB,YAAY,CAACC,YAAY,CAACsB,cAAc,CAAC;EAC3D,IAAIC,iBAAiB,GAAG,IAAAC,0BAAe,EACrCzB,YAAY,CAACC,YAAY,CAACa,eAAe,CAAC,CAC3C;EACD;EACA,MAAMxB,qBAAqB,GAAG,IAAAoC,WAAG,EAACJ,SAAS,EAAE,CAC3C,MAAM,EACN,uBAAuB,EACvBrB,YAAY,CAAC0B,IAAI,CAClB,CAAC;EAEF,MAAMC,QAAQ,GAAGvC,qBAAqB,CACpCC,qBAAqB,EACrBkC,iBAAiB,CAACK,QAAQ,CAACnC,GAAG,CAAEoC,IAAI,IAAKA,IAAI,CAACC,EAAE,CAAC,EACjD,IAAAL,WAAG,EAACF,iBAAiB,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAC/C;EACD;EACA,MAAMQ,aAAa,sDAAGR,iBAAiB,CAACS,IAAI,2DAAtB,uBAAwBC,YAAY,yEAAI,EAAE;EAChEV,iBAAiB,GAAG;IAClB,GAAGA,iBAAiB;IACpBK,QAAQ,EAAEL,iBAAiB,CAACK,QAAQ,CAACM,MAAM,CACxCxC,IAAS,IAAK,CAACqC,aAAa,CAACI,QAAQ,CAACzC,IAAI,CAACoC,EAAE,CAAC,CAChD;IACDM,aAAa,EAAEb,iBAAiB,CAACa,aAAa,CAACF,MAAM,CAClDxC,IAAS,IACR,EACGqC,aAAa,CAACI,QAAQ,CAACzC,IAAI,CAAC2C,OAAO,CAAC,IACnC3C,IAAI,CAAC4B,cAAc,KAAKxB,KAAK,CAACE,YAAY,CAACa,eAAe,IAC3DkB,aAAa,CAACI,QAAQ,CAACzC,IAAI,CAAC4C,QAAQ,CAAC,IACpC5C,IAAI,CAACmB,eAAe,KAAKf,KAAK,CAACE,YAAY,CAACa,eAAgB,CAC/D;EAEP,CAAC;EAED,oBACE;IAAK,KAAK,EAAE;MAAE0B,OAAO,EAAE;IAAO;EAAE,gBAC9B,6BAAC,oCAAiB;IAChB,kBAAkB,EAChBzC,KAAK,CAAC0C,gBAAgB,GAClB,IAAI,GACJ;MACE,CAACxC,YAAY,CAACa,eAAe,GAC3B;IACJ,CACL;IACD,WAAW,EAAEP,oBAAqB;IAClC,SAAS,EAAEiB,iBAAkB;IAC7B,gBAAgB,EAAE;MAChBkB,IAAI,EAAExC;IACR,CAAE;IACF,sBAAsB,EAAGyC,aAAa,IAAK;MACzC5C,KAAK,CAAC6C,sBAAsB,CAACD,aAAa,CAAC;IAC7C,CAAE;IACF,4BAA4B,EAAE5C,KAAK,CAAC8C,4BAA6B;IACjE,aAAa,EAAE,IAAK;IACpB,QAAQ,EAAEjB,QAAS;IACnB,cAAc,EAAE,IAAK;IACrB,YAAY,EAAE,IAAK;IACnB,WAAW,EAAE;MACXkB,UAAU,EAAE/C,KAAK,CAACgD,YAAY,GAC1B;QACEC,eAAe,EAAE,IAAI;QACrB3C,KAAK,EAAEA,KAAK;QACZ4C,eAAe,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;QACnC,GAAG3C,uBAAuB;QAC1B4C,QAAQ,EAAE,CAACC,IAAI,EAAEC,QAAQ,KAAK;UAC5BhD,gBAAgB,CAAC+C,IAAI,EAAEC,QAAQ,EAAEnD,YAAY,CAAC;QAChD,CAAC;QACDoD,SAAS,EAAGC,MAAc,iBACxB;UAAM,SAAS,EAAEC,gCAAM,CAACC;QAAU,GAC/BC,gBAAI,CAACC,CAAC,CACJ,GAAEC,iCAAuB,IAAGC,YAAC,CAACC,qBAAsB,EAAC,CACvD,EAAE,GAAG,eACN;UAAQ,SAAS,EAAEN,gCAAM,CAAClD;QAAM,GAAEiD,MAAM,CAAU,EAAC,GAAG,EACrDG,gBAAI,CAACC,CAAC,CACJ,GAAEC,iCAAuB,IAAGC,YAAC,CAACE,qBAAsB,EAAC,CACvD;MAGP,CAAC,GACD;IACN,CAAE;IACF,MAAM,EAAE;EAAS,EACE,CACjB;AAEV"}
|
|
1
|
+
{"version":3,"file":"instance-relation-table-show.js","names":["reOrderAttrs","fields","fieldOrder","sortBy","field","index","indexOf","length","getRelationShowFields","defaultRelationFields","oppositeAttrList","attr_order","showFields","map","item","startsWith","slice","InstanceRelationTableShow","props","modelDataMap","relationData","value","relationFieldUrlTemplate","paginationChange","total","relationTablePagination","oppositeModelDataMap","setOppositeModelDataMap","useState","useEffect","fetchOppositeModelData","modelListData","fetchCmdbObjectRef","right_object_id","keyBy","data","catch","error","handleHttpError","instanceSourceQuery","setInstanceSourceQuery","modelData","left_object_id","oppositeModelData","modifyModelData","get","__id","fieldIds","attrList","attr","id","hideModelData","view","hide_columns","filter","includes","relation_list","left_id","right_id","display","hideRelationLink","list","instanceQuery","onInstanceSourceChange","filterInstanceSourceDisabled","pagination","isPagination","showSizeChanger","pageSizeOptions","onChange","page","pageSize","showTotal","totals","styles","totalText","i18n","t","NS_LIBS_CMDB_INSTANCES","K","PAGINATION_TOTAL_TEXT","PAGINATION_TOTAL_UNIT"],"sources":["../../../../../src/instance-detail/components/instance-relation-table-show/instance-relation-table-show.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { Table } from \"antd\";\nimport {\n ModifiedModelObjectRelation,\n modifyModelData,\n} from \"@next-libs/cmdb-utils\";\nimport { CmdbModels } from \"@next-sdk/cmdb-sdk\";\nimport { InstanceListTable } from \"../../../instance-list-table\";\nimport { NS_LIBS_CMDB_INSTANCES, K } from \"../../../i18n/constants\";\nimport i18n from \"i18next\";\nimport { get, sortBy, keyBy } from \"lodash\";\nimport styles from \"../../../instance-list-table/InstanceListTable.module.css\";\nimport { fetchCmdbObjectRef } from \"../../../data-providers\";\nimport { handleHttpError } from \"@next-core/brick-kit\";\nexport interface InstanceRelationTableShowProps {\n modelDataMap: { [objectId: string]: CmdbModels.ModelCmdbObject };\n relationData: ModifiedModelObjectRelation;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: any[];\n relationFieldUrlTemplate?: string;\n isPagination?: boolean;\n total?: number;\n relationTablePagination?: {\n current?: number;\n pageSize?: number;\n };\n paginationChange?: (\n page: number,\n pageSize: number,\n relationData: ModifiedModelObjectRelation\n ) => Promise<void> | void;\n hideRelationLink?: boolean;\n onInstanceSourceChange?: (instanceSource: string) => void;\n filterInstanceSourceDisabled?: boolean;\n}\nexport function reOrderAttrs(fields: string[], fieldOrder: string[] = []) {\n return sortBy(fields, (field) => {\n const index = fieldOrder.indexOf(field);\n return index === -1 ? fields.length : index;\n });\n}\nexport function getRelationShowFields(\n defaultRelationFields: string[],\n oppositeAttrList: string[],\n attr_order: string[] = []\n) {\n let showFields = oppositeAttrList;\n if (defaultRelationFields?.length) {\n showFields = reOrderAttrs(\n defaultRelationFields.map((item: string) =>\n item.startsWith(\"#\") ? item.slice(1) : item\n ),\n attr_order\n );\n }\n return showFields;\n}\n//istanbul ignore next\nexport function InstanceRelationTableShow(\n props: InstanceRelationTableShowProps\n): React.ReactElement {\n const {\n modelDataMap,\n relationData,\n value,\n relationFieldUrlTemplate,\n paginationChange,\n total,\n relationTablePagination,\n } = props;\n const [oppositeModelDataMap, setOppositeModelDataMap] = useState({});\n /**\n * 实例详情中展示对端实例的关系时,需要重新拉取对端关系所关联的模型。\n * 如在主机详情中展示负责人所在的角色,需要拿到与USER相关的模型ROLE@ONEMODEL\n * 而原来的modelDataMap是与HOST相关的,可能不包括ROLE@ONEMODEL,就造成取不到角色的showKey\n */\n useEffect(() => {\n const fetchOppositeModelData = async () => {\n const modelListData = await fetchCmdbObjectRef(\n relationData.right_object_id\n );\n setOppositeModelDataMap(keyBy(modelListData.data, \"objectId\"));\n };\n fetchOppositeModelData().catch((error) => {\n handleHttpError(error);\n });\n }, [relationData]);\n const [instanceSourceQuery, setInstanceSourceQuery] = useState(null);\n const modelData = modelDataMap[relationData.left_object_id];\n let oppositeModelData = modifyModelData(\n modelDataMap[relationData.right_object_id]\n );\n // 如果指定了relation_default_attr,则取里面的字段\n const defaultRelationFields = get(modelData, [\n \"view\",\n \"relation_default_attr\",\n relationData.__id,\n ]);\n\n const fieldIds = getRelationShowFields(\n defaultRelationFields,\n oppositeModelData.attrList.map((attr) => attr.id),\n get(oppositeModelData, [\"view\", \"attr_order\"])\n );\n //过滤掉视图不可见字段\n const hideModelData = oppositeModelData.view?.hide_columns ?? [];\n oppositeModelData = {\n ...oppositeModelData,\n attrList: oppositeModelData.attrList.filter(\n (item: any) => !hideModelData.includes(item.id)\n ),\n relation_list: oppositeModelData.relation_list.filter(\n (item: any) =>\n !(\n (hideModelData.includes(item.left_id) &&\n item.left_object_id === props.relationData.right_object_id) ||\n (hideModelData.includes(item.right_id) &&\n item.right_object_id === props.relationData.right_object_id)\n )\n ),\n };\n\n return (\n <div style={{ display: \"grid\" }}>\n <InstanceListTable\n detailUrlTemplates={\n props.hideRelationLink\n ? null\n : {\n [relationData.right_object_id]:\n \"/next-cmdb-instance-management/next/#{objectId}/instance/#{instanceId}\",\n }\n }\n idObjectMap={oppositeModelDataMap}\n modelData={oppositeModelData}\n instanceListData={{\n list: value,\n }}\n onInstanceSourceChange={(instanceQuery: any) => {\n props.onInstanceSourceChange(instanceQuery);\n }}\n filterInstanceSourceDisabled={props.filterInstanceSourceDisabled}\n autoBreakLine={true}\n fieldIds={fieldIds}\n selectDisabled={true}\n sortDisabled={true}\n configProps={{\n pagination: props.isPagination\n ? {\n showSizeChanger: true,\n total: total,\n pageSizeOptions: [\"10\", \"20\", \"50\"],\n ...relationTablePagination,\n onChange: (page: number, pageSize: number) => {\n paginationChange(page, pageSize, relationData);\n },\n showTotal: (totals: number) => (\n <span className={styles.totalText}>\n {i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.PAGINATION_TOTAL_TEXT}`\n )}{\" \"}\n <strong className={styles.total}>{totals}</strong>{\" \"}\n {i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.PAGINATION_TOTAL_UNIT}`\n )}\n </span>\n ),\n }\n : false,\n }}\n target={\"_blank\"}\n ></InstanceListTable>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -331,6 +331,20 @@ function LegacyInstanceList(props) {
|
|
|
331
331
|
const updateFieldsProvider = (0, _brickKit.useProvider)("easyops.api.cmdb.instance@UpdateListDisplayView:1.0.0", {
|
|
332
332
|
cache: false
|
|
333
333
|
});
|
|
334
|
+
|
|
335
|
+
// 用于外部调用的接口, 当useExternalCmdbApi为true,才调用这些接口
|
|
336
|
+
const externalPostSearchV3 = (0, _brickKit.useProvider)("easyops.api.cmdb.topo_center@ProxyPostSearchV3:1.0.1", {
|
|
337
|
+
cache: false
|
|
338
|
+
});
|
|
339
|
+
const externalGetIdMapName = (0, _brickKit.useProvider)("easyops.api.cmdb.topo_center@ProxyGetIdMapName:1.0.1", {
|
|
340
|
+
cache: false
|
|
341
|
+
});
|
|
342
|
+
const externalFieldsProvider = (0, _brickKit.useProvider)("easyops.api.cmdb.topo_center@ProxyGetListDisplayView:1.0.0", {
|
|
343
|
+
cache: false
|
|
344
|
+
});
|
|
345
|
+
const externalUpdateFieldsProvider = (0, _brickKit.useProvider)("easyops.api.cmdb.topo_center@ProxyUpdateListDisplayView:1.0.0", {
|
|
346
|
+
cache: false
|
|
347
|
+
});
|
|
334
348
|
const {
|
|
335
349
|
modelData,
|
|
336
350
|
idObjectMap
|
|
@@ -355,9 +369,16 @@ function LegacyInstanceList(props) {
|
|
|
355
369
|
let idNameMap = {};
|
|
356
370
|
if (modelData.isAbstract) {
|
|
357
371
|
var _props$presetConfigs;
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
372
|
+
if (props.useExternalCmdbApi) {
|
|
373
|
+
idNameMap = await externalGetIdMapName.query([{
|
|
374
|
+
parentObjectId: modelData.objectId,
|
|
375
|
+
sourceId: props.externalSourceId
|
|
376
|
+
}]);
|
|
377
|
+
} else {
|
|
378
|
+
idNameMap = await (0, _cmdbSdk.CmdbObjectApi_getIdMapName)({
|
|
379
|
+
parentObjectId: modelData.objectId
|
|
380
|
+
});
|
|
381
|
+
}
|
|
361
382
|
props.showFilterInstanceSource && jsonLocalStorage.setItem(`instances-sources-objectId-name-map`, {
|
|
362
383
|
parentObjectId: modelData.objectId,
|
|
363
384
|
query: (_props$presetConfigs = props.presetConfigs) === null || _props$presetConfigs === void 0 ? void 0 : _props$presetConfigs.query,
|
|
@@ -410,13 +431,20 @@ function LegacyInstanceList(props) {
|
|
|
410
431
|
let sort = props.sort;
|
|
411
432
|
let fieldIds = (_props$presetConfigs3 = props.presetConfigs) === null || _props$presetConfigs3 === void 0 ? void 0 : _props$presetConfigs3.fieldIds;
|
|
412
433
|
const sortType = modelData === null || modelData === void 0 ? void 0 : (_modelData$attrList = modelData.attrList) === null || _modelData$attrList === void 0 ? void 0 : (_modelData$attrList$f2 = _modelData$attrList.find(attr => attr.id === sort)) === null || _modelData$attrList$f2 === void 0 ? void 0 : (_modelData$attrList$f3 = _modelData$attrList$f2.value) === null || _modelData$attrList$f3 === void 0 ? void 0 : _modelData$attrList$f3.default_type;
|
|
413
|
-
let asc;
|
|
434
|
+
let asc, sortFields;
|
|
414
435
|
if (props.asc === true) {
|
|
415
436
|
asc = ["series-number", "auto-increment-id"].includes(sortType) ? 2 : 1;
|
|
416
437
|
} else {
|
|
417
438
|
asc = ["series-number", "auto-increment-id"].includes(sortType) ? -2 : -1;
|
|
418
439
|
}
|
|
419
|
-
|
|
440
|
+
if (props.useExternalCmdbApi) {
|
|
441
|
+
sortFields = (await externalFieldsProvider.query([{
|
|
442
|
+
object_id: props.objectId,
|
|
443
|
+
sourceId: props.externalSourceId
|
|
444
|
+
}])).sortFields;
|
|
445
|
+
} else {
|
|
446
|
+
sortFields = (await fieldsProvider.query([props.objectId])).sortFields;
|
|
447
|
+
}
|
|
420
448
|
const extraFixedFieldIds = (_props$extraFixedFiel = props.extraFixedFields) !== null && _props$extraFixedFiel !== void 0 ? _props$extraFixedFiel : [];
|
|
421
449
|
if ((0, _lodash.isEmpty)(fieldIds)) {
|
|
422
450
|
fieldIds = sortFields.map(item => item.field);
|
|
@@ -507,6 +535,14 @@ function LegacyInstanceList(props) {
|
|
|
507
535
|
const [selectedRowKeys, setSelectedRowKeys] = (0, _react.useState)((_props$selectedRowKey = props.selectedRowKeys) !== null && _props$selectedRowKey !== void 0 ? _props$selectedRowKey : []);
|
|
508
536
|
const cache = (0, _react.useRef)(new Map());
|
|
509
537
|
const isFirstRunRef = (0, _react.useRef)(true);
|
|
538
|
+
|
|
539
|
+
// useExternalCmdbApi为true,外部接口参数
|
|
540
|
+
const externalRequestParams = (0, _react.useMemo)(() => {
|
|
541
|
+
return {
|
|
542
|
+
objectId: props.objectId,
|
|
543
|
+
sourceId: props.externalSourceId
|
|
544
|
+
};
|
|
545
|
+
}, [props.objectId, props.externalSourceId]);
|
|
510
546
|
const getInstanceListData = async (sort, asc, page) => {
|
|
511
547
|
var _modelData$attrList2, _modelData$attrList2$, _modelData$attrList2$2, _props$onSearchExecut;
|
|
512
548
|
const data = {};
|
|
@@ -610,7 +646,11 @@ function LegacyInstanceList(props) {
|
|
|
610
646
|
}
|
|
611
647
|
const promise = (_props$onSearchExecut = props.onSearchExecute) === null || _props$onSearchExecut === void 0 ? void 0 : _props$onSearchExecut.call(props, data, v3Data);
|
|
612
648
|
// useAutoDiscoveryProvider=true, 使用useProvider的接口
|
|
613
|
-
|
|
649
|
+
// useExternalCmdbApi= true 使用外部接口externalPostSearchV3
|
|
650
|
+
return promise ? promise : props.useExternalCmdbApi ? externalPostSearchV3.query([{
|
|
651
|
+
...v3Data,
|
|
652
|
+
...externalRequestParams
|
|
653
|
+
}]) : props.useAutoDiscoveryProvider ? listProvider.query([props.objectId, v3Data]) : props.ignorePermission ? ignorePermissionProvider.query([props.objectId, v3Data]) : (0, _cmdbSdk.InstanceApi_postSearchV3)(props.objectId, v3Data);
|
|
614
654
|
};
|
|
615
655
|
const refreshInstanceList = async (sort, asc, page) => {
|
|
616
656
|
setState({
|
|
@@ -760,10 +800,17 @@ function LegacyInstanceList(props) {
|
|
|
760
800
|
$in: ids
|
|
761
801
|
}
|
|
762
802
|
},
|
|
763
|
-
page_size: ids.length
|
|
803
|
+
page_size: ids.length,
|
|
804
|
+
page: 1
|
|
764
805
|
};
|
|
765
|
-
//
|
|
766
|
-
if (props.
|
|
806
|
+
// useExternalCmdbApi为true,使用外部接口PostSearchV3
|
|
807
|
+
if (props.useExternalCmdbApi) {
|
|
808
|
+
resp = await externalPostSearchV3.query([{
|
|
809
|
+
...params,
|
|
810
|
+
...externalRequestParams
|
|
811
|
+
}]);
|
|
812
|
+
} else if (props.useAutoDiscoveryProvider) {
|
|
813
|
+
// useAutoDiscoveryProvider=true, 使用useProvider的接口,虽然这里列表用不到选择功能,但还是加上保持统一
|
|
767
814
|
resp = await listProvider.query([props.objectId, Object.assign(params, props.extraParams)]);
|
|
768
815
|
} else if (props.ignorePermission) {
|
|
769
816
|
resp = await ignorePermissionProvider.query([props.objectId, Object.assign(params, props.extraParams)]);
|
|
@@ -826,9 +873,17 @@ function LegacyInstanceList(props) {
|
|
|
826
873
|
setState({
|
|
827
874
|
sortFields: newSortFields
|
|
828
875
|
});
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
876
|
+
if (props.useExternalCmdbApi) {
|
|
877
|
+
await externalUpdateFieldsProvider.query([{
|
|
878
|
+
object_id: props.objectId,
|
|
879
|
+
sourceId: props.externalSourceId,
|
|
880
|
+
sortFields: newSortFields
|
|
881
|
+
}]);
|
|
882
|
+
} else {
|
|
883
|
+
await updateFieldsProvider.query([props.objectId, {
|
|
884
|
+
sortFields: newSortFields
|
|
885
|
+
}]);
|
|
886
|
+
}
|
|
832
887
|
} catch (e) {
|
|
833
888
|
_brickKit.handleHttpError;
|
|
834
889
|
}
|
|
@@ -874,15 +929,23 @@ function LegacyInstanceList(props) {
|
|
|
874
929
|
const toggleSearchMode = _react.default.useCallback(async () => {
|
|
875
930
|
if (!state.searchByApp) {
|
|
876
931
|
var _appListResp$list, _appListResp$list2, _appListResp$list3;
|
|
877
|
-
|
|
932
|
+
let appListResp;
|
|
933
|
+
const params = {
|
|
878
934
|
fields: ["clusters", "instanceId", "name"],
|
|
879
935
|
sort: [{
|
|
880
936
|
key: "name",
|
|
881
937
|
order: 1
|
|
882
938
|
}],
|
|
883
939
|
page: 1,
|
|
884
|
-
page_size: 3000
|
|
885
|
-
|
|
940
|
+
page_size: 3000,
|
|
941
|
+
...(props.useExternalCmdbApi ? externalRequestParams : {})
|
|
942
|
+
};
|
|
943
|
+
// useExternalCmdbApi为true,使用外部接口PostSearchV3
|
|
944
|
+
if (props.useExternalCmdbApi) {
|
|
945
|
+
appListResp = await externalPostSearchV3.query([params]);
|
|
946
|
+
} else {
|
|
947
|
+
appListResp = await (0, _cmdbSdk.InstanceApi_postSearchV3)("APP", params);
|
|
948
|
+
}
|
|
886
949
|
setState({
|
|
887
950
|
appSearchInstanceId: ((_appListResp$list = appListResp.list) === null || _appListResp$list === void 0 ? void 0 : _appListResp$list[0].instanceId) || "",
|
|
888
951
|
appList: appListResp.list,
|
|
@@ -943,9 +1006,17 @@ function LegacyInstanceList(props) {
|
|
|
943
1006
|
modelData.isAbstract && fieldIds.push("_object_id");
|
|
944
1007
|
if (props.saveFieldsBackend) {
|
|
945
1008
|
const sortFields = mergeFields(state.sortFields, fieldIds);
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
1009
|
+
if (props.useExternalCmdbApi) {
|
|
1010
|
+
await externalUpdateFieldsProvider.query([{
|
|
1011
|
+
object_id: props.objectId,
|
|
1012
|
+
sourceId: props.externalSourceId,
|
|
1013
|
+
sortFields
|
|
1014
|
+
}]);
|
|
1015
|
+
} else {
|
|
1016
|
+
await updateFieldsProvider.query([props.objectId, {
|
|
1017
|
+
sortFields
|
|
1018
|
+
}]);
|
|
1019
|
+
}
|
|
949
1020
|
setState({
|
|
950
1021
|
fieldIds,
|
|
951
1022
|
sortFields
|
|
@@ -962,9 +1033,17 @@ function LegacyInstanceList(props) {
|
|
|
962
1033
|
if (props.saveFieldsBackend) {
|
|
963
1034
|
try {
|
|
964
1035
|
const sortFields = mergeFields(state.sortFields, fields);
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
1036
|
+
if (props.useExternalCmdbApi) {
|
|
1037
|
+
await externalUpdateFieldsProvider.query([{
|
|
1038
|
+
object_id: props.objectId,
|
|
1039
|
+
sourceId: props.externalSourceId,
|
|
1040
|
+
sortFields
|
|
1041
|
+
}]);
|
|
1042
|
+
} else {
|
|
1043
|
+
await updateFieldsProvider.query([props.objectId, {
|
|
1044
|
+
sortFields
|
|
1045
|
+
}]);
|
|
1046
|
+
}
|
|
968
1047
|
setState({
|
|
969
1048
|
fieldIds: _sortFieldIds(fields),
|
|
970
1049
|
sortFields
|
|
@@ -1008,6 +1087,7 @@ function LegacyInstanceList(props) {
|
|
|
1008
1087
|
}
|
|
1009
1088
|
};
|
|
1010
1089
|
v3Data.page_size = props.selectedRowKeys.length;
|
|
1090
|
+
v3Data.page = 1;
|
|
1011
1091
|
if (state.relatedToMe) {
|
|
1012
1092
|
v3Data.only_my_instance = data.only_my_instance = state.relatedToMe;
|
|
1013
1093
|
}
|
|
@@ -1015,7 +1095,13 @@ function LegacyInstanceList(props) {
|
|
|
1015
1095
|
Object.assign(v3Data, props.extraParams);
|
|
1016
1096
|
}
|
|
1017
1097
|
let resp;
|
|
1018
|
-
|
|
1098
|
+
// useExternalCmdbApi为true,使用外部接口PostSearchV3
|
|
1099
|
+
if (props.useExternalCmdbApi) {
|
|
1100
|
+
resp = await externalPostSearchV3.query([{
|
|
1101
|
+
...v3Data,
|
|
1102
|
+
...externalRequestParams
|
|
1103
|
+
}]);
|
|
1104
|
+
} else if (props.useAutoDiscoveryProvider) {
|
|
1019
1105
|
resp = await listProvider.query([props.objectId, v3Data]);
|
|
1020
1106
|
} else {
|
|
1021
1107
|
resp = await (0, _cmdbSdk.InstanceApi_postSearchV3)(props.objectId, v3Data);
|
|
@@ -1296,7 +1382,9 @@ function LegacyInstanceList(props) {
|
|
|
1296
1382
|
separatorUsedInRelationData: props.separatorUsedInRelationData,
|
|
1297
1383
|
showTooltip: showTooltip,
|
|
1298
1384
|
rowSelectionType: props.rowSelectionType,
|
|
1299
|
-
onColumnsChange: props.onColumnsChange
|
|
1385
|
+
onColumnsChange: props.onColumnsChange,
|
|
1386
|
+
useExternalCmdbApi: props.useExternalCmdbApi,
|
|
1387
|
+
externalSourceId: props.externalSourceId
|
|
1300
1388
|
})) :
|
|
1301
1389
|
/*#__PURE__*/
|
|
1302
1390
|
// 加个空白的div是为了将loading效果撑起来
|
|
@@ -1312,6 +1400,9 @@ function LegacyInstanceList(props) {
|
|
|
1312
1400
|
*/
|
|
1313
1401
|
function InstanceList(props) {
|
|
1314
1402
|
const [objectList, setObjectList] = (0, _react.useState)(props.objectList);
|
|
1403
|
+
const externalGetObjectRef = (0, _brickKit.useProvider)("easyops.api.cmdb.topo_center@ProxyGetObjectRef:1.0.0", {
|
|
1404
|
+
cache: false
|
|
1405
|
+
});
|
|
1315
1406
|
(0, _react.useEffect)(() => {
|
|
1316
1407
|
var _props$objectList;
|
|
1317
1408
|
if ((_props$objectList = props.objectList) !== null && _props$objectList !== void 0 && _props$objectList.length) {
|
|
@@ -1323,9 +1414,17 @@ function InstanceList(props) {
|
|
|
1323
1414
|
setObjectList(cacheData);
|
|
1324
1415
|
} else {
|
|
1325
1416
|
try {
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1417
|
+
let list;
|
|
1418
|
+
if (props.useExternalCmdbApi) {
|
|
1419
|
+
list = await externalGetObjectRef.query([{
|
|
1420
|
+
ref_object: props.objectId,
|
|
1421
|
+
sourceId: props.externalSourceId
|
|
1422
|
+
}]);
|
|
1423
|
+
} else {
|
|
1424
|
+
list = (await (0, _cmdbSdk.CmdbObjectApi_getObjectRef)({
|
|
1425
|
+
ref_object: props.objectId
|
|
1426
|
+
})).data;
|
|
1427
|
+
}
|
|
1329
1428
|
setObjectList(list);
|
|
1330
1429
|
_constants2.objectListCache.set(props.objectId, list);
|
|
1331
1430
|
} catch (e) {
|