diff options
Diffstat (limited to 'app')
| -rw-r--r-- | app/assets/stylesheets/vehicle_journeys.css.scss | 22 | ||||
| -rw-r--r-- | app/controllers/journey_patterns_controller.rb | 8 | ||||
| -rw-r--r-- | app/controllers/vehicle_journeys_controller.rb | 17 | ||||
| -rw-r--r-- | app/helpers/vehicle_journeys_helper.rb | 32 | ||||
| -rw-r--r-- | app/views/vehicle_journeys/_form.html.erb | 19 | ||||
| -rw-r--r-- | app/views/vehicle_journeys/_time_filter.html.erb | 11 | ||||
| -rw-r--r-- | app/views/vehicle_journeys/_vehicle_journey_at_stop_fields.html.erb | 6 | ||||
| -rw-r--r-- | app/views/vehicle_journeys/index.html.erb | 57 | ||||
| -rw-r--r-- | app/views/vehicle_journeys/new.js.erb | 11 | ||||
| -rw-r--r-- | app/views/vehicle_journeys/show.html.erb | 4 | 
10 files changed, 134 insertions, 53 deletions
| diff --git a/app/assets/stylesheets/vehicle_journeys.css.scss b/app/assets/stylesheets/vehicle_journeys.css.scss index 0bfabc38b..1a6917306 100644 --- a/app/assets/stylesheets/vehicle_journeys.css.scss +++ b/app/assets/stylesheets/vehicle_journeys.css.scss @@ -3,19 +3,16 @@  // You can use Sass (SCSS) here: http://sass-lang.com/  @import "common"; -#workspace.vehicle_journeys.edit, #workspace.vehicle_journeys.new +#workspace.vehicle_journeys.edit, #workspace.vehicle_journeys.update, #workspace.vehicle_journeys.create, #workspace.vehicle_journeys.new  {      #route_color{ width: 100px;                   color: white;                   font-weight: bold;}      .journey_pattern_dependent_list { -        tr.no_stop { -          display: none; -        } -    } -    .time_table_list { -        padding-left: 25%; +        tr.no_stop { display: none; }      } +    .time_table_list { padding-left: 25%; } +    .vehicle_journey_at_stops { margin-left: 25%; }  }  #workspace.vehicle_journeys.index @@ -49,11 +46,15 @@              text-align: center;                     } -        td.hours{ +        td.hours {              font-size: 12px;              color: #516a29;           } +        td.missing { +            background-color: orange;  +        } +          td.stop_area{               text-align: left;              font-size: 12px; @@ -63,7 +64,7 @@  } -#workspace.vehicle_journeys.show, #workspace.vehicle_journeys.edit { +#workspace.vehicle_journeys.show, #workspace.vehicle_journeys.edit, #workspace.vehicle_journeys.update, #workspace.vehicle_journeys.create, #workspace.vehicle_journeys.new {      .vehicle_journey_at_stops {          thead {              th { text-align: center; } @@ -75,6 +76,9 @@          }          tbody {              td.hour { text-align: center; } +            td.departure_time, td.arrival_time { padding-left: 15px; } +            td.missing { background-color: orange; } +            td.invalid_position { background-color: red; }              tr label { width: 100% }              tr.odd { }              tr.even { background-color: #DEFFA8; } diff --git a/app/controllers/journey_patterns_controller.rb b/app/controllers/journey_patterns_controller.rb index 1ec15f7e8..d8611d6f9 100644 --- a/app/controllers/journey_patterns_controller.rb +++ b/app/controllers/journey_patterns_controller.rb @@ -2,6 +2,7 @@ class JourneyPatternsController < ChouetteController    defaults :resource_class => Chouette::JourneyPattern    respond_to :html +  respond_to :js, :only => [:new_vehicle_journey]    belongs_to :referential do      belongs_to :line, :parent_class => Chouette::Line do @@ -16,4 +17,11 @@ class JourneyPatternsController < ChouetteController      @stop_points = resource.stop_points.paginate(:page => params[:page], :per_page => 10)      show!    end + +  def new_vehicle_journey +    puts resource.inspect +    @vehicle_journey = Chouette::VehicleJourney.new(:route_id => route.id) +    @vehicle_journey.update_journey_pattern(resource) +    render "vehicle_journeys/select_journey_pattern" +  end  end diff --git a/app/controllers/vehicle_journeys_controller.rb b/app/controllers/vehicle_journeys_controller.rb index 596a7f90c..9248f88de 100644 --- a/app/controllers/vehicle_journeys_controller.rb +++ b/app/controllers/vehicle_journeys_controller.rb @@ -1,7 +1,7 @@  class VehicleJourneysController < ChouetteController    defaults :resource_class => Chouette::VehicleJourney -  respond_to :js, :only => [:select_journey_pattern, :edit] +  respond_to :js, :only => [:select_journey_pattern, :edit, :new]    belongs_to :referential do      belongs_to :line, :parent_class => Chouette::Line do @@ -18,6 +18,21 @@ class VehicleJourneysController < ChouetteController      end    end +  def create +    create!(:alert => t('activerecord.errors.models.vehicle_journey.invalid_times')) +  end + +  def update +    update!(:alert => t('activerecord.errors.models.vehicle_journey.invalid_times')) +  end + +  def new +    @vehicle_journey = Chouette::VehicleJourney.new( :route => @route) +    @vehicle_journey.update_journey_pattern( parent.journey_patterns.first) if parent.journey_patterns.first + +    new! +  end +    protected    alias_method :vehicle_journey, :resource diff --git a/app/helpers/vehicle_journeys_helper.rb b/app/helpers/vehicle_journeys_helper.rb index 34b367424..e45978023 100644 --- a/app/helpers/vehicle_journeys_helper.rb +++ b/app/helpers/vehicle_journeys_helper.rb @@ -1,11 +1,39 @@  module VehicleJourneysHelper +  def journey_name( journey_pattern) +    if !journey_pattern.published_name.blank? +      journey_pattern.published_name.first(8) +    elsif !journey_pattern.name.blank? +      journey_pattern.name.first(8) +    else +      journey_pattern.id +    end +  end +  def vehicle_name( vehicle) +    if !vehicle.published_journey_name.blank? +      vehicle.published_journey_name.first(8) +    elsif !vehicle.published_journey_identifier.blank? +      vehicle.published_journey_identifier.first(8) +    elsif !vehicle.number.blank? +      vehicle.number +    else +      vehicle.id +    end +  end +  def missing_time_check( is_present) +    return "missing" if (is_present && is_present.departure_time.nil?) +  end +  def vehicle_departure(vehicle) +    first_vjas = vehicle.vehicle_journey_at_stops.first +    return "" unless first_vjas.departure_time +    l(first_vjas.departure_time, :format => :hour).gsub( /  /, ' ')  +  end    def vehicle_title( vehicle)      return t('vehicle_journeys.vehicle_journey.title_stopless') if vehicle.vehicle_journey_at_stops.empty?      first_vjas = vehicle.vehicle_journey_at_stops.first      t('vehicle_journeys.vehicle_journey.title',             :name => vehicle.published_journey_name,            :stop => first_vjas.stop_point.stop_area.name, -          :time => l(first_vjas.departure_time, :format => :hour)).gsub( /  /, ' ') +          :time => vehicle_departure(vehicle))    end    def edit_vehicle_title( vehicle)      return t('vehicle_journeys.edit.title_stopless') if vehicle.vehicle_journey_at_stops.empty? @@ -13,7 +41,7 @@ module VehicleJourneysHelper      t('vehicle_journeys.edit.title',             :name => vehicle.published_journey_name,            :stop => first_vjas.stop_point.stop_area.name, -          :time => l(first_vjas.departure_time, :format => :hour)).gsub( /  /, ' ') +          :time => vehicle_departure(vehicle))    end  end diff --git a/app/views/vehicle_journeys/_form.html.erb b/app/views/vehicle_journeys/_form.html.erb index f314e0453..6258d634a 100644 --- a/app/views/vehicle_journeys/_form.html.erb +++ b/app/views/vehicle_journeys/_form.html.erb @@ -4,18 +4,11 @@      <%= form.input :published_journey_name %>      <%= form.input :published_journey_identifier %>      <%= form.input :comment %>               -    <%= form.input :transport_mode, :as => :select, :collection => Chouette::Line.transport_modes, :include_blank => false, :member_label => Proc.new { |mode| t("transport_modes.label.#{mode}") }  %> +    <%= form.input :transport_mode, :as => :select, :collection => Chouette::Line.transport_modes, :include_blank => true, :member_label => Proc.new { |mode| t("transport_modes.label.#{mode}") }  %>      <%= form.input :status_value %>                    <%= form.input :facility %>                    <%= form.input :vehicle_type_identifier%>               -    <% if @vehicle_journey.new_record? %> -      <%= form.input :objectid %>   -    <% else %> -      <li> -      <label><%= @vehicle_journey.human_attribute_name("objectid") %>: </label> -      <%= @vehicle_journey.objectid %> -      </li> -    <% end %> +    <%= form.input :objectid, :input_html => { :disabled => !@vehicle_journey.new_record? } %>        <%= form.inputs :class => "stop_times", :name => @vehicle_journey.human_attribute_name(:vehicle_journey_at_stop_ids) do %>        <table border="0" class="vehicle_journey_at_stops"> @@ -40,11 +33,7 @@          </tbody>        </table>      <% end %> -    <%= form.inputs :class => "time_tables", :name=> @vehicle_journey.human_attribute_name(:time_table_ids) do %> -      <div class="time_table_list">          <%= form.input :time_table_tokens, :label => t('.time_tables'), :as => :text,  :input_html => { :"data-pre" => ( @vehicle_journey.time_tables.map { |time_table| { :id => time_table.id, :name => time_table.comment } } ).to_json }  %> -      </div> -    <% end %>    <% end %> @@ -54,7 +43,9 @@     <% end %>  <% end %> -<% unless @vehicle_journey.new_record? %> +<% if @vehicle_journey.new_record? %> +  <%= javascript_include_tag new_referential_line_route_vehicle_journey_path(@referential, @line, @route, :format => :js) %> +<% else %>    <%= 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_filter.html.erb b/app/views/vehicle_journeys/_time_filter.html.erb new file mode 100644 index 000000000..0f1e8d439 --- /dev/null +++ b/app/views/vehicle_journeys/_time_filter.html.erb @@ -0,0 +1,11 @@ +  <%= search_form_for @q, :url => referential_line_route_vehicle_journeys_path(@referential, @line, @route) do |f| %> +   <input name=<%= "q[vehicle_journey_at_stops_departure_time_gt(3i)]" %> type="hidden" value="1"> +   <input name=<%= "q[vehicle_journey_at_stops_departure_time_gt(2i)]" %> type="hidden" value="1"> +   <input name=<%= "q[vehicle_journey_at_stops_departure_time_gt(1i)]" %> type="hidden" value="2000"> +   <%= select_hour(@q.send( "vehicle_journey_at_stops_departure_time_gt") ? @q.send( "vehicle_journey_at_stops_departure_time_gt").hour : 0,  +                   :prefix => "q", :field_name => "vehicle_journey_at_stops_departure_time_gt(4i)") %> +   <%= select_minute(@q.send( "vehicle_journey_at_stops_departure_time_gt") ? @q.send( "vehicle_journey_at_stops_departure_time_gt").min : 0,  +                     :prefix => "q", :field_name => "vehicle_journey_at_stops_departure_time_gt(5i)") %> +   <%= f.submit t('.time_range_filter') %> +  <% 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 f6feab945..218027dae 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,6 +1,6 @@  <% vjas = vehicle_journey_at_stop %> -<tr class="time input optional <%= vjas._destroy ? "no_stop" : "" %> <%= (vehicle_journey_at_stop_counter%2==0) ? "odd" : "even" %>"> -  <td> +<tr class="time input optional <%= vjas._destroy ? "no_stop" : "" %> <%= (vehicle_journey_at_stop_counter%2==0) ? "odd" : "even" %>" > +  <td class="arrival_time <%= vjas.arrival_time.nil? ? "missing" : "" %> <%= vjas.errors[:arrival_time].blank? ? "" : "invalid_position" %>">     <%= select_hour(vjas.arrival_time ? vjas.arrival_time.hour : 0, :prefix => "vehicle_journey", :field_name => "vehicle_journey_at_stops_attributes[#{vehicle_journey_at_stop_counter}][arrival_time(4i)]") %>     <%= select_minute(vjas.arrival_time ? vjas.arrival_time.min : 0, :prefix => "vehicle_journey", :field_name => "vehicle_journey_at_stops_attributes[#{vehicle_journey_at_stop_counter}][arrival_time(5i)]") %>    </td> @@ -16,7 +16,7 @@     <input name=<%= "vehicle_journey[vehicle_journey_at_stops_attributes][#{vehicle_journey_at_stop_counter}][arrival_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>    </td> - <td> +  <td class="departure_time <%= vjas.departure_time.nil? ? "missing" : "" %> <%= vjas.errors[:departure_time].blank? ? "" : "invalid_position" %>">     <%= 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)]") %>   </td> diff --git a/app/views/vehicle_journeys/index.html.erb b/app/views/vehicle_journeys/index.html.erb index 8d000bac3..3d5bf31ac 100644 --- a/app/views/vehicle_journeys/index.html.erb +++ b/app/views/vehicle_journeys/index.html.erb @@ -23,14 +23,13 @@    <table>    <thead>      <tr> -      <th class="title">Missions : </th> -      <% @vehicle_journeys.each do |vj| %> -        <th> <%= link_to vj.journey_pattern.published_name.blank? ? vj.journey_pattern.id: vj.journey_pattern.published_name.first(8), -                  [@referential, @line, @route, vj.journey_pattern]%></th> -      <% end %> +      <th class="title"><%= Chouette::JourneyPattern.model_name.human.pluralize %> :</th> +      <% @vehicle_journeys.map(&:journey_pattern).each do |jp| %> +        <th><%= link_to journey_name( jp), [@referential, @line, @route, jp] %></th> +    <% end %>      </tr>      <tr> -      <th class="title">Calendriers : </th> +      <th class="title"><%= Chouette::TimeTable.model_name.human.pluralize %> :</th>        <% @vehicle_journeys.each do |vj| %>          <th title="<%= time_tables_info( vj) %>" class="calendars">             <%= time_tables_shortest_info( vj) %> @@ -38,9 +37,9 @@        <% end %>      </tr>      <tr> -      <th class="title">Courses : </th> +      <th class="title"><%= Chouette::VehicleJourney.model_name.human.pluralize %> :</th>        <% @vehicle_journeys.each do |vj| %> -      <th> <%= link_to "c", [@referential, @line, @route, vj]%></th> +      <th> <%= link_to vehicle_name(vj), [@referential, @line, @route, vj]%></th>        <% end %>      </tr>    </thead> @@ -49,7 +48,9 @@    <tr class="<%= cycle('odd', 'even') %>">      <td class="stop_area"><%= sp.stop_area.name %></td>      <% @vehicle_journeys.each do |vj| %> -      <td class="hours"><%= @matrix["#{vj.id}-#{sp.id}"] ? l( @matrix["#{vj.id}-#{sp.id}"].departure_time, :format => :hour) : "" %></td> +      <td class="hours <%= missing_time_check(@matrix["#{vj.id}-#{sp.id}"]) %>"> +        <%= (@matrix["#{vj.id}-#{sp.id}"] && @matrix["#{vj.id}-#{sp.id}"].departure_time) ? l( @matrix["#{vj.id}-#{sp.id}"].departure_time, :format => :hour) : "" %> +      </td>      <% end %>    </tr>    <% end %> @@ -57,20 +58,32 @@    </table>  </div>  <% content_for :sidebar do %> -<ul class="actions"> -  <li> -    <%= link_to  t('vehicle_journeys.actions.new'), new_referential_line_route_vehicle_journey_path(@referential, @line, @route), :class => "add" %> -  </li> -</ul> -<h3><%= t(".selection") %></h3> +  <ul class="actions"> +    <li> +      <%= link_to  t('vehicle_journeys.actions.new'), new_referential_line_route_vehicle_journey_path(@referential, @line, @route), :class => "add" %> +    </li> +  </ul> +  <h3><%= t(".selection") %></h3> -<h4><%= Chouette::JourneyPattern.model_name.human.pluralize %></h4> +  <h4><%= Chouette::JourneyPattern.model_name.human.pluralize %></h4> -<ul class="selection"> -<% @route.journey_patterns.each do |journey_pattern| %> -<li><%= link_with_search journey_pattern.name, "journey_pattern_id_eq" => journey_pattern.id %></li> -<% end %> -<li><%= link_with_search t(".selection_all"), {"journey_pattern_id_eq" => nil}, :class => "all" %></li> -</ul> +  <ul class="selection"> +  <% @route.journey_patterns.each do |journey_pattern| %> +  <li><%= link_with_search journey_name(journey_pattern), "journey_pattern_id_eq" => journey_pattern.id %></li> +  <% end %> +  <li><%= link_with_search t(".selection_all"), {"journey_pattern_id_eq" => nil}, :class => "all" %></li> +  </ul> +  <h4><%= Chouette::TimeTable.model_name.human.pluralize %></h4> + +  <ul class="selection"> +  <% @route.time_tables.each do |time_table| %> +  <li><%= link_with_search time_table.comment, "time_tables_comment_eq" => time_table.comment %></li> +  <% end %> +  <li><%= link_with_search t(".selection_all"), {"time_tables_comment_eq" => nil}, :class => "all" %></li> +  </ul> + +  <h4><%= t('.time_range') %></h4> +  <%= render :partial => "time_filter", :locals => { :time_field => "departure_time"} %>  <% end %> + diff --git a/app/views/vehicle_journeys/new.js.erb b/app/views/vehicle_journeys/new.js.erb new file mode 100644 index 000000000..473c6be57 --- /dev/null +++ b/app/views/vehicle_journeys/new.js.erb @@ -0,0 +1,11 @@ +$(document).ready(function() { +  $("#vehicle_journey_journey_pattern_id").change( +    function(){ +      var url = "<%= "/referentials/#{@referential.id}/lines/#{@line.id}/routes/#{@route.id}/journey_patterns/" %>"; +      url = url + $("#vehicle_journey_journey_pattern_input select option:selected").attr("value") + +        "/new_vehicle_journey"; +      $.get(url); +    } +  ) +}); + diff --git a/app/views/vehicle_journeys/show.html.erb b/app/views/vehicle_journeys/show.html.erb index 06f6f0c9f..8570261dd 100644 --- a/app/views/vehicle_journeys/show.html.erb +++ b/app/views/vehicle_journeys/show.html.erb @@ -65,9 +65,9 @@      <tbody>        <% @vehicle_journey.vehicle_journey_at_stops.each_with_index do |vjas, index| %>        <tr class="<%= index%2==0 ? "odd" : "even" %>"> -        <td class="hour"><%= vjas.arrival_time ? l( vjas.arrival_time, :format => :hour) : "" %></td> +        <td class="hour <%= vjas.arrival_time.nil? ? "missing" : "" %>"><%= vjas.arrival_time ? l( vjas.arrival_time, :format => :hour) : "" %></td>          <td><%= link_to vjas.stop_point.stop_area.name, [@referential, vjas.stop_point.stop_area] %></td> -        <td class="hour"><%= vjas.departure_time ? l( vjas.departure_time, :format => :hour) : "" %></td> +        <td class="hour <%= vjas.departure_time.nil? ? "missing" : "" %>"><%= vjas.departure_time ? l( vjas.departure_time, :format => :hour) : "" %></td>        </tr>        <% end %>      </tbody> | 
