]> dev.renevier.net Git - syj.git/blobdiff - public/js/list.js
interface to manage list of created routes
[syj.git] / public / js / list.js
diff --git a/public/js/list.js b/public/js/list.js
new file mode 100644 (file)
index 0000000..db95dc5
--- /dev/null
@@ -0,0 +1,90 @@
+var WGS84 = new OpenLayers.Projection("EPSG:4326");
+var Mercator = new OpenLayers.Projection("EPSG:900913");
+
+function deletePath(evt) {
+    evt.stop();
+    if (!confirm(SyjStrings.confirmDelete)) {
+        return;
+    }
+    var link = evt.target,
+        item = $(link).up('.item'),
+        id = item.getAttribute('data-id');
+
+    $("message").hide();
+    new Ajax.Request('path/' + id.toString() + '/delete', {
+        method: 'post',
+        onSuccess: function(transport) {
+            item.down('.title').update();
+            item.down('.geom').update().setStyle({backgroundColor: 'gray'});
+            $("message").setMessage(SyjStrings.deleteSuccess, "success");
+        },
+        onFailure: function(transport) {
+            var httpCode = 0, message = "";
+            if (transport) {
+                httpCode = transport.getStatus();
+            }
+            switch (httpCode) {
+                case 0:
+                    message = SyjStrings.notReachedError;
+                break;
+                case 400:
+                case 403:
+                    location = loginlink();
+                    return;
+                break;
+                case 404:
+                     message = SyjStrings.requestError;
+                break;
+                case 410:
+                    message = SyjStrings.gonePathError;
+                break;
+                case 500:
+                    message = SyjStrings.serverError;
+                break;
+                default:
+                    message = SyjStrings.unknownError;
+                break;
+            }
+            $("message").setMessage(message, "error");
+        }
+    });
+}
+
+document.observe("dom:loaded", function() {
+    $("message").hide();
+    $$(".map").each(function(elt) {
+        var geom = elt.getAttribute('data-geom'),
+            baseLayer = new OpenLayers.Layer.OSM("OSM"),
+            map = new OpenLayers.Map(elt, { controls: [], theme: null}),
+            layerOptions = {format:     OpenLayers.Format.WKT,
+                            projection: WGS84,
+                            styleMap:   new OpenLayers.StyleMap({
+                                            "default": new OpenLayers.Style({
+                                                strokeColor: "blue",
+                                                strokeWidth: 5,
+                                                strokeOpacity: 0.7
+                                            })
+                                         })},
+            wkt = new OpenLayers.Format.WKT({ internalProjection: Mercator, externalProjection: WGS84 }),
+            viewLayer = new OpenLayers.Layer.Vector("View Layer", layerOptions),
+            extent;
+
+        map.addLayers([baseLayer, viewLayer]);
+        viewLayer.addFeatures([wkt.read(geom)]);
+        map.zoomToExtent(viewLayer.getDataExtent());
+    });
+    $$(".delete-link").invoke('observe', 'click', deletePath);
+});
+
+function loginlink() {
+    var lang;
+    if (location.search && location.search.length && location.search[0] === '?') {
+        lang = location.search.slice(1).split('&').find(function(str) {
+            return str.startsWith('lang=');
+        });
+        if (lang) {
+            lang = lang.slice('lang='.length);
+        }
+    }
+    return 'login?redirect=' + encodeURIComponent(location.pathname + location.search) + ((lang) ? '&lang=' + lang: "");
+}