@riil-frontend/component-topology 7.0.0-dev.1 → 7.0.0-dev.2

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 (30) hide show
  1. package/build/1.js +1 -1
  2. package/build/index.css +1 -1
  3. package/build/index.js +12 -12
  4. package/es/core/components/TopoView/topoView.js +13 -1
  5. package/es/core/models/TopoApp.js +1 -1
  6. package/es/core/store/coreModels.js +2 -0
  7. package/es/core/store/models/selection.js +3 -1
  8. package/es/core/store/models/viewer/resourceDetail.js +31 -0
  9. package/es/core/viewer/components/plugins/ResourceDetail/ResourceDetail.js +2 -5
  10. package/es/core/viewer/components/plugins/ResourceDetail/ResourceDetailDrawer.js +61 -43
  11. package/es/core/viewer/components/plugins/ResourceDetail/components/ResourceOverview/EventsCard.js +136 -0
  12. package/es/core/viewer/components/plugins/ResourceDetail/components/ResourceOverview/ResourceOverview.js +9 -16
  13. package/es/core/viewer/components/plugins/ResourceDetail/components/ResourceOverview/ResourceOverviewMetric.js +1 -1
  14. package/es/core/viewer/components/plugins/ResourceDetail/components/ResourceOverview/index.module.scss +119 -117
  15. package/es/networkTopo/store/topoCenter.js +27 -4
  16. package/es/style.js +1 -1
  17. package/lib/core/components/TopoView/topoView.js +13 -1
  18. package/lib/core/models/TopoApp.js +1 -1
  19. package/lib/core/store/coreModels.js +3 -0
  20. package/lib/core/store/models/selection.js +3 -1
  21. package/lib/core/store/models/viewer/resourceDetail.js +40 -0
  22. package/lib/core/viewer/components/plugins/ResourceDetail/ResourceDetail.js +2 -5
  23. package/lib/core/viewer/components/plugins/ResourceDetail/ResourceDetailDrawer.js +60 -46
  24. package/lib/core/viewer/components/plugins/ResourceDetail/components/ResourceOverview/EventsCard.js +156 -0
  25. package/lib/core/viewer/components/plugins/ResourceDetail/components/ResourceOverview/ResourceOverview.js +9 -16
  26. package/lib/core/viewer/components/plugins/ResourceDetail/components/ResourceOverview/ResourceOverviewMetric.js +1 -1
  27. package/lib/core/viewer/components/plugins/ResourceDetail/components/ResourceOverview/index.module.scss +119 -117
  28. package/lib/networkTopo/store/topoCenter.js +27 -4
  29. package/lib/style.js +1 -1
  30. package/package.json +2 -2
@@ -1,135 +1,137 @@
1
1
  @import "~@alifd/next/variables.scss";
2
2
 
