@riil-frontend/component-topology 3.1.4 → 3.1.7

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 (41) hide show
  1. package/build/1.js +1 -1
  2. package/build/index.css +1 -1
  3. package/build/index.js +11 -11
  4. package/demo//346/240/207/346/263/250/345/222/214/346/202/254/346/265/256/346/241/206//350/207/252/345/256/232/344/271/211/345/261/236/346/200/247/345/222/214/346/214/207/346/240/207.md +1 -1
  5. package/demo-mock/basic/topo/v1/api/attributes/once +9164 -2796
  6. package/demo-mock/basic/topo/v1/api/attributes/once.json +9164 -2796
  7. package/es/core/components/DisplaySettingDrawer/DisplaySetting.js +4 -5
  8. package/es/core/components/DisplaySettingDrawer/DisplaySettingDrawer.js +2 -2
  9. package/es/core/components/DisplaySettingDrawer/hooks/useDisplaySetting.js +4 -4
  10. package/es/core/models/AttributeMetricDisplay.js +112 -98
  11. package/es/core/models/TopoApp.js +1 -1
  12. package/es/core/viewer/components/plugins/BaseInfo/ResourceDetail.js +288 -0
  13. package/es/core/viewer/components/plugins/BaseInfo/ResourceDetailPlugin.js +11 -0
  14. package/es/core/viewer/components/plugins/BaseInfo/components/ResourceOverview/BaseInfo.js +129 -0
  15. package/es/core/viewer/components/plugins/BaseInfo/components/ResourceOverview/ResourceOverviewMetric.js +46 -0
  16. package/es/core/viewer/components/plugins/BaseInfo/components/ResourceOverview/index.js +64 -172
  17. package/es/core/viewer/components/plugins/BaseInfo/components/ResourceOverview/useCiAttrAndMetricData.js +12 -0
  18. package/es/core/viewer/components/plugins/BaseInfo/index.js +2 -276
  19. package/es/core/viewer/components/titlebar/BasicTools.js +1 -1
  20. package/es/core/viewer/components/titlebar/widgets/SettingButton.js +3 -4
  21. package/es/core/viewer/components/titlebar/widgets/SettingButtonWidget.js +19 -0
  22. package/es/topoCenter/components/TopoView.js +3 -4
  23. package/es/topoCenter/models/TopoCenter.js +9 -5
  24. package/lib/core/components/DisplaySettingDrawer/DisplaySetting.js +4 -5
  25. package/lib/core/components/DisplaySettingDrawer/DisplaySettingDrawer.js +2 -2
  26. package/lib/core/components/DisplaySettingDrawer/hooks/useDisplaySetting.js +4 -4
  27. package/lib/core/models/AttributeMetricDisplay.js +111 -97
  28. package/lib/core/models/TopoApp.js +1 -1
  29. package/lib/core/viewer/components/plugins/BaseInfo/ResourceDetail.js +313 -0
  30. package/lib/core/viewer/components/plugins/BaseInfo/ResourceDetailPlugin.js +21 -0
  31. package/lib/core/viewer/components/plugins/BaseInfo/components/ResourceOverview/BaseInfo.js +139 -0
  32. package/lib/core/viewer/components/plugins/BaseInfo/components/ResourceOverview/ResourceOverviewMetric.js +56 -0
  33. package/lib/core/viewer/components/plugins/BaseInfo/components/ResourceOverview/index.js +65 -173
  34. package/lib/core/viewer/components/plugins/BaseInfo/components/ResourceOverview/useCiAttrAndMetricData.js +17 -0
  35. package/lib/core/viewer/components/plugins/BaseInfo/index.js +2 -291
  36. package/lib/core/viewer/components/titlebar/BasicTools.js +2 -2
  37. package/lib/core/viewer/components/titlebar/widgets/SettingButton.js +2 -3
  38. package/lib/core/viewer/components/titlebar/widgets/SettingButtonWidget.js +28 -0
  39. package/lib/topoCenter/components/TopoView.js +3 -4
  40. package/lib/topoCenter/models/TopoCenter.js +9 -5
  41. package/package.json +3 -3
