segment the large texts in the relationship mapper
Tara L Andrews [Sun, 8 Apr 2012 11:57:23 +0000 (13:57 +0200)]
stemmaweb/lib/stemmaweb/Controller/Relation.pm
stemmaweb/root/css/relationship.css
stemmaweb/root/src/relate.tt

index 2671473..8b72205 100644 (file)
@@ -83,12 +83,13 @@ sub text :Chained('/') :PathPart('relation') :CaptureArgs(1) {
                        $r += 500;
                }
                $c->stash->{'textsegments'} = [];
-               foreach my $start ( @divs ) {
-                       my $seg = { 'start' => $start };
-                       $seg->{'end'} = $start + 550 > $length ? $length : $start + 550;
+               foreach my $i ( 0..$#divs ) {
+                       my $seg = { 'start' => $divs[$i] };
+                       $seg->{'display'} = "Segment " . ($i+1);
                        push( @{$c->stash->{'textsegments'}}, $seg );
                }
        }
+       $DB::single = 1;
        $c->stash->{'textid'} = $textid;
        $c->stash->{'tradition'} = $tradition;
 }
@@ -100,7 +101,7 @@ sub main :Chained('text') :PathPart('') :Args(0) {
        my $collation = $tradition->collation;
        my $svgopts;
        if( $startseg ) {
-               # Only render the subgraph from startseg to +500 or end,
+               # Only render the subgraph from startseg to +550 or end,
                # whichever is less.
                $svgopts = { 'from' => $startseg };
                $svgopts->{'to'} = $startseg + 550
@@ -108,10 +109,12 @@ sub main :Chained('text') :PathPart('') :Args(0) {
        } elsif( exists $c->stash->{'textsegments'} ) {
                # This is the unqualified load of a long tradition. We implicitly start 
                # at zero, but go only as far as 550.
+               $startseg = 0;
                $svgopts = { 'to' => 550 };
        }
        my $svg_str = $collation->as_svg( $svgopts );
        $svg_str =~ s/\n//gs;
+       $c->stash->{'startseg'} = $startseg if defined $startseg;
        $c->stash->{'svg_string'} = $svg_str;
        $c->stash->{'text_title'} = $tradition->name;
        $c->stash->{'template'} = 'relate.tt';
index ef19de0..9b778b6 100644 (file)
@@ -33,9 +33,13 @@ body {
        padding-top: 40px;
 }
 .segment_guide {
+       color: #488dd2;
        padding-left: 30px;
        padding-right: 30px;
 }
+.selected {
+       background-color: #dadada;
+}
 h1.title a:link, h1.title a:visited, h1.title a:active {
        color: #666;
        font-weight: bold;
index 87e311c..65bb19e 100644 (file)
@@ -18,9 +18,13 @@ $(function() {
                <h2>[% text_title %]</h2>
                <div id="segmentation">
 [% FOREACH segment IN textsegments -%]
+[% IF segment.start != startseg -%]
                        <a href="[% c.uri_for( "/relation/$textid" ) %]?start=[% segment.start %]">
-                               <span class="segment_guide">[% segment.start %] – [% segment.end %]</span>
+                               <span class="segment_guide">[% segment.display %]</span>
                        </a>
+[% ELSE -%]
+                       <span class="segment_guide selected">[% segment.display %]</span>
+[% END -%]
 [% END -%]
                </div>
        </div>