@riil-frontend/component-topology 3.5.12 → 3.16.0

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 (45) hide show
  1. package/build/1.js +1 -1
  2. package/build/index.css +1 -1
  3. package/build/index.js +13 -13
  4. package/es/constants/ResourceInfoDisplay.js +1 -1
  5. package/es/core/components/DisplaySettingDrawer/LinkTag.js +1 -1
  6. package/es/core/components/DisplaySettingDrawer/LinkTip.js +1 -1
  7. package/es/core/editor/components/settings/common/LineType/AlignSetting.module.scss +36 -0
  8. package/es/core/editor/components/settings/common/LineType/index.js +86 -0
  9. package/es/core/editor/components/settings/common/LineType/lineTypeUtil.js +0 -0
  10. package/es/core/editor/components/settings/common/SizeInput/NodeSizeNumberPicker.js +1 -0
  11. package/es/core/editor/components/settings/propertyViews/multipleElements/BatchSetNodeSize/BatchSetNodeSize.js +60 -0
  12. package/es/core/editor/components/settings/propertyViews/multipleElements/MultipleElementLineType.js +20 -0
  13. package/es/core/editor/components/settings/propertyViews/multipleElements/MultipleElementPropertyView.js +7 -3
  14. package/es/core/models/TopoApp.js +1 -1
  15. package/es/core/models/attributeFormatter/index.js +10 -15
  16. package/es/core/models/cache/CiTyeCache.js +2 -2
  17. package/es/hooks/useManageStatus.js +5 -3
  18. package/es/topoCenter/components/editor/propertyViews/edge/LinkPropertyView/Setting/index.js +7 -5
  19. package/es/topoCenter/models/LinkTagsTipsBuilder.js +18 -36
  20. package/es/utils/ResourceConfigUtil.js +12 -8
  21. package/es/utils/clusterUtil.js +39 -0
  22. package/es/utils/topoData.js +9 -2
  23. package/lib/constants/ResourceInfoDisplay.js +1 -1
  24. package/lib/core/components/DisplaySettingDrawer/LinkTag.js +1 -1
  25. package/lib/core/components/DisplaySettingDrawer/LinkTip.js +1 -1
  26. package/lib/core/editor/components/settings/common/LineType/AlignSetting.module.scss +36 -0
  27. package/lib/core/editor/components/settings/common/LineType/index.js +103 -0
  28. package/lib/core/editor/components/settings/common/LineType/lineTypeUtil.js +1 -0
  29. package/lib/core/editor/components/settings/common/SizeInput/NodeSizeNumberPicker.js +1 -0
  30. package/lib/core/editor/components/settings/propertyViews/multipleElements/{BatchSetNodeSize.js → BatchSetNodeSize/BatchSetNodeSize.js} +54 -2
  31. package/lib/core/editor/components/settings/propertyViews/multipleElements/MultipleElementLineType.js +29 -0
  32. package/lib/core/editor/components/settings/propertyViews/multipleElements/MultipleElementPropertyView.js +8 -4
  33. package/lib/core/models/TopoApp.js +1 -1
  34. package/lib/core/models/attributeFormatter/index.js +10 -15
  35. package/lib/core/models/cache/CiTyeCache.js +2 -2
  36. package/lib/hooks/useManageStatus.js +5 -3
  37. package/lib/topoCenter/components/editor/propertyViews/edge/LinkPropertyView/Setting/index.js +8 -5
  38. package/lib/topoCenter/models/LinkTagsTipsBuilder.js +19 -37
  39. package/lib/utils/ResourceConfigUtil.js +15 -8
  40. package/lib/utils/clusterUtil.js +50 -0
  41. package/lib/utils/topoData.js +10 -2
  42. package/package.json +2 -2
  43. package/es/core/editor/components/settings/common/LineType.js +0 -15
  44. package/es/core/editor/components/settings/propertyViews/multipleElements/BatchSetNodeSize.js +0 -8
  45. package/lib/core/editor/components/settings/common/LineType.js +0 -30
