From 898bc32f48a395f428e7f57d04bbc95ec27d8517 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Thu, 4 Oct 2012 17:32:14 -0700 Subject: [PATCH 1/1] Move changeset JS to page-specific script file --- app/assets/javascripts/changeset.js | 75 +++++++++++++++++++++++++++ app/views/changeset/_map.html.erb | 78 ----------------------------- app/views/changeset/list.html.erb | 4 ++ config/environments/production.rb | 2 +- 4 files changed, 80 insertions(+), 79 deletions(-) create mode 100644 app/assets/javascripts/changeset.js diff --git a/app/assets/javascripts/changeset.js b/app/assets/javascripts/changeset.js new file mode 100644 index 000000000..094605661 --- /dev/null +++ b/app/assets/javascripts/changeset.js @@ -0,0 +1,75 @@ +var highlight; + +function highlightChangeset(id) { + var feature = vectors.getFeatureByFid(id); + var bounds = feature.geometry.getBounds(); + + if (bounds.containsBounds(map.getExtent())) { + bounds = map.getExtent().scale(1.1); + } + + if (highlight) vectors.removeFeatures(highlight); + + highlight = new OpenLayers.Feature.Vector(bounds.toGeometry(), {}, { + strokeWidth: 2, + strokeColor: "#ee9900", + fillColor: "#ffff55", + fillOpacity: 0.5 + }); + + vectors.addFeatures(highlight); + + $("#tr-changeset-" + id).addClass("selected"); +} + +function unHighlightChangeset(id) { + vectors.removeFeatures(highlight); + + $("#tr-changeset-" + id).removeClass("selected"); +} + +$(document).ready(function () { + var map = createMap("changeset_list_map", { + controls: [ + new OpenLayers.Control.Navigation(), + new OpenLayers.Control.Zoom(), + new OpenLayers.Control.SimplePanZoom() + ] + }); + + var bounds = new OpenLayers.Bounds(); + + $("[data-changeset]").each(function () { + var changeset = $(this).data('changeset'); + if (changeset.bbox) { + var bbox = new OpenLayers.Bounds(changeset.bbox.minlon, changeset.bbox.minlat, changeset.bbox.maxlon, changeset.bbox.maxlat); + + bounds.extend(bbox); + + addBoxToMap(bbox, changeset.id, true); + } + }); + + vectors.events.on({ + "featureselected": function(feature) { + highlightChangeset(feature.feature.fid); + }, + "featureunselected": function(feature) { + unHighlightChangeset(feature.feature.fid); + } + }); + + var selectControl = new OpenLayers.Control.SelectFeature(vectors, { + multiple: false, + hover: true + }); + map.addControl(selectControl); + selectControl.activate(); + + var params = OSM.mapParams(); + if (params.bbox) { + map.zoomToExtent(proj(new OpenLayers.Bounds(params.minlon, params.minlat, params.maxlon, params.maxlat))); + } else { + map.zoomToExtent(proj(bounds)); + } +}); diff --git a/app/views/changeset/_map.html.erb b/app/views/changeset/_map.html.erb index df91d6d7b..9730059ee 100644 --- a/app/views/changeset/_map.html.erb +++ b/app/views/changeset/_map.html.erb @@ -1,80 +1,2 @@
- - diff --git a/app/views/changeset/list.html.erb b/app/views/changeset/list.html.erb index f715e237b..abeea654a 100644 --- a/app/views/changeset/list.html.erb +++ b/app/views/changeset/list.html.erb @@ -1,3 +1,7 @@ +<% content_for :head do -%> + <%= javascript_include_tag "changeset" %> +<% end -%> +

<%= @heading %>

<%= raw(@description) %>

diff --git a/config/environments/production.rb b/config/environments/production.rb index 054f65404..a4ca6f273 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -56,7 +56,7 @@ OpenStreetMap::Application.configure do # config.action_controller.asset_host = "http://assets.example.com" # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added) - config.assets.precompile += %w( index.js edit.js browse.js pngfix.js swfobject.js ) + config.assets.precompile += %w( index.js edit.js browse.js changeset.js pngfix.js swfobject.js ) config.assets.precompile += %w( large-ltr.css small-ltr.css print-ltr.css ) config.assets.precompile += %w( large-rtl.css small-rtl.css print-rtl.css ) config.assets.precompile += %w( browse.css theme/openstreetmap/style.css ) -- 2.39.5