diff options
40 files changed, 650 insertions, 315 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/javascripts/vehicle_journeys_frequencies.js.coffee b/app/assets/javascripts/vehicle_journeys_frequencies.js.coffee new file mode 100644 index 000000000..24f83d18b --- /dev/null +++ b/app/assets/javascripts/vehicle_journeys_frequencies.js.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ 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..0fa69f77d --- /dev/null +++ b/app/assets/stylesheets/main/vehicle_journeys_frequencies.scss @@ -0,0 +1,43 @@ +#workspace { + .ce-TimeBandFormTable { + border-left: 1px solid #616161; + } + .ce-TimeBandFormTable tr:hover td { + background-color: #eee; + } + .ce-TimeBandFormTable td { + padding: 0 20px 8px 20px; + vertical-align: top; + } + .ce-TimeBandFormTable tr:last-child td { + padding-bottom: 0; + } + .ce-TimeBandFormTable td:last-child { + text-align: right; + } + .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-circle { + position: relative; + z-index: 999; + display: block; + width: 16px; + height: 16px; + border-radius: 8px; + background-color: #4d7809; + } + .ce-TimeBandFormTable-subList { + + } +} 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..03dfbedc2 100644 --- a/app/controllers/vehicle_journeys_controller.rb +++ b/app/controllers/vehicle_journeys_controller.rb @@ -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] }, + { frequency: [ :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..a16523316 --- /dev/null +++ b/app/controllers/vehicle_journeys_frequencies_controller.rb @@ -0,0 +1,30 @@ +class VehicleJourneysFrequenciesController < VehicleJourneysController + + defaults :resource_class => Chouette::VehicleJourney, :collection_name => 'vehicle_journeys', :instance_name => 'vehicle_journey' + + def new + new! do + resource.frequencies.build + end + end + + protected + + def build_resource + set_frequency(super) + end + + def resource + set_frequency(super) + end + + private + + def set_frequency(s) + s.tap do |vehicle_journey| + vehicle_journey.is_frequency = true + end + end + +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..2f0a66cfe 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' %> <% end %> <%= form.actions do %> - <%= form.action :submit, :as => :button %> - <%= form.action :cancel, :as => :link %> + <%= form.action :submit, as: :button, label: t(".submit#{'_frequency' if @vehicle_journey.is_frequency}") %> + <%= 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..66351e654 --- /dev/null +++ b/app/views/vehicle_journeys_frequencies/_form_vehicle_journey_at_stops.html.erb @@ -0,0 +1,32 @@ +<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> +<li class="input"> + <label class="label"></label> + <table> + <thead> + <tr> + <th><%= t('frequencies.time_band') %></th> + <th><%= t('frequencies.first_departure') %></th> + <th><%= t('frequencies.last_departure') %></th> + <th><%= t('frequencies.scheduled_headway_interval') %></th> + <th><%= t('frequencies.exact_time') %></th> + <th></th> + </tr> + </thead> + <tbody> + <%= render partial: 'frequency', collection: @vehicle_journey.frequencies, as: :frequency %> + </tbody> + <tfoot> + <tr> + <td></td> + <td colspan="5"></td> + </tr> + </tfoot> + </table> +</li> diff --git a/app/views/vehicle_journeys_frequencies/_frequency.html.erb b/app/views/vehicle_journeys_frequencies/_frequency.html.erb new file mode 100644 index 000000000..a0d4d3ca5 --- /dev/null +++ b/app/views/vehicle_journeys_frequencies/_frequency.html.erb @@ -0,0 +1,8 @@ +<tr> + <td></td> + <td><%= frequency.first_departure_time %></td> + <td><%= frequency.last_departure_time %></td> + <td><%= frequency.scheduled_headway_interval %></td> + <td><%= frequency.exact_time %></td> + <td><i class="fa fa-trash"></i></td> +</tr> 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..c741cfc47 --- /dev/null +++ b/config/locales/frequencies.en.yml @@ -0,0 +1,7 @@ +en: + frequencies: + time_band: Time band + first_departure: First departure + last_departure: Last departure + scheduled_headway_interval: Interval + exact_time: Exact? diff --git a/config/locales/frequencies.fr.yml b/config/locales/frequencies.fr.yml new file mode 100644 index 000000000..df1edd58d --- /dev/null +++ b/config/locales/frequencies.fr.yml @@ -0,0 +1,7 @@ +fr: + frequencies: + time_band: Plages horaires + first_departure: Premier départ + last_departure: Dernier départ + scheduled_headway_interval: Intervalle + exact_time: Exact ? 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/schema.rb b/db/schema.rb index b68c3190a..864bd4372 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: 20151015150300) 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" 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 |