@@ -0,0 +1,36 @@
1
+ @import "@alifd/next/variables";
2
+
3
+ .AlignSetting {
4
+ :global {
5
+ .#{$css-prefix}divider-ver {
6
+ background: #EBECF0;
7
+ margin-right: 3px;
8
+ height: 16px;
9
+
10
+ }
11
+ }
12
+
13
+ .redioBtn {
14
+ width: 24px;
15
+ height: 24px;
16
+ border-radius: 4px;
17
+ border: none !important;
18
+ color: #4D6277;
19
+ padding-left: 6px;
20
+ margin-right: 3px;
21
+
22
+ &:active {
23
+ background: #F2F7FD !important;
24
+ }
25
+
26
+ &:hover {
27
+ background: #F2F7FD !important;
28
+ }
29
+
30
+ }
31
+
32
+ .selectedTag {
33
+ background: #F2F7FD;
34
+ }
35
+
36
+ }
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ exports.__esModule = true;
6
+ exports["default"] = void 0;
7
+
8
+ var _button = _interopRequireDefault(require("@alifd/next/lib/button"));
9
+
10
+ var _icon = _interopRequireDefault(require("@alifd/next/lib/icon"));
11
+
12
+ var _divider = _interopRequireDefault(require("@alifd/next/lib/divider"));
13
+
14
+ var _react = _interopRequireWildcard(require("react"));
15
+
16
+ var _AlignSettingModule = _interopRequireDefault(require("./AlignSetting.module.scss"));
17
+
18
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
+
20
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
+
22
+ var TREE_LAYOUT_OPTIONS = [{
23
+ value: "left",
24
+ label: "左侧",
25
+ icon: "tuopu_zuoceduiqi"
26
+ }, {
27
+ value: "center",
28
+ label: "居中",
29
+ icon: "tuopu_shuipingjuzhongduiqi"
30
+ }, {
31
+ value: "right",
32
+ label: "右侧",
33
+ icon: "tuopu_youceduiqi"
34
+ }, {
35
+ value: "top",
36
+ label: "顶部",
37
+ icon: "tuopu_dingbuduiqi"
38
+ }, {
39
+ value: "middle",
40
+ label: "中部",
41
+ icon: "tuopu_chuizhijuzhongduiqi"
42
+ }, {
43
+ value: "bottom",
44
+ label: "底部",
45
+ icon: "tuopu_dibuduiqi"
46
+ }, {
47
+ value: "divide"
48
+ }, {
49
+ value: "distributeHorizontal",
50
+ label: "水平",
51
+ icon: "tuopu_shuipingdengjianjuduiqi"
52
+ }, {
53
+ value: "distributeVertical",
54
+ label: "垂直",
55
+ icon: "tuopu_chuizhidengjianjuduiqi"
56
+ }];
57
+
58
+ var AlignSetting = function AlignSetting(props) {
59
+ var getEdges = props.getEdges,
60
+ selected = props.selected,
61
+ onChange = props.onChange;
62
+
63
+ var _useState = (0, _react.useState)(selected),
64
+ value = _useState[0],
65
+ setValue = _useState[1];
66
+
67
+ var setLineType = function setLineType(type) {
68
+ var edges = getEdges();
69
+ edges.forEach(function (edge) {
70
+ edge.s('edge.type', 'v.h');
71
+ edge.s('edge.gap', 5);
72
+ edge.s('edge.center', true);
73
+ });
74
+ };
75
+
76
+ var handleChange = function handleChange(data) {
77
+ console.log("handleChange", data);
78
+ onChange && onChange(data.value);
79
+ setValue(data.value);
80
+ setLineType(data.value);
81
+ };
82
+
83
+ return null;
84
+ return /*#__PURE__*/_react["default"].createElement("div", {
85
+ className: _AlignSettingModule["default"].AlignSetting
86
+ }, TREE_LAYOUT_OPTIONS.map(function (item, index, array) {
87
+ return item.value === "divide" ? /*#__PURE__*/_react["default"].createElement(_divider["default"], {
88
+ key: index,
89
+ direction: "ver"
90
+ }) : /*#__PURE__*/_react["default"].createElement(_button["default"], {
91
+ key: index,
92
+ className: "" + _AlignSettingModule["default"].redioBtn,
93
+ onClick: function onClick() {
94
+ handleChange(item);
95
+ }
96
+ }, /*#__PURE__*/_react["default"].createElement(_icon["default"], {
97
+ type: item.icon
98
+ }));
99
+ }));
100
+ };
101
+
102
+ var _default = AlignSetting;
103
+ exports["default"] = _default;
@@ -38,6 +38,7 @@ function NodeSizeNumberPicker(props) {
38
38
  setInputValue = _useState[1];
39
39
 
40
40
  (0, _react.useEffect)(function () {
41
+ console.error(2222, value);
41
42
  setInputValue(value);
42
43
  }, [value]);
43
44
 
@@ -7,15 +7,67 @@ exports["default"] = BatchSetNodeSize;
7
7
 
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
 
10
- var _SizeInput = _interopRequireDefault(require("../../common/SizeInput"));
10
+ var _SizeInput = _interopRequireDefault(require("../../../common/SizeInput"));
11
11
 
12
12
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
13
 
14
14
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
15
 
16
16
  function BatchSetNodeSize(props) {
17
+ var topo = props.topo;
18
+
19
+ var _useState = (0, _react.useState)(undefined),
20
+ width = _useState[0],
21
+ setWidth = _useState[1];
22
+
23
+ var _useState2 = (0, _react.useState)(undefined),
24
+ height = _useState2[0],
25
+ setHeight = _useState2[1];
26
+
27
+ var _useState3 = (0, _react.useState)(true),
28
+ lock = _useState3[0],
29
+ setLock = _useState3[1];
30
+
31
+ var handleChange = function handleChange(name, value) {
32
+ var selection = topo.getSelectionModel().getSelection().toArray();
33
+ var nodes = selection.filter(function (element) {
34
+ return element instanceof ht.Node;
35
+ });
36
+ console.error('变化了', nodes, name, value); //
37
+
38
+ if (lock) {
39
+ console.error('锁定', value);
40
+
41
+ if (name === 'width') {
42
+ setHeight(undefined);
43
+ } else {
44
+ setWidth(undefined);
45
+ }
46
+ }
47
+
48
+ nodes.forEach(function (node) {
49
+ if (name === 'width') {
50
+ node.setWidth(value);
51
+ } else {
52
+ node.setHeight(value);
53
+ }
54
+ });
55
+ };
56
+
57
+ var onLockChange = function onLockChange(isLock) {
58
+ setLock(isLock);
59
+ setWidth(undefined);
60
+ setHeight(undefined);
61
+ };
62
+
17
63
  return /*#__PURE__*/_react["default"].createElement(_SizeInput["default"], {
18
- value: {}
64
+ value: {
65
+ width: width,
66
+ height: height
67
+ },
68
+ lock: lock,
69
+ onChange: handleChange,
70
+ onLockChange: onLockChange
19
71
  });
20
72
  }
21
73
 
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ exports.__esModule = true;
6
+ exports["default"] = MultipleElementLineType;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _LineType = _interopRequireDefault(require("../../common/LineType"));
11
+
12
+ function MultipleElementLineType(props) {
13
+ var topo = props.topo;
14
+
15
+ var setLineType = function setLineType(type) {};
16
+
17
+ var getEdges = function getEdges() {
18
+ var selection = topo.getSelectionModel().getSelection().toArray();
19
+ var edges = selection.filter(function (element) {
20
+ return element instanceof ht.Edge;
21
+ });
22
+ return edges;
23
+ };
24
+
25
+ return /*#__PURE__*/_react["default"].createElement(_LineType["default"], {
26
+ getEdges: getEdges,
27
+ onChange: setLineType
28
+ });
29
+ }
@@ -15,14 +15,14 @@ var _react = _interopRequireWildcard(require("react"));
15
15
 
16
16
  var _AlignSetting = _interopRequireDefault(require("../../common/AlignSetting"));
17
17
 
18
- var _LineType = _interopRequireDefault(require("../../common/LineType"));
19
-
20
- var _BatchSetNodeSize = _interopRequireDefault(require("./BatchSetNodeSize"));
18
+ var _BatchSetNodeSize = _interopRequireDefault(require("./BatchSetNodeSize/BatchSetNodeSize"));
21
19
 
22
20
  var _template = require("../../../../../../utils/template");
23
21
 
24
22
  var _ViewPropertyView = _interopRequireDefault(require("../view/ViewPropertyView"));
25
23
 
24
+ var _MultipleElementLineType = _interopRequireDefault(require("./MultipleElementLineType"));
25
+
26
26
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
27
27
 
28
28
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -68,6 +68,10 @@ function MultipleElementPropertyView(props) {
68
68
  return /*#__PURE__*/_react["default"].createElement(_ViewPropertyView["default"], props);
69
69
  }
70
70
 
71
+ var getSelectedElements = function getSelectedElements() {
72
+ return topo.getSelectionModel().getSelection().toArray();
73
+ };
74
+
71
75
  return /*#__PURE__*/_react["default"].createElement(_form["default"], {
72
76
  field: field,
73
77
  labelAlign: "top"
@@ -81,6 +85,6 @@ function MultipleElementPropertyView(props) {
81
85
  title: "\u5BF9\u9F50\u65B9\u5F0F"
82
86
  }, /*#__PURE__*/_react["default"].createElement(_AlignSetting["default"], {
83
87
  onChange: alignOnChange,
84
- selected: 'left'
88
+ selected: "left"
85
89
  })))));
