diff options
Diffstat (limited to 'app')
| -rw-r--r-- | app/controllers/companies_controller.rb | 2 | ||||
| -rw-r--r-- | app/controllers/lines_controller.rb | 12 | ||||
| -rw-r--r-- | app/controllers/networks_controller.rb | 7 | ||||
| -rw-r--r-- | app/controllers/stop_areas_controller.rb | 48 | ||||
| -rw-r--r-- | app/maps/network_map.rb | 31 | ||||
| -rw-r--r-- | app/maps/stop_area_map.rb | 51 | ||||
| -rw-r--r-- | app/views/networks/show.html.erb | 2 | ||||
| -rw-r--r-- | app/views/stop_areas/#index.kml.erb# | 11 | ||||
| l--------- | app/views/stop_areas/.#index.kml.erb | 1 | ||||
| -rw-r--r-- | app/views/stop_areas/index.kml.erb | 2 | ||||
| -rw-r--r-- | app/views/stop_areas/show.html.erb | 2 | ||||
| -rw-r--r-- | app/views/stop_areas/show.kml.erb | 9 |
12 files changed, 109 insertions, 69 deletions
diff --git a/app/controllers/companies_controller.rb b/app/controllers/companies_controller.rb index 20967f733..d7b86da06 100644 --- a/app/controllers/companies_controller.rb +++ b/app/controllers/companies_controller.rb @@ -4,6 +4,8 @@ class CompaniesController < ChouetteController respond_to :xml respond_to :json + belongs_to :referential, :parent_class => Referential + # def update # update! do |success, failure| # failure.html { redirect_to referential_companies_path(@resource, @referential) } diff --git a/app/controllers/lines_controller.rb b/app/controllers/lines_controller.rb index 925fae86b..ac441f3ad 100644 --- a/app/controllers/lines_controller.rb +++ b/app/controllers/lines_controller.rb @@ -4,6 +4,8 @@ class LinesController < ChouetteController respond_to :xml respond_to :json + belongs_to :referential + def show @map = LineMap.new referential, resource show! @@ -11,17 +13,9 @@ class LinesController < ChouetteController protected - def collection + def collection @q = referential.lines.search(params[:q]) @lines ||= @q.result(:distinct => true).order(:number).paginate(:page => params[:page], :per_page => 10).includes([:network, :company]) end - def resource_url(line = nil) - referential_line_path(referential, line || resource) - end - - def collection_url - referential_lines_path(referential) - end - end diff --git a/app/controllers/networks_controller.rb b/app/controllers/networks_controller.rb index e5c3e3ca7..ce65d158f 100644 --- a/app/controllers/networks_controller.rb +++ b/app/controllers/networks_controller.rb @@ -4,6 +4,13 @@ class NetworksController < ChouetteController respond_to :xml respond_to :json + belongs_to :referential + + def show + @map = NetworkMap.new referential, resource + show! + end + protected def collection diff --git a/app/controllers/stop_areas_controller.rb b/app/controllers/stop_areas_controller.rb index 8bd2c29a4..60600e2b4 100644 --- a/app/controllers/stop_areas_controller.rb +++ b/app/controllers/stop_areas_controller.rb @@ -1,9 +1,10 @@ class StopAreasController < ChouetteController defaults :resource_class => Chouette::StopArea -# belongs_to :network, :parent_class => Potimart::Network do - belongs_to :line, :parent_class => Chouette::Line, :optional => true -# end + belongs_to :referential do + belongs_to :line, :parent_class => Chouette::Line, :optional => true, :polymorphic => true + belongs_to :network, :parent_class => Chouette::Network, :optional => true, :polymorphic => true + end respond_to :html, :kml @@ -12,14 +13,22 @@ class StopAreasController < ChouetteController # render :layout => false # end - # def show - # @map = StopAreaMap.new stop_area - # show! do |format| - # unless stop_area.position or params[:default] - # format.kml { render :nothing => true, :status => :not_found } - # end - # end - # end + def index + request.format.kml? ? @per_page = nil : @per_page = 10 + index! + end + + def show + @map = StopAreaMap.new referential, stop_area + show! do |format| + unless stop_area.geometry + format.kml { + render :nothing => true, :status => :not_found + } + + end + end + end # def edit # stop_area.position ||= stop_area.default_position @@ -33,17 +42,14 @@ class StopAreasController < ChouetteController alias_method :stop_area, :resource - # def network - # @network ||= Potimart::Network.find(params[:network_id]) - # end - - def line - @line ||= Chouette::Line.find(params[:line_id]) if params[:line_id] - end - def collection - @q = line ? line.stop_areas.search(params[:q]) : referential.stop_areas.search(params[:q]) - @stop_areas ||= @q.result(:distinct => true).order(:name).paginate(:page => params[:page], :per_page => 10) + @q = end_of_association_chain.search(params[:q]) + @stop_areas ||= + begin + stop_areas = @q.result(:distinct => true).order(:name) + stop_areas = stop_areas.paginate(:page => params[:page], :per_page => @per_page) if @per_page.present? + stop_areas + end end end diff --git a/app/maps/network_map.rb b/app/maps/network_map.rb new file mode 100644 index 000000000..4135322ac --- /dev/null +++ b/app/maps/network_map.rb @@ -0,0 +1,31 @@ +class NetworkMap < ApplicationMap + + attr_reader :referential, :network, :network_style + + def initialize(referential, network, network_style = nil) + @referential = referential + @network = network + @network_style = network_style + end + + def map + @map ||= MapLayers::Map.new(id, :projection => projection("EPSG:900913"), :controls => controls) do |map, page| + page << map.add_layer(MapLayers::OSM_MAPNIK) + page << map.add_layer(google_physical) + page << map.add_layer(google_streets) + page << map.add_layer(google_hybrid) + page << map.add_layer(google_satellite) + + #page << map.add_layer(kml_layer(network, :styleMap => StyleMap::NetworkStyleMap.new( :style => network_style).style_map)) + page << map.add_layer(kml_layer(polymorphic_path([referential, network, :stop_areas], :format => :kml), :styleMap => StyleMap::StopAreasStyleMap.new(true).style_map)) + page << map.zoom_to_extent(bounds) if bounds + end + end + + def bounds + wgs84_bounds = Chouette::StopArea.bounds + @bounds ||= OpenLayers::Bounds.new(wgs84_bounds.lower_corner.x, wgs84_bounds.lower_corner.y, wgs84_bounds.upper_corner.x, wgs84_bounds.upper_corner.y).transform(OpenLayers::Projection.new("EPSG:4326"), OpenLayers::Projection.new("EPSG:900913")) + + end + +end diff --git a/app/maps/stop_area_map.rb b/app/maps/stop_area_map.rb index 009a370ee..ecf94fc42 100644 --- a/app/maps/stop_area_map.rb +++ b/app/maps/stop_area_map.rb @@ -1,25 +1,22 @@ class StopAreaMap < ApplicationMap - attr_reader :stop_area + attr_reader :referential, :stop_area attr_accessor :editable alias_method :editable?, :editable - def initialize(stop_area) + def initialize(referential, stop_area) + @referential = referential @stop_area = stop_area end - def controls - [ OpenLayers::Control::Navigation.new ] - end - def map @map ||= MapLayers::Map.new(id, :projection => projection("EPSG:900913"), :controls => controls) do |map, page| page << map.add_layer(MapLayers::OSM_MAPNIK) stop_area.lines.each do |line| - page << map.add_layer(kml_layer(line, :styleMap => StyleMap::LineStyleMap.new({:line_color => line.color}).style_map)) - page << map.add_layer(kml_layer(polymorphic_path([line.network, line, :stop_areas], :format => :kml), :styleMap => StyleMap::StopAreasStyleMap.new(true).style_map)) + #page << map.add_layer(kml_layer(line, :styleMap => StyleMap::LineStyleMap.new({:line_color => line.color}).style_map)) + page << map.add_layer(kml_layer(polymorphic_path([referential, line, :stop_areas], :format => :kml), :styleMap => StyleMap::StopAreasStyleMap.new(true).style_map)) end styles = {"default" => {:strokeColor => "red"}, @@ -27,27 +24,33 @@ class StopAreaMap < ApplicationMap :strokeWidth => 4} } - page.assign "edit_stop_area_layer", kml_layer( polymorphic_path( [stop_area.network, stop_area], :format => :kml, :default => editable?), :style_map => StyleMap::EditStopAreaStyleMap.new(false, false, {}, styles).style_map) + page.assign "edit_stop_area_layer", kml_layer( polymorphic_path( [referential, stop_area], :format => :kml, :default => editable?), :style_map => StyleMap::StopAreasStyleMap.new(false, false, {}, styles).style_map) page << map.add_layer(:edit_stop_area_layer) - if editable? - # TODO virer ce code inline - page << <<EOF - edit_stop_area_layer.events.on({ - 'afterfeaturemodified': function(event) { - geometry = event.feature.geometry.clone().transform(new OpenLayers.Projection("EPSG:900913"), new OpenLayers.Projection("EPSG:4326")); - $('#potimart_stop_area_position').val(geometry.y + ',' + geometry.x); - } - }); -EOF - page << map.add_control(OpenLayers::Control::ModifyFeature.new(:edit_stop_area_layer, :mode => 8, :autoActivate => true)) - - end - - page << map.set_center(center.to_google.to_openlayers, 16, false, true) +# if editable? +# # TODO virer ce code inline +# page << <<EOF +# edit_stop_area_layer.events.on({ +# 'afterfeaturemodified': function(event) { +# geometry = event.feature.geometry.clone().transform(new OpenLayers.Projection("EPSG:900913"), new OpenLayers.Projection("EPSG:4326")); +# $('#potimart_stop_area_position').val(geometry.y + ',' + geometry.x); +# } +# }); +# EOF +# page << map.add_control(OpenLayers::Control::ModifyFeature.new(:edit_stop_area_layer, :mode => 8, :autoActivate => true)) + +# end + + page << map.zoom_to_extent(bounds) if bounds + #page << map.set_center(center.to_google.to_openlayers, 16, false, true) end end + def bounds + wgs84_bounds = Chouette::StopArea.bounds + @bounds ||= OpenLayers::Bounds.new(wgs84_bounds.lower_corner.x, wgs84_bounds.lower_corner.y, wgs84_bounds.upper_corner.x, wgs84_bounds.upper_corner.y).transform(OpenLayers::Projection.new("EPSG:4326"), OpenLayers::Projection.new("EPSG:900913")) + end + def center stop_area.position or stop_area.default_position end diff --git a/app/views/networks/show.html.erb b/app/views/networks/show.html.erb index bd96938c5..e33ecbcf9 100644 --- a/app/views/networks/show.html.erb +++ b/app/views/networks/show.html.erb @@ -1,7 +1,7 @@ <%= title_tag t('networks.show.title', :network => @network.name )%> <div class="network_show"> - + <%= @map.to_html.html_safe %> <div class="summary"> <p> <label><%= Chouette::Network.human_attribute_name("name") %>: </label> diff --git a/app/views/stop_areas/#index.kml.erb# b/app/views/stop_areas/#index.kml.erb# deleted file mode 100644 index 3a427a151..000000000 --- a/app/views/stop_areas/#index.kml.erb# +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<kml xmlns="http://www.opengis.net/kml/2.2"> - <Document> - <% @stop_areas.each do |stop_area| %> - <Placemark id="<%= stop_area.id %>" > - <name><%= stop_area.name %></name> - <%= stop_area.geometry .kml_representation.html_safe %> - </Placemark> - <% end %> - </Document> -</kml> diff --git a/app/views/stop_areas/.#index.kml.erb b/app/views/stop_areas/.#index.kml.erb deleted file mode 120000 index 4b4350837..000000000 --- a/app/views/stop_areas/.#index.kml.erb +++ /dev/null @@ -1 +0,0 @@ -luc@alpha.4257:1332143900
\ No newline at end of file diff --git a/app/views/stop_areas/index.kml.erb b/app/views/stop_areas/index.kml.erb index f813cb1c0..086b8fb42 100644 --- a/app/views/stop_areas/index.kml.erb +++ b/app/views/stop_areas/index.kml.erb @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://www.opengis.net/kml/2.2"> <Document> - <% @stop_areas.each do |stop_area| %> + <% @stop_areas.where("latitude is not null and longitude is not null").each do |stop_area| %> <Placemark id="<%= stop_area.id %>" > <name><%= stop_area.name %></name> <%= stop_area.geometry.kml_representation.html_safe %> diff --git a/app/views/stop_areas/show.html.erb b/app/views/stop_areas/show.html.erb index 8868011d3..4048db566 100644 --- a/app/views/stop_areas/show.html.erb +++ b/app/views/stop_areas/show.html.erb @@ -1,7 +1,7 @@ <%= title_tag t('stop_areas.show.title', :stop_area => @stop_area.name ) %> <div class="stop_area_show"> - + <%= @map.to_html.html_safe %> <div class="summary"> <p> <label><%= @stop_area.human_attribute_name("name") %>: </label> diff --git a/app/views/stop_areas/show.kml.erb b/app/views/stop_areas/show.kml.erb new file mode 100644 index 000000000..661144f4a --- /dev/null +++ b/app/views/stop_areas/show.kml.erb @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<kml xmlns="http://www.opengis.net/kml/2.2"> + <Document> + <Placemark id="<%= @stop_area.id %>" > + <name><%= @stop_area.name %></name> + <%= @stop_area.geometry.kml_representation.html_safe %> + </Placemark> + </Document> +</kml> |
