@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
@@ -5,6 +5,7 @@ import EditButton from "./widgets/EditButton";
5
5
  import NodesDragSwitch from "./widgets/NodesDragSwitch";
6
6
  import AlarmListShowButton from "./widgets/AlarmListShowButton";
7
7
  import SettingButton from "./widgets/SettingButtonWidget";
8
+ import useEventData from "../../../../hooks/useEventData";
8
9
  export default function BasicTools(props) {
9
10
  var topo = props.topo,
10
11
  _props$showEditButton = props.showEditButton,
@@ -15,8 +16,10 @@ export default function BasicTools(props) {
15
16
  alarmState = _topo$store$useModel[0],
16
17
  alarmDispatchers = _topo$store$useModel[1];
17
18
 
18
- var alarmPanelIsOpen = alarmState.alarmPanelIsOpen,
19
- alarmData = alarmState.alarmData;
19
+ var alarmPanelIsOpen = alarmState.alarmPanelIsOpen;
20
+ var alarmData = useEventData({
21
+ topo: topo
22
+ });
20
23
  return /*#__PURE__*/React.createElement(_Box, {
21
24
  direction: "row",
22
25
  spacing: 8
@@ -47,9 +47,11 @@ export default function NodesDragSwitch(props) {
47
47
 
48
48
  topo.getGraphView().setMovableFunc(function (data) {
49
49
  return !newLock; // self._graphView.dm().sm().getSelection().size()===1 && !(data instanceof ht.Grid);
50
- }); // 开锁状态下禁用悬停展示悬浮框
50
+ }); // 开锁状态下禁用悬停展示悬浮框,TODO 待迁移走独立
51
51
 
52
- topo.attributeMetricDisplay.updateTagsTips();
52
+ topo.attributeMetricDisplay.updateTagsTips(); // 开锁状态可移动链路指标位置
53
+
54
+ topo.getHtTopo().setEdgeIndicatorCanDrag(!newLock);
53
55
  };
54
56
 
55
57
  var title = lock ? '解锁后可进行拓扑图标的移动' : '锁上后禁用图标移动';
@@ -14,6 +14,63 @@ export default function useAlarm(options) {
14
14
  useGraphAlarmDisplay({
15
15
  topo: topo
16
16
  });
17
+
18
+ var handleRiskData = function handleRiskData(receivedData) {
19
+ var _risks;
20
+
21
+ // 非在活状态:
22
+ // 已修复 recovered
23
+ // 已关闭 closed
24
+ var prevRisks = topo.store.getModelState('topoAlarm').risks;
25
+
26
+ var isLiveRisk = function isLiveRisk(data) {
27
+ return ['recovered', 'closed'].indexOf(data.status) === -1;
28
+ };
29
+
30
+ var hasCiPermission = function hasCiPermission(data) {
31
+ var _data$resourceId;
32
+
33
+ var ciId = (_data$resourceId = data.resourceId) !== null && _data$resourceId !== void 0 ? _data$resourceId : data.ciId;
34
+ var ci = topo.dataModel.getDataById(ciId);
35
+ return ci && ci.operation;
36
+ }; // 合并
37
+
38
+
39
+ var risks = prevRisks.map(function (risk) {
40
+ var newRisk = receivedData.find(function (item) {
41
+ return item.id === risk.id;
42
+ });
43
+ return newRisk || risk;
44
+ }); // 新的
45
+
46
+ var addRisks = receivedData.filter(function (risk) {
47
+ return !prevRisks.find(function (item) {
48
+ return item.id === risk.id;
49
+ });
50
+ }).filter(hasCiPermission);
51
+
52
+ (_risks = risks).push.apply(_risks, addRisks); // 过滤掉无权限、非在活的
53
+
54
+
55
+ risks = risks.filter(isLiveRisk).filter(hasCiPermission).sort(function (a, b) {
56
+ return a.executeTime - b.executeTime;
57
+ });
58
+ rlog.debug('更新风险', {
59
+ prevRisks: prevRisks,
60
+ receivedData: receivedData,
61
+ risks: risks
62
+ });
63
+ topo.store.getModelDispatchers('topoAlarm').update({
64
+ risks: risks
65
+ });
66
+
67
+ if (addRisks.length) {
68
+ topo.alarm.updateState({
69
+ alarmPanelIsOpen: true
70
+ });
71
+ }
72
+ };
73
+
17
74
  useCbbEventListener("topo", {
18
75
  name: "topo",
19
76
  onMessage: function onMessage(data) {
@@ -21,6 +78,8 @@ export default function useAlarm(options) {
21
78
 
22
79
  if (data.type === "alarm") {
23
80
  topo.alarm.handleAlarmEvent(data.data);
81
+ } else if (data.type === "risk") {
82
+ handleRiskData(data.data);
24
83
  }
25
84
  }
26
85
  });
@@ -0,0 +1,20 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ export default function useEventData(props) {
3
+ var topo = props.topo;
4
+ var topoDatas = topo.dataModel.useDatas();
5
+
6
+ var _topo$store$useModelS = topo.store.useModelState('topoAlarm'),
7
+ risks = _topo$store$useModelS.risks,
8
+ alarmData = _topo$store$useModelS.alarmData;
9
+
10
+ var data = [].concat((alarmData || []).map(function (item) {
11
+ return _extends({}, item, {
12
+ eventType: 'alarm'
13
+ });
14
+ }), (risks || []).map(function (item) {
15
+ return _extends({}, item, {
16
+ eventType: 'risk'
17
+ });
18
+ }));
19
+ return data;
20
+ }
@@ -1,12 +1,40 @@
1
1
  import { useEffect } from "react";
2
2
  import rlog from "@riil-frontend/component-topology-utils/es/rlog";
3
3
  import { getElements } from "../utils/htElementUtils";
4
+ import { removeManageStatus, showManageStatus } from "../utils/showGraphManageStatusUtil";
5
+
6
+ function getCiAlarmLevels(alarmList, risks) {
7
+ var ciIdLevelMap = {};
8
+ [].concat(alarmList, risks.map(function (item) {
9
+ var _item$resourceId;
10
+
11
+ return {
12
+ id: (_item$resourceId = item.resourceId) !== null && _item$resourceId !== void 0 ? _item$resourceId : item.ciId,
13
+ level: 5
14
+ };
15
+ })).forEach(function (item) {
16
+ var level = ciIdLevelMap[item.id]; // 优先显示高等级告警。值小的等级高
17
+
18
+ if (!level || item.level < level) {
19
+ level = item.level;
20
+ }
21
+
22
+ ciIdLevelMap[item.id] = level;
23
+ });
24
+ return Object.keys(ciIdLevelMap).map(function (id) {
25
+ return {
26
+ id: id,
27
+ level: ciIdLevelMap[id]
28
+ };
29
+ });
30
+ }
4
31
  /**
5
32
  * 告警显示到ht拓扑
6
33
  *
7
34
  * @param {*} options
8
35
  */
9
36
 
37
+
10
38
  export default function useGraphAlarmDisplay(options) {
11
39
  var topo = options.topo;
12
40
  var store = topo.store;
@@ -15,30 +43,47 @@ export default function useGraphAlarmDisplay(options) {
15
43
  topoState = _topo$store$useModel[0],
16
44
  topoDispatchers = _topo$store$useModel[1];
17
45
 
18
- var graphLoaded = topoState.graphLoaded;
46
+ var graphLoaded = topoState.graphLoaded,
47
+ viewState = topoState.viewState;
48
+ var isEditMode = viewState === 'edit';
19
49
 
20
50
  var _topo$alarm$useState = topo.alarm.useState(),
21
51
  alarmIsOpened = _topo$alarm$useState.alarmIsOpened,
22
- alarmList = _topo$alarm$useState.alarmList;
52
+ alarmList = _topo$alarm$useState.alarmList,
53
+ risks = _topo$alarm$useState.risks;
23
54
 
24
55
  var resources = topo.dataModel.useCis();
25
- useEffect(function () {
26
- var showAlarm = function showAlarm() {
27
- if (!graphLoaded || !alarmList || !alarmIsOpened) {
28
- return;
56
+
57
+ function getCisEventLevel() {
58
+ return getCiAlarmLevels(alarmList || [], risks).filter(function (alarm) {
59
+ var resource = resources.find(function (item) {
60
+ return item.id === alarm.id;
61
+ });
62
+
63
+ if (!resource) {
64
+ return false;
29
65
  }
30
66
 
31
- var finalAlarms = alarmList.filter(function (alarm) {
32
- var resource = resources.find(function (item) {
33
- return item.id === alarm.id;
34
- }); // 未监控不显示告警
67
+ return true;
68
+ });
69
+ }
35
70
 
36
- if (!resource || resource.manageStatus === 0) {
37
- return false;
38
- }
71
+ useEffect(function () {
72
+ showAlarm();
73
+ showManageStatus({
74
+ topo: topo,
75
+ resources: resources,
76
+ isEditMode: isEditMode,
77
+ graphLoaded: graphLoaded,
78
+ cisEventLevel: getCisEventLevel()
79
+ });
39
80
 
40
- return true;
41
- }); // 将告警级别放入ht元素,便于测试
81
+ function showAlarm() {
82
+ if (!graphLoaded || !alarmIsOpened || isEditMode) {
83
+ return;
84
+ }
85
+
86
+ var finalAlarms = getCisEventLevel(); // 将告警级别放入ht元素,便于测试
42
87
 
43
88
  getElements(topo.getDataModel()).filter(function (item) {
44
89
  return !!item.getTag();
@@ -52,8 +97,13 @@ export default function useGraphAlarmDisplay(options) {
52
97
  }); // 更新到ht拓扑
53
98
 
54
99
  topo.view.loadAlarm(finalAlarms);
55
- };
100
+ }
56
101
 
57
- showAlarm();
58
- }, [graphLoaded, alarmIsOpened, alarmList, resources]);
102
+ return function () {
103
+ removeManageStatus({
104
+ topo: topo,
105
+ resources: resources
106
+ });
107
+ };
108
+ }, [isEditMode, graphLoaded, resources, alarmIsOpened, alarmList, risks]);
59
109
  }
@@ -57,38 +57,4 @@ export default function useManageStatus(props) {
57
57
  }
58
58
  }
59
59
  });
60
- useEffect(function () {
61
- // 首次加载和监控状态变化后,更新节点和连线置灰状态
62
- if (!isEditMode && graphLoaded) {
63
- resources.forEach(function (resource) {
64
- var type = resource.type,
65
- id = resource.id,
66
- manageStatus = resource.manageStatus,
67
- permission = resource.permission;
68
- var isNotMonite = manageStatus === 0;
69
- var readable = !!(permission !== null && permission !== void 0 && permission.readable);
70
- var showNotMoniteStatus = isNotMonite && readable;
71
- var element = topo.getDataModel().getDataByTag(id);
72
- if (!element) return;
73
-
74
- if (type === 'node') {
75
- try {
76
- if (showNotMoniteStatus) {
77
- topo.getHtTopo().setNodeStyleIcon(element, {
78
- styleIcon: 'unMoniter',
79
- icon: 'resource.subIcon.unMoniter'
80
- });
81
- } else {
82
- element.removeStyleIcon('unMoniter');
83
- }
84
- } catch (error) {
85
- rlog.error('设置监控图标异常', element, error);
86
- } // setElementRuntimeStyle(element, 'opacity', showNotMoniteStatus ? 0.3 : undefined)
87
-
88
- } else {
89
- setElementRuntimeStyle(element, 'color', showNotMoniteStatus ? '#C9CED2' : undefined);
90
- }
91
- });
92
- }
93
- }, [isEditMode, graphLoaded, resources]);
94
60
  }
@@ -5,7 +5,8 @@ import { useMemo, useState, useEffect } from 'react';
5
5
  import rlog from '@riil-frontend/component-topology-utils/es/rlog';
6
6
  import { DEFAULT_GROUP } from "../utils/template";
7
7
  import ResourceConfigUtil from "../utils/ResourceConfigUtil";
8
- import { getEdges, getNodes } from "../utils/htElementUtils";
8
+ import { getEdges, getElements, getNodes } from "../utils/htElementUtils";
9
+ import { getAllEdgeResourceIds as _getAllEdgeResourceIds, isResourceNodeElement } from "../utils/htElementDataUtil";
9
10
  export default function (props) {
10
11
  var topo = props.topo;
11
12
  var store = topo.store;
@@ -262,17 +263,7 @@ export default function (props) {
262
263
  }
263
264
 
264
265
  var getAllNodeResourceIds = function getAllNodeResourceIds() {
265
- return getNodes(topo.getDataModel()).filter(function (node) {
266
- return !!node.getTag();
267
- }).map(function (node) {
268
- return node.getTag();
269
- });
270
- };
271
-
272
- var getAllEdgeResourceIds = function getAllEdgeResourceIds() {
273
- return getEdges(topo.getDataModel()).filter(function (node) {
274
- return !!node.getTag();
275
- }).map(function (node) {
266
+ return getElements(topo.getDataModel()).filter(isResourceNodeElement).map(function (node) {
276
267
  return node.getTag();
277
268
  });
278
269
  };
@@ -282,7 +273,9 @@ export default function (props) {
282
273
  getConfig: getConfig,
283
274
  updateConfig: updateConfig,
284
275
  getAllNodeResourceIds: getAllNodeResourceIds,
285
- getAllEdgeResourceIds: getAllEdgeResourceIds,
276
+ getAllEdgeResourceIds: function getAllEdgeResourceIds() {
277
+ return _getAllEdgeResourceIds(topo.getDataModel());
278
+ },
286
279
  getViewResources: getViewResources,
287
280
  getGroups: getGroups,
288
281
  getGroupConfigByElement: ResourceConfigUtil.getGroupConfigByElement,
@@ -20,10 +20,8 @@ function useSelection(props) {
20
20
  var selectionModel = topo.getSelectionModel();
21
21
  var htSelection = selectionModel.getSelection().getArray(); // TODO 对比变更更新
22
22
 
23
- var selectionArr = htSelection.map(getElementData);
24
- rlog.info("updateSelection", selectionArr.map(function (element) {
25
- return element.id;
26
- }));
23
+ var selectionArr = htSelection.map(getElementData); // rlog.info("updateSelection", selectionArr.map((element) => element.id));
24
+
27
25
  setSelection(selectionArr);
28
26
  } catch (e) {
29
27
  rlog.error("updateSelection error", e);
@@ -9,10 +9,12 @@ import { TopoEvent } from "@riil-frontend/component-topology-graph";
9
9
  import { filterElementsByNodeId } from "../utils/format";
10
10
  import { TPL_BLANK, TPL_TREE } from "../utils/template";
11
11
  import topoPermissonUtil from "../utils/topoPermissionUtil";
12
- import { getElements, getGroupChildrenNodes, getGroupElementByTag, isEdge, isExistedElement, isGroup, isLayer, isNode } from "../utils/htElementUtils";
12
+ import { getElements, getGroupElementByTag, isEdge, isExistedElement, isGroup, isLayer, isNode } from "../utils/htElementUtils";
13
13
  import useResourceConfig from "./useResourceConfig";
14
14
  import useGroupAddResource from "./useGroupAddResource";
15
15
  import { findGroupChildren } from "../utils/topoData";
16
+ import { getGroupChildrenResourceElements } from "../utils/htElementDataUtil";
17
+ import { isClusterHtElement, isClusterMemberHtElement } from "../utils/clusterUtil";
16
18
 
17
19
  var useTopoEdit = function useTopoEdit(params) {
18
20
  var topo = params.topo,
@@ -108,11 +110,10 @@ var useTopoEdit = function useTopoEdit(params) {
108
110
  if (!isLayerTopo && config.layers.length) {
109
111
  topoDispatchers.setTopoType(TPL_TREE);
110
112
  } // 更新配置
113
+ // resourceConfig.updateConfig(config);
114
+ // 更新配置对应的资源、链路
115
+ // editDispatchers.fetchDataByConfig();
111
116
 
112
-
113
- resourceConfig.updateConfig(config); // 更新配置对应的资源、链路
114
-
115
- editDispatchers.fetchDataByConfig();
116
117
  };
117
118
 
118
119
  var deleteLayer = function deleteLayer(layerElement) {
@@ -194,7 +195,7 @@ var useTopoEdit = function useTopoEdit(params) {
194
195
  return;
195
196
  }
196
197
 
197
- if (!getGroupChildrenNodes(group).length) {
198
+ if (!getGroupChildrenResourceElements(group).length || isClusterHtElement(group)) {
198
199
  doDelete();
199
200
  return;
200
201
  } // 有子节点时需要确认
@@ -295,6 +296,11 @@ var useTopoEdit = function useTopoEdit(params) {
295
296
  var handleDeleteNode = function handleDeleteNode(element) {
296
297
  var _topo$options$editor;
297
298
 
299
+ // 集群内成员禁用删除
300
+ if (isClusterMemberHtElement(element)) {
301
+ return;
302
+ }
303
+
298
304
  var data = element.getAttrObject(); // eslint-disable-next-line no-case-declarations
299
305
 
300
306
  var nodeDeleteable = params.nodeDeleteable || ((_topo$options$editor = topo.options.editor) === null || _topo$options$editor === void 0 ? void 0 : _topo$options$editor.nodeDeleteable);
@@ -390,8 +396,14 @@ var useTopoEdit = function useTopoEdit(params) {
390
396
  }
391
397
  }
392
398
  };
399
+ /**
400
+ * 获得未存在的连线元素
401
+ * @param {*} elements
402
+ * @returns
403
+ */
404
+
393
405
 
394
- function findNewLinkElements(elements) {
406
+ function findUNExistedLinkElements(elements) {
395
407
  var existedLinkIds = resourceConfig.getAllEdgeResourceIds();
396
408
  var newLinkElements = elements.filter(function (element) {
397
409
  return (element.type === "link" || element.type === "linkGroup") && existedLinkIds.indexOf(element.id) === -1;
@@ -429,7 +441,7 @@ var useTopoEdit = function useTopoEdit(params) {
429
441
  elements = _yield$editDispatcher2.elements;
430
442
  // 区域里的子区域及子区域的节点、新增的链路
431
443
  nodeElements = findGroupChildren(elements, group);
432
- newLinkElements = findNewLinkElements(elements);
444
+ newLinkElements = findUNExistedLinkElements(elements);
433
445
  updateElements = [].concat(nodeElements, newLinkElements);
434
446
 
435
447
  if (updateElements.length) {
@@ -517,7 +529,7 @@ var useTopoEdit = function useTopoEdit(params) {
517
529
 
518
530
  case 7:
519
531
  _yield$editDispatcher3 = _context11.sent;
520
- elements = _yield$editDispatcher3.topoDataTrans;
532
+ elements = _yield$editDispatcher3.elements;
521
533
  saveBind(TopoEvent.DATA_TYPE_RESOURCE_COMBO, elements); // 临时放这里,仅拓扑中心有
522
534
 
523
535
  if (topo.linkDynamicStyleExecutor) {
@@ -540,7 +552,7 @@ var useTopoEdit = function useTopoEdit(params) {
540
552
 
541
553
  function _addLayerResources() {
542
554
  _addLayerResources = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee12(group, newResourceIds) {
543
- var _yield$editDispatcher4, elements, newElements, data;
555
+ var _yield$editDispatcher4, elements, data;
544
556
 
545
557
  return _regeneratorRuntime.wrap(function _callee12$(_context12) {
546
558
  while (1) {
@@ -556,32 +568,29 @@ var useTopoEdit = function useTopoEdit(params) {
556
568
  case 4:
557
569
  _yield$editDispatcher4 = _context12.sent;
558
570
  elements = _yield$editDispatcher4.elements;
559
- newElements = elements.filter(function (element) {
560
- return !isExistedElement(topo.getDataModel(), element);
561
- }); // 过滤出新增的资源和链路
562
-
571
+ // 过滤出新增的资源和链路
563
572
  data = {
564
- groups: newElements.filter(function (ele) {
573
+ groups: elements.filter(function (ele) {
565
574
  return ele.type === 'group';
566
575
  }),
567
- nodes: newElements.filter(function (ele) {
576
+ nodes: elements.filter(function (ele) {
568
577
  return ele.type === 'node';
569
578
  }),
570
- lines: newElements.filter(function (ele) {
579
+ lines: elements.filter(function (ele) {
571
580
  return ele.type === 'link';
572
581
  })
573
582
  }; // 添加到分层
574
583
 
575
- _context12.next = 10;
576
- return topo.addElements(data);
584
+ _context12.next = 9;
585
+ return topo.updateElements(data);
577
586
 
578
- case 10:
587
+ case 9:
579
588
  // 临时放这里,仅拓扑中心有
580
589
  if (topo.linkDynamicStyleExecutor) {
581
590
  topo.linkDynamicStyleExecutor.execute();
582
591
  }
583
592
 
584
- case 11:
593
+ case 10:
585
594
  case "end":
586
595
  return _context12.stop();
587
596
  }
@@ -855,7 +864,7 @@ var useTopoEdit = function useTopoEdit(params) {
855
864
 
856
865
  var bindNodeResource = /*#__PURE__*/function () {
857
866
  var _ref7 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee8(params) {
858
- var id, oldResId, newResId, node, groupElement, config, groupId, groupTag, _yield$editDispatcher, elements, nodeRelatedDatas, replaceOrAddRes;
867
+ var id, oldResId, newResId, node, groupElement, htTopo, config, groupId, groupTag, _yield$editDispatcher, elements, newData, newNodeElements, newLinkElements, newDatas, createElementsData, sm, dm, newElement, replaceOrAddRes;
859
868
 
860
869
  return _regeneratorRuntime.wrap(function _callee8$(_context8) {
861
870
  while (1) {
@@ -874,6 +883,7 @@ var useTopoEdit = function useTopoEdit(params) {
874
883
  node = topo.getDataModel().getDataById(id); // 节点所属容器
875
884
 
876
885
  groupElement = node.getParent();
886
+ htTopo = topo.getHtTopo();
877
887
  config = resourceConfig.getConfig();
878
888
 
879
889
  if (groupElement) {
@@ -898,42 +908,85 @@ var useTopoEdit = function useTopoEdit(params) {
898
908
  config.resources = replaceOrAddRes(config.resources, oldResId, newResId);
899
909
  }
900
910
 
901
- _context8.next = 9;
911
+ _context8.next = 10;
902
912
  return resourceConfig.updateConfig(config);
903
913
 
904
- case 9:
905
- _context8.next = 11;
914
+ case 10:
915
+ _context8.next = 12;
906
916
  return editDispatchers.fetchDataByConfig();
907
917
 
908
- case 11:
918
+ case 12:
909
919
  _yield$editDispatcher = _context8.sent;
910
- elements = _yield$editDispatcher.topoDataTrans;
911
- // 过滤出关联的节点和连线,通知ht更新
912
- nodeRelatedDatas = filterElementsByNodeId(elements, newResId);
920
+ elements = _yield$editDispatcher.elements;
921
+ newData = elements.find(function (item) {
922
+ return item.id === newResId;
923
+ });
924
+
925
+ if (newData.type === 'group') {
926
+ newNodeElements = [newData].concat(findGroupChildren(elements, newData));
927
+ } else {
928
+ newNodeElements = [newData];
929
+ }
930
+
931
+ newLinkElements = findUNExistedLinkElements(elements); // 过滤出关联的节点和连线,通知ht更新
932
+ // const newDatas = filterElementsByNodeId(elements, newResId);
913
933
 
914
- if (nodeRelatedDatas.length) {
915
- _context8.next = 17;
934
+ newDatas = [].concat(newNodeElements, newLinkElements);
935
+
936
+ if (newDatas.length) {
937
+ _context8.next = 22;
916
938
  break;
917
939
  }
918
940
 
919
941
  _Message.error("关联资源失败");
920
942
 
943
+ rlog.warn("关联资源失败");
921
944
  return _context8.abrupt("return", false);
922
945
 
923
- case 17:
924
- saveBind(TopoEvent.DATA_TYPE_RESOURCE_SINGLE, nodeRelatedDatas);
925
- node.a("customName", null); // 删除关联在节点上的出口链路
946
+ case 22:
947
+ createElementsData = {
948
+ groups: newDatas.filter(function (item) {
949
+ return item.type === 'group';
950
+ }),
951
+ nodes: newDatas.filter(function (item) {
952
+ return item.type === 'node';
953
+ }),
954
+ links: newDatas.filter(function (item) {
955
+ return item.type === 'link';
956
+ }),
957
+ linkGroups: newDatas.filter(function (item) {
958
+ return item.type === 'linkGroup';
959
+ })
960
+ };
961
+ rlog.debug('批量创建元素', newDatas, createElementsData);
962
+ htTopo.createElements(createElementsData);
963
+ sm = htTopo.getGraphView().sm();
964
+ dm = htTopo.getGraphView().dm(); // 恢复图标、大小、位置
926
965
 
927
- _context8.next = 21;
966
+ newElement = dm.getDataByTag(newData.id);
967
+
968
+ if (newElement) {
969
+ newElement.setSize(node.getSize());
970
+ newElement.setPosition(node.getPosition());
971
+ newElement.setImage(node.getImage());
972
+ }
973
+
974
+ sm.setSelection([newElement]); // 移除旧节点
975
+
976
+ dm.remove(node); // saveBind(TopoEvent.DATA_TYPE_RESOURCE_SINGLE, newDatas);
977
+ // node.a("customName", null);
978
+ // 删除关联在节点上的出口链路
979
+
980
+ _context8.next = 33;
928
981
  return deleteExLink(node);
929
982
 
930
- case 21:
983
+ case 33:
931
984
  // 临时放这里,仅拓扑中心有
932
985
  if (topo.linkDynamicStyleExecutor) {
933
986
  topo.linkDynamicStyleExecutor.execute();
934
987
  }
935
988
 
936
- case 22:
989
+ case 34:
937
990
  case "end":
938
991
  return _context8.stop();
939
992
  }
@@ -13,13 +13,15 @@ export default function (topo) {
13
13
  return {
14
14
  // 定义 model 的初始 state
15
15
  state: {
16
- currentTopoId: undefined,
16
+ events: [],
17
17
  alarmOpening: false,
18
18
  alarmIsOpened: true,
19
19
  alarmRecord: [],
20
20
  alarmDoc: {},
21
21
  alarmDatas: [],
22
- alarmPanelIsOpen: false
22
+ alarmPanelIsOpen: false,
23
+ risks: [],
24
+ currentTopoId: undefined
23
25
  },
24
26
  // 定义改变该模型状态的纯函数
25
27
  reducers: {
@@ -40,7 +42,9 @@ export default function (topo) {
40
42
  case 0:
41
43
  _this.update({
42
44
  alarmDoc: {},
43
- alarmRecord: []
45
+ alarmList: [],
46
+ alarmRecord: [],
47
+ risks: []
44
48
  });
45
49
 
46
50
  return _context.abrupt("return", "resetAlarmDoc Over");
@@ -181,11 +185,6 @@ export default function (topo) {
181
185
  return null;
182
186
  }
183
187
  }));
184
- _context2.next = 11;
185
- return _this2.filterElementAlarmsByManageStatus(alarmlist);
186
-
187
- case 11:
188
- alarmlist = _context2.sent;
189
188
  eqFlag = _.isEqual(_.sortBy(alarmlist), _.sortBy(currentAlarmList));
190
189
  rlog.debug("告警归档结束", eqFlag, currentAlarmList, alarmlist, doc, record);
191
190
 
@@ -200,7 +199,7 @@ export default function (topo) {
200
199
  alarmlist: alarmlist
201
200
  });
202
201
 
203
- case 16:
202
+ case 13:
204
203
  case "end":
205
204
  return _context2.stop();
206
205
  }