86
90
  }
@@ -48,7 +48,7 @@ var _PluginManager = _interopRequireDefault(require("./PluginManager"));
48
48
  var _topoFactory = _interopRequireDefault(require("./topoFactory"));
49
49
 
50
50
  // eslint-disable-next-line no-undef
51
- var version = typeof "3.5.12" === 'string' ? "3.5.12" : null;
51
+ var version = typeof "3.16.0" === 'string' ? "3.16.0" : null;
52
52
  console.info("\u62D3\u6251\u7248\u672C: " + version);
53
53
  /**
54
54
  * 拓扑显示和编辑
@@ -41,25 +41,20 @@ function formatMetric(val, metricInfo) {
41
41
  function addLinkMetricUnderlineArrow(metricCode) {
42
42
  var map = {
43
43
  // 总流速和总带宽利用率:双向箭头
44
- 'link.total_flow_rate': 'both',
45
- 'link.bandwidth_utilization': 'both',
44
+ 'interface_totalbps': 'both',
45
+ 'bandwidth_utilization': 'both',
46
46
  // 发送速率和发送带宽利用率:背向取值端口的箭头 指向目的
47
- 'link.out_rate': 'to',
48
- 'link.out_bandwidth_utilization': 'to',
47
+ 'out_rate': 'to',
48
+ 'out_bandwidth_utilization': 'to',
49
49
  // 接收速率和接收带宽利用率:指向取值端口的箭头 指向源
50
- 'link.in_rate': 'from',
51
- 'link.in_bandwidth_utilization': 'from'
50
+ 'in_rate': 'from',
51
+ 'in_bandwidth_utilization': 'from'
52
52
  };
53
- var codes = Object.keys(map);
54
53
 
55
- for (var i = 0; i < codes.length; i++) {
56
- var code = codes[i];
57
-
58
- if (metricCode.endsWith(code)) {
59
- return {
60
- underlineArrow: map[code]
61
- };
62
- }
54
+ if (map[metricCode]) {
55
+ return {
56
+ underlineArrow: map[metricCode]
57
+ };
63
58
  }
64
59
 
65
60
  return {};
@@ -158,13 +158,13 @@ var CiTyeCache = /*#__PURE__*/function () {
158
158
  var model = null;
159
159
  types.forEach(function (type) {
160
160
  if (type.id === connectType) {
161
- var metrics = ciType.metrics // 物理链路移除:ping状态、专线连通状态
161
+ var metrics = ciType.metrics // 仅出口链路有:ping状态、专线连通状态
162
162
  .filter(function (metric) {
163
163
  if (connectType === 'exit') {
164
164
  return true;
165
165
  }
166
166
 
167
- return ['network_dedicated_line_status', 'ping_status'].indexOf(metric.code) === -1;
167
+ return ['icmp_discards_rate', 'ping_status'].indexOf(metric.code) === -1;
168
168
  }) // 按链路类型过滤对应指标
169
169
  .filter(function (metric) {
170
170
  return !excludeMetricPprefixs.filter(function (excludeMetricPprefix) {
@@ -43,7 +43,9 @@ function useManageStatus(props) {
43
43
  topoState = _topo$store$useModel[0],
44
44
  topoDispatchers = _topo$store$useModel[1];
45
45
 
46
- var graphLoaded = topoState.graphLoaded;
46
+ var graphLoaded = topoState.graphLoaded,
47
+ viewState = topoState.viewState;
48
+ var isEditMode = viewState === 'edit';
47
49
  var resources = topo.dataModel.useCis();
48
50
  (0, _useTopoEventListener["default"])({
49
51
  type: 'manageStatus',
@@ -64,7 +66,7 @@ function useManageStatus(props) {
64
66
  });
65
67
  (0, _react.useEffect)(function () {
66
68
  // 首次加载和监控状态变化后,更新节点和连线置灰状态
67
- if (graphLoaded) {
69
+ if (!isEditMode && graphLoaded) {
68
70
  resources.forEach(function (resource) {
69
71
  var type = resource.type,
70
72
  id = resource.id,
@@ -83,5 +85,5 @@ function useManageStatus(props) {
83
85
  }
84
86
  });
85
87
  }
86
- }, [graphLoaded, resources]);
88
+ }, [isEditMode, graphLoaded, resources]);
87
89
  }
@@ -15,11 +15,12 @@ var _collapse = _interopRequireDefault(require("@alifd/next/lib/collapse"));
15
15
 
16
16
  var _react = _interopRequireWildcard(require("react"));
17
17
 
18
+ var _LineType = _interopRequireDefault(require("../../../../../../../core/editor/components/settings/common/LineType"));
19
+
18
20
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
21
 
20
22
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
23
 
22
- // import LineType from '../../../../../../../core/editor/components/settings/common/LineType';
23
24
  var CollapsePanel = _collapse["default"].Panel;
24
25
 
25
26
  function parseValues(values) {
@@ -49,12 +50,14 @@ function LinkSetting(props) {
49
50
  field: field,
50
51
  labelAlign: "top"
51
52
  }, /*#__PURE__*/_react["default"].createElement(_form["default"].Item, null, /*#__PURE__*/_react["default"].createElement(_collapse["default"], {
52
- defaultExpandedKeys: ["显示设置"],
53
+ defaultExpandedKeys: ["线形"],
53
54
  style: {
54
55
  border: "none"
55
56
  }
56
57
  }, /*#__PURE__*/_react["default"].createElement(CollapsePanel, {
57
- key: "\u663E\u793A\u8BBE\u7F6E",
58
- title: "\u663E\u793A\u8BBE\u7F6E"
59
- }))));
58
+ key: "\u7EBF\u5F62",
59
+ title: "\u7EBF\u5F62"
60
+ }, /*#__PURE__*/_react["default"].createElement(_LineType["default"], {
61
+ topo: topo
62
+ })))));
60
63
  }
@@ -9,8 +9,6 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
9
9
 
10
10
  var _rlog = _interopRequireDefault(require("@riil-frontend/component-topology-utils/es/rlog"));
11
11
 
12
- var _groupBy = _interopRequireDefault(require("lodash/groupBy"));
13
-
14
12
  var _htElementUtils = require("../../utils/htElementUtils");
15
13
 
16
14
  var _attributeFormatter = _interopRequireDefault(require("../../core/models/attributeFormatter"));
@@ -21,7 +19,7 @@ var _attributeFormatter = _interopRequireDefault(require("../../core/models/attr
21
19
  // 参与计算的链路指标
22
20
  var metrics = [// 总流速
23
21
  {
24
- code: 'total_flow_rate',
22
+ code: 'interface_totalbps',
25
23
  calcType: 'sum'
26
24
  }, // 带宽利用率
27
25
  {
@@ -46,10 +44,6 @@ var metrics = [// 总流速
46
44
  calcType: 'sum',
47
45
  showWhenSameSource: true
48
46
  }];
49
- var connectTypePrefixMap = {
50
- phy: 'physical_link.',
51
- exit: 'export_link.'
52
- };
53
47
  var calcFnMap = {
54
48
  sum: function sum(values) {
55
49
  return values.reduce(function (total, val) {
@@ -98,11 +92,6 @@ var LinkTagsTipsBuilder = /*#__PURE__*/function () {
98
92
  var edgeGroupsTagsTips = groups.map(function (_ref) {
99
93
  var groupId = _ref.groupId,
100
94
  linkChildren = _ref.children;
101
- console.error(1111, {
102
- ciConfigs: ciConfigs,
103
- linkChildren: linkChildren,
104
- data: data
105
- });
106
95
  var config = ciConfigs.find(function (item) {
107
96
  return item.id === linkChildren[0].id;
108
97
  });
@@ -112,10 +101,7 @@ var LinkTagsTipsBuilder = /*#__PURE__*/function () {
112
101
  linkChildren: linkChildren,
113
102
  data: data
114
103
  });
115
- }); // console.error({
116
- // noParentLinks, groupMap, edgeGroups: edgeGroupsTagsTips, ciTagsAndTips, data
117
- // })
118
- // 获得连线组及子链路
104
+ }); // 获得连线组及子链路
119
105
  // 关联聚合链路、无子链路 时返回null
120
106
 
121
107
  function getGroupInfo(group) {
@@ -169,29 +155,27 @@ var LinkTagsTipsBuilder = /*#__PURE__*/function () {
169
155
  config = _ref2.config,
170
156
  linkChildren = _ref2.linkChildren,
171
157
  data = _ref2.data;
172
- var connectTypes = ['physical_link.', 'export_link.'];
173
-
174
- var replaceMetricConfigCode = function replaceMetricConfigCode(item) {
175
- var code = item.code;
176
- connectTypes.forEach(function (prefix) {
177
- code = code.replace(prefix, 'physical_link.');
178
- });
179
- return (0, _extends2["default"])({}, item, {
180
- code: code
181
- });
182
- }; // 查询配置,过滤不在范围内的属性
183
-
184
-
158
+ // 查询配置,过滤不在范围内的属性
185
159
  var finalConfig = (0, _extends2["default"])({}, config, {
186
160
  tags: config.tags.filter(function (item) {
187
161
  return _this2.filterField(item, linkChildren);
188
- }).map(replaceMetricConfigCode),
162
+ }),
189
163
  tips: config.tips.filter(function (item) {
190
164
  return _this2.filterField(item, linkChildren);
191
- }).map(replaceMetricConfigCode)
165
+ })
192
166
  }); // 构造数据,计算指标值
193
167
 
194
- var mergeData = this.buildData(data, linkChildren); // 构造标注、悬浮框数据
168
+ var mergeData = this.buildData(data, linkChildren);
169
+
170
+ _rlog["default"].debug('buildEdgeGroupTagTagsAndTips', {
171
+ groupId: groupId,
172
+ config: config,
173
+ linkChildren: linkChildren,
174
+ data: data,
175
+ finalConfig: finalConfig,
176
+ mergeData: mergeData
177
+ }); // 构造标注、悬浮框数据
178
+
195
179
 
196
180
  var formatter = new _attributeFormatter["default"](this.topo);
197
181
  return {
@@ -205,7 +189,7 @@ var LinkTagsTipsBuilder = /*#__PURE__*/function () {
205
189
 
206
190
  _proto.filterField = function filterField(item, linkChildren) {
207
191
  var fieldConfig = metrics.find(function (m) {
208
- return item.code.endsWith("." + m.code);
192
+ return item.code === m.code;
209
193
  });
210
194
 
211
195
  if (item.type !== 'metric' || !fieldConfig) {
@@ -243,11 +227,9 @@ var LinkTagsTipsBuilder = /*#__PURE__*/function () {
243
227
  metrics.forEach(function (m) {
244
228
  try {
245
229
  var values = linkChildrenData.map(function (linkData) {
246
- var connectType = linkData.attributeMap['network_link.connect_type'];
247
- var metricCode = "" + connectTypePrefixMap[connectType] + m.code;
248
- return linkData.metricMap[metricCode];
230
+ return linkData.metricMap[m.code];
249
231
  });
250
- mergeData.metricMap["physical_link." + m.code] = calcFnMap[m.calcType](values);
232
+ mergeData.metricMap[m.code] = calcFnMap[m.calcType](values);
251
233
  } catch (error) {
252
234
  _rlog["default"].warn('连线组指标计算异常', error);
253
235
  }
@@ -5,6 +5,8 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  exports.__esModule = true;
6
6
  exports["default"] = void 0;
7
7
 
8
+ var _rlog = _interopRequireDefault(require("@riil-frontend/component-topology-utils/es/rlog"));
9
+
8
10
  var _sortBy = _interopRequireDefault(require("lodash/sortBy"));
9
11
 
10
12
  var _htElementUtils = require("./htElementUtils");
@@ -57,18 +59,23 @@ function getResourceConfigFromHt(topo) {
57
59
 
58
60
  var exportLinkIdList = [];
59
61
  var edges = (0, _htElementUtils.getEdges)(dataModel);
60
- console.log(" 查询出口链路列表-edges", edges, dataModel);
62
+
63
+ _rlog["default"].debug(" 查询出口链路列表-edges", edges, dataModel);
64
+
61
65
  edges.forEach(function (edge) {
62
- var edgeData = htTopo.getEdgeData(edge); // eslint-disable-next-line no-underscore-dangle
66
+ var edgeData = htTopo.getEdgeData(edge); // 有组无子连线返回null
63
67
 
64
- var id = edgeData._attrObject.id;
68
+ if (edgeData) {
69
+ // eslint-disable-next-line no-underscore-dangle
70
+ var id = edgeData._attrObject.id;
65
71
 
66
- if (id) {
67
- var linkData = topo.dataModel.getDataById(id);
68
- var connectType = linkData !== null && linkData !== void 0 && linkData.attributes ? linkData === null || linkData === void 0 ? void 0 : linkData.attributes["network_link.connect_type"] : undefined;
72
+ if (id) {
73
+ var linkData = topo.dataModel.getDataById(id);
74
+ var connectType = linkData !== null && linkData !== void 0 && linkData.attributes ? linkData === null || linkData === void 0 ? void 0 : linkData.attributes["network_link.connect_type"] : undefined;
69
75
 
70
- if (connectType === "exit" && !exportLinkIdList.includes(id)) {
71
- exportLinkIdList.push(id);
76
+ if (connectType === "exit" && !exportLinkIdList.includes(id)) {
77
+ exportLinkIdList.push(id);
78
+ }
72
79
  }
73
80
  }
74
81
  });
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ exports.__esModule = true;
6
+ exports.buildClusterGroups = buildClusterGroups;
7
+ exports.isCluster = isCluster;
8
+ exports.processClusterChildNode = processClusterChildNode;
9
+
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
12
+ /**
13
+ * 集群处理工具类
14
+ */
15
+ function isCluster(node) {
16
+ return !!node.cluster;
17
+ }
18
+
19
+ function buildClusterGroups(nodes) {
20
+ return nodes.filter(isCluster).map(function (g) {
21
+ return (0, _extends2["default"])({
22
+ tag: null,
23
+ parentId: g.groupId,
24
+ parentTag: g.groupTag
25
+ }, g);
26
+ });
27
+ }
28
+ /**
29
+ * 集群的节点 groupId 设置为所在集群id、groupTag设为空。所属集群不存在不处理
30
+ *
31
+ * @param {*} node
32
+ * @param {*} groups
33
+ */
34
+
35
+
36
+ function processClusterChildNode(node, groups) {
37
+ var ownerId = node.ownerId;
38
+ var ownerExisted = ownerId && groups.find(function (group) {
39
+ return group.id === ownerId;
40
+ });
41
+
42
+ if (!ownerId || !ownerExisted) {
43
+ return node;
44
+ }
45
+
46
+ return (0, _extends2["default"])({}, node, {
47
+ groupId: ownerId,
48
+ groupTag: null
49
+ });
50
+ }
@@ -37,6 +37,8 @@ var _icon = require("../core/common/icons/icon");
37
37
 
38
38
  var _backgroundUtil = require("../core/utils/backgroundUtil");
39
39
 
40
+ var _clusterUtil = require("./clusterUtil");
41
+
40
42
  var _excluded = ["extraConfig"];
41
43
 
42
44
  /**
@@ -402,9 +404,15 @@ var combTopoData = function combTopoData(_ref3) {
402
404
  engine: engine
403
405
  }); // group
404
406
 
405
- var groups = formatGroups((_result$groups = result.groups) !== null && _result$groups !== void 0 ? _result$groups : []); // nodes
407
+ var groups = formatGroups([].concat((_result$groups = result.groups) !== null && _result$groups !== void 0 ? _result$groups : [], (0, _clusterUtil.buildClusterGroups)(result.nodes))); // nodes
406
408
 
407
- var nodes = result.nodes.map(function (node) {
409
+ var nodes = result.nodes // 过滤集群
410
+ .filter(function (node) {
411
+ return !(0, _clusterUtil.isCluster)(node);
412
+ }) // 修正集群节点数据
413
+ .map(function (node) {
414
+ return (0, _clusterUtil.processClusterChildNode)(node, groups);
415
+ }).map(function (node) {
408
416
  return tfNode(engine, node);
409
417
  }); // links
410
418