@riil-frontend/component-topology 12.0.0-dev.25 → 12.0.0-dev.26

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.
@@ -2,128 +2,165 @@ import _extends from "@babel/runtime/helpers/extends";
2
2
  import { useEffect } from "react";
3
3
  import rlog from "@riil-frontend/component-topology-utils/es/rlog";
4
4
  import useGraphAlarmDisplay from "./useGraphAlarmDisplay";
5
- import useTopoEventListener from "./useTopoEventListener";
5
+ import useTopoEventListener from "./useTopoEventListener"; // 告警在活状态
6
+
7
+ var showAlarmStatus = ["toDeal", "dealing", "change", "woDealing"];
6
8
  /**
7
- *
8
- *
9
- * @param {*} options
9
+ * 告警是否在活
10
+ * @param {*} alarm
11
+ * @returns
10
12
  */
11
13
 
12
- export default function useAlarm(options) {
13
- var topo = options.topo;
14
- var store = topo.store;
14
+ var isAlarmAlive = function isAlarmAlive(alarm) {
15
+ return showAlarmStatus.indexOf(alarm.status) >= 0;
16
+ };
15
17
 
16
- var _topo$store$useModelS = topo.store.useModelState('displayConfig'),
17
- alarmSwitch = _topo$store$useModelS.alarmSwitch,
18
- alarmListDefaultOpen = _topo$store$useModelS.alarmListDefaultOpen;
18
+ var handleRiskData = function handleRiskData(topo, receivedData) {
19
+ var _risks, _topo$viewProps, _topo$viewProps2;
19
20
 
20
- useGraphAlarmDisplay({
21
- topo: topo,
22
- alarmSwitch: alarmSwitch
23
- });
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
+ };
24
29
 
25
- var handleRiskData = function handleRiskData(receivedData) {
26
- var _risks, _topo$viewProps, _topo$viewProps2;
30
+ var hasCiPermission = function hasCiPermission(data) {
31
+ var _data$resourceId;
27
32
 
28
- // 非在活状态:
29
- // 已修复 recovered
30
- // 已关闭 closed
31
- var prevRisks = topo.store.getModelState('topoAlarm').risks;
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 !== null && ci !== void 0 && ci.operation);
36
+ }; // 合并
32
37
 
33
- var isLiveRisk = function isLiveRisk(data) {
34
- return ['recovered', 'closed'].indexOf(data.status) === -1;
35
- };
36
38
 
37
- var hasCiPermission = function hasCiPermission(data) {
38
- var _data$resourceId;
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
+ }); // 新的
39
45
 
40
- var ciId = (_data$resourceId = data.resourceId) !== null && _data$resourceId !== void 0 ? _data$resourceId : data.ciId;
41
- var ci = topo.dataModel.getDataById(ciId);
42
- return ci && ci.operation;
43
- }; // 合并
46
+ var addRisks = receivedData.filter(function (risk) {
47
+ return !prevRisks.find(function (item) {
48
+ return item.id === risk.id;
49
+ });
50
+ }).filter(hasCiPermission);
44
51
 
52
+ (_risks = risks).push.apply(_risks, addRisks); // 过滤掉无权限、非在活的
45
53
 
46
- var risks = prevRisks.map(function (risk) {
47
- var newRisk = receivedData.find(function (item) {
48
- return item.id === risk.id;
49
- });
50
- return newRisk || risk;
51
- }); // 新的
52
54
 
53
- var addRisks = receivedData.filter(function (risk) {
54
- return !prevRisks.find(function (item) {
55
- return item.id === risk.id;
56
- });
57
- }).filter(hasCiPermission);
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
+ }); // 获取配置
58
66
 
59
- (_risks = risks).push.apply(_risks, addRisks); // 过滤掉无权限、非在活的
67
+ var _topo$store$getModelS = topo.store.getModelState('displayConfig'),
68
+ alarmSwitch = _topo$store$getModelS.alarmSwitch,
69
+ alarmListDefaultOpen = _topo$store$getModelS.alarmListDefaultOpen; // 告警静默
60
70
 
61
71
 
