X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/e660e609661edadc1ed5ad49d6e83e936b2f91cd..6206ab7fe75362155c8b9565a1bd512a9f7ce443:/app/views/site/index.html.erb diff --git a/app/views/site/index.html.erb b/app/views/site/index.html.erb index 884896109..8aa318a3f 100644 --- a/app/views/site/index.html.erb +++ b/app/views/site/index.html.erb @@ -1,9 +1,15 @@ <% if @user and !@user.home_lon.nil? and !@user.home_lat.nil? %> <% content_for :greeting do %> - <%= link_to_function t('layouts.home'), "setPosition(#{@user.home_lat}, #{@user.home_lon}, 15)", { :title => t('layouts.home_tooltip') } %> | + <%= link_to t("layouts.home"), "#", :class => "set_position", :data => { :lat => @user.home_lat, :lon => @user.home_lon, :zoom => 15 }, :title => t("layouts.home_tooltip") %> | <% end %> <% end %> +<% unless STATUS == :api_offline or STATUS == :database_offline -%> + <% content_for :editmenu do -%> +
  • <%= link_to t("browse.start_rjs.data_layer_name"), "#", :id => "show_data" %>
  • + <% end -%> +<% end -%> + <%= render :partial => 'sidebar', :locals => { :onopen => "resizeMap();", :onclose => "resizeMap();" } %> <%= render :partial => 'key' %> <%= render :partial => 'search' %> @@ -12,7 +18,6 @@

    <%= t 'site.index.js_1' %>

    <%= t 'site.index.js_2' %>

    -

    <%= t 'site.index.js_3' %>

    @@ -123,6 +128,7 @@ end <%= javascript_include_tag 'openlayers.js' %> <%= javascript_include_tag 'map.js' %> +<%= javascript_include_tag 'notes.js' %> <%= render :partial => 'resize' %> @@ -140,86 +146,35 @@ end map = createMap("map"); <% unless STATUS == :api_offline or STATUS == :database_offline %> - map.dataLayer = new OpenLayers.Layer("<%= I18n.t 'browse.start_rjs.data_layer_name' %>", { "visibility": false }); - map.dataLayer.events.register("visibilitychanged", map.dataLayer, toggleData); - map.addLayer(map.dataLayer); - - map.noteLayer = new OpenLayers.Layer.Vector("Notes", { + map.dataLayer = new OpenLayers.Layer("<%= I18n.t 'browse.start_rjs.data_layer_name' %>", { visibility: false, - projection: new OpenLayers.Projection("EPSG:4326"), - styleMap: new OpenLayers.StyleMap(new OpenLayers.Style({ - graphicWidth: 22, - graphicHeight: 22, - graphicOpacity: 0.7, - graphicXOffset: -11, - graphicYOffset: -11 - }, { - rules: [ - new OpenLayers.Rule({ - filter: new OpenLayers.Filter.Comparison({ - type: OpenLayers.Filter.Comparison.EQUAL_TO, - property: "status", - value: "open" - }), - symbolizer: { - externalGraphic: "<%= image_path 'open_note_marker.png' %>" - } - }), - new OpenLayers.Rule({ - filter: new OpenLayers.Filter.Comparison({ - type: OpenLayers.Filter.Comparison.EQUAL_TO, - property: "status", - value: "closed" - }), - symbolizer: { - externalGraphic: "<%= image_path 'closed_note_marker.png' %>" - } - }) - ] - })), - strategies: [ - new OpenLayers.Strategy.BBOX() - ], - protocol: new OpenLayers.Protocol.HTTP({ - url: "<%= url_for :controller => :note, :action => :list, :format => :json %>", - format: new OpenLayers.Format.GeoJSON(), - callback: noteCallback - }) + displayInLayerSwitcher: false }); - map.noteLayer.events.register("featureselected", map, noteSelected); - map.noteLayer.events.register("featureunselected", map, noteUnselected); - map.addLayer(map.noteLayer); + map.addLayer(map.dataLayer); - map.noteControl = new OpenLayers.Control.SelectFeature(map.noteLayer, { - autoActivate: true - }); - map.addControl(map.noteControl); + var noteLayer = addNoteLayer(map, "<%= notes_url :format => 'json' %>", $("#createnoteanchor"), 11); <% if params[:notes] == "yes" -%> - map.noteLayer.setVisibility(true); + noteLayer.setVisibility(true); <% end -%> - - $("#createnoteanchor").click(addNote); - - map.events.register("zoomend", map, allowNoteReports); <% end %> <% unless object_zoom %> <% if bbox %> var bbox = new OpenLayers.Bounds(<%= minlon %>, <%= minlat %>, <%= maxlon %>, <%= maxlat %>); - setMapExtent(bbox); + map.zoomToExtent(proj(bbox)); <% if box %> $(window).load(function() { addBoxToMap(bbox) }); <% end %> <% else %> var centre = new OpenLayers.LonLat(<%= lon %>, <%= lat %>); + <% if params[:scale].to_f > 0 then -%> + var zoom = <%= scale_to_zoom params[:scale] %>; + <% else -%> var zoom = <%= zoom %>; - - <% if params[:scale] and params[:scale].length > 0 then %> - zoom = scaleToZoom(<%= params[:scale].to_f %>); - <% end %> + <% end -%> setMapCenter(centre, zoom); <% end %> @@ -250,44 +205,44 @@ end handleResize(); } - function toggleData() { - if (map.dataLayer.visibility) { + $(document).ready(function () { + $("#show_data").click(function () { $.ajax({ url: "<%= url_for :controller => :browse, :action => :start %>" }); - } else if (map.dataLayer.active) { - closeSidebar(); - } - } - - function getPosition() { - return getMapCenter(); - } - - function getZoom() { - return getMapZoom(); - } - - function setPosition(lat, lon, zoom, min_lon, min_lat, max_lon, max_lat) { - var centre = new OpenLayers.LonLat(lon, lat); + }); - if (min_lon && min_lat && max_lon && max_lat) { - var bbox = new OpenLayers.Bounds(min_lon, min_lat, max_lon, max_lat); + $("body").on("click", "a.set_position", function () { + var lat = parseFloat($(this).attr("data-lat")); + var lon = parseFloat($(this).attr("data-lon")); + var zoom = parseInt($(this).attr("data-zoom")); + var min_lon = parseFloat($(this).attr("data-min-lon")); + var min_lat = parseFloat($(this).attr("data-min-lat")); + var max_lon = parseFloat($(this).attr("data-max-lon")); + var max_lat = parseFloat($(this).attr("data-max-lat")); + var centre = new OpenLayers.LonLat(lon, lat); + + if (min_lon && min_lat && max_lon && max_lat) { + var bbox = new OpenLayers.Bounds(min_lon, min_lat, max_lon, max_lat); + + map.zoomToExtent(proj(bbox)); + } else { + setMapCenter(centre, zoom); + } - setMapExtent(bbox); - } else { - setMapCenter(centre, zoom); - } + if (marker) { + removeMarkerFromMap(marker); + } - if (marker) - removeMarkerFromMap(marker); + marker = addMarkerToMap(centre, getArrowIcon()); - marker = addMarkerToMap(centre, getArrowIcon()); - } + return false; + }); + }); function updateLocation() { - var lonlat = getMapCenter(); + var lonlat = unproj(map.getCenter()); var zoom = map.getZoom(); var layers = getMapLayers(); - var extents = getMapExtent(); + var extents = unproj(map.getExtent()); var expiry = new Date(); var objtype; var objid; @@ -304,7 +259,7 @@ end } function remoteEditHandler(event) { - var extent = getMapExtent(); + var extent = unproj(map.getExtent()); var loaded = false; $("#linkloader").load(function () { loaded = true; }); @@ -329,46 +284,6 @@ end <% end %> } - function noteCallback(scope, response) { - for (var f = 0; f < response.features.length; f++) { - var feature = response.features[f]; - } - } - - function noteSelected(o) { - var feature = o.feature; - var location = feature.geometry.getBounds().getCenterLonLat(); - - feature.popup = new OpenLayers.Popup.FramedCloud( - feature.attributes.id, location, null, - "

    " + feature.attributes.id + "

    ", - null, true, function (e) { map.noteControl.unselect(feature) } - ); - - map.addPopup(feature.popup); -// feature.popup.show(); - } - - function noteUnselected(o) { - var feature = o.feature; - - map.removePopup(feature.popup); - delete feature.popup; - } - - function addNote() { - map.noteLayer.setVisibility(true); - map.noteLayer.addNote(map.getCenter()); - } - - function allowNoteReports() { - if (map.getZoom() > 11) { - $("#createnoteanchor").show(); - } else { - $("#createnoteanchor").hide(); - } - } - $(document).ready(mapInit); $(document).ready(installEditHandler); $(document).ready(handleResize); @@ -385,7 +300,7 @@ end $(document).ready(function () { $("#exportanchor").click(function (e) { $.ajax({ url: "<%= url_for :controller => :export, :action => :start %>" }); - Event.stop(e); + e.preventDefault(); }); <% if params[:action] == 'export' -%>