@@ -1,276 +1,2 @@
1
- import _Drawer from "@alifd/next/es/drawer";
2
- import _Tab from "@alifd/next/es/tab";
3
- import _extends from "@babel/runtime/helpers/extends";
4
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
5
- import _MenuButton from "@alifd/next/es/menu-button";
6
- import _Search from "@alifd/next/es/search";
7
- import _regeneratorRuntime from "@babel/runtime/regenerator";
8
- import React, { useState, useEffect, useRef, useCallback } from 'react';
9
- import { isAvailableArray, dataSearch } from '@riil-frontend/utils';
10
- import { TopoEvent } from '@riil-frontend/component-topology-graph';
11
- import service from "../../../../services/overview";
12
- import styles from "./index.module.scss";
13
- import ResourceOverview from "./components/ResourceOverview";
14
-
15
- function Title(_ref) {
16
- var id = _ref.id,
17
- name = _ref.name,
18
- type = _ref.type,
19
- onChange = _ref.onChange,
20
- topo = _ref.topo;
21
-
22
- if (type === 'node') {
23
- var _useState = useState(''),
24
- keyword = _useState[0],
25
- setKeyword = _useState[1];
26
-
27
- var nodes = topo.store.getModelState('topoMod').data.nodes; // 查询资源列表
28
-
29
- nodes = nodes.filter(function (item) {
30
- return item.id !== id;
31
- });
32
- if (!nodes.length) return name;
33
- var filterNodes = dataSearch(nodes, ['name'], keyword);
34
- return /*#__PURE__*/React.createElement(_MenuButton, {
35
- text: true,
36
- autoWidth: false,
37
- size: "large",
38
- popupClassName: styles['title-popup'],
39
- menuProps: {
40
- header: /*#__PURE__*/React.createElement(_Search, {
41
- shape: "simple",
42
- placeholder: "\u8BF7\u8F93\u5165\u5173\u952E\u5B57",
43
- className: styles.search,
44
- hasClear: true,
45
- onChange: function onChange(val) {
46
- return !val && setKeyword(val);
47
- },
48
- onSearch: setKeyword
49
- })
50
- },
51
- label: /*#__PURE__*/React.createElement("div", {
52
- className: styles['drawer-title']
53
- }, name),
54
- onItemClick: function onItemClick(key) {
55
- return onChange(nodes.find(function (item) {
56
- return item.id === key;
57
- }) || '');
58
- }
59
- }, isAvailableArray(filterNodes) && filterNodes.length ? filterNodes.map(function (item) {
60
- return /*#__PURE__*/React.createElement(_MenuButton.Item, {
61
- key: item.id,
62
- disabled: !item.operation
63
- }, item.name);
64
- }) : /*#__PURE__*/React.createElement("div", {
65
- className: styles['not-data']
66
- }, "\u6682\u65E0\u6570\u636E"));
67
- } else {
68
- return /*#__PURE__*/React.createElement("div", {
69
- className: styles['drawer-title']
70
- }, "\u94FE\u8DEF\u8BE6\u60C5");
71
- }
72
- } // 基本信息
73
-
74
-
75
- function BaseInfo(props) {
76
- var topo = props.topo;
77
-
78
- var _topo$store$useModel = topo.store.useModel('topoBaseInfoOverview'),
79
- topoState = _topo$store$useModel[0],
80
- topoDispatchers = _topo$store$useModel[1];
81
-
82
- var _topo$store$useModelS = topo.store.useModelState('topoMod'),
83
- topoId = _topo$store$useModelS.topoId,
84
- topoModData = _topo$store$useModelS.data;
85
-
86
- var _useState2 = useState(false),
87
- visible = _useState2[0],
88
- setVisible = _useState2[1];
89
-
90
- var _useState3 = useState({
91
- id: '',
92
- name: '',
93
- type: '',
94
- // 类型: node、link
95
- ciType: '',
96
- ciName: ''
97
- }),
98
- activeData = _useState3[0],
99
- setActiveData = _useState3[1];
100
-
101
- var _useState4 = useState(''),
102
- userId = _useState4[0],
103
- setUserId = _useState4[1];
104
-
105
- useEffect(function () {
106
- var notifier = topo.view.topoClient.notifier;
107
- notifier.on(TopoEvent.EVENT_DOUBLE_CLICK, openOverview);
108
- notifier.on('topo_element_click', changeOverview);
109
- return function () {
110
- notifier.off(TopoEvent.EVENT_DOUBLE_CLICK, openOverview);
111
- notifier.off('topo_element_click', changeOverview); // 清除数据
112
-
113
- topoDispatchers.update({
114
- id: '',
115
- metricCodes: []
116
- });
117
- };
118
- }, []); // 解决切换拓扑图隐藏概览
119
-
120
- useEffect(function () {
121
- setVisible(false); // TODO 其他数据重置
122
- }, [topoId]);
123
-
124
- function getUser() {
125
- return _getUser.apply(this, arguments);
126
- } // select切换
127
-
128
-
129
- function _getUser() {
130
- _getUser = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
131
- return _regeneratorRuntime.wrap(function _callee2$(_context2) {
132
- while (1) {
133
- switch (_context2.prev = _context2.next) {
134
- case 0:
135
- setUserId(function (prev) {
136
- console.log('获取用户id', prev); // 如果已经获取过,就不再重新获取
137
-
138
- if (!prev) {
139
- _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
140
- var res;
141
- return _regeneratorRuntime.wrap(function _callee$(_context) {
142
- while (1) {
143
- switch (_context.prev = _context.next) {
144
- case 0:
145
- _context.next = 2;
146
- return service.getUserId();
147
-
148
- case 2:
149
- res = _context.sent;
150
- setUserId((res === null || res === void 0 ? void 0 : res.user_id) || '');
151
-
152
- case 4:
153
- case "end":
154
- return _context.stop();
155
- }
156
- }
157
- }, _callee);
158
- }))();
159
- }
160
-
161
- return prev;
162
- });
163
-
164
- case 1:
165
- case "end":
166
- return _context2.stop();
167
- }
168
- }
169
- }, _callee2);
170
- }));
171
- return _getUser.apply(this, arguments);
172
- }
173
-
174
- function onChangeActive(activeNode) {
175
- activeNode && init(_extends({}, activeNode, {
176
- type: 'node'
177
- }), 'select');
178
- } // 单击切换
179
-
180
-
181
- function changeOverview(node) {
182
- var data = node.getAttrObject();
183
- init(data, 'click');
184
- } // 双击打开
185
-
186
-
187
- function openOverview(data) {
188
- init(data, 'doubleClick');
189
- }
190
-
191
- function init(data, targetType) {
192
- var _topo$options$resourc;
193
-
194
- console.log('初始化基本信息', data, targetType);
195
- var id = data.id,
196
- name = data.name,
197
- type = data.type,
198
- ciType = data.ciType,
199
- ciName = data.ciName,
200
- operation = data.operation; // 仅展示资源和链路的概览
201
-
202
- if (!['node', 'link', 'linkGroup'].includes(type)) return; // 应用拓扑中没有链路详情
203
-
204
- if ((_topo$options$resourc = topo.options.resourceOverviewDrawer) !== null && _topo$options$resourc !== void 0 && _topo$options$resourc.getData && type === 'link') return; // 没有权限不显示
205
-
206
- if (!operation) return;
207
- setActiveData({
208
- id: id,
209
- name: name,
210
- type: type === 'linkGroup' ? 'link' : type,
211
- ciType: ciType,
212
- ciName: ciName
213
- }); // 显示隐藏
214
-
215
- targetType === 'doubleClick' && setVisible(true); // userId
216
-
217
- getUser();
218
- }
219
-
220
- useEffect(function () {
221
- console.log('topoData', activeData.ciType, topoModData);
222
-
223
- if (topoModData && activeData !== null && activeData !== void 0 && activeData.id) {
224
- var id = activeData.id,
225
- ciType = activeData.ciType;
226
- var ciTypeMeta;
227
-
228
- if (ciType === 'network_link') {
229
- // 网络链路要按链路类型查询属性、指标
230
- var linkGroups = topoModData.linkGroups,
231
- links = topoModData.links;
232
- var link = [].concat(linkGroups, links).find(function (item) {
233
- return item.id === id;
234
- });
235
- var linkConnectType = link.attributes['network_link.connect_type'];
236
- ciTypeMeta = topo.ciTyeCache.getNetworkLinkCiType(linkConnectType);
237
- } else {
238
- ciTypeMeta = topo.ciTyeCache.getCiType(ciType);
239
- }
240
-
241
- var _ciTypeMeta = ciTypeMeta,
242
- metrics = _ciTypeMeta.metrics; // 同步需要实时展示的指标
243
-
244
- topoDispatchers.update({
245
- id: id,
246
- metricCodes: metrics.slice(0, 6).map(function (item) {
247
- return item.code;
248
- }) // 需要展示的关键指标 code
249
-
250
- });
251
- }
252
- }, [topoModData, activeData]);
253
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_Drawer, {
254
- className: styles.baseInfo,
255
- closeMode: ['close', 'esc'],
256
- visible: visible,
257
- title: /*#__PURE__*/React.createElement(Title, _extends({}, activeData, {
258
- topo: topo,
259
- onChange: onChangeActive
260
- })),
261
- width: 580,
262
- hasMask: false,
263
- onClose: function onClose() {
264
- return setVisible(false);
265
- }
266
- }, visible && /*#__PURE__*/React.createElement(_Tab, {
267
- className: styles.tab
268
- }, /*#__PURE__*/React.createElement(_Tab.Item, {
269
- title: "\u8D44\u6E90\u6982\u89C8",
270
- key: "1"
271
- }, activeData.id && /*#__PURE__*/React.createElement(ResourceOverview, _extends({}, props, activeData, {
272
- userId: userId
273
- }))))));
274
- }
275
-
276
- export default BaseInfo;
1
+ import ResourceDetailPlugin from "./ResourceDetailPlugin";
2
+ export default ResourceDetailPlugin;
@@ -4,7 +4,7 @@ import React from "react";
4
4
  import EditButton from "./widgets/EditButton";
