X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/8815700a773665fe861c1bdc5543948de1148829..22594361d5abd2a6ee18e290058d9d39d7d761ec:/app/views/export/start.rjs diff --git a/app/views/export/start.rjs b/app/views/export/start.rjs index 4323cf7f4..abf9e671d 100644 --- a/app/views/export/start.rjs +++ b/app/views/export/start.rjs @@ -1,8 +1,10 @@ -page.replace_html :sidebar_title, 'Export' +page.replace_html :sidebar_title, t('export.start_rjs.export') page.replace_html :sidebar_content, :partial => 'start' page << < 0.25) { - $("format_osm").disabled = true; - $("format_osm").checked = false; + mapnikSizeChanged(); + htmlUrlChanged(); + } - formatChanged(); + function clearBox() { + vectors.destroyFeatures(); + } + + function drawBox(bounds) { + var feature = new OpenLayers.Feature.Vector(bounds.toGeometry()); + + vectors.addFeatures(feature); + } + + function validateControls() { + var bounds = new OpenLayers.Bounds($("minlon").value, $("minlat").value, $("maxlon").value, $("maxlat").value); + + if (bounds.getWidth() * bounds.getHeight() > #{MAX_REQUEST_AREA}) { + $("export_osm_too_large").style.display = "block"; } else { - $("format_osm").disabled = false; + $("export_osm_too_large").style.display = "none"; } - - var max_zoom = maxOsmarenderZoom(); + var max_scale = maxMapnikScale(); - $("max_scale").innerHTML = roundScale(max_scale); + if ($("format_osm").checked && bounds.getWidth() * bounds.getHeight() > #{MAX_REQUEST_AREA}) { + $("export_commit").disabled = true; + } else if ($("format_mapnik").checked && $("mapnik_scale").value < max_scale) { + $("export_commit").disabled = true; + } else { + $("export_commit").disabled = false; + } + + $("mapnik_max_scale").innerHTML = roundScale(max_scale); + + var max_zoom = maxOsmarenderZoom(); for (var o = 0; o < $("osmarender_zoom").options.length; o++) { var option = $("osmarender_zoom").options[o]; @@ -151,6 +225,80 @@ page << <'; + + // Create "larger map" link + var center = bounds.getCenterLonLat(); + var epsg4326 = new OpenLayers.Projection("EPSG:4326"); + var epsg900913 = new OpenLayers.Projection("EPSG:900913"); + + bounds.transform(epsg4326, epsg900913); + var zoom = map.getZoomForExtent(bounds); + + var layers = getMapLayers(); + + html += '
'+"#{html_escape_unicode(I18n.t('export.start_rjs.view_larger_map'))}"+''; + + $("export_html_text").value = html; + + if ($("format_html").checked) { + $("export_html_text").select(); + } + } + + function formatChanged() { + $("export_commit").style.display = "inline"; + + if ($("format_osm").checked) { + $("export_osm").style.display = "inline"; + } else { + $("export_osm").style.display = "none"; + } + + if ($("format_mapnik").checked) { + $("mapnik_scale").value = roundScale(map.getScale()); + $("export_mapnik").style.display = "inline"; + } else { + $("export_mapnik").style.display = "none"; + } + + if ($("format_osmarender").checked) { + var zoom = Math.min(map.getZoom(), maxOsmarenderZoom()); + + $("osmarender_zoom").options.selectedIndex = zoom - 4; + $("export_osmarender").style.display = "inline"; + } else { + $("export_osmarender").style.display = "none"; + } + + if ($("format_html").checked) { + $("export_html").style.display = "inline"; + $("export_commit").style.display = "none"; + $("export_html_text").select(); + } else { + $("export_html").style.display = "none"; + clearMarker(); + } + + validateControls(); + } + + $("format_osm").onclick = formatChanged; + $("format_mapnik").onclick = formatChanged; + $("format_osmarender").onclick = formatChanged; + $("format_html").onclick = formatChanged; + function maxMapnikScale() { var bounds = new OpenLayers.Bounds($("minlon").value, $("minlat").value, $("maxlon").value, $("maxlat").value); var epsg4326 = new OpenLayers.Projection("EPSG:4326"); @@ -161,6 +309,17 @@ page << <