From e414d10aa10815b07e0ab334db4d96c4b3ac9b6b Mon Sep 17 00:00:00 2001 From: Christopher Schmidt Date: Sun, 20 Apr 2008 14:24:42 +0000 Subject: [PATCH 1/1] Add relation browsing: * Improve map to also work for relations * Add display of relations (view) * Add relation members display * add new view to browse_controller --- app/controllers/browse_controller.rb | 15 +++++++++++++++ app/views/browse/_map.rhtml | 20 ++++++++++++++------ app/views/browse/_member.rhtml | 7 +++++++ app/views/browse/_relation_members.rhtml | 11 +++++++++++ app/views/browse/_tag_table.rhtml | 1 + app/views/browse/relation_view.rhtml | 4 ++++ 6 files changed, 52 insertions(+), 6 deletions(-) create mode 100644 app/views/browse/_member.rhtml create mode 100644 app/views/browse/_relation_members.rhtml create mode 100644 app/views/browse/relation_view.rhtml diff --git a/app/controllers/browse_controller.rb b/app/controllers/browse_controller.rb index c35bb821a..1806558f2 100644 --- a/app/controllers/browse_controller.rb +++ b/app/controllers/browse_controller.rb @@ -2,6 +2,21 @@ class BrowseController < ApplicationController before_filter :authorize_web layout 'site' + def relation_view + begin + @relation = Relation.find(params[:id]) + + @name = @relation.tags['name'].to_s + if @name.length == 0: + @name = "#" + @relation.id.to_s + end + + @title = 'Relation | ' + (@name) + rescue ActiveRecord::RecordNotFound + render :nothing => true, :status => :not_found + end + end + def way_view begin @way = Way.find(params[:id]) diff --git a/app/views/browse/_map.rhtml b/app/views/browse/_map.rhtml index a90a3fffd..466c9b6cc 100644 --- a/app/views/browse/_map.rhtml +++ b/app/views/browse/_map.rhtml @@ -9,17 +9,25 @@ var obj_type = '<%= type %>'; var obj_id = <%= id %>; var url = "/api/<%= "#{API_VERSION}" %>/<%= type %>/<%= id %>"; - if (obj_type == "way") { + if (obj_type != "node") { url += "/full"; } var map = createMap('small_map', {controls: [new OpenLayers.Control.Navigation()]}); var osm_layer = new OpenLayers.Layer.GML("OSM", url, {format: OpenLayers.Format.OSM, projection: new OpenLayers.Projection("EPSG:4326")}); osm_layer.events.register("loadend", osm_layer, function() { - $("loading").innerHTML = ""; - this.map.zoomToExtent(this.features[0].geometry.getBounds()); - var center = getMapCenter(); - $("larger_map").href = '/?lat='+center.lat+'&lon='+center.lon+'&zoom='+this.map.getZoom(); - $("larger_map").innerHTML = "View Larger Map"; + $("loading").innerHTML = ""; + if (this.features.length) { + var extent = this.features[0].geometry.getBounds(); + for (var i = 1; i < this.features.length; i++) { + extent.extend(this.features[i].geometry.getBounds()); + } + this.map.zoomToExtent(extent); + var center = getMapCenter(); + $("larger_map").href = '/?lat='+center.lat+'&lon='+center.lon+'&zoom='+this.map.getZoom(); + $("larger_map").innerHTML = "View Larger Map"; + } else { + $("small_map").style.display = "none"; + } }) map.addLayer(osm_layer); osm_layer.loadGML(); diff --git a/app/views/browse/_member.rhtml b/app/views/browse/_member.rhtml new file mode 100644 index 000000000..f3b6cf0dd --- /dev/null +++ b/app/views/browse/_member.rhtml @@ -0,0 +1,7 @@ +<% if member.member.visible %> + + <%= h(member.member.id.to_s) %> + <%= h(member.member_type) %> + <%= h(member.member_role) %> + +<% end %> diff --git a/app/views/browse/_relation_members.rhtml b/app/views/browse/_relation_members.rhtml new file mode 100644 index 000000000..0e7772152 --- /dev/null +++ b/app/views/browse/_relation_members.rhtml @@ -0,0 +1,11 @@ +<% if relation.members.length != 0 %> +

Members

+ + + + + + + <%= render :partial => 'member', :collection => relation.relation_members %> +
IDTypeRole
+<% end %> diff --git a/app/views/browse/_tag_table.rhtml b/app/views/browse/_tag_table.rhtml index 9b87234cd..dca1c0ab1 100644 --- a/app/views/browse/_tag_table.rhtml +++ b/app/views/browse/_tag_table.rhtml @@ -1,4 +1,5 @@ <% if tags.length != 0 %> +

Tags

diff --git a/app/views/browse/relation_view.rhtml b/app/views/browse/relation_view.rhtml new file mode 100644 index 000000000..c75e485ae --- /dev/null +++ b/app/views/browse/relation_view.rhtml @@ -0,0 +1,4 @@ +

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

+<%= render :partial => 'common', :locals => { :obj => @relation, :type => "relation" } %> +<%= render :partial => 'tag_table', :locals => { :tags => @relation.tags } %> +<%= render :partial => 'relation_members', :locals => { :relation => @relation } %> -- 2.45.1
Key