]> dev.renevier.net Git - syj.git/blobdiff - public/js/syj.js
merge linestrings for gpx containting multiple trkseg elements.
[syj.git] / public / js / syj.js
index 3ed9ad60b8b639cb7995754066ae02ada1428244..8f5f509020fd0f6251055213aa3d050169f963fe 100644 (file)
@@ -1,11 +1,15 @@
 /*  This file is part of Syj, Copyright (c) 2010-2011 Arnaud Renevier,
     and is published under the AGPL license. */
 
+"use strict";
+
 // avoid openlayers alerts
 OpenLayers.Console.userError = function(error) {
     SYJView.messenger.setMessage(error, "error");
 };
 
+OpenLayers.Layer.Vector.prototype.renderers = ["SVG2", "VML", "Canvas"];
+
 var SyjSaveUI = {
     status: "unknown",
 
@@ -368,7 +372,7 @@ var SYJView = {
                     this.messenger.setMessage(SyjStrings.uploadFileError, "warn");
                 }.bind(this);
                 reader.onload = function(evt) {
-                    var data = null, results = null, engine = null, vector = null, i = 0, formats = ['KML', 'GPX', 'GeoJSON'];
+                    var data = null, results = null, engine = null, vector = null, i = 0, format = null, formats = ['KML', 'GPX', 'GeoJSON'];
 
                     $("geom_upload_container").removeClassName("disabled");
                     $("geom_upload").disabled = false;
@@ -379,7 +383,8 @@ var SYJView = {
                     data = evt.target.result;
 
                     for (i = 0; i < formats.length; i++) {
-                        engine = new OpenLayers.Format[formats[i]]({ internalProjection: Mercator, externalProjection: WGS84 });
+                        format = formats[i];
+                        engine = new OpenLayers.Format[format]({ internalProjection: Mercator, externalProjection: WGS84 });
                         try {
                             results = engine.read(data);
                         } catch(e) {
@@ -398,6 +403,12 @@ var SYJView = {
                         readerror();
                         return;
                     }
+                    // merge linestrings for gpx containting multiple trkseg elements.
+                    if (format === 'GPX') {
+                      for (i = 1; i < results.length; i++) {
+                        vector.geometry.addComponents(results[i].geometry.components);
+                      }
+                    }
                     this.viewLayer.addFeatures([vector]);
                     this.map.zoomToExtent(this.viewLayer.getDataExtent());
 
@@ -751,7 +762,11 @@ var SYJUserClass = Class.create(SYJModalClass, {
         $super();
         $("termsofusearea").hide();
 
-        $$("#user_termsofuse_anchor, #geom_termsofuse_anchor").invoke('observe', "click", function(evt) {
+        var touevt = (function(evt) {
+            if (evt.type === "keyup" && evt.keyCode !== 32) { // 32 = space
+                // allow opening box by pressing space
+                return;
+            }
             if (!this.toubox) {
                 this.toubox = new SimpleBox($("termsofusearea"), {
                     closeMethods: ["onescapekey", "onouterclick", "onbutton"]
@@ -763,7 +778,11 @@ var SYJUserClass = Class.create(SYJModalClass, {
                 $("termsofuseiframe").setAttribute("src", evt.target.href);
             }
             evt.stop();
-        }.bindAsEventListener(this));
+        }).bindAsEventListener(this);
+
+        ["click", "keyup"].each(function (evtName) {
+            $$("#user_termsofuse_anchor, #geom_termsofuse_anchor").invoke('observe', evtName, touevt);
+        })
 
         $$("#login_area_create > a").invoke('observe', 'click',
             function(evt) {