From: John Firebaugh Date: Tue, 19 Nov 2013 20:10:00 +0000 (-0800) Subject: Refine changeset browse behavior X-Git-Tag: live~4621^2~35 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/d0de36b6072b7e8ee0083e680ebf6a21d5b81ab8 Refine changeset browse behavior The general history view shows changesets in the current view and updates when you move the map. The view for an individual user, nearby users, or friends zooms the map to the extent of the results, and doesn't change when you move the map. --- diff --git a/app/assets/javascripts/index.js b/app/assets/javascripts/index.js index 365d33e3a..ba1f08407 100644 --- a/app/assets/javascripts/index.js +++ b/app/assets/javascripts/index.js @@ -242,19 +242,18 @@ $(document).ready(function () { return page; }; - var history = OSM.History(map), - note = OSM.Note(map); + var history = OSM.History(map); OSM.route = OSM.Router(map, { "/": OSM.Index(map), "/search": OSM.Search(map), "/export": OSM.Export(map), - "/history": history, "/new_note": OSM.NewNote(map), + "/history": history, "/user/:display_name/edits": history, "/browse/friends": history, "/browse/nearby": history, - "/browse/note/:id": note, + "/browse/note/:id": OSM.Note(map), "/browse/:type/:id(/history)": OSM.Browse(map) }); diff --git a/app/assets/javascripts/index/history.js b/app/assets/javascripts/index/history.js index 75b02ec07..cd012ee16 100644 --- a/app/assets/javascripts/index/history.js +++ b/app/assets/javascripts/index/history.js @@ -43,10 +43,16 @@ OSM.History = function(map) { } function loadData() { + var data = {}; + + if (window.location.pathname === '/history') { + data = {bbox: map.getBounds().wrap().toBBoxString()}; + } + $.ajax({ url: window.location.pathname, method: "GET", - data: {bbox: map.getBounds().wrap().toBBoxString()}, + data: data, success: function(html, status, xhr) { $('#sidebar_content .changesets').html(html); updateMap(); @@ -95,6 +101,11 @@ OSM.History = function(map) { rect.id = changeset.id; rect.addTo(group); } + + if (window.location.pathname !== '/history') { + var bounds = group.getBounds(); + if (bounds.isValid()) map.fitBounds(bounds); + } } page.pushstate = page.popstate = function(path) { @@ -103,19 +114,22 @@ OSM.History = function(map) { }; page.load = function() { - map - .on("moveend", loadData) - .addLayer(group); + map.addLayer(group); + + if (window.location.pathname === '/history') { + map.on("moveend", loadData) + } loadData(); }; page.unload = function() { - map - .off("moveend", loadData) - .removeLayer(group); + map.removeLayer(group); + + if (window.location.pathname === '/history') { + map.off("moveend", loadData) + } - group.clearLayers(); $("#history_tab").removeClass("current"); }; diff --git a/app/controllers/changeset_controller.rb b/app/controllers/changeset_controller.rb index 6a0ad40a7..63f9f0f7d 100644 --- a/app/controllers/changeset_controller.rb +++ b/app/controllers/changeset_controller.rb @@ -279,20 +279,14 @@ class ChangesetController < ApplicationController else changesets = changesets.where("false") end - end - - if params[:friends] && @user + elsif params[:bbox] + changesets = conditions_bbox(changesets, BoundingBox.from_bbox_params(params)) + elsif params[:friends] && @user changesets = changesets.where(:user_id => @user.friend_users.public) - end - - if params[:nearby] && @user + elsif params[:nearby] && @user changesets = changesets.where(:user_id => @user.nearby) end - if params[:bbox] - changesets = conditions_bbox(changesets, BoundingBox.from_bbox_params(params)) - end - if params[:max_id] changesets = changesets.where("changesets.id <= ?", params[:max_id]) end diff --git a/app/views/changeset/list.html.erb b/app/views/changeset/list.html.erb index b0ccf67dc..68bdf1e23 100644 --- a/app/views/changeset/list.html.erb +++ b/app/views/changeset/list.html.erb @@ -6,8 +6,10 @@ <%= link_to t('changeset.list.load_more'), url_for(params.merge(:max_id => @edits.last.id - 1)), :class => "button load_more" %> <%= image_tag "searching.gif", :class => "loader", :style => "display: none;" %> -<% elsif params[:max_id] %> -
<%= t('changeset.list.no_more') %>
+<% elsif params[:bbox] %> +
<%= t(params[:max_id] ? 'changeset.list.no_more_area' : 'changeset.list.empty_area') %>
+<% elsif params[:display_name] %> +
<%= t(params[:max_id] ? 'changeset.list.no_more_user' : 'changeset.list.empty_user') %>
<% else %> -
<%= t('changeset.list.empty') %>
+
<%= t(params[:max_id] ? 'changeset.list.no_more' : 'changeset.list.empty') %>
<% end %> diff --git a/config/locales/en.yml b/config/locales/en.yml index b8a9fe31f..2bfe0c652 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -214,8 +214,12 @@ en: title_user: "Changesets by %{user}" title_friend: "Changesets by your friends" title_nearby: "Changesets by nearby users" - empty: "No changesets in this area." - no_more: "No more changesets in this area." + empty: "No changesets found." + empty_area: "No changesets in this area." + empty_user: "No changesets by this user." + no_more: "No more changesets found." + no_more_area: "No more changesets in this area." + no_more_user: "No more changesets by this user." load_more: "Load more" timeout: sorry: "Sorry, the list of changesets you requested took too long to retrieve."