@riil-frontend/component-topology 12.0.0-dev.13 → 12.0.0-dev.17

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 (29) hide show
  1. package/build/1.js +1 -1
  2. package/build/index.js +14 -14
  3. package/es/core/components/AlarmListPanel/components/AlarmListItem.js +56 -3
  4. package/es/core/editor/components/Toolbar/widgets/Layout/index.js +16 -2
  5. package/es/core/hooks/useGraphAlarmDisplay.js +62 -40
  6. package/es/core/hooks/useTopoEdit.js +3 -2
  7. package/es/core/models/Alarm.js +28 -16
  8. package/es/core/models/TopoApp.js +1 -1
  9. package/es/core/models/cache/CiCache.d.ts +1 -1
  10. package/es/core/models/cache/CiCache.js +3 -3
  11. package/es/core/store/models/topoMod.js +81 -134
  12. package/es/core/utils/showGraphManageStatusUtil.js +3 -2
  13. package/es/core/viewer/components/plugins/ViewerPlugin.js +3 -1
  14. package/es/utils/ciRefAttributeTranslateUtil.d.ts +6 -2
  15. package/es/utils/ciRefAttributeTranslateUtil.js +7 -8
  16. package/lib/core/components/AlarmListPanel/components/AlarmListItem.js +58 -3
  17. package/lib/core/editor/components/Toolbar/widgets/Layout/index.js +16 -2
  18. package/lib/core/hooks/useGraphAlarmDisplay.js +62 -40
  19. package/lib/core/hooks/useTopoEdit.js +3 -2
  20. package/lib/core/models/Alarm.js +28 -16
  21. package/lib/core/models/TopoApp.js +1 -1
  22. package/lib/core/models/cache/CiCache.d.ts +1 -1
  23. package/lib/core/models/cache/CiCache.js +3 -3
  24. package/lib/core/store/models/topoMod.js +81 -134
  25. package/lib/core/utils/showGraphManageStatusUtil.js +3 -2
  26. package/lib/core/viewer/components/plugins/ViewerPlugin.js +3 -1
  27. package/lib/utils/ciRefAttributeTranslateUtil.d.ts +6 -2
  28. package/lib/utils/ciRefAttributeTranslateUtil.js +7 -8
  29. package/package.json +2 -2
@@ -1,3 +1,5 @@
1
+ import _Balloon from "@alifd/next/es/balloon";
2
+ import _extends from "@babel/runtime/helpers/extends";
1
3
  import _List from "@alifd/next/es/list";
2
4
  import _Icon from "@alifd/next/es/icon";
3
5
  import React, { useState, useEffect } from 'react';
@@ -31,6 +33,7 @@ function AlarmListItem(props) {
31
33
  var topo = props.topo,
32
34
  alarmInfo = props.alarmInfo,
33
35
  onClick = props.onClick;
36
+ console.log("AlarmListPanel", topo, alarmInfo);
34
37
  return /*#__PURE__*/React.createElement(_List.Item, {
35
38
  className: styles.AlarmListItem,
36
39
  media: /*#__PURE__*/React.createElement(_Icon, {
@@ -85,10 +88,60 @@ function RiskListItem(props) {
85
88
  }, "\u67E5\u770B\u8BE6\u60C5"))));
86
89
  }
87
90
 
