@riil-frontend/component-topology 5.0.16 → 5.0.18
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 +4 -4
- package/es/core/components/TopoView/topoView.js +11 -5
- package/es/core/hooks/useSelection.js +3 -129
- package/es/core/models/HistoryManager.js +5 -2
- package/es/core/models/SelectionManager.js +138 -0
- package/es/core/models/TopoApp.js +1 -1
- package/lib/core/components/TopoView/topoView.js +13 -7
- package/lib/core/hooks/useSelection.js +3 -136
- package/lib/core/models/HistoryManager.js +2 -2
- package/lib/core/models/SelectionManager.js +149 -0
- package/lib/core/models/TopoApp.js +1 -1
- package/package.json +2 -2
- package/es/core/hooks/useSelectionListener.js +0 -35
- package/lib/core/hooks/useSelectionListener.js +0 -45
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
-
import React, { useState, useEffect, useRef, useCallback } from 'react';
|
|
2
|
+
import React, { useState, useEffect, useRef, useCallback, useMemo } from 'react';
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
4
|
import classnames from 'classnames';
|
|
5
5
|
import TopoGraph, { TopoEvent } from '@riil-frontend/component-topology-graph';
|
|
6
6
|
import rlog from '@riil-frontend/component-topology-utils/es/rlog';
|
|
7
7
|
import useTopoEdit from "../../hooks/useTopoEdit";
|
|
8
|
-
import useSelectionListener from "../../hooks/useSelectionListener";
|
|
9
8
|
import showMessage from "../../utils/showMessage";
|
|
10
9
|
import EditorPlugin from "../../editor/components/EditorPlugin";
|
|
11
10
|
import ViewerPlugin from "../../viewer/components/plugins/ViewerPlugin";
|
|
@@ -16,11 +15,12 @@ import BackgroundView from "../../editor/components/BackgroundView";
|
|
|
16
15
|
import { updateEdgeExpanded } from "../../utils/edgeUtil";
|
|
17
16
|
import useManageStatus from "../../hooks/useManageStatus";
|
|
18
17
|
import useAlarm from "../../hooks/useAlarm";
|
|
19
|
-
import styles from "./TopoView.module.scss";
|
|
20
18
|
import useRouterAdapter from "../../hooks/useRouterAdapter";
|
|
21
19
|
import { fixLink } from "../../utils/graphLinkUtil";
|
|
22
20
|
import { handleClusterNoPermission, upgradeV103GraphClusterNode } from "../../../utils/clusterUtil";
|
|
23
|
-
import
|
|
21
|
+
import SelectionManager from "../../models/SelectionManager";
|
|
22
|
+
import HistoryManager from "../../models/HistoryManager";
|
|
23
|
+
import styles from "./TopoView.module.scss";
|
|
24
24
|
|
|
25
25
|
var Topology = function Topology(props) {
|
|
26
26
|
var _classnames, _graphViewProps$creat;
|
|
@@ -66,7 +66,9 @@ var Topology = function Topology(props) {
|
|
|
66
66
|
setTData = _useState[1]; // TODO 临时放这里,当前监听内容较多
|
|
67
67
|
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
var selectionManager = useMemo(function () {
|
|
70
|
+
return new SelectionManager(topo);
|
|
71
|
+
}, []);
|
|
70
72
|
useRouterAdapter(props);
|
|
71
73
|
var topoEdit = useTopoEdit({
|
|
72
74
|
topo: topo,
|
|
@@ -106,7 +108,9 @@ var Topology = function Topology(props) {
|
|
|
106
108
|
setTData(buildLoadOptions ? buildLoadOptions(topoData) : topoData);
|
|
107
109
|
}, [topoData]);
|
|
108
110
|
useEffect(function () {
|
|
111
|
+
// 拓扑退出注销
|
|
109
112
|
return function () {
|
|
113
|
+
selectionManager.destroy();
|
|
110
114
|
topoDispatchers.reset();
|
|
111
115
|
};
|
|
112
116
|
}, []);
|
|
@@ -130,6 +134,7 @@ var Topology = function Topology(props) {
|
|
|
130
134
|
topo.historyManager = new HistoryManager(topo, htHistoryManager);
|
|
131
135
|
}
|
|
132
136
|
|
|
137
|
+
selectionManager.init();
|
|
133
138
|
topoDispatchers.update({
|
|
134
139
|
graphLoaded2: true
|
|
135
140
|
});
|
|
@@ -144,6 +149,7 @@ var Topology = function Topology(props) {
|
|
|
144
149
|
fixLink(topo);
|
|
145
150
|
handleClusterNoPermission(topo);
|
|
146
151
|
updateEdgeExpanded(topo);
|
|
152
|
+
selectionManager.init();
|
|
147
153
|
topoDispatchers.update({
|
|
148
154
|
graphLoaded: true
|
|
149
155
|
});
|
|
@@ -1,139 +1,13 @@
|
|
|
1
|
-
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
-
import { useCallback, useRef } from 'react';
|
|
3
|
-
import rlog from '@riil-frontend/component-topology-utils/es/rlog';
|
|
4
1
|
/**
|
|
5
2
|
* Selection
|
|
6
3
|
*/
|
|
7
|
-
|
|
8
4
|
function useSelection(props) {
|
|
9
5
|
var topo = props.topo;
|
|
10
|
-
var selectionDispatchers = topo.store.useModelDispatchers('selection');
|
|
11
|
-
var removeListenerRef = useRef(null);
|
|
12
|
-
|
|
13
|
-
var setSelection = function setSelection(selection) {
|
|
14
|
-
selectionDispatchers.update({
|
|
15
|
-
selection: selection
|
|
16
|
-
});
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
var updateSelection = useCallback(function (data) {
|
|
20
|
-
try {
|
|
21
|
-
var selectionModel = topo.getSelectionModel();
|
|
22
|
-
var htSelection = selectionModel.getSelection().getArray(); // TODO 对比变更更新
|
|
23
|
-
|
|
24
|
-
var selectionArr = htSelection.map(getElementData); // rlog.info("updateSelection", selectionArr.map((element) => element.id));
|
|
25
|
-
|
|
26
|
-
setSelection(selectionArr);
|
|
27
|
-
} catch (e) {
|
|
28
|
-
rlog.error('updateSelection error', e);
|
|
29
|
-
}
|
|
30
|
-
}, []);
|
|
31
|
-
var initListener = useCallback(function () {
|
|
32
|
-
rlog.info('Selection initListener');
|
|
33
|
-
|
|
34
|
-
function handleSelectionChange(e) {
|
|
35
|
-
rlog.info('Selection handleSelectionChange', e);
|
|
36
|
-
updateSelection();
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
function handleDataPropertyChange(e) {
|
|
40
|
-
var property = e.property,
|
|
41
|
-
data = e.data;
|
|
42
|
-
|
|
43
|
-
if (['position', 'childChange', 'a:scale'].indexOf(property) !== -1) {
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
var selectionIds = selectionModel.getSelection().getArray().map(function (item) {
|
|
48
|
-
return item.getId();
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
if (selectionIds.indexOf(data.getId()) > -1) {
|
|
52
|
-
// console.info('PropertyChangeListener', e);
|
|
53
|
-
updateSelection();
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
var dataModel = topo.getDataModel();
|
|
58
|
-
var selectionModel = topo.getSelectionModel();
|
|
59
|
-
selectionModel.addSelectionChangeListener(handleSelectionChange);
|
|
60
|
-
dataModel.addDataPropertyChangeListener(handleDataPropertyChange);
|
|
61
|
-
return function () {
|
|
62
|
-
selectionModel.removeSelectionChangeListener(handleSelectionChange);
|
|
63
|
-
dataModel.removeDataPropertyChangeListener(handleDataPropertyChange);
|
|
64
|
-
};
|
|
65
|
-
}, []);
|
|
66
|
-
var removeListener = useCallback(function (data) {
|
|
67
|
-
rlog.info('Selection removeListener');
|
|
68
|
-
|
|
69
|
-
if (removeListenerRef.current) {
|
|
70
|
-
removeListenerRef.current();
|
|
71
|
-
removeListenerRef.current = null;
|
|
72
|
-
}
|
|
73
|
-
}, []);
|
|
74
|
-
var initSelection = useCallback(function () {
|
|
75
|
-
rlog.info('Selection init');
|
|
76
|
-
|
|
77
|
-
if (removeListenerRef.current) {
|
|
78
|
-
removeListener();
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
updateSelection();
|
|
82
|
-
removeListenerRef.current = initListener();
|
|
83
|
-
}, []);
|
|
84
|
-
var destroySelection = useCallback(function (data) {
|
|
85
|
-
rlog.info('Selection destroy');
|
|
86
|
-
removeListener();
|
|
87
|
-
setSelection([]);
|
|
88
|
-
}, []);
|
|
89
|
-
var resetSelection = useCallback(function (data) {
|
|
90
|
-
rlog.info('Selection reset');
|
|
91
|
-
setSelection([]);
|
|
92
|
-
}, []);
|
|
93
|
-
return {
|
|
94
|
-
initSelection: initSelection,
|
|
95
|
-
destroySelection: destroySelection,
|
|
96
|
-
resetSelection: resetSelection,
|
|
97
|
-
updateSelection: updateSelection // destroy,
|
|
98
|
-
|
|
99
|
-
};
|
|
100
|
-
} // 构造元素数据
|
|
101
|
-
|
|
102
6
|
|
|
103
|
-
var
|
|
104
|
-
|
|
105
|
-
var className = element.getClassName();
|
|
106
|
-
return {
|
|
107
|
-
className: className,
|
|
108
|
-
id: element.getId(),
|
|
109
|
-
tag: element.getTag(),
|
|
110
|
-
// 业务id
|
|
111
|
-
name: element.getName(),
|
|
112
|
-
attrObject: JSON.parse(JSON.stringify(element.getAttrObject() || {})),
|
|
113
|
-
styleMap: JSON.parse(JSON.stringify(element.getStyleMap() || {}))
|
|
114
|
-
};
|
|
115
|
-
},
|
|
116
|
-
'ht.Edge': function htEdge(element) {
|
|
117
|
-
return _extends({}, map.common(element));
|
|
118
|
-
},
|
|
119
|
-
'ht.Group': function htGroup(element) {
|
|
120
|
-
return _extends({}, map['ht.Node'](element), {
|
|
121
|
-
expanded: element.isExpanded()
|
|
122
|
-
});
|
|
123
|
-
},
|
|
124
|
-
'ht.Node': function htNode(element) {
|
|
125
|
-
return _extends({}, map.common(element), {
|
|
126
|
-
image: element.getImage(),
|
|
127
|
-
width: element.getWidth(),
|
|
128
|
-
height: element.getHeight(),
|
|
129
|
-
position: element.getPosition()
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
};
|
|
7
|
+
var _topo$store$useModelS = topo.store.useModelState('selection'),
|
|
8
|
+
selection = _topo$store$useModelS.selection;
|
|
133
9
|
|
|
134
|
-
|
|
135
|
-
var className = element.getClassName();
|
|
136
|
-
return (map[className] || map.common)(element);
|
|
10
|
+
return selection;
|
|
137
11
|
}
|
|
138
12
|
|
|
139
13
|
export default useSelection;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
2
|
import rlog from '@riil-frontend/component-topology-utils/es/rlog';
|
|
3
3
|
var ht = window.ht;
|
|
4
|
-
|
|
4
|
+
|
|
5
|
+
var HistoryManager = /*#__PURE__*/function () {
|
|
5
6
|
function HistoryManager(topo, htHistoryManager) {
|
|
6
7
|
this.topo = null;
|
|
7
8
|
this.htHistoryManager = void 0;
|
|
@@ -175,4 +176,6 @@ export var HistoryManager = /*#__PURE__*/function () {
|
|
|
175
176
|
};
|
|
176
177
|
|
|
177
178
|
return HistoryManager;
|
|
178
|
-
}();
|
|
179
|
+
}();
|
|
180
|
+
|
|
181
|
+
export { HistoryManager as default };
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import rlog from '@riil-frontend/component-topology-utils/es/rlog';
|
|
3
|
+
|
|
4
|
+
var SelectionManager = /*#__PURE__*/function () {
|
|
5
|
+
function SelectionManager(topo) {
|
|
6
|
+
var _this = this;
|
|
7
|
+
|
|
8
|
+
this.topo = null;
|
|
9
|
+
this.inited = false;
|
|
10
|
+
|
|
11
|
+
this.setSelection = function (selection) {
|
|
12
|
+
var selectionDispatchers = _this.topo.store.getModelDispatchers('selection');
|
|
13
|
+
|
|
14
|
+
selectionDispatchers.update({
|
|
15
|
+
selection: selection
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
this.updateSelection = function () {
|
|
20
|
+
try {
|
|
21
|
+
var selectionModel = _this.topo.getSelectionModel();
|
|
22
|
+
|
|
23
|
+
var htSelection = selectionModel.getSelection().getArray(); // TODO 对比变更更新
|
|
24
|
+
|
|
25
|
+
var selectionArr = htSelection.map(getElementData); // rlog.info("updateSelection", selectionArr.map((element) => element.id));
|
|
26
|
+
|
|
27
|
+
_this.setSelection(selectionArr);
|
|
28
|
+
} catch (e) {
|
|
29
|
+
rlog.error('updateSelection error', e);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
this.topo = topo;
|
|
34
|
+
this.handleSelectionChange = this.handleSelectionChange.bind(this);
|
|
35
|
+
this.handleDataPropertyChange = this.handleDataPropertyChange.bind(this);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
var _proto = SelectionManager.prototype;
|
|
39
|
+
|
|
40
|
+
_proto.init = function init() {
|
|
41
|
+
if (this.inited) {
|
|
42
|
+
this.removeListener();
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
this.updateSelection();
|
|
46
|
+
this.initListener();
|
|
47
|
+
this.inited = true;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
_proto.destroy = function destroy() {
|
|
51
|
+
this.removeListener();
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
_proto.handleSelectionChange = function handleSelectionChange(e) {
|
|
55
|
+
rlog.info('Selection handleSelectionChange', e);
|
|
56
|
+
this.updateSelection();
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
_proto.handleDataPropertyChange = function handleDataPropertyChange(e) {
|
|
60
|
+
var property = e.property,
|
|
61
|
+
data = e.data;
|
|
62
|
+
|
|
63
|
+
if (['position', 'childChange', 'a:scale'].indexOf(property) !== -1) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
var selectionModel = this.topo.getSelectionModel();
|
|
68
|
+
var selectionIds = selectionModel.getSelection().getArray().map(function (item) {
|
|
69
|
+
return item.getId();
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
if (selectionIds.indexOf(data.getId()) > -1) {
|
|
73
|
+
// console.info('PropertyChangeListener', e);
|
|
74
|
+
this.updateSelection();
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
_proto.initListener = function initListener() {
|
|
79
|
+
rlog.info('Selection initListener');
|
|
80
|
+
var dataModel = this.topo.getDataModel();
|
|
81
|
+
var selectionModel = this.topo.getSelectionModel();
|
|
82
|
+
selectionModel.addSelectionChangeListener(this.handleSelectionChange);
|
|
83
|
+
dataModel.addDataPropertyChangeListener(this.handleDataPropertyChange);
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
_proto.removeListener = function removeListener() {
|
|
87
|
+
if (!this.inited) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
rlog.info('Selection removeListener');
|
|
92
|
+
var dataModel = this.topo.getDataModel();
|
|
93
|
+
var selectionModel = this.topo.getSelectionModel();
|
|
94
|
+
selectionModel.removeSelectionChangeListener(this.handleSelectionChange);
|
|
95
|
+
dataModel.removeDataPropertyChangeListener(this.handleDataPropertyChange);
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
return SelectionManager;
|
|
99
|
+
}();
|
|
100
|
+
|
|
101
|
+
export { SelectionManager as default };
|
|
102
|
+
; // 构造元素数据
|
|
103
|
+
|
|
104
|
+
var map = {
|
|
105
|
+
common: function common(element) {
|
|
106
|
+
var className = element.getClassName();
|
|
107
|
+
return {
|
|
108
|
+
className: className,
|
|
109
|
+
id: element.getId(),
|
|
110
|
+
tag: element.getTag(),
|
|
111
|
+
// 业务id
|
|
112
|
+
name: element.getName(),
|
|
113
|
+
attrObject: JSON.parse(JSON.stringify(element.getAttrObject() || {})),
|
|
114
|
+
styleMap: JSON.parse(JSON.stringify(element.getStyleMap() || {}))
|
|
115
|
+
};
|
|
116
|
+
},
|
|
117
|
+
'ht.Edge': function htEdge(element) {
|
|
118
|
+
return _extends({}, map.common(element));
|
|
119
|
+
},
|
|
120
|
+
'ht.Group': function htGroup(element) {
|
|
121
|
+
return _extends({}, map['ht.Node'](element), {
|
|
122
|
+
expanded: element.isExpanded()
|
|
123
|
+
});
|
|
124
|
+
},
|
|
125
|
+
'ht.Node': function htNode(element) {
|
|
126
|
+
return _extends({}, map.common(element), {
|
|
127
|
+
image: element.getImage(),
|
|
128
|
+
width: element.getWidth(),
|
|
129
|
+
height: element.getHeight(),
|
|
130
|
+
position: element.getPosition()
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
function getElementData(element) {
|
|
136
|
+
var className = element.getClassName();
|
|
137
|
+
return (map[className] || map.common)(element);
|
|
138
|
+
}
|
|
@@ -21,7 +21,7 @@ import PluginManager from "./PluginManager";
|
|
|
21
21
|
import topoFactory from "./topoFactory";
|
|
22
22
|
import ElementTagTipConfig from "./tagstips/ElementTagTipConfig"; // eslint-disable-next-line no-undef
|
|
23
23
|
|
|
24
|
-
var version = typeof "5.0.
|
|
24
|
+
var version = typeof "5.0.18" === 'string' ? "5.0.18" : null;
|
|
25
25
|
console.info("\u62D3\u6251\u7248\u672C: " + version);
|
|
26
26
|
/**
|
|
27
27
|
* 拓扑显示和编辑
|
|
@@ -19,8 +19,6 @@ var _rlog = _interopRequireDefault(require("@riil-frontend/component-topology-ut
|
|
|
19
19
|
|
|
20
20
|
var _useTopoEdit = _interopRequireDefault(require("../../hooks/useTopoEdit"));
|
|
21
21
|
|
|
22
|
-
var _useSelectionListener = _interopRequireDefault(require("../../hooks/useSelectionListener"));
|
|
23
|
-
|
|
24
22
|
var _showMessage = _interopRequireDefault(require("../../utils/showMessage"));
|
|
25
23
|
|
|
26
24
|
var _EditorPlugin = _interopRequireDefault(require("../../editor/components/EditorPlugin"));
|
|
@@ -41,15 +39,17 @@ var _useManageStatus = _interopRequireDefault(require("../../hooks/useManageStat
|
|
|
41
39
|
|
|
42
40
|
var _useAlarm = _interopRequireDefault(require("../../hooks/useAlarm"));
|
|
43
41
|
|
|
44
|
-
var _TopoViewModule = _interopRequireDefault(require("./TopoView.module.scss"));
|
|
45
|
-
|
|
46
42
|
var _useRouterAdapter = _interopRequireDefault(require("../../hooks/useRouterAdapter"));
|
|
47
43
|
|
|
48
44
|
var _graphLinkUtil = require("../../utils/graphLinkUtil");
|
|
49
45
|
|
|
50
46
|
var _clusterUtil = require("../../../utils/clusterUtil");
|
|
51
47
|
|
|
52
|
-
var
|
|
48
|
+
var _SelectionManager = _interopRequireDefault(require("../../models/SelectionManager"));
|
|
49
|
+
|
|
50
|
+
var _HistoryManager = _interopRequireDefault(require("../../models/HistoryManager"));
|
|
51
|
+
|
|
52
|
+
var _TopoViewModule = _interopRequireDefault(require("./TopoView.module.scss"));
|
|
53
53
|
|
|
54
54
|
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); }
|
|
55
55
|
|
|
@@ -99,7 +99,9 @@ var Topology = function Topology(props) {
|
|
|
99
99
|
setTData = _useState[1]; // TODO 临时放这里,当前监听内容较多
|
|
100
100
|
|
|
101
101
|
|
|
102
|
-
(0,
|
|
102
|
+
var selectionManager = (0, _react.useMemo)(function () {
|
|
103
|
+
return new _SelectionManager["default"](topo);
|
|
104
|
+
}, []);
|
|
103
105
|
(0, _useRouterAdapter["default"])(props);
|
|
104
106
|
var topoEdit = (0, _useTopoEdit["default"])({
|
|
105
107
|
topo: topo,
|
|
@@ -139,7 +141,9 @@ var Topology = function Topology(props) {
|
|
|
139
141
|
setTData(buildLoadOptions ? buildLoadOptions(topoData) : topoData);
|
|
140
142
|
}, [topoData]);
|
|
141
143
|
(0, _react.useEffect)(function () {
|
|
144
|
+
// 拓扑退出注销
|
|
142
145
|
return function () {
|
|
146
|
+
selectionManager.destroy();
|
|
143
147
|
topoDispatchers.reset();
|
|
144
148
|
};
|
|
145
149
|
}, []);
|
|
@@ -162,9 +166,10 @@ var Topology = function Topology(props) {
|
|
|
162
166
|
var htHistoryManager = topo.getDataModel().getHistoryManager();
|
|
163
167
|
|
|
164
168
|
if (htHistoryManager) {
|
|
165
|
-
topo.historyManager = new _HistoryManager
|
|
169
|
+
topo.historyManager = new _HistoryManager["default"](topo, htHistoryManager);
|
|
166
170
|
}
|
|
167
171
|
|
|
172
|
+
selectionManager.init();
|
|
168
173
|
topoDispatchers.update({
|
|
169
174
|
graphLoaded2: true
|
|
170
175
|
});
|
|
@@ -180,6 +185,7 @@ var Topology = function Topology(props) {
|
|
|
180
185
|
(0, _graphLinkUtil.fixLink)(topo);
|
|
181
186
|
(0, _clusterUtil.handleClusterNoPermission)(topo);
|
|
182
187
|
(0, _edgeUtil.updateEdgeExpanded)(topo);
|
|
188
|
+
selectionManager.init();
|
|
183
189
|
topoDispatchers.update({
|
|
184
190
|
graphLoaded: true
|
|
185
191
|
});
|
|
@@ -1,151 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
3
|
exports.__esModule = true;
|
|
6
4
|
exports["default"] = void 0;
|
|
7
5
|
|
|
8
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
-
|
|
10
|
-
var _react = require("react");
|
|
11
|
-
|
|
12
|
-
var _rlog = _interopRequireDefault(require("@riil-frontend/component-topology-utils/es/rlog"));
|
|
13
|
-
|
|
14
6
|
/**
|
|
15
7
|
* Selection
|
|
16
8
|
*/
|
|
17
9
|
function useSelection(props) {
|
|
18
10
|
var topo = props.topo;
|
|
19
|
-
var selectionDispatchers = topo.store.useModelDispatchers('selection');
|
|
20
|
-
var removeListenerRef = (0, _react.useRef)(null);
|
|
21
|
-
|
|
22
|
-
var setSelection = function setSelection(selection) {
|
|
23
|
-
selectionDispatchers.update({
|
|
24
|
-
selection: selection
|
|
25
|
-
});
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
var updateSelection = (0, _react.useCallback)(function (data) {
|
|
29
|
-
try {
|
|
30
|
-
var selectionModel = topo.getSelectionModel();
|
|
31
|
-
var htSelection = selectionModel.getSelection().getArray(); // TODO 对比变更更新
|
|
32
|
-
|
|
33
|
-
var selectionArr = htSelection.map(getElementData); // rlog.info("updateSelection", selectionArr.map((element) => element.id));
|
|
34
|
-
|
|
35
|
-
setSelection(selectionArr);
|
|
36
|
-
} catch (e) {
|
|
37
|
-
_rlog["default"].error('updateSelection error', e);
|
|
38
|
-
}
|
|
39
|
-
}, []);
|
|
40
|
-
var initListener = (0, _react.useCallback)(function () {
|
|
41
|
-
_rlog["default"].info('Selection initListener');
|
|
42
|
-
|
|
43
|
-
function handleSelectionChange(e) {
|
|
44
|
-
_rlog["default"].info('Selection handleSelectionChange', e);
|
|
45
|
-
|
|
46
|
-
updateSelection();
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
function handleDataPropertyChange(e) {
|
|
50
|
-
var property = e.property,
|
|
51
|
-
data = e.data;
|
|
52
|
-
|
|
53
|
-
if (['position', 'childChange', 'a:scale'].indexOf(property) !== -1) {
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
var selectionIds = selectionModel.getSelection().getArray().map(function (item) {
|
|
58
|
-
return item.getId();
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
if (selectionIds.indexOf(data.getId()) > -1) {
|
|
62
|
-
// console.info('PropertyChangeListener', e);
|
|
63
|
-
updateSelection();
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
var dataModel = topo.getDataModel();
|
|
68
|
-
var selectionModel = topo.getSelectionModel();
|
|
69
|
-
selectionModel.addSelectionChangeListener(handleSelectionChange);
|
|
70
|
-
dataModel.addDataPropertyChangeListener(handleDataPropertyChange);
|
|
71
|
-
return function () {
|
|
72
|
-
selectionModel.removeSelectionChangeListener(handleSelectionChange);
|
|
73
|
-
dataModel.removeDataPropertyChangeListener(handleDataPropertyChange);
|
|
74
|
-
};
|
|
75
|
-
}, []);
|
|
76
|
-
var removeListener = (0, _react.useCallback)(function (data) {
|
|
77
|
-
_rlog["default"].info('Selection removeListener');
|
|
78
|
-
|
|
79
|
-
if (removeListenerRef.current) {
|
|
80
|
-
removeListenerRef.current();
|
|
81
|
-
removeListenerRef.current = null;
|
|
82
|
-
}
|
|
83
|
-
}, []);
|
|
84
|
-
var initSelection = (0, _react.useCallback)(function () {
|
|
85
|
-
_rlog["default"].info('Selection init');
|
|
86
|
-
|
|
87
|
-
if (removeListenerRef.current) {
|
|
88
|
-
removeListener();
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
updateSelection();
|
|
92
|
-
removeListenerRef.current = initListener();
|
|
93
|
-
}, []);
|
|
94
|
-
var destroySelection = (0, _react.useCallback)(function (data) {
|
|
95
|
-
_rlog["default"].info('Selection destroy');
|
|
96
|
-
|
|
97
|
-
removeListener();
|
|
98
|
-
setSelection([]);
|
|
99
|
-
}, []);
|
|
100
|
-
var resetSelection = (0, _react.useCallback)(function (data) {
|
|
101
|
-
_rlog["default"].info('Selection reset');
|
|
102
|
-
|
|
103
|
-
setSelection([]);
|
|
104
|
-
}, []);
|
|
105
|
-
return {
|
|
106
|
-
initSelection: initSelection,
|
|
107
|
-
destroySelection: destroySelection,
|
|
108
|
-
resetSelection: resetSelection,
|
|
109
|
-
updateSelection: updateSelection // destroy,
|
|
110
|
-
|
|
111
|
-
};
|
|
112
|
-
} // 构造元素数据
|
|
113
|
-
|
|
114
11
|
|
|
115
|
-
var
|
|
116
|
-
|
|
117
|
-
var className = element.getClassName();
|
|
118
|
-
return {
|
|
119
|
-
className: className,
|
|
120
|
-
id: element.getId(),
|
|
121
|
-
tag: element.getTag(),
|
|
122
|
-
// 业务id
|
|
123
|
-
name: element.getName(),
|
|
124
|
-
attrObject: JSON.parse(JSON.stringify(element.getAttrObject() || {})),
|
|
125
|
-
styleMap: JSON.parse(JSON.stringify(element.getStyleMap() || {}))
|
|
126
|
-
};
|
|
127
|
-
},
|
|
128
|
-
'ht.Edge': function htEdge(element) {
|
|
129
|
-
return (0, _extends2["default"])({}, map.common(element));
|
|
130
|
-
},
|
|
131
|
-
'ht.Group': function htGroup(element) {
|
|
132
|
-
return (0, _extends2["default"])({}, map['ht.Node'](element), {
|
|
133
|
-
expanded: element.isExpanded()
|
|
134
|
-
});
|
|
135
|
-
},
|
|
136
|
-
'ht.Node': function htNode(element) {
|
|
137
|
-
return (0, _extends2["default"])({}, map.common(element), {
|
|
138
|
-
image: element.getImage(),
|
|
139
|
-
width: element.getWidth(),
|
|
140
|
-
height: element.getHeight(),
|
|
141
|
-
position: element.getPosition()
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
};
|
|
12
|
+
var _topo$store$useModelS = topo.store.useModelState('selection'),
|
|
13
|
+
selection = _topo$store$useModelS.selection;
|
|
145
14
|
|
|
146
|
-
|
|
147
|
-
var className = element.getClassName();
|
|
148
|
-
return (map[className] || map.common)(element);
|
|
15
|
+
return selection;
|
|
149
16
|
}
|
|
150
17
|
|
|
151
18
|
var _default = useSelection;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
5
|
exports.__esModule = true;
|
|
6
|
-
exports
|
|
6
|
+
exports["default"] = void 0;
|
|
7
7
|
|
|
8
8
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
9
|
|
|
@@ -194,4 +194,4 @@ var HistoryManager = /*#__PURE__*/function () {
|
|
|
194
194
|
return HistoryManager;
|
|
195
195
|
}();
|
|
196
196
|
|
|
197
|
-
exports
|
|
197
|
+
exports["default"] = HistoryManager;
|