UNTESTED allow for query of outstanding Stemweb processes and return of results. #29
[scpubgit/stemmaweb.git] / lib / stemmaweb / Controller / Root.pm
index c50a660..82fde7d 100644 (file)
@@ -1,7 +1,8 @@
 package stemmaweb::Controller::Root;
 use Moose;
 use namespace::autoclean;
-use Text::Tradition::Analysis qw/ run_analysis /;
+use JSON qw ();
+use LWP::UserAgent;
 use TryCatch;
 use XML::LibXML;
 use XML::LibXML::XPathContext;
@@ -15,6 +16,8 @@ BEGIN { extends 'Catalyst::Controller' }
 #
 __PACKAGE__->config(namespace => '');
 
+my $STEMWEB_BASE_URL = 'http://slinkola.users.cs.helsinki.fi';
+
 =head1 NAME
 
 stemmaweb::Controller::Root - Root Controller for stemmaweb
@@ -39,6 +42,14 @@ sub index :Path :Args(0) {
        if( $c->req->param('withtradition') ) {
                $c->stash->{'withtradition'} = $c->req->param('withtradition');
        }
+       # Get the current list of Stemweb algorithms
+       my $ua = LWP::UserAgent->new();
+       my $resp = $ua->get( $STEMWEB_BASE_URL . '/algorithms/available' );
+       if( $resp->is_success ) {
+               $c->stash->{'stemweb_algorithms'} = $resp->content;
+       } else {
+               $c->stash->{'stemweb_algorithms'} = '{}';
+       }
     $c->stash->{template} = 'index.tt';
 }
 
@@ -314,7 +325,6 @@ sub textinfo :Local :Args(1) {
        my $textinfo = {
                textid => $textid,
                name => $tradition->name,
-               #language => $tradition->language,
                public => $tradition->public || 0,
                owner => $tradition->user ? $tradition->user->email : undef,
                witnesses => [ map { $_->sigil } $tradition->witnesses ],
@@ -322,7 +332,13 @@ sub textinfo :Local :Args(1) {
        if( $tradition->can('language') ) {
                $textinfo->{'language'} = $tradition->language;
        }
-       my @stemmasvg = map { { name => $_->identifier, svg => $_->as_svg() } } 
+       if( $tradition->can('stemweb_jobid') ) {
+               $textinfo->{'stemweb_jobid'} = $tradition->stemweb_jobid || 0;
+       }
+       my @stemmasvg = map { { 
+                       name => $_->identifier, 
+                       directed => _json_bool( !$_->is_undirected ),
+                       svg => $_->as_svg() } } 
                $tradition->stemmata;
        map { $_ =~ s/\n/ /mg } @stemmasvg;
        $textinfo->{stemmata} = \@stemmasvg;
@@ -448,6 +464,7 @@ sub stemma :Local :Args(2) {
                $c->stash->{'result'} = { 
                        'stemmaid' => $stemmaid, 
                        'name' => $stemma->identifier,
+                       'directed' => _json_bool( !$stemma->is_undirected ),
                        'svg' => $stemma_xml };
                $c->forward('View::JSON');
        }
@@ -532,6 +549,10 @@ sub _json_error {
        return 0;
 }
 
+sub _json_bool {
+       return $_[0] ? JSON::true : JSON::false;
+}
+
 =head2 default
 
 Standard 404 error page