From 3700b534e404a25ef5db1bb8283bae3cddb818fb Mon Sep 17 00:00:00 2001 From: Matt Amos Date: Sun, 1 May 2011 02:34:38 +0100 Subject: [PATCH 01/13] Change the test for whether the CTs have been seen to use the user preferences API call rather than user details, as that one is no longer blocked. --- test/integration/user_terms_seen_test.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/integration/user_terms_seen_test.rb b/test/integration/user_terms_seen_test.rb index f30c5d98e..63f7f627a 100644 --- a/test/integration/user_terms_seen_test.rb +++ b/test/integration/user_terms_seen_test.rb @@ -11,14 +11,14 @@ class UserTermsSeenTest < ActionController::IntegrationTest if REQUIRE_TERMS_SEEN user = users(:terms_not_seen_user) - get "/api/#{API_VERSION}/user/details", nil, auth_header(user.display_name, "test") + get "/api/#{API_VERSION}/user/preferences", nil, auth_header(user.display_name, "test") assert_response :forbidden # touch it so that the user has seen the terms user.terms_seen = true user.save - get "/api/#{API_VERSION}/user/details", nil, auth_header(user.display_name, "test") + get "/api/#{API_VERSION}/user/preferences", nil, auth_header(user.display_name, "test") assert_response :success end end From 39f17cfbe15e8ce0a54b778162d0438dea603983 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sun, 1 May 2011 22:53:47 +0100 Subject: [PATCH 02/13] Remove unused style rule --- public/stylesheets/common.css | 4 ---- 1 file changed, 4 deletions(-) diff --git a/public/stylesheets/common.css b/public/stylesheets/common.css index 1464c9807..6bc9666b2 100644 --- a/public/stylesheets/common.css +++ b/public/stylesheets/common.css @@ -611,10 +611,6 @@ hr { white-space: nowrap; } -#changeset_list.th { - font-weight: bold; -} - /* Rules for the data browser */ #browse_navigation { From 48929e8781f9c136a142400a7a2ef1cf994f74fd Mon Sep 17 00:00:00 2001 From: Mikel Maron Date: Sat, 30 Apr 2011 15:07:47 -0500 Subject: [PATCH 03/13] Add a map to the changeset list page Add a map to the changeset list page, with a bounding box for each changeset and highighting when the mouse is placed over either a box on the map or a row of the table. --- app/controllers/changeset_controller.rb | 2 + app/views/changeset/_changeset.html.erb | 14 ++-- .../changeset/_changeset_map_add.html.erb | 8 ++ app/views/changeset/_map.html.erb | 74 +++++++++++++++++++ app/views/changeset/list.html.erb | 1 + public/javascripts/map.js | 14 +++- public/stylesheets/common.css | 13 ++++ 7 files changed, 116 insertions(+), 10 deletions(-) create mode 100644 app/views/changeset/_changeset_map_add.html.erb create mode 100644 app/views/changeset/_map.html.erb diff --git a/app/controllers/changeset_controller.rb b/app/controllers/changeset_controller.rb index 5a4dc36fb..0aeaf200d 100644 --- a/app/controllers/changeset_controller.rb +++ b/app/controllers/changeset_controller.rb @@ -312,6 +312,8 @@ class ChangesetController < ApplicationController @page = (params[:page] || 1).to_i @page_size = 20 + @bbox = bbox + @edits = Changeset.find(:all, :include => [:user, :changeset_tags], :conditions => conditions, diff --git a/app/views/changeset/_changeset.html.erb b/app/views/changeset/_changeset.html.erb index 33d8cf129..2ba88b756 100644 --- a/app/views/changeset/_changeset.html.erb +++ b/app/views/changeset/_changeset.html.erb @@ -1,7 +1,7 @@ - - <% cl = cycle('table0', 'table1') %> +<% cl = cycle('table0', 'table1') %> + - + <%= id_link = link_to(changeset.id, {:controller => 'browse', :action => 'changeset', :id => changeset.id}, @@ -10,14 +10,14 @@ %> - + <% if changeset.closed_at > DateTime.now %> <%= t'changeset.changeset.still_editing' %> <% else %><%= l changeset.closed_at, :format => :long %><% end %> <%if showusername %> - + <% if changeset.user.data_public? %> <%= link_to h(changeset.user.display_name), :controller => "changeset", :action => "list", :display_name => changeset.user.display_name %> <% else %> @@ -26,7 +26,7 @@ <% end %> - + <% if changeset.tags['comment'].to_s != '' %> <%= linkify(h(changeset.tags['comment'])) %> <% else %> @@ -34,7 +34,7 @@ <% end %> - + <% if changeset.min_lat.nil? %> <%= t'changeset.changeset.no_edits' %> <% else %> diff --git a/app/views/changeset/_changeset_map_add.html.erb b/app/views/changeset/_changeset_map_add.html.erb new file mode 100644 index 000000000..924408153 --- /dev/null +++ b/app/views/changeset/_changeset_map_add.html.erb @@ -0,0 +1,8 @@ + var minlon = <%= changeset_map_add.min_lon / GeoRecord::SCALE.to_f %>; + var minlat = <%= changeset_map_add.min_lat / GeoRecord::SCALE.to_f %>; + var maxlon = <%= changeset_map_add.max_lon / GeoRecord::SCALE.to_f %>; + var maxlat = <%= changeset_map_add.max_lat / GeoRecord::SCALE.to_f %>; + var bbox = new OpenLayers.Bounds(minlon, minlat, maxlon, maxlat); + + bounds.extend(bbox); + box = addBoxToMap(bbox, {name: "changeset-<%= changeset_map_add.id %>"}, true); diff --git a/app/views/changeset/_map.html.erb b/app/views/changeset/_map.html.erb new file mode 100644 index 000000000..ddfac9f54 --- /dev/null +++ b/app/views/changeset/_map.html.erb @@ -0,0 +1,74 @@ +<%= javascript_include_tag '/openlayers/OpenLayers.js' %> +<%= javascript_include_tag '/openlayers/OpenStreetMap.js' %> +<%= javascript_include_tag 'map.js' %> +
+
+
+ <%= t 'browse.map.loading' %> +
+ diff --git a/app/views/changeset/list.html.erb b/app/views/changeset/list.html.erb index 0333be5cc..4ec450c2c 100644 --- a/app/views/changeset/list.html.erb +++ b/app/views/changeset/list.html.erb @@ -1,6 +1,7 @@

