@riil-frontend/component-topology 4.0.0-beta.9 → 4.0.2

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 (177) hide show
  1. package/build/1.js +2 -2
  2. package/build/2.js +1 -1
  3. package/build/index.css +1 -1
  4. package/build/index.js +32 -32
  5. package/es/components/BatchAttrMetric/setting.js +47 -7
  6. package/es/components/Drawer/Drawer.js +60 -0
  7. package/es/components/Drawer/index.js +1 -59
  8. package/es/constants/ResourceInfoDisplay.js +1 -4
  9. package/es/core/components/AlarmListPanel/components/AlarmListItem.js +31 -1
  10. package/es/core/components/AlarmListPanel/hooks/useAlarmList.js +34 -0
  11. package/es/core/components/AlarmListPanel/index.js +27 -24
  12. package/es/core/components/AlarmListPanel/index.module.scss +46 -16
  13. package/es/core/components/DisplaySettingDrawer/EdgeFlow.js +4 -6
  14. package/es/core/components/DisplaySettingDrawer/EdgeFlowDirection.js +4 -6
  15. package/es/core/components/DisplaySettingDrawer/NodeTag.js +3 -5
  16. package/es/core/components/DisplaySettingDrawer/NodeTip.js +4 -5
  17. package/es/core/components/DisplaySettingDrawer/ResourceDisplay/BasicConfig.js +3 -1
  18. package/es/core/components/DisplaySettingDrawer/tagtip/CustomSettingDrawer/CustomSetting.js +25 -0
  19. package/es/core/components/DisplaySettingDrawer/tagtip/CustomSettingDrawer/CustomSettingDrawer.js +8 -0
  20. package/es/core/components/TopoView/topoView.js +25 -1
  21. package/es/core/editor/components/settings/propertyViews/group/DataTab/GroupNodeList.js +4 -2
  22. package/es/core/editor/components/settings/propertyViews/group/DataTab/RelateData.js +0 -7
  23. package/es/core/editor/components/settings/propertyViews/group/DataTab/hoooks/useGroupRelateResource.js +13 -12
  24. package/es/core/editor/components/settings/propertyViews/group/GroupPropertyView.js +4 -1
  25. package/es/core/editor/components/settings/propertyViews/group/{DataTab/ClusterGroupRelateData → cluster}/ClusterGroupRelateData.js +22 -9
  26. package/es/core/editor/components/settings/propertyViews/layer/DataTab/NodeList.js +2 -5
  27. package/es/core/editor/components/settings/propertyViews/multipleElements/BatchSetNodeIcon.js +21 -0
  28. package/es/core/editor/components/settings/propertyViews/multipleElements/MultipleElementPropertyView.js +5 -0
  29. package/es/core/editor/components/settings/propertyViews/node/NodePropertyView.js +3 -1
  30. package/es/core/editor/components/settings/propertyViews/node/Setting/NameInput.js +36 -0
  31. package/es/core/editor/components/settings/propertyViews/node/Setting/Setting.js +2 -2
  32. package/es/core/editor/components/settings/propertyViews/node/data/Data.js +3 -5
  33. package/es/core/editor/components/settings/propertyViews/node/data/NodeRelateResourceButton.js +4 -2
  34. package/es/core/hooks/ht/useHtDataPropertyChangeListener.js +28 -0
  35. package/es/core/models/AttributeMetricDisplay.js +28 -10
  36. package/es/core/models/TopoApp.js +12 -7
  37. package/es/core/models/TopoGraphView.js +3 -1
  38. package/es/core/models/attributeFormatter/index.js +2 -26
  39. package/es/core/models/cache/{CiTyeCache.js → CiTypeCache.js} +3 -1
  40. package/es/core/models/tagstips/ElementTagTipConfig.js +132 -0
  41. package/es/core/models/tagstips/utils.js +44 -0
  42. package/es/core/models/utils/linkUtils.js +3 -1
  43. package/es/core/services/topo.js +30 -0
  44. package/es/core/utils/edgeUtil.js +8 -0
  45. package/es/core/utils/graphLinkUtil.js +22 -0
  46. package/es/core/viewer/components/plugins/ResourceDetail/ResourceDetail.js +1 -1
  47. package/es/core/viewer/components/plugins/ResourceDetail/components/ClusterMemberTable.js +24 -2
  48. package/es/core/viewer/components/plugins/ResourceDetail/components/ClusterMemberTable.module.scss +1 -1
  49. package/es/core/viewer/components/plugins/ResourceDetail/components/ResourceOverview/BaseInfo.js +7 -101
  50. package/es/core/viewer/components/plugins/ResourceDetail/components/ResourceOverview/BaseInfoBlock.js +13 -3
  51. package/es/core/viewer/components/plugins/ResourceDetail/components/ResourceOverview/ResourceOverview.js +166 -89
  52. package/es/core/viewer/components/plugins/ResourceDetail/components/ResourceOverview/ResourceOverviewMetric.js +7 -14
  53. package/es/core/viewer/components/plugins/ResourceDetail/components/ResourceOverview/components/Configurator/index.js +38 -13
  54. package/es/core/viewer/components/titlebar/BasicTools.js +5 -2
  55. package/es/core/viewer/components/titlebar/widgets/NodesDragSwitch.js +4 -2
  56. package/es/hooks/useAlarm.js +59 -0
  57. package/es/hooks/useEventData.js +20 -0
  58. package/es/hooks/useGraphAlarmDisplay.js +68 -18
  59. package/es/hooks/useManageStatus.js +0 -34
  60. package/es/hooks/useResourceConfig.js +6 -13
  61. package/es/hooks/useSelection.js +2 -4
  62. package/es/hooks/useTopoEdit.js +90 -37
  63. package/es/models/topoAlarm.js +8 -9
  64. package/es/models/topoMod.js +16 -8
  65. package/es/style.js +1 -0
  66. package/es/topoCenter/components/TopoView.js +6 -1
  67. package/es/topoCenter/components/Topology.js +7 -1
  68. package/es/topoCenter/components/editor/propertyViews/LayerRelatedResourceList.js +2 -2
  69. package/es/topoCenter/components/editor/propertyViews/edge/addLinkDrawer/AddLinkDrawer.js +35 -15
  70. package/es/topoCenter/components/editor/propertyViews/edge/addLinkDrawer/components/editLinkInfo.js +11 -2
  71. package/es/topoCenter/components/viewer/displaySetting/LinkTagCommonRidioGroup.js +24 -0
  72. package/es/topoCenter/components/viewer/displaySetting/LinkTagCommonRidioGroup.module.scss +23 -0
  73. package/es/topoCenter/components/viewer/displaySetting/LinkTagV2.js +87 -0
  74. package/es/topoCenter/getTopoData.js +18 -6
  75. package/es/topoCenter/hooks/editor/useGroupSortResources.js +16 -0
  76. package/es/topoCenter/hooks/useEdgeExpand.js +25 -0
  77. package/es/topoCenter/hooks/useLinkDynamicStyle.js +1 -1
  78. package/es/topoCenter/hooks/useTopoEdit.js +3 -0
  79. package/es/topoCenter/models/LinkDynamicStyleExecutor.js +38 -10
  80. package/es/topoCenter/models/TopoCenter.js +3 -11
  81. package/es/topoCenter/store/functionAuth.js +2 -0
  82. package/es/topoCenter/utils/SortResourcesUtil.js +3 -3
  83. package/es/topoCenter/utils/exportData.js +13 -7
  84. package/es/topoCenter/utils/linkUtil.js +8 -0
  85. package/es/utils/ResourceConfigUtil.js +4 -5
  86. package/es/utils/clusterUtil.js +27 -2
  87. package/es/utils/htElementDataUtil.js +22 -1
  88. package/es/utils/htElementUtils.js +22 -9
  89. package/es/utils/showGraphManageStatusUtil.js +67 -0
  90. package/es/utils/topoData.js +57 -32
  91. package/lib/components/BatchAttrMetric/setting.js +47 -6
  92. package/lib/components/Drawer/Drawer.js +73 -0
  93. package/lib/components/Drawer/index.js +2 -64
  94. package/lib/constants/ResourceInfoDisplay.js +1 -4
  95. package/lib/core/components/AlarmListPanel/components/AlarmListItem.js +31 -1
  96. package/lib/core/components/AlarmListPanel/hooks/useAlarmList.js +40 -0
  97. package/lib/core/components/AlarmListPanel/index.js +30 -24
  98. package/lib/core/components/AlarmListPanel/index.module.scss +46 -16
  99. package/lib/core/components/DisplaySettingDrawer/EdgeFlow.js +4 -6
  100. package/lib/core/components/DisplaySettingDrawer/EdgeFlowDirection.js +4 -6
  101. package/lib/core/components/DisplaySettingDrawer/NodeTag.js +3 -6
  102. package/lib/core/components/DisplaySettingDrawer/NodeTip.js +4 -6
  103. package/lib/core/components/DisplaySettingDrawer/ResourceDisplay/BasicConfig.js +3 -1
  104. package/lib/core/components/DisplaySettingDrawer/tagtip/CustomSettingDrawer/CustomSetting.js +39 -0
  105. package/lib/core/components/DisplaySettingDrawer/tagtip/CustomSettingDrawer/CustomSettingDrawer.js +17 -0
  106. package/lib/core/components/TopoView/topoView.js +28 -1
  107. package/lib/core/editor/components/settings/propertyViews/group/DataTab/GroupNodeList.js +4 -2
  108. package/lib/core/editor/components/settings/propertyViews/group/DataTab/RelateData.js +0 -8
  109. package/lib/core/editor/components/settings/propertyViews/group/DataTab/hoooks/useGroupRelateResource.js +13 -13
  110. package/lib/core/editor/components/settings/propertyViews/group/GroupPropertyView.js +5 -1
  111. package/lib/core/editor/components/settings/propertyViews/group/{DataTab/ClusterGroupRelateData → cluster}/ClusterGroupRelateData.js +23 -9
  112. package/lib/core/editor/components/settings/propertyViews/layer/DataTab/NodeList.js +2 -5
  113. package/lib/core/editor/components/settings/propertyViews/multipleElements/BatchSetNodeIcon.js +31 -0
  114. package/lib/core/editor/components/settings/propertyViews/multipleElements/MultipleElementPropertyView.js +6 -0
  115. package/lib/core/editor/components/settings/propertyViews/node/NodePropertyView.js +3 -1
  116. package/lib/core/editor/components/settings/propertyViews/node/Setting/NameInput.js +52 -0
  117. package/lib/core/editor/components/settings/propertyViews/node/Setting/Setting.js +3 -3
  118. package/lib/core/editor/components/settings/propertyViews/node/data/Data.js +3 -5
  119. package/lib/core/editor/components/settings/propertyViews/node/data/NodeRelateResourceButton.js +5 -2
  120. package/lib/core/hooks/ht/useHtDataPropertyChangeListener.js +37 -0
  121. package/lib/core/models/AttributeMetricDisplay.js +28 -10
  122. package/lib/core/models/TopoApp.js +10 -5
  123. package/lib/core/models/TopoGraphView.js +3 -1
  124. package/lib/core/models/attributeFormatter/index.js +2 -26
  125. package/lib/core/models/cache/{CiTyeCache.js → CiTypeCache.js} +3 -1
  126. package/lib/core/models/tagstips/ElementTagTipConfig.js +142 -0
  127. package/lib/core/models/tagstips/utils.js +59 -0
  128. package/lib/core/models/utils/linkUtils.js +3 -1
  129. package/lib/core/services/topo.js +40 -0
  130. package/lib/core/utils/edgeUtil.js +12 -0
  131. package/lib/core/utils/graphLinkUtil.js +27 -0
  132. package/lib/core/viewer/components/plugins/ResourceDetail/ResourceDetail.js +1 -1
  133. package/lib/core/viewer/components/plugins/ResourceDetail/components/ClusterMemberTable.js +25 -2
  134. package/lib/core/viewer/components/plugins/ResourceDetail/components/ClusterMemberTable.module.scss +1 -1
  135. package/lib/core/viewer/components/plugins/ResourceDetail/components/ResourceOverview/BaseInfo.js +7 -101
  136. package/lib/core/viewer/components/plugins/ResourceDetail/components/ResourceOverview/BaseInfoBlock.js +13 -3
  137. package/lib/core/viewer/components/plugins/ResourceDetail/components/ResourceOverview/ResourceOverview.js +166 -89
  138. package/lib/core/viewer/components/plugins/ResourceDetail/components/ResourceOverview/ResourceOverviewMetric.js +7 -14
  139. package/lib/core/viewer/components/plugins/ResourceDetail/components/ResourceOverview/components/Configurator/index.js +38 -13
  140. package/lib/core/viewer/components/titlebar/BasicTools.js +6 -2
  141. package/lib/core/viewer/components/titlebar/widgets/NodesDragSwitch.js +4 -2
  142. package/lib/hooks/useAlarm.js +61 -0
  143. package/lib/hooks/useEventData.js +28 -0
  144. package/lib/hooks/useGraphAlarmDisplay.js +69 -18
  145. package/lib/hooks/useManageStatus.js +0 -34
  146. package/lib/hooks/useResourceConfig.js +6 -12
  147. package/lib/hooks/useSelection.js +1 -5
  148. package/lib/hooks/useTopoEdit.js +94 -36
  149. package/lib/models/topoAlarm.js +8 -9
  150. package/lib/models/topoMod.js +15 -8
  151. package/lib/style.js +1 -0
  152. package/lib/topoCenter/components/TopoView.js +8 -1
  153. package/lib/topoCenter/components/Topology.js +8 -1
  154. package/lib/topoCenter/components/editor/propertyViews/LayerRelatedResourceList.js +1 -1
  155. package/lib/topoCenter/components/editor/propertyViews/edge/addLinkDrawer/AddLinkDrawer.js +35 -14
  156. package/lib/topoCenter/components/editor/propertyViews/edge/addLinkDrawer/components/editLinkInfo.js +11 -2
  157. package/lib/topoCenter/components/viewer/displaySetting/LinkTagCommonRidioGroup.js +35 -0
  158. package/lib/topoCenter/components/viewer/displaySetting/LinkTagCommonRidioGroup.module.scss +23 -0
  159. package/lib/topoCenter/components/viewer/displaySetting/LinkTagV2.js +102 -0
  160. package/lib/topoCenter/getTopoData.js +19 -6
  161. package/lib/topoCenter/hooks/editor/useGroupSortResources.js +21 -0
  162. package/lib/topoCenter/hooks/useEdgeExpand.js +33 -0
  163. package/lib/topoCenter/hooks/useLinkDynamicStyle.js +1 -1
  164. package/lib/topoCenter/hooks/useTopoEdit.js +3 -0
  165. package/lib/topoCenter/models/LinkDynamicStyleExecutor.js +38 -9
  166. package/lib/topoCenter/models/TopoCenter.js +3 -12
  167. package/lib/topoCenter/store/functionAuth.js +2 -0
  168. package/lib/topoCenter/utils/SortResourcesUtil.js +3 -3
  169. package/lib/topoCenter/utils/exportData.js +14 -7
  170. package/lib/topoCenter/utils/linkUtil.js +15 -0
  171. package/lib/utils/ResourceConfigUtil.js +4 -4
  172. package/lib/utils/clusterUtil.js +34 -2
  173. package/lib/utils/htElementDataUtil.js +38 -1
  174. package/lib/utils/htElementUtils.js +24 -9
  175. package/lib/utils/showGraphManageStatusUtil.js +78 -0
  176. package/lib/utils/topoData.js +59 -32
  177. package/package.json +5 -5