3
3
  .resource-overview {
4
- .base-info {
5
- margin-top: 16px;
6
- margin-right: -25px;
7
- overflow: hidden;
8
- .item {
9
- width: 220px;
10
- max-width: 100%;
11
- margin-right: 25px;
12
- margin-bottom: 8px;
13
- display: flex;
14
- float: left;
15
- .label {
16
- white-space: nowrap;
17
- }
18
- .content {
19
- flex: 1;
4
+
5
+ }
6
+
7
+ .base-info {
8
+ margin-top: 16px;
9
+ margin-right: -25px;
10
+ overflow: hidden;
11
+ .item {
12
+ width: 220px;
13
+ max-width: 100%;
14
+ margin-right: 25px;
15
+ margin-bottom: 8px;
16
+ display: flex;
17
+ float: left;
18
+ .label {
19
+ white-space: nowrap;
20
+ }
21
+ .content {
22
+ flex: 1;
23
+ overflow: hidden;
24
+ text-overflow: ellipsis;
25
+ white-space: nowrap;
26
+ color: #4d6277;
27
+ .link {
28
+ width: 100%;
29
+ display: block;
20
30
  overflow: hidden;
21
31
  text-overflow: ellipsis;
22
32
  white-space: nowrap;
23
- color: #4d6277;
24
- .link {
25
- width: 100%;
26
- display: block;
27
- overflow: hidden;
28
- text-overflow: ellipsis;
29
- white-space: nowrap;
30
- }
31
33
  }
32
34
  }
33
35
  }
34
- .indicator {
35
- width: 525px;
36
- margin: 20px 0 12px;
37
- display: flex;
38
- flex-wrap: wrap;
39
- .no-data{
40
- width: 100%;
41
- height: 120px;
42
- line-height: 120px;
43
- text-align: center;
36
+ }
37
+ .indicator {
38
+ width: 525px;
39
+ margin: 20px 0 12px;
40
+ display: flex;
41
+ flex-wrap: wrap;
42
+ .no-data{
43
+ width: 100%;
44
+ height: 120px;
45
+ line-height: 120px;
46
+ text-align: center;
47
+ }
48
+ .item {
49
+ width: 240px;
50
+ margin-bottom: 24px;
51
+ &:nth-child(2n + 1) {
52
+ margin-right: 24px;
44
53
  }
45
- .item {
46
- width: 240px;
47
- margin-bottom: 24px;
48
- &:nth-child(2n + 1) {
49
- margin-right: 24px;
50
- }
51
- .title {
52
- font-size: 13px;
53
- color: #78849c;
54
- }
55
- .content {
56
- margin-top: 10px;
57
- font-size: 26px;
58
- color: #4d6277;
59
- }
60
- .chart {
61
- margin-top: 16px;
62
- }
54
+ .title {
55
+ font-size: 13px;
56
+ color: #78849c;
63
57
  }
64
- // .row {
65
- // display: flex;
66
- // border-bottom: 1px solid #f2f5fa;
67
- // &:last-child {
68
- // border: none;
69
- // }
70
- // .item {
71
- // width: 175px;
72
- // height: 100px;
73
- // box-sizing: border-box;
74
- // display: flex;
75
- // flex-direction: column;
76
- // text-align: center;
77
- // border-right: 1px solid #f2f5fa;
78
- // &:last-child {
79
- // border: none;
80
- // }
81
- // .content {
82
- // margin-top: 19px;
83
- // height: 32px;
84
- // line-height: 32px;
85
- // font-size: 32px;
86
- // color: #4d6277;
87
- // }
88
- // .label {
89
- // margin-top: 12px;
90
- // height: 20px;
91
- // font-size: 14px;
92
- // font-weight: 400;
93
- // color: #78849c;
94
- // line-height: 20px;
95
- // }
96
- // }
97
- // }
98
- }
99
- .alarm {
100
- margin-top: 12px;
101
- .alarm-title {
102
- overflow: hidden;
103
- text-overflow: ellipsis;
104
- white-space: nowrap;
58
+ .content {
59
+ margin-top: 10px;
60
+ font-size: 26px;
61
+ color: #4d6277;
105
62
  }
106
- .alarm-color-icon {
107
- width: 12px;
108
- height: 12px;
109
- font-size: 12px;
110
- margin-right: 4px;
63
+ .chart {
64
+ margin-top: 16px;
111
65
  }
112
- .no-data {
113
- font-size: 14px;
114
- text-align: center;
115
- color: var(--color-text1-4);
116
- height: 120px;
117
- line-height: 120px;
66
+ }
67
+ // .row {
68
+ // display: flex;
69
+ // border-bottom: 1px solid #f2f5fa;
70
+ // &:last-child {
71
+ // border: none;
72
+ // }
73
+ // .item {
74
+ // width: 175px;
75
+ // height: 100px;
76
+ // box-sizing: border-box;
77
+ // display: flex;
78
+ // flex-direction: column;
79
+ // text-align: center;
80
+ // border-right: 1px solid #f2f5fa;
81
+ // &:last-child {
82
+ // border: none;
83
+ // }
84
+ // .content {
85
+ // margin-top: 19px;
86
+ // height: 32px;
87
+ // line-height: 32px;
88
+ // font-size: 32px;
89
+ // color: #4d6277;
90
+ // }
91
+ // .label {
92
+ // margin-top: 12px;
93
+ // height: 20px;
94
+ // font-size: 14px;
95
+ // font-weight: 400;
96
+ // color: #78849c;
97
+ // line-height: 20px;
98
+ // }
99
+ // }
100
+ // }
101
+ }
102
+ .alarm {
103
+ margin-top: 12px;
104
+ .alarm-title {
105
+ overflow: hidden;
106
+ text-overflow: ellipsis;
107
+ white-space: nowrap;
108
+ }
109
+ .alarm-color-icon {
110
+ width: 12px;
111
+ height: 12px;
112
+ font-size: 12px;
113
+ margin-right: 4px;
114
+ }
115
+ .no-data {
116
+ font-size: 14px;
117
+ text-align: center;
118
+ color: var(--color-text1-4);
119
+ height: 120px;
120
+ line-height: 120px;
121
+ }
122
+ :global {
123
+ .#{$css-prefix}btn-helper {
124
+ vertical-align: baseline;
118
125
  }
119
- :global {
120
- .#{$css-prefix}btn-helper {
121
- vertical-align: baseline;
122
- }
123
- .risk-icon {
124
- color: #ff7843;
125
- }
126
- .#{$css-prefix}table .#{$css-prefix}table-body tr:last-child td {
127
- border-bottom: none;
128
- }
129
- // .#{$css-prefix}btn{
130
- // height: 28px !important;
131
- // }
126
+ .risk-icon {
127
+ color: #ff7843;
132
128
  }
129
+ .#{$css-prefix}table .#{$css-prefix}table-body tr:last-child td {
130
+ border-bottom: none;
131
+ }
132
+ // .#{$css-prefix}btn{
133
+ // height: 28px !important;
134
+ // }
133
135
  }
134
136
  }
135
137
 
@@ -99,22 +99,45 @@ export default {
99
99
  });
100
100
 
101
101
  case 22:
102
- _context.next = 26;
102
+ _context.next = 29;
103
103
  break;
104
104
 
105
105
  case 24:
106
- _context.next = 26;
106
+ if (!params.selectedElementTag) {
107
+ _context.next = 27;
108
+ break;
109
+ }
110
+
111
+ _context.next = 27;
112
+ return dispatch.selection.update({
113
+ initSelectionId: params.selectedElementTag
114
+ });
115
+
116
+ case 27:
117
+ _context.next = 29;
107
118
  return dispatch.topoMod.initData(_extends({}, params, {
108
119
  type: params.type,
109
120
  id: id
110
121
  }));
111
122
 
112
- case 26:
123
+ case 29:
113
124
  _this.update({
114
125
  loading: false
126
+ }); // 是否打开概览
127
+
128
+
129
+ if (!params.openResourceOverview) {
130
+ _context.next = 33;
131
+ break;
132
+ }
133
+
134
+ _context.next = 33;
135
+ return dispatch.resourceDetail.update({
136
+ visible: true,
137
+ id: params.openResourceOverview
115
138
  });
116
139
 
117
- case 27:
140
+ case 33:
118
141
  case "end":
119
142
  return _context.stop();
120
143
  }
package/es/style.js CHANGED
@@ -25,9 +25,9 @@ import '@alifd/next/es/menu/style';
25
25
  import '@alifd/next/es/dialog/style';
26
26
  import '@riil-frontend/utils/es/style';
27
27
  import '@riil-frontend/component-riil-event-emitter/es/style';
28
+ import '@alifd/next/es/menu-button/style';
28
29
  import '@alifd/next/es/tab/style';
29
30
  import '@riil-frontend/component-pager/es/style';
30
- import '@alifd/next/es/menu-button/style';
31
31
  import '@alifd/next/es/loading/style';
32
32
  import '@alifd/next/es/divider/style';
33
33
 
@@ -187,7 +187,19 @@ var Topology = function Topology(props) {
187
187
  topo.selectionModel.init();
188
188
  topoDispatchers.update({
189
189
  graphLoaded: true
190
- });
190
+ }); // url选中元素
191
+
192
+ var _topo$store$getModelS = topo.store.getModelState('selection'),
193
+ initSelectionId = _topo$store$getModelS.initSelectionId;
194
+
195
+ if (initSelectionId) {
196
+ var ele = topo.getHtTopo().getGraphView().dm().getDataByTag(initSelectionId);
197
+ topo.getHtTopo().getGraphView().sm().setSelection([ele]);
198
+ var selectionDispatchers = topo.store.getModelDispatchers('selection');
199
+ selectionDispatchers.update({
200
+ initSelectionId: null
201
+ });
202
+ }
191
203
 
192
204
  if (onLoaded) {
193
205
  onLoaded(topoData);
@@ -54,7 +54,7 @@ var _ElementTagTipConfig = _interopRequireDefault(require("./tagstips/ElementTag
54
54
  var _SelectionModel = _interopRequireDefault(require("./SelectionModel"));
55
55
 
56
56
  // eslint-disable-next-line no-undef
57
- var version = typeof "7.0.0-dev.1" === 'string' ? "7.0.0-dev.1" : null;
57
+ var version = typeof "7.0.0-dev.2" === 'string' ? "7.0.0-dev.2" : null;
58
58
  console.info("\u62D3\u6251\u7248\u672C: " + version);
59
59
  /**
60
60
  * 拓扑显示和编辑
@@ -27,6 +27,8 @@ var _topoAlarm = _interopRequireDefault(require("./models/topoAlarm"));
27
27
 
28
28
  var _displayConfig = _interopRequireDefault(require("./models/displayConfig"));
29
29
 
30
+ var _resourceDetail = _interopRequireDefault(require("./models/viewer/resourceDetail"));
31
+
30
32
  var _topoBaseInfoOverview = _interopRequireDefault(require("./models/topoBaseInfoOverview"));
31
33
 
32
34
  var _lock = _interopRequireDefault(require("./models/viewer/lock"));
@@ -46,6 +48,7 @@ var _default = {
46
48
  // 显示模式
47
49
  topoAlarm: _topoAlarm["default"],
48
50
  displayConfig: _displayConfig["default"],
51
+ resourceDetail: _resourceDetail["default"],
49
52
  topoBaseInfoOverview: _topoBaseInfoOverview["default"],
50
53
  lock: _lock["default"]
51
54
  };
@@ -20,7 +20,9 @@ var _default = {
20
20
  // 定义 model 的初始 state
21
21
  state: {
22
22
  selection: [],
23
- selectionIds: []
23
+ selectionIds: [],
24
+ initSelectionId: null // 初始化选中元素
25
+
24
26
  },
25
27
  // 定义改变该模型状态的纯函数
26
28
  reducers: {
@@ -0,0 +1,40 @@
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 _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+
10
+ var _rlog = _interopRequireDefault(require("@riil-frontend/component-topology-utils/es/rlog"));
11
+
12
+ /**
13
+ * 资源概览
14
+ */
15
+ var _default = {
16
+ // 定义 model 的初始 state
17
+ state: {
18
+ visible: false,
19
+ id: null // 资源id
20
+
21
+ },
22
+ // 定义改变该模型状态的纯函数
23
+ reducers: {
24
+ update: function update(prevState, payload) {
25
+ return (0, _extends2["default"])({}, prevState, payload);
26
+ },
27
+ reset: function reset(prevState, payload) {
28
+ return {
29
+ visible: false,
30
+ id: null // 资源id
31
+
32
+ };
33
+ }
34
+ },
35
+ // 定义处理该模型副作用的函数
36
+ effects: function effects(dispatch) {
37
+ return {};
38
+ }
39
+ };
40
+ exports["default"] = _default;
@@ -25,10 +25,7 @@ function ResourceDetail(props) {
25
25
  var topo = props.topo,
26
26
  userId = props.userId,
27
27
  activeData = props.activeData,
28
- resourceData = props.resourceData; // {/* <Tab.Item title="操作" key="2">操作</Tab.Item>
29
- // <Tab.Item title="网络信息表" key="3">网络信息表</Tab.Item>
30
- // <Tab.Item title="Web工作台" key="4">Web工作台</Tab.Item> */}
31
-
28
+ resourceData = props.resourceData;
32
29
  var tabBodys = [{
33
30
  title: '资源概览',
34
31
  content: /*#__PURE__*/_react["default"].createElement(_ResourceOverview["default"], (0, _extends2["default"])({}, props, activeData, {
@@ -47,7 +44,7 @@ function ResourceDetail(props) {
47
44
  data: resourceData,
48
45
  topo: topo
49
46
  }),
50
- visible: activeData.type === 'node' && !!((_topo$viewProps = topo.viewProps) !== null && _topo$viewProps !== void 0 && (_topo$viewProps$topoC = _topo$viewProps.topoContext) !== null && _topo$viewProps$topoC !== void 0 && _topo$viewProps$topoC.isNetworkTopo)
47
+ visible: resourceData.type === 'node' && !!((_topo$viewProps = topo.viewProps) !== null && _topo$viewProps !== void 0 && (_topo$viewProps$topoC = _topo$viewProps.topoContext) !== null && _topo$viewProps$topoC !== void 0 && _topo$viewProps$topoC.isNetworkTopo)
51
48
  }].filter(function (item) {
52
49
  return item.visible !== false;
53
50
  });
@@ -19,18 +19,10 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
19
19
 
20
20
  var _react = _interopRequireWildcard(require("react"));
21
21
 
22
- var _FullheightTab = _interopRequireDefault(require("../../../../../components/FullheightTab"));
23
-
24
22
  var _overview = _interopRequireDefault(require("../../../../services/overview"));
25
23
 
26
- var _ClusterMemberTable = _interopRequireDefault(require("./components/ClusterMemberTable"));
27
-
28
24
  var _DrawerTitle = _interopRequireDefault(require("./components/DrawerTitle"));
29
25
 
30
- var _ResourceOverview = _interopRequireDefault(require("./components/ResourceOverview"));
31
-
32
- var _WebConsoleContainer = _interopRequireDefault(require("./components/WebConsole/WebConsoleContainer"));
33
-
34
26
  var _indexModule = _interopRequireDefault(require("./index.module.scss"));
35
27
 
36
28
  var _ResourceDetail = _interopRequireDefault(require("./ResourceDetail"));
@@ -42,7 +34,8 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
42
34
  // 基本信息
43
35
  function ResourceDetailDrawer(props) {
44
36
  var topo = props.topo,
45
- canShow = props.canShow;
37
+ canShow = props.canShow,
38
+ viewerProps = props.viewerProps;
46
39
 
47
40
  var _topo$store$useModel = topo.store.useModel('topoBaseInfoOverview'),
48
41
  topoState = _topo$store$useModel[0],
@@ -55,26 +48,35 @@ function ResourceDetailDrawer(props) {
55
48
  var _topo$store$useModelS2 = topo.store.useModelState("lock"),
56
49
  lock = _topo$store$useModelS2.lock;
57
50
 
58
- var _useState = (0, _react.useState)(false),
59
- visible = _useState[0],
60
- setVisible = _useState[1];
61
-
62
- var _useState2 = (0, _react.useState)({
63
- id: '',
64
- name: '',
65
- type: '',
66
- // 类型: node、link
67
- ciType: '',
68
- ciName: ''
69
- }),
70
- activeData = _useState2[0],
71
- setActiveData = _useState2[1];
72
-
73
- var _useState3 = (0, _react.useState)(''),
74
- userId = _useState3[0],
75
- setUserId = _useState3[1];
76
-
77
- var resourceData = topo.dataModel.useDataById(activeData.id);
51
+ var _topo$store$useModel2 = topo.store.useModel('resourceDetail'),
52
+ resourceDetailState = _topo$store$useModel2[0],
53
+ resourceDetailDispatchers = _topo$store$useModel2[1];
54
+
55
+ var visible = resourceDetailState.visible,
56
+ id = resourceDetailState.id;
57
+ var resourceData = topo.dataModel.useDataById(id);
58
+ var activeData = (0, _react.useMemo)(function () {
59
+ return resourceData ? {
60
+ id: resourceData.id,
61
+ name: resourceData.name,
62
+ type: resourceData.type === 'node' ? 'node' : 'link',
63
+ // 类型: node、link
64
+ ciType: resourceData.ciType,
65
+ ciName: resourceData.ciName
66
+ } : {
67
+ id: '',
68
+ name: '',
69
+ type: '',
70
+ // 类型: node、link
71
+ ciType: '',
72
+ ciName: ''
73
+ };
74
+ }, [resourceData]);
75
+
76
+ var _useState = (0, _react.useState)(''),
77
+ userId = _useState[0],
78
+ setUserId = _useState[1];
79
+
78
80
  (0, _react.useEffect)(function () {
79
81
  var notifier = topo.view.topoClient.notifier;
80
82
  notifier.on(_componentTopologyGraph.TopoEvent.EVENT_DOUBLE_CLICK, openOverview);
@@ -88,10 +90,17 @@ function ResourceDetailDrawer(props) {
88
90
  metricCodes: []
89
91
  });
90
92
  };
91
- }, [lock]); // 解决切换拓扑图隐藏概览
93
+ }, [lock]);
94
+ (0, _react.useEffect)(function () {
95
+ return function () {
96
+ resourceDetailDispatchers.reset();
97
+ };
98
+ }, []); // 解决切换拓扑图隐藏概览
92
99
 
93
100
  (0, _react.useEffect)(function () {
94
- setVisible(false); // TODO 其他数据重置
101
+ resourceDetailDispatchers.update({
102
+ visible: false
103
+ }); // TODO 其他数据重置
95
104
  }, [topoId]);
96
105
 
97
106
  function getUser() {
@@ -190,28 +199,31 @@ function ResourceDetailDrawer(props) {
190
199
 
191
200
  if (!canShow(htElement)) {
192
201
  return;
193
- }
202
+ } // 显示隐藏
203
+
194
204
 
195
- setActiveData({
196
- id: id,
197
- name: name,
198
- type: {
199
- linkGroup: 'link',
200
- group: 'node'
201
- }[type] || type,
202
- ciType: ciType,
203
- ciName: ciName
204
- }); // 显示隐藏
205
+ if (targetType === 'doubleClick') {
206
+ resourceDetailDispatchers.update({
207
+ visible: true,
208
+ id: id
209
+ });
210
+ } else {
211
+ resourceDetailDispatchers.update({
212
+ id: id
213
+ });
214
+ } // userId
205
215
 
206
- targetType === 'doubleClick' && setVisible(true); // userId
207
216
 
208
217
  getUser();
209
218
  }
210
219
 
211
220
  var renderContent = function renderContent() {
212
- return /*#__PURE__*/_react["default"].createElement(_ResourceDetail["default"], (0, _extends2["default"])({}, props, {
221
+ var _viewerProps$resource;
222
+
223
+ var ResourceDetailWidget = (viewerProps === null || viewerProps === void 0 ? void 0 : (_viewerProps$resource = viewerProps.resourceDetailProps) === null || _viewerProps$resource === void 0 ? void 0 : _viewerProps$resource.ResourceDetailWidget) || _ResourceDetail["default"];
224
+ return /*#__PURE__*/_react["default"].createElement(ResourceDetailWidget, (0, _extends2["default"])({}, props, {
213
225
  topo: topo,
214
- userId: _react.useId,
226
+ userId: userId,
215
227
  activeData: activeData,
216
228
  resourceData: resourceData
217
229
  }));
@@ -228,7 +240,9 @@ function ResourceDetailDrawer(props) {
228
240
  width: 580,
229
241
  hasMask: false,
230
242
  onClose: function onClose() {
231
- return setVisible(false);
243
+ return resourceDetailDispatchers.update({
244
+ visible: false
245
+ });
232
246
  }
233
247
  }, visible && resourceData && renderContent()));
234
248
  }