91
+ function SubListItem(props) {
92
+ // 传入参数
93
+ var topo = props.topo,
94
+ alarmInfo = props.alarmInfo,
95
+ onClick = props.onClick;
96
+ var creatAlarmTips = topo.viewProps.creatAlarmTips;
97
+ var subNode = topo.getData().nodes.find(function (node) {
98
+ return node.ciId === alarmInfo.mainCiId;
99
+ });
100
+ var plarm = alarmInfo.cmpCode ? "\u3010" + subNode.sourceName + "\u3011" : "【本级平台】";
101
+ return /*#__PURE__*/React.createElement(_List.Item, {
102
+ className: styles.AlarmListItem,
103
+ media: /*#__PURE__*/React.createElement(_Icon, {
104
+ type: "gaojing-3",
105
+ size: "xs",
106
+ className: styles["alarm-color-icon"] + " alarm-color-icon-lv" + alarmInfo.alertLevel
107
+ })
108
+ }, /*#__PURE__*/React.createElement("span", {
109
+ className: styles.content
110
+ }, /*#__PURE__*/React.createElement("div", {
111
+ className: styles.list,
112
+ onClick: function onClick() {
113
+ getNode(topo, alarmInfo);
114
+ }
115
+ }, "" + plarm + alarmInfo.alertObject + alarmInfo.alertTitle), alarmInfo.cmpCode ? /*#__PURE__*/React.createElement(_Balloon, {
116
+ trigger: /*#__PURE__*/React.createElement("span", {
117
+ className: styles.listLink
118
+ }, "\u67E5\u770B\u8BE6\u60C5"),
119
+ closable: true,
120
+ triggerType: "click",
121
+ align: "bl",
122
+ popupClassName: styles["enjoydata-alarm-table-balloon"],
123
+ popupStyle: {
124
+ maxWidth: "700px",
125
+ width: 530
126
+ }
127
+ }, creatAlarmTips(_extends({}, alarmInfo))) : /*#__PURE__*/React.createElement("div", {
128
+ className: styles.listLink
129
+ }, /*#__PURE__*/React.createElement(Link, {
130
+ onClick: onClick,
131
+ to: alarmLink(alarmInfo)
132
+ }, "\u67E5\u770B\u8BE6\u60C5"))));
133
+ }
134
+
88
135
  function ListItem(props) {
89
- var alarmInfo = props.alarmInfo;
90
- var ListItemWidget = alarmInfo.eventType === 'risk' ? RiskListItem : AlarmListItem;
91
- return /*#__PURE__*/React.createElement(ListItemWidget, props);
136
+ var topo = props.topo,
137
+ alarmInfo = props.alarmInfo;
138
+
139
+ if (topo.isCMPTopo) {
140
+ return /*#__PURE__*/React.createElement(SubListItem, props);
141
+ } else {
142
+ var ListItemWidget = alarmInfo.eventType === "risk" ? RiskListItem : AlarmListItem;
143
+ return /*#__PURE__*/React.createElement(ListItemWidget, props);
144
+ }
92
145
  }
93
146
 
94
147
  export default ListItem;
