X-Git-Url: https://dev.renevier.net/?a=blobdiff_plain;f=public%2Fjs%2Fsyj.js;h=bfd0a64e7a7bd22cbb7cd50ab4d5b0e29997c75a;hb=c1aeb7538786d8c9f3b3337c0b71e21ef89d9c77;hp=05e2134189075747764255a1461d4204b65096ea;hpb=672a0b538a6bf16b2b9885a10c9cff148a4826ae;p=syj.git diff --git a/public/js/syj.js b/public/js/syj.js index 05e2134..bfd0a64 100644 --- a/public/js/syj.js +++ b/public/js/syj.js @@ -21,7 +21,7 @@ var SyjSaveUI = { this.enableSubmit(); $("geom_title").disabled = false; $("geom_title").activate(); - $("geomform").removeClassName("disabled"); + $$("#geom_accept_container, #geom_title_container").invoke('removeClassName', "disabled"); this.status = "enabled"; return this; }, @@ -33,7 +33,7 @@ var SyjSaveUI = { this.disableSubmit(); $("geom_title").blur(); $("geom_title").disabled = true; - $("geomform").addClassName("disabled"); + $$("#geom_accept_container, #geom_title_container").invoke('addClassName', "disabled"); this.status = "disabled"; return this; }, @@ -267,7 +267,7 @@ var SYJView = { mode: 'view', init: function() { - var externalGraphic, baseURL, baseLayer, layerOptions, extent, hidemessenger; + var externalGraphic, baseURL, baseLayer, layerOptions, hidemessenger; // is svg context, opera does not resolve links with base element is svg context externalGraphic = styleMap.edit.styles.select.defaultStyle.externalGraphic; @@ -341,89 +341,43 @@ var SYJView = { if (typeof gInitialGeom !== "undefined" && typeof gInitialGeom.data !== "undefined") { this.viewLayer.addFeatures([this.wkt.read(gInitialGeom.data)]); - extent = this.viewLayer.getDataExtent(); // XXX: ie has not guessed height of map main div yet during map // initialisation. Now, it will read it correctly. this.map.updateSize(); + this.map.zoomToExtent(this.viewLayer.getDataExtent()); } else { - extent = new OpenLayers.Bounds(gMaxExtent.minlon, gMaxExtent.minlat, gMaxExtent.maxlon, gMaxExtent.maxlat) - .transform(WGS84, Mercator); + this.initMaPos(gInitialPos); } - this.map.zoomToExtent(extent); - document.observe('simplebox:shown', this.observer.bindAsEventListener(this)); - SYJPathLength.update(); - - if (window.FileList && window.FileReader) { - $("map").observe("dragenter", function(evt) { evt.stop();}); - $("map").observe("dragover", function(evt) { evt.stop();}); - $("map").observe("drop", function(evt) { - evt.stop(); - if (this.mode !== "view" || this.viewLayer.features.length) { - return; - } - if (!evt.dataTransfer.files.length) { - return; - } - var file = evt.dataTransfer.files[0]; - var reader = new FileReader(); - var readerror = function() { - this.messenger.setMessage(SyjStrings.dragFileError, "warn"); - }.bind(this); - reader.onload = function(evt) { - if (evt.error) { - readerror(); - return; - } - - var results = null; - var content = evt.target.result; - - var engine, i; - var formats = ['KML', 'GPX']; - for (i = 0; i < formats.length; i++) { - engine = new OpenLayers.Format[formats[i]]({ internalProjection: Mercator, externalProjection: WGS84 }); - try { - results = engine.read(content); - } catch(e) { - } - if (results || results.length) { - continue; - } - } - if (!results || !results.length) { - readerror(); - return; - } - - - var vector = results[0]; - if (vector.geometry.CLASS_NAME !== "OpenLayers.Geometry.LineString") { - readerror(); - return; - } - this.viewLayer.addFeatures([vector]); - this.map.zoomToExtent(this.viewLayer.getDataExtent()); + $("map-overlay").hide(); + $("geom_upload").observe('change', function() { + $("map-overlay").show(); + SyjSaveUI.enable(); + this.editControl.deactivate(); + }.bind(this)); - if ($("edit-btn")) { - $("edit-btn").click(); - } else if ($("create-btn")) { - $("create-btn").click(); - } + document.observe('simplebox:shown', this.observer.bindAsEventListener(this)); + SYJPathLength.update(); + }, - if (this.editControl.handler.realPoints.length < 2) { - SyjSaveUI.disable(); - } else { - SyjSaveUI.enable(); - } + initMaPos: function (aPos) { + var extent = null, center = null, zoom = 0; + if (aPos.hasOwnProperty('lon') && aPos.hasOwnProperty('lat') && aPos.hasOwnProperty('zoom')) { + center = new OpenLayers.LonLat(parseFloat(aPos.lon), parseFloat(aPos.lat)).transform(WGS84, Mercator); + zoom = parseInt(aPos.zoom); + } else if (aPos.hasOwnProperty('minlon') && aPos.hasOwnProperty('minlat') + && aPos.hasOwnProperty('maxlon') && aPos.hasOwnProperty('maxlat')) { + extent = new OpenLayers.Bounds(aPos.minlon, aPos.minlat, aPos.maxlon, aPos.maxlat) + .transform(WGS84, Mercator); + } else { + extent = new OpenLayers.Bounds(-160, -70, 160, 70).transform(WGS84, Mercator); + } - if (vector.data && vector.data.name) { - $("geom_title").value = vector.data.name; - } - }.bind(this); - reader.readAsText(file); - }.bind(this)); + if (extent) { + this.map.zoomToExtent(extent); + } else { + this.map.setCenter(center, zoom); } }, @@ -452,7 +406,12 @@ var SYJView = { this.viewMode(); - $("geom_data").value = this.wkt.write(new OpenLayers.Feature.Vector(line)); + if (line.components.length) { + $("geom_data").value = this.wkt.write(new OpenLayers.Feature.Vector(line)); + } else { + $("geom_data").value = ""; + } + if (this.mode === "edit" && typeof gLoggedInfo.pathid !== "undefined") { $("geomform").setAttribute("action", "path/" + gLoggedInfo.pathid.toString() + '/update'); } else { @@ -521,14 +480,25 @@ var SYJView = { callbacks: { modify: function(f, line) { SYJPathLength.update(); - if (!SYJView.unsavedRoute) { - SYJView.unsavedRoute = {}; + + var npoints = this.handler.realPoints.length; + if (npoints === 0) { + $("geom_upload_container").show(); + SYJView.unsavedRoute = null; + } else { + if (!SYJView.unsavedRoute) { + SYJView.unsavedRoute = {}; + } } - if (this.handler.realPoints.length < 2) { + + if (npoints < 2) { SyjSaveUI.disable(); } else { SyjSaveUI.enable(); } + }, + create: function(f, line) { + $("geom_upload_container").hide(); } },