]> dev.renevier.net Git - syj.git/blob - public/js/list.js
interface to manage list of created routes
[syj.git] / public / js / list.js
1 var WGS84 = new OpenLayers.Projection("EPSG:4326");
2 var Mercator = new OpenLayers.Projection("EPSG:900913");
3
4 function deletePath(evt) {
5     evt.stop();
6     if (!confirm(SyjStrings.confirmDelete)) {
7         return;
8     }
9     var link = evt.target,
10         item = $(link).up('.item'),
11         id = item.getAttribute('data-id');
12
13     $("message").hide();
14     new Ajax.Request('path/' + id.toString() + '/delete', {
15         method: 'post',
16         onSuccess: function(transport) {
17             item.down('.title').update();
18             item.down('.geom').update().setStyle({backgroundColor: 'gray'});
19             $("message").setMessage(SyjStrings.deleteSuccess, "success");
20         },
21         onFailure: function(transport) {
22             var httpCode = 0, message = "";
23             if (transport) {
24                 httpCode = transport.getStatus();
25             }
26             switch (httpCode) {
27                 case 0:
28                     message = SyjStrings.notReachedError;
29                 break;
30                 case 400:
31                 case 403:
32                     location = loginlink();
33                     return;
34                 break;
35                 case 404:
36                      message = SyjStrings.requestError;
37                 break;
38                 case 410:
39                     message = SyjStrings.gonePathError;
40                 break;
41                 case 500:
42                     message = SyjStrings.serverError;
43                 break;
44                 default:
45                     message = SyjStrings.unknownError;
46                 break;
47             }
48             $("message").setMessage(message, "error");
49         }
50     });
51 }
52
53 document.observe("dom:loaded", function() {
54     $("message").hide();
55     $$(".map").each(function(elt) {
56         var geom = elt.getAttribute('data-geom'),
57             baseLayer = new OpenLayers.Layer.OSM("OSM"),
58             map = new OpenLayers.Map(elt, { controls: [], theme: null}),
59             layerOptions = {format:     OpenLayers.Format.WKT,
60                             projection: WGS84,
61                             styleMap:   new OpenLayers.StyleMap({
62                                             "default": new OpenLayers.Style({
63                                                 strokeColor: "blue",
64                                                 strokeWidth: 5,
65                                                 strokeOpacity: 0.7
66                                             })
67                                          })},
68             wkt = new OpenLayers.Format.WKT({ internalProjection: Mercator, externalProjection: WGS84 }),
69             viewLayer = new OpenLayers.Layer.Vector("View Layer", layerOptions),
70             extent;
71
72         map.addLayers([baseLayer, viewLayer]);
73         viewLayer.addFeatures([wkt.read(geom)]);
74         map.zoomToExtent(viewLayer.getDataExtent());
75     });
76     $$(".delete-link").invoke('observe', 'click', deletePath);
77 });
78
79 function loginlink() {
80     var lang;
81     if (location.search && location.search.length && location.search[0] === '?') {
82         lang = location.search.slice(1).split('&').find(function(str) {
83             return str.startsWith('lang=');
84         });
85         if (lang) {
86             lang = lang.slice('lang='.length);
87         }
88     }
89     return 'login?redirect=' + encodeURIComponent(location.pathname + location.search) + ((lang) ? '&lang=' + lang: "");
90 }