1 function edges_of( ellipse ) {
2 var edges = new Array();
3 var node_id = ellipse.parent().attr('id');
4 var edge_in_pattern = new RegExp( node_id + '$' );
5 $.each( $('#svgenlargement .edge'), function(index) {
6 title = $(this).children('title').text();
7 if( title.search( node_id ) > -1 ) {
8 var edge = new Edge( $(this) );
9 edge.node_id = node_id;
10 if( edge_in_pattern.test(title) ) {
11 edge.is_incoming = true;
19 function Edge( g_elem ) {
24 this.witnesses = g_elem.children('text').text().split( /,\s*/ );
25 this.is_incoming = false;
27 this.detach_witnesses = function( witnesses_to_detach ) {
31 $.each( witnesses_to_detach, function( index, witness_to_detach ) {
32 witness_index = self.witnesses.indexOf( witness_to_detach );
33 if( witness_index > -1 ) {
34 self.witnesses.splice( witness_index, 1 );
35 detached.push( witness_to_detach );
38 if( detached != '' ) {
39 clone = self.clone_for( detached );
41 var remaining = self.create_label( self.witnesses );
42 if( remaining == '' ) {
45 self.g_elem.children('text').text( remaining );
50 this.get_label = function() {
51 return self.g_elem.children('text').text();
54 this.create_label = function( witnesses ) {
56 $.each( witnesses, function( index, witness ) {
57 label = label + witness + ', ';
59 label = label.replace( /, $/, '' );
63 this.clone_for = function( witnesses ) {
64 var label = self.create_label( witnesses );
65 var clone = g_elem.clone();
66 clone.children('text').text( label );
67 var duplicate_data = g_elem.data( 'repositioned' );
68 if( duplicate_data != null ) {
69 clone.data( 'repositioned', duplicate_data );
71 clone = new Edge( clone );
72 clone.is_incoming = self.is_incoming;
76 this.attach = function( node_id_maybe ) {