aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Gemfile.lock2
-rw-r--r--app/controllers/connection_links_controller.rb5
-rw-r--r--app/controllers/stop_areas_controller.rb1
-rw-r--r--app/maps/connection_link_map.rb32
-rw-r--r--app/views/connection_links/show.html.erb3
-rw-r--r--app/views/help/index.textile1
-rw-r--r--app/views/stop_areas/show.html.erb8
-rw-r--r--config/routes.rb7
-rw-r--r--spec/requests/connection_links_spec.rb8
-rw-r--r--spec/views/connection_links/show.html.erb_spec.rb11
-rw-r--r--spec/views/stop_areas/edit.html.erb_spec.rb24
-rw-r--r--spec/views/stop_areas/index.html.erb_spec.rb25
-rw-r--r--spec/views/stop_areas/new.html.erb_spec.rb17
-rw-r--r--spec/views/stop_areas/show.html.erb_spec.rb30
14 files changed, 160 insertions, 14 deletions
diff --git a/Gemfile.lock b/Gemfile.lock
index 5a369b338..1c6d630f8 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,6 +1,6 @@
GIT
remote: git://chouette.dryade.priv/ninoxe
- revision: 2ac65f975c031bc6c1d69b6e9f2965c0484f2279
+ revision: 89f04226273fefe0eeac7f11d136c287590faf83
specs:
ninoxe (0.0.8)
GeoRuby
diff --git a/app/controllers/connection_links_controller.rb b/app/controllers/connection_links_controller.rb
index 8790426f7..3da6b1417 100644
--- a/app/controllers/connection_links_controller.rb
+++ b/app/controllers/connection_links_controller.rb
@@ -8,6 +8,11 @@ class ConnectionLinksController < ChouetteController
respond_to :html, :xml, :json
+ def show
+ @map = ConnectionLinkMap.new referential, resource
+ show!
+ end
+
def select_areas
@connection_link = connection_link
@departure = connection_link.departure
diff --git a/app/controllers/stop_areas_controller.rb b/app/controllers/stop_areas_controller.rb
index 98111a804..d881baae7 100644
--- a/app/controllers/stop_areas_controller.rb
+++ b/app/controllers/stop_areas_controller.rb
@@ -4,6 +4,7 @@ class StopAreasController < ChouetteController
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
+ belongs_to :connection_link, :parent_class => Chouette::Network, :optional => true, :polymorphic => true
end
respond_to :html, :kml, :xml, :json
diff --git a/app/maps/connection_link_map.rb b/app/maps/connection_link_map.rb
new file mode 100644
index 000000000..fe79ce9a4
--- /dev/null
+++ b/app/maps/connection_link_map.rb
@@ -0,0 +1,32 @@
+
+class ConnectionLinkMap < ApplicationMap
+
+ attr_reader :referential, :connection_link, :connection_link_style
+
+ def initialize(referential, connection_link, connection_link_style = nil)
+ @referential = referential
+ @connection_link = connection_link
+ @connection_link_style = connection_link_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(connection_link, :styleMap => StyleMap::ConnectionLinkStyleMap.new( :style => connection_link_style).style_map))
+ page << map.add_layer(kml_layer(polymorphic_path([referential, connection_link, :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/views/connection_links/show.html.erb b/app/views/connection_links/show.html.erb
index c81159191..0adb3e1b0 100644
--- a/app/views/connection_links/show.html.erb
+++ b/app/views/connection_links/show.html.erb
@@ -1,7 +1,8 @@
<%= title_tag t('connection_links.show.title', :connection_link => @connection_link.name ) %>
<div class="connection_link_show">
-
+ <%= @map.to_html.html_safe %>
+
<div class="summary">
<p>
<label><%= @connection_link.human_attribute_name(:departure) %>: </label>
diff --git a/app/views/help/index.textile b/app/views/help/index.textile
index 4d30f2e46..c793ff0f6 100644
--- a/app/views/help/index.textile
+++ b/app/views/help/index.textile
@@ -29,5 +29,4 @@ les action suivantes ne sont pas encore disponible :
* associer des arr&ecirc;ts &agrave; une s&eacute;quences d'arr&ecirc;ts
* ajouter des fils &agrave; un arr&ecirc;t
* associer une ITL &agrave; une ligne
-* affichage de la carte des arr&ecirc;ts d'une correspondance
diff --git a/app/views/stop_areas/show.html.erb b/app/views/stop_areas/show.html.erb
index 6536ac5cb..6912db830 100644
--- a/app/views/stop_areas/show.html.erb
+++ b/app/views/stop_areas/show.html.erb
@@ -125,8 +125,12 @@
<ul class="actions">
<li><%= link_to t('stop_areas.actions.edit'), edit_referential_stop_area_path(@referential, @stop_area), :class => "edit" %></li>
<li><%= link_to t('stop_areas.actions.destroy'), referential_stop_area_path(@referential, @stop_area), :method => :delete, :confirm => t('stop_areas.actions.destroy_confirm'), :class => "remove" %></li>
- <li><%= link_to t('stop_areas.actions.select_parent'), select_parent_referential_stop_area_path(@referential, @stop_area), :class => "select_parent" %></li>
- <li><%= link_to t('stop_areas.actions.add_children'), add_children_referential_stop_area_path(@referential, @stop_area), :class => "add_children" %></li>
+ <% if @stop_area.type != 'itl' %>
+ <li><%= link_to t('stop_areas.actions.select_parent'), select_parent_referential_stop_area_path(@referential, @stop_area), :class => "select_parent" %></li>
+ <% end %>
+ <% if @stop_area.type != 'boarding_position' && @stop_area.type != 'quay' %>
+ <li><%= link_to t('stop_areas.actions.add_children'), add_children_referential_stop_area_path(@referential, @stop_area), :class => "add_children" %></li>
+ <% end %>
<br>
</ul>
<% end %>
diff --git a/config/routes.rb b/config/routes.rb
index eb7af8b9c..e5ad83ca6 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -48,6 +48,13 @@ ChouetteIhm::Application.routes.draw do
get 'select_arrival'
get 'select_areas'
end
+ resources :stop_areas do
+ resources :stop_area_parents
+ member do
+ get 'add_children'
+ get 'select_parent'
+ end
+ end
end
end
diff --git a/spec/requests/connection_links_spec.rb b/spec/requests/connection_links_spec.rb
index e137a330b..0c8b06c0f 100644
--- a/spec/requests/connection_links_spec.rb
+++ b/spec/requests/connection_links_spec.rb
@@ -26,10 +26,10 @@ describe "ConnectionLinks" do
it "display map" do
pending ": map not yet implemented"
-# subject.stub(:stop_areas).and_return(Array.new(2) { Factory(:stop_area) })
-# visit referential_connection_links_path(referential)
-# click_link "#{connection_links.first.name}"
-# page.should have_selector("#map", :class => 'connection_link')
+ subject.stub(:stop_areas).and_return(Array.new(2) { Factory(:stop_area) })
+ visit referential_connection_links_path(referential)
+ click_link "#{connection_links.first.name}"
+ page.should have_selector("#map", :class => 'connection_link')
end
end
diff --git a/spec/views/connection_links/show.html.erb_spec.rb b/spec/views/connection_links/show.html.erb_spec.rb
index bc8d075cf..8a03f5339 100644
--- a/spec/views/connection_links/show.html.erb_spec.rb
+++ b/spec/views/connection_links/show.html.erb_spec.rb
@@ -4,17 +4,18 @@ describe "/connection_links/show" do
let!(:referential) { assign(:referential, create(:referential)) }
let!(:connection_link) { assign(:connection_link, create(:connection_link)) }
+ let!(:map) { assign(:map, mock(:to_html => '<div id="map"/>')) }
it "should render h2 with the connection_link name" do
render
rendered.should have_selector("h2", :text => Regexp.new(connection_link.name))
end
- it "should display a map with class 'connection_link'" do
- pending ": map not yet implemented"
- # render
- # rendered.should have_selector("#map", :class => 'connection_link')
- end
+# it "should display a map with class 'connection_link'" do
+# pending ": map not yet implemented"
+# render
+# rendered.should have_selector("#map", :class => 'connection_link')
+# end
it "should render a link to edit the connection_link" do
render
diff --git a/spec/views/stop_areas/edit.html.erb_spec.rb b/spec/views/stop_areas/edit.html.erb_spec.rb
new file mode 100644
index 000000000..c3b89918d
--- /dev/null
+++ b/spec/views/stop_areas/edit.html.erb_spec.rb
@@ -0,0 +1,24 @@
+require 'spec_helper'
+
+describe "/stop_areas/edit" do
+ let!(:referential) { assign(:referential, create(:referential)) }
+ let!(:stop_area) { assign(:stop_area, create(:stop_area)) }
+ let!(:map) { assign(:map, mock(:to_html => '<div id="map"/>')) }
+
+ describe "test" do
+ it "should render h2 with the group name" do
+ render
+ rendered.should have_selector("h2", :text => Regexp.new(stop_area.name))
+ end
+ end
+
+ describe "form" do
+ it "should render input for name" do
+ render
+ rendered.should have_selector("form") do
+ with_tag "input[type=text][name='stop_area[name]'][value=?]", stop_area.name
+ end
+ end
+
+ end
+end
diff --git a/spec/views/stop_areas/index.html.erb_spec.rb b/spec/views/stop_areas/index.html.erb_spec.rb
new file mode 100644
index 000000000..3adecdd0d
--- /dev/null
+++ b/spec/views/stop_areas/index.html.erb_spec.rb
@@ -0,0 +1,25 @@
+require 'spec_helper'
+
+describe "/stop_areas/index" do
+
+ let!(:referential) { assign :referential, create(:referential) }
+ let!(:stop_areas) { assign :stop_areas, Array.new(2) { create(:stop_area) }.paginate }
+ let!(:q) { assign :q, Ransack::Search.new(Chouette::StopArea) }
+
+ before :each do
+ view.stub(:link_with_search).and_return("#")
+ end
+
+ it "should render a show link for each group" do
+ render
+ stop_areas.each do |stop_area|
+ rendered.should have_selector(".stop_area a[href='#{view.referential_stop_area_path(referential, stop_area)}']", :text => stop_area.name)
+ end
+ end
+
+ it "should render a link to create a new group" do
+ render
+ view.content_for(:sidebar).should have_selector(".actions a[href='#{new_referential_stop_area_path(referential)}']")
+ end
+
+end
diff --git a/spec/views/stop_areas/new.html.erb_spec.rb b/spec/views/stop_areas/new.html.erb_spec.rb
new file mode 100644
index 000000000..be1b7593b
--- /dev/null
+++ b/spec/views/stop_areas/new.html.erb_spec.rb
@@ -0,0 +1,17 @@
+require 'spec_helper'
+
+describe "/stop_areas/new" do
+ let!(:referential) { assign(:referential, create(:referential)) }
+ let!(:stop_area) { assign(:stop_area, build(:stop_area)) }
+
+ describe "form" do
+
+ it "should render input for name" do
+ render
+ rendered.should have_selector("form") do
+ with_selector "input[type=text][name=?]", stop_area.name
+ end
+ end
+
+ end
+end
diff --git a/spec/views/stop_areas/show.html.erb_spec.rb b/spec/views/stop_areas/show.html.erb_spec.rb
new file mode 100644
index 000000000..443a37232
--- /dev/null
+++ b/spec/views/stop_areas/show.html.erb_spec.rb
@@ -0,0 +1,30 @@
+require 'spec_helper'
+
+describe "/stop_areas/show" do
+
+ let!(:referential) { assign :referential, create(:referential) }
+ let!(:stop_area) { assign :stop_area, create(:stop_area) }
+ let!(:map) { assign(:map, mock(:to_html => '<div id="map"/>')) }
+
+ it "should render h2 with the stop_area name" do
+ render
+ rendered.should have_selector("h2", :text => Regexp.new(stop_area.name))
+ end
+
+ # it "should display a map with class 'stop_area'" do
+ # render
+ # rendered.should have_selector("#map", :class => 'stop_area')
+ # end
+
+ it "should render a link to edit the stop_area" do
+ render
+ view.content_for(:sidebar).should have_selector(".actions a[href='#{view.edit_referential_stop_area_path(referential, stop_area)}']")
+ end
+
+ it "should render a link to remove the stop_area" do
+ render
+ view.content_for(:sidebar).should have_selector(".actions a[href='#{view.referential_stop_area_path(referential, stop_area)}'][class='remove']")
+ end
+
+end
+