@@ -19,6 +19,8 @@ var _AlarmListShowButton = _interopRequireDefault(require("./widgets/AlarmListSh
19
19
 
20
20
  var _SettingButtonWidget = _interopRequireDefault(require("./widgets/SettingButtonWidget"));
21
21
 
22
+ var _useEventData = _interopRequireDefault(require("../../../../hooks/useEventData"));
23
+
22
24
  function BasicTools(props) {
23
25
  var topo = props.topo,
24
26
  _props$showEditButton = props.showEditButton,
@@ -29,8 +31,10 @@ function BasicTools(props) {
29
31
  alarmState = _topo$store$useModel[0],
30
32
  alarmDispatchers = _topo$store$useModel[1];
31
33
 
32
- var alarmPanelIsOpen = alarmState.alarmPanelIsOpen,
33
- alarmData = alarmState.alarmData;
34
+ var alarmPanelIsOpen = alarmState.alarmPanelIsOpen;
35
+ var alarmData = (0, _useEventData["default"])({
36
+ topo: topo
37
+ });
34
38
  return /*#__PURE__*/_react["default"].createElement(_box["default"], {
35
39
  direction: "row",
36
40
  spacing: 8
@@ -61,9 +61,11 @@ function NodesDragSwitch(props) {
61
61
 
62
62
  topo.getGraphView().setMovableFunc(function (data) {
63
63
  return !newLock; // self._graphView.dm().sm().getSelection().size()===1 && !(data instanceof ht.Grid);
64
- }); // 开锁状态下禁用悬停展示悬浮框
64
+ }); // 开锁状态下禁用悬停展示悬浮框,TODO 待迁移走独立
65
65
 
66
- topo.attributeMetricDisplay.updateTagsTips();
66
+ topo.attributeMetricDisplay.updateTagsTips(); // 开锁状态可移动链路指标位置
67
+
68
+ topo.getHtTopo().setEdgeIndicatorCanDrag(!newLock);
67
69
  };
68
70
 
69
71
  var title = lock ? '解锁后可进行拓扑图标的移动' : '锁上后禁用图标移动';
@@ -24,6 +24,65 @@ function useAlarm(options) {
24
24
  (0, _useGraphAlarmDisplay["default"])({
25
25
  topo: topo
26
26
  });
27
+
28
+ var handleRiskData = function handleRiskData(receivedData) {
29
+ var _risks;
30
+
31
+ // 非在活状态:
32
+ // 已修复 recovered
33
+ // 已关闭 closed
34
+ var prevRisks = topo.store.getModelState('topoAlarm').risks;
35
+
36
+ var isLiveRisk = function isLiveRisk(data) {
37
+ return ['recovered', 'closed'].indexOf(data.status) === -1;
38
+ };
39
+
40
+ var hasCiPermission = function hasCiPermission(data) {
41
+ var _data$resourceId;
42
+
43
+ var ciId = (_data$resourceId = data.resourceId) !== null && _data$resourceId !== void 0 ? _data$resourceId : data.ciId;
44
+ var ci = topo.dataModel.getDataById(ciId);
45
+ return ci && ci.operation;
46
+ }; // 合并
47
+
48
+
49
+ var risks = prevRisks.map(function (risk) {
50
+ var newRisk = receivedData.find(function (item) {
51
+ return item.id === risk.id;
52
+ });
53
+ return newRisk || risk;
54
+ }); // 新的
55
+
56
+ var addRisks = receivedData.filter(function (risk) {
57
+ return !prevRisks.find(function (item) {
58
+ return item.id === risk.id;
59
+ });
60
+ }).filter(hasCiPermission);
61
+
62
+ (_risks = risks).push.apply(_risks, addRisks); // 过滤掉无权限、非在活的
63
+
64
+
65
+ risks = risks.filter(isLiveRisk).filter(hasCiPermission).sort(function (a, b) {
66
+ return a.executeTime - b.executeTime;
67
+ });
68
+
69
+ _rlog["default"].debug('更新风险', {
70
+ prevRisks: prevRisks,
71
+ receivedData: receivedData,
72
+ risks: risks
73
+ });
74
+
75
+ topo.store.getModelDispatchers('topoAlarm').update({
76
+ risks: risks
77
+ });
78
+
79
+ if (addRisks.length) {
80
+ topo.alarm.updateState({
81
+ alarmPanelIsOpen: true
82
+ });
83
+ }
84
+ };
85
+
27
86
  (0, _componentRiilEventEmitter.useCbbEventListener)("topo", {
28
87
  name: "topo",
29
88
  onMessage: function onMessage(data) {
@@ -31,6 +90,8 @@ function useAlarm(options) {
31
90
 
32
91
  if (data.type === "alarm") {
33
92
  topo.alarm.handleAlarmEvent(data.data);
93
+ } else if (data.type === "risk") {
94
+ handleRiskData(data.data);
34
95
  }
35
96
  }
36
97
  });
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ exports.__esModule = true;
6
+ exports["default"] = useEventData;
7
+
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+
10
+ function useEventData(props) {
11
+ var topo = props.topo;
12
+ var topoDatas = topo.dataModel.useDatas();
13
+
14
+ var _topo$store$useModelS = topo.store.useModelState('topoAlarm'),
15
+ risks = _topo$store$useModelS.risks,
16
+ alarmData = _topo$store$useModelS.alarmData;
17
+
18
+ var data = [].concat((alarmData || []).map(function (item) {
19
+ return (0, _extends2["default"])({}, item, {
20
+ eventType: 'alarm'
21
+ });
22
+ }), (risks || []).map(function (item) {
23
+ return (0, _extends2["default"])({}, item, {
24
+ eventType: 'risk'
25
+ });
26
+ }));
27
+ return data;
28
+ }
@@ -11,11 +11,40 @@ var _rlog = _interopRequireDefault(require("@riil-frontend/component-topology-ut
11
11
 
12
12
  var _htElementUtils = require("../utils/htElementUtils");
13
13
 
14
+ var _showGraphManageStatusUtil = require("../utils/showGraphManageStatusUtil");
15
+
16
+ function getCiAlarmLevels(alarmList, risks) {
17
+ var ciIdLevelMap = {};
18
+ [].concat(alarmList, risks.map(function (item) {
19
+ var _item$resourceId;
20
+
21
+ return {
22
+ id: (_item$resourceId = item.resourceId) !== null && _item$resourceId !== void 0 ? _item$resourceId : item.ciId,
23
+ level: 5
24
+ };
25
+ })).forEach(function (item) {
26
+ var level = ciIdLevelMap[item.id]; // 优先显示高等级告警。值小的等级高
27
+
28
+ if (!level || item.level < level) {
29
+ level = item.level;
30
+ }
31
+
32
+ ciIdLevelMap[item.id] = level;
33
+ });
34
+ return Object.keys(ciIdLevelMap).map(function (id) {
35
+ return {
36
+ id: id,
37
+ level: ciIdLevelMap[id]
38
+ };
39
+ });
40
+ }
14
41
  /**
15
42
  * 告警显示到ht拓扑
16
43
  *
17
44
  * @param {*} options
18
45
  */
46
+
47
+
19
48
  function useGraphAlarmDisplay(options) {
20
49
  var topo = options.topo;
21
50
  var store = topo.store;
@@ -24,30 +53,47 @@ function useGraphAlarmDisplay(options) {
24
53
  topoState = _topo$store$useModel[0],
25
54
  topoDispatchers = _topo$store$useModel[1];
26
55
 
27
- var graphLoaded = topoState.graphLoaded;
56
+ var graphLoaded = topoState.graphLoaded,
57
+ viewState = topoState.viewState;
58
+ var isEditMode = viewState === 'edit';
28
59
 
29
60
  var _topo$alarm$useState = topo.alarm.useState(),
30
61
  alarmIsOpened = _topo$alarm$useState.alarmIsOpened,
31
- alarmList = _topo$alarm$useState.alarmList;
62
+ alarmList = _topo$alarm$useState.alarmList,
63
+ risks = _topo$alarm$useState.risks;
32
64
 
33
65
  var resources = topo.dataModel.useCis();
34
- (0, _react.useEffect)(function () {
35
- var showAlarm = function showAlarm() {
36
- if (!graphLoaded || !alarmList || !alarmIsOpened) {
37
- return;
66
+
67
+ function getCisEventLevel() {
68
+ return getCiAlarmLevels(alarmList || [], risks).filter(function (alarm) {
69
+ var resource = resources.find(function (item) {
70
+ return item.id === alarm.id;
71
+ });
72
+
73
+ if (!resource) {
74
+ return false;
38
75
  }
39
76
 
40
- var finalAlarms = alarmList.filter(function (alarm) {
41
- var resource = resources.find(function (item) {
42
- return item.id === alarm.id;
43
- }); // 未监控不显示告警
77
+ return true;
78
+ });
79
+ }
44
80
 
45
- if (!resource || resource.manageStatus === 0) {
46
- return false;
47
- }
81
+ (0, _react.useEffect)(function () {
82
+ showAlarm();
83
+ (0, _showGraphManageStatusUtil.showManageStatus)({
84
+ topo: topo,
85
+ resources: resources,
86
+ isEditMode: isEditMode,
87
+ graphLoaded: graphLoaded,
88
+ cisEventLevel: getCisEventLevel()
89
+ });
90
+
91
+ function showAlarm() {
92
+ if (!graphLoaded || !alarmIsOpened || isEditMode) {
93
+ return;
94
+ }
48
95
 
49
- return true;
50
- }); // 将告警级别放入ht元素,便于测试
96
+ var finalAlarms = getCisEventLevel(); // 将告警级别放入ht元素,便于测试
51
97
 
52
98
  (0, _htElementUtils.getElements)(topo.getDataModel()).filter(function (item) {
53
99
  return !!item.getTag();
@@ -61,8 +107,13 @@ function useGraphAlarmDisplay(options) {
61
107
  }); // 更新到ht拓扑
62
108
 
63
109
  topo.view.loadAlarm(finalAlarms);
64
- };
110
+ }
65
111
 
66
- showAlarm();
67
- }, [graphLoaded, alarmIsOpened, alarmList, resources]);
112
+ return function () {
113
+ (0, _showGraphManageStatusUtil.removeManageStatus)({
114
+ topo: topo,
115
+ resources: resources
116
+ });
117
+ };
118
+ }, [isEditMode, graphLoaded, resources, alarmIsOpened, alarmList, risks]);
68
119
  }
@@ -68,38 +68,4 @@ function useManageStatus(props) {
68
68
  }
69
69
  }
70
70
  });
71
- (0, _react.useEffect)(function () {
72
- // 首次加载和监控状态变化后,更新节点和连线置灰状态
73
- if (!isEditMode && graphLoaded) {
74
- resources.forEach(function (resource) {
75
- var type = resource.type,
76
- id = resource.id,
77
- manageStatus = resource.manageStatus,
78
- permission = resource.permission;
79
- var isNotMonite = manageStatus === 0;
80
- var readable = !!(permission !== null && permission !== void 0 && permission.readable);
81
- var showNotMoniteStatus = isNotMonite && readable;
82
- var element = topo.getDataModel().getDataByTag(id);
83
- if (!element) return;
84
-
85
- if (type === 'node') {
86
- try {
87
- if (showNotMoniteStatus) {
88
- topo.getHtTopo().setNodeStyleIcon(element, {
89
- styleIcon: 'unMoniter',
90
- icon: 'resource.subIcon.unMoniter'
91
- });
92
- } else {
93
- element.removeStyleIcon('unMoniter');
94
- }
95
- } catch (error) {
96
- _rlog["default"].error('设置监控图标异常', element, error);
97
- } // setElementRuntimeStyle(element, 'opacity', showNotMoniteStatus ? 0.3 : undefined)
98
-
99
- } else {
100
- (0, _htElementUtils.setElementRuntimeStyle)(element, 'color', showNotMoniteStatus ? '#C9CED2' : undefined);
101
- }
102
- });
103
- }
104
- }, [isEditMode, graphLoaded, resources]);
105
71
  }
@@ -21,6 +21,8 @@ var _ResourceConfigUtil = _interopRequireDefault(require("../utils/ResourceConfi
21
21
 
22
22
  var _htElementUtils = require("../utils/htElementUtils");
23
23
 
24
+ var _htElementDataUtil = require("../utils/htElementDataUtil");
25
+
24
26
  function _default(props) {
25
27
  var topo = props.topo;
26
28
  var store = topo.store;
@@ -277,17 +279,7 @@ function _default(props) {
277
279
  }
278
280
 
279
281
  var getAllNodeResourceIds = function getAllNodeResourceIds() {
280
- return (0, _htElementUtils.getNodes)(topo.getDataModel()).filter(function (node) {
281
- return !!node.getTag();
282
- }).map(function (node) {
283
- return node.getTag();
284
- });
285
- };
286
-
287
- var getAllEdgeResourceIds = function getAllEdgeResourceIds() {
288
- return (0, _htElementUtils.getEdges)(topo.getDataModel()).filter(function (node) {
289
- return !!node.getTag();
290
- }).map(function (node) {
282
+ return (0, _htElementUtils.getElements)(topo.getDataModel()).filter(_htElementDataUtil.isResourceNodeElement).map(function (node) {
291
283
  return node.getTag();
292
284
  });
293
285
  };
@@ -297,7 +289,9 @@ function _default(props) {
297
289
  getConfig: getConfig,
298
290
  updateConfig: updateConfig,
299
291
  getAllNodeResourceIds: getAllNodeResourceIds,
300
- getAllEdgeResourceIds: getAllEdgeResourceIds,
292
+ getAllEdgeResourceIds: function getAllEdgeResourceIds() {
293
+ return (0, _htElementDataUtil.getAllEdgeResourceIds)(topo.getDataModel());
294
+ },
301
295
  getViewResources: getViewResources,
302
296
  getGroups: getGroups,
303
297
  getGroupConfigByElement: _ResourceConfigUtil["default"].getGroupConfigByElement,
@@ -29,11 +29,7 @@ function useSelection(props) {
29
29
  var selectionModel = topo.getSelectionModel();
30
30
  var htSelection = selectionModel.getSelection().getArray(); // TODO 对比变更更新
31
31
 
32
- var selectionArr = htSelection.map(getElementData);
33
-
34
- _rlog["default"].info("updateSelection", selectionArr.map(function (element) {
35
- return element.id;
36
- }));
32
+ var selectionArr = htSelection.map(getElementData); // rlog.info("updateSelection", selectionArr.map((element) => element.id));
37
33
 
38
34
  setSelection(selectionArr);
39
35
  } catch (e) {
@@ -35,6 +35,10 @@ var _useGroupAddResource = _interopRequireDefault(require("./useGroupAddResource
35
35
 
36
36
  var _topoData = require("../utils/topoData");
37
37
 
38
+ var _htElementDataUtil = require("../utils/htElementDataUtil");
39
+
40
+ var _clusterUtil = require("../utils/clusterUtil");
41
+
38
42
  var useTopoEdit = function useTopoEdit(params) {
39
43
  var topo = params.topo,
40
44
  topoId = params.topoId,
@@ -132,11 +136,10 @@ var useTopoEdit = function useTopoEdit(params) {
132
136
  if (!isLayerTopo && config.layers.length) {
133
137
  topoDispatchers.setTopoType(_template.TPL_TREE);
134
138
  } // 更新配置
139
+ // resourceConfig.updateConfig(config);
140
+ // 更新配置对应的资源、链路
141
+ // editDispatchers.fetchDataByConfig();
135
142
 
136
-
137
- resourceConfig.updateConfig(config); // 更新配置对应的资源、链路
138
-
139
- editDispatchers.fetchDataByConfig();
140
143
  };
141
144
 
142
145
  var deleteLayer = function deleteLayer(layerElement) {
@@ -220,7 +223,7 @@ var useTopoEdit = function useTopoEdit(params) {
220
223
  return;
221
224
  }
222
225
 
223
- if (!(0, _htElementUtils.getGroupChildrenNodes)(group).length) {
226
+ if (!(0, _htElementDataUtil.getGroupChildrenResourceElements)(group).length || (0, _clusterUtil.isClusterHtElement)(group)) {
224
227
  doDelete();
225
228
  return;
226
229
  } // 有子节点时需要确认
@@ -323,6 +326,11 @@ var useTopoEdit = function useTopoEdit(params) {
323
326
  var handleDeleteNode = function handleDeleteNode(element) {
324
327
  var _topo$options$editor;
325
328
 
329
+ // 集群内成员禁用删除
330
+ if ((0, _clusterUtil.isClusterMemberHtElement)(element)) {
331
+ return;
332
+ }
333
+
326
334
  var data = element.getAttrObject(); // eslint-disable-next-line no-case-declarations
327
335
 
328
336
  var nodeDeleteable = params.nodeDeleteable || ((_topo$options$editor = topo.options.editor) === null || _topo$options$editor === void 0 ? void 0 : _topo$options$editor.nodeDeleteable);
@@ -419,8 +427,14 @@ var useTopoEdit = function useTopoEdit(params) {
419
427
  }
420
428
  }
421
429
  };
430
+ /**
431
+ * 获得未存在的连线元素
432
+ * @param {*} elements
433
+ * @returns
434
+ */
422
435
 
423
- function findNewLinkElements(elements) {
436
+
437
+ function findUNExistedLinkElements(elements) {
424
438
  var existedLinkIds = resourceConfig.getAllEdgeResourceIds();
425
439
  var newLinkElements = elements.filter(function (element) {
426
440
  return (element.type === "link" || element.type === "linkGroup") && existedLinkIds.indexOf(element.id) === -1;
@@ -460,7 +474,7 @@ var useTopoEdit = function useTopoEdit(params) {
460
474
  elements = _yield$editDispatcher2.elements;
461
475
  // 区域里的子区域及子区域的节点、新增的链路
462
476
  nodeElements = (0, _topoData.findGroupChildren)(elements, group);
463
- newLinkElements = findNewLinkElements(elements);
477
+ newLinkElements = findUNExistedLinkElements(elements);
464
478
  updateElements = [].concat(nodeElements, newLinkElements);
465
479
 
466
480
  if (updateElements.length) {
@@ -548,7 +562,7 @@ var useTopoEdit = function useTopoEdit(params) {
548
562
 
549
563
  case 7:
550
564
  _yield$editDispatcher3 = _context11.sent;
551
- elements = _yield$editDispatcher3.topoDataTrans;
565
+ elements = _yield$editDispatcher3.elements;
552
566
  saveBind(_componentTopologyGraph.TopoEvent.DATA_TYPE_RESOURCE_COMBO, elements); // 临时放这里,仅拓扑中心有
553
567
 
554
568
  if (topo.linkDynamicStyleExecutor) {
@@ -571,7 +585,7 @@ var useTopoEdit = function useTopoEdit(params) {
571
585
 
572
586
  function _addLayerResources() {
573
587
  _addLayerResources = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee12(group, newResourceIds) {
574
- var _yield$editDispatcher4, elements, newElements, data;
588
+ var _yield$editDispatcher4, elements, data;
575
589
 
576
590
  return _regenerator["default"].wrap(function _callee12$(_context12) {
577
591
  while (1) {
@@ -587,32 +601,29 @@ var useTopoEdit = function useTopoEdit(params) {
587
601
  case 4:
588
602
  _yield$editDispatcher4 = _context12.sent;
589
603
  elements = _yield$editDispatcher4.elements;
590
- newElements = elements.filter(function (element) {
591
- return !(0, _htElementUtils.isExistedElement)(topo.getDataModel(), element);
592
- }); // 过滤出新增的资源和链路
593
-
604
+ // 过滤出新增的资源和链路
594
605
  data = {
595
- groups: newElements.filter(function (ele) {
606
+ groups: elements.filter(function (ele) {
596
607
  return ele.type === 'group';
597
608
  }),
598
- nodes: newElements.filter(function (ele) {
609
+ nodes: elements.filter(function (ele) {
599
610
  return ele.type === 'node';
600
611
  }),
601
- lines: newElements.filter(function (ele) {
612
+ lines: elements.filter(function (ele) {
602
613
  return ele.type === 'link';
603
614
  })
604
615
  }; // 添加到分层
605
616
 
606
- _context12.next = 10;
607
- return topo.addElements(data);
617
+ _context12.next = 9;
618
+ return topo.updateElements(data);
608
619
 
609
- case 10:
620
+ case 9:
610
621
  // 临时放这里,仅拓扑中心有
611
622
  if (topo.linkDynamicStyleExecutor) {
612
623
  topo.linkDynamicStyleExecutor.execute();
613
624
  }
614
625
 
615
- case 11:
626
+ case 10:
616
627
  case "end":
617
628
  return _context12.stop();
618
629
  }
@@ -890,7 +901,7 @@ var useTopoEdit = function useTopoEdit(params) {
890
901
 
891
902
  var bindNodeResource = /*#__PURE__*/function () {
892
903
  var _ref7 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8(params) {
893
- var id, oldResId, newResId, node, groupElement, config, groupId, groupTag, _yield$editDispatcher, elements, nodeRelatedDatas, replaceOrAddRes;
904
+ var id, oldResId, newResId, node, groupElement, htTopo, config, groupId, groupTag, _yield$editDispatcher, elements, newData, newNodeElements, newLinkElements, newDatas, createElementsData, sm, dm, newElement, replaceOrAddRes;
894
905
 
895
906
  return _regenerator["default"].wrap(function _callee8$(_context8) {
896
907
  while (1) {
@@ -911,6 +922,7 @@ var useTopoEdit = function useTopoEdit(params) {
911
922
  node = topo.getDataModel().getDataById(id); // 节点所属容器
912
923
 
913
924
  groupElement = node.getParent();
925
+ htTopo = topo.getHtTopo();
914
926
  config = resourceConfig.getConfig();
915
927
 
916
928
  if (groupElement) {
@@ -935,42 +947,88 @@ var useTopoEdit = function useTopoEdit(params) {
935
947
  config.resources = replaceOrAddRes(config.resources, oldResId, newResId);
936
948
  }
937
949
 
938
- _context8.next = 9;
950
+ _context8.next = 10;
939
951
  return resourceConfig.updateConfig(config);
940
952
 
941
- case 9:
942
- _context8.next = 11;
953
+ case 10:
954
+ _context8.next = 12;
943
955
  return editDispatchers.fetchDataByConfig();
944
956
 
945
- case 11:
957
+ case 12:
946
958
  _yield$editDispatcher = _context8.sent;
947
- elements = _yield$editDispatcher.topoDataTrans;
948
- // 过滤出关联的节点和连线,通知ht更新
949
- nodeRelatedDatas = (0, _format.filterElementsByNodeId)(elements, newResId);
959
+ elements = _yield$editDispatcher.elements;
960
+ newData = elements.find(function (item) {
961
+ return item.id === newResId;
962
+ });
950
963
 
951
- if (nodeRelatedDatas.length) {
952
- _context8.next = 17;
964
+ if (newData.type === 'group') {
965
+ newNodeElements = [newData].concat((0, _topoData.findGroupChildren)(elements, newData));
966
+ } else {
967
+ newNodeElements = [newData];
968
+ }
969
+
970
+ newLinkElements = findUNExistedLinkElements(elements); // 过滤出关联的节点和连线,通知ht更新
971
+ // const newDatas = filterElementsByNodeId(elements, newResId);
972
+
973
+ newDatas = [].concat(newNodeElements, newLinkElements);
974
+
975
+ if (newDatas.length) {
976
+ _context8.next = 22;
953
977
  break;
954
978
  }
955
979
 
956
980
  _message["default"].error("关联资源失败");
957
981
 
982
+ _rlog["default"].warn("关联资源失败");
983
+
958
984
  return _context8.abrupt("return", false);
959
985
 
960
- case 17:
961
- saveBind(_componentTopologyGraph.TopoEvent.DATA_TYPE_RESOURCE_SINGLE, nodeRelatedDatas);
962
- node.a("customName", null); // 删除关联在节点上的出口链路
986
+ case 22:
987
+ createElementsData = {
988
+ groups: newDatas.filter(function (item) {
989
+ return item.type === 'group';
990
+ }),
991
+ nodes: newDatas.filter(function (item) {
992
+ return item.type === 'node';
993
+ }),
994
+ links: newDatas.filter(function (item) {
995
+ return item.type === 'link';
996
+ }),
997
+ linkGroups: newDatas.filter(function (item) {
998
+ return item.type === 'linkGroup';
999
+ })
1000
+ };
1001
+
1002
+ _rlog["default"].debug('批量创建元素', newDatas, createElementsData);
1003
+
1004
+ htTopo.createElements(createElementsData);
1005
+ sm = htTopo.getGraphView().sm();
1006
+ dm = htTopo.getGraphView().dm(); // 恢复图标、大小、位置
1007
+
1008
+ newElement = dm.getDataByTag(newData.id);
963
1009
 
964
- _context8.next = 21;
1010
+ if (newElement) {
1011
+ newElement.setSize(node.getSize());
1012
+ newElement.setPosition(node.getPosition());
1013
+ newElement.setImage(node.getImage());
1014
+ }
1015
+
1016
+ sm.setSelection([newElement]); // 移除旧节点
1017
+
1018
+ dm.remove(node); // saveBind(TopoEvent.DATA_TYPE_RESOURCE_SINGLE, newDatas);
1019
+ // node.a("customName", null);
1020
+ // 删除关联在节点上的出口链路
1021
+
1022
+ _context8.next = 33;
965
1023
  return deleteExLink(node);
966
1024
 
967
- case 21:
1025
+ case 33:
968
1026
  // 临时放这里,仅拓扑中心有
969
1027
  if (topo.linkDynamicStyleExecutor) {
970
1028
  topo.linkDynamicStyleExecutor.execute();
971
1029
  }
972
1030
 
973
- case 22:
1031
+ case 34:
974
1032
  case "end":
975
1033
  return _context8.stop();
976
1034
  }
@@ -26,13 +26,15 @@ function _default(topo) {
26
26
  return {
27
27
  // 定义 model 的初始 state
28
28
  state: {
29
- currentTopoId: undefined,
29
+ events: [],
30
30
  alarmOpening: false,
31
31
  alarmIsOpened: true,
32
32
  alarmRecord: [],
33
33
  alarmDoc: {},
34
34
  alarmDatas: [],
35
- alarmPanelIsOpen: false
35
+ alarmPanelIsOpen: false,
36
+ risks: [],
37
+ currentTopoId: undefined
36
38
  },
37
39
  // 定义改变该模型状态的纯函数
38
40
  reducers: {
@@ -53,7 +55,9 @@ function _default(topo) {
53
55
  case 0:
54
56
  _this.update({
55
57
  alarmDoc: {},
56
- alarmRecord: []
58
+ alarmList: [],
59
+ alarmRecord: [],
60
+ risks: []
57
61
  });
58
62
 
59
63
  return _context.abrupt("return", "resetAlarmDoc Over");
@@ -193,11 +197,6 @@ function _default(topo) {
193
197
  return null;
194
198
  }
195
199
  }));
196
- _context2.next = 11;
197
- return _this2.filterElementAlarmsByManageStatus(alarmlist);
198
-
199
- case 11:
200
- alarmlist = _context2.sent;
201
200
  eqFlag = _lodash["default"].isEqual(_lodash["default"].sortBy(alarmlist), _lodash["default"].sortBy(currentAlarmList));
202
201
 
203
202
  _rlog["default"].debug("告警归档结束", eqFlag, currentAlarmList, alarmlist, doc, record);
@@ -213,7 +212,7 @@ function _default(topo) {
213
212
  alarmlist: alarmlist
214
213
  });
215
214
 
216
- case 16:
215
+ case 13:
217
216
  case "end":
218
217
  return _context2.stop();
219
218
  }