5
5
  import NodesDragSwitch from "./widgets/NodesDragSwitch";
6
6
  import AlarmListShowButton from "./widgets/AlarmListShowButton";
7
- import SettingButton from "./widgets/SettingButton";
7
+ import SettingButton from "./widgets/SettingButtonWidget";
8
8
  export default function BasicTools(props) {
9
9
  var topo = props.topo,
10
10
  _props$showEditButton = props.showEditButton,
@@ -1,6 +1,6 @@
1
1
  import _Button from "@alifd/next/es/button";
2
2
  import _Icon from "@alifd/next/es/icon";
3
- import React, { useEffect, useState } from 'react';
3
+ import React, { useState } from 'react';
4
4
  import DisplaySettingDrawer from "../../../../components/DisplaySettingDrawer";
5
5
  /**
6
6
  * 设置按钮
@@ -10,9 +10,8 @@ import DisplaySettingDrawer from "../../../../components/DisplaySettingDrawer";
10
10
 
11
11
  export default function SettingButton(props) {
12
12
  var topo = props.topo,
13
- viewerProps = props.viewerProps,
13
+ displaySettingProps = props.displaySettingProps,
14
14
  style = props.style;
15
- var id = topo.id;
16
15
 
17
16
  var _useState = useState(false),
18
17
  visible = _useState[0],
@@ -30,7 +29,7 @@ export default function SettingButton(props) {
30
29
  })), /*#__PURE__*/React.createElement(DisplaySettingDrawer, {
31
30
  visible: visible,
32
31
  topo: topo,
33
- viewerProps: viewerProps,
32
+ displaySettingProps: displaySettingProps,
34
33
  onClose: function onClose() {
35
34
  setVisible(false);
36
35
  }
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import SettingButton from "./SettingButton";
3
+ /**
4
+ * 设置按钮
5
+ *
6
+ * @return {any}
7
+ */
8
+
9
+ export default function SettingButtonWidget(props) {
10
+ var topo = props.topo,
11
+ viewerProps = props.viewerProps,
12
+ style = props.style;
13
+ return /*#__PURE__*/React.createElement(SettingButton, {
14
+ topo: topo,
15
+ displaySettingProps: viewerProps === null || viewerProps === void 0 ? void 0 : viewerProps.displaySettingProps,
16
+ style: style
17
+ });
18
+ }
19
+ ;
@@ -43,10 +43,9 @@ function NetworkTopologyCore(props) {
43
43
  plugins: [],
44
44
  // 右侧工具栏按钮
45
45
  ViewerTitlebarRightTools: ViewerTools,
46
- showLinkConfig: true,
47
- // 是否显示链路相关配置
48
- onDisplaySettingDrawerOk: function onDisplaySettingDrawerOk() {},
49
- displaySettingDrawerProps: {
46
+ displaySettingProps: {
47
+ showLinkConfig: true,
48
+ // 是否显示链路相关配置
50
49
  linkTagConfig: function linkTagConfig(params) {
51
50
  return /*#__PURE__*/React.createElement(LinkTag, params);
52
51
  },
@@ -23,12 +23,16 @@ var TopoCenter = /*#__PURE__*/function (_TopoApp) {
23
23
  }, options, {
24
24
  usePermission: true,
25
25
  storeModels: _extends({}, customStoreModels, options.storeModels),
26
- // 默认链路标注/悬浮框显示配置
27
- defaultLinkTagTipConfig: {
28
- tag: DEFAULT_LINK_TAG_COMMON_CONFIG,
29
- tip: DEFAULT_TIP_COMMON_CONFIG
26
+ tagTip: {
27
+ // 默认链路标注/悬浮框显示配置
28
+ getDefaultLinkTagConfig: function getDefaultLinkTagConfig() {
29
+ return DEFAULT_LINK_TAG_COMMON_CONFIG;
30
+ },
31
+ getDefaultLinkTipConfig: function getDefaultLinkTipConfig() {
32
+ return DEFAULT_TIP_COMMON_CONFIG;
33
+ },
34
+ ExtElementTagTipBuilder: LinkTagsTipsBuilder
30
35
  },
31
- ExtElementTagTipBuilder: LinkTagsTipsBuilder,
32
36
  onSwitchToEditModeBegin: function () {
33
37
  var _onSwitchToEditModeBegin = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(topo) {
34
38
  var topoDispatchers;
@@ -37,16 +37,15 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
37
37
  */
38
38
  function DisplaySetting(props, ref) {
39
39
  var topo = props.topo,
40
- viewerProps = props.viewerProps;
40
+ displaySettingProps = props.displaySettingProps;
41
41
  var displayConfig = topo.store.getModelState('displayConfig');
42
42
 
43
- var _ref = (viewerProps === null || viewerProps === void 0 ? void 0 : viewerProps.displaySettingDrawerProps) || {},
43
+ var _ref = displaySettingProps || {},
44
44
  linkTagConfig = _ref.linkTagConfig,
45
45
  linkTipConfig = _ref.linkTipConfig,
46
46
  showEdgeExpandConfig = _ref.showEdgeExpandConfig,
47
- extraConfig = _ref.extraConfig;
48
-
49
- var showLinkConfig = !!(viewerProps !== null && viewerProps !== void 0 && viewerProps.showLinkConfig);
47
+ extraConfig = _ref.extraConfig,
48
+ showLinkConfig = _ref.showLinkConfig;
50
49
 
51
50
  var field = _field["default"].useField({
52
51
  autoUnmount: false,
@@ -28,7 +28,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
28
28
  function DisplaySettingDrawer(props) {
29
29
  var visible = props.visible,
30
30
  topo = props.topo,
31
- viewerProps = props.viewerProps,
31
+ displaySettingProps = props.displaySettingProps,
32
32
  onClose = props.onClose;
33
33
  var settingRef = (0, _react.useRef)();
34
34
 
@@ -95,7 +95,7 @@ function DisplaySettingDrawer(props) {
95
95
  }, visible && /*#__PURE__*/_react["default"].createElement(_DisplaySetting["default"], {
96
96
  ref: settingRef,
97
97
  topo: topo,
98
- viewerProps: viewerProps
98
+ displaySettingProps: displaySettingProps
99
99
  }));
100
100
  }
101
101
 
@@ -15,7 +15,7 @@ var _topo = _interopRequireDefault(require("@riil-frontend/component-topology-co
15
15
 
16
16
  var _default = function _default(props) {
17
17
  var topo = props.topo,
18
- viewerProps = props.viewerProps,
18
+ displaySettingProps = props.displaySettingProps,
19
19
  settingRef = props.settingRef;
20
20
 
21
21
  var executeByConfig = /*#__PURE__*/function () {
@@ -28,7 +28,7 @@ var _default = function _default(props) {
28
28
  // 更新节点名称显示隐藏
29
29
  topo.attributeMetricDisplay.updateNodesNameVisible(); // 更新连线展开折叠状态
30
30
 
31
- if (viewerProps !== null && viewerProps !== void 0 && viewerProps.showLinkConfig) {
31
+ if (displaySettingProps !== null && displaySettingProps !== void 0 && displaySettingProps.showLinkConfig) {
32
32
  if (config.expandAllEdges) {
33
33
  topo.getHtTopo().expandAllEdgeGroups();
34
34
  } else {
@@ -60,7 +60,7 @@ var _default = function _default(props) {
60
60
 
61
61
  var save = /*#__PURE__*/function () {
62
62
  var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
63
- var _viewerProps$displayS;
63
+ var _displaySettingProps$;
64
64
 
65
65
  var values, prevDisplayConfig, displayConfig, displayConfigDispatchers, extraOnOk;
66
66
  return _regenerator["default"].wrap(function _callee2$(_context2) {
@@ -84,7 +84,7 @@ var _default = function _default(props) {
84
84
  displayConfigDispatchers.update(displayConfig); // 按配置执行
85
85
 
86
86
  executeByConfig(displayConfig);
87
- extraOnOk = (viewerProps === null || viewerProps === void 0 ? void 0 : (_viewerProps$displayS = viewerProps.displaySettingDrawerProps) === null || _viewerProps$displayS === void 0 ? void 0 : _viewerProps$displayS.onOk) || (viewerProps === null || viewerProps === void 0 ? void 0 : viewerProps.onDisplaySettingDrawerOk);
87
+ extraOnOk = (displaySettingProps === null || displaySettingProps === void 0 ? void 0 : (_displaySettingProps$ = displaySettingProps.displaySettingProps) === null || _displaySettingProps$ === void 0 ? void 0 : _displaySettingProps$.onOk) || (displaySettingProps === null || displaySettingProps === void 0 ? void 0 : displaySettingProps.onDisplaySettingDrawerOk);
88
88
 
89
89
  if (extraOnOk) {
90
90
  extraOnOk();