fix for openid authentication
[scpubgit/stemmatology.git] / stemmaweb / lib / stemmaweb / Controller / Stexaminer.pm
index bdabcaa..a0f4fcb 100644 (file)
@@ -3,7 +3,7 @@ use Moose;
 use namespace::autoclean;
 use File::Temp;
 use JSON;
-use Text::Tradition::Analysis qw/ run_analysis /;
+use Text::Tradition::Analysis qw/ run_analysis wit_stringify /;
 
 BEGIN { extends 'Catalyst::Controller' }
 
@@ -30,17 +30,34 @@ sub index :Path :Args(1) {
     my( $self, $c, $textid ) = @_;
     my $m = $c->model('Directory');
        my $tradition = $m->tradition( $textid );
-       my $stemma = $tradition->stemma;
-       # TODO Think about caching the stemma in a session 
-       $c->stash->{svg} = $stemma->as_svg;
-       $c->stash->{text_title} = $tradition->name;
-       $c->stash->{template} = 'stexaminer.tt'; 
-       # TODO Run the analysis as AJAX from the loaded page.
-       my $t = run_analysis( $tradition );
-       $c->stash->{variants} = $t->{'variants'};
-       $c->stash->{total} = $t->{'variant_count'};
-       $c->stash->{genealogical} = $t->{'genealogical_count'};
-       $c->stash->{conflict} = $t->{'conflict_count'};
+       if( $tradition->stemma_count ) {
+               my $stemma = $tradition->stemma(0);
+               # TODO Think about caching the stemma in a session 
+               $c->stash->{svg} = $stemma->as_svg;
+               $c->stash->{text_title} = $tradition->name;
+               $c->stash->{template} = 'stexaminer.tt'; 
+               # TODO Run the analysis as AJAX from the loaded page.
+               my $t = run_analysis( $tradition, 'exclude_type1' => 1 );
+               # Stringify the reading groups
+               foreach my $loc ( @{$t->{'variants'}} ) {
+                       my $mst = wit_stringify( $loc->{'missing'} );
+                       $loc->{'missing'} = $mst;
+                       foreach my $rhash ( @{$loc->{'readings'}} ) {
+                               my $gst = wit_stringify( $rhash->{'group'} );
+                               $rhash->{'group'} = $gst;
+                       }
+               }
+               # Values for TT rendering
+               $c->stash->{variants} = $t->{'variants'};
+               $c->stash->{total} = $t->{'variant_count'};
+               $c->stash->{genealogical} = $t->{'genealogical_count'};
+               $c->stash->{conflict} = $t->{'conflict_count'};         
+               # Also make a JSON stash of the data for the statistics tables
+               $c->stash->{reading_statistics} = to_json( $t->{'variants'} );
+       } else {
+               $c->stash->{error} = 'Tradition ' . $tradition->name 
+                       . 'has no stemma for analysis.';
+       }
 }
 
 =head2 end