diff options
40 files changed, 645 insertions, 317 deletions
| diff --git a/.gitignore b/.gitignore index cc3e0cd16..8b21c30a3 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,6 @@ chouette2.war  vendor/bundle  .ruby-version  coverage + +# IDE +.idea diff --git a/app/assets/stylesheets/main/vehicle_journeys_frequencies.scss b/app/assets/stylesheets/main/vehicle_journeys_frequencies.scss new file mode 100644 index 000000000..682f02e12 --- /dev/null +++ b/app/assets/stylesheets/main/vehicle_journeys_frequencies.scss @@ -0,0 +1,69 @@ +#workspace { +  .ce-TimeBandFormTable { +    border-left: 1px solid #616161; +  } +  .ce-TimeBandFormTable td { +    padding: 0 20px 4px 20px; +    vertical-align: top; +  } +  .ce-TimeBandFormTable td:last-child { +    text-align: right; +    padding-right: 4px; +  } +  .ce-TimeBandFormTable-circleLine { +    position: relative; +  } +  .ce-TimeBandFormTable-line:after { +    content: ''; +    position: absolute; +    top: 0; +    bottom: 0; +    left: 50%; +    width: 2px; +    margin-left: -1px; +    background-color: #61970b; +    } +  .ce-TimeBandFormTable tr:last-child td .ce-TimeBandFormTable-line { +    display: none; +  } +  .ce-TimeBandFormTable-circle { +    position: relative; +    z-index: 999; +    display: block; +    width: 16px; +    height: 16px; +    border-radius: 8px; +    background-color: #4d7809; +  } +  .ce-TimeBandFormTable tr:hover .ce-TimeBandFormTable-circle { +    background-color: #fff; +    border: 2px solid #61970b; +  } +  .ce-TimeBandFormTable-subList { + +  } +  .ce-FrequencyFormFields { +    padding-left: 25%; +    > li { +      display: inline-block; +      vertical-align: top; +      legend { +        position: relative; +        width: auto; +        float: none; +        label { +          position: relative; +        } +      } +      .fragments-group { +        float: none; +        width: auto; +        padding: 0; +        > li { +          display: inline-block; +          vertical-align: top; +        } +      } +    } +  } +} diff --git a/app/controllers/breadcrumb_controller.rb b/app/controllers/breadcrumb_controller.rb index 143651b52..c1bb4289c 100644 --- a/app/controllers/breadcrumb_controller.rb +++ b/app/controllers/breadcrumb_controller.rb @@ -27,7 +27,7 @@ class BreadcrumbController < InheritedResources::Base    end    def new -    new! do  +    new! do        build_breadcrumb :new      end    end diff --git a/app/controllers/journey_patterns_controller.rb b/app/controllers/journey_patterns_controller.rb index ce59d00b6..13018771d 100644 --- a/app/controllers/journey_patterns_controller.rb +++ b/app/controllers/journey_patterns_controller.rb @@ -36,7 +36,7 @@ class JourneyPatternsController < ChouetteController    def new_vehicle_journey      @vehicle_journey = Chouette::VehicleJourney.new(:route_id => route.id)      @vehicle_journey.update_journey_pattern(resource) -    render "vehicle_journeys/select_journey_pattern" +    render "vehicle_journeys#{"_#{params[:suffix]}" if params[:suffix]}/select_journey_pattern"    end    # overwrite inherited resources to use delete instead of destroy diff --git a/app/controllers/vehicle_journeys_controller.rb b/app/controllers/vehicle_journeys_controller.rb index ace7aff5e..32bc68a5e 100644 --- a/app/controllers/vehicle_journeys_controller.rb +++ b/app/controllers/vehicle_journeys_controller.rb @@ -1,5 +1,5 @@  class VehicleJourneysController < ChouetteController -  defaults :resource_class => Chouette::VehicleJourney +  defaults :resource_class => Chouette::VehicleJourneyTimed    respond_to :js, :only => [:select_journey_pattern, :edit, :new, :index] @@ -87,7 +87,20 @@ class VehicleJourneysController < ChouetteController    private    def vehicle_journey_params -    params.require(:vehicle_journey).permit( { footnote_ids: [] } , :journey_pattern_id, :number, :published_journey_name, :published_journey_identifier, :comment, :transport_mode_name, :mobility_restricted_suitability, :flexible_service, :status_value, :facility, :vehicle_type_identifier, :objectid, :time_table_tokens, { date: [ :hour, :minute ] }, :button, :referential_id, :line_id, :route_id, :id, { vehicle_journey_at_stops_attributes: [ :arrival_time, :id, :_destroy, :stop_point_id, :departure_time ] } ) +    params.require(:vehicle_journey).permit( { footnote_ids: [] } , :journey_pattern_id, :number, :published_journey_name, +                                             :published_journey_identifier, :comment, :transport_mode_name, +                                             :mobility_restricted_suitability, :flexible_service, :status_value, +                                             :facility, :vehicle_type_identifier, :objectid, :time_table_tokens, +                                             { date: [ :hour, :minute ] }, :button, :referential_id, :line_id, +                                             :route_id, :id, { vehicle_journey_at_stops_attributes: [ :arrival_time, +                                                                                                      :id, :_destroy, +                                                                                                      :stop_point_id, +                                                                                                      :departure_time, +                                                                                                      :is_frequency] }, +                                             { frequencies_attributes: [ :scheduled_headway_interval, :first_departure_time, +                                                                         :last_departure_time, +                                                                         :exact_time ] }, +                                             :is_frequency )    end  end diff --git a/app/controllers/vehicle_journeys_frequencies_controller.rb b/app/controllers/vehicle_journeys_frequencies_controller.rb new file mode 100644 index 000000000..6cd1ca0da --- /dev/null +++ b/app/controllers/vehicle_journeys_frequencies_controller.rb @@ -0,0 +1,6 @@ +class VehicleJourneysFrequenciesController < VehicleJourneysController + +  defaults :resource_class => Chouette::VehicleJourneyFrequency + +end + diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index d3e9655b9..28e652f2f 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -51,6 +51,8 @@ module ApplicationHelper        "group_of_lines"      when path.include?("/vehicle_journeys")        "vehicle_journeys" +    when path.include?("/vehicle_journeys_frequencies") +      "vehicle_journeys"      when path.include?("/journey_patterns")        "journey_patterns"      when path.include?("/routes") diff --git a/app/helpers/breadcrumb_helper.rb b/app/helpers/breadcrumb_helper.rb index c98691b72..1f3c9a2ce 100644 --- a/app/helpers/breadcrumb_helper.rb +++ b/app/helpers/breadcrumb_helper.rb @@ -16,6 +16,8 @@ module BreadcrumbHelper        journey_pattern_breadcrumb action      when "Chouette::VehicleJourney"        vehicle_journey_breadcrumb action +    when "Chouette::VehicleJourneysFrequency" +      vehicle_journeys_frequency_breadcrumb action      when "VehicleJourneyImport"        vehicle_journey_import_breadcrumb action      when "Chouette::StopArea" @@ -124,6 +126,12 @@ module BreadcrumbHelper      add_breadcrumb breadcrumb_label(@vehicle_journey), referential_line_route_vehicle_journey_path(@referential, @line,@route,@vehicle_journey),:title => breadcrumb_tooltip(@vehicle_journey) if action == :edit    end +   def vehicle_journeys_frequency_breadcrumb(action) +     route_breadcrumb :edit +     add_breadcrumb I18n.t("breadcrumbs.vehicle_journeys_frequencies"), referential_line_route_vehicle_journeys_frequencies_path(@referential, @line, @route) unless action == :index +     add_breadcrumb breadcrumb_label(@vehicle_journey), referential_line_route_vehicle_journeys_frequency_path(@referential, @line,@route, @vehicle_journey),:title => breadcrumb_tooltip(@vehicle_journey) if action == :edit +   end +    def vehicle_journey_import_breadcrumb (action)      route_breadcrumb :edit    end diff --git a/app/helpers/vehicle_journeys_frequencies_helper.rb b/app/helpers/vehicle_journeys_frequencies_helper.rb new file mode 100644 index 000000000..b5a7926ea --- /dev/null +++ b/app/helpers/vehicle_journeys_frequencies_helper.rb @@ -0,0 +1,2 @@ +module VehicleJourneysFrequenciesHelper +end diff --git a/app/views/vehicle_journeys/_form.html.erb b/app/views/vehicle_journeys/_form.html.erb index e4b1ce432..627b2fa60 100644 --- a/app/views/vehicle_journeys/_form.html.erb +++ b/app/views/vehicle_journeys/_form.html.erb @@ -1,5 +1,6 @@ -<%= semantic_form_for [@referential, @line, @route, @vehicle_journey] do |form| %> +<%= semantic_form_for @vehicle_journey, url: form_url do |form| %>    <%= form.inputs do %> +    <%= form.input :is_frequency, as: :hidden %>      <%= form.input :journey_pattern, :as => :select, :collection => @route.journey_patterns, :member_label => Proc.new { |jp| journey_name(jp) }  %>      <%= form.input :number %>      <%= form.input :published_journey_name %> @@ -18,52 +19,14 @@  	    <%= form.label @vehicle_journey.human_attribute_name(:vehicle_journey_at_stop_ids), :class => "label" %>      </li> -    <% unless @vehicle_journey.vehicle_journey_at_stops.empty? || -       @vehicle_journey.vehicle_journey_at_stops.any? { |vjas| vjas.departure_time.nil? } %>    <div class="vehicle_journey_at_stops"> -      <div class="well"> -        <span class="title"><%= t(".slide_title") %></span> -        <div> -          <span><%= t(".set") %></span> <%= select_tag "", options_for_select( [ [t('.slide_departure'), "departure"], [t('.slide_arrival'), "arrival"] ] ), :class => "departure_or_arrival" %> <span><%= t(".to") %></span> -          <%= select_hour(@vehicle_journey.vehicle_journey_at_stops.first.departure_time.hour) %> -          <%= select_minute(@vehicle_journey.vehicle_journey_at_stops.first.departure_time.min) %> -          <a class="slide btn btn-default"><%= t(".slide") %></a> -        </div> -      </div> -    <% end %> - -    <table class="table table-hover table-striped"> -	    <thead> -	      <tr> -	        <th class="hour title"><%= t('.arrival') %></th> -	        <th class="stop title" ><%= t('.stop_title') %></th> -	        <th class="hour title"><%= t('.departure') %></th> -	      </tr> -	    </thead> -	    <tfoot> -	      <tr> -	        <td class="title"> <a class="to_departures"><%= t('.to_departures') %></a></td> -	        <td class="title" ></td> -	        <td class="title"><a class="to_arrivals"><%= t('.to_arrivals') %></a></td> -	      </tr> -	    </tfoot> -	    <tbody class="journey_pattern_dependent_list"> -	      <%= render :partial => "vehicle_journeys/vehicle_journey_at_stop_fields", -	      :collection => @vehicle_journey.vehicle_journey_at_stops, :as => :vehicle_journey_at_stop, :locals => { :vehicle_journey_at_stops_size => @vehicle_journey.vehicle_journey_at_stops.size } %> - -      </tbody> -    </table>     +    <%= render 'form_vehicle_journey_at_stops', form: form %>    <% end %>    <%= form.actions do %> -    <%= form.action :submit, :as => :button %> -    <%= form.action :cancel, :as => :link %> +    <%= form.action :submit, as: :button, label: t(".submit_#{@vehicle_journey.vehicle_journey_type}") %> +    <%= form.action :cancel, as: :link %>    <% end %>  <% end %> -<% 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 %> - +<%= render 'form_footer' %> diff --git a/app/views/vehicle_journeys/_form_footer.html.erb b/app/views/vehicle_journeys/_form_footer.html.erb new file mode 100644 index 000000000..1a5259348 --- /dev/null +++ b/app/views/vehicle_journeys/_form_footer.html.erb @@ -0,0 +1,5 @@ +<% 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/_form_vehicle_journey_at_stops.html.erb b/app/views/vehicle_journeys/_form_vehicle_journey_at_stops.html.erb new file mode 100644 index 000000000..826733135 --- /dev/null +++ b/app/views/vehicle_journeys/_form_vehicle_journey_at_stops.html.erb @@ -0,0 +1,37 @@ +<% unless @vehicle_journey.vehicle_journey_at_stops.empty? || @vehicle_journey.vehicle_journey_at_stops.any? { |vjas| vjas.departure_time.nil? } %> +  <div class="vehicle_journey_at_stops"> +    <div class="well"> +      <span class="title"><%= t('vehicle_journeys.form.slide_title') %></span> +      <div> +        <span><%= t('vehicle_journeys.form.set') %></span> +        <%= select_tag '', options_for_select( [ [t('vehicle_journeys.form.slide_departure'), "departure"], [t('vehicle_journeys.form.slide_arrival'), "arrival"] ] ), :class => "departure_or_arrival" %> +        <span><%= t('vehicle_journeys.form.to') %></span> +        <%= select_hour(@vehicle_journey.vehicle_journey_at_stops.first.departure_time.hour) %> +        <%= select_minute(@vehicle_journey.vehicle_journey_at_stops.first.departure_time.min) %> +        <a class="slide btn btn-default"><%= t('vehicle_journeys.form.slide') %></a> +      </div> +    </div> +  </div> +<% end %> + +<table class="table table-hover table-striped"> +  <thead> +    <tr> +      <th class="hour title"><%= t('vehicle_journeys.form.arrival') %></th> +      <th class="stop title"><%= t('vehicle_journeys.form.stop_title') %></th> +      <th class="hour title"><%= t('vehicle_journeys.form.departure') %></th> +    </tr> +  </thead> +  <tfoot> +    <tr> +      <td class="title"><a class="to_departures"><%= t('vehicle_journeys.form.to_departures') %></a></td> +      <td class="title"></td> +      <td class="title"><a class="to_arrivals"><%= t('vehicle_journeys.form.to_arrivals') %></a></td> +    </tr> +  </tfoot> +  <tbody class="journey_pattern_dependent_list"> +    <%= render :partial => "vehicle_journeys/vehicle_journey_at_stop_fields", +               :collection => @vehicle_journey.vehicle_journey_at_stops, :as => :vehicle_journey_at_stop, +               :locals => { :vehicle_journey_at_stops_size => @vehicle_journey.vehicle_journey_at_stops.size } %> +  </tbody> +</table> diff --git a/app/views/vehicle_journeys/_show_sidebar.html.erb b/app/views/vehicle_journeys/_show_sidebar.html.erb new file mode 100644 index 000000000..e649edaef --- /dev/null +++ b/app/views/vehicle_journeys/_show_sidebar.html.erb @@ -0,0 +1,15 @@ +<% 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> +    <li><%= link_to t('vehicle_journeys.actions.new_frequency'), new_referential_line_route_vehicle_journeys_frequency_path(@referential, @line, @route), :class => "add" %></li> +    <li><%= link_to t('vehicle_journeys.actions.edit'), edit_referential_line_route_vehicle_journey_path(@referential, @line, @route, @vehicle_journey), :class => "edit" %></li> +    <li><%= link_to t('vehicle_journeys.actions.destroy'), referential_line_route_vehicle_journey_path(@referential, @line, @route, @vehicle_journey), :method => :delete, :data => {:confirm =>  t('vehicle_journeys.actions.destroy_confirm')}, :class => "remove" %></li> +    <% unless @vehicle_journey.vehicle_journey_at_stops.empty? %> +      <li> +        <i class="fa fa-cubes fa-fw" style="color:#D98F3B;"></i> +        <%= link_to t('vehicle_journeys.show.translation_form'), new_referential_line_route_vehicle_journey_vehicle_translation_path(@referential, @line, @route, @vehicle_journey), {:remote => true, 'data-toggle' =>  "modal", 'data-target' => '#modal_translation', :class => "with_fa" } %> +      </li> +    <% end %> +  </ul> +  <%= creation_tag(@vehicle_journey) %> +<% end %> diff --git a/app/views/vehicle_journeys/_show_vehicle_journey_at_stops.html.erb b/app/views/vehicle_journeys/_show_vehicle_journey_at_stops.html.erb new file mode 100644 index 000000000..e2e0ef82e --- /dev/null +++ b/app/views/vehicle_journeys/_show_vehicle_journey_at_stops.html.erb @@ -0,0 +1,20 @@ +<div class="vehicle_journey_at_stops content"> +  <table class="table table-hover table-striped"> +    <thead> +    <tr> +      <th class="hour title"><%= t('.arrival') %></th> +      <th class="stop title" ><%= t('.stop_title') %></th> +      <th class="hour title"><%= t('.departure') %></th> +    </tr> +    <thead> +    <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.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.nil? ? "missing" : "" %>"><%= vjas.departure_time ? l( vjas.departure_time, :format => :hour) : "" %></td> +      </tr> +    <% end %> +    </tbody> +  </table> +</div> diff --git a/app/views/vehicle_journeys/_sidebar.html.erb b/app/views/vehicle_journeys/_sidebar.html.erb index 8d6f310d3..4522fa109 100644 --- a/app/views/vehicle_journeys/_sidebar.html.erb +++ b/app/views/vehicle_journeys/_sidebar.html.erb @@ -1,6 +1,7 @@ -  <ul class="actions"> -    <li><%= link_to t('vehicle_journeys.actions.new'), new_referential_line_route_vehicle_journey_path(@referential, @line, @route), :class => "add" %></li> -	<li><%= link_to t('vehicle_journey_imports.new.title'), new_referential_line_route_vehicle_journey_import_path( @referential, @line, @route ), :class => "import" %></li> -    <li><%= link_to t('vehicle_journey_exports.new.title'), referential_line_route_vehicle_journey_exports_path(@referential, @line, @route, :format => :zip), :class => "export" %></li> -  </ul> +<ul class="actions"> +  <li><%= link_to t('vehicle_journeys.actions.new'), new_referential_line_route_vehicle_journey_path(@referential, @line, @route), :class => "add" %></li> +  <li><%= link_to t('vehicle_journeys.actions.new_frequency'), new_referential_line_route_vehicle_journeys_frequency_path(@referential, @line, @route), :class => "add" %></li> +  <li><%= link_to t('vehicle_journey_imports.new.title'), new_referential_line_route_vehicle_journey_import_path( @referential, @line, @route ), :class => "import" %></li> +  <li><%= link_to t('vehicle_journey_exports.new.title'), referential_line_route_vehicle_journey_exports_path(@referential, @line, @route, :format => :zip), :class => "export" %></li> +</ul> diff --git a/app/views/vehicle_journeys/edit.html.erb b/app/views/vehicle_journeys/edit.html.erb index 51653a34a..2d87ffe57 100644 --- a/app/views/vehicle_journeys/edit.html.erb +++ b/app/views/vehicle_journeys/edit.html.erb @@ -1,4 +1,5 @@  <%= title_tag edit_vehicle_title(@vehicle_journey) %> -<%= render "form" %> +<%= render 'form', form_url: referential_line_route_vehicle_journey_path(@referential, @line, @route, @vehicle_journey) %> + diff --git a/app/views/vehicle_journeys/new.html.erb b/app/views/vehicle_journeys/new.html.erb index a32e9cc31..19b31e422 100644 --- a/app/views/vehicle_journeys/new.html.erb +++ b/app/views/vehicle_journeys/new.html.erb @@ -1,4 +1,4 @@  <%= title_tag t('vehicle_journeys.new.title') %> -<%= render "form" %> +<%= render partial: 'form', locals: { form_url: referential_line_route_vehicle_journeys_path(@referential, @line, @route, @vehicle_journey) } %> diff --git a/app/views/vehicle_journeys/show.html.erb b/app/views/vehicle_journeys/show.html.erb index 695b5c8b5..3bdfbb945 100644 --- a/app/views/vehicle_journeys/show.html.erb +++ b/app/views/vehicle_journeys/show.html.erb @@ -79,41 +79,11 @@    </div>  </div>  <h3><%= @vehicle_journey.human_attribute_name(:vehicle_journey_at_stop_ids) %></h3> -<div class="vehicle_journey_at_stops content"> -  <table class="table table-hover table-striped"> -    <thead> -      <tr> -        <th class="hour title"><%= t('.arrival') %></th> -        <th class="stop title" ><%= t('.stop_title') %></th> -        <th class="hour title"><%= t('.departure') %></th> -      </tr> -    <thead> -      <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.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.nil? ? "missing" : "" %>"><%= vjas.departure_time ? l( vjas.departure_time, :format => :hour) : "" %></td> -        </tr> -        <% end %> -      </tbody> -  </table> -</div> +<%= render 'show_vehicle_journey_at_stops' %>  <h3><%= t('.time_tables') %></h3>  <div class="time_tables paginated_content">    <%= paginated_content @vehicle_journey.time_tables, "time_tables/time_table", :delete => false %>  </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> -    <li><%= link_to t('vehicle_journeys.actions.edit'), edit_referential_line_route_vehicle_journey_path(@referential, @line, @route, @vehicle_journey), :class => "edit" %></li> -    <li><%= link_to t('vehicle_journeys.actions.destroy'), referential_line_route_vehicle_journey_path(@referential, @line, @route, @vehicle_journey), :method => :delete, :data => {:confirm =>  t('vehicle_journeys.actions.destroy_confirm')}, :class => "remove" %></li> -  <% unless @vehicle_journey.vehicle_journey_at_stops.empty? %> -    <li><font color="#D98F3B"><i class="fa fa-cubes fa-fw"></i></font><%= link_to t('.translation_form'), new_referential_line_route_vehicle_journey_vehicle_translation_path(@referential, @line, @route, @vehicle_journey), {:remote => true, 'data-toggle' =>  "modal", 'data-target' => '#modal_translation', :class => "with_fa" } %></li> -  <% end %> -  </ul> -  <%= creation_tag(@vehicle_journey) %> -<% end %> +<%= render 'show_sidebar' %> diff --git a/app/views/vehicle_journeys_frequencies/_form_footer.html.erb b/app/views/vehicle_journeys_frequencies/_form_footer.html.erb new file mode 100644 index 000000000..1217e2c08 --- /dev/null +++ b/app/views/vehicle_journeys_frequencies/_form_footer.html.erb @@ -0,0 +1,5 @@ +<% if @vehicle_journey.new_record? %> +  <%= javascript_include_tag new_referential_line_route_vehicle_journeys_frequency_path(@referential, @line, @route, :format => :js) %> +<% else %> +  <%= javascript_include_tag edit_referential_line_route_vehicle_journeys_frequency_path(@referential, @line, @route, @vehicle_journey, :format => :js) %> +<% end %> diff --git a/app/views/vehicle_journeys_frequencies/_form_vehicle_journey_at_stops.html.erb b/app/views/vehicle_journeys_frequencies/_form_vehicle_journey_at_stops.html.erb new file mode 100644 index 000000000..4bbb0671d --- /dev/null +++ b/app/views/vehicle_journeys_frequencies/_form_vehicle_journey_at_stops.html.erb @@ -0,0 +1,17 @@ +<li class="input"> +  <label class="label">Durée d'intervalle du trajet</label> +  <table class="journey_pattern_dependent_list ce-TimeBandFormTable"> +    <%= render :partial => 'vehicle_journey_at_stop_fields', +               :collection => @vehicle_journey.vehicle_journey_at_stops, :as => :vehicle_journey_at_stop, +               :locals => { :vehicle_journey_at_stops_size => @vehicle_journey.vehicle_journey_at_stops.size } %> +  </table> +</li> + +<% form.semantic_fields_for :frequencies do |frequency| %> +  <%= render 'frequency_fields', f: frequency %> +<% end %> + +<li class="input"> +  <label class="label"></label> +  <%= link_to_add_association t('frequencies.form.add_frequency_line'), form, :frequencies, class: 'btn btn-primary' %> +</li> diff --git a/app/views/vehicle_journeys_frequencies/_frequency_fields.html.erb b/app/views/vehicle_journeys_frequencies/_frequency_fields.html.erb new file mode 100644 index 000000000..57a0baf3d --- /dev/null +++ b/app/views/vehicle_journeys_frequencies/_frequency_fields.html.erb @@ -0,0 +1,14 @@ +<li class="nested-fields"> +  <ul class="ce-FrequencyFormFields"> +    <%= f.input :first_departure_time %> +    <%= f.input :last_departure_time %> +    <%= f.input :scheduled_headway_interval %> +    <%= f.input :exact_time %> +    <li> +      <label class="label"></label> +      <%= link_to_remove_association f do %> +        <i class="fa fa-trash"></i> +      <% end %> +    </li> +  </ul> +</li> diff --git a/app/views/vehicle_journeys_frequencies/_show_sidebar.html.erb b/app/views/vehicle_journeys_frequencies/_show_sidebar.html.erb new file mode 100644 index 000000000..7be0e4d63 --- /dev/null +++ b/app/views/vehicle_journeys_frequencies/_show_sidebar.html.erb @@ -0,0 +1,16 @@ +<% 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> +    <li><%= link_to t('vehicle_journeys.actions.new_frequency'), new_referential_line_route_vehicle_journeys_frequency_path(@referential, @line, @route), :class => "add" %></li> +    <li><%= link_to t('vehicle_journeys.actions.edit_frequency'), edit_referential_line_route_vehicle_journeys_frequency_path(@referential, @line, @route, @vehicle_journey), :class => "edit" %></li> +    <li><%= link_to t('vehicle_journeys.actions.destroy'), referential_line_route_vehicle_journey_path(@referential, @line, @route, @vehicle_journey), :method => :delete, :data => {:confirm =>  t('vehicle_journeys.actions.destroy_confirm')}, :class => "remove" %></li> +    <% unless @vehicle_journey.vehicle_journey_at_stops.empty? %> +      <li> +        <i class="fa fa-cubes fa-fw" style="color:#D98F3B;"></i> +        TODO +        <%# link_to t('vehicle_journeys.show.translation_form'), new_referential_line_route_vehicle_journey_vehicle_translation_path(@referential, @line, @route, @vehicle_journey), {:remote => true, 'data-toggle' =>  "modal", 'data-target' => '#modal_translation', :class => "with_fa" } %> +      </li> +    <% end %> +  </ul> +  <%= creation_tag(@vehicle_journey) %> +<% end %> diff --git a/app/views/vehicle_journeys_frequencies/_show_vehicle_journey_at_stops.html.erb b/app/views/vehicle_journeys_frequencies/_show_vehicle_journey_at_stops.html.erb new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/app/views/vehicle_journeys_frequencies/_show_vehicle_journey_at_stops.html.erb diff --git a/app/views/vehicle_journeys_frequencies/_vehicle_journey_at_stop_fields.html.erb b/app/views/vehicle_journeys_frequencies/_vehicle_journey_at_stop_fields.html.erb new file mode 100644 index 000000000..44da12328 --- /dev/null +++ b/app/views/vehicle_journeys_frequencies/_vehicle_journey_at_stop_fields.html.erb @@ -0,0 +1,54 @@ +<% vjas = vehicle_journey_at_stop +   tab_counter_arrival = 2 * vehicle_journey_at_stop_counter + 100 +   tab_counter_departure = (vehicle_journey_at_stops_size * 2) + 2 * vehicle_journey_at_stop_counter + 100 +%> +<tr> +  <td> +    <%= { +          id: vjas.id, +          _destroy: (vjas._destroy ? 1 : 0), +          stop_point_id: vjas.stop_point_id, +          is_frequency: true, +          :'departure_time(3i)' => 1, +          :'departure_time(2i)' => 1, +          :'departure_time(1i)' => 1, +          :'arrival_time(3i)' => 1, +          :'arrival_time(2i)' => 1, +          :'arrival_time(1i)' => 2000 +        }.map{ |k, v| +          "<input name=\"vehicle_journey[vehicle_journey_at_stops_attributes][#{vehicle_journey_at_stop_counter}][#{k}]\" +                  type=\"hidden\" value=\"#{v}\">" }.join("\n").html_safe %> + +    <%= vjas.stop_point.stop_area.name %> +  </td> +  <td class="ce-TimeBandFormTable-circleLine"> +    <span class="ce-TimeBandFormTable-circle"></span> +    <span class="ce-TimeBandFormTable-line"></span> +  </td> +  <td> +    <ul class="ce-TimeBandFormTable-subList"> +      <li> +        <span>Durée d'attente</span> +        <%= 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)]" }, +                        :class => "hour") %> +        <%= 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)]" }, +                          :class => "minute") %> +      </li> +      <li> +        <span>Durée de parcours</span> +        <%= 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)]" }, +                        :class => 'hour') %> +        <%= 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)]" }, +                          :class => 'minute') %> +      </li> +    </ul> +  </td> +</tr> diff --git a/app/views/vehicle_journeys_frequencies/edit.html.erb b/app/views/vehicle_journeys_frequencies/edit.html.erb new file mode 100644 index 000000000..8b9942d95 --- /dev/null +++ b/app/views/vehicle_journeys_frequencies/edit.html.erb @@ -0,0 +1,3 @@ +<%= title_tag edit_vehicle_title(@vehicle_journey) %> + +<%= render 'vehicle_journeys/form', form_url: referential_line_route_vehicle_journeys_frequency_path(@referential, @line, @route, id: @vehicle_journey) %> diff --git a/app/views/vehicle_journeys_frequencies/new.html.erb b/app/views/vehicle_journeys_frequencies/new.html.erb new file mode 100644 index 000000000..67ff079a3 --- /dev/null +++ b/app/views/vehicle_journeys_frequencies/new.html.erb @@ -0,0 +1,3 @@ +<%= title_tag t('vehicle_journeys.new.title_frequency') %> + +<%= render 'vehicle_journeys/form', form_url: referential_line_route_vehicle_journeys_frequencies_path(@referential, @line, @route, @vehicle_journey) %> diff --git a/app/views/vehicle_journeys_frequencies/new.js.erb b/app/views/vehicle_journeys_frequencies/new.js.erb new file mode 100644 index 000000000..c6fb98b22 --- /dev/null +++ b/app/views/vehicle_journeys_frequencies/new.js.erb @@ -0,0 +1,10 @@ +$(document).ready(function() { +  $("#vehicle_journey_journey_pattern_id").change( +      function(){ +        var url = "<%= referential_line_route_journey_patterns_path(@referential.id,@line.id,@route.id) %>"; +        url = url + "/" + $("#vehicle_journey_journey_pattern_input select option:selected").attr("value") + +            "/new_vehicle_journey?suffix=frequencies"; +        $.get(url); +      } +  ) +}); diff --git a/app/views/vehicle_journeys_frequencies/select_journey_pattern.js.erb b/app/views/vehicle_journeys_frequencies/select_journey_pattern.js.erb new file mode 100644 index 000000000..59e9e2f4a --- /dev/null +++ b/app/views/vehicle_journeys_frequencies/select_journey_pattern.js.erb @@ -0,0 +1,5 @@ +$('.journey_pattern_dependent_list').html('<%= escape_javascript( +  render(:partial => "vehicle_journeys_frequencies/vehicle_journey_at_stop_fields", +         :collection => @vehicle_journey.vehicle_journey_at_stops, +         :as => :vehicle_journey_at_stop, +         :locals => { :vehicle_journey_at_stops_size => @vehicle_journey.vehicle_journey_at_stops.size })).html_safe %>'); diff --git a/config/locales/breadcrumbs.yml b/config/locales/breadcrumbs.yml index ccf97c414..ba3b4d8b2 100644 --- a/config/locales/breadcrumbs.yml +++ b/config/locales/breadcrumbs.yml @@ -1,10 +1,12 @@  en:    breadcrumbs:      vehicle_journeys: "Passing times" +    vehicle_journeys_frequencies: "Times bands"      referentials: "Home"      users: "Users"  fr:    breadcrumbs:      vehicle_journeys: "Horaires" +    vehicle_journeys_frequencies: "Plages horaires"      referentials: "Accueil"      users: "Utilisateurs" diff --git a/config/locales/frequencies.en.yml b/config/locales/frequencies.en.yml new file mode 100644 index 000000000..b32da80c9 --- /dev/null +++ b/config/locales/frequencies.en.yml @@ -0,0 +1,5 @@ +en: +  frequencies: +    time_band: Time band +    form: +      add_frequency_line: Add a line diff --git a/config/locales/frequencies.fr.yml b/config/locales/frequencies.fr.yml new file mode 100644 index 000000000..337a00ae9 --- /dev/null +++ b/config/locales/frequencies.fr.yml @@ -0,0 +1,5 @@ +fr: +  frequencies: +    time_band: Plages horaires +    form: +      add_frequency_line: Ajouter une ligne diff --git a/config/locales/vehicle_journeys.en.yml b/config/locales/vehicle_journeys.en.yml new file mode 100644 index 000000000..cb4c9d649 --- /dev/null +++ b/config/locales/vehicle_journeys.en.yml @@ -0,0 +1,118 @@ +en: +  vehicle_journeys: +    vehicle_journeys:   +      line_routes: "Line's routes"       +    vehicle_journey: +      title_stopless: "Vehicle journey %{name}" +      title: "Vehicle journey leaving from %{stop} at %{time}" +    actions: +      index: "Vehicle time's board" +      new: "Add a new vehicle journey" +      new_frequency: "Add a new vehicle frequency journey" +      edit: "Edit this vehicle journey" +      edit_frequency: "Edit this vehicle frequency journey" +      destroy: "Remove this vehicle journey" +      destroy_confirm: "Are you sure you want destroy this vehicle journey?" +    new: +      title: "Add a new vehicle journey" +      title_frequency: "Add a new vehicle frequency journey" +    edit: +      title_stopless: "Update vehicle journey %{name}" +      title: "Update vehicle journey %{name} leaving from %{stop} at %{time}" +    form: +      stop_title: "Stop" +      departure: "Departure" +      arrival: "Arrival" +      to_arrivals: "Copy departures to arrivals" +      to_departures: "Copy arrivals to departures" +      time_tables: "Associated calendars to vehicle journey" +      slide: "Shift" +      slide_title: "Shift all vehicle passing times" +      set: "Set" +      to: "at" +      slide_departure: "departure time at first stop" +      slide_arrival: "arrival time at first stop" +      submit: "Create vehicle journey" +      submit_frequency: "Create vehicle frequency journey" +    timeless: +      title: "Timeless vehicle journeys" +      vehicle_journeys: "Vehicle journeys with times at stop" +      vehicles_list: "Vehicle journeys list" +    show: +      title: "Vehicle Journey %{vehicle journey}" +      stop_title: "Stop" +      departure: "Departure" +      arrival: "Arrival" +      time_tables: "Calendars list" +      bounding: "From %{start} to %{end}" +      translation_form: "Vehicle journey translations" +    index: +      title: "Vehicle journeys on route %{route}" +      vehicle_journeys: "Departure's times" +      selection: "Filter on" +      selection_all: "All" +      select_journey_patterns: "Select journey pattern" +      select_time_tables: "Enter a timetable" +      time_range: "Departure time threshold" +      advanced_search: "Advanced Search" +    sidebar: +      timeless: "Timeless vehicle journeys" +    time_filter: +      time_range_filter: "Filter" +  activerecord: +    models: +      vehicle_journey: +        zero:  "vehicle journey" +        one:   "vehicle journey" +        other: "vehicle journeys" +    attributes: +      vehicle_journey: +        line: "Line" +        route: "Route" +        journey_pattern: "Journey Pattern" +        time_tables: "Calendars" +        time_slot: "Time Slot" +        company: "Company" +        number: "Number" +        comment: "Comments" +        status_value: "Status Value" +        transport_mode_name: "Transport Mode" +        mobility_restricted_suitability: "PRM accessibility" +        flexible_service: "On demond transportation" +        unspecified_mrs: "Not specified" +        accessible: "Accessible" +        not_accessible: "Not accessible" +        unspecified_fs: "Not specified" +        on_demand_fs: "On demand service" +        regular_fs: "Regular service" +        published_journey_name: "Published Name" +        published_journey_identifier: "Published Identifier" +        facility: "Facility" +        vehicletypeidentifier: "Vehicle Type Identifier" +        time_table_ids: "Calendar list" +        vehicle_journey_at_stop_ids: "Time list" +        objectid: "Neptune identifier" +        object_version: "Version" +        creation_time: "Created on" +        creator_id: "Created by" +        footnote_ids: "Footnotes" +    errors: +      models: +        vehicle_journey: +          invalid_times: "Invalid times" +  formtastic: +    titles: +      vehicle_journey: +        objectid: "[prefix]:VehicleJourney:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character" +      neptune: +        vehicle_journey: +          objectid: "[prefix]:VehicleJourney:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character" +      netex: +        vehicle_journey: +          objectid: "[prefix]:VehicleJourney:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character" +      gtfs: +        vehicle_journey: +          objectid: "[prefix]:VehicleJourney:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character" +      hub: +        vehicle_journey: +          objectid: "[prefix]:VehicleJourney:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character. Maximum length of the unique key = 8." diff --git a/config/locales/vehicle_journeys.fr.yml b/config/locales/vehicle_journeys.fr.yml new file mode 100644 index 000000000..9d16adff8 --- /dev/null +++ b/config/locales/vehicle_journeys.fr.yml @@ -0,0 +1,118 @@ +fr: +  vehicle_journeys: +    vehicle_journeys: +      line_routes: "Séquences d'arrêts de la ligne" +    vehicle_journey: +      title_stopless: "Course %{name}" +      title: "Course partant de %{stop} à %{time}" +    actions: +      index: "Horaires des courses" +      new: "Ajouter une course" +      new_frequency: "Ajouter une course à fréquence" +      edit: "Modifier cette course" +      edit_frequency: "Modifier cette course à fréquence" +      destroy: "Supprimer cette course" +      destroy_confirm: "Etes vous sûr de supprimer cette course ?" +    new: +      title: "Ajouter une course" +      title_frequency: "Ajouter une course à fréquence" +    edit: +      title_stopless: "Modifier la course %{name}" +      title: "Modifier la course partant de %{stop} à %{time}" +    form: +      stop_title: "Arrêt" +      departure: "Départ" +      arrival: "Arrivée" +      to_arrivals: "Copie départs vers arrivées" +      to_departures: "Copie arrivées vers départs" +      time_tables: "Calendriers associés à la course" +      slide: "Décaler" +      slide_title: "Décaler l'ensemble des horaires de course" +      set: "Fixer" +      to: "à" +      slide_departure: "horaire de départ au 1° arrêt à" +      slide_arrival: "horaire d'arrivée au 1° arrêt à" +      submit: "Créer course" +      submit_frequency: "Créer course à fréquence" +    timeless: +      title: "Courses sans horaire" +      vehicle_journeys: "Courses ayant des horaires" +      vehicles_list: "Liste des courses" +    show: +      title: "Course au départ de %{stop} à %{time} sur la séquence %{route}" +      stop_title: "Arrêt" +      departure: "Départ" +      arrival: "Arrivée" +      time_tables: "Liste des calendriers" +      bounding: "De %{start} à %{end}" +      translation_form: "Cloner la course" +    index: +      title: "Horaires de la séquence d'arrêts %{route}" +      vehicle_journeys: "Horaires de départ aux arrêts" +      selection: "Filtrer sur" +      selection_all: "Tous" +      select_journey_patterns: "Sélectionner une mission" +      select_time_tables: "Saisir un calendrier" +      time_range: "Seuil horaire au départ" +      advanced_search: "Recherche avancée" +    time_filter: +      time_range_filter: "Filtrer" +    sidebar: +      timeless: "Courses sans horaire" +  activerecord: +    models: +      vehicle_journey: +        zero:  "course" +        one:   "course" +        other: "courses" +    attributes: +      vehicle_journey: +        line: "Ligne" +        route: "Séquence d'arrêt" +        journey_pattern: "Mission" +        time_tables: "Calendriers" +        time_slot: "Fréquence" +        company: "Transporteur" +        number: "Numéro" +        comment: "Commentaires" +        status_value: "Etat de trafic" +        transport_mode_name: "Mode de transport" +        mobility_restricted_suitability: "Accessibilité PMR" +        flexible_service: "Transport à la demande" +        unspecified_mrs: "Non spécifié" +        accessible: "Accessible" +        not_accessible: "Non accessible" +        unspecified_fs: "Non spécifié" +        on_demand_fs: "Service à la demande" +        regular_fs: "Service régulier" +        published_journey_name: "Nom public" +        published_journey_identifier: "Identifiant public" +        facility: "Equipement" +        vehicle_type_identifier: "Type d'identifiant du véhicule" +        time_table_ids: "Liste des calendriers" +        vehicle_journey_at_stop_ids: "Liste des horaires" +        objectid: "Identifiant Neptune" +        object_version: "Version" +        creation_time: "Créé le" +        creator_id: "Créé par" +        footnote_ids: "Notes de bas de page" +    errors: +      models: +        vehicle_journey: +          invalid_times: "Horaires invalides" +  formtastic: +    titles: +      vehicle_journey: +        objectid: "[prefixe]:VehicleJourney:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'" +      neptune: +        vehicle_journey: +          objectid: "[prefixe]:VehicleJourney:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'" +      netex: +        vehicle_journey: +          objectid: "[prefixe]:VehicleJourney:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'" +      gtfs: +        vehicle_journey: +          objectid: "[prefixe]:VehicleJourney:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'" +      hub: +        vehicle_journey: +          objectid: "[prefixe]:VehicleJourney:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'. Longueur maximale de la clé unique = 8." diff --git a/config/locales/vehicle_journeys.yml b/config/locales/vehicle_journeys.yml deleted file mode 100644 index 3b18447f4..000000000 --- a/config/locales/vehicle_journeys.yml +++ /dev/null @@ -1,228 +0,0 @@ -en: -  vehicle_journeys: -    vehicle_journeys:   -      line_routes: "Line's routes"       -    vehicle_journey: -      title_stopless: "Vehicle journey %{name}" -      title: "Vehicle journey leaving from %{stop} at %{time}" -    actions: -      index: "Vehicle time's board" -      new: "Add a new vehicle journey" -      edit: "Edit this vehicle journey" -      destroy: "Remove this vehicle journey" -      destroy_confirm: "Are you sure you want destroy this vehicle journey?" -    new: -      title: "Add a new vehicle journey" -    edit: -      title_stopless: "Update vehicle journey %{name}" -      title: "Update vehicle journey %{name} leaving from %{stop} at %{time}" -    form: -      stop_title: "Stop" -      departure: "Departure" -      arrival: "Arrival" -      to_arrivals: "Copy departures to arrivals" -      to_departures: "Copy arrivals to departures" -      time_tables: "Associated calendars to vehicle journey" -      slide: "Shift" -      slide_title: "Shift all vehicle passing times" -      set: "Set" -      to: "at" -      slide_departure: "departure time at first stop" -      slide_arrival: "arrival time at first stop" -    timeless: -      title: "Timeless vehicle journeys" -      vehicle_journeys: "Vehicle journeys with times at stop" -      vehicles_list: "Vehicle journeys list" -    show: -      title: "Vehicle Journey %{vehicle journey}" -      stop_title: "Stop" -      departure: "Departure" -      arrival: "Arrival" -      time_tables: "Calendars list" -      bounding: "From %{start} to %{end}" -      translation_form: "Vehicle journey translations" -    index: -      title: "Vehicle journeys on route %{route}" -      vehicle_journeys: "Departure's times" -      selection: "Filter on" -      selection_all: "All" -      select_journey_patterns: "Select journey pattern" -      select_time_tables: "Enter a timetable" -      time_range: "Departure time threshold" -      advanced_search: "Advanced Search" -    sidebar: -      timeless: "Timeless vehicle journeys" -    time_filter: -      time_range_filter: "Filter" -  activerecord: -    models: -      vehicle_journey: -        zero:  "vehicle journey" -        one:   "vehicle journey" -        other: "vehicle journeys" -    attributes: -      vehicle_journey: -        line: "Line" -        route: "Route" -        journey_pattern: "Journey Pattern" -        time_tables: "Calendars" -        time_slot: "Time Slot" -        company: "Company" -        number: "Number" -        comment: "Comments" -        status_value: "Status Value" -        transport_mode_name: "Transport Mode" -        mobility_restricted_suitability: "PRM accessibility" -        flexible_service: "On demond transportation" -        unspecified_mrs: "Not specified" -        accessible: "Accessible" -        not_accessible: "Not accessible" -        unspecified_fs: "Not specified" -        on_demand_fs: "On demand service" -        regular_fs: "Regular service" -        published_journey_name: "Published Name" -        published_journey_identifier: "Published Identifier" -        facility: "Facility" -        vehicletypeidentifier: "Vehicle Type Identifier" -        time_table_ids: "Calendar list" -        vehicle_journey_at_stop_ids: "Time list" -        objectid: "Neptune identifier" -        object_version: "Version" -        creation_time: "Created on" -        creator_id: "Created by" -        footnote_ids: "Footnotes" -    errors: -      models: -        vehicle_journey: -          invalid_times: "Invalid times" -  formtastic: -    titles: -      vehicle_journey: -        objectid: "[prefix]:VehicleJourney:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character" -      neptune: -        vehicle_journey: -          objectid: "[prefix]:VehicleJourney:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character" -      netex: -        vehicle_journey: -          objectid: "[prefix]:VehicleJourney:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character" -      gtfs: -        vehicle_journey: -          objectid: "[prefix]:VehicleJourney:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character" -      hub: -        vehicle_journey: -          objectid: "[prefix]:VehicleJourney:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character. Maximum length of the unique key = 8." - -fr: -  vehicle_journeys: -    vehicle_journeys:   -      line_routes: "Séquences d'arrêts de la ligne"   -    vehicle_journey: -      title_stopless: "Course %{name}" -      title: "Course partant de %{stop} à %{time}" -    actions: -      index: "Horaires des courses" -      new: "Ajouter une course" -      edit: "Modifier cette course" -      destroy: "Supprimer cette course" -      destroy_confirm: "Etes vous sûr de supprimer cette course ?" -    new: -      title: "Ajouter une course" -    edit: -      title_stopless: "Modifier la course %{name}" -      title: "Modifier la course partant de %{stop} à %{time}" -    form: -      stop_title: "Arrêt" -      departure: "Départ" -      arrival: "Arrivée" -      to_arrivals: "Copie départs vers arrivées" -      to_departures: "Copie arrivées vers départs" -      time_tables: "Calendriers associés à la course" -      slide: "Décaler" -      slide_title: "Décaler l'ensemble des horaires de course" -      set: "Fixer" -      to: "à" -      slide_departure: "horaire de départ au 1° arrêt à" -      slide_arrival: "horaire d'arrivée au 1° arrêt à" -    timeless: -      title: "Courses sans horaire" -      vehicle_journeys: "Courses ayant des horaires" -      vehicles_list: "Liste des courses" -    show: -      title: "Course au départ de %{stop} à %{time} sur la séquence %{route}" -      stop_title: "Arrêt" -      departure: "Départ" -      arrival: "Arrivée" -      time_tables: "Liste des calendriers" -      bounding: "De %{start} à %{end}" -      translation_form: "Cloner la course" -    index: -      title: "Horaires de la séquence d'arrêts %{route}" -      vehicle_journeys: "Horaires de départ aux arrêts" -      selection: "Filtrer sur" -      selection_all: "Tous" -      select_journey_patterns: "Sélectionner une mission" -      select_time_tables: "Saisir un calendrier" -      time_range: "Seuil horaire au départ" -      advanced_search: "Recherche avancée" -    time_filter: -      time_range_filter: "Filtrer" -    sidebar: -      timeless: "Courses sans horaire" -  activerecord: -    models: -      vehicle_journey: -        zero:  "course" -        one:   "course" -        other: "courses" -    attributes: -      vehicle_journey: -        line: "Ligne" -        route: "Séquence d'arrêt" -        journey_pattern: "Mission" -        time_tables: "Calendriers" -        time_slot: "Fréquence" -        company: "Transporteur" -        number: "Numéro" -        comment: "Commentaires" -        status_value: "Etat de trafic" -        transport_mode_name: "Mode de transport" -        mobility_restricted_suitability: "Accessibilité PMR" -        flexible_service: "Transport à la demande" -        unspecified_mrs: "Non spécifié" -        accessible: "Accessible" -        not_accessible: "Non accessible" -        unspecified_fs: "Non spécifié" -        on_demand_fs: "Service à la demande" -        regular_fs: "Service régulier" -        published_journey_name: "Nom public" -        published_journey_identifier: "Identifiant public" -        facility: "Equipement" -        vehicle_type_identifier: "Type d'identifiant du véhicule" -        time_table_ids: "Liste des calendriers" -        vehicle_journey_at_stop_ids: "Liste des horaires" -        objectid: "Identifiant Neptune" -        object_version: "Version" -        creation_time: "Créé le" -        creator_id: "Créé par" -        footnote_ids: "Notes de bas de page" -    errors: -      models: -        vehicle_journey: -          invalid_times: "Horaires invalides" -  formtastic: -    titles: -      vehicle_journey: -        objectid: "[prefixe]:VehicleJourney:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'" -      neptune: -        vehicle_journey: -          objectid: "[prefixe]:VehicleJourney:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'" -      netex: -        vehicle_journey: -          objectid: "[prefixe]:VehicleJourney:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'" -      gtfs: -        vehicle_journey: -          objectid: "[prefixe]:VehicleJourney:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'" -      hub: -        vehicle_journey: -          objectid: "[prefixe]:VehicleJourney:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'. Longueur maximale de la clé unique = 8." - diff --git a/config/routes.rb b/config/routes.rb index 29ef9eff1..b03f6ebac 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -70,7 +70,7 @@ ChouetteIhm::Application.routes.draw do              get 'new_vehicle_journey'            end          end -        resources :vehicle_journeys do +        resources :vehicle_journeys, :vehicle_journeys_frequencies do            get 'select_journey_pattern', :on => :member            resources :vehicle_translations            resources :time_tables diff --git a/db/migrate/20151015150300_create_frequencies.ninoxe_engine.rb b/db/migrate/20151015150300_create_frequencies.ninoxe_engine.rb new file mode 100644 index 000000000..152825222 --- /dev/null +++ b/db/migrate/20151015150300_create_frequencies.ninoxe_engine.rb @@ -0,0 +1,14 @@ +# This migration comes from ninoxe_engine (originally 20151015143707) +class CreateFrequencies < ActiveRecord::Migration +  def change +    create_table :frequencies do |t| +      t.references :vehicle_journey, index: true +      t.time :scheduled_headway_interval, null: false +      t.time :first_departure_time, null: false +      t.time :last_departure_time +      t.boolean :exact_time, default: false + +      t.timestamps +    end +  end +end diff --git a/db/migrate/20151022150419_add_vehicle_journey_type_to_vehicle_journey.ninoxe_engine.rb b/db/migrate/20151022150419_add_vehicle_journey_type_to_vehicle_journey.ninoxe_engine.rb new file mode 100644 index 000000000..e5af3caba --- /dev/null +++ b/db/migrate/20151022150419_add_vehicle_journey_type_to_vehicle_journey.ninoxe_engine.rb @@ -0,0 +1,6 @@ +# This migration comes from ninoxe_engine (originally 20151022150156) +class AddVehicleJourneyTypeToVehicleJourney < ActiveRecord::Migration +  def change +    add_column :vehicle_journeys, :vehicle_journey_type, :integer, null: false, default: 0 +  end +end diff --git a/db/schema.rb b/db/schema.rb index b68c3190a..8a2cdef07 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@  #  # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20150922095511) do +ActiveRecord::Schema.define(version: 20151022150419) do    # These are extensions that must be enabled in order to support this database    enable_extension "plpgsql" @@ -134,6 +134,19 @@ ActiveRecord::Schema.define(version: 20150922095511) do    add_index "delayed_jobs", ["priority", "run_at"], name: "delayed_jobs_priority", using: :btree +  create_table "exports", force: true do |t| +    t.integer  "referential_id",  limit: 8 +    t.string   "status" +    t.string   "type" +    t.string   "options" +    t.datetime "created_at" +    t.datetime "updated_at" +    t.string   "references_type" +    t.string   "reference_ids" +  end + +  add_index "exports", ["referential_id"], name: "index_exports_on_referential_id", using: :btree +    create_table "facilities", force: true do |t|      t.integer  "stop_area_id",       limit: 8      t.integer  "line_id",            limit: 8 @@ -178,6 +191,18 @@ ActiveRecord::Schema.define(version: 20150922095511) do      t.integer "footnote_id",        limit: 8    end +  create_table "frequencies", force: true do |t| +    t.integer  "vehicle_journey_id" +    t.time     "scheduled_headway_interval",                 null: false +    t.time     "first_departure_time",                       null: false +    t.time     "last_departure_time" +    t.boolean  "exact_time",                 default: false +    t.datetime "created_at" +    t.datetime "updated_at" +  end + +  add_index "frequencies", ["vehicle_journey_id"], name: "index_frequencies_on_vehicle_journey_id", using: :btree +    create_table "group_of_lines", force: true do |t|      t.string   "objectid",            null: false      t.integer  "object_version" @@ -510,7 +535,7 @@ ActiveRecord::Schema.define(version: 20150922095511) do      t.integer  "journey_pattern_id",              limit: 8      t.integer  "time_slot_id",                    limit: 8      t.integer  "company_id",                      limit: 8 -    t.string   "objectid",                                  null: false +    t.string   "objectid",                                              null: false      t.integer  "object_version"      t.datetime "creation_time"      t.string   "creator_id" @@ -524,6 +549,7 @@ ActiveRecord::Schema.define(version: 20150922095511) do      t.integer  "number",                          limit: 8      t.boolean  "mobility_restricted_suitability"      t.boolean  "flexible_service" +    t.integer  "vehicle_journey_type",                      default: 0, null: false    end    add_index "vehicle_journeys", ["objectid"], name: "vehicle_journeys_objectid_key", unique: true, using: :btree diff --git a/spec/controllers/vehicle_journeys_frequencies_controller_spec.rb b/spec/controllers/vehicle_journeys_frequencies_controller_spec.rb new file mode 100644 index 000000000..735ffe5db --- /dev/null +++ b/spec/controllers/vehicle_journeys_frequencies_controller_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe VehicleJourneysFrequenciesController, :type => :controller do + +end diff --git a/spec/helpers/vehicle_journeys_frequencies_helper_spec.rb b/spec/helpers/vehicle_journeys_frequencies_helper_spec.rb new file mode 100644 index 000000000..4c881f90f --- /dev/null +++ b/spec/helpers/vehicle_journeys_frequencies_helper_spec.rb @@ -0,0 +1,15 @@ +require 'rails_helper' + +# Specs in this file have access to a helper object that includes +# the VehicleJourneysFrequenciesHelper. For example: +# +# describe VehicleJourneysFrequenciesHelper do +#   describe "string concat" do +#     it "concats two strings with spaces" do +#       expect(helper.concat_strings("this","that")).to eq("this that") +#     end +#   end +# end +RSpec.describe VehicleJourneysFrequenciesHelper, :type => :helper do +  pending "add some examples to (or delete) #{__FILE__}" +end | 