62
- risks = risks.filter(isLiveRisk).filter(hasCiPermission).sort(function (a, b) {
63
- return a.executeTime - b.executeTime;
64
- });
65
- rlog.debug('更新风险', {
66
- prevRisks: prevRisks,
67
- receivedData: receivedData,
68
- risks: risks
69
- });
70
- topo.store.getModelDispatchers('topoAlarm').update({
71
- risks: risks
72
+ if (alarmSwitch === false) {
73
+ return;
74
+ } // 告警列表
75
+
76
+
77
+ if (addRisks.length && alarmListDefaultOpen) {
78
+ topo.alarm.updateState({
79
+ alarmPanelIsOpen: true
72
80
  });
81
+ }
73
82
 
74
- if (alarmSwitch === false) {
75
- // 告警静默
76
- return;
77
- }
83
+ if ((_topo$viewProps = topo.viewProps) !== null && _topo$viewProps !== void 0 && _topo$viewProps.onRisk) {
84
+ topo.viewProps.onRisk(risks);
85
+ }
78
86
 
79
- if (addRisks.length && alarmListDefaultOpen) {
80
- topo.alarm.updateState({
81
- alarmPanelIsOpen: true
82
- });
83
- }
87
+ if ((_topo$viewProps2 = topo.viewProps) !== null && _topo$viewProps2 !== void 0 && _topo$viewProps2.onResourceEvent) {
88
+ topo.viewProps.onResourceEvent(topo.alarm.getEvents());
89
+ }
90
+ };
84
91
 
85
- if ((_topo$viewProps = topo.viewProps) !== null && _topo$viewProps !== void 0 && _topo$viewProps.onRisk) {
86
- topo.viewProps.onRisk(risks);
87
- }
92
+ var handleRelateTopoAlarm = function handleRelateTopoAlarm(topo, data) {
93
+ var relateTopoAlarm = _extends({}, topo.store.getModelState('topoAlarm').relateTopoAlarm);
88
94
 
89
- if ((_topo$viewProps2 = topo.viewProps) !== null && _topo$viewProps2 !== void 0 && _topo$viewProps2.onResourceEvent) {
90
- topo.viewProps.onResourceEvent(topo.alarm.getEvents());
91
- }
92
- };
95
+ data.forEach(function (item) {
96
+ relateTopoAlarm[item.topoId] = item.alertLevel;
97
+ });
98
+ topo.store.getModelDispatchers('topoAlarm').update({
99
+ relateTopoAlarm: relateTopoAlarm
100
+ });
101
+ rlog.debug("\u5173\u8054\u62D3\u6251\u544A\u8B66\uFF1A\u6536\u5230 " + data.length, {
102
+ received: data,
103
+ all: relateTopoAlarm
104
+ });
105
+ };
106
+ /**
107
+ * 处理分级告警
108
+ * @param {*} alarms
109
+ * @returns
110
+ */
93
111
 
