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.
This commit is contained in:
John Firebaugh 2013-11-19 12:10:00 -08:00
parent a5e8b4cb88
commit d0de36b607
5 changed files with 41 additions and 28 deletions

View file

@ -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)
});

View file

@ -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");
};

View file

@ -279,18 +279,12 @@ class ChangesetController < ApplicationController
else
changesets = changesets.where("false")
end
end
if params[:friends] && @user
changesets = changesets.where(:user_id => @user.friend_users.public)
end
if params[:nearby] && @user
changesets = changesets.where(:user_id => @user.nearby)
end
if params[:bbox]
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)
elsif params[:nearby] && @user
changesets = changesets.where(:user_id => @user.nearby)
end
if params[:max_id]

View file

@ -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;" %>
</div>
<% elsif params[:max_id] %>
<div class="inner22"><%= t('changeset.list.no_more') %></div>
<% elsif params[:bbox] %>
<div class="inner22"><%= t(params[:max_id] ? 'changeset.list.no_more_area' : 'changeset.list.empty_area') %></div>
<% elsif params[:display_name] %>
<div class="inner22"><%= t(params[:max_id] ? 'changeset.list.no_more_user' : 'changeset.list.empty_user') %></div>
<% else %>
<div class="inner22"><%= t('changeset.list.empty') %></div>
<div class="inner22"><%= t(params[:max_id] ? 'changeset.list.no_more' : 'changeset.list.empty') %></div>
<% end %>

View file

@ -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."