aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Gemfile.lock26
-rw-r--r--app/controllers/companies_controller.rb2
-rw-r--r--app/controllers/lines_controller.rb12
-rw-r--r--app/controllers/networks_controller.rb7
-rw-r--r--app/controllers/stop_areas_controller.rb48
-rw-r--r--app/maps/network_map.rb31
-rw-r--r--app/maps/stop_area_map.rb51
-rw-r--r--app/views/networks/show.html.erb2
-rw-r--r--app/views/stop_areas/#index.kml.erb#11
l---------app/views/stop_areas/.#index.kml.erb1
-rw-r--r--app/views/stop_areas/index.kml.erb2
-rw-r--r--app/views/stop_areas/show.html.erb2
-rw-r--r--app/views/stop_areas/show.kml.erb9
-rw-r--r--config/routes.rb6
14 files changed, 125 insertions, 85 deletions
diff --git a/Gemfile.lock b/Gemfile.lock
index 10456c7d0..2e643bdb6 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,14 +1,4 @@
GIT
- remote: git://chouette.dryade.priv/ninoxe
- revision: 181c6fa75c4a82fb8c4bff4eec05ef1013b7ae61
- specs:
- chouette-ninoxe (0.0.8)
- GeoRuby
- activerecord
- composite_primary_keys
- geokit
-
-GIT
remote: git://github.com/dryade/activerecord-jdbc-adapter.git
revision: 5b45a0a417e146e92db8c57b5c600cdeb9e957bf
specs:
@@ -53,6 +43,15 @@ GIT
user_interface (0.0.1)
rails (~> 3.1.0)
+PATH
+ remote: ~/projects/ninoxe
+ specs:
+ chouette-ninoxe (0.0.8)
+ GeoRuby
+ activerecord
+ composite_primary_keys
+ geokit
+
GEM
remote: http://rubygems.org/
specs:
@@ -166,9 +165,9 @@ GEM
hoe (2.14.0)
rake (~> 0.8)
i18n (0.6.0)
- inherited_resources (1.3.0)
+ inherited_resources (1.3.1)
has_scope (~> 0.5.0)
- responders (~> 0.6.0)
+ responders (~> 0.6)
jquery-rails (1.0.19)
railties (~> 3.0)
thor (~> 0.14)
@@ -244,7 +243,8 @@ GEM
remarkable (~> 4.0.0.alpha4)
remarkable_activemodel (~> 4.0.0.alpha4)
rspec (>= 2.0.0.alpha11)
- responders (0.6.4)
+ responders (0.9.0)
+ railties (~> 3.1)
rspec (2.8.0)
rspec-core (~> 2.8.0)
rspec-expectations (~> 2.8.0)
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>
diff --git a/config/routes.rb b/config/routes.rb
index ec89711f8..e353937cd 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -13,11 +13,11 @@ ChouetteIhm::Application.routes.draw do
# Sample resource route (maps HTTP verbs to controller actions automatically):
# resources :products
resources :referentials do
- resources :lines do
+ resources :lines, :networks do
resources :stop_areas
end
- resources :networks, :companies, :stop_areas
-
+
+ resources :companies, :stop_areas
end
# Sample resource route with options: