Pass on the text direction, scroll to end if RL
Errietta Kostala [Tue, 12 May 2015 09:49:16 +0000 (09:49 +0000)]
lib/stemmaweb/Controller/Relation.pm
root/js/relationship.js
root/src/relate.tt

index 24d1de3..0a0579c 100644 (file)
@@ -70,7 +70,10 @@ sub main :Chained('text') :PathPart('') :Args(0) {
        my( $self, $c ) = @_;
        my $tradition = delete $c->stash->{'tradition'};
        my $collation = $tradition->collation;
-       
+
+       # Stash text direction to use in JS.
+       $c->stash->{'direction'} = $collation->direction;
+
        # Stash the relationship definitions
        $c->stash->{'relationship_scopes'} = 
                to_json( find_type_constraint( 'RelationshipScope' )->values );
index 495d28c..9a4a169 100644 (file)
@@ -4,6 +4,7 @@ var svg_root_element = null;
 var start_element_height = 0;
 var reltypes = {};
 var readingdata = {};
+var text_direction = 'LR';
 
 jQuery.removeFromArray = function(value, arr) {
     return jQuery.grep(arr, function(elem, index) {
@@ -224,7 +225,10 @@ function svgEnlargementLoaded() {
     
     //initialize marquee
     marquee = new Marquee();
-    
+
+       if (text_direction == 'RL') {
+               scrollToEnd();
+       }
 }
 
 function add_relations( callback_fn ) {
@@ -981,6 +985,21 @@ function readings_equivalent( source, target ) {
        return false;
 }
 
+function scrollToEnd() {
+       var stateTf = svg_root_element.getCTM().inverse();
+
+       var vbdim = svg_root.viewBox.baseVal;
+       var width = Math.floor(svg_root_element.getBoundingClientRect().width) - vbdim.width;
+
+       var p = svg_root.createSVGPoint();
+       p.x = width;
+       p.y = 0;
+       p = p.matrixTransform(stateTf);
+
+       var matrix = stateTf.inverse().translate(-p.x, -100);
+       var s = "matrix(" + matrix.a + "," + matrix.b + "," + matrix.c + "," + matrix.d + "," + matrix.e + "," + matrix.f + ")";
+       svg_root_element.setAttribute("transform", s);
+}
 
 $(document).ready(function () {
     
@@ -1468,7 +1487,9 @@ function expandFillPageClients() {
        });
 }
 
-function loadSVG(svgData) {
+function loadSVG(svgData, direction) {
+       text_direction = direction;
+
        var svgElement = $('#svgenlargement');
 
        $(svgElement).svg('destroy');
index e46c5de..4d9d4e4 100644 (file)
@@ -24,7 +24,7 @@ var ternary_values = [% ternary_values %];
 [% END -%]
 
 $(document).ready(function () {
-  loadSVG('[% svg_string %]');
+  loadSVG('[% svg_string %]', '[% direction %]');
 });
 </script>
 [% END %]