cytoscape-edge-bend-editing
Advanced tools
Comparing version 1.5.1 to 1.5.2
{ | ||
"name": "cytoscape-edge-bend-editing", | ||
"version": "1.5.1", | ||
"version": "1.5.2", | ||
"description": "A Cytoscape.js extension enables editing edge bend points", | ||
@@ -5,0 +5,0 @@ "main": "cytoscape-edge-bend-editing.js", |
@@ -5,2 +5,6 @@ var bendPointUtilities = { | ||
currentBendIndex: undefined, | ||
ignoredClasses: undefined, | ||
setIgnoredClasses: function(_ignoredClasses) { | ||
this.ignoredClasses = _ignoredClasses; | ||
}, | ||
// initilize bend points based on bendPositionsFcn | ||
@@ -10,16 +14,26 @@ initBendPoints: function(bendPositionsFcn, edges) { | ||
var edge = edges[i]; | ||
// get the bend positions by applying the function for this edge | ||
var bendPositions = bendPositionsFcn.apply(this, edge); | ||
// calculate relative bend positions | ||
var result = this.convertToRelativeBendPositions(edge, bendPositions); | ||
if(!this.isIgnoredEdge(edge)) { | ||
// if there are bend points set weights and distances accordingly and add class to enable style changes | ||
if (result.distances.length > 0) { | ||
edge.scratch('cyedgebendeditingWeights', result.weights); | ||
edge.scratch('cyedgebendeditingDistances', result.distances); | ||
edge.addClass('edgebendediting-hasbendpoints'); | ||
// get the bend positions by applying the function for this edge | ||
var bendPositions = bendPositionsFcn.apply(this, edge); | ||
// calculate relative bend positions | ||
var result = this.convertToRelativeBendPositions(edge, bendPositions); | ||
// if there are bend points set weights and distances accordingly and add class to enable style changes | ||
if (result.distances.length > 0) { | ||
edge.scratch('cyedgebendeditingWeights', result.weights); | ||
edge.scratch('cyedgebendeditingDistances', result.distances); | ||
edge.addClass('edgebendediting-hasbendpoints'); | ||
} | ||
} | ||
} | ||
}, | ||
isIgnoredEdge: function(edge) { | ||
for(var i = 0; this.ignoredClasses && i < this.ignoredClasses.length; i++){ | ||
if(edge.hasClass(this.ignoredClasses[i])) | ||
return true; | ||
} | ||
return false; | ||
}, | ||
//Get the direction of the line from source point to the target point | ||
@@ -26,0 +40,0 @@ getLineDirection: function(srcPoint, tgtPoint){ |
@@ -18,2 +18,4 @@ ;(function(){ 'use strict'; | ||
initBendPointsAutomatically: true, | ||
// the classes of those edges that should be ignored | ||
ignoredClasses: [], | ||
// whether the bend editing operations are undoable (requires cytoscape-undo-redo.js) | ||
@@ -73,5 +75,7 @@ undoable: false, | ||
bendPointUtilities.setIgnoredClasses(options.ignoredClasses); | ||
// init bend positions conditionally | ||
if (options.initBendPointsAutomatically) { | ||
bendPointUtilities.initBendPoints(options.bendPositionsFunction, cy.edges()); | ||
bendPointUtilities.initBendPoints(options.bendPositionsFunction, cy.edges(), options.ignoredClasses); | ||
} | ||
@@ -78,0 +82,0 @@ |
@@ -30,13 +30,15 @@ var debounce = require('./debounce'); | ||
var edge = event.cyTarget; | ||
var param = { | ||
edge: edge, | ||
weights: edge.scratch('cyedgebendeditingWeights')?[].concat(edge.scratch('cyedgebendeditingWeights')):edge.scratch('cyedgebendeditingWeights'), | ||
distances: edge.scratch('cyedgebendeditingDistances')?[].concat(edge.scratch('cyedgebendeditingDistances')):edge.scratch('cyedgebendeditingDistances') | ||
}; | ||
bendPointUtilities.addBendPoint(); | ||
if(options().undoable) { | ||
cy.undoRedo().do('changeBendPoints', param); | ||
if(!bendPointUtilities.isIgnoredEdge(edge)) { | ||
var param = { | ||
edge: edge, | ||
weights: edge.scratch('cyedgebendeditingWeights') ? [].concat(edge.scratch('cyedgebendeditingWeights')) : edge.scratch('cyedgebendeditingWeights'), | ||
distances: edge.scratch('cyedgebendeditingDistances') ? [].concat(edge.scratch('cyedgebendeditingDistances')) : edge.scratch('cyedgebendeditingDistances') | ||
}; | ||
bendPointUtilities.addBendPoint(); | ||
if (options().undoable) { | ||
cy.undoRedo().do('changeBendPoints', param); | ||
} | ||
} | ||
@@ -69,3 +71,3 @@ | ||
title: opts.addBendMenuItemTitle, | ||
selector: 'edge.cy-edge-bend-editing-highlight-bends', | ||
selector: 'edge', | ||
onClickFunction: cxtAddBendPointFcn | ||
@@ -76,3 +78,3 @@ }, | ||
title: opts.removeBendMenuItemTitle, | ||
selector: 'edge.cy-edge-bend-editing-highlight-bends', | ||
selector: 'edge', | ||
onClickFunction: cxtRemoveBendPointFcn | ||
@@ -463,2 +465,5 @@ } | ||
var edge = movedBendEdge; | ||
if(movedBendEdge !== undefined && bendPointUtilities.isIgnoredEdge(edge) ) { | ||
return; | ||
} | ||
@@ -580,3 +585,7 @@ if(createBendOnDrag) { | ||
if(!edge.selected()) { | ||
var menus = cy.contextMenus('get'); // get context menus instance | ||
if(!edgeToHighlightBends || edgeToHighlightBends.id() != edge.id() || bendPointUtilities.isIgnoredEdge(edge)) { | ||
menus.hideMenuItem(removeBendPointCxtMenuId); | ||
menus.hideMenuItem(addBendPointCxtMenuId); | ||
return; | ||
@@ -587,7 +596,9 @@ } | ||
if (selectedBendIndex == -1) { | ||
$('#' + removeBendPointCxtMenuId).css('display', 'none'); | ||
menus.hideMenuItem(removeBendPointCxtMenuId); | ||
menus.showMenuItem(addBendPointCxtMenuId); | ||
bendPointUtilities.currentCtxPos = event.cyPosition; | ||
} | ||
else { | ||
$('#' + addBendPointCxtMenuId).css('display', 'none'); | ||
menus.hideMenuItem(addBendPointCxtMenuId); | ||
menus.showMenuItem(removeBendPointCxtMenuId); | ||
bendPointUtilities.currentBendIndex = selectedBendIndex; | ||
@@ -594,0 +605,0 @@ } |
Sorry, the diff of this file is too big to display
205078
3208