diff options
| -rw-r--r-- | app/models/rule_parameter_set.rb | 34 | ||||
| -rw-r--r-- | app/models/vehicle_journey_export.rb | 6 | ||||
| -rw-r--r-- | app/models/vehicle_journey_import.rb | 6 | ||||
| -rw-r--r-- | app/views/rule_parameter_sets/_form.html.erb | 29 | ||||
| -rw-r--r-- | app/views/rule_parameter_sets/_mode_fields.html.erb | 13 | ||||
| -rw-r--r-- | app/views/rule_parameter_sets/show.html.erb | 68 | ||||
| -rw-r--r-- | config/deploy.rb | 2 | ||||
| -rw-r--r-- | config/locales/compliance_check_results.yml | 21 | ||||
| -rw-r--r-- | config/locales/rule_parameter_sets.yml | 83 | ||||
| -rw-r--r-- | config/locales/transport_modes.yml | 2 | ||||
| -rw-r--r-- | config/locales/vehicle_journey_exports.yml | 4 | ||||
| -rw-r--r-- | spec/fixtures/vehicle_journey_imports_valid.csv | 2 | ||||
| -rw-r--r-- | spec/fixtures/vehicle_journey_imports_with_vj_invalid.csv | 2 | ||||
| -rw-r--r-- | spec/fixtures/vehicle_journey_imports_with_vjas_bad_order.csv | 2 | ||||
| -rw-r--r-- | spec/fixtures/vehicle_journey_imports_with_vjas_invalid.csv | 2 | 
15 files changed, 200 insertions, 76 deletions
diff --git a/app/models/rule_parameter_set.rb b/app/models/rule_parameter_set.rb index 5177d6ecc..0c7a98300 100644 --- a/app/models/rule_parameter_set.rb +++ b/app/models/rule_parameter_set.rb @@ -9,13 +9,14 @@ class RuleParameterSet < ActiveRecord::Base    attr_accessible :name, :referential_id    def self.mode_attribute_prefixes -    %w( inter_stop_area_distance_min inter_stop_area_distance_max speed_max speed_min inter_stop_duration_variation_max) +    %w( allowed_transport inter_stop_area_distance_min inter_stop_area_distance_max speed_max speed_min inter_stop_duration_variation_max)    end    def self.general_attributes      %w( inter_stop_area_distance_min parent_stop_area_distance_max stop_areas_area inter_access_point_distance_min        inter_connection_link_distance_max walk_default_speed_max        walk_occasional_traveller_speed_max walk_frequent_traveller_speed_max walk_mobility_restricted_traveller_speed_max -      inter_access_link_distance_max inter_stop_duration_max facility_stop_area_distance_max) +      inter_access_link_distance_max inter_stop_duration_max facility_stop_area_distance_max  +      vehicle_journey_number_max vehicle_journey_number_min check_allowed_transport_modes)    end    def self.all_modes      Chouette::TransportMode.all.map { |m| m.to_s} @@ -75,7 +76,8 @@ class RuleParameterSet < ActiveRecord::Base        :walk_mobility_restricted_traveller_speed_max => 1,        :inter_access_link_distance_max => 300,        :inter_stop_duration_max => 40, -      :facility_stop_area_distance_max => 300 +      :facility_stop_area_distance_max => 300, +      :check_allowed_transport_modes => false      }      if mode && self.mode_default_params[ mode.to_sym]        base.merge!( self.mode_default_params[ mode.to_sym]) @@ -85,108 +87,126 @@ class RuleParameterSet < ActiveRecord::Base    def self.mode_default_params      {      :coach => { +      :allowed_transport_mode_coach => false,        :inter_stop_area_distance_min_mode_coach => 500,        :inter_stop_area_distance_max_mode_coach => 10000,        :speed_max_mode_coach => 90,        :speed_min_mode_coach => 40,        :inter_stop_duration_variation_max_mode_coach => 20},      :air => { +      :allowed_transport_mode_air => false,        :inter_stop_area_distance_min_mode_air => 200,        :inter_stop_area_distance_max_mode_air => 10000,        :speed_max_mode_air => 800,        :speed_min_mode_air => 700,        :inter_stop_duration_variation_max_mode_air => 60},      :waterborne => { +      :allowed_transport_mode_waterborne => false,        :inter_stop_area_distance_min_mode_waterborne => 200,        :inter_stop_area_distance_max_mode_waterborne => 10000,        :speed_max_mode_waterborne => 40,        :speed_min_mode_waterborne => 5,        :inter_stop_duration_variation_max_mode_waterborne => 60},      :bus => { +      :allowed_transport_mode_bus => false,        :inter_stop_area_distance_min_mode_bus => 100,        :inter_stop_area_distance_max_mode_bus => 10000,        :speed_max_mode_bus => 60,        :speed_min_mode_bus => 10,        :inter_stop_duration_variation_max_mode_bus => 15},      :ferry => { +      :allowed_transport_mode_ferry => false,        :inter_stop_area_distance_min_mode_ferry => 200,        :inter_stop_area_distance_max_mode_ferry => 10000,        :speed_max_mode_ferry => 40,        :speed_min_mode_ferry => 5,        :inter_stop_duration_variation_max_mode_ferry => 60},      :walk => { +      :allowed_transport_mode_walk => false,        :inter_stop_area_distance_min_mode_walk => 1,        :inter_stop_area_distance_max_mode_walk => 10000,        :speed_max_mode_walk => 6,        :speed_min_mode_walk => 1,        :inter_stop_duration_variation_max_mode_walk => 10},      :metro => { +      :allowed_transport_mode_metro => false,        :inter_stop_area_distance_min_mode_metro => 300,        :inter_stop_area_distance_max_mode_metro => 2000,        :speed_max_mode_metro => 60,        :speed_min_mode_metro => 30,        :inter_stop_duration_variation_max_mode_metro => 30},      :shuttle => { +      :allowed_transport_mode_shuttle => false,        :inter_stop_area_distance_min_mode_shuttle => 500,        :inter_stop_area_distance_max_mode_shuttle => 10000,        :speed_max_mode_shuttle => 80,        :speed_min_mode_shuttle => 20,        :inter_stop_duration_variation_max_mode_shuttle => 10},      :rapid_transit => { +      :allowed_transport_mode_rapid_transit => false,        :inter_stop_area_distance_min_mode_rapid_transit => 2000,        :inter_stop_area_distance_max_mode_rapid_transit => 500000,        :speed_max_mode_rapid_transit => 300,        :speed_min_mode_rapid_transit => 20,        :inter_stop_duration_variation_max_mode_rapid_transit => 60},      :taxi => { +      :allowed_transport_mode_taxi => false,        :inter_stop_area_distance_min_mode_taxi => 500,        :inter_stop_area_distance_max_mode_taxi => 300000,        :speed_max_mode_taxi => 130,        :speed_min_mode_taxi => 20,        :inter_stop_duration_variation_max_mode_taxi => 60},      :local_train => { +      :allowed_transport_mode_local_train => false,        :inter_stop_area_distance_min_mode_local_train => 2000,        :inter_stop_area_distance_max_mode_local_train => 500000,        :speed_max_mode_local_train => 300,        :speed_min_mode_local_train => 20,        :inter_stop_duration_variation_max_mode_local_train => 60},      :train => { +      :allowed_transport_mode_train => false,        :inter_stop_area_distance_min_mode_train => 2000,        :inter_stop_area_distance_max_mode_train => 500000,        :speed_max_mode_train => 300,        :speed_min_mode_train => 20,        :inter_stop_duration_variation_max_mode_train => 60},      :long_distance_train => { +      :allowed_transport_mode_long_distance_train => false,        :inter_stop_area_distance_min_mode_long_distance_train => 2000,        :inter_stop_area_distance_max_mode_long_distance_train => 500000,        :speed_max_mode_long_distance_train => 300,        :speed_min_mode_long_distance_train => 20,        :inter_stop_duration_variation_max_mode_long_distance_train => 60},      :tramway => { +      :allowed_transport_mode_tramway => false,        :inter_stop_area_distance_min_mode_tramway => 300,        :inter_stop_area_distance_max_mode_tramway => 2000,        :speed_max_mode_tramway => 50,        :speed_min_mode_tramway => 20,        :inter_stop_duration_variation_max_mode_tramway => 30},      :trolleybus => { +      :allowed_transport_mode_trolleybus => false,        :inter_stop_area_distance_min_mode_trolleybus => 300,        :inter_stop_area_distance_max_mode_trolleybus => 2000,        :speed_max_mode_trolleybus => 50,        :speed_min_mode_trolleybus => 20,        :inter_stop_duration_variation_max_mode_trolleybus => 30},      :private_vehicle => { +      :allowed_transport_mode_private_vehicle => false,        :inter_stop_area_distance_min_mode_private_vehicle => 500,        :inter_stop_area_distance_max_mode_private_vehicle => 300000,        :speed_max_mode_private_vehicle => 130,        :speed_min_mode_private_vehicle => 20,        :inter_stop_duration_variation_max_mode_private_vehicle => 60},      :bicycle => { +      :allowed_transport_mode_bicycle => false,        :inter_stop_area_distance_min_mode_bicycle => 300,        :inter_stop_area_distance_max_mode_bicycle => 30000,        :speed_max_mode_bicycle => 40,        :speed_min_mode_bicycle => 10,        :inter_stop_duration_variation_max_mode_bicycle => 10},      :other => { +      :allowed_transport_mode_other => false,        :inter_stop_area_distance_min_mode_other => 300,        :inter_stop_area_distance_max_mode_other => 30000,        :speed_max_mode_other => 40, @@ -208,6 +228,12 @@ class RuleParameterSet < ActiveRecord::Base          :name => "valeurs par defaut"        }.merge( mode_attributes))    end +   +  def allowed(mode) +    return true unless self.check_allowed_transport_modes +    puts "#{mode} = "+self.send("allowed_transport_mode_#{mode}").to_s +    return self.send("allowed_transport_mode_#{mode}") == "1" +  end    all_modes.each do |mode|      mode_attribute_prefixes.each do |prefix| @@ -217,7 +243,7 @@ class RuleParameterSet < ActiveRecord::Base    general_attributes.each do |attribute|      parameter attribute.to_sym -    unless attribute == "stop_areas_area" +    unless attribute == "stop_areas_area" || attribute == "check_allowed_transport_modes"        validates attribute.to_sym, :numericality => true, :allow_nil => true, :allow_blank => true      end    end diff --git a/app/models/vehicle_journey_export.rb b/app/models/vehicle_journey_export.rb index 3de88b608..4c2c62fa8 100644 --- a/app/models/vehicle_journey_export.rb +++ b/app/models/vehicle_journey_export.rb @@ -54,8 +54,8 @@ class VehicleJourneyExport      (vehicle_journeys.collect{ |vj| vj.number ?  vj.number.to_s : "" } )    end -  def vehicle_identifier_array -    (vehicle_journeys.collect{ |vj| vj.vehicle_type_identifier ?  vj.vehicle_type_identifier : "" } ) +  def published_journey_name_array +    (vehicle_journeys.collect{ |vj| vj.published_journey_name ?  vj.published_journey_name : "" } )    end    def flexible_service_array @@ -82,7 +82,7 @@ class VehicleJourneyExport      CSV.generate(options) do |csv|                    csv << column_names        csv << ["", label("number")] + number_array -      csv << ["", label("vehicle_identifier")] + vehicle_identifier_array +      csv << ["", label("published_journey_name")] + published_journey_name_array        csv << ["", label("mobility")] + mobility_restricted_suitability_array        csv << ["", label("flexible_service")] + flexible_service_array        csv << ["", label("time_table_ids")] + time_tables_array diff --git a/app/models/vehicle_journey_import.rb b/app/models/vehicle_journey_import.rb index 20faef6cc..f710eeab7 100644 --- a/app/models/vehicle_journey_import.rb +++ b/app/models/vehicle_journey_import.rb @@ -96,7 +96,7 @@ class VehicleJourneyImport      # fixed rows (first = 1)      number_row = 2 -    vehicle_type_identifier_row = 3 +    published_journey_name_row = 3      mobility_row = 4      flexible_service_row = 5      time_tables_row = 6 @@ -141,8 +141,8 @@ class VehicleJourneyImport        # number        vehicle_journey.number = as_integer(spreadsheet.row(number_row)[i-1]) -      # vehicle_type_identifier -      vehicle_journey.vehicle_type_identifier = spreadsheet.row(vehicle_type_identifier_row)[i-1] +      # published_name +      vehicle_journey.published_journey_name = spreadsheet.row(published_journey_name_row)[i-1]        # flexible_service        vehicle_journey.flexible_service = as_boolean(spreadsheet.row(flexible_service_row)[i-1]) diff --git a/app/views/rule_parameter_sets/_form.html.erb b/app/views/rule_parameter_sets/_form.html.erb index 1f12d6b14..90d6850fb 100644 --- a/app/views/rule_parameter_sets/_form.html.erb +++ b/app/views/rule_parameter_sets/_form.html.erb @@ -14,10 +14,29 @@      <%= form.input :inter_access_link_distance_max, :as => :number %>      <%= form.input :inter_stop_duration_max, :as => :number %>      <%= form.input :facility_stop_area_distance_max, :as => :number %> - +     +    <%= form.input :vehicle_journey_number_min, :as => :number %> +    <%= form.input :vehicle_journey_number_max, :as => :number %> +    <%= form.input :check_allowed_transport_modes, :as => :boolean %> +     +    <table class="table table-striped table-condensed"> +    	<tr> +    		<th><%= t("transport_modes.name") %></th> +			<% RuleParameterSet.mode_attribute_prefixes.each do |prefix| %> +			    <% if prefix == "allowed_transport" %> +                  <% hidden = (@rule_parameter_set.check_allowed_transport_modes == "1") ? "" : 'display:none;'%> +            <th class="allowed" style="<%= hidden %>" ><%= RuleParameterSet.human_attribute_name(prefix) %></th> +                <% else %> +            <th><%= RuleParameterSet.human_attribute_name(prefix) %></th> +                <% end %> +			<% end %> +        </tr>      <% Chouette::Line.transport_modes.map(&:to_s).each do |mode| %> +      <tr>        <%= render :partial => "mode_fields", :locals => { :f => form, :mode => mode} %> +      </tr>      <% end %> +    </table>    <% end %>     <%= form.actions do %> @@ -25,3 +44,11 @@       <%= form.action :cancel, :as => :link %>     <% end %>  <% end %> + +<script> +	$(function() { +        $( "#rule_parameter_set_check_allowed_transport_modes").change( function(){ +            $(".allowed").toggle(); +        }); +    }); +</script> diff --git a/app/views/rule_parameter_sets/_mode_fields.html.erb b/app/views/rule_parameter_sets/_mode_fields.html.erb index 0a17b4d82..a305c4d0a 100644 --- a/app/views/rule_parameter_sets/_mode_fields.html.erb +++ b/app/views/rule_parameter_sets/_mode_fields.html.erb @@ -1,5 +1,12 @@ -<%= f.inputs t("transport_modes.label.#{mode}"), :id => "specific_parameters_#{mode}" do %> +  <td><%= t("transport_modes.label.#{mode}") %></td>    <% RuleParameterSet.mode_attribute_prefixes.each do |prefix| %> -    <%= f.input "#{prefix}_mode_#{mode}".to_sym, :as => :number, :label => RuleParameterSet.human_attribute_name(prefix), :wrapper_html => { :class => "special"} %> +    <% if prefix == "allowed_transport" %> +    <% hidden = (@rule_parameter_set.check_allowed_transport_modes == "1") ? "" : 'display: none;'%> +    <td class="allowed" style="<%= hidden %>" > +      <%= f.check_box "#{prefix}_mode_#{mode}".to_sym, :class => "special" %> +    <% else%> +    <td> +      <%= f.number_field "#{prefix}_mode_#{mode}".to_sym,  :class => "special" %> +    <% end %> +    </td>    <% end %> -<% end %> diff --git a/app/views/rule_parameter_sets/show.html.erb b/app/views/rule_parameter_sets/show.html.erb index f4ca5e912..66e002b94 100644 --- a/app/views/rule_parameter_sets/show.html.erb +++ b/app/views/rule_parameter_sets/show.html.erb @@ -4,10 +4,6 @@    <div class="summary">      <p> -      <label><%= RuleParameterSet.human_attribute_name("name") %>: </label> -      <%= @rule_parameter_set.name %> -    </p> -    <p>        <label><%= RuleParameterSet.human_attribute_name("stop_areas_area") %>: </label>        <%= @rule_parameter_set.stop_areas_area %>      </p> @@ -72,25 +68,53 @@        <label><%= t(".inter_stop_duration_max") %>: </label>        <%= @rule_parameter_set.inter_stop_duration_max %>      </p> -    <div class="rule_parameter_by_mode"> -      <label><%= t(".rule_parameter_by_mode") %>: </label> -      <select id="mode" > -        <%= options_for_select( Chouette::Line.transport_modes.map(&:to_s).map { |s| [ I18n.t("transport_modes.label.#{s}"), s]}, 1) %> -      </select> -      <% Chouette::Line.transport_modes.map(&:to_s).each_with_index do |mode, index| %> -        <% selected_class = (index==0) ? 'selected' : '' %> -        <% style = (index==0) ? "style='display: block;'" : '' %> -        <div class='<%= "#{mode} mode_specific #{selected_class}" %>' <%= style %> > -        <% RuleParameterSet.mode_attribute_prefixes.each do |prefix| %> -          <% unless @rule_parameter_set.send("#{prefix}_mode_#{mode}" ).blank? %> -            <p> -              <label><%= RuleParameterSet.human_attribute_name( prefix) %>: </label> -              <%= @rule_parameter_set.send  "#{prefix}_mode_#{mode}" %> -            </p> -          <% end %> -        <% end %> +    <% if @rule_parameter_set.vehicle_journey_number_min.present? && @rule_parameter_set.vehicle_journey_number_max.present? %> +    <div class="attributes_group" > +      <span class="title"><%= t(".vehicle_journey_number_bounds") %></span> +      <div class="columns"> +        <div class="two_columns"> +          <label><%= t(".min_value") %> : </label> +          <span class="value"><%= @rule_parameter_set.vehicle_journey_number_min %></span> +        </div> +        <div class="two_columns"> +          <label><%= t(".max_value") %> : </label> +          <span class="value"><%= @rule_parameter_set.vehicle_journey_number_max %></span> +        </div>        </div> -      <% end %> +    </div> +    <% end %> +    <p> +      <label><%= RuleParameterSet.human_attribute_name("check_allowed_transport_modes") %>: </label> +      <%= @rule_parameter_set.check_allowed_transport_modes ? t("true") : t("false") %> +    </p> + +    <div class="rule_parameter_by_mode"> +    <label><%= t(".rule_parameter_by_mode") %> +    	<%= t(".modes_allowed") if @rule_parameter_set.check_allowed_transport_modes %> +    </label> +    <table class="table table-striped table-condensed"> +    	<tr> +    		<th><%= t("transport_modes.name") %></th> +			<% RuleParameterSet.mode_attribute_prefixes.each do |prefix| %> +			    <% unless prefix == "allowed_transport" %> +            		<th><%= RuleParameterSet.human_attribute_name(prefix) %></th> +                <% end %> +			<% end %> +        </tr> +    	<% Chouette::Line.transport_modes.map(&:to_s).each do |mode| %> +	    	<% if @rule_parameter_set.allowed(mode) %> +      	<tr> +  			<td><%= t("transport_modes.label.#{mode}") %></td> +  			<% RuleParameterSet.mode_attribute_prefixes.each do |prefix| %> +	     +    			<% unless prefix == "allowed_transport" %> +    		<td><%= @rule_parameter_set.send  "#{prefix}_mode_#{mode}" %></td> +    			<% end %> +  			<% end %> +      	</tr> +    		<% end %> +    	<% end %> +    </table>      </div>    </div>  </div> diff --git a/config/deploy.rb b/config/deploy.rb index ba622453f..5d3324c74 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -12,7 +12,7 @@ set :group_writable, true  set :rake, "bundle exec rake"  set :keep_releases, 4  set :rails_env, "production" #added for delayed job -set :user, "zbouziane" +set :user, "metienne"  set :deploy_via, :copy  set :copy_via, :scp  set :copy_exclude, ".git/*" diff --git a/config/locales/compliance_check_results.yml b/config/locales/compliance_check_results.yml index cc6196e52..96ac952fe 100644 --- a/config/locales/compliance_check_results.yml +++ b/config/locales/compliance_check_results.yml @@ -96,6 +96,7 @@ en:        detail_3_stoparea_3: "Les arrêts %{name} (%{objectId} et %{areaId}) sont desservis par les mêmes lignes"        detail_3_stoparea_4: "L'arrêt %{name} (%{objectId}) est en dehors du périmètre de contrôle"        detail_3_stoparea_5: "L'arrêt %{name} (%{objectId}) est localisé trop loin de son parent %{parentName} (%{parentId}) : distance %{distance} > %{distanceLimit}" +      detail_3_stoparea_6: "L'arrêt %{name} (%{objectId}) n'a pas de code commune"        detail_3_accesspoint_1: "L'accès %{name} (%{objectId}) de l'arrêt %{areaName} (%{areaId}) n'est pas géolocalisé"        detail_3_accesspoint_2: "L'accès %{name} (%{objectId}) est localisé trop près de l'accès %{accessName} (%{accessId}) : distance %{distance} < %{distanceLimit}"        detail_3_accesspoint_3: "L'accès %{name} (%{objectId}) est localisé trop loin de son parent %{parentName} (%{parentId}) : distance %{distance} > %{distanceLimit}" @@ -113,6 +114,7 @@ en:        detail_3_accesslink_3_4: "Sur le lien d'accès %{name} (%{objectId}), la vitesse pour un voyageur à mobilité réduite %{speed} est supérieure à %{speedLimit} km/h"        detail_3_line_1: "La ligne %{number} : %{name} ( %{objectId}) a une ligne homonyme sur le même réseau %{networkName} (%{networkId})"        detail_3_line_2: "La ligne %{number} : %{name} ( %{objectId}) n'a pas de séquence d'arrêts" +      detail_3_line_3: "La ligne %{number} : %{name} ( %{objectId}) a un mode de transport interdit %{transportMode}"        detail_3_route_1: "Sur la séquence d'arrêt %{objectId}, l'arrêt %{areaName} (%{areaId}) est desservi 2 fois consécutivement"        detail_3_route_2: "Les terminus de la séquence d'arrêt %{objectId} ne sont pas cohérent avec ceux de la séquence opposée %{routeId} : l'une part de %{firstName} (%firstId}) et l'autre arrive à %{lastName} (%lastId})"        detail_3_route_3: "Sur la séquence d'arrêt %{objectId}, entre les arrêts de rang %{firstStopRank} (%{firstStop} et %{nextStopRank} (%{nextStop}, distance %{distance} %{orientation} %{distanceLimit} " @@ -129,6 +131,10 @@ en:        detail_3_vehiclejourney_2_3: "La course %{objectId} a une vitesse %{speed} > %{speedLimit} km/h entre les arrêts n° %{firstStopRank} (%{firstStopName}) et n° %{lastStopRank} (%{lastStopName})"        detail_3_vehiclejourney_3: "La course %{objectId} a une variation de progression entre les arrêts n° %{firstStopRank} (%{firstStopName}) et n° %{lastStopRank} (%{lastStopName}) %{variation} > %{maxVariation} avec la course %{vehicleJourneyId}"        detail_3_vehiclejourney_4: "La course %{objectId} n'a pas de calendrier d'application" +      detail_3_vehiclejourney_5_1: "La course %{objectId} n'a pas de numéro" +      detail_3_vehiclejourney_5_2: "La course %{objectId} a un numéro hors plage (%{number})" +      detail_3_vehiclejourney_5_3: "La course %{objectId} a un numéro partagé avec la course  %{vehicleJourneyId}" +      detail_3_vehiclejourney_6: "La course %{objectId} a un mode de transport interdit %{transportMode}"        detail_3_facility_1: "L'équipement %{name} (%{objectId}) n'est pas géolocalisé"        detail_3_facility_2: "L'équipement %{name} (%{objectId}) est localisé trop loin de son parent %{areaName} (%{areaId}) : distance %{distance} > %{distanceLimit}"    activerecord: @@ -217,6 +223,7 @@ en:          3-StopArea-3: "Vérification de l'unicité des arrêts"          3-StopArea-4: "Vérification de la géolocalisation des arrêts"          3-StopArea-5: "Vérification de la position relative des arrêts et de leur parent" +        3-StopArea-6: "Vérification de l'information de commune des arrêts"          3-AccessPoint-1: "Vérification de la géolocalisation de tous les accès"          3-AccessPoint-2: "Vérification que deux accès de nom différents ne sont pas trop proches"          3-AccessPoint-3: "Vérification de la proximité entre les accès et leur arrêt de rattachement" @@ -228,6 +235,7 @@ en:          3-AccessLink-3: "Vérification de la vitesse de parcours entre les deux extrémités d'un lien d'accès"          3-Line-1: "Vérification de la non homonymie des lignes"          3-Line-2: "Vérification de la présence de séquences d'arrêts sur la ligne" +        3-Line-3: "Vérification des modes de transport"          3-Route-1: "Vérification de la succession des arrêts de la séquence"          3-Route-2: "Vérification de la séquence inverse"          3-Route-3: "Vérification de la distance entre deux arrêts successifs de la séquence" @@ -242,6 +250,8 @@ en:          3-VehicleJourney-2: "Vérification de la vitesse de transfert entre deux arrêts"          3-VehicleJourney-3: "Vérification de la cohérence des courses successives desservant deux mêmes arrêts"          3-VehicleJourney-4: "Vérification de l'affectation des courses à un calendrier" +        3-VehicleJourney-5: "Vérification des numéros de course" +        3-VehicleJourney-6: "Vérification des modes de transport"          3-Facility-1: "Vérification de la géolocalisation de tous les accès"          3-Facility-2: "Vérification de la proximité entre les équipements et leur arrêt de rattachement"          severity: "Severity" @@ -351,6 +361,7 @@ fr:        detail_3_stoparea_3: "Les arrêts %{name} (%{objectId} et %{areaId}) sont desservis par les mêmes lignes"        detail_3_stoparea_4: "L'arrêt %{name} (%{objectId}) est en dehors du périmètre de contrôle"        detail_3_stoparea_5: "L'arrêt %{name} (%{objectId}) est localisé trop loin de son parent %{parentName} (%{parentId}) : distance %{distance} > %{distanceLimit}" +      detail_3_stoparea_6: "L'arrêt %{name} (%{objectId}) n'a pas de code commune"        detail_3_accesspoint_1: "L'accès %{name} (%{objectId}) de l'arrêt %{areaName} (%{areaId}) n'est pas géolocalisé"        detail_3_accesspoint_2: "L'accès %{name} (%{objectId}) est localisé trop près de l'accès %{accessName} (%{accessId}) : distance %{distance} < %{distanceLimit}"        detail_3_accesspoint_3: "L'accès %{name} (%{objectId}) est localisé trop loin de son parent %{parentName} (%{parentId}) : distance %{distance} > %{distanceLimit}" @@ -368,6 +379,7 @@ fr:        detail_3_accesslink_3_4: "Sur le lien d'accès %{name} (%{objectId}), la vitesse pour un voyageur à mobilité réduite %{speed} est supérieure à %{speedLimit} km/h"        detail_3_line_1: "La ligne %{number} : %{name} ( %{objectId}) a une ligne homonyme sur le même réseau %{networkName} (%{networkId})"        detail_3_line_2: "La ligne %{number} : %{name} ( %{objectId}) n'a pas de séquence d'arrêts" +      detail_3_line_3: "La ligne %{number} : %{name} ( %{objectId}) a un mode de transport interdit %{transportMode}"        detail_3_route_1: "Sur la séquence d'arrêt %{objectId}, l'arrêt %{areaName} (%{areaId}) est desservi 2 fois consécutivement"        detail_3_route_2: "Les terminus de la séquence d'arrêt %{objectId} ne sont pas cohérent avec ceux de la séquence opposée %{routeId} : l'une part de %{firstName} (%firstId}) et l'autre arrive à %{lastName} (%lastId})"        detail_3_route_3: "Sur la séquence d'arrêt %{objectId}, entre les arrêts de rang %{firstStopRank} (%{firstStop} et %{nextStopRank} (%{nextStop}, distance %{distance} %{orientation} %{distanceLimit} " @@ -384,6 +396,10 @@ fr:        detail_3_vehiclejourney_2_3: "La course %{objectId} a une vitesse %{speed} > %{speedLimit} km/h entre les arrêts n° %{firstStopRank} (%{firstStopName}) et n° %{lastStopRank} (%{lastStopName})"        detail_3_vehiclejourney_3: "La course %{objectId} a une variation de progression entre les arrêts n° %{firstStopRank} (%{firstStopName}) et n° %{lastStopRank} (%{lastStopName}) %{variation} > %{maxVariation} avec la course %{vehicleJourneyId}"        detail_3_vehiclejourney_4: "La course %{objectId} n'a pas de calendrier d'application" +      detail_3_vehiclejourney_5_1: "La course %{objectId} n'a pas de numéro" +      detail_3_vehiclejourney_5_2: "La course %{objectId} a un numéro hors plage (%{number})" +      detail_3_vehiclejourney_5_3: "La course %{objectId} a un numéro partagé avec la course  %{vehicleJourneyId}" +      detail_3_vehiclejourney_6: "La course %{objectId} a un mode de transport interdit %{transportMode}"        detail_3_facility_1: "L'équipement %{name} (%{objectId}) n'est pas géolocalisé"        detail_3_facility_2: "L'équipement %{name} (%{objectId}) est localisé trop loin de son parent %{areaName} (%{areaId}) : distance %{distance} > %{distanceLimit}" @@ -473,6 +489,7 @@ fr:          3-StopArea-3: "Vérification de l'unicité des arrêts"          3-StopArea-4: "Vérification de la géolocalisation des arrêts"          3-StopArea-5: "Vérification de la position relative des arrêts et de leur parent" +        3-StopArea-6: "Vérification de l'information de commune des arrêts"          3-AccessPoint-1: "Vérification de la géolocalisation de tous les accès"          3-AccessPoint-2: "Vérification que deux accès de nom différents ne sont pas trop proches"          3-AccessPoint-3: "Vérification de la proximité entre les accès et leur arrêt de rattachement" @@ -483,6 +500,8 @@ fr:          3-AccessLink-2: "Vérification de la cohérence entre la distance fournie sur le lien d'accès et la distance géographique entre les deux extrémités du lien d'accès"          3-AccessLink-3: "Vérification de la vitesse de parcours entre les deux extrémités d'un lien d'accès"          3-Line-1: "Vérification de la non homonymie des lignes" +        3-Line-2: "Vérification de la présence de séquences d'arrêts sur la ligne" +        3-Line-3: "Vérification des modes de transport"          3-Route-1: "Vérification de la succession des arrêts de la séquence"          3-Route-2: "Vérification de la séquence inverse"          3-Route-3: "Vérification de la distance entre deux arrêts successifs de la séquence" @@ -495,6 +514,8 @@ fr:          3-VehicleJourney-2: "Vérification de la vitesse de transfert entre deux arrêts"          3-VehicleJourney-3: "Vérification de la cohérence des courses successives desservant deux mêmes arrêts"          3-VehicleJourney-4: "Vérification de l'affectation des courses à un calendrier" +        3-VehicleJourney-5: "Vérification des numéros de course" +        3-VehicleJourney-6: "Vérification des modes de transport"          3-Facility-1: "Vérification de la géolocalisation de tous les accès"          3-Facility-2: "Vérification de la proximité entre les équipements et leur arrêt de rattachement"          severity: "Sévérité" diff --git a/config/locales/rule_parameter_sets.yml b/config/locales/rule_parameter_sets.yml index e3626fc04..b1f45c4f4 100644 --- a/config/locales/rule_parameter_sets.yml +++ b/config/locales/rule_parameter_sets.yml @@ -14,20 +14,25 @@ en:        add_mode_parameter_set: "Add mode specific parameter set"      show:        title: "Parameter Set %{rule_parameter_set}" -      max_distance: "Maximum distance" -      min_distance: "Minimum distance" -      walk_speed: "Maximum walk speed for" -      inter_stop_area_distance_min: "between 2 stop areas having different parent" -      parent_stop_area_distance_max: "between a stop area and its own parent" -      inter_access_point_distance_min: "between 2 access having different name for a commun stop area" -      inter_connection_link_distance_max: "between stop area departure and stop area arrival in a connection link" -      walk_default_speed_max: "a regular traveller" -      walk_occasional_traveller_speed_max: "an occasional traveller" -      walk_frequent_traveller_speed_max: "a frequent traveller" -      walk_mobility_restricted_traveller_speed_max: "for a mobility restricted traveller" -      inter_access_link_distance_max: "Access link maximum distance" +      max_distance: "Maximum distance between " +      min_distance: "Minimum distance between " +      walk_speed: "Maximum walk speed for travellers" +      inter_stop_area_distance_min: "2 stop areas having different parent" +      parent_stop_area_distance_max: "a stop area and its own parent" +      inter_access_point_distance_min: "2 access with different names on a same stop area" +      inter_connection_link_distance_max: "stop areas in a connection link" +      walk_default_speed_max: "a regular one" +      walk_occasional_traveller_speed_max: "an occasional one" +      walk_frequent_traveller_speed_max: "a frequent one" +      walk_mobility_restricted_traveller_speed_max: "a mobility restricted one" +      inter_access_link_distance_max: "an access point and a linked stop area"        inter_stop_duration_max: "Maximum duration between the moment when a vehicle is arriving at a stop and the moment when the vehicle is leaving" -      facility_stop_area_distance_max: "between a stop area and a facility" +      facility_stop_area_distance_max: "a stop area and a facility" +      rule_parameter_by_mode: "Parameters by mode" +      modes_allowed: " (only for allowed ones)" +      vehicle_journey_number_bounds: "Vehicle journey number limits (0,0 to disable check-point))" +      min_value: "minimal value" +      max_value: "maximal value"      index:        title: "Parameter sets"    activerecord: @@ -48,11 +53,15 @@ en:          inter_access_link_distance_max: "Access link maximum distance"          inter_stop_duration_max: "Maximum duration for a stopping time"          facility_stop_area_distance_max: "Maximum distance between a stop area and a facility" -        inter_stop_area_distance_min: "Maximum distance between a stop areas" -        inter_stop_area_distance_max: "Maximum distance between a stop areas" +        inter_stop_area_distance_min: "Maximum distance between 2 stop areas" +        inter_stop_area_distance_max: "Maximum distance between 2 stop areas"          speed_min: "Minimum speed"          speed_max: "Maximum speed" -        inter_stop_duration_variation_max: "Maximum duration gap between 2 vehicle journeys and between 2 folowing stops" +        inter_stop_duration_variation_max: "Maximum duration gap between 2 vehicle journeys and between 2 following stops" +        vehicle_journey_number_min: "Minimal value for vehicle journey numbers (empty to disable check-point)" +        vehicle_journey_number_min: "Maximal value for vehicle journey numbers (empty to disable check-point)" +        check_allowed_transport_modes: "Check transport modes" +        allowed_transport: "Allowed"  fr:    rule_parameter_sets: @@ -85,6 +94,10 @@ fr:        facility_stop_area_distance_max: "un arrêt et un équipement"        inter_stop_duration_max: "Durée maximum de stationnement à un arrêt"        rule_parameter_by_mode: "Jeu de paramètres pour un mode de transport" +      modes_allowed: " (uniquement pour les modes autorisés)" +      vehicle_journey_number_bounds: "Fouchette de valeurs pour le numéro de courses" +      min_value: "valeur minimale" +      max_value: "valeur maximale"      index:        title: "Jeux de paramètres"    activerecord: @@ -93,21 +106,25 @@ fr:      attributes:        rule_parameter_set:          name: "Nom" -        inter_stop_area_distance_min: Distance minimum entre 2 arrêts n'ayant pas le même parent -        parent_stop_area_distance_max: Distance maximum entre un arrêt et son parent -        stop_areas_area: Délimitation géographique des arrêts -        inter_access_point_distance_min: Distance minimum entre 2 accès de noms différents pour un même arrêt -        inter_connection_link_distance_max: Distance maximum entre les arrêts en correspondance -        walk_default_speed_max: Vitesse de marche maximum pour un voyageur ordinaire -        walk_occasional_traveller_speed_max: Vitesse de marche maximum pour un voyageur occasionnel -        walk_frequent_traveller_speed_max: Vitesse de marche maximum pour un voyageur habituel -        walk_mobility_restricted_traveller_speed_max: Vitesse de marche maximum pour un voyageur à mobilité réduite -        inter_access_link_distance_max: Distance maximum d'un liaison accès - arrêt -        inter_stop_duration_max: Durée maximum entre les horaires d'arrivée et de départ à un arrêt -        facility_stop_area_distance_max: Distance maximum entre un arrêt et un équipement -        inter_stop_area_distance_min: Distance minimum entre 2 arrêts -        inter_stop_area_distance_max: Distance maximum entre 2 arrêts -        speed_min: Vitesse minimum -        speed_max: Vitesse maximum -        inter_stop_duration_variation_max: Ecart maximum de durée de trajet entre 2 arrêts successifs pour les différentes courses +        inter_stop_area_distance_min: "Distance minimum entre 2 arrêts n'ayant pas le même parent" +        parent_stop_area_distance_max: "Distance maximum entre un arrêt et son parent" +        stop_areas_area: "Délimitation géographique des arrêts" +        inter_access_point_distance_min: "Distance minimum entre 2 accès de noms différents pour un même arrêt" +        inter_connection_link_distance_max: "Distance maximum entre les arrêts en correspondance" +        walk_default_speed_max: "Vitesse de marche maximum pour un voyageur ordinaire" +        walk_occasional_traveller_speed_max: "Vitesse de marche maximum pour un voyageur occasionnel" +        walk_frequent_traveller_speed_max: "Vitesse de marche maximum pour un voyageur habituel" +        walk_mobility_restricted_traveller_speed_max: "Vitesse de marche maximum pour un voyageur à mobilité réduite" +        inter_access_link_distance_max: "Distance maximum d'un liaison accès - arrêt" +        inter_stop_duration_max: "Durée maximum entre les horaires d'arrivée et de départ à un arrêt" +        facility_stop_area_distance_max: "Distance maximum entre un arrêt et un équipement" +        inter_stop_area_distance_min: "Distance minimum entre 2 arrêts" +        inter_stop_area_distance_max: "Distance maximum entre 2 arrêts" +        speed_min: "Vitesse minimum" +        speed_max: "Vitesse maximum" +        inter_stop_duration_variation_max: "Ecart maximum de durée entre 2 arrêts successifs pour les différentes courses" +        vehicle_journey_number_min: "Borne inférieur pour les numéros de course (vide pour désactiver le contrôle)" +        vehicle_journey_number_min: "Borne supérieure pour les numéros de course (vide pour désactiver le contrôle)" +        check_allowed_transport_modes: "Contrôler les modes de transport" +        allowed_transport: "Autorisé" diff --git a/config/locales/transport_modes.yml b/config/locales/transport_modes.yml index 9ed0745f7..55954abeb 100644 --- a/config/locales/transport_modes.yml +++ b/config/locales/transport_modes.yml @@ -1,5 +1,6 @@  en:    transport_modes: +    name: "Transport mode"      label:        unknown: "unknown"        air: "Air" @@ -24,6 +25,7 @@ en:  fr:    transport_modes: +    name: "Mode de transport"      label:        unknown: "Inconnu"        air: "Air" diff --git a/config/locales/vehicle_journey_exports.yml b/config/locales/vehicle_journey_exports.yml index bcfc04e9a..f8169c544 100644 --- a/config/locales/vehicle_journey_exports.yml +++ b/config/locales/vehicle_journey_exports.yml @@ -8,7 +8,7 @@ en:        number: "number"        time_table_ids: "timetables"        flexible_service: "on demand (Y(es)|N(o)|empty for unknown)" -      vehicle_identifier: "vehicle identifier" +      published_journey_name: "published name"        mobility: "wheel_chairs (Y(es)|N(o)|empty for unknown)"        stop_id: "stop id"        stop_name: "stop name" @@ -34,7 +34,7 @@ fr:        number: "numéro"        time_table_ids: "calendriers"        flexible_service: "TAD (O(ui)|N(on)|vide si inconnu)" -      vehicle_identifier: "identifiant véhicule" +      published_journey_name: "nom public"        mobility: "PMR (O(ui)|N(on)|vide si inconnu)"        stop_id: "id arrêt"        stop_name: "nom arrêt" diff --git a/spec/fixtures/vehicle_journey_imports_valid.csv b/spec/fixtures/vehicle_journey_imports_valid.csv index 13b59b102..3126ffe2b 100644 --- a/spec/fixtures/vehicle_journey_imports_valid.csv +++ b/spec/fixtures/vehicle_journey_imports_valid.csv @@ -1,6 +1,6 @@  ;id course;import:VehicleJourney:1;import:VehicleJourney:2;import:VehicleJourney:3;  ;numéro;1;2;3;4 -;identifiant véhicule;11;12;13;14 +;nom public;11;12;13;14  ;PMR (O(ui)|N(on)|vide si inconnu);Oui;;;  ;TAD (O(ui)|N(on)|vide si inconnu);Oui;;;  ;calendriers;;;; diff --git a/spec/fixtures/vehicle_journey_imports_with_vj_invalid.csv b/spec/fixtures/vehicle_journey_imports_with_vj_invalid.csv index 34fbbb6bb..7aa59009e 100644 --- a/spec/fixtures/vehicle_journey_imports_with_vj_invalid.csv +++ b/spec/fixtures/vehicle_journey_imports_with_vj_invalid.csv @@ -1,6 +1,6 @@  ;id course;9999;import:VehicleJourney:2;import:VehicleJourney:3  ;numéro;1;2;3 -;identifiant véhicule;11;12;13 +;nom public;11;12;13  ;PMR (O(ui)|N(on)|vide si inconnu);Oui;;  ;TAD (O(ui)|N(on)|vide si inconnu);Oui;;  ;calendriers;;; diff --git a/spec/fixtures/vehicle_journey_imports_with_vjas_bad_order.csv b/spec/fixtures/vehicle_journey_imports_with_vjas_bad_order.csv index 6dc20cfeb..df6b1acff 100644 --- a/spec/fixtures/vehicle_journey_imports_with_vjas_bad_order.csv +++ b/spec/fixtures/vehicle_journey_imports_with_vjas_bad_order.csv @@ -1,6 +1,6 @@  ;id course;import:VehicleJourney:1;import:VehicleJourney:2;  ;numéro;1;2;3 -;identifiant véhicule;11;12;13 +;nopm public;11;12;13  ;PMR (O(ui)|N(on)|vide si inconnu);Oui;;  ;TAD (O(ui)|N(on)|vide si inconnu);Oui;;  ;calendriers;;; diff --git a/spec/fixtures/vehicle_journey_imports_with_vjas_invalid.csv b/spec/fixtures/vehicle_journey_imports_with_vjas_invalid.csv index c7745849f..bcb07a177 100644 --- a/spec/fixtures/vehicle_journey_imports_with_vjas_invalid.csv +++ b/spec/fixtures/vehicle_journey_imports_with_vjas_invalid.csv @@ -1,6 +1,6 @@  ;id course;import:VehicleJourney:1;import:VehicleJourney:2;  ;numéro;1;2;3 -;identifiant véhicule;11;12;13 +;nom public;11;12;13  ;PMR (O(ui)|N(on)|vide si inconnu);Oui;;  ;TAD (O(ui)|N(on)|vide si inconnu);Oui;;  ;calendriers;;;;  | 