94
- var handleRelateTopoAlarm = function handleRelateTopoAlarm(data) {
95
- var relateTopoAlarm = _extends({}, topo.store.getModelState('topoAlarm').relateTopoAlarm);
96
112
 
97
- data.forEach(function (item) {
98
- relateTopoAlarm[item.topoId] = item.alertLevel;
99
- });
100
- topo.store.getModelDispatchers('topoAlarm').update({
101
- relateTopoAlarm: relateTopoAlarm
102
- });
103
- rlog.debug("\u5173\u8054\u62D3\u6251\u544A\u8B66\uFF1A\u6536\u5230 " + data.length, {
104
- received: data,
105
- all: relateTopoAlarm
113
+ function convertAlarmData(alarms) {
114
+ return alarms.map(function (alarm) {
115
+ var resourceId = alarm.resourceId; // 分级资源id转换
116
+
117
+ if (alarm.cmpAlertId) {
118
+ resourceId = "sub:" + alarm.mainCiId;
119
+ }
120
+
121
+ return _extends({}, alarm, {
122
+ // 数据id
123
+ resourceId: resourceId,
124
+ // 是否在活
125
+ alive: isAlarmAlive(alarm)
106
126
  });
107
- }; // 订阅消息
127
+ });
128
+ }
129
+ /**
130
+ *
131
+ *
132
+ * @param {*} options
133
+ */
134
+
135
+
136
+ export default function useAlarm(options) {
137
+ var topo = options.topo;
138
+
139
+ var _topo$store$useModelS = topo.store.useModelState('displayConfig'),
140
+ alarmSwitch = _topo$store$useModelS.alarmSwitch;
108
141
 
142
+ useGraphAlarmDisplay({
143
+ topo: topo,
144
+ alarmSwitch: alarmSwitch
145
+ }); // 订阅消息
109
146
 
110
147
  useTopoEventListener({
111
148
  type: 'alarm',
112
149
  onMessage: function onMessage(data) {
113
150
  rlog.debug("Topoget--AlertMesage------------", topo, data);
114
- topo.alarm.handleAlarmEvent(data);
151
+ topo.alarm.handleAlarmEvent(convertAlarmData(data));
115
152
  }
116
153
  });
117
154
  useTopoEventListener({
118
155
  type: 'risk',
119
156
  onMessage: function onMessage(data) {
120
- handleRiskData(data);
157
+ handleRiskData(topo, data);
121
158
  }
122
159
  });
123
160
  useTopoEventListener({
124
161
  type: 'relateTopoAlarm',
125
162
  onMessage: function onMessage(data) {
126
- handleRelateTopoAlarm(data);
163
+ handleRelateTopoAlarm(topo, data);
127
164
  }
128
165
  });
129
166
  }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * 分级链路
3
+ * @param {*} props
4
+ * @returns
5
+ */
6
+ export default function useCmpLinkAlarm(props) {
7
+ var topo = props.topo;
8
+
9
+ var _topo$store$useModelS = topo.store.useModelState('topoBizMod'),
10
+ attrsAndMetrics = _topo$store$useModelS.attrsAndMetrics;
11
+
12
+ var cmpLinkAlarmLevels = attrsAndMetrics.filter(function (item) {
13
+ return item.typeCode === 'network_link';
14
+ }) // 3:fault:重要故障; 4:urgently:紧急故障 』为红色
15
+ .filter(function (item) {
16
+ return ['3', '4'].includes(item.metrics.run_status);
17
+ }).map(function (item) {
18
+ return {
19
+ id: item.id,
20
+ level: 1
21
+ };
22
+ });
23
+ return {
24
+ cmpLinkAlarmLevels: cmpLinkAlarmLevels
25
+ };
26
+ }
27
+ ;
@@ -1,7 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  export default function useEventData(props) {
3
- var topo = props.topo;
4
- var topoDatas = topo.dataModel.useDatas();
3
+ var topo = props.topo; // const topoDatas = topo.dataModel.useDatas()
5
4
 
6
5
  var _topo$store$useModelS = topo.store.useModelState('topoAlarm'),
7
6
  risks = _topo$store$useModelS.risks,
@@ -1,7 +1,8 @@
1
- import { useEffect } from "react";
1
+ import { useEffect, useMemo } from "react";
2
2
  import rlog from "@riil-frontend/component-topology-utils/es/rlog";
3
3
  import { getElements } from "../../utils/htElementUtils";
4
4
  import { removeManageStatus, showManageStatus } from "../utils/showGraphManageStatusUtil";
5
+ import useCmpLinkAlarm from "./useCmpLinkAlarm";
5
6
  /**
6
7
  * 获取ci的最高告警级别
7
8
  * @param {Array} alarmList
@@ -9,16 +10,9 @@ import { removeManageStatus, showManageStatus } from "../utils/showGraphManageSt
9
10
  * @returns
10
11
  */
11
12
 
12
- function getCiAlarmLevelMap(alarmList, risks) {
13
+ function getCiAlarmLevelMap(alarmList) {
13
14
  var ciIdLevelMap = {};
14
- [].concat(alarmList, risks.map(function (item) {
15
- var _item$resourceId;
16
-
17
- return {
18
- id: (_item$resourceId = item.resourceId) !== null && _item$resourceId !== void 0 ? _item$resourceId : item.ciId,
19
- level: 5
20
- };
21
- })).forEach(function (item) {
15
+ alarmList.forEach(function (item) {
22
16
  var level = ciIdLevelMap[item.id]; // 优先显示高等级告警。值小的等级高
23
17
 
24
18
  if (!level || item.level < level) {
@@ -30,8 +24,8 @@ function getCiAlarmLevelMap(alarmList, risks) {
30
24
  return ciIdLevelMap;
31
25
  }
32
26
 
33
- function getGraphCiElementAlarmLevels(resources, alarmList, risks) {
34
- var ciIdLevelMap = getCiAlarmLevelMap(alarmList, risks);
27
+ function getGraphCiElementAlarmLevels(resources, alarmList) {
28
+ var ciIdLevelMap = getCiAlarmLevelMap(alarmList);
35
29
  return Object.keys(ciIdLevelMap).map(function (id) {
36
30
  return {
37
31
  id: id,
@@ -96,8 +90,33 @@ export default function useGraphAlarmDisplay(options) {
96
90
 
97
91
  var resources = topo.dataModel.useCis();
98
92
 
93
+ var _useCmpLinkAlarm = useCmpLinkAlarm({
94
+ topo: topo
95
+ }),
96
+ cmpLinkAlarmLevels = _useCmpLinkAlarm.cmpLinkAlarmLevels;
97
+
98
+ var cisEventLevel = useMemo(function () {
99
+ var levels = [].concat(alarmList || [], cmpLinkAlarmLevels, risks.map(function (item) {
100
+ var _item$resourceId;
101
+
102
+ return {
103
+ id: (_item$resourceId = item.resourceId) !== null && _item$resourceId !== void 0 ? _item$resourceId : item.ciId,
104
+ level: 5
105
+ };
106
+ }));
107
+ return getGraphCiElementAlarmLevels(resources, levels);
108
+ }, [resources, alarmList, cmpLinkAlarmLevels, risks]);
109
+
99
110
  function getCisEventLevel() {
100
- return getGraphCiElementAlarmLevels(resources, alarmList || [], risks);
111
+ var levels = [].concat(alarmList || [], cmpLinkAlarmLevels, risks.map(function (item) {
112
+ var _item$resourceId2;
113
+
114
+ return {
115
+ id: (_item$resourceId2 = item.resourceId) !== null && _item$resourceId2 !== void 0 ? _item$resourceId2 : item.ciId,
116
+ level: 5
117
+ };
118
+ }));
119
+ return getGraphCiElementAlarmLevels(resources, levels);
101
120
  }
102
121
 
103
122
  useEffect(function () {
@@ -152,5 +171,5 @@ export default function useGraphAlarmDisplay(options) {
152
171
  resources: resources
153
172
  });
154
173
  };
155
- }, [graphLoaded, resources, alarmSwitch, alarmList, risks, relateTopoAlarm]);
174
+ }, [graphLoaded, resources, alarmSwitch, alarmList, risks, relateTopoAlarm, cmpLinkAlarmLevels]);
156
175
  }