correct URLs for AJAX / img requests in stexaminer
[scpubgit/stemmatology.git] / stemmaweb / root / js / stexaminer.js
CommitLineData
81422c40 1var colors = ['#ffeeaa','#afc6e9','#d5fff6','#ffccaa','#ffaaaa','#e5ff80','#e5d5ff','#ffd5e5'];
361134f0 2var row_triggered = false;
f8d13166 3var original_svg;
4
5function handle_row_click( row ) {
6 var ridx = row.parent().parent().index()
7 var rs = readingstats[ridx];
5f810e4f 8 var imghtml = $('<img>').attr( 'src', baseurl + "../images/ajax-loader.gif" ).attr( 'alt', "Loading SVG..." );
f8d13166 9 $('#stemma_graph').empty();
10 $('#stemma_graph').append( imghtml );
11 if( rs.layerwits ) {
12 var stemma_form = { 'dot': graphdot, 'layerwits': rs.layerwits };
5f810e4f 13 $('#stemma_graph').load( baseurl + 'graphsvg', stemma_form, function() {
f8d13166 14 color_row( row );
15 show_stats( rs );
16 });
17 } else {
18 $('#stemma_graph').empty();
19 $('#stemma_graph').append( original_svg );
20 color_row( row );
21 show_stats( rs );
22 }
23}
23306161 24
25function color_row( row ) {
361134f0 26 row_triggered = true;
57acbbe2 27 $('ellipse').attr( {stroke:'white', fill:'#fff'} );
119157ee 28 $('.node').children('polygon').attr( {stroke:'#fff', fill:'#fff'} );
29 $('.node').children('text').attr( {stroke:'none', fill:'#000'} );
d5c17cec 30 $('tr.active_variant_row').children('td').removeClass('cellb0 cellb1 cellb2 cellb3 cellb4 cellb5 cellb6 cellb7');
23306161 31 row.parent().nextAll('.clickable').children('span').click();
d5c17cec 32 $('td.active_variant_cell').removeClass('active_variant_cell');
361134f0 33 row_triggered = false;
23306161 34}
35
82fd8e05 36function color_nodes( column_index, arr_node_ids, arr_greynode_ids ) {
d5c17cec 37 if( !row_triggered ) {
38 $('tr.active_variant_row').children('td').removeClass('cellb0 cellb1 cellb2 cellb3 cellb4 cellb5 cellb6 cellb7');
39 $('td.active_variant_cell').removeClass('active_variant_cell');
57acbbe2 40 $('ellipse').attr( {stroke:'white', fill:'#fff'} );
119157ee 41 $('.node').children('polygon').attr( {stroke:'#fff', fill:'#fff'} );
42 $('.node').children('text').attr( {stroke:'none', fill:'#000'} );
82fd8e05 43 };
d5c17cec 44 $('tr.active_variant_row').removeClass('active_variant_row')
82fd8e05 45 jQuery.each( arr_greynode_ids, function(index,value) {
119157ee 46 nodes = $('.node').children('title').filter( function(index) {
82fd8e05 47 return $(this).text() == value;
119157ee 48 })
49 nodes.siblings('ellipse, polygon, text').each( function( index ) {
50 $(this).attr( {stroke:'#ddd', fill:'#f8f8f8'} );
82fd8e05 51 });
52 });
dbcf12a6 53 jQuery.each( arr_node_ids, function(index,value) {
54 $('.node').children('title').filter( function(index) {
55 return $(this).text() == value;
94a077d6 56 }).siblings('ellipse').each( function( index ) {
361134f0 57 $(this).attr( {stroke:'black', fill:colors[column_index-1]} );
58 });
dbcf12a6 59 });
60}
3751a3c2 61
f8d13166 62function show_stats( rs ) {
3751a3c2 63 var rshtml = $('#stats_template').clone();
64 rshtml.find('#statrank').append( rs.id );
a9426c6d 65 if( "unsolved" in rs ) {
b7bd7aa5 66 var nocalcmsg;
67 if( rs.unsolved == 'IDP error' ) {
68 nocalcmsg = $('<span>').attr('class', 'error').append(
69 "(Could not reach calculation server - are you offline?)" );
70 } else {
71 nocalcmsg = "(Not yet calculated for this location - please try later)";
72 }
73 rshtml.find('.solutionstatus').append( nocalcmsg );
a9426c6d 74 } else {
75 $.each( rs.readings, function( idx, rdghash ) {
76 var rdgstats = $('#reading_template').clone();
77 rdgstats.find('.readinglabel').append( rdghash.text );
78 rdgstats.find('.reading_copied').append( rdghash.followed );
79 rdgstats.find('.reading_changed').append( rdghash.not_followed );
80 rdgstats.find('.reading_unclear').append( rdghash.follow_unknown );
81 rdgstats.find('.readingroots').append( rdghash.independent_occurrence );
82 if( rdghash.is_reverted ) {
83 rdgstats.find('.reversionroots').append( rdghash.reversions );
84 } else {
85 rdgstats.find('.readingreversions').empty();
86 }
87 var rdgsourcehtml = fill_parent_template( rdghash, 'source' );
88 var rdgreverthtml = fill_parent_template( rdghash, 'reversion' );
89 rdgstats.find('.reading_statistics').append( rdgsourcehtml );
90 rdgstats.find('.reading_statistics').append( rdgreverthtml );
91 // If neither, append a small spacer
92 if( !rdgsourcehtml && !rdgreverthtml ) {
93 rdgstats.find('.reading_statistics').append( '<br/>' );
94 }
95 rshtml.append( rdgstats.contents() );
96 });
97 }
3751a3c2 98 $('#row_statistics').empty();
99 $('#row_statistics').append( rshtml.contents() );
ee53ab0d 100
3751a3c2 101};
f8d13166 102
ee53ab0d 103function fill_parent_template( rdghash, type ) {
104 var objname = type + '_parents';
105 var template_id = '#reading_' + type + '_template';
106 var list_class = '.reading_' + type + '_list';
107 if( ! $.isEmptyObject( rdghash[objname] ) ) {
108 var parentstats = $( template_id ).clone();
109 $.each( rdghash[objname], function( parentid, pdata ) {
110 var parentdesc = pdata.label;
111 if( pdata.relation ) {
112 parentdesc += ' - variant type ' + pdata.relation.type;
113 if( pdata.relation.annotation ) {
114 parentdesc += ' [ ' + pdata.relation.annotation + ' ]';
115 }
116 } else {
117 parentdesc += ' - no syntactic relation';
118 }
119 var parentitem = $('<li>').append( parentdesc );
120 parentstats.find( list_class ).append( parentitem );
121 });
122 return( parentstats.contents() );
123 }
124}
125
f8d13166 126// Save the original unextended SVG for when we need it.
127$(document).ready(function () {
128 original_svg = $('#stemma_graph > svg').clone();
26cea87c 129
130 $('#aboutlink').popupWindow({
131 height:500,
132 width:800,
133 top:50,
134 left:50,
135 scrollbars:1
136 });
137 $('#options').dialog({
138 autoOpen: false,
139 height: 200,
140 width: 300,
141 modal: true,
142 buttons: {
143 Cancel: function() {
144 $(this).dialog( "close" );
145 },
146 Reanalyze: function() {
147 $('#use_variants_form').submit();
148 },
149 }
150 });
151
f8d13166 152});