@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.
Files changed (24) hide show
  1. package/dist/cjs/cmdb-instances-select-panel/CmdbInstancesSelectPanel.js +60 -26
  2. package/dist/cjs/cmdb-instances-select-panel/CmdbInstancesSelectPanel.js.map +1 -1
  3. package/dist/cjs/instance-detail/components/instance-relation-table-show/instance-relation-table-show.js.map +1 -1
  4. package/dist/cjs/instance-list/InstanceList.js +125 -26
  5. package/dist/cjs/instance-list/InstanceList.js.map +1 -1
  6. package/dist/cjs/instance-list-modal/InstanceListModal.js +19 -4
  7. package/dist/cjs/instance-list-modal/InstanceListModal.js.map +1 -1
  8. package/dist/cjs/instance-list-table/InstanceListTable.js +46 -9
  9. package/dist/cjs/instance-list-table/InstanceListTable.js.map +1 -1
  10. package/dist/esm/cmdb-instances-select-panel/CmdbInstancesSelectPanel.js +58 -26
  11. package/dist/esm/cmdb-instances-select-panel/CmdbInstancesSelectPanel.js.map +1 -1
  12. package/dist/esm/instance-detail/components/instance-relation-table-show/instance-relation-table-show.js.map +1 -1
  13. package/dist/esm/instance-list/InstanceList.js +114 -25
  14. package/dist/esm/instance-list/InstanceList.js.map +1 -1
  15. package/dist/esm/instance-list-modal/InstanceListModal.js +19 -4
  16. package/dist/esm/instance-list-modal/InstanceListModal.js.map +1 -1
  17. package/dist/esm/instance-list-table/InstanceListTable.js +44 -9
  18. package/dist/esm/instance-list-table/InstanceListTable.js.map +1 -1
  19. package/dist/esm/model-attribute-form/ModelAttributeForm.module.css +0 -3
  20. package/dist/types/cmdb-instances-select-panel/CmdbInstancesSelectPanel.d.ts +2 -0
  21. package/dist/types/instance-list/InstanceList.d.ts +2 -0
  22. package/dist/types/instance-list-modal/InstanceListModal.d.ts +2 -0
  23. package/dist/types/instance-list-table/InstanceListTable.d.ts +4 -1
  24. 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
- if (instanceIdList !== null && instanceIdList !== void 0 && instanceIdList.length) {
57
- var _props$fields;
58
- instances = (await (0, _cmdbSdk.InstanceApi_postSearch)(props.objectId, {
59
- query: {
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
- })).list;
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
- const {
85
- data
86
- } = await (0, _cmdbSdk.CmdbObjectApi_getObjectRef)({
87
- ref_object: props.objectId
88
- });
89
- modelMap = (0, _lodash.keyBy)(data, "objectId");
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":"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"}
@@ -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":"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"}
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
- idNameMap = await (0, _cmdbSdk.CmdbObjectApi_getIdMapName)({
359
- parentObjectId: modelData.objectId
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
- const sortFields = (await fieldsProvider.query([props.objectId])).sortFields;
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
- return promise ? promise : props.useAutoDiscoveryProvider ? listProvider.query([props.objectId, v3Data]) : props.ignorePermission ? ignorePermissionProvider.query([props.objectId, v3Data]) : (0, _cmdbSdk.InstanceApi_postSearchV3)(props.objectId, v3Data);
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
- // useAutoDiscoveryProvider=true, 使用useProvider的接口,虽然这里列表用不到选择功能,但还是加上保持统一
766
- if (props.useAutoDiscoveryProvider) {
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
- await updateFieldsProvider.query([props.objectId, {
830
- sortFields: newSortFields
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
- const appListResp = await (0, _cmdbSdk.InstanceApi_postSearchV3)("APP", {
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
- await updateFieldsProvider.query([props.objectId, {
947
- sortFields
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
- await updateFieldsProvider.query([props.objectId, {
966
- sortFields
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
- if (props.useAutoDiscoveryProvider) {
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
- const list = (await (0, _cmdbSdk.CmdbObjectApi_getObjectRef)({
1327
- ref_object: props.objectId
1328
- })).data;
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) {