Adding graph traversal types

This commit is contained in:
anuprulez
2017-03-20 16:12:14 +01:00
parent c658ef3c7e
commit 0d95b4e207
6 changed files with 108 additions and 16 deletions
@@ -121,12 +121,24 @@ define(function() { return /******/ (function(modules) { // webpackBootstrap
kruskal.edges().addClass('searchpath');
}
if ( settings.get( 'graph_traversal' ) !== "" ) {
}
// Register tap event on graph nodes
// Right now on tapping on any node, BFS starts from that node
cytoscape.$( 'node' ).on('tap', function( e ) {
var ele = e.cyTarget,
search_algorithm = settings.get( 'search_algorithm' );
self.run_search_algorithm(cytoscape, ele.id(), search_algorithm);
search_algorithm = settings.get( 'search_algorithm' ),
traversal_type = settings.get( 'graph_traversal' );
// If search algorithm and traversal both are chosen together,
// search algorithm chosen will take preferencel
if( settings.get( 'search_algorithm' ) !== "" ) {
self.run_search_algorithm(cytoscape, ele.id(), search_algorithm);
}
else if( settings.get( 'graph_traversal' ) !== "" ) {
self.run_traversal_type( cytoscape, ele.id(), traversal_type );
}
});
chart.state( 'ok', 'Chart drawn.' );
@@ -163,6 +175,31 @@ define(function() { return /******/ (function(modules) { // webpackBootstrap
}
};
selectNextElement();
},
run_traversal_type: function( cytoscape, root_id, type ) {
var node_collection;
switch( type ) {
case "predecessors":
node_collection = cytoscape.$( '#' + root_id ).predecessors();
break;
case "successors":
node_collection = cytoscape.$( '#' + root_id ).successors();
break;
case "outgoers":
node_collection = cytoscape.$( '#' + root_id ).outgoers();
break;
case "incomers":
node_collection = cytoscape.$( '#' + root_id ).incomers();
break;
case "roots":
node_collection = cytoscape.$( '#' + root_id ).roots();
break;
case "leaves":
node_collection = cytoscape.$( '#' + root_id ).leaves();
break;
}
node_collection.edges().addClass( 'searchpath' );
node_collection.nodes().addClass( 'searchpath' );
}
});
}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
File diff suppressed because one or more lines are too long
@@ -860,7 +860,6 @@ define(function() { return /******/ (function(modules) { // webpackBootstrap
value : '',
data : [ { label : 'Directed', value : 'triangle' },
{ label : 'Undirected', value : '' } ]
},
search_algorithm : {
label : 'Graph algorithms',
@@ -872,7 +871,20 @@ define(function() { return /******/ (function(modules) { // webpackBootstrap
{ label : 'Depth First Search', value : 'dfs' },
{ label : 'Minimum Spanning Tree (Kruskal)', value : 'kruskal' },
{ label : 'None', value : '' } ]
},
graph_traversal: {
label : 'Graph traversal',
help : 'Select a graph traversal type.',
type : 'select',
display : 'radio',
value : '',
data : [ { label : 'Successors', value : 'successors' },
{ label : 'Predecessors', value : 'predecessors' },
{ label : 'Outgoers', value : 'outgoers' },
{ label : 'Incomers', value : 'incomers' },
{ label : 'Roots', value : 'roots' },
{ label : 'Leaves', value : 'leaves' },
{ label : 'None', value : '' } ]
},
choose_red : {
name : 'choose_red',
@@ -882,7 +894,6 @@ define(function() { return /******/ (function(modules) { // webpackBootstrap
min : 0,
max : 255,
value : 51
},
choose_green : {
name : 'choose_green',
@@ -892,7 +903,6 @@ define(function() { return /******/ (function(modules) { // webpackBootstrap
min : 0,
max : 255,
value : 102
},
choose_blue : {
name : 'choose_blue',
@@ -902,7 +912,6 @@ define(function() { return /******/ (function(modules) { // webpackBootstrap
min : 0,
max : 255,
value : 153
},
min_zoom : {
name : 'min_zoom',
File diff suppressed because one or more lines are too long
@@ -40,7 +40,6 @@ define( [], function() {
value : '',
data : [ { label : 'Directed', value : 'triangle' },
{ label : 'Undirected', value : '' } ]
},
search_algorithm : {
label : 'Graph algorithms',
@@ -52,7 +51,20 @@ define( [], function() {
{ label : 'Depth First Search', value : 'dfs' },
{ label : 'Minimum Spanning Tree (Kruskal)', value : 'kruskal' },
{ label : 'None', value : '' } ]
},
graph_traversal: {
label : 'Graph traversal',
help : 'Select a graph traversal type.',
type : 'select',
display : 'radio',
value : '',
data : [ { label : 'Successors', value : 'successors' },
{ label : 'Predecessors', value : 'predecessors' },
{ label : 'Outgoers', value : 'outgoers' },
{ label : 'Incomers', value : 'incomers' },
{ label : 'Roots', value : 'roots' },
{ label : 'Leaves', value : 'leaves' },
{ label : 'None', value : '' } ]
},
choose_red : {
name : 'choose_red',
@@ -62,7 +74,6 @@ define( [], function() {
min : 0,
max : 255,
value : 51
},
choose_green : {
name : 'choose_green',
@@ -72,7 +83,6 @@ define( [], function() {
min : 0,
max : 255,
value : 102
},
choose_blue : {
name : 'choose_blue',
@@ -82,7 +92,6 @@ define( [], function() {
min : 0,
max : 255,
value : 153
},
min_zoom : {
name : 'min_zoom',
@@ -75,12 +75,24 @@ define( [ 'utilities/utils', 'utilities/sifjson', 'plugins/cytoscape/cytoscape'
kruskal.edges().addClass('searchpath');
}
if ( settings.get( 'graph_traversal' ) !== "" ) {
}
// Register tap event on graph nodes
// Right now on tapping on any node, BFS starts from that node
cytoscape.$( 'node' ).on('tap', function( e ) {
var ele = e.cyTarget,
search_algorithm = settings.get( 'search_algorithm' );
self.run_search_algorithm(cytoscape, ele.id(), search_algorithm);
search_algorithm = settings.get( 'search_algorithm' ),
traversal_type = settings.get( 'graph_traversal' );
// If search algorithm and traversal both are chosen together,
// search algorithm chosen will take preferencel
if( settings.get( 'search_algorithm' ) !== "" ) {
self.run_search_algorithm(cytoscape, ele.id(), search_algorithm);
}
else if( settings.get( 'graph_traversal' ) !== "" ) {
self.run_traversal_type( cytoscape, ele.id(), traversal_type );
}
});
chart.state( 'ok', 'Chart drawn.' );
@@ -117,6 +129,31 @@ define( [ 'utilities/utils', 'utilities/sifjson', 'plugins/cytoscape/cytoscape'
}
};
selectNextElement();
},
run_traversal_type: function( cytoscape, root_id, type ) {
var node_collection;
switch( type ) {
case "predecessors":
node_collection = cytoscape.$( '#' + root_id ).predecessors();
break;
case "successors":
node_collection = cytoscape.$( '#' + root_id ).successors();
break;
case "outgoers":
node_collection = cytoscape.$( '#' + root_id ).outgoers();
break;
case "incomers":
node_collection = cytoscape.$( '#' + root_id ).incomers();
break;
case "roots":
node_collection = cytoscape.$( '#' + root_id ).roots();
break;
case "leaves":
node_collection = cytoscape.$( '#' + root_id ).leaves();
break;
}
node_collection.edges().addClass( 'searchpath' );
node_collection.nodes().addClass( 'searchpath' );
}
});
});