<%= @heading %>

<%= @description %>

+<%= render :partial => 'map' %> <%= render :partial => 'changeset_paging_nav' %> <%= render :partial => 'changesets', :locals => { :showusername => !params.has_key?(:display_name) } %> <%= render :partial => 'changeset_paging_nav' %> diff --git a/public/javascripts/map.js b/public/javascripts/map.js index 090d4abc2..df9d30992 100644 --- a/public/javascripts/map.js +++ b/public/javascripts/map.js @@ -149,7 +149,7 @@ function addObjectToMap(url, zoom, callback) { layer.loadGML(); } -function addBoxToMap(boxbounds) { +function addBoxToMap(boxbounds, attributes, line) { if (!vectors) { // Be aware that IE requires Vector layers be initialised on page load, and not under deferred script conditions vectors = new OpenLayers.Layer.Vector("Boxes", { @@ -157,8 +157,16 @@ function addBoxToMap(boxbounds) { }); map.addLayer(vectors); } - var geometry = boxbounds.toGeometry().transform(epsg4326, map.getProjectionObject()); - var box = new OpenLayers.Feature.Vector(geometry, {}, { + + var geometry; + if (line) { + vertices = boxbounds.toGeometry().getVertices(); + vertices.push( new OpenLayers.Geometry.Point( vertices[0].x, vertices[0].y ) ); + geometry = new OpenLayers.Geometry.LineString(vertices).transform(epsg4326, map.getProjectionObject()); + } else { + geometry = boxbounds.toGeometry().transform(epsg4326, map.getProjectionObject()); + } + var box = new OpenLayers.Feature.Vector(geometry, attributes, { strokeWidth: 2, strokeColor: '#ee9900', fillOpacity: 0 diff --git a/public/stylesheets/common.css b/public/stylesheets/common.css index 6bc9666b2..098a9ddd9 100644 --- a/public/stylesheets/common.css +++ b/public/stylesheets/common.css @@ -633,6 +633,19 @@ hr { border: solid 1px black; } +#browse_map_changeset { + float: right; + width: 100%; + text-align: right; + margin-left: 10px; +} + +#browse_map_changeset #small_map { + width: 100%; + height: 315px; + border: solid 1px black; +} + /* Rules for the trace list shown by the traces tab etc */ #trace_list { From 1635c165608b9619f0b04eba508351afc3602292 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sun, 1 May 2011 22:52:58 +0100 Subject: [PATCH 04/13] Tidy up code for adding a map to the changeset list page --- app/views/changeset/_changeset.html.erb | 12 ++- .../changeset/_changeset_map_add.html.erb | 8 -- app/views/changeset/_map.html.erb | 88 ++++++++++--------- public/javascripts/map.js | 12 +-- public/stylesheets/common.css | 4 + 5 files changed, 68 insertions(+), 56 deletions(-) delete mode 100644 app/views/changeset/_changeset_map_add.html.erb diff --git a/app/views/changeset/_changeset.html.erb b/app/views/changeset/_changeset.html.erb index 2ba88b756..b06dd05a3 100644 --- a/app/views/changeset/_changeset.html.erb +++ b/app/views/changeset/_changeset.html.erb @@ -1,6 +1,6 @@ <% cl = cycle('table0', 'table1') %> - + <%= id_link = link_to(changeset.id, @@ -52,3 +52,13 @@ <% end %> + + diff --git a/app/views/changeset/_changeset_map_add.html.erb b/app/views/changeset/_changeset_map_add.html.erb deleted file mode 100644 index 924408153..000000000 --- a/app/views/changeset/_changeset_map_add.html.erb +++ /dev/null @@ -1,8 +0,0 @@ - var minlon = <%= changeset_map_add.min_lon / GeoRecord::SCALE.to_f %>; - var minlat = <%= changeset_map_add.min_lat / GeoRecord::SCALE.to_f %>; - var maxlon = <%= changeset_map_add.max_lon / GeoRecord::SCALE.to_f %>; - var maxlat = <%= changeset_map_add.max_lat / GeoRecord::SCALE.to_f %>; - var bbox = new OpenLayers.Bounds(minlon, minlat, maxlon, maxlat); - - bounds.extend(bbox); - box = addBoxToMap(bbox, {name: "changeset-<%= changeset_map_add.id %>"}, true); diff --git a/app/views/changeset/_map.html.erb b/app/views/changeset/_map.html.erb index ddfac9f54..605eacf15 100644 --- a/app/views/changeset/_map.html.erb +++ b/app/views/changeset/_map.html.erb @@ -1,74 +1,80 @@ <%= javascript_include_tag '/openlayers/OpenLayers.js' %> <%= javascript_include_tag '/openlayers/OpenStreetMap.js' %> <%= javascript_include_tag 'map.js' %> +
<%= t 'browse.map.loading' %>
+ diff --git a/public/javascripts/map.js b/public/javascripts/map.js index df9d30992..66ed9e909 100644 --- a/public/javascripts/map.js +++ b/public/javascripts/map.js @@ -149,7 +149,7 @@ function addObjectToMap(url, zoom, callback) { layer.loadGML(); } -function addBoxToMap(boxbounds, attributes, line) { +function addBoxToMap(boxbounds, id, outline) { if (!vectors) { // Be aware that IE requires Vector layers be initialised on page load, and not under deferred script conditions vectors = new OpenLayers.Layer.Vector("Boxes", { @@ -157,20 +157,20 @@ function addBoxToMap(boxbounds, attributes, line) { }); map.addLayer(vectors); } - var geometry; - if (line) { + if (outline) { vertices = boxbounds.toGeometry().getVertices(); - vertices.push( new OpenLayers.Geometry.Point( vertices[0].x, vertices[0].y ) ); + vertices.push(new OpenLayers.Geometry.Point(vertices[0].x, vertices[0].y)); geometry = new OpenLayers.Geometry.LineString(vertices).transform(epsg4326, map.getProjectionObject()); } else { geometry = boxbounds.toGeometry().transform(epsg4326, map.getProjectionObject()); - } - var box = new OpenLayers.Feature.Vector(geometry, attributes, { + } + var box = new OpenLayers.Feature.Vector(geometry, {}, { strokeWidth: 2, strokeColor: '#ee9900', fillOpacity: 0 }); + box.fid = id; vectors.addFeatures(box); diff --git a/public/stylesheets/common.css b/public/stylesheets/common.css index 098a9ddd9..38cfec423 100644 --- a/public/stylesheets/common.css +++ b/public/stylesheets/common.css @@ -611,6 +611,10 @@ hr { white-space: nowrap; } +#changeset_list .selected { + background-color: #ffff55; +} + /* Rules for the data browser */ #browse_navigation { From e098d52424c3a0c8025cb62193a03bb42477c85c Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Mon, 2 May 2011 00:53:37 +0100 Subject: [PATCH 05/13] Rearrange changeset list page to put the map beside the list --- app/views/changeset/_changeset.html.erb | 44 +++++++------------- app/views/changeset/_changesets.html.erb | 11 +---- app/views/changeset/_map.html.erb | 9 +--- app/views/changeset/list.html.erb | 8 +++- public/stylesheets/common.css | 38 ++++++++++------- test/functional/changeset_controller_test.rb | 2 +- 6 files changed, 47 insertions(+), 65 deletions(-) diff --git a/app/views/changeset/_changeset.html.erb b/app/views/changeset/_changeset.html.erb index b06dd05a3..e388d65ae 100644 --- a/app/views/changeset/_changeset.html.erb +++ b/app/views/changeset/_changeset.html.erb @@ -11,20 +11,22 @@ - <% if changeset.closed_at > DateTime.now %> <%= t'changeset.changeset.still_editing' %> - <% else %><%= l changeset.closed_at, :format => :long %><% end %> - - + + <% if changeset.closed_at > DateTime.now %> <%= t'changeset.changeset.still_editing' %> + <% else %><%= l changeset.closed_at, :format => :long %><% end %> + - <%if showusername %> - - <% if changeset.user.data_public? %> - <%= link_to h(changeset.user.display_name), :controller => "changeset", :action => "list", :display_name => changeset.user.display_name %> - <% else %> - <%= t'changeset.changeset.anonymous' %> + <%if showusername %> +
+ + <% if changeset.user.data_public? %> + <%= link_to h(changeset.user.display_name), :controller => "changeset", :action => "list", :display_name => changeset.user.display_name %> + <% else %> + <%= t'changeset.changeset.anonymous' %> + <% end %> + <% end %> - - <% end %> + <% if changeset.tags['comment'].to_s != '' %> @@ -33,24 +35,6 @@ <%= t'changeset.changeset.no_comment' %> <% end %> - - - <% if changeset.min_lat.nil? %> - <%= t'changeset.changeset.no_edits' %> - <% else %> - <% - minlon = changeset.min_lon/GeoRecord::SCALE.to_f - minlat = changeset.min_lat/GeoRecord::SCALE.to_f - maxlon = changeset.max_lon/GeoRecord::SCALE.to_f - maxlat = changeset.max_lat/GeoRecord::SCALE.to_f - %> - '><%= format("%0.3f",minlon) -%>,<%= format("%0.3f",minlat) -%>,<%= format("%0.3f",maxlon) -%>,<%= format("%0.3f",maxlat) -%> - - <% if changeset.area > 1500000000000 %> - <%= t'changeset.changeset.big_area' %> - <% end %> - <% end %> -