@@ -24,6 +24,11 @@ function Layout(props) {
24
24
  selection = _topo$store$useModelS.selection;
25
25
 
26
26
  var setDisabled = function setDisabled(data) {
27
+ if (topoShowType !== 'layers' && selection.length === 1) {
28
+ //中心节点布局,选中一个节点非分层情况下,需要星型和树形布局亮起来
29
+ return data == 'rectangle' || data == 'hierarchical';
30
+ }
31
+
27
32
  if (topoShowType == 'layers' && selection.length == 1 && !isGroup(selection[0])) {
28
33
  return data != 'rectangle';
29
34
  } else {
@@ -41,7 +46,11 @@ function Layout(props) {
41
46
 
42
47
 
43
48
  if (topoShowType != 'layers' && selection.length == 1) {
44
- topo.getHtTopo().layoutInContainer(layouType);
49
+ if (layouType == 'hierarchical') {
50
+ topo.getHtTopo().layoutInContainer(layouType);
51
+ } else {
52
+ topo.getHtTopo().layoutTopoBySelectNode(layouType, selectionElements[0]);
53
+ }
45
54
  } // eslint-disable-next-line eqeqeq
46
55
 
47
56
 
@@ -56,7 +65,7 @@ function Layout(props) {
56
65
  topo.historyManager.beginTransaction();
57
66
  setLayout(v); // eslint-disable-next-line eqeqeq
58
67
 
59
- if (topoShowType != 'layers' && ((_selection$ = selection[0]) === null || _selection$ === void 0 ? void 0 : _selection$.className) != 'ht.Node' || topoShowType == 'partition' && selection.length == 1 || topoShowType == 'layers' && selection.length == 1) {
68
+ if (topoShowType != 'layers' && ((_selection$ = selection[0]) === null || _selection$ === void 0 ? void 0 : _selection$.className) != 'ht.Node' || topoShowType == 'partition' && selection.length == 1 || topoShowType == 'layers' && selection.length == 1 || topoShowType !== 'layers' && selection.length === 1) {
60
69
  globalLayout(v);
61
70
  }
62
71
 
@@ -135,6 +144,11 @@ function isLayoutEnabled(props) {
135
144
 
136
145
  if (topoShowType !== 'layers' && !selection.length) {
137
146
  return true;
147
+ } //中心节点布局,选中一个节点不是分层的情况下,按钮亮起
148
+
149
+
150
+ if (topoShowType !== 'layers' && selection.length === 1) {
151
+ return true;
138
152
  }
139
153
 
140
154
  return false;
@@ -2,8 +2,14 @@ import { useEffect } 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
+ /**
6
+ * 获取ci的最高告警级别
7
+ * @param {Array} alarmList
8
+ * @param {*} risks
9
+ * @returns
10
+ */
5
11
 
6
- function getCiAlarmLevels(alarmList, risks) {
12
+ function getCiAlarmLevelMap(alarmList, risks) {
7
13
  var ciIdLevelMap = {};
8
14
  [].concat(alarmList, risks.map(function (item) {
9
15
  var _item$resourceId;
@@ -21,13 +27,53 @@ function getCiAlarmLevels(alarmList, risks) {
21
27
 
22
28
  ciIdLevelMap[item.id] = level;
23
29
  });
30
+ return ciIdLevelMap;
31
+ }
32
+
33
+ function getGraphCiElementAlarmLevels(resources, alarmList, risks) {
34
+ var ciIdLevelMap = getCiAlarmLevelMap(alarmList, risks);
24
35
  return Object.keys(ciIdLevelMap).map(function (id) {
25
36
  return {
26
37
  id: id,
27
38
  level: ciIdLevelMap[id]
28
39
  };
40
+ }).filter(function (alarm) {
41
+ var resource = resources.find(function (item) {
42
+ return item.id === alarm.id;
43
+ });
44
+ return !!resource;
29
45
  });
30
46
  }
47
+ /**
48
+ * 获得关联拓扑节点告警级别
49
+ * @param {*} topo
50
+ * @param {*} relateTopoAlarm
51
+ * @returns
52
+ */
53
+
54
+
55
+ function getRelateTopoNodeAlarmLevels(topo, relateTopoAlarm) {
56
+ return Object.keys(relateTopoAlarm).map(function (topoId) {
57
+ var level = relateTopoAlarm[topoId];
58
+ var relateTopoNode = topo.getDataModel().getDatas().toArray().find(function (node) {
59
+ return "" + node.a('bindTopo') === "" + topoId;
60
+ });
61
+
62
+ if (!level || !relateTopoNode) {
63
+ return null;
64
+ }
65
+
66
+ return {
67
+ elementId: relateTopoNode.getId(),
68
+ level: level
69
+ };
70
+ }).filter(function (item) {
71
+ return !!item;
72
+ });
73
+ } // 获取拓扑图元素最高告警级别。包含资源、链路、关联拓扑节点
74
+
75
+
76
+ function getGraphElementAlarmLevels(resources) {}
31
77
  /**
32
78
  * 告警显示到ht拓扑
33
79
  *
@@ -38,7 +84,6 @@ function getCiAlarmLevels(alarmList, risks) {
38
84
  export default function useGraphAlarmDisplay(options) {
39
85
  var topo = options.topo,
40
86
  alarmSwitch = options.alarmSwitch;
41
- var store = topo.store;
42
87
  var topoState = topo.store.useModelState('topoMod');
43
88
  var graphLoaded = topoState.graphLoaded,
44
89
  viewState = topoState.viewState;
@@ -52,17 +97,7 @@ export default function useGraphAlarmDisplay(options) {
52
97
  var resources = topo.dataModel.useCis();
53
98
 
54
99
  function getCisEventLevel() {
55
- return getCiAlarmLevels(alarmList || [], risks).filter(function (alarm) {
56
- var resource = resources.find(function (item) {
57
- return item.id === alarm.id;
58
- });
59
-
60
- if (!resource) {
61
- return false;
62
- }
63
-
64
- return true;
65
- });
100
+ return getGraphCiElementAlarmLevels(resources, alarmList || [], risks);
66
101
  }
67
102
 
68
103
  useEffect(function () {
@@ -72,8 +107,8 @@ export default function useGraphAlarmDisplay(options) {
72
107
  resources: resources,
73
108
  isEditMode: isEditMode,
74
109
  graphLoaded: graphLoaded,
75
- // 有告警且未监控时,此时开启告警静默,应当显示未监控图标
76
- cisEventLevel: alarmSwitch === false ? [] : getCisEventLevel()
110
+ alarmSwitch: alarmSwitch,
111
+ cisEventLevel: getCisEventLevel()
77
112
  });
78
113
 
79
114
  function showAlarm() {
@@ -87,41 +122,28 @@ export default function useGraphAlarmDisplay(options) {
87
122
  return;
88
123
  }
89
124
 
90
- var finalAlarms = getCisEventLevel(); // 将告警级别放入ht元素,便于测试
125
+ var finalAlarms = getCisEventLevel(); // 关联拓扑告警
126
+
127
+ var relateTopoAlarms = getRelateTopoNodeAlarmLevels(topo, relateTopoAlarm);
128
+ var elementsAlarmLevels = [].concat(finalAlarms, relateTopoAlarms); // 将告警级别放入ht元素,便于测试
91
129
 
92
130
  getElements(topo.getDataModel()).filter(function (item) {
93
131
  return !!item.getTag();
94
132
  }).forEach(function (element) {
95
- var _finalAlarms$find;
133
+ var _elementsAlarmLevels$;
96
134
 
97
- var alarmLevel = (_finalAlarms$find = finalAlarms.find(function (item) {
98
- return item.id === element.getTag();
99
- })) === null || _finalAlarms$find === void 0 ? void 0 : _finalAlarms$find.level;
135
+ var alarmLevel = (_elementsAlarmLevels$ = elementsAlarmLevels.find(function (item) {
136
+ return item.id === element.getTag() || item.elementId === element.getId();
137
+ })) === null || _elementsAlarmLevels$ === void 0 ? void 0 : _elementsAlarmLevels$.level;
100
138
  element.a('alarmLevel', alarmLevel);
101
139
  });
102
- var relateTopoAlarms = Object.keys(relateTopoAlarm).map(function (topoId) {
103
- var level = relateTopoAlarm[topoId];
104
- var relateTopoNode = topo.getDataModel().getDatas().toArray().find(function (node) {
105
- return "" + node.a('bindTopo') === "" + topoId;
106
- });
107
-
108
- if (!level || !relateTopoNode) {
109
- return null;
110
- }
111
-
112
- return {
113
- elementId: relateTopoNode.getId(),
114
- level: level
115
- };
116
- }).filter(function (item) {
117
- return !!item;
118
- });
119
- rlog.debug('关联拓扑告警:推送ht', {
120
- all: relateTopoAlarm,
140
+ rlog.debug('推送告警 => ht', {
141
+ alarms: elementsAlarmLevels,
142
+ relateTopoAlarmMap: relateTopoAlarm,
121
143
  relateTopoAlarms: relateTopoAlarms
122
144
  }); // 更新到ht拓扑
123
145
 
124
- topo.view.loadAlarm([].concat(finalAlarms, relateTopoAlarms));
146
+ topo.view.loadAlarm(elementsAlarmLevels);
125
147
  }
126
148
 
127
149
  return function () {
@@ -956,10 +956,11 @@ var useTopoEdit = function useTopoEdit(params) {
956
956
  break;
957
957
  }
958
958
 
959
+ topo.historyManager.endTransaction();
960
+
959
961
  _Message.error("关联资源失败");
960
962
 
961
- rlog.warn("关联资源失败");
962
- topo.historyManager.endTransaction();
963
+ rlog.error("关联资源失败");
963
964
  return _context9.abrupt("return", false);
964
965
 
965
966
  case 23:
@@ -533,25 +533,34 @@ var Alarm = /*#__PURE__*/function () {
533
533
  resAndMetrics = this.topo.store.getState().topoMod.resAndMetrics;
534
534
  resIdsList = resAndMetrics.resIdsList, nodeIdsList = resAndMetrics.nodeIdsList, linkIdsList = resAndMetrics.linkIdsList;
535
535
  alarmDispatchers = this.topo.store.getModelDispatchers('topoAlarm'); // 添加事件
536
- // console.log("handleAlarmEvent-接收到推送的原始告警信息", alertData);
536
+
537
+ console.log("handleAlarmEvent-接收到推送的原始告警信息", alertData);
537
538
 
538
539
  if (!(isAvailableArray(alertData) && isAvailableArray(resIdsList))) {
539
- _context9.next = 24;
540
+ _context9.next = 27;
540
541
  break;
541
542
  }
542
543
 
543
544
  sendAl = [];
544
545
  idsList = [].concat(nodeIdsList, linkIdsList);
545
546
  operations = [];
547
+ console.log('idsList---------', idsList);
546
548
  idsList.forEach(function (idItem) {
547
549
  if (idItem.operation === null) {
548
550
  operations.push(idItem.ciId);
549
551
  }
550
552
  });
551
553
  alertData.forEach(function (item, index) {
552
- var _item$resourceId;
554
+ var _item$resourceId, _item$alertCode;
553
555
 
554
556
  var ciId = (_item$resourceId = item.resourceId) !== null && _item$resourceId !== void 0 ? _item$resourceId : item.ciId;
557
+ var isSub = false;
558
+
559
+ if ((_item$alertCode = item.alertCode) !== null && _item$alertCode !== void 0 && _item$alertCode.startsWith("cmp")) {
560
+ ciId = "sub:" + item.mainCiId;
561
+ isSub = true;
562
+ }
563
+
555
564
  var obj = {
556
565
  id: ciId,
557
566
  level: item.alertLevel,
@@ -560,27 +569,30 @@ var Alarm = /*#__PURE__*/function () {
560
569
  obj: item,
561
570
  info: item.alertType,
562
571
  ciCode: item === null || item === void 0 ? void 0 : item.ciCode,
563
- ruleId: item === null || item === void 0 ? void 0 : item.ruleId
572
+ ruleId: item === null || item === void 0 ? void 0 : item.ruleId,
573
+ isSub: isSub
564
574
  };
565
575
 
566
576
  if (resIdsList.indexOf(ciId) >= 0 && operations.indexOf(ciId) < 0) {
567
577
  sendAl.push(obj);
568
- }
569
- }); // console.log("before-combAlarmData", sendAl, idsList);
578
+ } // const ciId = `${isSub}+${item.resourceId ?? item.ciId}`;
579
+
580
+ });
581
+ console.log("before-combAlarmData", sendAl, idsList);
570
582
 
571
583
  if (!(sendAl.length > 0)) {
572
- _context9.next = 24;
584
+ _context9.next = 27;
573
585
  break;
574
586
  }
575
587
 
576
588
  rlog.debug('过滤掉非本拓扑的告警信息 告警开关-推送告警到ht-alarmIsOpened-sendAl', alarmIsOpened, sendAl);
577
- _context9.prev = 12;
578
- _context9.next = 15;
589
+ _context9.prev = 15;
590
+ _context9.next = 18;
579
591
  return alarmDispatchers.combAlarmData({
580
592
  alarmdata: sendAl
581
593
  });
582
594
 
583
- case 15:
595
+ case 18:
584
596
  _yield$alarmDispatche2 = _context9.sent;
585
597
  eqFlag = _yield$alarmDispatche2.eqFlag;
586
598
  alarmlist = _yield$alarmDispatche2.alarmlist;
@@ -601,19 +613,19 @@ var Alarm = /*#__PURE__*/function () {
601
613
  }
602
614
  }
603
615
 
604
- _context9.next = 24;
616
+ _context9.next = 27;
605
617
  break;
606
618
 
607
- case 21:
608
- _context9.prev = 21;
609
- _context9.t0 = _context9["catch"](12);
619
+ case 24:
620
+ _context9.prev = 24;
621
+ _context9.t0 = _context9["catch"](15);
610
622
  rlog.error('告警发送异常', _context9.t0);
611
623
 
612
- case 24:
624
+ case 27:
613
625
  case "end":
614
626
  return _context9.stop();
615
627
  }
616
- }, _callee9, this, [[12, 21]]);
628
+ }, _callee9, this, [[15, 24]]);
617
629
  }));
