From db30a423a8f923bbcae709e1c8f6e337f637bc9a Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sun, 20 Apr 2008 12:20:23 +0000 Subject: [PATCH 1/1] Commit crschmdt's data browser patch. --- app/controllers/browse_controller.rb | 34 ++++++++++++++++++++++++++++ app/views/browse/_common.rhtml | 9 ++++++++ app/views/browse/_map.rhtml | 32 ++++++++++++++++++++++++++ app/views/browse/_tag.rhtml | 4 ++++ app/views/browse/_tag_table.rhtml | 9 ++++++++ app/views/browse/node_view.rhtml | 3 +++ app/views/browse/way_view.rhtml | 3 +++ config/routes.rb | 4 ++++ public/javascripts/map.js | 5 ++-- 9 files changed, 101 insertions(+), 2 deletions(-) create mode 100644 app/controllers/browse_controller.rb create mode 100644 app/views/browse/_common.rhtml create mode 100644 app/views/browse/_map.rhtml create mode 100644 app/views/browse/_tag.rhtml create mode 100644 app/views/browse/_tag_table.rhtml create mode 100644 app/views/browse/node_view.rhtml create mode 100644 app/views/browse/way_view.rhtml diff --git a/app/controllers/browse_controller.rb b/app/controllers/browse_controller.rb new file mode 100644 index 000000000..dcc4cd3f3 --- /dev/null +++ b/app/controllers/browse_controller.rb @@ -0,0 +1,34 @@ +class BrowseController < ApplicationController + before_filter :authorize_web + layout 'site' + def way_view + begin + way = Way.find(params[:id]) + + @way = way + @name = @way.tags['name'].to_s + if @name.length == 0: + @name = "#" + @way.id.to_s + end + @title = 'Way | ' + (@name) + + rescue ActiveRecord::RecordNotFound + render :nothing => true, :status => :not_found + end + end + def node_view + begin + node = Node.find(params[:id]) + + @node = node + @name = @node.tags_as_hash['name'].to_s + if @name.length == 0: + @name = "#" + @node.id.to_s + end + @title = 'Node | ' + (@name) + + rescue ActiveRecord::RecordNotFound + render :nothing => true, :status => :not_found + end + end +end diff --git a/app/views/browse/_common.rhtml b/app/views/browse/_common.rhtml new file mode 100644 index 000000000..70b96590b --- /dev/null +++ b/app/views/browse/_common.rhtml @@ -0,0 +1,9 @@ +<%= render :partial => 'map', :locals => { :type => type, :id => obj.id } %> + +Last edited: <%= h(obj.timestamp) %><% if obj.user.data_public %>, + by <%= link_to h(obj.user.display_name), :controller => 'user', :action => 'view' , :display_name => obj.user.display_name %> +<% end %> + diff --git a/app/views/browse/_map.rhtml b/app/views/browse/_map.rhtml new file mode 100644 index 000000000..3128108d9 --- /dev/null +++ b/app/views/browse/_map.rhtml @@ -0,0 +1,32 @@ +<%= javascript_include_tag '/openlayers/OpenLayers.js' %> +<%= javascript_include_tag '/openlayers/OpenStreetMap.js' %> +<%= javascript_include_tag 'map.js' %> +
+
+
+ +Loading... + +
diff --git a/app/views/browse/_tag.rhtml b/app/views/browse/_tag.rhtml new file mode 100644 index 000000000..009d39e79 --- /dev/null +++ b/app/views/browse/_tag.rhtml @@ -0,0 +1,4 @@ + + <%= h(tag[0]) %><%= h(tag[1]) %> + + diff --git a/app/views/browse/_tag_table.rhtml b/app/views/browse/_tag_table.rhtml new file mode 100644 index 000000000..9b87234cd --- /dev/null +++ b/app/views/browse/_tag_table.rhtml @@ -0,0 +1,9 @@ +<% if tags.length != 0 %> + + + + + + <%= render :partial => 'tag', :collection => tags %> +
KeyValue
+<% end %> diff --git a/app/views/browse/node_view.rhtml b/app/views/browse/node_view.rhtml new file mode 100644 index 000000000..2a8fd56d9 --- /dev/null +++ b/app/views/browse/node_view.rhtml @@ -0,0 +1,3 @@ +

Node Browser: <%= h(@name) %>

+<%= render :partial => 'common', :locals => { :obj => @node, :type => "node" } %> +<%= render :partial => 'tag_table', :locals => { :tags => @node.tags_as_hash } %> diff --git a/app/views/browse/way_view.rhtml b/app/views/browse/way_view.rhtml new file mode 100644 index 000000000..b1c26f478 --- /dev/null +++ b/app/views/browse/way_view.rhtml @@ -0,0 +1,3 @@ +

Way Browser: <%= h(@name) %>

+<%= render :partial => 'common', :locals => { :obj => @way, :type => "way" } %> +<%= render :partial => 'tag_table', :locals => { :tags => @way.tags } %> diff --git a/config/routes.rb b/config/routes.rb index 0a0396251..77a8dd8c2 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -54,6 +54,10 @@ ActionController::Routing::Routes.draw do |map| map.connect "api/#{API_VERSION}/amf", :controller =>'amf', :action =>'talk' map.connect "api/#{API_VERSION}/swf/trackpoints", :controller =>'swf', :action =>'trackpoints' + # Data browsing + map.connect '/way/:id', :controller => 'browse', :action => 'way_view', :id => /\d+/ + map.connect '/node/:id', :controller => 'browse', :action => 'node_view', :id => /\d+/ + # web site map.connect '/', :controller => 'site', :action => 'index' diff --git a/public/javascripts/map.js b/public/javascripts/map.js index b3d964b5b..0dadbb9d3 100644 --- a/public/javascripts/map.js +++ b/public/javascripts/map.js @@ -7,9 +7,10 @@ OpenLayers._getScriptLocation = function () { return "/openlayers/"; } -function createMap(divName) { +function createMap(divName, options) { + if (!options) { options = {} } map = new OpenLayers.Map(divName, { - controls: [ + controls: options.controls || [ new OpenLayers.Control.ArgParser(), new OpenLayers.Control.Attribution(), new OpenLayers.Control.LayerSwitcher(), -- 2.43.2