minor tweaks to display logic
[scpubgit/stemmatology.git] / stemmaweb / root / js / stexaminer.js
index ffe2c93..2a9e10e 100644 (file)
@@ -1,23 +1,43 @@
 var colors = ['#ffeeaa','#afc6e9','#d5fff6','#ffccaa','#ffaaaa','#e5ff80','#e5d5ff','#ffd5e5'];
 var row_triggered = false;
-$(document).ready(function() {
-  $('.rowid').click( function() {
+var original_svg;
+
+function handle_row_click( row ) {
+       var ridx = row.parent().parent().index()
+       var rs = readingstats[ridx];
+    var imghtml = '<img src="../images/ajax-loader.gif" alt="Loading SVG..."/>'
+    $('#stemma_graph').empty();
+    $('#stemma_graph').append( imghtml );
+       if( rs.layerwits ) {
+               var stemma_form = { 'dot': graphdot, 'layerwits': rs.layerwits };
+               $('#stemma_graph').load( 'graphsvg', stemma_form, function() {
+                       color_row( row );
+                       show_stats( rs );
+               });
+       } else {
+               $('#stemma_graph').empty();
+               $('#stemma_graph').append( original_svg );
+               color_row( row );
+               show_stats( rs );
+       }
+}
+
+function color_row( row ) {
     row_triggered = true;
-    $('ellipse').attr( {stroke:'black', fill:'#fff'} );
+    $('ellipse').attr( {stroke:'white', fill:'#fff'} );
     $('.node').children('polygon').attr( {stroke:'#fff', fill:'#fff'} );
     $('.node').children('text').attr( {stroke:'none', fill:'#000'} );
     $('tr.active_variant_row').children('td').removeClass('cellb0 cellb1 cellb2 cellb3 cellb4 cellb5 cellb6 cellb7'); 
-    $(this).parent().nextAll('.clickable').children('span').click();
+    row.parent().nextAll('.clickable').children('span').click();
     $('td.active_variant_cell').removeClass('active_variant_cell');
     row_triggered = false;
-  });
-  $('svg').width('485px');
-})
+}
+
 function color_nodes( column_index, arr_node_ids, arr_greynode_ids ) {
   if( !row_triggered ) {
     $('tr.active_variant_row').children('td').removeClass('cellb0 cellb1 cellb2 cellb3 cellb4 cellb5 cellb6 cellb7'); 
     $('td.active_variant_cell').removeClass('active_variant_cell');
-    $('ellipse').attr( {stroke:'black', fill:'#fff'} );
+    $('ellipse').attr( {stroke:'white', fill:'#fff'} );
     $('.node').children('polygon').attr( {stroke:'#fff', fill:'#fff'} );
     $('.node').children('text').attr( {stroke:'none', fill:'#000'} );
   }; 
@@ -38,3 +58,41 @@ function color_nodes( column_index, arr_node_ids, arr_greynode_ids ) {
       });
   });
 }
+
+function show_stats( rs ) {
+       var rshtml = $('#stats_template').clone();
+       rshtml.find('#statrank').append( rs.id );
+       $.each( rs.readings, function( idx, rdghash ) {
+               var rdgstats = $('#reading_template').clone();
+               rdgstats.find('.readinglabel').append( rdghash.text );
+               rdgstats.find('.reading_copied').append( rdghash.followed );
+               rdgstats.find('.reading_changed').append( rdghash.not_followed );
+               rdgstats.find('.reading_unclear').append( rdghash.follow_unknown );
+               rdgstats.find('.readingroots').append( rdghash.independent_occurrence );
+               if( ! $.isEmptyObject( rdghash.reading_parents ) ) {
+                       var parentstats = $('#reading_parent_template').clone();
+                       $.each( rdghash.reading_parents, function( parentid, pdata ) {
+                               var parentdesc = pdata.label;
+                               if( pdata.relation ) {
+                                       parentdesc += ' - variant type ' + pdata.relation.type;
+                                       if( pdata.relation.annotation ) {
+                                               parentdesc += ' [ ' + pdata.relation.annotation + ' ]';
+                                       }
+                               } else {
+                                       parentdesc += ' - no syntactic relation';
+                               }
+                               var parentitem = $('<li>').append( parentdesc );
+                               parentstats.find('.reading_parent_list').append( parentitem );
+                       });
+                       rdgstats.find('.reading_statistics').append( parentstats.contents() );
+               }
+               rshtml.append( rdgstats.contents() );
+       });
+       $('#row_statistics').empty();
+       $('#row_statistics').append( rshtml.contents() );
+};
+
+// Save the original unextended SVG for when we need it.
+$(document).ready(function () {
+       original_svg = $('#stemma_graph > svg').clone();
+});