Move changeset JS to page-specific script file
authorJohn Firebaugh <john.firebaugh@gmail.com>
Fri, 5 Oct 2012 00:32:14 +0000 (17:32 -0700)
committerTom Hughes <tom@compton.nu>
Fri, 5 Oct 2012 14:20:26 +0000 (15:20 +0100)
app/assets/javascripts/changeset.js [new file with mode: 0644]
app/views/changeset/_map.html.erb
app/views/changeset/list.html.erb
config/environments/production.rb

diff --git a/app/assets/javascripts/changeset.js b/app/assets/javascripts/changeset.js
new file mode 100644 (file)
index 0000000..0946056
--- /dev/null
@@ -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));
+  }
+});
index df91d6d7b4a3a9b55f9d2544e3e3f5239c0948bc..9730059eed89d9973dc96052879f9a6e21fd1033 100644 (file)
@@ -1,80 +1,2 @@
 <div id="changeset_list_map">
 </div>
-
-<script type="text/javascript">
-  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));
-    }
-  });
-</script>
index f715e237b0cd78bbd3bcd734259847dc242cfe60..abeea654afe6f8fdc7c921da51755a85c99789f1 100644 (file)
@@ -1,3 +1,7 @@
+<% content_for :head do -%>
+  <%= javascript_include_tag "changeset" %>
+<% end -%>
+
 <h1><%= @heading %></h1>
 <p><%= raw(@description) %></p>
 
index 054f65404dd0e42541843cc3e0a485a0a339b1ec..a4ca6f273332c0f2a599a86731a1d84c22ead49a 100644 (file)
@@ -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 )