618
630
 
619
631
  function handleAlarmEvent(_x7) {
@@ -24,7 +24,7 @@ import ElementTagTipConfig from "./tagstips/ElementTagTipConfig";
24
24
  import SelectionModel from "./SelectionModel";
25
25
  import CiCache from "./cache/CiCache"; // eslint-disable-next-line no-undef
26
26
 
27
- var version = typeof "12.0.0-dev.13" === 'string' ? "12.0.0-dev.13" : null;
27
+ var version = typeof "12.0.0-dev.17" === 'string' ? "12.0.0-dev.17" : null;
28
28
  console.info("\u62D3\u6251\u7248\u672C: " + version);
29
29
  /**
30
30
  * 拓扑显示和编辑
@@ -11,7 +11,7 @@ declare class CiCache {
11
11
  * @param ids {string[]}
12
12
  * @returns {Promise<Object>}
13
13
  */
14
- load(ids: string[]): Promise<Object>;
14
+ load(ids: string[], refreshCiCache?: boolean): Promise<Object>;
15
15
  getCi(id: string): Object;
16
16
  }
17
17
  declare const _default: CiCache;
@@ -23,14 +23,14 @@ var CiCache = /*#__PURE__*/function () {
23
23
  _proto.load =
24
24
  /*#__PURE__*/
25
25
  function () {
26
- var _load = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(ids) {
26
+ var _load = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(ids, refreshCiCache) {
27
27
  var _this = this;
28
28
 
29
29
  var unloadCiIds, cis, map;
30
30
  return _regeneratorRuntime.wrap(function _callee$(_context) {
31
31
  while (1) switch (_context.prev = _context.next) {
32
32
  case 0:
33
- unloadCiIds = ids.filter(function (id) {
33
+ unloadCiIds = refreshCiCache === true ? ids : ids.filter(function (id) {
34
34
  return !_this.ciMap[id];
35
35
  });
36
36
 
@@ -62,7 +62,7 @@ var CiCache = /*#__PURE__*/function () {
62
62
  }, _callee, this);
63
63
  }));
64
64
 
65
- function load(_x) {
65
+ function load(_x, _x2) {
66
66
  return _load.apply(this, arguments);
67
67
  }
68
68