]> git.openstreetmap.org Git - rails.git/blobdiff - app/views/export/start.js.erb
Disable the export button until a format is selected
[rails.git] / app / views / export / start.js.erb
index 80e9de1d8c439e1aea89a82421aaa4c2623feb32..e433a498fdbb532ccd1fa86ed69257545a6894f2 100644 (file)
@@ -1,5 +1,6 @@
 var vectors;
 var box;
+var transform;
 var markerLayer;
 var markerControl;
 
@@ -20,6 +21,13 @@ function startExport() {
   box.handler.callbacks.done = endDrag;
   map.addControl(box);
 
+  transform = new OpenLayers.Control.TransformFeature(vectors, {
+    rotate: false,
+    irregular: true
+  });
+  transform.events.register("transformcomplete", transform, transformComplete);
+  map.addControl(transform);
+
   map.events.register("moveend", map, mapMoved);
   map.events.register("changebaselayer", map, htmlUrlChanged);
 
@@ -37,7 +45,6 @@ function startExport() {
 
   $("#format_osm").click(formatChanged);
   $("#format_mapnik").click(formatChanged);
-  $("#format_osmarender").click(formatChanged);
   $("#format_html").click(formatChanged);
 
   $("#mapnik_scale").change(mapnikSizeChanged);
@@ -46,8 +53,6 @@ function startExport() {
 
   if (map.baseLayer.name == "Mapnik") {
     $("#format_mapnik").prop("checked", true);
-  } else if (map.baseLayer.name == "Osmarender") {
-    $("#format_osmarender").prop("checked", true);
   }
 
   formatChanged();
@@ -104,6 +109,11 @@ function endDrag(bbox) {
   $("#drag_box").html("<%=j t 'export.start_rjs.manually_select' %>");
 }
 
+function transformComplete(event) {
+  setBounds(event.feature.geometry.bounds);
+  validateControls();
+}
+
 function startMarker() {
   $("#add_marker").html("<%=j t 'export.start_rjs.click_add_marker' %>");
 
@@ -111,7 +121,7 @@ function startMarker() {
     markerLayer = new OpenLayers.Layer.Vector("",{
       displayInLayerSwitcher: false,
       style: {
-        externalGraphic: OpenLayers.Util.getImagesLocation() + "marker.png",
+        externalGraphic: OpenLayers.Util.getImageLocation("marker.png"),
         graphicXOffset: -10.5,
         graphicYOffset: -25,
         graphicWidth: 21,
@@ -183,6 +193,7 @@ function setBounds(bounds) {
 }
 
 function clearBox() {
+  transform.deactivate();
   vectors.destroyFeatures();
 }
 
@@ -190,6 +201,7 @@ function drawBox(bounds) {
   var feature = new OpenLayers.Feature.Vector(bounds.toGeometry());
 
   vectors.addFeatures(feature);
+  transform.setFeature(feature);
 }
 
 function validateControls() {
@@ -202,30 +214,16 @@ function validateControls() {
   }
 
   var max_scale = maxMapnikScale();
+  var disabled = true;
 
-  if ($("#format_osm").prop("checked") && bounds.getWidth() * bounds.getHeight() > <%= MAX_REQUEST_AREA %>) {
-    $("#export_commit").prop("disabled", true);
-  } else if ($("#format_mapnik").prop("checked") && $("#mapnik_scale").val() < max_scale) {
-    $("#export_commit").prop("disabled", true);
-  } else {
-    $("#export_commit").prop("disabled", false);
+  if ($("#format_osm").prop("checked")) {
+    disabled = bounds.getWidth() * bounds.getHeight() > <%= MAX_REQUEST_AREA %>;
+  } else if ($("#format_mapnik").prop("checked")) {
+    disabled = $("#mapnik_scale").val() < max_scale;
   }
 
+  $("#export_commit").prop("disabled", disabled);
   $("#mapnik_max_scale").html(roundScale(max_scale));
-
-  var max_zoom = maxOsmarenderZoom();
-
-  $("#osmarender_zoom option").each(function () {
-    if ($(this).val() > max_zoom) {
-      $(this).prop("disabled", true);
-    } else {
-      $(this).prop("disabled", false);
-    }
-  });
-
-  if ($("#osmarender_zoom option").is(":disabled:selected")) {
-    $("#osmarender_zoom option").filter(":enabled").last().prop("selected", true);
-  }
 }
 
 function htmlUrlChanged() {
@@ -276,15 +274,6 @@ function formatChanged() {
     $("#export_mapnik").hide();
   }
 
-  if ($("#format_osmarender").prop("checked")) {
-    var zoom = Math.min(map.getZoom(), maxOsmarenderZoom());
-
-    $("#osmarender_zoom option[value=" + zoom + "]").prop("selected", true);
-    $("#export_osmarender").show();
-  } else {
-    $("#export_osmarender").hide();
-  }
-
   if ($("#format_html").prop("checked")) {
     $("#export_html").show();
     $("#export_commit").hide();
@@ -319,16 +308,6 @@ function mapnikImageSize(scale) {
                              Math.round(bounds.getHeight() / scale / 0.00028));
 }
 
-function maxOsmarenderZoom() {
-  var bounds = new OpenLayers.Bounds($("#minlon").val(), $("#minlat").val(), $("#maxlon").val(), $("#maxlat").val());
-  var xzoom = Math.LOG2E * Math.log(2000 * 1.40625 / bounds.getWidth());
-  var ymin = bounds.bottom * Math.PI / 180;
-  var ymax = bounds.top * Math.PI / 180;
-  var yzoom = Math.LOG2E * (Math.log(2000 * 2 * Math.PI) - Math.log(Math.log((Math.tan(ymax) + 1 / Math.cos(ymax)) / (Math.tan(ymin) + 1 / Math.cos(ymin)))))
-
-  return Math.min(Math.floor(Math.min(xzoom, yzoom)), 17);
-}
-
 function roundScale(scale) {
   var precision = 5 * Math.pow(10, Math.floor(Math.LOG10E * Math.log(scale)) - 2);