@riil-frontend/component-topology 12.0.0-dev.25 → 12.0.0-dev.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/index.js +2 -2
- package/es/core/hooks/useAlarm.js +119 -82
- package/es/core/hooks/useCmpLinkAlarm.js +62 -0
- package/es/core/hooks/useEventData.js +1 -2
- package/es/core/hooks/useGraphAlarmDisplay.js +34 -23
- package/es/core/models/Alarm.js +60 -145
- package/es/core/models/AttributeMetricDisplay.js +1 -1
- package/es/core/models/TopoApp.js +1 -1
- package/es/core/viewer/components/titlebar/widgets/AlarmButton.js +1 -5
- package/es/utils/ciRefAttributeTranslateUtil.js +1 -1
- package/lib/core/hooks/useAlarm.js +118 -80
- package/lib/core/hooks/useCmpLinkAlarm.js +71 -0
- package/lib/core/hooks/useEventData.js +1 -2
- package/lib/core/hooks/useGraphAlarmDisplay.js +34 -22
- package/lib/core/models/Alarm.js +60 -147
- package/lib/core/models/AttributeMetricDisplay.js +1 -1
- package/lib/core/models/TopoApp.js +1 -1
- package/lib/core/viewer/components/titlebar/widgets/AlarmButton.js +1 -5
- package/lib/utils/ciRefAttributeTranslateUtil.js +1 -1
- package/package.json +2 -2
@@ -15,129 +15,167 @@ var _useGraphAlarmDisplay = _interopRequireDefault(require("./useGraphAlarmDispl
|
|
15
15
|
|
16
16
|
var _useTopoEventListener = _interopRequireDefault(require("./useTopoEventListener"));
|
17
17
|
|
18
|
+
// 告警在活状态
|
19
|
+
var showAlarmStatus = ["toDeal", "dealing", "change", "woDealing"];
|
18
20
|
/**
|
19
|
-
*
|
20
|
-
*
|
21
|
-
* @
|
21
|
+
* 告警是否在活
|
22
|
+
* @param {*} alarm
|
23
|
+
* @returns
|
22
24
|
*/
|
23
|
-
function useAlarm(options) {
|
24
|
-
var topo = options.topo;
|
25
|
-
var store = topo.store;
|
26
25
|
|
27
|
-
|
28
|
-
|
29
|
-
|
26
|
+
var isAlarmAlive = function isAlarmAlive(alarm) {
|
27
|
+
return showAlarmStatus.indexOf(alarm.status) >= 0;
|
28
|
+
};
|
30
29
|
|
31
|
-
|
32
|
-
|
33
|
-
alarmSwitch: alarmSwitch
|
34
|
-
});
|
30
|
+
var handleRiskData = function handleRiskData(topo, receivedData) {
|
31
|
+
var _risks, _topo$viewProps, _topo$viewProps2;
|
35
32
|
|
36
|
-
|
37
|
-
|
33
|
+
// 非在活状态:
|
34
|
+
// 已修复 recovered
|
35
|
+
// 已关闭 closed
|
36
|
+
var prevRisks = topo.store.getModelState('topoAlarm').risks;
|
38
37
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
var prevRisks = topo.store.getModelState('topoAlarm').risks;
|
38
|
+
var isLiveRisk = function isLiveRisk(data) {
|
39
|
+
return ['recovered', 'closed'].indexOf(data.status) === -1;
|
40
|
+
};
|
43
41
|
|
44
|
-
|
45
|
-
|
46
|
-
};
|
42
|
+
var hasCiPermission = function hasCiPermission(data) {
|
43
|
+
var _data$resourceId;
|
47
44
|
|
48
|
-
var
|
49
|
-
|
45
|
+
var ciId = (_data$resourceId = data.resourceId) !== null && _data$resourceId !== void 0 ? _data$resourceId : data.ciId;
|
46
|
+
var ci = topo.dataModel.getDataById(ciId);
|
47
|
+
return !!(ci !== null && ci !== void 0 && ci.operation);
|
48
|
+
}; // 合并
|
50
49
|
|
51
|
-
var ciId = (_data$resourceId = data.resourceId) !== null && _data$resourceId !== void 0 ? _data$resourceId : data.ciId;
|
52
|
-
var ci = topo.dataModel.getDataById(ciId);
|
53
|
-
return ci && ci.operation;
|
54
|
-
}; // 合并
|
55
50
|
|
51
|
+
var risks = prevRisks.map(function (risk) {
|
52
|
+
var newRisk = receivedData.find(function (item) {
|
53
|
+
return item.id === risk.id;
|
54
|
+
});
|
55
|
+
return newRisk || risk;
|
56
|
+
}); // 新的
|
56
57
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
}); // 新的
|
58
|
+
var addRisks = receivedData.filter(function (risk) {
|
59
|
+
return !prevRisks.find(function (item) {
|
60
|
+
return item.id === risk.id;
|
61
|
+
});
|
62
|
+
}).filter(hasCiPermission);
|
63
63
|
|
64
|
-
|
65
|
-
return !prevRisks.find(function (item) {
|
66
|
-
return item.id === risk.id;
|
67
|
-
});
|
68
|
-
}).filter(hasCiPermission);
|
64
|
+
(_risks = risks).push.apply(_risks, addRisks); // 过滤掉无权限、非在活的
|
69
65
|
|
70
|
-
(_risks = risks).push.apply(_risks, addRisks); // 过滤掉无权限、非在活的
|
71
66
|
|
67
|
+
risks = risks.filter(isLiveRisk).filter(hasCiPermission).sort(function (a, b) {
|
68
|
+
return a.executeTime - b.executeTime;
|
69
|
+
});
|
72
70
|
|
73
|
-
|
74
|
-
|
75
|
-
|
71
|
+
_rlog["default"].debug('更新风险', {
|
72
|
+
prevRisks: prevRisks,
|
73
|
+
receivedData: receivedData,
|
74
|
+
risks: risks
|
75
|
+
});
|
76
|
+
|
77
|
+
topo.store.getModelDispatchers('topoAlarm').update({
|
78
|
+
risks: risks
|
79
|
+
}); // 获取配置
|
80
|
+
|
81
|
+
var _topo$store$getModelS = topo.store.getModelState('displayConfig'),
|
82
|
+
alarmSwitch = _topo$store$getModelS.alarmSwitch,
|
83
|
+
alarmListDefaultOpen = _topo$store$getModelS.alarmListDefaultOpen; // 告警静默
|
76
84
|
|
77
|
-
_rlog["default"].debug('更新风险', {
|
78
|
-
prevRisks: prevRisks,
|
79
|
-
receivedData: receivedData,
|
80
|
-
risks: risks
|
81
|
-
});
|
82
85
|
|
83
|
-
|
84
|
-
|
86
|
+
if (alarmSwitch === false) {
|
87
|
+
return;
|
88
|
+
} // 告警列表
|
89
|
+
|
90
|
+
|
91
|
+
if (addRisks.length && alarmListDefaultOpen) {
|
92
|
+
topo.alarm.updateState({
|
93
|
+
alarmPanelIsOpen: true
|
85
94
|
});
|
95
|
+
}
|
86
96
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
}
|
97
|
+
if ((_topo$viewProps = topo.viewProps) !== null && _topo$viewProps !== void 0 && _topo$viewProps.onRisk) {
|
98
|
+
topo.viewProps.onRisk(risks);
|
99
|
+
}
|
91
100
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
101
|
+
if ((_topo$viewProps2 = topo.viewProps) !== null && _topo$viewProps2 !== void 0 && _topo$viewProps2.onResourceEvent) {
|
102
|
+
topo.viewProps.onResourceEvent(topo.alarm.getEvents());
|
103
|
+
}
|
104
|
+
};
|
105
|
+
|
106
|
+
var handleRelateTopoAlarm = function handleRelateTopoAlarm(topo, data) {
|
107
|
+
var relateTopoAlarm = (0, _extends2["default"])({}, topo.store.getModelState('topoAlarm').relateTopoAlarm);
|
108
|
+
data.forEach(function (item) {
|
109
|
+
relateTopoAlarm[item.topoId] = item.alertLevel;
|
110
|
+
});
|
111
|
+
topo.store.getModelDispatchers('topoAlarm').update({
|
112
|
+
relateTopoAlarm: relateTopoAlarm
|
113
|
+
});
|
114
|
+
|
115
|
+
_rlog["default"].debug("\u5173\u8054\u62D3\u6251\u544A\u8B66\uFF1A\u6536\u5230 " + data.length, {
|
116
|
+
received: data,
|
117
|
+
all: relateTopoAlarm
|
118
|
+
});
|
119
|
+
};
|
120
|
+
/**
|
121
|
+
* 处理分级告警
|
122
|
+
* @param {*} alarms
|
123
|
+
* @returns
|
124
|
+
*/
|
97
125
|
|
98
|
-
if ((_topo$viewProps = topo.viewProps) !== null && _topo$viewProps !== void 0 && _topo$viewProps.onRisk) {
|
99
|
-
topo.viewProps.onRisk(risks);
|
100
|
-
}
|
101
126
|
|
102
|
-
|
103
|
-
|
127
|
+
function convertAlarmData(alarms) {
|
128
|
+
return alarms.map(function (alarm) {
|
129
|
+
var resourceId = alarm.resourceId; // 分级资源id转换
|
130
|
+
|
131
|
+
if (alarm.cmpAlertId) {
|
132
|
+
resourceId = "sub:" + alarm.mainCiId;
|
104
133
|
}
|
105
|
-
};
|
106
134
|
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
topo.store.getModelDispatchers('topoAlarm').update({
|
113
|
-
relateTopoAlarm: relateTopoAlarm
|
135
|
+
return (0, _extends2["default"])({}, alarm, {
|
136
|
+
// 数据id
|
137
|
+
resourceId: resourceId,
|
138
|
+
// 是否在活
|
139
|
+
alive: isAlarmAlive(alarm)
|
114
140
|
});
|
141
|
+
});
|
142
|
+
}
|
143
|
+
/**
|
144
|
+
*
|
145
|
+
*
|
146
|
+
* @param {*} options
|
147
|
+
*/
|
115
148
|
|
116
|
-
_rlog["default"].debug("\u5173\u8054\u62D3\u6251\u544A\u8B66\uFF1A\u6536\u5230 " + data.length, {
|
117
|
-
received: data,
|
118
|
-
all: relateTopoAlarm
|
119
|
-
});
|
120
|
-
}; // 订阅消息
|
121
149
|
|
150
|
+
function useAlarm(options) {
|
151
|
+
var topo = options.topo;
|
152
|
+
|
153
|
+
var _topo$store$useModelS = topo.store.useModelState('displayConfig'),
|
154
|
+
alarmSwitch = _topo$store$useModelS.alarmSwitch;
|
155
|
+
|
156
|
+
(0, _useGraphAlarmDisplay["default"])({
|
157
|
+
topo: topo,
|
158
|
+
alarmSwitch: alarmSwitch
|
159
|
+
}); // 订阅消息
|
122
160
|
|
123
161
|
(0, _useTopoEventListener["default"])({
|
124
162
|
type: 'alarm',
|
125
163
|
onMessage: function onMessage(data) {
|
126
164
|
_rlog["default"].debug("Topoget--AlertMesage------------", topo, data);
|
127
165
|
|
128
|
-
topo.alarm.handleAlarmEvent(data);
|
166
|
+
topo.alarm.handleAlarmEvent(convertAlarmData(data));
|
129
167
|
}
|
130
168
|
});
|
131
169
|
(0, _useTopoEventListener["default"])({
|
132
170
|
type: 'risk',
|
133
171
|
onMessage: function onMessage(data) {
|
134
|
-
handleRiskData(data);
|
172
|
+
handleRiskData(topo, data);
|
135
173
|
}
|
136
174
|
});
|
137
175
|
(0, _useTopoEventListener["default"])({
|
138
176
|
type: 'relateTopoAlarm',
|
139
177
|
onMessage: function onMessage(data) {
|
140
|
-
handleRelateTopoAlarm(data);
|
178
|
+
handleRelateTopoAlarm(topo, data);
|
141
179
|
}
|
142
180
|
});
|
143
181
|
}
|
@@ -0,0 +1,71 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
exports.__esModule = true;
|
6
|
+
exports["default"] = useCmpLinkAlarm;
|
7
|
+
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
9
|
+
|
10
|
+
var _react = require("react");
|
11
|
+
|
12
|
+
function addCmpLinkOfflineStatusForDisplayLineColor(cis, cmpLinkRunStatusList) {
|
13
|
+
return cis.map(function (ci) {
|
14
|
+
var cmpLinkRunStatusData = cmpLinkRunStatusList.find(function (item) {
|
15
|
+
return item.id === ci.id;
|
16
|
+
});
|
17
|
+
|
18
|
+
if (cmpLinkRunStatusData) {
|
19
|
+
return (0, _extends2["default"])({}, ci, {
|
20
|
+
manageStatus: cmpLinkRunStatusData.runStatus === '2' ? 0 : 3
|
21
|
+
});
|
22
|
+
}
|
23
|
+
|
24
|
+
return ci;
|
25
|
+
});
|
26
|
+
}
|
27
|
+
/**
|
28
|
+
* 分级链路下級鏈路
|
29
|
+
* @param {*} props
|
30
|
+
* @returns
|
31
|
+
*/
|
32
|
+
|
33
|
+
|
34
|
+
function useCmpLinkAlarm(props) {
|
35
|
+
var topo = props.topo;
|
36
|
+
|
37
|
+
var _topo$store$useModelS = topo.store.useModelState('topoBizMod'),
|
38
|
+
attrsAndMetrics = _topo$store$useModelS.attrsAndMetrics;
|
39
|
+
|
40
|
+
var cmpLinks = (0, _react.useMemo)(function () {
|
41
|
+
return attrsAndMetrics.filter(function (item) {
|
42
|
+
return item.typeCode === 'network_link';
|
43
|
+
});
|
44
|
+
}, [attrsAndMetrics]);
|
45
|
+
var cmpLinkRunStatus = (0, _react.useMemo)(function () {
|
46
|
+
return cmpLinks.map(function (item) {
|
47
|
+
return {
|
48
|
+
id: item.id,
|
49
|
+
runStatus: item.metrics.run_status
|
50
|
+
};
|
51
|
+
});
|
52
|
+
}, [cmpLinks]);
|
53
|
+
var cmpLinkAlarmLevels = (0, _react.useMemo)(function () {
|
54
|
+
return cmpLinkRunStatus // 3:fault:重要故障; 4:urgently:紧急故障 』为红色
|
55
|
+
.filter(function (item) {
|
56
|
+
return ['3', '4'].includes(item.runStatus);
|
57
|
+
}).map(function (item) {
|
58
|
+
return {
|
59
|
+
id: item.id,
|
60
|
+
level: 1
|
61
|
+
};
|
62
|
+
});
|
63
|
+
}, [cmpLinkRunStatus]);
|
64
|
+
return {
|
65
|
+
cmpLinkRunStatus: cmpLinkRunStatus,
|
66
|
+
cmpLinkAlarmLevels: cmpLinkAlarmLevels,
|
67
|
+
addCmpLinkOfflineStatusForDisplayLineColor: addCmpLinkOfflineStatusForDisplayLineColor
|
68
|
+
};
|
69
|
+
}
|
70
|
+
|
71
|
+
;
|
@@ -8,8 +8,7 @@ exports["default"] = useEventData;
|
|
8
8
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
9
9
|
|
10
10
|
function useEventData(props) {
|
11
|
-
var topo = props.topo;
|
12
|
-
var topoDatas = topo.dataModel.useDatas();
|
11
|
+
var topo = props.topo; // const topoDatas = topo.dataModel.useDatas()
|
13
12
|
|
14
13
|
var _topo$store$useModelS = topo.store.useModelState('topoAlarm'),
|
15
14
|
risks = _topo$store$useModelS.risks,
|
@@ -13,22 +13,17 @@ var _htElementUtils = require("../../utils/htElementUtils");
|
|
13
13
|
|
14
14
|
var _showGraphManageStatusUtil = require("../utils/showGraphManageStatusUtil");
|
15
15
|
|
16
|
+
var _useCmpLinkAlarm2 = _interopRequireDefault(require("./useCmpLinkAlarm"));
|
17
|
+
|
16
18
|
/**
|
17
19
|
* 获取ci的最高告警级别
|
18
20
|
* @param {Array} alarmList
|
19
21
|
* @param {*} risks
|
20
22
|
* @returns
|
21
23
|
*/
|
22
|
-
function getCiAlarmLevelMap(alarmList
|
24
|
+
function getCiAlarmLevelMap(alarmList) {
|
23
25
|
var ciIdLevelMap = {};
|
24
|
-
|
25
|
-
var _item$resourceId;
|
26
|
-
|
27
|
-
return {
|
28
|
-
id: (_item$resourceId = item.resourceId) !== null && _item$resourceId !== void 0 ? _item$resourceId : item.ciId,
|
29
|
-
level: 5
|
30
|
-
};
|
31
|
-
})).forEach(function (item) {
|
26
|
+
alarmList.forEach(function (item) {
|
32
27
|
var level = ciIdLevelMap[item.id]; // 优先显示高等级告警。值小的等级高
|
33
28
|
|
34
29
|
if (!level || item.level < level) {
|
@@ -40,8 +35,8 @@ function getCiAlarmLevelMap(alarmList, risks) {
|
|
40
35
|
return ciIdLevelMap;
|
41
36
|
}
|
42
37
|
|
43
|
-
function getGraphCiElementAlarmLevels(resources, alarmList
|
44
|
-
var ciIdLevelMap = getCiAlarmLevelMap(alarmList
|
38
|
+
function getGraphCiElementAlarmLevels(resources, alarmList) {
|
39
|
+
var ciIdLevelMap = getCiAlarmLevelMap(alarmList);
|
45
40
|
return Object.keys(ciIdLevelMap).map(function (id) {
|
46
41
|
return {
|
47
42
|
id: id,
|
@@ -104,12 +99,30 @@ function useGraphAlarmDisplay(options) {
|
|
104
99
|
risks = _topo$alarm$useState.risks,
|
105
100
|
relateTopoAlarm = _topo$alarm$useState.relateTopoAlarm;
|
106
101
|
|
107
|
-
var
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
}
|
112
|
-
|
102
|
+
var oldResources = topo.dataModel.useCis(); // 分级拓扑下级链路特殊处理
|
103
|
+
|
104
|
+
var _useCmpLinkAlarm = (0, _useCmpLinkAlarm2["default"])({
|
105
|
+
topo: topo
|
106
|
+
}),
|
107
|
+
cmpLinkAlarmLevels = _useCmpLinkAlarm.cmpLinkAlarmLevels,
|
108
|
+
cmpLinkRunStatus = _useCmpLinkAlarm.cmpLinkRunStatus,
|
109
|
+
addCmpLinkOfflineStatusForDisplayLineColor = _useCmpLinkAlarm.addCmpLinkOfflineStatusForDisplayLineColor;
|
110
|
+
|
111
|
+
var resources = (0, _react.useMemo)(function () {
|
112
|
+
return addCmpLinkOfflineStatusForDisplayLineColor(oldResources, cmpLinkRunStatus);
|
113
|
+
}, [oldResources, cmpLinkRunStatus]); // ci告警级别
|
114
|
+
|
115
|
+
var cisEventLevel = (0, _react.useMemo)(function () {
|
116
|
+
var levels = [].concat(alarmList || [], cmpLinkAlarmLevels, risks.map(function (item) {
|
117
|
+
var _item$resourceId;
|
118
|
+
|
119
|
+
return {
|
120
|
+
id: (_item$resourceId = item.resourceId) !== null && _item$resourceId !== void 0 ? _item$resourceId : item.ciId,
|
121
|
+
level: 5
|
122
|
+
};
|
123
|
+
}));
|
124
|
+
return getGraphCiElementAlarmLevels(resources, levels);
|
125
|
+
}, [resources, alarmList, cmpLinkAlarmLevels, risks]);
|
113
126
|
(0, _react.useEffect)(function () {
|
114
127
|
showAlarm();
|
115
128
|
(0, _showGraphManageStatusUtil.showManageStatus)({
|
@@ -118,7 +131,7 @@ function useGraphAlarmDisplay(options) {
|
|
118
131
|
isEditMode: isEditMode,
|
119
132
|
graphLoaded: graphLoaded,
|
120
133
|
alarmSwitch: alarmSwitch,
|
121
|
-
cisEventLevel:
|
134
|
+
cisEventLevel: cisEventLevel
|
122
135
|
});
|
123
136
|
|
124
137
|
function showAlarm() {
|
@@ -130,12 +143,11 @@ function useGraphAlarmDisplay(options) {
|
|
130
143
|
// 告警静默
|
131
144
|
topo.view.loadAlarm([]);
|
132
145
|
return;
|
133
|
-
}
|
146
|
+
} // 关联拓扑告警
|
134
147
|
|
135
|
-
var finalAlarms = getCisEventLevel(); // 关联拓扑告警
|
136
148
|
|
137
149
|
var relateTopoAlarms = getRelateTopoNodeAlarmLevels(topo, relateTopoAlarm);
|
138
|
-
var elementsAlarmLevels = [].concat(
|
150
|
+
var elementsAlarmLevels = [].concat(cisEventLevel, relateTopoAlarms); // 将告警级别放入ht元素,便于测试
|
139
151
|
|
140
152
|
(0, _htElementUtils.getElements)(topo.getDataModel()).filter(function (item) {
|
141
153
|
return !!item.getTag();
|
@@ -164,5 +176,5 @@ function useGraphAlarmDisplay(options) {
|
|
164
176
|
resources: resources
|
165
177
|
});
|
166
178
|
};
|
167
|
-
}, [graphLoaded, resources, alarmSwitch,
|
179
|
+
}, [graphLoaded, resources, alarmSwitch, cisEventLevel, relateTopoAlarm]);
|
168
180
|
}
|