diff options
| author | Marc Florisson | 2012-06-06 17:37:27 +0200 |
|---|---|---|
| committer | Marc Florisson | 2012-06-06 17:37:27 +0200 |
| commit | 0d86b44384c89c593773f9236eed76b623c1a557 (patch) | |
| tree | 176c2c7067d2a673a28cec8f280317d782ceccd1 | |
| parent | c7566e88daff064787070205c8ffac95a6a8380d (diff) | |
| download | chouette-core-0d86b44384c89c593773f9236eed76b623c1a557.tar.bz2 | |
fix vehicle_journeys views
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 + |
