get analysis info into the stexaminer, unstyled as yet
[scpubgit/stemmaweb.git] / lib / stemmaweb / Controller / Stexaminer.pm
CommitLineData
b8a92065 1package stemmaweb::Controller::Stexaminer;
2use Moose;
3use namespace::autoclean;
4use File::Temp;
5use JSON;
0737e7dd 6use Text::Tradition::Analysis qw/ run_analysis wit_stringify /;
b8a92065 7
8BEGIN { extends 'Catalyst::Controller' }
9
10
11=head1 NAME
12
13stemmaweb::Controller::Stexaminer - Simple controller for stemma display
14
15=head1 DESCRIPTION
16
17The stemma analysis tool with the pretty colored table.
18
19=head1 METHODS
20
21 GET stexaminer/$textid
22
23Renders the application for the text identified by $textid.
24
25=head2 index
26
27=cut
28
29sub index :Path :Args(1) {
30 my( $self, $c, $textid ) = @_;
31 my $m = $c->model('Directory');
32 my $tradition = $m->tradition( $textid );
9c2e7b80 33 if( $tradition->stemma_count ) {
34 my $stemma = $tradition->stemma(0);
35 # TODO Think about caching the stemma in a session
36 $c->stash->{svg} = $stemma->as_svg;
37 $c->stash->{text_title} = $tradition->name;
38 $c->stash->{template} = 'stexaminer.tt';
39 # TODO Run the analysis as AJAX from the loaded page.
e00385ac 40 my $t = run_analysis( $tradition, 'exclude_type1' => 1 );
0737e7dd 41 # Stringify the reading groups
42 foreach my $loc ( @{$t->{'variants'}} ) {
43 my $mst = wit_stringify( $loc->{'missing'} );
44 $loc->{'missing'} = $mst;
45 foreach my $rhash ( @{$loc->{'readings'}} ) {
46 my $gst = wit_stringify( $rhash->{'group'} );
47 $rhash->{'group'} = $gst;
48 }
49 }
d5514865 50 # Values for TT rendering
9c2e7b80 51 $c->stash->{variants} = $t->{'variants'};
52 $c->stash->{total} = $t->{'variant_count'};
53 $c->stash->{genealogical} = $t->{'genealogical_count'};
d5514865 54 $c->stash->{conflict} = $t->{'conflict_count'};
55 # Also make a JSON stash of the data for the statistics tables
56 $c->stash->{reading_statistics} = to_json( $t->{'variants'} );
9c2e7b80 57 } else {
58 $c->stash->{error} = 'Tradition ' . $tradition->name
59 . 'has no stemma for analysis.';
60 }
b8a92065 61}
62
63=head2 end
64
65Attempt to render a view, if needed.
66
67=cut
68
69sub end : ActionClass('RenderView') {}
70
71=head1 AUTHOR
72
73Tara L Andrews
74
75=head1 LICENSE
76
77This library is free software. You can redistribute it and/or modify
78it under the same terms as Perl itself.
79
80=cut
81
82__PACKAGE__->meta->make_immutable;
83
841;