@riil-frontend/component-topology 12.0.0-dev.25 → 12.0.0-dev.27
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 +10 -10
- package/es/core/editor/components/Toolbar/widgets/Layout/index.js +2 -2
- package/es/core/editor/utils/edgeTypeStyleUtil.js +0 -23
- package/es/core/hooks/useAlarm.js +131 -81
- package/es/core/hooks/useCmpLinkAlarm.js +153 -0
- package/es/core/hooks/useEventData.js +1 -2
- package/es/core/hooks/useGraphAlarmDisplay.js +36 -23
- package/es/core/hooks/useTopoEdit.js +0 -4
- 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/models/utils/linkUtils.js +20 -13
- package/es/core/utils/metricUtil.js +8 -4
- package/es/core/viewer/components/plugins/ResourceDetail/components/ResourceOverview/ResourceOverview.js +11 -5
- package/es/core/viewer/components/titlebar/widgets/AlarmButton.js +1 -5
- package/es/networkTopo/store/topoCenter.js +260 -223
- package/es/style.js +1 -1
- package/es/utils/ciRefAttributeTranslateUtil.js +1 -1
- package/lib/core/editor/components/Toolbar/widgets/Layout/index.js +1 -1
- package/lib/core/editor/utils/edgeTypeStyleUtil.js +0 -25
- package/lib/core/hooks/useAlarm.js +130 -79
- package/lib/core/hooks/useCmpLinkAlarm.js +166 -0
- package/lib/core/hooks/useEventData.js +1 -2
- package/lib/core/hooks/useGraphAlarmDisplay.js +36 -22
- package/lib/core/hooks/useTopoEdit.js +0 -4
- 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/models/utils/linkUtils.js +21 -13
- package/lib/core/utils/metricUtil.js +8 -4
- package/lib/core/viewer/components/plugins/ResourceDetail/components/ResourceOverview/ResourceOverview.js +13 -5
- package/lib/core/viewer/components/titlebar/widgets/AlarmButton.js +1 -5
- package/lib/networkTopo/store/topoCenter.js +262 -225
- package/lib/style.js +1 -1
- package/lib/utils/ciRefAttributeTranslateUtil.js +1 -1
- package/package.json +2 -2
@@ -7,7 +7,7 @@ import React, { useState, useMemo } from 'react';
|
|
7
7
|
import LayoutSettings from "./components/LayoutSettings";
|
8
8
|
import WidgetBox from "../WidgetBox";
|
9
9
|
import DropdownButton from "../components/DropdownButton";
|
10
|
-
import { isGroup, isLayer } from "../../../../../../utils/htElementDataUtil";
|
10
|
+
import { isGroup, isLayer, isNode } from "../../../../../../utils/htElementDataUtil";
|
11
11
|
|
12
12
|
function Layout(props) {
|
13
13
|
var topo = props.topo,
|
@@ -147,7 +147,7 @@ function isLayoutEnabled(props) {
|
|
147
147
|
} //中心节点布局,选中一个节点不是分层的情况下,按钮亮起
|
148
148
|
|
149
149
|
|
150
|
-
if (topoShowType !== 'layers' && selection.length === 1) {
|
150
|
+
if (topoShowType !== 'layers' && selection.length === 1 && (isNode(selection[0]) || isGroup(selection[0]))) {
|
151
151
|
return true;
|
152
152
|
}
|
153
153
|
|
@@ -77,29 +77,6 @@ export function isNodeAllEdges(topo) {
|
|
77
77
|
});
|
78
78
|
return inEdges;
|
79
79
|
}
|
80
|
-
/**
|
81
|
-
* 遍历连线及子连线
|
82
|
-
* @param {*} topo
|
83
|
-
* @param {*} edges
|
84
|
-
* @param {*} operateEdgeFn
|
85
|
-
*/
|
86
|
-
|
87
|
-
export function loopEdgesAndChildren(topo, edges, operateEdgeFn) {
|
88
|
-
var htTopo = topo.getHtTopo();
|
89
|
-
edges.forEach(function (edge) {
|
90
|
-
operateEdgeFn(edge);
|
91
|
-
|
92
|
-
if (edge.isEdgeGroupAgent()) {
|
93
|
-
// 连线组折叠时同时设置子连线
|
94
|
-
var edgeChildren = edge.getEdgeGroup().getEdges().toArray();
|
95
|
-
htTopo.toggleEdgeGroup(edge.getSource(), edge.getTarget(), true);
|
96
|
-
edgeChildren.forEach(function (edgeChild) {
|
97
|
-
operateEdgeFn(edgeChild);
|
98
|
-
});
|
99
|
-
htTopo.toggleEdgeGroup(edge.getSource(), edge.getTarget(), false);
|
100
|
-
}
|
101
|
-
});
|
102
|
-
}
|
103
80
|
/**
|
104
81
|
* 设置连线及子连线。带回退事务控制
|
105
82
|
* @param {*} topo
|
@@ -2,128 +2,178 @@ 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
|
-
* @
|
9
|
+
* 告警是否在活
|
10
|
+
* @param {*} alarm
|
11
|
+
* @returns
|
10
12
|
*/
|
11
13
|
|
12
|
-
|
13
|
-
|
14
|
-
|
14
|
+
var isAlarmAlive = function isAlarmAlive(alarm) {
|
15
|
+
return showAlarmStatus.indexOf(alarm.status) >= 0;
|
16
|
+
};
|
15
17
|
|
16
|
-
|
17
|
-
|
18
|
-
alarmListDefaultOpen = _topo$store$useModelS.alarmListDefaultOpen;
|
18
|
+
var handleRiskData = function handleRiskData(topo, receivedData) {
|
19
|
+
var _risks, _topo$viewProps, _topo$viewProps2;
|
19
20
|
|
20
|
-
|
21
|
-
|
22
|
-
|
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
|
+
};
|
29
|
+
|
30
|
+
var hasCiPermission = function hasCiPermission(data) {
|
31
|
+
var _data$resourceId;
|
24
32
|
|
25
|
-
|
26
|
-
var
|
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
|
+
}; // 合并
|
27
37
|
|
28
|
-
// 非在活状态:
|
29
|
-
// 已修复 recovered
|
30
|
-
// 已关闭 closed
|
31
|
-
var prevRisks = topo.store.getModelState('topoAlarm').risks;
|
32
38
|
|
33
|
-
|
34
|
-
|
35
|
-
|
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
|
+
}); // 新的
|
36
45
|
|
37
|
-
|
38
|
-
|
46
|
+
var addRisks = receivedData.filter(function (risk) {
|
47
|
+
return !prevRisks.find(function (item) {
|
48
|
+
return item.id === risk.id;
|
49
|
+
});
|
50
|
+
}).filter(hasCiPermission);
|
39
51
|
|
40
|
-
|
41
|
-
var ci = topo.dataModel.getDataById(ciId);
|
42
|
-
return ci && ci.operation;
|
43
|
-
}; // 合并
|
52
|
+
(_risks = risks).push.apply(_risks, addRisks); // 过滤掉无权限、非在活的
|
44
53
|
|
45
54
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
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
|
+
}); // 获取配置
|
52
66
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
});
|
57
|
-
}).filter(hasCiPermission);
|
67
|
+
var _topo$store$getModelS = topo.store.getModelState('displayConfig'),
|
68
|
+
alarmSwitch = _topo$store$getModelS.alarmSwitch,
|
69
|
+
alarmListDefaultOpen = _topo$store$getModelS.alarmListDefaultOpen; // 告警静默
|
58
70
|
|
59
|
-
(_risks = risks).push.apply(_risks, addRisks); // 过滤掉无权限、非在活的
|
60
71
|
|
72
|
+
if (alarmSwitch === false) {
|
73
|
+
return;
|
74
|
+
} // 告警列表
|
61
75
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
prevRisks: prevRisks,
|
67
|
-
receivedData: receivedData,
|
68
|
-
risks: risks
|
69
|
-
});
|
70
|
-
topo.store.getModelDispatchers('topoAlarm').update({
|
71
|
-
risks: risks
|
76
|
+
|
77
|
+
if (addRisks.length && alarmListDefaultOpen) {
|
78
|
+
topo.alarm.updateState({
|
79
|
+
alarmPanelIsOpen: true
|
72
80
|
});
|
81
|
+
}
|
73
82
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
}
|
83
|
+
if ((_topo$viewProps = topo.viewProps) !== null && _topo$viewProps !== void 0 && _topo$viewProps.onRisk) {
|
84
|
+
topo.viewProps.onRisk(risks);
|
85
|
+
}
|
78
86
|
|
79
|
-
|
80
|
-
|
81
|
-
|
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
|
+
};
|
91
|
+
/**
|
92
|
+
* 关联拓扑告警级别消息处理
|
93
|
+
* @param {*} topo
|
94
|
+
* @param {*} data
|
95
|
+
*/
|
84
96
|
|
85
|
-
if ((_topo$viewProps = topo.viewProps) !== null && _topo$viewProps !== void 0 && _topo$viewProps.onRisk) {
|
86
|
-
topo.viewProps.onRisk(risks);
|
87
|
-
}
|
88
97
|
|
89
|
-
|
90
|
-
|
91
|
-
}
|
92
|
-
};
|
98
|
+
var handleRelateTopoAlarm = function handleRelateTopoAlarm(topo, data) {
|
99
|
+
var relateTopoAlarm = _extends({}, topo.store.getModelState('topoAlarm').relateTopoAlarm);
|
93
100
|
|
94
|
-
|
95
|
-
var
|
101
|
+
data.forEach(function (item) {
|
102
|
+
var alertLevel = item.alertLevel;
|
96
103
|
|
97
|
-
|
104
|
+
if (alertLevel === -1) {
|
105
|
+
// -1表示删除
|
106
|
+
delete relateTopoAlarm[item.topoId];
|
107
|
+
} else {
|
98
108
|
relateTopoAlarm[item.topoId] = item.alertLevel;
|
109
|
+
}
|
110
|
+
});
|
111
|
+
topo.store.getModelDispatchers('topoAlarm').update({
|
112
|
+
relateTopoAlarm: relateTopoAlarm
|
113
|
+
});
|
114
|
+
rlog.debug("\u5173\u8054\u62D3\u6251\u544A\u8B66\uFF1A\u6536\u5230 " + data.length, {
|
115
|
+
received: data,
|
116
|
+
all: relateTopoAlarm
|
117
|
+
});
|
118
|
+
};
|
119
|
+
/**
|
120
|
+
* 处理分级告警
|
121
|
+
* @param {*} alarms
|
122
|
+
* @returns
|
123
|
+
*/
|
124
|
+
|
125
|
+
|
126
|
+
function convertAlarmData(alarms) {
|
127
|
+
return alarms.map(function (alarm) {
|
128
|
+
var resourceId = alarm.resourceId; // 分级资源id转换
|
129
|
+
|
130
|
+
if (alarm.cmpAlertId) {
|
131
|
+
resourceId = "sub:" + alarm.mainCiId;
|
132
|
+
}
|
133
|
+
|
134
|
+
return _extends({}, alarm, {
|
135
|
+
// 数据id
|
136
|
+
resourceId: resourceId,
|
137
|
+
// 是否在活
|
138
|
+
alive: isAlarmAlive(alarm)
|
99
139
|
});
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
140
|
+
});
|
141
|
+
}
|
142
|
+
/**
|
143
|
+
*
|
144
|
+
*
|
145
|
+
* @param {*} options
|
146
|
+
*/
|
147
|
+
|
148
|
+
|
149
|
+
export default function useAlarm(options) {
|
150
|
+
var topo = options.topo;
|
151
|
+
|
152
|
+
var _topo$store$useModelS = topo.store.useModelState('displayConfig'),
|
153
|
+
alarmSwitch = _topo$store$useModelS.alarmSwitch;
|
108
154
|
|
155
|
+
useGraphAlarmDisplay({
|
156
|
+
topo: topo,
|
157
|
+
alarmSwitch: alarmSwitch
|
158
|
+
}); // 订阅消息
|
109
159
|
|
110
160
|
useTopoEventListener({
|
111
161
|
type: 'alarm',
|
112
162
|
onMessage: function onMessage(data) {
|
113
163
|
rlog.debug("Topoget--AlertMesage------------", topo, data);
|
114
|
-
topo.alarm.handleAlarmEvent(data);
|
164
|
+
topo.alarm.handleAlarmEvent(convertAlarmData(data));
|
115
165
|
}
|
116
166
|
});
|
117
167
|
useTopoEventListener({
|
118
168
|
type: 'risk',
|
119
169
|
onMessage: function onMessage(data) {
|
120
|
-
handleRiskData(data);
|
170
|
+
handleRiskData(topo, data);
|
121
171
|
}
|
122
172
|
});
|
123
173
|
useTopoEventListener({
|
124
174
|
type: 'relateTopoAlarm',
|
125
175
|
onMessage: function onMessage(data) {
|
126
|
-
handleRelateTopoAlarm(data);
|
176
|
+
handleRelateTopoAlarm(topo, data);
|
127
177
|
}
|
128
178
|
});
|
129
179
|
}
|
@@ -0,0 +1,153 @@
|
|
1
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
2
|
+
import _extends from "@babel/runtime/helpers/extends";
|
3
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
4
|
+
import { useEffect, useState, useMemo } from "react";
|
5
|
+
import { useRequest } from 'ahooks';
|
6
|
+
import DictCache from "../models/cache/DictCache";
|
7
|
+
|
8
|
+
function addCmpLinkOfflineStatusForDisplayLineColor(cis, cmpLinkRunStatusList) {
|
9
|
+
return cis.map(function (ci) {
|
10
|
+
var cmpLinkRunStatusData = cmpLinkRunStatusList.find(function (item) {
|
11
|
+
return item.id === ci.id;
|
12
|
+
});
|
13
|
+
|
14
|
+
if (cmpLinkRunStatusData) {
|
15
|
+
return _extends({}, ci, {
|
16
|
+
manageStatus: cmpLinkRunStatusData.runStatus === '2' ? 0 : 3
|
17
|
+
});
|
18
|
+
}
|
19
|
+
|
20
|
+
return ci;
|
21
|
+
});
|
22
|
+
}
|
23
|
+
|
24
|
+
function getCmpLinIds(datas) {
|
25
|
+
var linkIds = datas.filter(function (item) {
|
26
|
+
return item.isSubResource && item.typeCode === 'network_link';
|
27
|
+
}).map(function (item) {
|
28
|
+
return item.ciId;
|
29
|
+
});
|
30
|
+
return linkIds;
|
31
|
+
}
|
32
|
+
/**
|
33
|
+
* 分级链路下級鏈路
|
34
|
+
* @param {*} props
|
35
|
+
* @returns
|
36
|
+
*/
|
37
|
+
|
38
|
+
|
39
|
+
export default function useCmpLinkAlarm(props) {
|
40
|
+
var topo = props.topo,
|
41
|
+
resources = props.resources,
|
42
|
+
graphLoaded = props.graphLoaded;
|
43
|
+
|
44
|
+
var _useState = useState(getCmpLinIds(resources)),
|
45
|
+
cmpLinkIds = _useState[0],
|
46
|
+
setCmpLinkIds = _useState[1];
|
47
|
+
|
48
|
+
var _useState2 = useState([]),
|
49
|
+
cmpLinkRunStatus = _useState2[0],
|
50
|
+
setCmpLinkRunStatus = _useState2[1];
|
51
|
+
|
52
|
+
var cmpLinkAlarmLevels = useMemo(function () {
|
53
|
+
return cmpLinkRunStatus // 3:fault:重要故障; 4:urgently:紧急故障 』为红色
|
54
|
+
.filter(function (item) {
|
55
|
+
return ['3', '4'].includes(item.runStatus);
|
56
|
+
}).map(function (item) {
|
57
|
+
return {
|
58
|
+
id: item.id,
|
59
|
+
level: 1
|
60
|
+
};
|
61
|
+
});
|
62
|
+
}, [cmpLinkRunStatus]);
|
63
|
+
useEffect(function () {
|
64
|
+
var ids = getCmpLinIds(resources);
|
65
|
+
|
66
|
+
if (cmpLinkIds.join(',') !== ids.join(',')) {
|
67
|
+
setCmpLinkIds(ids);
|
68
|
+
}
|
69
|
+
}, [resources]);
|
70
|
+
|
71
|
+
function getCmpLinkRunStatus(_x) {
|
72
|
+
return _getCmpLinkRunStatus.apply(this, arguments);
|
73
|
+
} // 轮询hooks
|
74
|
+
|
75
|
+
|
76
|
+
function _getCmpLinkRunStatus() {
|
77
|
+
_getCmpLinkRunStatus = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(ids) {
|
78
|
+
var _yield$Promise$all, ciMetricsResult;
|
79
|
+
|
80
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
81
|
+
while (1) switch (_context.prev = _context.next) {
|
82
|
+
case 0:
|
83
|
+
if (ids.length) {
|
84
|
+
_context.next = 2;
|
85
|
+
break;
|
86
|
+
}
|
87
|
+
|
88
|
+
return _context.abrupt("return", []);
|
89
|
+
|
90
|
+
case 2:
|
91
|
+
_context.t0 = Promise;
|
92
|
+
_context.t1 = // 查询指标值
|
93
|
+
topo.serverApi.ciInfo.batchQueryCiInfo({
|
94
|
+
ciId: [],
|
95
|
+
codes: ['run_status'],
|
96
|
+
relationId: ids.map(function (id) {
|
97
|
+
return {
|
98
|
+
ciId: id,
|
99
|
+
operation: "delete"
|
100
|
+
};
|
101
|
+
})
|
102
|
+
});
|
103
|
+
_context.next = 6;
|
104
|
+
return DictCache.init();
|
105
|
+
|
106
|
+
case 6:
|
107
|
+
_context.t2 = _context.sent;
|
108
|
+
_context.t3 = [_context.t1, _context.t2];
|
109
|
+
_context.next = 10;
|
110
|
+
return _context.t0.all.call(_context.t0, _context.t3);
|
111
|
+
|
112
|
+
case 10:
|
113
|
+
_yield$Promise$all = _context.sent;
|
114
|
+
ciMetricsResult = _yield$Promise$all[0];
|
115
|
+
return _context.abrupt("return", ciMetricsResult);
|
116
|
+
|
117
|
+
case 13:
|
118
|
+
case "end":
|
119
|
+
return _context.stop();
|
120
|
+
}
|
121
|
+
}, _callee);
|
122
|
+
}));
|
123
|
+
return _getCmpLinkRunStatus.apply(this, arguments);
|
124
|
+
}
|
125
|
+
|
126
|
+
var _useRequest = useRequest(getCmpLinkRunStatus, {
|
127
|
+
pollingInterval: 60 * 1000,
|
128
|
+
pollingWhenHidden: false,
|
129
|
+
// debounceInterval: 200,
|
130
|
+
manual: true,
|
131
|
+
onSuccess: function onSuccess(result) {
|
132
|
+
setCmpLinkRunStatus(result.map(function (item) {
|
133
|
+
return {
|
134
|
+
id: "sub:" + item.id,
|
135
|
+
runStatus: item.metrics.run_status
|
136
|
+
};
|
137
|
+
}));
|
138
|
+
}
|
139
|
+
}),
|
140
|
+
run = _useRequest.run;
|
141
|
+
|
142
|
+
useEffect(function () {
|
143
|
+
if (graphLoaded) {
|
144
|
+
run(cmpLinkIds);
|
145
|
+
}
|
146
|
+
}, [graphLoaded, cmpLinkIds]);
|
147
|
+
return {
|
148
|
+
cmpLinkRunStatus: cmpLinkRunStatus,
|
149
|
+
cmpLinkAlarmLevels: cmpLinkAlarmLevels,
|
150
|
+
addCmpLinkOfflineStatusForDisplayLineColor: addCmpLinkOfflineStatusForDisplayLineColor
|
151
|
+
};
|
152
|
+
}
|
153
|
+
;
|
@@ -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
|
13
|
+
function getCiAlarmLevelMap(alarmList) {
|
13
14
|
var ciIdLevelMap = {};
|
14
|
-
|
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
|
34
|
-
var ciIdLevelMap = getCiAlarmLevelMap(alarmList
|
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,
|
@@ -94,12 +88,32 @@ export default function useGraphAlarmDisplay(options) {
|
|
94
88
|
risks = _topo$alarm$useState.risks,
|
95
89
|
relateTopoAlarm = _topo$alarm$useState.relateTopoAlarm;
|
96
90
|
|
97
|
-
var
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
91
|
+
var oldResources = topo.dataModel.useCis(); // 分级拓扑下级链路特殊处理
|
92
|
+
|
93
|
+
var _useCmpLinkAlarm = useCmpLinkAlarm({
|
94
|
+
topo: topo,
|
95
|
+
resources: oldResources,
|
96
|
+
graphLoaded: graphLoaded
|
97
|
+
}),
|
98
|
+
cmpLinkAlarmLevels = _useCmpLinkAlarm.cmpLinkAlarmLevels,
|
99
|
+
cmpLinkRunStatus = _useCmpLinkAlarm.cmpLinkRunStatus,
|
100
|
+
addCmpLinkOfflineStatusForDisplayLineColor = _useCmpLinkAlarm.addCmpLinkOfflineStatusForDisplayLineColor;
|
101
|
+
|
102
|
+
var resources = useMemo(function () {
|
103
|
+
return addCmpLinkOfflineStatusForDisplayLineColor(oldResources, cmpLinkRunStatus);
|
104
|
+
}, [oldResources, cmpLinkRunStatus]); // ci告警级别
|
105
|
+
|
106
|
+
var cisEventLevel = useMemo(function () {
|
107
|
+
var levels = [].concat(alarmList || [], cmpLinkAlarmLevels, risks.map(function (item) {
|
108
|
+
var _item$resourceId;
|
109
|
+
|
110
|
+
return {
|
111
|
+
id: (_item$resourceId = item.resourceId) !== null && _item$resourceId !== void 0 ? _item$resourceId : item.ciId,
|
112
|
+
level: 5
|
113
|
+
};
|
114
|
+
}));
|
115
|
+
return getGraphCiElementAlarmLevels(resources, levels);
|
116
|
+
}, [resources, alarmList, cmpLinkAlarmLevels, risks]);
|
103
117
|
useEffect(function () {
|
104
118
|
showAlarm();
|
105
119
|
showManageStatus({
|
@@ -108,7 +122,7 @@ export default function useGraphAlarmDisplay(options) {
|
|
108
122
|
isEditMode: isEditMode,
|
109
123
|
graphLoaded: graphLoaded,
|
110
124
|
alarmSwitch: alarmSwitch,
|
111
|
-
cisEventLevel:
|
125
|
+
cisEventLevel: cisEventLevel
|
112
126
|
});
|
113
127
|
|
114
128
|
function showAlarm() {
|
@@ -120,12 +134,11 @@ export default function useGraphAlarmDisplay(options) {
|
|
120
134
|
// 告警静默
|
121
135
|
topo.view.loadAlarm([]);
|
122
136
|
return;
|
123
|
-
}
|
137
|
+
} // 关联拓扑告警
|
124
138
|
|
125
|
-
var finalAlarms = getCisEventLevel(); // 关联拓扑告警
|
126
139
|
|
127
140
|
var relateTopoAlarms = getRelateTopoNodeAlarmLevels(topo, relateTopoAlarm);
|
128
|
-
var elementsAlarmLevels = [].concat(
|
141
|
+
var elementsAlarmLevels = [].concat(cisEventLevel, relateTopoAlarms); // 将告警级别放入ht元素,便于测试
|
129
142
|
|
130
143
|
getElements(topo.getDataModel()).filter(function (item) {
|
131
144
|
return !!item.getTag();
|
@@ -152,5 +165,5 @@ export default function useGraphAlarmDisplay(options) {
|
|
152
165
|
resources: resources
|
153
166
|
});
|
154
167
|
};
|
155
|
-
}, [graphLoaded, resources, alarmSwitch,
|
168
|
+
}, [graphLoaded, resources, alarmSwitch, cisEventLevel, relateTopoAlarm]);
|
156
169
|
}
|
@@ -95,10 +95,6 @@ var useTopoEdit = function useTopoEdit(params) {
|
|
95
95
|
return topoDispatchers.setTopoType(TPL_TREE);
|
96
96
|
|
97
97
|
case 7:
|
98
|
-
// 更新配置
|
99
|
-
// resourceConfig.updateConfig(config);
|
100
|
-
// 更新配置对应的资源、链路
|
101
|
-
// editDispatchers.fetchDataByConfig();
|
102
98
|
topo.historyManager.endTransaction();
|
103
99
|
|
104
100
|
case 8:
|