X-Git-Url: https://dev.renevier.net/?a=blobdiff_plain;f=public%2Fjs%2Flist.js;h=c30fa334aec09efeaca88f4a412c4d850bce9b9c;hb=facf74e6972eafb727833b85b38b061215dea833;hp=db95dc5016270a23d6d53113ce0e3624927b4e6a;hpb=ec061a75fe57a25eb7ef0894f5e723397ba35472;p=syj.git diff --git a/public/js/list.js b/public/js/list.js index db95dc5..c30fa33 100644 --- a/public/js/list.js +++ b/public/js/list.js @@ -1,58 +1,24 @@ +"use strict"; + 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'); +document.observe("dom:loaded", function() { $("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"); - } + + $$(".item").each(function(elt) { + new item(elt); }); -} +}); -document.observe("dom:loaded", function() { - $("message").hide(); - $$(".map").each(function(elt) { +function item(elt) { + this.deleteHandler = elt.on('click', '.delete-link', this.remove.bindAsEventListener(this)); + this.elt = elt; + this.map = this.createmap(elt.down('.map')); +} +item.prototype = { + createmap: function(elt) { var geom = elt.getAttribute('data-geom'), baseLayer = new OpenLayers.Layer.OSM("OSM"), map = new OpenLayers.Map(elt, { controls: [], theme: null}), @@ -72,9 +38,69 @@ document.observe("dom:loaded", function() { map.addLayers([baseLayer, viewLayer]); viewLayer.addFeatures([wkt.read(geom)]); map.zoomToExtent(viewLayer.getDataExtent()); - }); - $$(".delete-link").invoke('observe', 'click', deletePath); -}); + return map; + }, + + deleteSuccess: function() { + this.deactivate(); + $("message").setMessage(SyjStrings.deleteSuccess, "success"); + }, + + deactivate: function() { + this.map.destroy(); + this.elt.down('.title').update(); + this.elt.down('.geom').update().setStyle({backgroundColor: 'gray'}); + this.deleteHandler.stop(); + this.elt.on('click', 'a', function(evt) { evt.stop(); }); + this.elt.select('a').invoke('setStyle', {textDecoration: 'line-through'}); + }, + + deleteFailure: 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: + this.deactivate(); + message = SyjStrings.gonePathError; + break; + case 500: + message = SyjStrings.serverError; + break; + default: + message = SyjStrings.unknownError; + break; + } + $("message").setMessage(message, "error"); + }, + + remove: function(evt) { + evt.stop(); + if (!confirm(SyjStrings.confirmDelete)) { + return; + } + var id = this.elt.getAttribute('data-id'); + + $("message").clearMessages(); + new Ajax.Request('path/' + id.toString() + '/delete', { + method: 'post', + onSuccess: this.deleteSuccess.bind(this), + onFailure: this.deleteFailure.bind(this) + }); + } +}; function loginlink() { var lang;