aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Florisson2012-06-06 17:37:27 +0200
committerMarc Florisson2012-06-06 17:37:27 +0200
commit0d86b44384c89c593773f9236eed76b623c1a557 (patch)
tree176c2c7067d2a673a28cec8f280317d782ceccd1
parentc7566e88daff064787070205c8ffac95a6a8380d (diff)
downloadchouette-core-0d86b44384c89c593773f9236eed76b623c1a557.tar.bz2
fix vehicle_journeys views
-rw-r--r--app/assets/stylesheets/vehicle_journeys.css.scss26
-rw-r--r--app/controllers/vehicle_journeys_controller.rb25
-rw-r--r--app/views/vehicle_journeys/_form.html.erb28
-rw-r--r--app/views/vehicle_journeys/_time_table.html.erb9
-rw-r--r--app/views/vehicle_journeys/_vehicle_journey_at_stop_fields.html.erb22
-rw-r--r--app/views/vehicle_journeys/edit.js.erb9
-rw-r--r--app/views/vehicle_journeys/select_journey_pattern.js.erb6
-rw-r--r--spec/views/vehicle_journeys/_form.html.erb_spec.rb5
-rw-r--r--spec/views/vehicle_journeys/_vehicle_journey_at_stop_fields.html.erb_spec.rb62
-rw-r--r--spec/views/vehicle_journeys/edit.html.erb_spec.rb22
-rw-r--r--spec/views/vehicle_journeys/new.html.erb_spec.rb22
11 files changed, 191 insertions, 45 deletions
diff --git a/app/assets/stylesheets/vehicle_journeys.css.scss b/app/assets/stylesheets/vehicle_journeys.css.scss
new file mode 100644
index 000000000..8199a7541
--- /dev/null
+++ b/app/assets/stylesheets/vehicle_journeys.css.scss
@@ -0,0 +1,26 @@
+// Place all the styles related to the routes controller here.
+// They will automatically be included in application.css.
+// You can use Sass (SCSS) here: http://sass-lang.com/
+@import "common";
+
+#workspace.vehicle_journeys.edit, #workspace.vehicle_journeys.new
+{
+ #route_color{ width: 100px;
+ color: white;
+ font-weight: bold;}
+ .journey_pattern_dependent_list {
+ li.no_stop {
+ display: none;
+ }
+ }
+}
+
+#workspace.vehicle_journeys.show
+{
+ .summary p label {
+ font-weight: bold;
+ }
+}
+
+
+
diff --git a/app/controllers/vehicle_journeys_controller.rb b/app/controllers/vehicle_journeys_controller.rb
index 8bbec97f6..215677382 100644
--- a/app/controllers/vehicle_journeys_controller.rb
+++ b/app/controllers/vehicle_journeys_controller.rb
@@ -1,6 +1,8 @@
class VehicleJourneysController < ChouetteController
defaults :resource_class => Chouette::VehicleJourney
+ respond_to :js, :only => [:select_journey_pattern, :edit]
+
belongs_to :referential do
belongs_to :line, :parent_class => Chouette::Line do
belongs_to :route, :parent_class => Chouette::Route
@@ -9,30 +11,13 @@ class VehicleJourneysController < ChouetteController
def select_journey_pattern
if params[:journey_pattern_id]
- @vehicle_journey = vehicle_journey
- @vehicle_journey_at_stops = pseudo_vehicle_journey_at_stops
- puts "@vehicle_journey=#{@vehicle_journey.inspect}"
- end
- end
+ selected_journey_pattern = Chouette::JourneyPattern.find( params[:journey_pattern_id])
- def pseudo_vehicle_journey_at_stops
- vjas_by_sp_id = {}.tap do |hash|
- @vehicle_journey.vehicle_journey_at_stops.each do |vjas|
- hash.merge!( vjas.stop_point_id => vjas)
- end
- end
- [].tap do |vjas_array|
- @selected_journey_pattern.stop_points.each do |sp|
- if vjas_by_sp_id.include?( sp.id)
- vjas_array << vjas_by_sp_id[ sp.id]
- else
- vjas_array << @vehicle_journey.vehicle_journey_at_stops.build( :stop_point_id => sp.id)
- end
- end
+ @vehicle_journey = vehicle_journey
+ @vehicle_journey.update_journey_pattern(selected_journey_pattern)
end
end
-
protected
alias_method :vehicle_journey, :resource
diff --git a/app/views/vehicle_journeys/_form.html.erb b/app/views/vehicle_journeys/_form.html.erb
index 9994849fe..71714a28c 100644
--- a/app/views/vehicle_journeys/_form.html.erb
+++ b/app/views/vehicle_journeys/_form.html.erb
@@ -18,7 +18,18 @@
<% end %>
<%= form.inputs :class => "stop_times" do %>
- <%= render :partial => "vehicle_journeys/vehicle_journey_at_stop_fields" %>
+ <div class="journey_pattern_dependent_list">
+ <!--
+ <= form.semantic_fields_for :vehicle_journey_at_stops do |vjas| >
+ <= vjas.object.stop_point.stop_area.name >
+ <= vjas.input :_destroy, :as => :hidden >
+ <= vjas.input :departure_time, :as => :time >
+
+ < end >
+ -->
+ <%= render :partial => "vehicle_journeys/vehicle_journey_at_stop_fields",
+ :collection => @vehicle_journey.vehicle_journey_at_stops, :as => :vehicle_journey_at_stop %>
+ </div>
<% end %>
<% end %>
@@ -30,16 +41,7 @@
<% end %>
<% end %>
-<script>
- $("#vehicle_journey_journey_pattern_id").change(
- $.ajax({
- type: 'get',
- data: "journey_pattern_id="+$("#vehicle_journey_journey_pattern_input select option:selected").attr("value"),
- dataType: 'script',
- complete: function(request){
- $('.stop_times').effect('highlight');
- },
- url: "<%= select_journey_pattern_referential_line_route_vehicle_journey_path( @referential, @line, @route, @vehicle_journey)%>"})
- );
-</script>
+<% unless @vehicle_journey.new_record? %>
+ <%= javascript_include_tag edit_referential_line_route_vehicle_journey_path(@referential, @line, @route, @vehicle_journey, :format => :js) %>
+<% end %>
diff --git a/app/views/vehicle_journeys/_time_table.html.erb b/app/views/vehicle_journeys/_time_table.html.erb
new file mode 100644
index 000000000..e5d36ed63
--- /dev/null
+++ b/app/views/vehicle_journeys/_time_table.html.erb
@@ -0,0 +1,9 @@
+<%= div_for(time_table, :class => "time_table") do %>
+ <%= link_to time_table.comment, [@referential, time_table] %>
+ <div class="info">
+ <div class="actions">
+ <%= link_to t("actions.edit"), edit_referential_time_table_path(@referential, time_table), :class => "edit" %>
+ </div>
+ </div>
+<% end %>
+
diff --git a/app/views/vehicle_journeys/_vehicle_journey_at_stop_fields.html.erb b/app/views/vehicle_journeys/_vehicle_journey_at_stop_fields.html.erb
index 9ef3b509b..7d9c06228 100644
--- a/app/views/vehicle_journeys/_vehicle_journey_at_stop_fields.html.erb
+++ b/app/views/vehicle_journeys/_vehicle_journey_at_stop_fields.html.erb
@@ -1,11 +1,13 @@
- <% @vehicle_journey.vehicle_journey_at_stops.each_with_index do |vjas, index| %>
- <li class="time input optional">
- <input name=<%= "vehicle_journey[vehicle_journey_at_stops_attributes][#{index}][departure_time(3i)]" %> type="hidden" value="1">
- <input name=<%= "vehicle_journey[vehicle_journey_at_stops_attributes][#{index}][departure_time(2i)]" %> type="hidden" value="1">
- <input name=<%= "vehicle_journey[vehicle_journey_at_stops_attributes][#{index}][departure_time(1i)]" %> type="hidden" value="2000">
- <label for=<%= "date_vehicle_journey_vehicle_journey_at_stops_attributes_#{index}_departure_time_5i" %>><%= vjas.stop_point.stop_area.name %></label>
- <%= select_hour(vjas.departure_time.hour, :field_name => "vehicle_journey[vehicle_journey_at_stops_attributes][#{index}][departure_time(4i)]") %>
- <%= select_minute(vjas.departure_time.min, :field_name => "vehicle_journey[vehicle_journey_at_stops_attributes][#{index}][departure_time(5i)]") %>
- </li>
- <% end %>
+<% vjas = vehicle_journey_at_stop %>
+<li class="time input optional <%= vjas._destroy ? "no_stop" : "" %>">
+ <input name=<%= "vehicle_journey[vehicle_journey_at_stops_attributes][#{vehicle_journey_at_stop_counter}][id]" %> type="hidden" value="<%= vjas.id %>">
+ <input name=<%= "vehicle_journey[vehicle_journey_at_stops_attributes][#{vehicle_journey_at_stop_counter}][_destroy]" %> type="hidden" value="<%= vjas._destroy ? "1" : "0" %>">
+ <input name=<%= "vehicle_journey[vehicle_journey_at_stops_attributes][#{vehicle_journey_at_stop_counter}][stop_point_id]" %> type="hidden" value="<%= vjas.stop_point_id %>">
+ <input name=<%= "vehicle_journey[vehicle_journey_at_stops_attributes][#{vehicle_journey_at_stop_counter}][departure_time(3i)]" %> type="hidden" value="1">
+ <input name=<%= "vehicle_journey[vehicle_journey_at_stops_attributes][#{vehicle_journey_at_stop_counter}][departure_time(2i)]" %> type="hidden" value="1">
+ <input name=<%= "vehicle_journey[vehicle_journey_at_stops_attributes][#{vehicle_journey_at_stop_counter}][departure_time(1i)]" %> type="hidden" value="2000">
+ <label for=<%= "vehicle_journey_vehicle_journey_at_stops_attributes_#{vehicle_journey_at_stop_counter}_departure_time_5i" %>><%= vjas.stop_point.stop_area.name %></label>
+ <%= select_hour(vjas.departure_time ? vjas.departure_time.hour : 0, :prefix => "vehicle_journey", :field_name => "vehicle_journey_at_stops_attributes[#{vehicle_journey_at_stop_counter}][departure_time(4i)]") %>
+ <%= select_minute(vjas.departure_time ? vjas.departure_time.min : 0, :prefix => "vehicle_journey", :field_name => "vehicle_journey_at_stops_attributes[#{vehicle_journey_at_stop_counter}][departure_time(5i)]") %>
+ </li>
diff --git a/app/views/vehicle_journeys/edit.js.erb b/app/views/vehicle_journeys/edit.js.erb
new file mode 100644
index 000000000..b16d9d343
--- /dev/null
+++ b/app/views/vehicle_journeys/edit.js.erb
@@ -0,0 +1,9 @@
+$(document).ready(function() {
+ $("#vehicle_journey_journey_pattern_id").change(
+ function(){
+ var url = "<%= select_journey_pattern_referential_line_route_vehicle_journey_path( @referential, @line, @route, @vehicle_journey)%>?journey_pattern_id="+
+ $("#vehicle_journey_journey_pattern_input select option:selected").attr("value");
+ $.get(url);
+ }
+ )
+});
diff --git a/app/views/vehicle_journeys/select_journey_pattern.js.erb b/app/views/vehicle_journeys/select_journey_pattern.js.erb
index 181f1e108..3487da1ae 100644
--- a/app/views/vehicle_journeys/select_journey_pattern.js.erb
+++ b/app/views/vehicle_journeys/select_journey_pattern.js.erb
@@ -1,4 +1,6 @@
-$('#stop_times').html('<%= escape_javascript render(:partial =>
-'vehicle_journeys/vehicle_journey_at_stop_fields')%>')
+$('.journey_pattern_dependent_list').html('<%= escape_javascript(
+ render(:partial => 'vehicle_journeys/vehicle_journey_at_stop_fields',
+ :collection => @vehicle_journey.vehicle_journey_at_stops,
+ :as => :vehicle_journey_at_stop)).html_safe %>');
diff --git a/spec/views/vehicle_journeys/_form.html.erb_spec.rb b/spec/views/vehicle_journeys/_form.html.erb_spec.rb
index 121566448..385de64c9 100644
--- a/spec/views/vehicle_journeys/_form.html.erb_spec.rb
+++ b/spec/views/vehicle_journeys/_form.html.erb_spec.rb
@@ -31,6 +31,11 @@ describe "/vehicle_journeys/_form" do
end
end
end
+ it "renders _vehicle_journey_at_stop_fields partial for each vehicle_journey_at_stop" do
+ render
+ view.should render_template(:partial => "_vehicle_journey_at_stop_fields", :count => vehicle_journey.vehicle_journey_at_stops.count)
+ end
+
it "should render vehicle_journey_at_stop's departure time" do
render
rendered.should have_selector("form") do |form_node|
diff --git a/spec/views/vehicle_journeys/_vehicle_journey_at_stop_fields.html.erb_spec.rb b/spec/views/vehicle_journeys/_vehicle_journey_at_stop_fields.html.erb_spec.rb
new file mode 100644
index 000000000..77f98ffbb
--- /dev/null
+++ b/spec/views/vehicle_journeys/_vehicle_journey_at_stop_fields.html.erb_spec.rb
@@ -0,0 +1,62 @@
+require 'spec_helper'
+
+describe "/vehicle_journeys/_vehicle_journey_at_stop_fields" do
+
+ let!(:referential) { assign :referential, create(:referential) }
+ let!(:line) { assign :line, create(:line) }
+ let!(:route) { assign :route, create(:route, :line => line) }
+ let!(:vehicle_journey) { assign :vehicle_journey, create(:vehicle_journey, :route => route) }
+ let!(:vehicle_journey_at_stop) { assign :vehicle_journey_at_stop, vehicle_journey.vehicle_journey_at_stops.first }
+ let!(:vehicle_journey_at_stop_counter) { assign :vehicle_journey_at_stop_counter, 0 }
+
+ def render_collection
+ render( :partial => "vehicle_journeys/vehicle_journey_at_stop_fields", :collection => vehicle_journey.vehicle_journey_at_stops, :as => :vehicle_journey_at_stop)
+ end
+ def field_name
+ "vehicle_journey[vehicle_journey_at_stops_attributes][0]"
+ end
+ it "should render vehicle_journey_at_stop's departure time" do
+ render_collection
+ rendered.should have_selector("li select", :name => "#{field_name}[departure_time(5i)]")
+ end
+
+ it "should render vehicle_journey_at_stop's stop_point_id" do
+ render_collection
+ rendered.should have_selector("li input", :name => "#{field_name}[stop_point_id]",
+ :value => vehicle_journey_at_stop.stop_point_id)
+ end
+ it "should render vehicle_journey_at_stop's id" do
+ render_collection
+ rendered.should have_selector("li input", :name => "#{field_name}[id]",
+ :value => vehicle_journey_at_stop.id)
+ end
+ it "should render vehicle_journey_at_stop's _destroy" do
+ render_collection
+ rendered.should have_selector("li input", :name => "#{field_name}[_destroy]",
+ :value => (vehicle_journey_at_stop._destroy ? "1" : "0"))
+ end
+ it "should render vehicle_journey_at_stop's stop name" do
+ render_collection
+ rendered.should have_selector("li label", :text => vehicle_journey_at_stop.stop_point.stop_area.name )
+ end
+ context "for a destroyed vehicle_journey_at_stop" do
+ before(:each) do
+ vehicle_journey_at_stop.stub!(:_destroy => true)
+ end
+ it "should render li.no_stop" do
+ pending
+ render_collection
+ rendered.should have_selector("li.no_stop")
+ end
+ end
+ context "for a destroyed vehicle_journey_at_stop" do
+ before(:each) do
+ vehicle_journey_at_stop.stub!(:_destroy => true)
+ end
+ it "should not render li.no_stop" do
+ render_collection
+ puts rendered.inspect
+ rendered.should_not have_selector("li.no_stop")
+ end
+ end
+end
diff --git a/spec/views/vehicle_journeys/edit.html.erb_spec.rb b/spec/views/vehicle_journeys/edit.html.erb_spec.rb
new file mode 100644
index 000000000..7d69f3ec1
--- /dev/null
+++ b/spec/views/vehicle_journeys/edit.html.erb_spec.rb
@@ -0,0 +1,22 @@
+require 'spec_helper'
+
+describe "/vehicle_journeys/edit" do
+
+ let!(:referential) { assign :referential, create(:referential) }
+ let!(:line) { assign :line, create(:line) }
+ let!(:route) { assign :route, create(:route, :line => line) }
+ let!(:vehicle_journey) { assign :vehicle_journey, create(:vehicle_journey, :route => route) }
+
+ it "renders _form" do
+ render
+ view.should render_template(:partial => "_form")
+ end
+ context "summary part" do
+ it "should render route name" do
+ render
+ rendered.should have_selector( ".summary a", :text => route.name)
+ end
+ end
+
+end
+
diff --git a/spec/views/vehicle_journeys/new.html.erb_spec.rb b/spec/views/vehicle_journeys/new.html.erb_spec.rb
new file mode 100644
index 000000000..152c48e46
--- /dev/null
+++ b/spec/views/vehicle_journeys/new.html.erb_spec.rb
@@ -0,0 +1,22 @@
+require 'spec_helper'
+
+describe "/vehicle_journeys/new" do
+
+ let!(:referential) { assign :referential, create(:referential) }
+ let!(:line) { assign :line, create(:line) }
+ let!(:route) { assign :route, create(:route, :line => line) }
+ let!(:vehicle_journey) { assign :vehicle_journey, build(:vehicle_journey, :route => route) }
+
+ it "renders _form" do
+ render
+ view.should render_template(:partial => "_form")
+ end
+ context "summary part" do
+ it "should render route name" do
+ render
+ rendered.should have_selector( ".summary a", :text => route.name)
+ end
+ end
+
+end
+