GET /directory
-Serves a snippet of HTML that lists the available texts. Eventually this will be available texts by user.
+Serves a snippet of HTML that lists the available texts. This returns texts belonging to the logged-in user if any, otherwise it returns all public texts.
=cut
+
sub directory :Local :Args(0) {
my( $self, $c ) = @_;
my $m = $c->model('Directory');
- # TODO not used yet, will load user texts later
- my $user = $c->request->param( 'user' ) || 'ALL';
- my @textlist;
- foreach my $id ( $m->tradition_ids ) {
- my $data = {
- 'id' => $id,
- 'name' => $m->name( $id ),
- };
- push( @textlist, $data );
- }
-
+ my $user = $c->user_exists ? $c->user->get_object : 'public';
+ my @textlist = $m->traditionlist($user);
$c->stash->{texts} = \@textlist;
$c->stash->{template} = 'directory.tt';
}
+=head2 variantgraph
+
+ GET /variantgraph/$textid
+
+Returns the variant graph for the text specified at $textid, in SVG form.
+
+=cut
+
+sub variantgraph :Local :Args(1) {
+ my( $self, $c, $textid ) = @_;
+ my $m = $c->model('Directory');
+ my $tradition = $m->tradition( $textid );
+ my $collation = $tradition->collation;
+ my $needsave = !$collation->has_cached_svg;
+ $c->stash->{'result'} = $collation->as_svg;
+ $m->save( $tradition ); # to save generate SVG in the cache
+ $c->forward('View::SVG');
+}
+
=head2 alignment
GET /alignment/$textid
my( $self, $c, $textid ) = @_;
my $m = $c->model('Directory');
my $collation = $m->tradition( $textid )->collation;
- my $alignment = $collation->make_alignment_table;
+ my $alignment = $collation->alignment_table;
# Turn the table, so that witnesses are by column and the rows
# are by rank.
@{$alignment->{'alignment'}};
push( @$rows, { 'rank' => $i+1, 'readings' => \@rankrdgs } );
}
- $c->log->debug( Dumper( $rows ) );
$c->stash->{'witnesses'} = $wits;
$c->stash->{'table'} = $rows;
$c->stash->{'template'} = 'alignment.tt';
$m->store( $tradition );
}
- $c->stash->{'result'} = $tradition->stemma->as_svg;
+ $c->stash->{'result'} = $tradition->stemma_count
+ ? $tradition->stemma(0)->as_svg
+ : '';
$c->forward('View::SVG');
}