From: Tom Hughes Date: Tue, 5 Jun 2012 11:59:13 +0000 (+0100) Subject: Use browser detection to decide how many features to show X-Git-Tag: live~5519 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/652e94485f21ffbae1fc83acdd4f229c5957b7c1 Use browser detection to decide how many features to show Modern browsers are quite happy showing far more than 100 features in the data browser, so increase the limit to 2000 by default, but keep it restricted to 500 for IE8 and 100 for older IEs. --- diff --git a/Gemfile b/Gemfile index 10f38eb38..5ddb27e47 100644 --- a/Gemfile +++ b/Gemfile @@ -25,6 +25,9 @@ gem 'http_accept_language', '>= 1.0.2' gem 'paperclip', '~> 2.0' gem 'deadlock_retry', '>= 1.2.0' +# Browser detection support +gem 'browser' + # Markdown formatting support gem 'redcarpet' diff --git a/Gemfile.lock b/Gemfile.lock index ed69bc8ad..8b7976650 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -31,6 +31,7 @@ GEM multi_json (~> 1.0) arel (3.0.2) bigdecimal (1.1.0) + browser (0.1.3) builder (3.0.0) cocaine (0.2.1) coffee-rails (3.2.2) @@ -157,6 +158,7 @@ PLATFORMS DEPENDENCIES SystemTimer (>= 1.1.3) bigdecimal + browser coffee-rails (~> 3.2.1) composite_primary_keys (= 5.0.4) deadlock_retry (>= 1.2.0) diff --git a/app/controllers/browse_controller.rb b/app/controllers/browse_controller.rb index 2a7e2c5f7..f423c6388 100644 --- a/app/controllers/browse_controller.rb +++ b/app/controllers/browse_controller.rb @@ -7,6 +7,11 @@ class BrowseController < ApplicationController around_filter :web_timeout, :except => [:start] def start + @max_features = case + when browser.ie? && browser.version.to_i < 8 then 100 + when browser.ie? && browser.version.to_i < 9 then 500 + else 2000 + end end def relation diff --git a/app/views/browse/start.js.erb b/app/views/browse/start.js.erb index 951365268..6831f6f6d 100644 --- a/app/views/browse/start.js.erb +++ b/app/views/browse/start.js.erb @@ -245,7 +245,7 @@ function loadGML(url, reload) { browseDataLayer = new OpenLayers.Layer.GML("Data", url, { format: OpenLayers.Format.OSM, formatOptions: formatOptions, - maxFeatures: 100, + maxFeatures: <%= @max_features %>, requestSuccess: customDataLoader, displayInLayerSwitcher: false, styleMap: new OpenLayers.StyleMap({