From 4663ab5696457d0ac8720f364b1af9605bac6960 Mon Sep 17 00:00:00 2001 From: ivanPozdnyakov Date: Mon, 4 Jan 2016 15:09:26 -0500 Subject: [PATCH] node duplication --- VQI_PathwayEditor.js | 64 +++++++++++++++++++++++++++----------------- 1 file changed, 39 insertions(+), 25 deletions(-) diff --git a/VQI_PathwayEditor.js b/VQI_PathwayEditor.js index b1e39bc..6147b1b 100755 --- a/VQI_PathwayEditor.js +++ b/VQI_PathwayEditor.js @@ -77,6 +77,7 @@ var VQI_PathwayEditor = function (parent) { strVar += "
  • <\/input><\/li>"; strVar += "
  • <\/input><\/li>"; strVar += "
  • <\/input><\/li>"; + strVar += "
  • <\/input><\/li>"; strVar += " <\/ul>"; strVar += " "; strVar += " <\/li>"; @@ -581,8 +582,11 @@ var VQI_PathwayEditor = function (parent) { function addDuplicateNodes(event) { var cy = $('#' + parent + '-cy').cytoscape('get'); - var name = "n" + nodeCounter; var node = []; + var edge = []; + + var lookupDuplicatedNodes = []; + var lookupDuplicatedEdges = []; for(var i = 0; i < selectedForEditNodes.length; i++){ node.push({ @@ -593,42 +597,50 @@ var VQI_PathwayEditor = function (parent) { Valign: selectedForEditNodes[i].data('Valign'), Width: selectedForEditNodes[i].data('Width'), Height: selectedForEditNodes[i].data('Height'), - id: "n" + nodeCounter, + id: "dup" + selectedForEditNodes[i].data('id'), name: selectedForEditNodes[i].data('name'), selected: false, backgroundImage: selectedForEditNodes[i].data('backgroundImage'), zIndex: selectedForEditNodes[i].data('zIndex') }, renderedPosition: { - x: selectedForEditNodes[i].position('x')+100, - y: selectedForEditNodes[i].position('y')+100 + x: selectedForEditNodes[i].position('x')+500, + y: selectedForEditNodes[i].position('y') } }) + lookupDuplicatedNodes.push("dup" + selectedForEditNodes[i].data('id')); } - - for(var i = 0; i < selectedForEditEdges.length; i++){ - node.push({ - group: "nodes", - data: { - LabelSize: selectedForEditNodes[i].data('LabelSize'), - Type: selectedForEditNodes[i].data('Type'), - Valign: selectedForEditNodes[i].data('Valign'), - Width: selectedForEditNodes[i].data('Width'), - Height: selectedForEditNodes[i].data('Height'), - id: "n" + nodeCounter, - name: selectedForEditNodes[i].data('name'), - selected: false, - backgroundImage: selectedForEditNodes[i].data('backgroundImage'), - zIndex: selectedForEditNodes[i].data('zIndex') - }, - renderedPosition: { - x: selectedForEditNodes[i].position('x')+100, - y: selectedForEditNodes[i].position('y')+100 + for(var i = 0; i < selectedForEditNodes.length; i++){ + for (var j = 0; j < selectedForEditNodes[i].connectedEdges().length; j++) { + if(lookupDuplicatedNodes.indexOf("dup"+selectedForEditNodes[i].connectedEdges()[j].data('source')) != -1 && + lookupDuplicatedNodes.indexOf("dup"+selectedForEditNodes[i].connectedEdges()[j].data('target')) != -1 && + lookupDuplicatedEdges.indexOf("dup"+selectedForEditNodes[i].connectedEdges()[j].data('id')) == -1 + ){ + edge.push({ + group: "edges", + data: { + id: "dup" + selectedForEditNodes[i].connectedEdges()[j].data('id'), + Type: selectedForEditNodes[i].connectedEdges()[j].data('Type'), + LineThickness: selectedForEditNodes[i].connectedEdges()[j].data('LineThickness'), + EndArrow: selectedForEditNodes[i].connectedEdges()[j].data('EndArrow'), + Coords: selectedForEditNodes[i].connectedEdges()[j].data('Coords'), + ZOrder: selectedForEditNodes[i].connectedEdges()[j].data('ZOrder'), + source: "dup" + selectedForEditNodes[i].connectedEdges()[j].data('source'), + target: "dup" + selectedForEditNodes[i].connectedEdges()[j].data('target'), + StartArrow: selectedForEditNodes[i].connectedEdges()[j].data('StartArrow'), + curveStyle: selectedForEditNodes[i].connectedEdges()[j].data('curveStyle'), + segmentDistances: selectedForEditNodes[i].connectedEdges()[j].data('segmentDistances'), + segmentWeights: selectedForEditNodes[i].connectedEdges()[j].data('segmentWeights'), + selected: selectedForEditNodes[i].connectedEdges()[j].data('selected') + } + }) + lookupDuplicatedEdges.push("dup"+selectedForEditNodes[i].connectedEdges()[j].data('id')); } - }) + } } - nodeCounter++; + cy.add(node); + cy.add(edge); postAddProcessing(); saveState(); } @@ -2005,6 +2017,7 @@ var VQI_PathwayEditor = function (parent) { $('#' + parent + '-produce-JSON').removeClass('disabled'); $('#' + parent + '-undo').removeClass('disabled'); $('#' + parent + '-redo').removeClass('disabled'); + $('#' + parent + '-duplicate-nodes').removeClass('disabled'); // Add processed nodes cy.add(obj.elements); @@ -2358,6 +2371,7 @@ var VQI_PathwayEditor = function (parent) { document.getElementById(parent + '-produce-JSON').addEventListener('click', produceJSON); document.getElementById(parent + '-undo').addEventListener('click', undo); document.getElementById(parent + '-redo').addEventListener('click', redo); + document.getElementById(parent + '-duplicate-nodes').addEventListener('click', addDuplicateNodes); //external GUI functions