if( $tradition->stemma_count ) {
my $stemma = $tradition->stemma( $stemid );
- $c->stash->{svg} = $stemma->as_svg( { size => [ 600, 350 ] } );
+ my $svgstr = $stemma->as_svg();
+ $svgstr =~ s/\n/ /g;
+ $c->stash->{svg} = $svgstr;
$c->stash->{graphdot} = $stemma->editable({ linesep => ' ' });
$c->stash->{text_id} = $textid;
$c->stash->{text_title} = $tradition->name;
open my $stemma_fh, '<', \$dot;
binmode( $stemma_fh, ':encoding(UTF-8)' );
my $tempstemma = Text::Tradition::Stemma->new( 'dot' => $stemma_fh );
- my $svgopts = { size => [ 600, 350 ] };
+ my $svgopts = {};
if( @layerwits ) {
$svgopts->{'layerwits'} = \@layerwits;
}
var colors = ['#ffeeaa','#afc6e9','#d5fff6','#ffccaa','#ffaaaa','#e5ff80','#e5d5ff','#ffd5e5'];
var row_triggered = false;
-var original_svg;
function handle_row_click( row ) {
var ridx = row.parent().parent().index()
$('#stemma_graph').append( imghtml );
if( rs.layerwits ) {
var stemma_form = { 'dot': graphdot, 'layerwits': rs.layerwits };
- $('#stemma_graph').load( baseurl + 'graphsvg', stemma_form, function() {
+ $.post( baseurl + 'graphsvg', stemma_form, function( data ) {
+ var oSerializer = new XMLSerializer();
+ var xmlString = oSerializer.serializeToString( data.documentElement );
+ loadSVG( xmlString, function () {
+ color_row( row );
+ show_stats( rs );
+ });
+ });
+ } else {
+ loadSVG( original_svg, function() {
color_row( row );
show_stats( rs );
});
- } else {
- $('#stemma_graph').empty();
- $('#stemma_graph').append( original_svg );
- color_row( row );
- show_stats( rs );
}
}
+// Load the SVG we are given
+function loadSVG(svgData, cb) {
+ var svgElement = $('#stemma_graph');
+
+ $(svgElement).svg('destroy');
+
+ $(svgElement).svg({
+ loadURL: svgData,
+ onLoad : function () {
+ var theSVG = svgElement.find('svg');
+ var svgoffset = theSVG.offset();
+ // Firefox needs a different offset, stupidly enough
+ var browseroffset = 1;
+ if( navigator.userAgent.indexOf('Firefox') > -1 ) {
+ browseroffset = 3;
+ }
+ var topoffset = theSVG.position().top - svgElement.position().top - browseroffset;
+ // If we are on Safari, we need to get rid of the 'pt' in the width/height
+ // specifications
+ theSVG.offset({ top: svgoffset.top - topoffset, left: svgoffset.left });
+ if( cb ) {
+ cb.call();
+ }
+ }
+ });
+}
+
function color_row( row ) {
row_triggered = true;
$('ellipse').attr( {stroke:'white', fill:'#fff'} );
// Save the original unextended SVG for when we need it.
$(document).ready(function () {
- original_svg = $('#stemma_graph > svg').clone();
+ loadSVG( original_svg );
$('#aboutlink').popupWindow({
height:500,