Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit fbfd1ad

Browse files
fix: drag edge bug
1 parent dc40b83 commit fbfd1ad

File tree

4 files changed

+58
-16
lines changed

4 files changed

+58
-16
lines changed

‎package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-visual-modeling",
3-
"version": "1.0.46",
3+
"version": "1.1.0",
44
"description": "一个基于React的数据可视化建模的DAG图,适用于UML,数据库建模,数据仓库建设等业务",
55
"main": "dist/index.js",
66
"pack": "pack/index.js",

‎src/adaptor.js‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ export const diffPropsData = (newData, oldData, options) => {
7575
});
7676

7777
if(!edge) {
78-
return
78+
return;
7979
}
8080

8181
if(isSameLabel(a.label, edge.label)) {

‎src/canvas/canvas.js‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,19 @@ export default class TableCanvas extends Canvas {
271271
});
272272
}
273273

274+
focusItems(nodes = [], edges = []) {
275+
this.emit('custom.item.focus', {
276+
nodes,
277+
edges
278+
});
279+
nodes.forEach((item) => {
280+
item.focus();
281+
});
282+
edges.forEach((item) => {
283+
item.focus();
284+
});
285+
}
286+
274287
_findChain(nodeId, pointId) {
275288
let resultPoints = [];
276289
let resultEdges = [];

‎src/index.tsx‎

Lines changed: 43 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -220,13 +220,12 @@ export default class TableBuilding extends React.Component<ComProps, any> {
220220

221221
let _addLinks = (links: any) => {
222222
let newLinkOpts = links.map((item: any) => {
223-
let _oldSource = _.get(item, 'sourceEndpoint.id', '');
224-
let _oldTarget = _.get(item, 'targetEndpoint.id', '');
225-
let _newSource = _oldSource.indexOf('-right') !== -1 ? _oldSource : _oldSource + '-right';
226-
let _newTarget = _oldTarget.indexOf('-left') !== -1 ? _oldTarget : _oldTarget + '-left';
227-
223+
let _oldSource = _.get(item, 'sourceEndpoint.id', '').replace('-right', '');
224+
let _oldTarget = _.get(item, 'targetEndpoint.id', '').replace('-left', '');
225+
let _newSource = _oldSource + '-right';
226+
let _newTarget = _oldTarget + '-left';
228227
return {
229-
id: item.options.id,
228+
id: item.options.id||`${item.options.sourceNode}-${_oldSource}-${item.options.targetNode}-${_oldTarget}`,
230229
sourceNode: item.options.sourceNode,
231230
targetNode: item.options.targetNode,
232231
arrowShapeType: item.arrowShapeType,
@@ -247,17 +246,19 @@ export default class TableBuilding extends React.Component<ComProps, any> {
247246
target: _.get(item, 'targetEndpoint.options.originId'),
248247
}));
249248
});
249+
250+
return newEdge;
250251
}
251252

252253
this.canvas.on('system.link.connect', (data: any) => {
253-
_addLinks(data.links || []);
254-
this.onConnectEdges(data.links);
254+
letnewEdges=_addLinks(data.links || []);
255+
this.onConnectEdges(newEdges);
255256
this.forceUpdate();
256257
});
257258

258259
this.canvas.on('system.link.reconnect', (data: any) => {
259-
_addLinks(data.addLinks || []);
260-
this.onReConnectEdges(data.addLinks, data.delLinks);
260+
let_addEdges=_addLinks(data.addLinks || []);
261+
this.onReConnectEdges(_addEdges, data.delLinks);
261262

262263
this.forceUpdate();
263264
});
@@ -322,6 +323,13 @@ export default class TableBuilding extends React.Component<ComProps, any> {
322323
this.onDeleteNodes([data.node]);
323324
});
324325

326+
this.canvas.on('custom.item.focus', (data: any) => {
327+
this._unfocus();
328+
this._focusNodes = this._focusNodes.concat(data.nodes || []);
329+
this._focusLinks = this._focusLinks.concat(data.edges || []);
330+
331+
});
332+
325333
this.canvas.on('table.canvas.expand', () => {
326334
this.forceUpdate();
327335
});
@@ -351,7 +359,8 @@ export default class TableBuilding extends React.Component<ComProps, any> {
351359

352360
let diffInfo = diffPropsData(result, this.canvasData, {
353361
oldCol: this.props.columns,
354-
newCol: newProps.columns
362+
newCol: newProps.columns,
363+
updateEdges: this.canvas.edges
355364
});
356365
if (diffInfo.addNodes.length > 0) {
357366
this.canvas.addNodes(diffInfo.addNodes);
@@ -407,9 +416,23 @@ export default class TableBuilding extends React.Component<ComProps, any> {
407416

408417
onConnectEdges(links) {
409418
let linksInfo = links.map((item) => {
410-
return item.options;
419+
return _.assign(item.options, {
420+
source: _.get(item, 'options.source', '').replace('-right', ''),
421+
target: _.get(item, 'options.target', '').replace('-left', '')
422+
});
411423
});
412424

425+
let newEdges = _.differenceWith(linksInfo, this.canvasData.edges, (a: any, b: any) => {
426+
return (
427+
a.sourceNode === b.sourceNode &&
428+
a.targetNode === b.targetNode &&
429+
a.source === b.source &&
430+
a.target === b.target
431+
);
432+
});
433+
434+
this.canvasData.edges = this.canvasData.edges.concat(newEdges);
435+
413436
this.props.onChange && this.props.onChange({
414437
type: 'system.link.connect',
415438
links: linksInfo
@@ -418,10 +441,16 @@ export default class TableBuilding extends React.Component<ComProps, any> {
418441

419442
onReConnectEdges(addLinks, rmLinks) {
420443
let addLinksInfo = addLinks.map((item) => {
421-
return item.options;
444+
return _.assign(item.options, {
445+
source: _.get(item, 'options.source', '').replace('-right', ''),
446+
target: _.get(item, 'options.target', '').replace('-left', '')
447+
});
422448
});
423449
let rmLinksInfo = rmLinks.map((item) => {
424-
return item.options;
450+
return _.assign(item.options, {
451+
source: _.get(item, 'options.source', '').replace('-right', ''),
452+
target: _.get(item, 'options.target', '').replace('-left', '')
453+
});
425454
});
426455
this.props.onChange && this.props.onChange({
427456
type: 'system.link.reconnect',

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /