From c62096215aa1b98f79e81ea8a1271814d14d6ca0 Mon Sep 17 00:00:00 2001 From: Michel Etienne Date: Wed, 27 Jun 2012 23:07:32 +0200 Subject: add file validation --- app/views/layouts/application.html.erb | 1 + config/routes.rb | 3 +++ 2 files changed, 4 insertions(+) diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 437aad3a7..bf3c20694 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -35,6 +35,7 @@
  • <%= link_to "Aide", help_path, :class => "current" %>
  • <% elsif ! selected_referential? %>
  • <%= tab_link_to Referential, referentials_path, :class => "current" %>
  • +
  • <%= tab_link_to FileValidation, file_validations_path, :class => "current" %>
  • <% else %>
  • <%= link_to t("layouts.tabs.dashboard"), referential_path(@referential), :class => ("current" if current_page?(referential_path(@referential))) %>
  • <%= tab_link_to Chouette::Network, referential_networks_path(@referential) %>
  • diff --git a/config/routes.rb b/config/routes.rb index 620c1d879..01995f0ed 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -14,6 +14,9 @@ ChouetteIhm::Application.routes.draw do # Sample resource route (maps HTTP verbs to controller actions automatically): # resources :products + + resources :file_validations + resources :referentials do resources :stop_point_areas match 'lines' => 'lines#destroy_all', :via => :delete -- cgit v1.2.3 From 0412d82c225ddd47e3c0436ae5d421b1098d2fa0 Mon Sep 17 00:00:00 2001 From: Michel Etienne Date: Mon, 2 Jul 2012 08:11:29 +0200 Subject: add file validation --- app/assets/images/severity-error.png | Bin 1857 -> 1223 bytes app/assets/images/severity-warning.png | Bin 1445 -> 965 bytes app/assets/stylesheets/file_validations.css.scss | 136 ++++++++ app/assets/stylesheets/multiple_selection.scss | 4 +- app/controllers/file_validations_controller.rb | 17 + app/models/file_validation.rb | 211 +++++++++++++ app/models/file_validation_log_message.rb | 68 ++++ app/views/exports/new.html.erb | 9 +- app/views/file_validations/_file_validation.erb | 13 + app/views/file_validations/index.html.erb | 20 ++ app/views/file_validations/new.html.erb | 45 +++ app/views/file_validations/show.html.erb | 149 +++++++++ app/views/help/faq.textile | 6 + app/views/help/schema.textile | 6 + app/views/help/toc.textile | 2 + app/views/imports/new.html.erb | 9 +- app/views/layouts/application.html.erb | 4 +- app/views/routes/_route.html.erb | 1 - app/views/stop_areas/add_routing_lines.html.erb | 9 +- app/views/stop_areas/add_routing_stops.html.erb | 9 +- app/views/time_table_dates/_form.html.erb | 2 +- app/views/time_table_periods/_form.html.erb | 4 +- app/views/time_tables/_form.erb | 3 +- config/environments/production.rb | 1 + config/locales/exports.yml | 2 + config/locales/file_validations.yml | 343 +++++++++++++++++++++ config/locales/formtastic.yml | 21 +- config/locales/referentials.yml | 8 +- .../20120620081726_create_file_validations.rb | 15 + ...20081755_create_file_validation_log_messages.rb | 18 ++ db/schema.rb | 50 ++- 31 files changed, 1143 insertions(+), 42 deletions(-) create mode 100644 app/assets/stylesheets/file_validations.css.scss create mode 100644 app/controllers/file_validations_controller.rb create mode 100644 app/models/file_validation.rb create mode 100644 app/models/file_validation_log_message.rb create mode 100644 app/views/file_validations/_file_validation.erb create mode 100644 app/views/file_validations/index.html.erb create mode 100644 app/views/file_validations/new.html.erb create mode 100644 app/views/file_validations/show.html.erb create mode 100644 app/views/help/faq.textile create mode 100644 app/views/help/schema.textile create mode 100644 config/locales/file_validations.yml create mode 100644 db/migrate/20120620081726_create_file_validations.rb create mode 100644 db/migrate/20120620081755_create_file_validation_log_messages.rb diff --git a/app/assets/images/severity-error.png b/app/assets/images/severity-error.png index 516a4d61a..8dd9d2968 100644 Binary files a/app/assets/images/severity-error.png and b/app/assets/images/severity-error.png differ diff --git a/app/assets/images/severity-warning.png b/app/assets/images/severity-warning.png index 661327276..42da3a6f6 100644 Binary files a/app/assets/images/severity-warning.png and b/app/assets/images/severity-warning.png differ diff --git a/app/assets/stylesheets/file_validations.css.scss b/app/assets/stylesheets/file_validations.css.scss new file mode 100644 index 000000000..c2723a4f6 --- /dev/null +++ b/app/assets/stylesheets/file_validations.css.scss @@ -0,0 +1,136 @@ +@import "common"; + +#workspace.file_validations.index +{ + .file_validation:after { + @include after_div_for_object; + } + + .file_validations { + margin-top: 20px; + } + + .file_validations:after { + @include content_to_clear; + } + + .file_validation { + @include div_for_object; + + /* to create multi-column index */ + width: 300px; + float: left; + padding-right: 10px; + } +} + +#workspace.file_validations.show { + .file_validation_show { + width: 95% + } + .panelDataSection + { + font-size: 14px; + padding: 3px 0px 3px 20px; + BACKGROUND-COLOR: #FaFaFa; + margin: 10px 0px 0px 0px; + BORDER-LEFT: 1px solid #B0BCD6; + BORDER-RIGHT: 1px solid #B0BCD6; + BORDER-TOP: 1px solid #B0BCD6; + FONT-WEIGHT: bold; + } + .neptune-panel{ + font-family: Arial, Verdana, Helvetica, sans-serif; + font-size: 13px; + background-color: #FFFFFF; + margin: 0px 0px 2px 0px; + padding: 10px 10px 10px 10px; + border: 1px solid #B0BCD6; + table { + border: 0px; + td { + padding: 20px; + } + } + } + .category{ + font-weight: bold; + } + + +.ok{ + background: url(image-path('severity-ok.png')) no-repeat 98% 0%; + } + +.uncheck { + background: url(image-path('severity-uncheck.png')) no-repeat 98% 0%; + } + +.warning{ + background: url(image-path('severity-warning.png')) no-repeat 98% 0%; + } + +.error{ + background: url(image-path('severity-error.png')) no-repeat 98% 0%; + color: red; + } +.fatal{ + background: url(image-path('severity-fatal.png')) no-repeat 98% 0%; + color: red; + } + +.step { + width: 80%; + padding-left:100px; + margin-top:-15px; +} +.detail { + margin: 0 0 0 660px; + padding: 5px 0 0 0; + } +.neptune-panel-inSide +{ + background-color: #FFFFFF; + padding: 5px 5px; + margin:0 0 5px 100px; + width: 80%; + font-size: 12px; + border: 1px solid #B0BCD6; +} +} + +#workspace.file_validations.new { + padding: 0; + margin-top: -0.3em; + margin-bottom: 1em; + + + + .inputs ol { + margin-top: -0.3em; + margin-bottom: 1em; + padding: 0; + width: 100%; + } + .inputs ol li { padding : 0.3em 0; } + + .inputs ol li textarea { + width: 54%; + } + .inputs ol li label { + width: 40%; + margin-top: -0.3em; + } + + .inputs ol li.fl label { width: 40%; margin-top: -0.3em; } + .inputs ol li.fl input { width: 21%; padding: 0; } + + .inputs ol li.fl1 {float: left; width: 70% ;} + .inputs ol li.fl1 label {width: 57%; margin-top: -0.3em; } + .inputs ol li.fl1 input { width: 30%; } + + .inputs ol li.fl2 {float: left; width: 25% ;} + .inputs ol li.fl2 label {width: 10%; margin-top: -0.3em;} + .inputs ol li.fl2 input { width: 85%; } + +} diff --git a/app/assets/stylesheets/multiple_selection.scss b/app/assets/stylesheets/multiple_selection.scss index f3792d902..02f0dc513 100644 --- a/app/assets/stylesheets/multiple_selection.scss +++ b/app/assets/stylesheets/multiple_selection.scss @@ -1,7 +1,7 @@ input[type=checkbox].multiple_selection { - margin-left: 25px; + margin-left: 0px; position: absolute; - top: 50px; + top: 0px; } #multiple_selection_menu { diff --git a/app/controllers/file_validations_controller.rb b/app/controllers/file_validations_controller.rb new file mode 100644 index 000000000..0f0dcf71b --- /dev/null +++ b/app/controllers/file_validations_controller.rb @@ -0,0 +1,17 @@ +class FileValidationsController < InheritedResources::Base + respond_to :html, :xml, :json + + + def create + create! do |success, failure| + success.html { redirect_to file_validations_path } + end + end + + protected + + def collection + @file_validations ||= end_of_association_chain.paginate(:page => params[:page]) + end + +end diff --git a/app/models/file_validation.rb b/app/models/file_validation.rb new file mode 100644 index 000000000..26f2b2e90 --- /dev/null +++ b/app/models/file_validation.rb @@ -0,0 +1,211 @@ +class FileValidation < ActiveRecord::Base + validates_presence_of :resources + + validates_inclusion_of :status, :in => %w{ pending completed failed } + + attr_accessor :resources,:uncheck_count,:ok_count,:warning_count,:error_count,:fatal_count,:log_message_tree + attr_accessor :validator + + has_many :log_messages, :class_name => "FileValidationLogMessage", :order => :position, :dependent => :destroy + + serialize :options + + def self.option(name) + name = name.to_s + + define_method(name) do + self.options[name] + end + + define_method("#{name}=") do |prefix| + self.options[name] = prefix + end + end + + def options + read_attribute(:options) || write_attribute(:options, {}) + end + + option :test3_1_minimal_distance + option :test3_2_minimal_distance + option :test3_2_polygon_points + option :test3_7_minimal_distance + option :test3_7_maximal_distance + option :test3_8a_minimal_speed + option :test3_8a_maximal_speed + option :test3_8b_minimal_speed + option :test3_8b_maximal_speed + option :test3_8c_minimal_speed + option :test3_8c_maximal_speed + option :test3_8d_minimal_speed + option :test3_8d_maximal_speed + option :test3_9_minimal_speed + option :test3_9_maximal_speed + option :test3_10_minimal_distance + option :test3_15_minimal_time + option :test3_16_1_maximal_time + option :test3_16_3a_maximal_time + option :test3_16_3b_maximal_time + option :test3_21a_minimal_speed + option :test3_21a_maximal_speed + option :test3_21b_minimal_speed + option :test3_21b_maximal_speed + option :test3_21c_minimal_speed + option :test3_21c_maximal_speed + option :test3_21d_minimal_speed + option :test3_21d_maximal_speed + option :projection_reference + + def validator + @validator ||= ::Chouette::FileValidator.new("public") + end + + def with_original_filename + Dir.mktmpdir do |tmp_dir| + tmp_link = File.join(tmp_dir, resources.original_filename) + FileUtils.ln_s resources.path, tmp_link + yield tmp_link + end + end + + before_validation :define_default_attributes, :on => :create + def define_default_attributes + self.status ||= "pending" + end + + after_validation :extract_file_type, :on => :create + def extract_file_type + if !resources.original_filename.nil? + self.file_type = resources.original_filename.rpartition(".").last + self.file_name = resources.original_filename + end + end + + after_create :delayed_validate + def delayed_validate + save_resources + delay.validate + end + + @@root = "#{Rails.root}/tmp/validations" + cattr_accessor :root + + def save_resources + FileUtils.mkdir_p root + FileUtils.cp resources.path, saved_resources + end + + after_destroy :destroy_resources + def destroy_resources + FileUtils.rm saved_resources if File.exists? saved_resources + end + + def saved_resources + "#{root}/#{id}.#{file_type}" + end + + def name + "#{FileValidation.model_name.humanize} #{id}" + end + + def validation_options + { :validation_id => self.id , + :file_format => self.file_type , + :test3_1_minimal_distance => self.test3_1_minimal_distance , + :test3_2_minimal_distance => self.test3_2_minimal_distance , + :test3_2_polygon_points => self.test3_2_polygon_points , + :test3_7_minimal_distance => self.test3_7_minimal_distance , + :test3_7_maximal_distance => self.test3_7_maximal_distance , + :test3_8a_minimal_speed => self.test3_8a_minimal_speed , + :test3_8a_maximal_speed => self.test3_8a_maximal_speed , + :test3_8b_minimal_speed => self.test3_8b_minimal_speed , + :test3_8b_maximal_speed => self.test3_8b_maximal_speed , + :test3_8c_minimal_speed => self.test3_8c_minimal_speed , + :test3_8c_maximal_speed => self.test3_8c_maximal_speed , + :test3_8d_minimal_speed => self.test3_8d_minimal_speed , + :test3_8d_maximal_speed => self.test3_8d_maximal_speed , + :test3_9_minimal_speed => self.test3_9_minimal_speed , + :test3_9_maximal_speed => self.test3_9_maximal_speed , + :test3_10_minimal_distance => self.test3_10_minimal_distance , + :test3_15_minimal_time => self.test3_15_minimal_time , + :test3_16_1_maximal_time => self.test3_16_1_maximal_time , + :test3_16_3a_maximal_time => self.test3_16_3a_maximal_time , + :test3_16_3b_maximal_time => self.test3_16_3b_maximal_time , + :test3_21a_minimal_speed => self.test3_21a_minimal_speed , + :test3_21a_maximal_speed => self.test3_21a_maximal_speed , + :test3_21b_minimal_speed => self.test3_21b_minimal_speed , + :test3_21b_maximal_speed => self.test3_21b_maximal_speed , + :test3_21c_minimal_speed => self.test3_21c_minimal_speed , + :test3_21c_maximal_speed => self.test3_21c_maximal_speed , + :test3_21d_minimal_speed => self.test3_21d_minimal_speed , + :test3_21d_maximal_speed => self.test3_21d_maximal_speed , + :projection_reference => self.projection_reference + } + end + + def validate + begin + # log_messages.create :key => :started + if resources + with_original_filename do |file| + # chouette-command checks the file extension (and requires .zip) :( + validator.validate file, validation_options + end + else + validator.validate saved_resources, validation_options + end + update_attribute :status, "completed" + rescue => e + Rails.logger.error "Validation #{id} failed : #{e}, #{e.backtrace}" + update_attribute :status, "failed" + end + # log_messages.create :key => status + end + + after_find :compute_tests + def compute_tests + if status == 'completed' + self.uncheck_count = 0 + self.ok_count = 0 + self.warning_count = 0 + self.error_count = 0 + self.fatal_count = 0 + self.log_message_tree = Array.new + father1=nil + father2=nil + father3=nil + log_messages.each do |message| + if message.level == 1 + self.log_message_tree << message + father1=message + elsif message.level == 2 + father1.add_child message + father2=message + elsif message.level == 3 + father2.add_child message + father3=message + if message.severity == 'uncheck' + self.uncheck_count += 1 + end + if message.severity == 'ok' + self.ok_count += 1 + end + if message.severity == 'warning' + self.warning_count += 1 + end + if message.severity == 'error' + self.error_count += 1 + end + if message.severity == 'fatal' + self.fatal_count += 1 + end + elsif message.level == 4 + father3.add_child message + end + end + end + + end + + +end diff --git a/app/models/file_validation_log_message.rb b/app/models/file_validation_log_message.rb new file mode 100644 index 000000000..4159bb7d0 --- /dev/null +++ b/app/models/file_validation_log_message.rb @@ -0,0 +1,68 @@ +class FileValidationLogMessage < ActiveRecord::Base + belongs_to :file_validation + acts_as_list :scope => :file_validation + + attr_accessor :children + + validates_presence_of :key + validates_inclusion_of :severity, :in => %w{info warning error ok uncheck fatal} + + def arguments=(arguments) + write_attribute :arguments, (arguments.to_json if arguments.present?) + end + + def arguments + @decoded_arguments ||= + begin + if (stored_arguments = raw_attributes).present? + ActiveSupport::JSON.decode stored_arguments + else + {} + end + end + end + + def raw_attributes + read_attribute(:arguments) + end + + before_validation :define_default_attributes, :on => :create + def define_default_attributes + self.severity ||= "info" + end + + def level + last_key=key.rpartition("|").last + if last_key == 'TooMuchDetails' + 4 + else + last_key.count("_") + 1 + end + end + + def full_message + last_key=key.rpartition("|").last + I18n.translate last_key, arguments.symbolize_keys.merge(:scope => "file_validation_log_messages.messages").merge(:default => :undefined).merge(:key => last_key) + end + + def label + last_key=key.rpartition("|").last + label = "" + last_key.split("_").each do |tag| + if (tag.start_with?("Test")) + label = tag.delete("Test") + else + label += "."+tag.delete("Sheet").delete("Step") + end + end + label + end + + def add_child(child) + if self.children.nil? + self.children = Array.new + end + self.children << child + end + +end diff --git a/app/views/exports/new.html.erb b/app/views/exports/new.html.erb index 16c6e9720..82409955b 100644 --- a/app/views/exports/new.html.erb +++ b/app/views/exports/new.html.erb @@ -9,11 +9,10 @@ <% end %> <% end %> - <%= form.buttons do %> - <%= form.commit_button true %> -
  • <%= t('or') %>
  • -
  • <%= link_to t('cancel'), :back %>
  • - <% end %> + <%= form.actions do %> + <%= form.action :submit, :as => :button , :label => t( 'formtastic.export' ) %> + <%= form.action :cancel, :as => :link %> + <% end %> <% end %> <%= javascript_include_tag new_referential_export_path(@referential, :format => :js) %> diff --git a/app/views/file_validations/_file_validation.erb b/app/views/file_validations/_file_validation.erb new file mode 100644 index 000000000..3e895f445 --- /dev/null +++ b/app/views/file_validations/_file_validation.erb @@ -0,0 +1,13 @@ +<%= div_for(file_validation, :class => :file_validation) do %> + <%= link_to(file_validation_path(file_validation), :class => "preview") do %> + <%= image_tag "file-validation-#{file_validation.status}.png" %> + <% end %> + <%= link_to(file_validation.name, file_validation_path(file_validation)) %> +
    + <%= l file_validation.created_at %>
    + <%= file_validation.file_name %> +
    + <%= link_to t("actions.destroy"), file_validation_path(file_validation), :method => :delete, :confirm => t('file_validations.actions.destroy_confirm'), :class => "remove" %> +
    +
    +<% end %> diff --git a/app/views/file_validations/index.html.erb b/app/views/file_validations/index.html.erb new file mode 100644 index 000000000..e1416fa96 --- /dev/null +++ b/app/views/file_validations/index.html.erb @@ -0,0 +1,20 @@ +<%= title_tag t('.title') %> + + +
    + <%= render :partial => "file_validation", :collection => @file_validations %> +
    + + +<% content_for :sidebar do %> + +<% end %> diff --git a/app/views/file_validations/new.html.erb b/app/views/file_validations/new.html.erb new file mode 100644 index 000000000..d02584e52 --- /dev/null +++ b/app/views/file_validations/new.html.erb @@ -0,0 +1,45 @@ +<%= title_tag t(".title") %> + +<%= semantic_form_for [@file_validation], :as => :file_validation, :url => file_validations_path() do |form| %> + <%= form.inputs do %> + <%= form.input :resources, :as => :file %> + <%= form.input :test3_1_minimal_distance, :as => :number,:input_html => { :value => '10.0' }, :wrapper_html => { :class => 'fl' } %> + <%= form.input :test3_2_minimal_distance, :as => :number,:input_html => { :value => '10.0' }, :wrapper_html => { :class => 'fl' } %> + <%= form.input :test3_2_polygon_points , :as => :text ,:input_html => { :rows => '4', :value => '2.303466,51.399206 8.411865,49.05227 7.950439,43.34116 3.138427,41.869561 -2.376709,43.2932 -5.848389,48.705463' }%> + <%= form.input :test3_7_minimal_distance, :as => :number ,:input_html => { :value => '50.0' }, :wrapper_html => { :class => 'fl1' } %> + <%= form.input :test3_7_maximal_distance, :as => :number ,:input_html => { :value => '15000.0' },:wrapper_html => { :class => 'fl2' } %> + <%= form.input :test3_8a_minimal_speed, :as => :number ,:input_html => { :value => '3.0' }, :wrapper_html => { :class => 'fl1' } %> + <%= form.input :test3_8a_maximal_speed, :as => :number ,:input_html => { :value => '6.0' }, :wrapper_html => { :class => 'fl2' } %> + <%= form.input :test3_8b_minimal_speed, :as => :number ,:input_html => { :value => '4.0' }, :wrapper_html => { :class => 'fl1' } %> + <%= form.input :test3_8b_maximal_speed, :as => :number ,:input_html => { :value => '7.0' }, :wrapper_html => { :class => 'fl2' } %> + <%= form.input :test3_8c_minimal_speed, :as => :number ,:input_html => { :value => '2.0' }, :wrapper_html => { :class => 'fl1' } %> + <%= form.input :test3_8c_maximal_speed, :as => :number ,:input_html => { :value => '5.0' }, :wrapper_html => { :class => 'fl2' } %> + <%= form.input :test3_8d_minimal_speed, :as => :number ,:input_html => { :value => '1.0' }, :wrapper_html => { :class => 'fl1' } %> + <%= form.input :test3_8d_maximal_speed, :as => :number ,:input_html => { :value => '4.0' }, :wrapper_html => { :class => 'fl2' } %> + <%= form.input :test3_9_minimal_speed, :as => :number ,:input_html => { :value => '5.0' }, :wrapper_html => { :class => 'fl1' } %> + <%= form.input :test3_9_maximal_speed, :as => :number ,:input_html => { :value => '45.0' }, :wrapper_html => { :class => 'fl2' } %> + <% end %> + <%= form.inputs do %> + <%= form.input :test3_10_minimal_distance, :as => :number ,:input_html => { :value => '50.0' }, :wrapper_html => { :class => 'fl' } %> + <%= form.input :test3_15_minimal_time, :as => :number,:input_html => { :value => '1' }, :wrapper_html => { :class => 'fl' } %> + <%= form.input :test3_16_1_maximal_time, :as => :number,:input_html => { :value => '120' }, :wrapper_html => { :class => 'fl' } %> + <%= form.input :test3_16_3a_maximal_time, :as => :number ,:input_html => { :value => '600' }, :wrapper_html => { :class => 'fl' } %> + <%= form.input :test3_16_3b_maximal_time, :as => :number ,:input_html => { :value => '300' }, :wrapper_html => { :class => 'fl' } %> + <%= form.input :test3_21a_minimal_speed, :as => :number ,:input_html => { :value => '3.0' }, :wrapper_html => { :class => 'fl1' } %> + <%= form.input :test3_21a_maximal_speed, :as => :number ,:input_html => { :value => '6.0' }, :wrapper_html => { :class => 'fl2' } %> + <%= form.input :test3_21b_minimal_speed, :as => :number ,:input_html => { :value => '4.0' }, :wrapper_html => { :class => 'fl1' } %> + <%= form.input :test3_21b_maximal_speed, :as => :number ,:input_html => { :value => '7.0' }, :wrapper_html => { :class => 'fl2' } %> + <%= form.input :test3_21c_minimal_speed, :as => :number ,:input_html => { :value => '2.0' }, :wrapper_html => { :class => 'fl1' } %> + <%= form.input :test3_21c_maximal_speed, :as => :number ,:input_html => { :value => '2.0' }, :wrapper_html => { :class => 'fl2' } %> + <%= form.input :test3_21d_minimal_speed, :as => :number ,:input_html => { :value => '1.0' }, :wrapper_html => { :class => 'fl1' } %> + <%= form.input :test3_21d_maximal_speed, :as => :number ,:input_html => { :value => '4.0' }, :wrapper_html => { :class => 'fl2' } %> + <% end %> + <%= form.inputs do %> + <%= form.input :projection_reference ,:input_html => { :value => 'WGS84' }, :wrapper_html => { :class => 'fl' } %> + <% end %> + + <%= form.actions do %> + <%= form.action :submit, :as => :button , :label => t( 'formtastic.validate' ) %> + <%= form.action :cancel, :as => :link %> + <% end %> +<% end %> diff --git a/app/views/file_validations/show.html.erb b/app/views/file_validations/show.html.erb new file mode 100644 index 000000000..5a63c9c81 --- /dev/null +++ b/app/views/file_validations/show.html.erb @@ -0,0 +1,149 @@ +<%= title_tag @file_validation.name %> + +
    +
    <%= t(".summary") %>
    + +
    + + <%= l @file_validation.created_at %>
    + + <%= t @file_validation.status, :scope => "file_validations.statuses" %>
    + + <%= @file_validation.file_name %>
    +
    +
    + <% if @file_validation.status == 'completed' %> + + + + + + + + + + +
    <%= image_tag "severity-uncheck.png" , :alt => t("uncheck", :scope => "file_validation_log_messages.severities") %> + <%= t( "file_validations.uncheck_count" , :count => @file_validation.uncheck_count )%> + <%= image_tag "severity-ok.png" , :alt => t("ok", :scope => "file_validation_log_messages.severities") %> + <%= t( "file_validations.ok_count" , :count => @file_validation.ok_count )%> + <%= image_tag "severity-warning.png" , :alt => t("warning", :scope => "file_validation_log_messages.severities") %> + <%= t( "file_validations.warning_count" , :count => @file_validation.warning_count )%> + <%= image_tag "severity-error.png" , :alt => t("error", :scope => "file_validation_log_messages.severities") %> + <%= t( "file_validations.error_count" , :count => @file_validation.error_count )%> + <%= image_tag "severity-fatal.png" , :alt => t("fatal", :scope => "file_validation_log_messages.severities") %> + <%= t( "file_validations.fatal_count" , :count => @file_validation.fatal_count )%> +
    + <% end %> +
    +<% if @file_validation.status == 'completed' %> +

    <%= t(".details") %>

    + <% @file_validation.log_message_tree.each do |message1| %> + +
    + <% message1.children.each do |message2| %> +
    <%= message2.full_message %>
    +
    + <% message2.children.each do |message3| %> +
    +
    + +
    +
    + <%= message3.full_message %> +
    +
    + <% if !message3.children.nil? %> +
    +
    +
      + <% message3.children.each do |message4| %> +
    1. <%= message4.full_message %>
    2. +
      + <% end %> +
    +
    + <% end %> + <% end %> +
    + <% end %> +
    + <% end %> +
    <%= t(".parameters") %>
    +
    + + +
    + + +
    + + +
    + + / + +
    + + / + +
    + + / + +
    + + / + +
    + + / + +
    + + / + +
    + + +
    + + +
    + + +
    + + +
    + + +
    + + / + +
    + + / + +
    + + / + +
    + + / + +
    + + + +
    + + <% end %> +
    +<% content_for :sidebar do %> + +<% end %> diff --git a/app/views/help/faq.textile b/app/views/help/faq.textile new file mode 100644 index 000000000..5fb8cfa9a --- /dev/null +++ b/app/views/help/faq.textile @@ -0,0 +1,6 @@ +--- +layout: default +title: Foire aux questions +--- + +Rédaction ultérieure \ No newline at end of file diff --git a/app/views/help/schema.textile b/app/views/help/schema.textile new file mode 100644 index 000000000..ffefaa680 --- /dev/null +++ b/app/views/help/schema.textile @@ -0,0 +1,6 @@ +--- +layout: default +title: Vue d'ensemble +--- + +Rédaction ultérieure \ No newline at end of file diff --git a/app/views/help/toc.textile b/app/views/help/toc.textile index 1ce35cac2..2c2bd096c 100644 --- a/app/views/help/toc.textile +++ b/app/views/help/toc.textile @@ -8,6 +8,7 @@ h3. Sommaire # "Généralités":introduction ## "Normalisation":normalisation ## "Documentation":documentation +## "Vue d'ensemble":schema # "Espaces de données":dataspaces # "Réseaux":networks # "Transporteurs":companies @@ -26,4 +27,5 @@ h3. Sommaire ## Validation # Divers ## "API Rest":restapis +## "FAQ":faq diff --git a/app/views/imports/new.html.erb b/app/views/imports/new.html.erb index 1b797b0d6..206967073 100644 --- a/app/views/imports/new.html.erb +++ b/app/views/imports/new.html.erb @@ -18,10 +18,9 @@ <%= form.input :resources, :as => :file %> <% end %> - <%= form.buttons do %> - <%= form.commit_button true %> -
  • <%= t('or') %>
  • -
  • <%= link_to t('cancel'), :back %>
  • - <% end %> + <%= form.actions do %> + <%= form.action :submit, :as => :button , :label => t( 'formtastic.import' ) %> + <%= form.action :cancel, :as => :link %> + <% end %> <% end %> <% end %> diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index a40159079..83e4e14fa 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -34,8 +34,8 @@ <% if help_page? %>
  • <%= link_to "Aide", help_path, :class => "current" %>
  • <% elsif ! selected_referential? %> -
  • <%= tab_link_to Referential, referentials_path, :class => "current" %>
  • -
  • <%= tab_link_to FileValidation, file_validations_path, :class => "current" %>
  • +
  • <%= tab_link_to Referential, referentials_path, :class => ("current" if current_page?(referentials_path)) %>
  • +
  • <%= tab_link_to FileValidation, file_validations_path %>
  • <% else %>
  • <%= link_to t("layouts.tabs.dashboard"), referential_path(@referential), :class => ("current" if current_page?(referential_path(@referential))) %>
  • <%= tab_link_to Chouette::Network, referential_networks_path(@referential) %>
  • diff --git a/app/views/routes/_route.html.erb b/app/views/routes/_route.html.erb index 4ec720e5d..e99f418b1 100644 --- a/app/views/routes/_route.html.erb +++ b/app/views/routes/_route.html.erb @@ -12,7 +12,6 @@ <% end %> <%= route.human_attribute_name('wayback_code') %> <%= (route.wayback=="A") ? t('route.wayback.positive') : t('wayback.negative') %>
    - <%= link_to t("routes.actions.edit"), edit_referential_line_route_path(@referential, @line, route), :class => "edit" %> | <%= link_to t("vehicle_journeys.actions.index"), referential_line_route_vehicle_journeys_path(@referential, @line, route), :class => "link" %>
    diff --git a/app/views/stop_areas/add_routing_lines.html.erb b/app/views/stop_areas/add_routing_lines.html.erb index 967d502d8..e0750a758 100644 --- a/app/views/stop_areas/add_routing_lines.html.erb +++ b/app/views/stop_areas/add_routing_lines.html.erb @@ -6,11 +6,10 @@ <%= form.input :routing_line_ids, :as => :text, :input_html => { :"data-pre" => ( @lines.map { |line| { :id => line.id.to_s, :name => "#{line.number} - #{line.name}" } } ).to_json } %> <% end %> - <%= form.buttons do %> - <%= form.commit_button %> - <%= t('or') %> - <%= link_to t('cancel'), [@referential, @stop_area] %> - <% end %> + <%= form.actions do %> + <%= form.action :submit, :as => :button %> + <%= form.action :cancel, :as => :link %> + <% end %> <% end %> diff --git a/app/views/stop_areas/add_routing_stops.html.erb b/app/views/stop_areas/add_routing_stops.html.erb index 49c0cad7a..5fc2326f0 100644 --- a/app/views/stop_areas/add_routing_stops.html.erb +++ b/app/views/stop_areas/add_routing_stops.html.erb @@ -6,11 +6,10 @@ <%= form.input :routing_stop_ids, :as => :text, :input_html => { :"data-pre" => ( @stops.map { |stop| { :id => stop.id.to_s, :name => "#{stop.name} #{stop.country_code}" } } ).to_json } %> <% end %> - <%= form.buttons do %> - <%= form.commit_button %> - <%= t('or') %> - <%= link_to t('cancel'), [@referential, @stop_area] %> - <% end %> + <%= form.actions do %> + <%= form.action :submit, :as => :button %> + <%= form.action :cancel, :as => :link %> + <% end %> <% end %> diff --git a/app/views/time_table_dates/_form.html.erb b/app/views/time_table_dates/_form.html.erb index decc0b3cc..e3d07e128 100644 --- a/app/views/time_table_dates/_form.html.erb +++ b/app/views/time_table_dates/_form.html.erb @@ -1,6 +1,6 @@ <%= semantic_form_for [@referential, @time_table, @time_table_date] do |form| %> <%= form.inputs do %> - <%= form.input :date, :as => :date, :label => @time_table_date.human_attribute_name("date") %> + <%= form.input :date, :as => :date_picker, :label => @time_table_date.human_attribute_name("date") %> <% end %> <%= form.actions do %> diff --git a/app/views/time_table_periods/_form.html.erb b/app/views/time_table_periods/_form.html.erb index 71f8f3fd1..cd7681df6 100644 --- a/app/views/time_table_periods/_form.html.erb +++ b/app/views/time_table_periods/_form.html.erb @@ -1,7 +1,7 @@ <%= semantic_form_for [@referential, @time_table, @time_table_period] do |form| %> <%= form.inputs do %> - <%= form.input :period_start, :as => :date, :label => @time_table_period.human_attribute_name("period_start") %> - <%= form.input :period_end, :as => :date, :label => @time_table_period.human_attribute_name("period_end") %> + <%= form.input :period_start, :as => :date_picker, :label => @time_table_period.human_attribute_name("period_start") %> + <%= form.input :period_end, :as => :date_picker, :label => @time_table_period.human_attribute_name("period_end") %> <% end %> <%= form.actions do %> <%= form.action :submit, :as => :button %> diff --git a/app/views/time_tables/_form.erb b/app/views/time_tables/_form.erb index f72e081da..87f6f890a 100644 --- a/app/views/time_tables/_form.erb +++ b/app/views/time_tables/_form.erb @@ -29,7 +29,6 @@ <%= form.action :cancel, :as => :link %> <% end %> <% end %> -

    <%= t('.dates') %>

    -<%= render "dates" %> + diff --git a/config/environments/production.rb b/config/environments/production.rb index d9e41624c..19568bcb7 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -68,6 +68,7 @@ ChouetteIhm::Application.configure do Chouette::Command.command = "/usr/local/opt/chouette-command/chouette-gui-2.0.0/chouette" Import.root = "/var/lib/chouette/imports" Export.root = "/var/lib/chouette/exports" + FileValidation.root = "/var/lib/chouette/validations" end end diff --git a/config/locales/exports.yml b/config/locales/exports.yml index bf943c8af..8274ad70a 100644 --- a/config/locales/exports.yml +++ b/config/locales/exports.yml @@ -24,6 +24,7 @@ en: undefined: %{key} undefined NEPTUNE_EXPORT: Neptune Export NEPTUNE_EXPORTED_LINE: "Line %{0} (%{1}) exported" + NEPTUNE_EMPTY_LINE: "Line %{0} (%{1}) without valid vehicle journey : not exported" severities: info: Information ok: Ok @@ -71,6 +72,7 @@ fr: undefined: %{key} non défini NEPTUNE_EXPORT: Export Neptune NEPTUNE_EXPORTED_LINE: "Ligne %{0} (%{1}) exportée" + NEPTUNE_EMPTY_LINE: "Ligne %{0} (%{1}) sans course valide : non exportée" severities: info: Information ok: Ok diff --git a/config/locales/file_validations.yml b/config/locales/file_validations.yml new file mode 100644 index 000000000..0e0dc1fd2 --- /dev/null +++ b/config/locales/file_validations.yml @@ -0,0 +1,343 @@ +en: + file_validations: + edit: + title: "Edit the Validation" + show: + title: Neptune Validation + summary: Rapport de conformité à la norme NEPTUNE + new: + title: Create a new validation + submit: "Create a validation" + actions: + new: Add a validation + destroy_confirm: "Do you confirm to destroy this validation ?" + destroy: Destroy this validation + edit: Edit this validation + statuses: + pending: Pending + completed: Completed + failed: Failed + file_validation_log_messages: + messages: + undefined: %{key} undefined + severities: + uncheck: Unchecked + ok: Ok + warning: Warning + error: Error + fatal: Fatal + activerecord: + models: + file_validation: + zero: Neptune Validation + one: Neptune Validation + other: Neptune Validations + attributes: + file_validation: + resources: File to validate + status: Status + file_name: Tested data + file_validation_log_message: + created_at: Date + position: N. + full_message: Message + +fr: + file_validations: + edit: + title: "Editer la validation" + show: + title: Validation Neptune + summary: Rapport de conformité à la norme NEPTUNE + details: Détails + parameters: Paramètres des tests + new: + title: Démarrer une nouvelle validation + submit: "Lancer la validation" + actions: + new: Ajouter une validation + destroy_confirm: "Voulez-vous supprimer ce résultat de validation ?" + destroy: Supprimer cette validation + edit: Editer cette validation + statuses: + pending: En cours + completed: Achevé + failed: Echoué + uncheck_count: + zero: aucun inapplicable + one: un inapplicable + other: "%{count} inapplicables" + ok_count: + zero: aucun test réussi + one: un test réussi + other: %{count} tests réussis + warning_count: + zero: aucun warning + one: un warning + other: %{count} warnings + error_count: + zero: aucune erreur + one: une erreur + other: %{count} erreurs + fatal_count: + zero: aucune erreur fatale + one: une erreur fatale + other: %{count} erreurs fatales + file_validation_log_messages: + messages: + undefined: %{key} non défini + TooMuchDetails: ( %{0} erreurs / warnings supplémentaires ) + ONE: "Catégorie 1 : Syntaxe" + Test1_Sheet1: 'Fiche n° 1.1 : Conformité à la syntaxe XML suivant les recommandations du W3C' + Test1_Sheet1_Step1: Conformité à la syntaxe XML + Test1_Sheet1_Step2: Conformité au schéma XML du profil CHOUETTE + Test1_Sheet1_Step0_fatal: "Erreur fatale : Impossible d'ouvrir le fichier %{0}" + Test1_Sheet1_Step0_error: "Impossible d'importer cette entrée %{0} du zip" + Test1_Sheet1_Step0_warning: "Cette entrée %{0} du zip n'est pas un fichier xml et a été ignoré" + Test1_Sheet1_Step1_error: "le fichier %{0} n'est pas correctement formé selon les recommandations du W3C" + Test1_Sheet1_Step2_error: "le fichier %{0} ne respecte pas le modèle CHOUETTE" + Test1_Sheet1_Step2_fatal: "Erreur fatale : Aucune entrée valide trouvée dans le fichier" + TWO: "Catégorie 2 : Complétude, cohérence et intégrité des données" + Test2_Sheet1: "Fiche n° 2.1 : Cohérence entre le réseau et ses composants" + Test2_Sheet1_fatal: "La ligne %{0} n'a pas de réseau" + Test2_Sheet1_Step1: "Correcte réference à des LIGNEs/Chouette()" + Test2_Sheet1_Step1_error: "La ligne %{1} n'est pas dans la liste des identifiants de ligne de %{0}" + Test2_Sheet1_Step2: "Correcte référence à la VERSION DU RÉSEAU(< PTNetwork >) dans LIGNEs/Chouette (< Line >)" + Test2_Sheet1_Step2a_error: "Le réseau %{0} n'est pas celui lié à la ligne %{1} dont le raccourci est %{2}." + Test2_Sheet1_Step2b_error: "Le raccourci du réseau %{0} dans la ligne %{1} ne correspond à aucun réseau de la ligne" + Test2_Sheet2: "Fiche n° 2.2 : Cohérence entre le regroupement de lignes et ses composants" + Test2_Sheet2_Step1: "Correcte référence à des LIGNEs/Chouette ( < Line >) dans GROUPE DE LIGNES ( < GroupOfLine >)" + Test2_Sheet2_Step1_error: "la valeur de l'élément < lineId > : %{0} de la classe d'objets < GroupOfLine > n'a pas été repérée dans l'élément < objectId > de la classe d'objets < Line >" + Test2_Sheet3: "Fiche n° 2.3 : Cohérence entre les arrêts et leurs composants" + Test2_Sheet3_Step1: "Correcte référence à des ARRÊTs/Chouette ( < StopArea >) et/ou à des POINTs D''ARRÊT SUR PARCOURS ( < StopPoint >) dans les ARRÊTs/Chouette ( < StopArea >) " + Test2_Sheet3_Step1_unchecked: "non implémenté" + Test2_Sheet3_Step1_error: "une ou plusieurs valeurs de l'élément < contains > de l'objet < StopArea > %{0} n'est pas repérée dans la classe d'objets correspondant < StopPoint > ou < StopArea >. >" + Test2_Sheet4: "Fiche n° 2.4 : Définition des correspondances" + Test2_Sheet4_Step1: "Correcte référence aux ARRÊTs/Chouette ( < StopArea >) définissant des TronçonsDeCorrespondance/Chouette ( < ConnectionLink >)" + Test2_Sheet4_Step1_unchecked: "non implémenté" + Test2_Sheet4_Step1_error: "L'objet < ConnectionLink > %{0} a des < StartOfLink > %{1} et < EndOfLink > %{2} qui pointent vers le même < StopArea >" + Test2_Sheet4_Step1_error_a: "a : il manque au moins un identifiant d'arrêt < StartOfLink > et < EndOfLink > dans l'objet < ConnectionLink > %{0}" + Test2_Sheet4_Step1_error_b: "b : un identifiant d'arrêt < StartOfLink > ou < EndOfLink > de l'objet < ConnectionLink> %{0} n'est pas repéré dans un objet < StopArea >" + Test2_Sheet5: "Fiche n° 2.5 : Cohérence entre les courses et les horaires" + Test2_Sheet5_Step1: "Correcte référence aux COURSES COMMERCIALES ( < VehicleJourney > ) dans les VERSIONs DES HORAIRES/Chouette ( < Timetable >)" + Test2_Sheet5_Step1_error: "un identifiant de course, situé dans l'objet < Timetable >, n'est pas référencé dans un objet < VehicleJourney >" + Test2_Sheet5_Step2: "Chaque COURSE COMMERCIALE ( < VehicleJourney > ) est référencée dans une VERSION DES HORAIRES/Chouette ( < Timetable >)" + Test2_Sheet5_Step2_error: "une course n'est pas référencée dans aucun < TimeTable >" + Test2_Sheet6: "Fiche n° 2.6 : Définition des terminus" + Test2_Sheet6_Step1: "Correcte définition du terminus de LIGNE/Chouette < Line >" + Test2_Sheet6_Step1_unchecked: "non implémenté" + Test2_Sheet6_Step1_error: "un identifiant de point d'arrêt de fin de trajet n'est pas repéré dans un objet < StopPoint>" + Test2_Sheet6_Step2: "Caractère terminus des points de fin de trajet des LIGNEs/Chouette < Line >" + Test2_Sheet6_Step2_error: "un identifiant de point d'arrêt de fin de trajet n'est pas repéré comme début ou comme fin d'un trajet" + Test2_Sheet7: "Fiche n° 2.7 : Cohérence entre les Itinéraires/Chouette et les LIGNEs/Chouette" + Test2_Sheet7_Step1: "Correcte référence aux Itinéraires/Chouette ( < ChouetteRoute >) pour chaque LIGNE/Chouette ( < Line >)" + Test2_Sheet7_Step1_unchecked: "non implémenté" + Test2_Sheet7_Step1_error: "un identifiant d'Itinéraire < RouteId > situé dans l'objet < Line > n'est pas identifié dans l'objet < ChouetteRoute >" + Test2_Sheet8: "Fiche n° 2.8 : Cohérence entre les missions commerciales et les itinéraires" + Test2_Sheet8_Step1: "Correcte référence des MISSIONs COMMERCIALEs ( < JourneyPattern >) par les Itinéraires/Chouette ( < ChouetteRoute >)" + Test2_Sheet8_Step1_error: "un élément < journeyPatternId > dans un objet d'Itinéraire < ChouetteRoute > n'a pas d'identifiant < ObjectId > dans un objet < JourneyPattern>" + Test2_Sheet8_Step2: "Correcte référence des Itinéraires/Chouette ( < ChouetteRoute >) que référencent les MISSIONs COMMERCIALEs ( < JourneyPattern >)" + Test2_Sheet8_Step2_error: "l'élément d'Itinéraire < routeId >, référencé dans un objet < JourneyPattern >, n'a pas d'identifiant < objectId > dans l'objet d'Itinéraire < ChouetteRoute >" + Test2_Sheet8_Step3: "Cohérence de la séquence des POINTs D'ARRÊT SUR PARCOURS ( < StopPoint >) d'une mission commerciale et celle de l'Itinéraire/Chouette ( < ChouetteRoute >) correspondant" + Test2_Sheet8_Step3_a_error: "a : l'identifiant du < %{0} > détecté dans l'objet < StopPoint > ne figure pas dans la liste des points d'arrêt de l'objet < JourneyPattern >" + Test2_Sheet8_Step3_b_error: "b : l'identifiant du %{0} < StopPoint > ne figure pas dans l'un des éléments < startOfLink > ou < endOfLink > du tronçon < PtLink >" + Test2_Sheet8_Step3_c_error: "c : l'identifiant du tronçon < PtLink > : %{0} , détecté dans le test b, n'est pas intégré dans un Itinéraire < ChouetteRoute >" + Test2_Sheet8_Step3_d_error: "d : les de l'Itinéraire < ChouetteRoute > : %{0} ne sont pas cohérents avec les du < JourneyPattern > %{1}" + Test2_Sheet9: "Fiche n° 2.9 : Définition de l'itinéraire retour" + Test2_Sheet9_Step1: "Correcte référence à un Itinéraire/Chouette ( < ChouetteRoute >) dans le cas d'un Itinéraire de retour" + Test2_Sheet9_Step1_error: "un élément d'Itinéraire de retour < wayBackRouteId > dans un objet d'Itinéraire < ChouetteRoute > n'a pas d'identifiant < ObjectId > dans un autre objet d'Itinéraire < ChouetteRoute >" + Test2_Sheet10: "Fiche n° 2.10 : Référence à une ligne pour un point d'arrêt" + Test2_Sheet10_Step1: "Correcte référence à une LIGNE/Chouette ( < Line >) pour les POINTs D'ARRÊT SUR PARCOURS ( < StopPoint > )" + Test2_Sheet10_Step1_error: "Le point d'arrêt (< StopPoint >) fait référence à une ligne inexistante>" + Test2_Sheet11: "Fiche n° 2.11 : Référence à un réseau au point d'arrêt" + Test2_Sheet11_Step1: "Correcte référence à la VERSION DU RÉSEAU ( < PTNetwork >) pour chaque POINT D'ARRÊT SUR PARCOURS \n( < StopPoint >)" + Test2_Sheet11_Step1_error: "Le point d'arrêt (< StopPoint >) fait référence à un réseau inexistant>" + Test2_Sheet12: "Fiche n° 2.12 : Définition de l''Interdiction de Trafic Local" + Test2_Sheet12_Step1: "Cohérence entre les objets < ITL > et les ARRÊTs/Chouette ( < StopArea >)" + Test2_Sheet12_Step1_error: "Un objet d'interdiction de trafic local < ITL > %{0} fait référence à un arrêt du réseau < StopArea > %{1} inexistant" + Test2_Sheet13: "Fiche n° 2.13 : Référence à une ligne des arrêts ITL" + Test2_Sheet13_Step1: "Correcte référence à la LIGNE/Chouette ( < Line >) pour chaque < ITL >" + Test2_Sheet13_Step1_error: "Un objet d'interdiction de trafic local < ITL > fait référence à une ligne inexistante" + Test2_Sheet14: "Fiche n° 2.14 : Association points d'arrêt, tronçons, itinéraire" + Test2_Sheet14_Step1: "Tout POINT D'ARRÊT SUR PARCOURS ( < StopPoint >) est associé à un Itinéraire/Chouette (ChouetteRoute >)" + Test2_Sheet14_Step1a_error: "a : le point d'arrêt (< StopPoint >) %{0} n'appartient à aucune extrémité de tronçon" + Test2_Sheet14_Step1b_error: "b : le tronçon %{0} fait référence à un itinéraire inexistant" + Test2_Sheet14_Step2: "Continuité des tronçons COMMERCIAUX/Chouette ( < PtLink >) au sein d'un Itinéraire/Chouette ( < ChouetteRoute >)" + Test2_Sheet14_Step2_error: "l'analyse des tronçons d'un itinéraire fait apparaître que la valeur de l'attribut de l'élément < endOfLink > d'un premier tronçon < PtLink > n'est pas identique à la valeur de l'attribut de l'élément < startOfLink > du deuxième tronçon < PtLink >" + Test2_Sheet15: "Fiche n° 2.15 : Cohérence entre points d'arrêt et missions commerciales" + Test2_Sheet15_Step1: "Existence de définition des POINTs D'ARRÊT SUR PARCOURS ( < StopPoint >) d'une mission commerciale ( < JourneyPattern >)" + Test2_Sheet15_Step1_error: "La liste de l'objet < JourneyPattern > %{0} fait référence à des points d'arrêt inexistants" + Test2_Sheet15_Step2: "Tout POINT D'ARRÊT SUR PARCOURS ( < StopPoint >) appartient à une mission commerciale ( < JourneyPattern >)" + Test2_Sheet15_Step2_error: "un point d'arrêt (< StopPoint >) n'est pas rattaché à une mission commerciale" + Test2_Sheet16: "Fiche n° 2.16 : Référence à une ligne des missions commerciales" + Test2_Sheet16_Step1: "Correcte référence à une une LIGNE/Chouette ( < Ligne >) pour une MISSION COMMERCIALE ( < JourneyPattern >)" + Test2_Sheet16_Step1_error: "Un objet < JourneyPattern > fait référence à une ligne inexistante" + Test2_Sheet17: "Fiche n° 2.17 : Cohérence entre itinéraires et courses" + Test2_Sheet17_Step1: "Correcte référence à l'Itinéraire/Chouette ( < ChouetteRoute) pour chaque COURSE COMMERCIALE ( < VehicleJourney > )" + Test2_Sheet17_Step1_error: "la course %{0} fait référence à un itinéraire inexistant %{1}" + Test2_Sheet18: "Fiche n° 2.18 : Cohérence entre les missions commerciales et les courses" + Test2_Sheet18_Step1: "Existence d'une MISSION COMMERCIALE ( < JourneyPattern < ) pour chaque COURSE COMMERCIALE ( < VehicleJourney >)" + Test2_Sheet18_Step1_error: "la course %{0} fait référence à une mission commerciale inexistante" + Test2_Sheet18_Step2: "Cohérence de points entre MISSION COMMERCIALE ( < JourneyPattern < ) et COURSE COMMERCIALE ( < VehicleJourney >)" + Test2_Sheet18_Step2_error_a: "a : l'identifiant (< StopPoint >) détecté dans un objet < StopPoint > ne figure pas dans la liste des points d'arrêts < stopPointList > de < JourneyPattern >" + Test2_Sheet18_Step2_error_b: "b : l'identifiant (< StopPoint >) ne figure pas dans l'élément < stopPointId > d'un objet < vehicleJourneyAtStop >" + Test2_Sheet19: "Fiche n° 2.19 : Référence à une ligne pour chaque course" + Test2_Sheet19_Step1: "Référence à une LIGNE/Chouette ( < Line >) pour une COURSE COMMERCIALE ( < VehicleJourney >)" + Test2_Sheet19_Step1_error: "le raccourci de ligne d'une course %{0} fait référence à une ligne inexistante" + Test2_Sheet20: "Fiche n° 2.20 : Vérification des identifiants d''exploitants que référencent les courses" + Test2_Sheet20_Step1: "Correcte référence à l'EXPLOITANT/Chouette ( < Company >) dans une COURSE COMMERCIALE ( < VehicleJourney > )" + Test2_Sheet20_Step1_error: "la course %{0} fait référence à un exploitant inexistant" + Test2_Sheet21: "Fiche n° 2.21 : Référence à une tranche horaire pour les courses" + Test2_Sheet21_Step1: "Correcte référence des COURSEs COMMERCIALEs ( < VehicleJourney > ) à des TRANCHEs HORAIREs ( < TimeSlot >)" + Test2_Sheet21_Step1_error: "la course %{0} fait référence à une tranche horaire inexistante" + Test2_Sheet22: "Fiche n° 2.22 : Cohérence entre les points d'arrêts et les heures de passage" + Test2_Sheet22_Step1: "Correcte référence à un POINT D'ARRÊT SUR PARCOURS ( < StopPoint >) pour les HEUREs DE PASSAGE GRAPHIQUées/Chouette ( < VehicleJourneyAtStop >)" + Test2_Sheet22_Step1_error: "une heure de passage %{0} fait référence à un point d'arrêt (< StopPoint >) inexistant" + Test2_Sheet23: "Fiche n° 2.23 : Cohérence entre les courses et des heures de passage" + Test2_Sheet23_Step1: "Correcte référence à une COURSE COMMERCIALE \n( < VehicleJourney >) dans HEURE DE PASSAGE GRAPHIQUEE/Chouette ( < VehicleJourneyAtStop >)" + Test2_Sheet23_Step1_error: "une heure de passage %{0} fait référence à une course inexistante" + Test2_Sheet24: "Fiche n° 2.24 : Cohérence entre la mission commerciale de la course et l''itinéraire de la course" + Test2_Sheet24_Step1: "Cohérence de la référence un Itinéraire/Chouette pour une COURSE COMMERCIALE ( < VehicleJourney >) et la MISSION COMMERCIALE ( < JourneyPattern >) correspondante" + Test2_Sheet24_Step1_error: "un objet < vehicleJourney > possède une valeur de l'attribut de l'élément < RouteId >. Cette valeur ne se retrouve dans un élément < RouteId > d'un objet < JourneyPattern > " + Test2_Sheet25: "Fiche n° 2.25 : Définition des liens d'accès" + Test2_Sheet25_Step1: "Correcte référence aux ARRÊTs/Chouette ( < StopArea >) et ACCES/NEPTUNE ( ) définissant des LiensAccèsZoneArrêt/NEPTUNE ( < AccessLink >)" + Test2_Sheet25_Step1_error_a: "a : les objets < StartOfLink > et < EndOfLink > de l'objet < AccessLink > sont identiques" + Test2_Sheet25_Step1_error_b: "b : un identifiant d'arrêt ou d'accès < StartOfLink > ou < EndOfLink > de l'objet < AccessLink> n'est pas repéré dans un objet < StopArea > ou < AccessPoint >" + Test2_Sheet26: "Fiche n° 2.26 : Cohérence entre les accès et leurs composants" + Test2_Sheet26_Step1: "Correcte référence à des ARRÊTs/Chouette ( < StopArea >) et/ou à des LiensAccèsZoneArrêt/NEPTUNE ( < AccessLink >) dans les ACCES/NEPTUNE ( < AccessPoint >) " + Test2_Sheet26_Step1_error: "une ou plusieurs valeurs de l'élément < containedIn> de la classe d'objets < AccessPoint> n'est pas repérée dans la classe d'objets correspondante < StopArea > ou < AccessLink >" + Test2_Sheet27: "Fiche n° 2.27 : Référence aux arrêts dans les équipements" + Test2_Sheet27_Step1: "Correcte référence à des ARRÊTs/Chouette ( < StopArea >) dans les EQUIPEMENTs /NEPTUNE ( )" + Test2_Sheet27_Step1_error: "une valeur de l'élément < containedIn> de la classe d'objets < Facility> n'est pas repérée dans la classe d'objets correspondante < StopArea >" + Test2_Sheet28: "Fiche n° 2.28 : Référencement correct des composants dans les équipements" + Test2_Sheet28_Step1: "Correcte référence à un ARRÊT/Chouette ( < StopArea >) ou à une LIGNE/Chouette ( < Line >) ou à un POINT D'ARRÊT SUR PARCOURS ( < StopPoint >) ou à un TronçonsDeCorrespondance/Chouette ( < ConnectionLink >) dans les FACILITYs /NEPTUNE ( )" + Test2_Sheet28_Step1_error: "une valeur de l'élément < stopAreaId> de la classe d'objets < Facility> n'est pas repérée dans la classe d'objets correspondant < StopArea >" + Test2_Sheet28_Step2_error: "une valeur de l'élément < lineId> de la classe d'objets < Facility> n'est pas repérée dans la classe d'objets correspondant < Line>" + Test2_Sheet28_Step3_error: "une valeur de l'élément < connectionLinkId> de la classe d'objets < Facility> n'est pas repérée dans la classe d'objets correspondant < ConnectionLink >" + Test2_Sheet28_Step4_error: "une valeur de l'élément < stopPointId> de la classe d'objets < Facility> n'est pas repérée dans la classe d'objets correspondant < StopPoint >" + THREE: "Catégorie 3 : Contenu" + Test3_Sheet1: "Fiche n° 3.1 : Points d'arrêt de dénomination différente et très proches" + Test3_Sheet1_Step1: "2 POINTs D'ARRÊT SUR PARCOURS ( < StopPoint >) très proches porte le même nom/même adresse" + Test3_Sheet1_Step1_warning: "deux points d'arrêt séparés par une distance %{3} inférieure à une valeur paramétrable %{0} ne portent pas le même nom , premier : %{1} , deuxième : %{2} " + Test3_Sheet2: "Fiche n° 3.2 : Points d'arrêt très proches regroupés au sein d'une zone d'arrêt" + Test3_Sheet2_Step1: "2 POINTs D'ARRÊT SUR PARCOURS ( < StopPoint >) très proches appartiennent à un même ARRÊT1/Chouette ( < StopArea >)" + Test3_Sheet2_Step1_warning: "la distance calculée %{0} entre un point d'arrêt et les autres points d'arrêt est inférieure à une valeur paramétrable %{1} mais la valeur de l'attribut de l'élément < containedIn > de ces deux points d'arrêt < StopPoint > n'est pas identique, premier : %{2} , deuxième : %{3}" + Test3_Sheet3: "Fiche n° 3.3 : Unicité des noms de points d'arrêt " + Test3_Sheet3_Step1: "Différentiation de nom pour les POINTs D'ARRÊT SUR PARCOURS ( < StopPoint >)" + Test3_Sheet3_Step1_warning: "deux points d'arrêt < StopPoint > : %{0} et %{1} de même nom ne sont pas suffisamment renseignés pour avoir des propriétés uniques" + Test3_Sheet4: "Fiche n° 3.4 : Unicité des noms de ligne" + Test3_Sheet4_Step1: "Chaque LINE/Chouette ( < Line >) possède des valeurs d'attributs uniques" + Test3_Sheet4_Step1_error: "les éléments < name > et < number > d'une ligne ne constituent pas un identifiant unique pour la ligne < Line > référencée par l'élément < %{0} >" + Test3_Sheet5: "Fiche n° 3.5 : Modèle de représentation des coordonnées des points d'arrêt" + Test3_Sheet5_Step1: "Coordonnées géographiques de chaque POINT D'ARRÊT SUR PARCOURS ( < StopPoint >) par rapport à un modèle de projection de référence" + Test3_Sheet5_Step1_warning: "le point d'arrêt d'identifiant < %{0} > n'est pas dans le bon système de projection ou ses coordonnées géographiques sont nulle ou il est situé hors d'une zone dont le périmètre ou le contour est à définir" + Test3_Sheet6: "Fiche n° 3.6 : Localisation des points d'arrêt à l'intérieur d'un périmètre défini" + Test3_Sheet6_Step1: "Les coordonnées de chaque POINT D'ARRÊT SUR PARCOURS ( < StopPoint >) sont inscrites dans une zone déterminée et qu'elles sont dans le bon système de projection" + Test3_Sheet6_Step1_warning_a: "a : le point d'arrêt d'identifiant < %{0} > n'est pas dans le bon système de projection " + Test3_Sheet6_Step1_error_b: "b : le point d'arrêt d'identifiant < %{0} > a des coordonnées qui sont hors du polygone de la zone couverte" + Test3_Sheet7: "Fiche n° 3.7 : Caractérisation des distances entre les points d'arrêt" + Test3_Sheet7_Step1: "La distance entre 2 POINTs D'ARRÊT SUR PARCOURS ( < StopPoint >) consécutifs" + Test3_Sheet7_Step1_warning: "la distance spatiale entre deux points d'arrêt consécutifs ne se situe pas dans une fourchette autorisée (entre %{0} pour sa valeur minimale et %{1} pour sa valeur supérieure" + Test3_Sheet8: "Fiche n° 3.8 : Cohérence entre le temps et la distance pour chaque correspondance" + Test3_Sheet8_Step1: " Les vitesses calculées à partir des attributs du TronçonDeCorrespondance/Chouette ( < ConnectionLink >) suivant les paramètres fixés" + Test3_Sheet8_Step1_error_a: "a : la vitesse fixée par l'élément < DefaultDuration > n'est pas conforme à la valeur paramétrable : Vitesse minimale %{0} et Vitesse maximale %{1} fixée pour la correspondance dont l'identifiant est < %{2} >" + Test3_Sheet8_Step1_error_b: "b : la vitesse fixée par l'élément < FrequentTravellerDuration > n'est pas conforme à la valeur paramétrable Vitesse minimale %{0} (+/- delta) et Vitesse maximale %{1} fixée pour la correspondance dont l'identifiant est < %{2} >" + Test3_Sheet8_Step1_error_c: "c : la vitesse fixée par l'élément < OccasionalTravellerDuration > n'est pas conforme à la valeur paramétrable Vitesse minimale %{0} (+/- delta) et Vitesse maximale %{1} fixée pour la correspondance dont l'identifiant est < %{2} >" + Test3_Sheet8_Step1_error_d: "d : la vitesse fixée par l'élément < MobilityRestrictedTravellerDuration > n'est pas conforme à la valeur paramétrable Vitesse minimale %{0} (+/- delta) et Vitesse maximale %{1} fixée pour la correspondance dont l'identifiant est < %{2} >" + Test3_Sheet9: "Fiche n° 3.9 : Cohérence entre le temps et la distance pour chaque tronçon" + Test3_Sheet9_Step1: "La vitesse entre 2 POINTs D'ARRÊT SUR PARCOURS ( < StopPoint >) consécutifs se situe dans une fourchette autorisée" + Test3_Sheet9_Step1_warning: "la vitesse déterminée par la distance et le temps entre 2 points d'arrêt consécutifs (entre deux objets < %{0} > et < %{1} > ) ne se situe pas une fourchette autorisée entre %{2} et %{3}" + Test3_Sheet10: "Fiche n° 3.10 : Détection des boucles" + Test3_Sheet10_Step1: "Utilisation unique dans un Itinéraire/Chouette ( < ChouetteRoute >) d'un POINT D'ARRÊT SUR PARCOURS ( < StopPoint >)" + Test3_Sheet10_Step1_error_a: "a : le point d'arrêt d'identifiant < %{0} > est défini de manière unique et ne retrouve pas dans au moins deux tronçons" + Test3_Sheet10_Step1_error_b: "b : les identifiants de tronçon identifiés dans le 3.10.1 a ne sont pas présents dans un même itinéraire" + Test3_Sheet10_Step2: "Boucle dans un itinéraire/Chouette" + Test3_Sheet10_Step2_warning: "des tronçons < PtLink > utilisent des points d'arrêt < StopPoint > ayant la même valeur d'attribut que l'élément < containedIn > pour la route %{0} " + Test3_Sheet10_Step3: "La distance entre points d'arrêt d'un même itinéraire/Chouette" + Test3_Sheet10_Step3_warning: "des points d'arrêt < StopPoint > utilisés par des tronçons d'itinéraire, sont proches les uns des autres d'une distance %{0} inférieure à une valeur paramétrable %{1} " + Test3_Sheet11: "Fiche n° 3.11 : Détection des retours en arrière" + Test3_Sheet11_Step1: "Utilisation répétitive de POINTs D'ARRÊT SUR PARCOURS d'un Itinéraire/Chouette ( < ChouetteRoute >)" + Test3_Sheet11_Step1_warning: "les tronçons < PtLink > d'un itinéraire utilisent des points d'arrêt < StopPoint > identiques plus de deux fois" + Test3_Sheet12: "Fiche n° 3.12 : Connexité du graphe des lignes et des points d'arrêt" + Test3_Sheet12_Step1: "Construction d'un graphe à partir de chaque POINTs D'ARRÊT SUR PARCOURS" + Test3_Sheet15: "Fiche n° 3.15 : Cohérence des horaires" + Test3_Sheet15_Step1: "Cohérence des HEUREs DE PASSAGE GRAPHIQUEEs/Chouette ( < VehicleJourneyAtStop >) d'une COURSE ( < VehicleJourney >) pour chaque POINT D'ARRÊT SUR PARCOURS ( < StopPoint >)" + Test3_Sheet15_Step1_error: "la différence absolue entre la valeur de l'attribut de l'élément < arrivalTime > et la valeur de l'attribut de l'élément < departureTime > est supérieure à une valeur paramétrable %{0}" + Test3_Sheet16: "Fiche n° 3.16 : Cohérence des courses" + Test3_Sheet16_Step1: "Cohérence horaire pour 2 COURSEs ( < VehicleJourney >) utilisant le même couple de POINTs D'ARRÊT SUR PARCOURS ( < StopPoint >)" + Test3_Sheet16_Step1_error: "pour deux courses qui utilisent le même couple de points A -> B, les temps de parcours : %{2} entre le point A : %{0} et le point B : %{1} ne sont pas cohérents" + Test3_Sheet16_Step2: "La VERSION DES HORAIREs/Chouette ( < Timetable >) contient des COURSEs ( < VehicleJourney >)" + Test3_Sheet16_Step2_warning: "La course < vehicleJourney > dont l'identifiant est < %{0} > n'est pas référencée dans l'objet < TimeTable >" + Test3_Sheet16_Step3: "Cohérence des HEUREs DE PASSAGE GRAPHIQUEEs/Chouette ( < VehicleJourneyAtStop >) entre 2 POINTs D'ARRÊT SUR PARCOURS ( < StopPoint >) consécutifs dans une COURSE ( < VehicleJourney >)" + Test3_Sheet16_Step3_error_a: "a : entre deux éléments < vehicleJourneyAtStop > successifs, la différence absolue entre la valeur de l'attribut de l'élément < departureTime > du premier point d'arrêt et la valeur de l'attribut de l'élément < arrivalTime > du second point d'arrêt : %{0} est supérieure à une valeur paramétrable %{1} " + Test3_Sheet16_Step3_error_b: "b : entre deux éléments < vehicleJourneyAtStop > successifs, la valeur de l'attribut de l'élément < departureTime > du premier point d'arrêt est inférieure à la valeur de l'attribut de l'élément < arrivalTime > du second point d'arrêt ou la valeur de l'attribut de l'élément < arrivalTime > du second point d'arrêt est supérieure à une valeur paramétrable %{0}" + Test3_Sheet17: "Fiche n° 3.17 : Modèle de représentation des coordonnées des points d'accès" + Test3_Sheet17_Step1: " Les coordonnées géographiques de chaque POINT D'ACCES ( < AccessPoint >) par rapport à un modèle de projection de référence" + Test3_Sheet17_Step1_warning: "le point d'accès d'identifiant < %{0} > n'est pas dans le bon système de projection ou ses coordonnées géographiques sont nulles ou il est situé hors d'une zone dont le périmètre ou le contour est à définir" + Test3_Sheet18: "Fiche n° 3.18 : Localisation des points d'accès à l'intérieur d'un périmètre défini" + Test3_Sheet18_Step1: " Les coordonnées de chaque POINT D'ACCES ( < AccessPoint >) sont inscrites dans une zone déterminée et qu'elles sont dans le bon système de projection" + Test3_Sheet18_Step1_warning_a: "a : le point d'accès d'identifiant < %{0} > n'est pas dans le bon système de projection" + Test3_Sheet18_Step1_error_b: "b : le point d'accès d'identifiant < %{0} > a des coordonnées qui sont hors du polygone de la zone couverte" + Test3_Sheet19: "Fiche n° 3.19 : Modèle de représentation des coordonnées des équipements" + Test3_Sheet19_Step1: " Test des coordonnées géographiques de chaque EQUIPEMENT ( < Facility >) par rapport à un modèle de projection de référence" + Test3_Sheet19_Step1_warning: "l'equipement < %{0} > n'est pas dans le bon système de projection ou ses coordonnées géographiques sont nulle ou il est situé hors d'une zone dont le périmètre ou le contour est à définir" + Test3_Sheet20: "Fiche n° 3.20 : Localisation des équipements à l'intérieur d'un périmètre défini" + Test3_Sheet20_Step1: " Les coordonnées de chaque EQUIPEMENT ( < Facility>) sont inscrites dans une zone déterminée et qu'elles sont dans le bon système de projection" + Test3_Sheet20_Step1_warning_a: "a : l'equipement d'identifiant < %{0} > n'est pas dans le bon système de projection " + Test3_Sheet20_Step1_error_b: "b : l'equipement d'identifiant < %{0} > a des coordonnées qui sont hors du polygone de la zone couverte " + Test3_Sheet21: "Fiche n° 3.21 : Cohérence entre le temps et la distance pour chaque lien accès-zone d'arrêt" + Test3_Sheet21_Step1: " Les vitesses calculées à partir des attributs du LiensAccèsZoneArrêt /NEPTUNE ( < AccessLink >) suivant les paramètres fixés" + Test3_Sheet21_Step1_error_a: "a : la vitesse fixée par l'élément < DefaultDuration > n'est pas conforme à la valeur paramétrable Vitesse minimale %{0} et Vitesse maximale %{1} fixée pour le lien d'accès dont l'identifiant est < %{2} >" + Test3_Sheet21_Step1_error_b: "b : la vitesse fixée par l'élément < FrequentTravellerDuration > n'est pas conforme à la valeur paramétrable Vitesse minimale %{0} et Vitesse maximale %{1} fixée pour le lien d'accès dont l'identifiant est < %{2} >" + Test3_Sheet21_Step1_error_c: "c : la vitesse fixée par l'élément < OccasionalTravellerDuration > n'est pas conforme à la valeur paramétrable %{Vitesse minimale %{0} et Vitesse maximale %{1} fixée pour le lien d'accès dont l'identifiant est < %{2} >" + Test3_Sheet21_Step1_error_d: "d : la vitesse fixée par l'élément < MobilityRestrictedTravellerDuration > n'est pas conforme à la valeur paramétrable Vitesse minimale %{0} et Vitesse maximale %{1} fixée pour le lien d'accès dont l'identifiant est < %{2} >" + severities: + uncheck: Non testé + ok: Ok + warning: Alerte + error: Erreur + fatal: Fatal + activerecord: + models: + file_validation: + zero: Validation Neptune + one: Validation Neptune + other: Validations Neptune + attributes: + file_validation: + resources: Fichier à valider + status: Status + file_name: Jeu de données + test3_1_minimal_distance: "Distance minimale (test 3.1)" + test3_2_minimal_distance: "Distance minimale (test 3.2)" + test3_2_polygon_points: "Polygone (long lat) (test 3.6)" + test3_7_minimal_distance: "Distance minimale / maximale (test 3.7)" + test3_7_maximal_distance: " / " + test3_8a_minimal_speed: "Vitesse minimale / maximale (test 3.8a)" + test3_8a_maximal_speed: " / " + test3_8b_minimal_speed: "Vitesse minimale / maximale (test 3.8b)" + test3_8b_maximal_speed: " / " + test3_8c_minimal_speed: "Vitesse minimale / maximale (test 3.8c)" + test3_8c_maximal_speed: " / " + test3_8d_minimal_speed: "Vitesse minimale / maximale (test 3.8d)" + test3_8d_maximal_speed: " / " + test3_9_minimal_speed: "Vitesse minimale / maximale (test 3.9)" + test3_9_maximal_speed: " / " + test3_10_minimal_distance: "Distance minimale (test 3.10)" + test3_15_minimal_time: "Temps minimal (test 3.15)" + test3_16_1_maximal_time: "Ecart maximal de durée entre deux desserte d'un même tronçon (test 3.16.1)" + test3_16_3a_maximal_time: "Temps maximal d'attente à un arrêt (test 3.16.3a)" + test3_16_3b_maximal_time: "Heure maximale de départ au premier arrêt après minuit sur une course franchissant minuit (test 3.16.3b)" + test3_21a_minimal_speed: "Vitesse minimale / maximale (test 3.21a)" + test3_21a_maximal_speed: " / " + test3_21b_minimal_speed: "Vitesse minimale / maximale (test 3.21b)" + test3_21b_maximal_speed: " / " + test3_21c_minimal_speed: "Vitesse minimale / maximale (test 3.21c)" + test3_21c_maximal_speed: " / " + test3_21d_minimal_speed: "Vitesse minimale / maximale (test 3.21d)" + test3_21d_maximal_speed: " / " + projection_reference: "Système de projection de référence" + file_validation_log_message: + created_at: Date + position: N. + full_message: Message diff --git a/config/locales/formtastic.yml b/config/locales/formtastic.yml index 539645241..52c413da8 100644 --- a/config/locales/formtastic.yml +++ b/config/locales/formtastic.yml @@ -5,6 +5,23 @@ fr: create: "Créer %{model}" update: "Modifier %{model}" submit: 'Valider %{model}' - cancel: 'Annuler %{model}' + cancel: 'Annuler' reset: 'Réinitialiser %{model}' - required: 'required' \ No newline at end of file + required: 'requis' + import: "Lancer l'import" + export: "Lancer l'export" + validate: "Lancer la validation" + +en: + formtastic: + yes: 'Yes' + no: 'No' + create: "Create %{model}" + update: "Update %{model}" + submit: 'Apply %{model}' + cancel: 'Cancel' + reset: 'Reset %{model}' + required: 'required' + import: "Launch import" + export: "Launch export" + validate: "Launch validation" diff --git a/config/locales/referentials.yml b/config/locales/referentials.yml index 7aa60fc1d..3b78f495c 100644 --- a/config/locales/referentials.yml +++ b/config/locales/referentials.yml @@ -20,13 +20,14 @@ en: name: Name slug: Code prefix: Neptune Object Id prefix - projection_type: Alternate projection code (SRID) + projection_type: Optional spatial reference system code (SRID) time_zone: time zone formtastic: hints: referential: slug: only lowercase alphanumerical or underscore characters prefix: only alphanumerical or underscore characters + projection_type: "see SRID codes on http://spatialreference.org" fr: referentials: @@ -50,10 +51,11 @@ fr: name: Nom slug: Code prefix: Préfixe des identifiants Neptune - projection_type: Code (SRID) de la seconde projection + projection_type: Système de référence spatiale optionnel (SRID) time_zone: Fuseau horaire formtastic: hints: referential: slug: "caractères autorisés : alphanumériques minuscules et 'souligné'" - prefix: "caractères autorisés : alphanumériques et 'souligné'" + prefix: "caractères autorisés : alphanumériques et 'souligné'" + projection_type: "voir http://spatialreference.org pour les codes SRID" diff --git a/db/migrate/20120620081726_create_file_validations.rb b/db/migrate/20120620081726_create_file_validations.rb new file mode 100644 index 000000000..d6544bb79 --- /dev/null +++ b/db/migrate/20120620081726_create_file_validations.rb @@ -0,0 +1,15 @@ +class CreateFileValidations < ActiveRecord::Migration + def up + create_table :file_validations do |t| + t.string :status + t.string :options, :limit => 2000 + t.string :file_name + t.string :file_type + t.timestamps + end + end + + def down + drop_table :file_validations + end +end diff --git a/db/migrate/20120620081755_create_file_validation_log_messages.rb b/db/migrate/20120620081755_create_file_validation_log_messages.rb new file mode 100644 index 000000000..b7a8c1e22 --- /dev/null +++ b/db/migrate/20120620081755_create_file_validation_log_messages.rb @@ -0,0 +1,18 @@ +class CreateFileValidationLogMessages < ActiveRecord::Migration + def up + create_table :file_validation_log_messages do |t| + t.belongs_to :file_validation + t.string :key + t.string :arguments, :limit => 1000 + t.integer :position + t.string :severity + + t.timestamps + end + add_index :file_validation_log_messages, :file_validation_id + end + + def down + drop_table :file_validation_log_messages + end +end diff --git a/db/schema.rb b/db/schema.rb index fe3bcd594..c9fbc3ec1 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20120620064014) do +ActiveRecord::Schema.define(:version => 20120620081755) do create_table "access_links", :force => true do |t| t.integer "access_point_id", :limit => 8 @@ -176,6 +176,29 @@ ActiveRecord::Schema.define(:version => 20120620064014) do t.integer "choice_code" end + add_index "facilities_features", ["facility_id"], :name => "idx_facility_id" + + create_table "file_validation_log_messages", :force => true do |t| + t.integer "file_validation_id" + t.string "key" + t.string "arguments", :limit => 1000 + t.integer "position" + t.string "severity" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "file_validation_log_messages", ["file_validation_id"], :name => "index_file_validation_log_messages_on_file_validation_id" + + create_table "file_validations", :force => true do |t| + t.string "status" + t.string "options" + t.string "file_name" + t.string "file_type" + t.datetime "created_at" + t.datetime "updated_at" + end + create_table "group_of_lines", :force => true do |t| t.string "objectid", :null => false t.integer "object_version" @@ -188,10 +211,13 @@ ActiveRecord::Schema.define(:version => 20120620064014) do add_index "group_of_lines", ["objectid"], :name => "group_of_lines_objectid_key", :unique => true create_table "group_of_lines_lines", :id => false, :force => true do |t| - t.integer "group_of_line_id", :limit => 8 - t.integer "line_id", :limit => 8 + t.integer "group_of_line_id", :limit => 8, :null => false + t.integer "line_id", :limit => 8, :null => false end + add_index "group_of_lines_lines", ["group_of_line_id"], :name => "idx_grli_gr" + add_index "group_of_lines_lines", ["line_id"], :name => "idx_grli_li" + create_table "import_log_messages", :force => true do |t| t.integer "import_id" t.string "key" @@ -233,10 +259,11 @@ ActiveRecord::Schema.define(:version => 20120620064014) do add_index "journey_patterns", ["objectid"], :name => "journey_patterns_objectid_key", :unique => true create_table "journey_patterns_stop_points", :id => false, :force => true do |t| - t.integer "journey_pattern_id", :limit => 8 - t.integer "stop_point_id", :limit => 8 + t.integer "journey_pattern_id", :limit => 8, :null => false + t.integer "stop_point_id", :limit => 8, :null => false end + add_index "journey_patterns_stop_points", ["journey_pattern_id"], :name => "idx_jpsp_jpid" add_index "journey_patterns_stop_points", ["journey_pattern_id"], :name => "index_journey_pattern_id_on_journey_patterns_stop_points" create_table "lines", :force => true do |t| @@ -254,6 +281,7 @@ ActiveRecord::Schema.define(:version => 20120620064014) do t.string "comment" t.boolean "mobility_restricted_suitability" t.integer "int_user_needs" + t.integer "ptnetwork_id", :limit => 8 end add_index "lines", ["objectid"], :name => "lines_objectid_key", :unique => true @@ -299,6 +327,7 @@ ActiveRecord::Schema.define(:version => 20120620064014) do t.datetime "updated_at" t.string "prefix" t.string "projection_type" + t.string "bounding_box", :limit => nil t.string "time_zone" end @@ -324,6 +353,9 @@ ActiveRecord::Schema.define(:version => 20120620064014) do t.integer "line_id", :limit => 8 end + add_index "routing_constraints_lines", ["line_id"], :name => "idx_rcli_li" + add_index "routing_constraints_lines", ["stop_area_id"], :name => "idx_rcli_st" + create_table "stop_areas", :force => true do |t| t.integer "parent_id", :limit => 8 t.string "objectid", :null => false @@ -410,8 +442,8 @@ ActiveRecord::Schema.define(:version => 20120620064014) do add_index "time_tables", ["objectid"], :name => "time_tables_objectid_key", :unique => true create_table "time_tables_vehicle_journeys", :id => false, :force => true do |t| - t.integer "time_table_id", :limit => 8 - t.integer "vehicle_journey_id", :limit => 8 + t.integer "time_table_id", :limit => 8, :null => false + t.integer "vehicle_journey_id", :limit => 8, :null => false end add_index "time_tables_vehicle_journeys", ["time_table_id"], :name => "index_time_tables_vehicle_journeys_on_time_table_id" @@ -445,8 +477,12 @@ ActiveRecord::Schema.define(:version => 20120620064014) do t.time "waiting_time" t.time "elapse_duration" t.time "headway_frequency" + t.integer "position", :limit => 8 + t.boolean "is_departure", :default => false + t.boolean "is_arrival", :default => false end + add_index "vehicle_journey_at_stops", ["stop_point_id"], :name => "index_vehicle_journey_at_stops_on_stop_point_id" add_index "vehicle_journey_at_stops", ["stop_point_id"], :name => "index_vehicle_journey_at_stops_on_stop_pointid" add_index "vehicle_journey_at_stops", ["vehicle_journey_id"], :name => "index_vehicle_journey_at_stops_on_vehicle_journey_id" -- cgit v1.2.3 From 9bb9285e4afeb63b17e8ad4560fcfdc0e3d40d7b Mon Sep 17 00:00:00 2001 From: Luc Donnet Date: Mon, 2 Jul 2012 11:00:24 +0200 Subject: Fix bound s for line route and connection link Refs #32 --- app/maps/connection_link_map.rb | 8 ++------ app/maps/line_map.rb | 9 ++------- app/maps/route_map.rb | 13 +++---------- app/views/connection_links/_form.erb | 8 ++++---- 4 files changed, 11 insertions(+), 27 deletions(-) diff --git a/app/maps/connection_link_map.rb b/app/maps/connection_link_map.rb index 8071c5f0f..dd642c47d 100644 --- a/app/maps/connection_link_map.rb +++ b/app/maps/connection_link_map.rb @@ -21,7 +21,7 @@ class ConnectionLinkMap < ApplicationMap page << map.add_control( hover_control_display_name(:stop_areas_layer) ) #page << map.add_layer(kml_layer(connection_link, :styleMap => StyleMap::ConnectionLinkStyleMap.new( :style => connection_link_style).style_map)) #page << map.add_layer(kml_layer(polymorphic_path([referential, connection_link, :stop_areas], :format => :kml), :styleMap => StyleMap::StopAreasStyleMap.new.style_map)) - page << map.zoom_to_extent(bounds) if bounds + page << map.zoom_to_extent(bounds.to_google.to_openlayers) if bounds end end @@ -30,11 +30,7 @@ class ConnectionLinkMap < ApplicationMap end def bounds - @bounds ||= - begin - wgs84_bounds = Chouette::StopArea.bounds - OpenLayers::Bounds.new(wgs84_bounds.lower_corner.x, wgs84_bounds.lower_corner.y, wgs84_bounds.upper_corner.x, wgs84_bounds.upper_corner.y).transform(OpenLayers::Projection.new("EPSG:4326"), OpenLayers::Projection.new("EPSG:900913")) - end + @bounds ||= GeoRuby::SimpleFeatures::Point.bounds(connection_link.stop_areas.collect(&:geometry).compact) end end diff --git a/app/maps/line_map.rb b/app/maps/line_map.rb index e451f452d..60e6cb4fc 100644 --- a/app/maps/line_map.rb +++ b/app/maps/line_map.rb @@ -22,17 +22,12 @@ class LineMap < ApplicationMap page << map.add_layer(:stop_areas_layer) page << map.add_control( hover_control_display_name(:stop_areas_layer) ) - page << map.zoom_to_extent(bounds) if bounds + page << map.zoom_to_extent(bounds.to_google.to_openlayers) if bounds end end def bounds - @bounds ||= - begin - wgs84_bounds = GeoRuby::SimpleFeatures::Point.bounds(line.stop_areas.map(&:geometry)) - OpenLayers::Bounds.new(wgs84_bounds.lower_corner.x, wgs84_bounds.lower_corner.y, wgs84_bounds.upper_corner.x, wgs84_bounds.upper_corner.y).transform(OpenLayers::Projection.new("EPSG:4326"), OpenLayers::Projection.new("EPSG:900913")) if wgs84_bounds - end - + @bounds ||= GeoRuby::SimpleFeatures::Point.bounds(line.stop_areas.collect(&:geometry).compact) end def ready? diff --git a/app/maps/route_map.rb b/app/maps/route_map.rb index c28c22e62..daa3de23f 100644 --- a/app/maps/route_map.rb +++ b/app/maps/route_map.rb @@ -17,23 +17,16 @@ class RouteMap < ApplicationMap #page << map.add_layer(kml_layer(line, :styleMap => StyleMap::LineStyleMap.new( :style => line_style).style_map)) page << map.add_layer(kml_layer([route.referential, route.line, route], :styleMap => StyleMap::RouteStyleMap.new.style_map)) - page << map.zoom_to_extent(bounds) if bounds + page << map.zoom_to_extent(bounds.to_google.to_openlayers) if bounds end end def ready? - route_bounds.present? - end - - def route_bounds - @route_bound ||= (route.geometry.empty? ? Chouette::StopArea.bounds : route.geometry.envelope) + bounds.present? end def bounds - @bounds ||= OpenLayers::Bounds.new( - route_bounds.lower_corner.x, route_bounds.lower_corner.y, - route_bounds.upper_corner.x, route_bounds.upper_corner.y). - transform(OpenLayers::Projection.new("EPSG:4326"), OpenLayers::Projection.new("EPSG:900913")) + @bounds ||= GeoRuby::SimpleFeatures::Point.bounds(route.stop_areas.collect(&:geometry).compact) end end diff --git a/app/views/connection_links/_form.erb b/app/views/connection_links/_form.erb index a937f7197..dc4075015 100644 --- a/app/views/connection_links/_form.erb +++ b/app/views/connection_links/_form.erb @@ -5,10 +5,10 @@ <%= form.input :connection_link_type, :as => :select, :collection => Chouette::ConnectionLink.connection_link_types, :include_blank => false, :member_label => Proc.new { |type| t("connection_link_types.label.#{type}") } %> <%= form.input :comment %> <%= form.input :link_distance %> - <%= form.input :defaultduration, :as => :time ,:include_seconds => true , :label => @connection_link.human_attribute_name("default_duration")%> - <%= form.input :frequenttravellerduration, :as => :time ,:include_seconds => true , :label => @connection_link.human_attribute_name("frequent_traveller_duration")%> - <%= form.input :occasionaltravellerduration, :as => :time ,:include_seconds => true , :label => @connection_link.human_attribute_name("occasional_traveller_duration")%> - <%= form.input :mobilityrestrictedtravellerduration, :as => :time ,:include_seconds => true , :label => @connection_link.human_attribute_name("mobility_restricted_traveller_duration")%> + <%= form.input :defaultduration, :as => :time_select ,:include_seconds => true , :label => @connection_link.human_attribute_name("default_duration")%> + <%= form.input :frequenttravellerduration, :as => :time_select ,:include_seconds => true , :label => @connection_link.human_attribute_name("frequent_traveller_duration")%> + <%= form.input :occasionaltravellerduration, :as => :time_select ,:include_seconds => true , :label => @connection_link.human_attribute_name("occasional_traveller_duration")%> + <%= form.input :mobilityrestrictedtravellerduration, :as => :time_select ,:include_seconds => true , :label => @connection_link.human_attribute_name("mobility_restricted_traveller_duration")%> <%= form.input :mobility_restricted_suitability,:as => :boolean %> <%= form.input :stairs_availability,:as => :boolean %> <%= form.input :lift_availability,:as => :boolean %> -- cgit v1.2.3 From 99e470ff7316b68aeb116525cd531f7c1918a2be Mon Sep 17 00:00:00 2001 From: Michel Etienne Date: Mon, 2 Jul 2012 15:28:58 +0200 Subject: update ninoxe --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 5ceba6292..89f237f1c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,6 +1,6 @@ GIT remote: git://chouette.dryade.priv/ninoxe - revision: 1e309f84a378f19f8fb6d06d587eebfee266ae50 + revision: 8ea2541b6c007f8b4eba1c21cd1a55be95a86396 specs: ninoxe (0.0.8) GeoRuby -- cgit v1.2.3 From 8c79405c0e32c7717a66242b78d3e12a9f5b5908 Mon Sep 17 00:00:00 2001 From: Luc Donnet Date: Mon, 2 Jul 2012 15:30:07 +0200 Subject: Fix bounds for network map --- app/maps/network_map.rb | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/app/maps/network_map.rb b/app/maps/network_map.rb index cee54ed1b..4271133bb 100644 --- a/app/maps/network_map.rb +++ b/app/maps/network_map.rb @@ -21,16 +21,12 @@ class NetworkMap < ApplicationMap page << map.add_control( hover_control_display_name(:stop_areas_layer) ) #page << map.add_layer(kml_layer(network, :styleMap => StyleMap::NetworkStyleMap.new( :style => network_style).style_map)) - page << map.zoom_to_extent(bounds) if bounds + page << map.zoom_to_extent(bounds.to_google.to_openlayers) if bounds end end def bounds - @bounds ||= - begin - wgs84_bounds = Chouette::StopArea.bounds - OpenLayers::Bounds.new(wgs84_bounds.lower_corner.x, wgs84_bounds.lower_corner.y, wgs84_bounds.upper_corner.x, wgs84_bounds.upper_corner.y).transform(OpenLayers::Projection.new("EPSG:4326"), OpenLayers::Projection.new("EPSG:900913")) if wgs84_bounds - end + @bounds ||= GeoRuby::SimpleFeatures::Point.bounds(network.stop_areas.collect(&:geometry).compact) end def ready? -- cgit v1.2.3 From 38ff8bd04f55b38db3fa1332a52d7659e28f1f94 Mon Sep 17 00:00:00 2001 From: Michel Etienne Date: Tue, 3 Jul 2012 09:42:16 +0200 Subject: correct multiple select and conbined filters --- app/assets/stylesheets/lines.css.scss | 3 ++ app/assets/stylesheets/multiple_selection.scss | 10 ++--- app/views/lines/_line.erb | 4 +- app/views/stop_areas/index.html.erb | 1 + app/views/vehicle_journeys/_form.html.erb | 50 ++++++++++++------------ app/views/vehicle_journeys/_time_filter.html.erb | 2 + 6 files changed, 40 insertions(+), 30 deletions(-) diff --git a/app/assets/stylesheets/lines.css.scss b/app/assets/stylesheets/lines.css.scss index f66f8badd..c4ddcc9f7 100644 --- a/app/assets/stylesheets/lines.css.scss +++ b/app/assets/stylesheets/lines.css.scss @@ -44,6 +44,9 @@ font-weight: bold; padding-top: 21px; } + .name a { + display: inline; + } } } diff --git a/app/assets/stylesheets/multiple_selection.scss b/app/assets/stylesheets/multiple_selection.scss index 02f0dc513..6a5bdd54f 100644 --- a/app/assets/stylesheets/multiple_selection.scss +++ b/app/assets/stylesheets/multiple_selection.scss @@ -1,8 +1,8 @@ -input[type=checkbox].multiple_selection { - margin-left: 0px; - position: absolute; - top: 0px; -} +// input[type=checkbox].multiple_selection { +// margin-left: 0px; +// position: absolute; +// top: 0px; +// } #multiple_selection_menu { h3 { diff --git a/app/views/lines/_line.erb b/app/views/lines/_line.erb index 3565966fb..a3b5c1b86 100644 --- a/app/views/lines/_line.erb +++ b/app/views/lines/_line.erb @@ -6,8 +6,10 @@ <% end %> <% end %> +
    <%= check_box_tag "ids[]", line.id, false, :class => "multiple_selection", :style => "display: none;" %> - <%= link_to truncate(line.name, :length => 30), [@referential, line], :title => "Ligne #{line.name}" %> + <%= link_to truncate(line.name, :length => 30), [@referential, line], :title => "Ligne #{line.name}"%> +
    <%= line.human_attribute_name('network') %> <%= link_to_if line.network, line.network.name, referential_network_path(@referential, line.network), :title => "#{line.human_attribute_name('network')} #{line.network.name}" %> - <%= line.human_attribute_name('company') %> <%= link_to_if( line.company, line.company.name, referential_company_path(@referential, line.company), :title => "#{line.human_attribute_name('company')} #{line.company.name}" ) %> diff --git a/app/views/stop_areas/index.html.erb b/app/views/stop_areas/index.html.erb index d40f0d646..0d2a925cc 100644 --- a/app/views/stop_areas/index.html.erb +++ b/app/views/stop_areas/index.html.erb @@ -3,6 +3,7 @@ <%= search_form_for @q, :url => referential_stop_areas_path(@referential), :html => {:method => :get} do |f| %> <%= f.label :name_or_country_code_cont, "#{t('.name_or_country_code')} :" %> <%= f.text_field :name_or_country_code_cont %> + <%= f.hidden_field :area_type_eq %> <%= f.submit t('actions.search') %> <%= t("or") %> <%= link_to t("cancel"), referential_stop_areas_path(@referential) %> diff --git a/app/views/vehicle_journeys/_form.html.erb b/app/views/vehicle_journeys/_form.html.erb index 6258d634a..dada2c6ff 100644 --- a/app/views/vehicle_journeys/_form.html.erb +++ b/app/views/vehicle_journeys/_form.html.erb @@ -3,37 +3,39 @@ <%= form.input :journey_pattern, :as => :select, :collection => @route.journey_patterns, :include_blank => false, :member_label => Proc.new { |jp| journey_name(jp) } %> <%= form.input :published_journey_name %> <%= form.input :published_journey_identifier %> - <%= form.input :comment %> + <%= form.input :comment %> <%= form.input :transport_mode, :as => :select, :collection => Chouette::Line.transport_modes, :include_blank => true, :member_label => Proc.new { |mode| t("transport_modes.label.#{mode}") } %> <%= form.input :status_value %> <%= form.input :facility %> <%= form.input :vehicle_type_identifier%> <%= form.input :objectid, :input_html => { :disabled => !@vehicle_journey.new_record? } %> - <%= form.inputs :class => "stop_times", :name => @vehicle_journey.human_attribute_name(:vehicle_journey_at_stop_ids) do %> - - - - - - - - - - - <%= render :partial => "vehicle_journeys/vehicle_journey_at_stop_fields", - :collection => @vehicle_journey.vehicle_journey_at_stops, :as => :vehicle_journey_at_stop %> - -
    <%= t('.arrival') %><%= t('.stop_title') %><%= t('.departure') %>
    + <% if !@vehicle_journey.new_record? %> + <%= form.inputs :class => "stop_times", :name => @vehicle_journey.human_attribute_name(:vehicle_journey_at_stop_ids) do %> + + + + + + + + + + + <%= render :partial => "vehicle_journeys/vehicle_journey_at_stop_fields", + :collection => @vehicle_journey.vehicle_journey_at_stops, :as => :vehicle_journey_at_stop %> + +
    <%= t('.arrival') %><%= t('.stop_title') %><%= t('.departure') %>
    + <% end %> <% end %> - <%= form.input :time_table_tokens, :label => t('.time_tables'), :as => :text, :input_html => { :"data-pre" => ( @vehicle_journey.time_tables.map { |time_table| { :id => time_table.id, :name => time_table.comment } } ).to_json } %> + <%= form.input :time_table_tokens, :label => t('.time_tables'), :as => :text, :input_html => { :"data-pre" => ( @vehicle_journey.time_tables.map { |time_table| { :id => time_table.id, :name => time_table.comment } } ).to_json } %> <% end %> diff --git a/app/views/vehicle_journeys/_time_filter.html.erb b/app/views/vehicle_journeys/_time_filter.html.erb index 0f1e8d439..6767468ec 100644 --- a/app/views/vehicle_journeys/_time_filter.html.erb +++ b/app/views/vehicle_journeys/_time_filter.html.erb @@ -6,6 +6,8 @@ :prefix => "q", :field_name => "vehicle_journey_at_stops_departure_time_gt(4i)") %> <%= select_minute(@q.send( "vehicle_journey_at_stops_departure_time_gt") ? @q.send( "vehicle_journey_at_stops_departure_time_gt").min : 0, :prefix => "q", :field_name => "vehicle_journey_at_stops_departure_time_gt(5i)") %> + <%= f.hidden_field :journey_pattern_id_eq %> + <%= f.hidden_field :time_tables_comment_eq %> <%= f.submit t('.time_range_filter') %> <% end %> -- cgit v1.2.3 From 765e337d29a75e62723dd00c8663d1ed3bbc8bab Mon Sep 17 00:00:00 2001 From: Michel Etienne Date: Tue, 3 Jul 2012 11:37:25 +0200 Subject: add info on iteration and validation title --- app/views/help/index.textile | 12 ++++++------ config/locales/file_validations.yml | 4 ++++ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app/views/help/index.textile b/app/views/help/index.textile index 838689df3..231807ec7 100644 --- a/app/views/help/index.textile +++ b/app/views/help/index.textile @@ -3,7 +3,7 @@ layout: default title: Présentation --- -Chouette v2 : itération 8 du 19/06/2012 +Chouette v2 : itération 9 du 03/07/2012 Cette itération présente les formulaires de : @@ -19,8 +19,9 @@ Cette itération présente les formulaires de : ** ITL * calendriers d'application * correspondances -* imports Neptune et CSV -* exports Neptune +* imports +* exports +* validation Neptune l'avancement actuel permet de : @@ -37,13 +38,12 @@ l'avancement actuel permet de : ** ajouter, modifier les missions de la séquence ** afficher, ajouter, modifier, supprimer des courses/horaires * préciser des paramètres généraux de l'espace de données - +* valider un fichier neptune les actions suivantes ne sont pas encore disponible : -* afficher le fond Géoportail -* exports de données à d'autres formats que Neptune (GTFS/CSV) * définir l'emprise générale du réseau * gérer le second référentiel de projection * afficher des informations dans le tableau de bord +* créer des courses par translation diff --git a/config/locales/file_validations.yml b/config/locales/file_validations.yml index 0e0dc1fd2..f979b2bbb 100644 --- a/config/locales/file_validations.yml +++ b/config/locales/file_validations.yml @@ -1,5 +1,7 @@ en: file_validations: + index: + title: Neptune Validations edit: title: "Edit the Validation" show: @@ -44,6 +46,8 @@ en: fr: file_validations: + index: + title: Validations Neptune edit: title: "Editer la validation" show: -- cgit v1.2.3 From dcdc2b459213abe20ac6d154610eba0e72301200 Mon Sep 17 00:00:00 2001 From: Michel Etienne Date: Tue, 3 Jul 2012 14:33:30 +0200 Subject: add vaidation icons --- app/assets/images/file-validation-completed.png | Bin 0 -> 5658 bytes app/assets/images/file-validation-failed.png | Bin 0 -> 6715 bytes app/assets/images/file-validation-pending.png | Bin 0 -> 7767 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 app/assets/images/file-validation-completed.png create mode 100644 app/assets/images/file-validation-failed.png create mode 100644 app/assets/images/file-validation-pending.png diff --git a/app/assets/images/file-validation-completed.png b/app/assets/images/file-validation-completed.png new file mode 100644 index 000000000..242d68d3b Binary files /dev/null and b/app/assets/images/file-validation-completed.png differ diff --git a/app/assets/images/file-validation-failed.png b/app/assets/images/file-validation-failed.png new file mode 100644 index 000000000..e50298a77 Binary files /dev/null and b/app/assets/images/file-validation-failed.png differ diff --git a/app/assets/images/file-validation-pending.png b/app/assets/images/file-validation-pending.png new file mode 100644 index 000000000..2d19124c0 Binary files /dev/null and b/app/assets/images/file-validation-pending.png differ -- cgit v1.2.3 From a979d088d7c9e901b2fbdbda8a3e4362870bff73 Mon Sep 17 00:00:00 2001 From: Alban Peignier Date: Tue, 3 Jul 2012 16:34:45 +0200 Subject: Log ENV to debug RAILS_RELATIVE_URL_ROOT. Refs #4 --- app/controllers/stop_areas_controller.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/controllers/stop_areas_controller.rb b/app/controllers/stop_areas_controller.rb index 8d68fd1d5..71fa602cc 100644 --- a/app/controllers/stop_areas_controller.rb +++ b/app/controllers/stop_areas_controller.rb @@ -68,6 +68,9 @@ class StopAreasController < ChouetteController alias_method :stop_area, :resource def map + ENV.each do |key, value| + Rails.logger.info "ENV['#{key}'] = '#{value}'" + end @map = StopAreaMap.new(stop_area).with_helpers(self) end -- cgit v1.2.3 From 2ebd042fc74919dc21e40c9faffb6e785a255b56 Mon Sep 17 00:00:00 2001 From: Michel Etienne Date: Tue, 3 Jul 2012 16:55:34 +0200 Subject: add route link on stop_area view --- Gemfile.github | 20 +++++++++++--------- Gemfile.lock | 2 +- app/views/stop_areas/show.html.erb | 15 +++++++++++++++ config/routes.rb | 2 +- 4 files changed, 28 insertions(+), 11 deletions(-) diff --git a/Gemfile.github b/Gemfile.github index 5f9acce31..b2c77f9aa 100644 --- a/Gemfile.github +++ b/Gemfile.github @@ -1,17 +1,17 @@ source 'http://rubygems.org' gem 'rails', '3.1.3' -gem 'jquery-rails' gem 'devise' gem "ffi-proj4", :git => 'git://github.com/dryade/ffi-proj4.git' -gem "jruby-rack-worker" platforms :jruby do gem 'activerecord-jdbcpostgresql-adapter', :git => 'git://github.com/dryade/activerecord-jdbc-adapter.git' gem 'activerecord-jdbcsqlite3-adapter' gem 'jruby-openssl' + gem "jruby-rack-worker" gem 'warbler' + gem "jruby-rack-worker" end platforms :ruby do @@ -25,21 +25,22 @@ gem "georuby-ext", :git => 'git://github.com/dryade/georuby-ext.git' gem 'user_interface', :git => 'git://github.com/dryade/user-interface.git' gem 'json' gem 'cocoon' -gem 'formtastic', '2.0.2' +gem 'formtastic' gem 'inherited_resources' gem 'will_paginate', '~> 3.0' -# gem 'will-paginate-i18n','~> 0.1.5' gem 'ransack' gem 'squeel' gem 'RedCloth' +gem 'jquery-rails' +gem "modernizr-rails", "~> 2.0.6" gem "acts_as_tree", :git => "git://github.com/dryade/acts_as_tree.git" -gem 'apartment', :git => 'git://github.com/dryade/apartment.git' -gem 'ninoxe', :git => 'git://github.com/dryade/ninoxe.git' +gem 'ninoxe', :git => 'git://github.com/ninoxe.git' gem 'acts_as_list', '0.1.6' -gem 'composite_primary_keys', '4.1.2' +gem 'composite_primary_keys', '4.1.2' gem 'delayed_job_active_record' +gem 'apartment',:git => 'git://github.com/dryade/apartment.git' # Gems used only for assets and not required # in production environments by default. @@ -48,7 +49,8 @@ group :assets do gem 'coffee-rails', '~> 3.1.1' gem 'coffee-script-source' gem 'uglifier', '>= 1.0.3' - gem 'therubyrhino' + gem 'therubyrhino', :platform => :jruby + gem 'therubyracer', :platform => :ruby end group :development do @@ -69,7 +71,7 @@ end group :test do gem 'capybara' gem 'launchy' - gem 'database_cleaner' + gem 'database_cleaner', :git => 'git://github.com/dnagir/database_cleaner.git', :branch => 'postgre_jruby_issue' gem 'factory_girl_rails', '1.7' end diff --git a/Gemfile.lock b/Gemfile.lock index 89f237f1c..562e905ec 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,6 +1,6 @@ GIT remote: git://chouette.dryade.priv/ninoxe - revision: 8ea2541b6c007f8b4eba1c21cd1a55be95a86396 + revision: a8067d3063e01019d6599489781eb6ec4415890c specs: ninoxe (0.0.8) GeoRuby diff --git a/app/views/stop_areas/show.html.erb b/app/views/stop_areas/show.html.erb index 17c074f60..5f4bdb0d1 100644 --- a/app/views/stop_areas/show.html.erb +++ b/app/views/stop_areas/show.html.erb @@ -138,6 +138,21 @@
    <% end %> + <% elsif @stop_area.routes.present? %> + +
    + <% @stop_area.routes.each do |route| %> +
    + <%= link_to([@referential, route.line ]) do %> + <%= route.line.number %> + <% end %> +   + <%= link_to([@referential, route.line , route]) do %> + <%= route.name %> + <% end %> +
    + <% end %> +
    <% end %> diff --git a/config/routes.rb b/config/routes.rb index 90e29a039..ee583f1b6 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -59,7 +59,7 @@ ChouetteIhm::Application.routes.draw do end end - resources :companies, :stop_areas + resources :companies resources :time_tables do collection do -- cgit v1.2.3 From e59dc611c392976b654d3fbde34188dae97a657b Mon Sep 17 00:00:00 2001 From: Michel Etienne Date: Wed, 4 Jul 2012 10:42:10 +0200 Subject: add object count to dashboard --- app/assets/stylesheets/referentials.css.scss | 14 +++++++++++ app/controllers/referentials_controller.rb | 6 +++++ app/views/referentials/show.html.erb | 35 ++++++++++++++++++++++++++++ config/locales/referentials.yml | 26 +++++++++++++++++++++ 4 files changed, 81 insertions(+) diff --git a/app/assets/stylesheets/referentials.css.scss b/app/assets/stylesheets/referentials.css.scss index dd03adb05..26d0411ba 100644 --- a/app/assets/stylesheets/referentials.css.scss +++ b/app/assets/stylesheets/referentials.css.scss @@ -7,6 +7,20 @@ .summary p label { font-weight: bold; } + + .count td { + border: 1px solid #61970b; + padding-left: 5px; + padding-right: 5px; + } + .count thead td { + background: #61970b; + color: white; + } + .value { + text-align: right; + } + } diff --git a/app/controllers/referentials_controller.rb b/app/controllers/referentials_controller.rb index a5e3b7247..face0663f 100644 --- a/app/controllers/referentials_controller.rb +++ b/app/controllers/referentials_controller.rb @@ -1,4 +1,10 @@ class ReferentialsController < InheritedResources::Base respond_to :html + def show + resource.switch + show! + end + + end diff --git a/app/views/referentials/show.html.erb b/app/views/referentials/show.html.erb index 2f2afdbed..59beb0c3f 100644 --- a/app/views/referentials/show.html.erb +++ b/app/views/referentials/show.html.erb @@ -17,6 +17,41 @@ <%= @referential.time_zone %>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    <%= t(".objects") %><%= t(".count") %>
    <%= Referential.human_attribute_name("networks") %> <%= @referential.networks.size %> +
    <%= Referential.human_attribute_name("lines") %> <%= @referential.lines.size %> +
    <%= Referential.human_attribute_name("companies") %> <%= @referential.companies.size %> +
    <%= Referential.human_attribute_name("stop_areas") %> <%= @referential.stop_areas.size %> +
    <%= Referential.human_attribute_name("time_tables") %> <%= @referential.time_tables.size %> +
    <%= Referential.human_attribute_name("connection_links") %> <%= @referential.connection_links.size %> +
    <% content_for :sidebar do %> diff --git a/config/locales/referentials.yml b/config/locales/referentials.yml index 3b78f495c..379e00fc7 100644 --- a/config/locales/referentials.yml +++ b/config/locales/referentials.yml @@ -4,6 +4,8 @@ en: title: "Edit the data space" show: title: Data space + objects: Data space elements + count: count new: title: Create a new data space submit: "Create a data space" @@ -22,6 +24,17 @@ en: prefix: Neptune Object Id prefix projection_type: Optional spatial reference system code (SRID) time_zone: time zone + networks: Networks + lines: Lines + companies: Companies + stop_areas: Stop Areas + time_tables: Time tables + connection_links: Connection links + quays: quays + boarding_positions: boarding positions + commercial_stops: commercial stops + stop_places: stop places + itls: routing contraints formtastic: hints: referential: @@ -35,6 +48,8 @@ fr: title: "Modifier l'espace de données" show: title: Espace de données + objects: Eléments + count: Qté new: title: Créer un nouvel espace de données submit: "Créer un espace de données" @@ -53,6 +68,17 @@ fr: prefix: Préfixe des identifiants Neptune projection_type: Système de référence spatiale optionnel (SRID) time_zone: Fuseau horaire + networks: Réseaux + lines: Lignes + companies: Transporteurs + stop_areas: Arrêts + time_tables: Calendriers + connection_links: Correspondances + quays: quais + boarding_positions: "points d'embarquement" + commercial_stops: arrêts commerciaux + stop_places: "pôles d'échange" + itls: ITL formtastic: hints: referential: -- cgit v1.2.3 From cd62749d183a3215bd8d82677d8a0afc135bc318 Mon Sep 17 00:00:00 2001 From: Alban Peignier Date: Thu, 5 Jul 2012 15:54:21 +0200 Subject: Use RAILS_RELATIVE_URL_ROOT as scope in routes. Refs #4 --- config/routes.rb | 187 ++++++++++++++++++++----------------------------------- 1 file changed, 67 insertions(+), 120 deletions(-) diff --git a/config/routes.rb b/config/routes.rb index 90e29a039..1ea01c84f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,75 +1,62 @@ ChouetteIhm::Application.routes.draw do - devise_for :users - - # The priority is based upon order of creation: - # first created -> highest priority. - - # Sample of regular route: - # match 'products/:id' => 'catalog#view' - # Keep in mind you can assign values other than :controller and :action - - # Sample of named route: - # match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase - # This route can be invoked with purchase_url(:id => product.id) - - # Sample resource route (maps HTTP verbs to controller actions automatically): - # resources :products - - resources :file_validations - - resources :referentials do - resources :stop_point_areas - match 'lines' => 'lines#destroy_all', :via => :delete - resources :lines, :networks do - resources :stop_areas do - resources :stop_area_parents - resources :stop_area_children - resources :stop_area_routing_lines - resources :stop_area_routing_stops - member do - get 'add_children' - get 'select_parent' - get 'add_routing_lines' - get 'add_routing_stops' - end - end - resources :routes do - resources :journey_patterns do + scope ENV['RAILS_RELATIVE_URL_ROOT'] || '/' do + devise_for :users + + resources :file_validations + + resources :referentials do + resources :stop_point_areas + match 'lines' => 'lines#destroy_all', :via => :delete + resources :lines, :networks do + resources :stop_areas do + resources :stop_area_parents + resources :stop_area_children + resources :stop_area_routing_lines + resources :stop_area_routing_stops member do - get 'new_vehicle_journey' + get 'add_children' + get 'select_parent' + get 'add_routing_lines' + get 'add_routing_stops' end - end - resources :vehicle_journeys do - member do - get 'select_journey_pattern' + end + resources :routes do + resources :journey_patterns do + member do + get 'new_vehicle_journey' + end end - end - resources :stop_points do - collection do + resources :vehicle_journeys do + member do + get 'select_journey_pattern' + end + end + resources :stop_points do + collection do post :sort + end end end end - end - resources :imports - resources :exports do - collection do - get 'references' + resources :imports + resources :exports do + collection do + get 'references' + end end - end - resources :companies, :stop_areas - - resources :time_tables do - collection do - get :comment_filter + resources :companies, :stop_areas + + resources :time_tables do + collection do + get :comment_filter + end + resources :time_table_dates + resources :time_table_periods end - resources :time_table_dates - resources :time_table_periods - end - resources :stop_areas do + resources :stop_areas do resources :stop_area_parents resources :stop_area_children resources :stop_area_routing_lines @@ -80,71 +67,31 @@ ChouetteIhm::Application.routes.draw do get 'add_routing_lines' get 'add_routing_stops' end - end - - resources :connection_links do - resources :connection_link_areas - member do - get 'select_areas' end - resources :stop_areas do - resources :stop_area_parents - resources :stop_area_children - resources :stop_area_routing_lines - resources :stop_area_routing_stops + + resources :connection_links do + resources :connection_link_areas member do - get 'add_children' - get 'select_parent' - get 'add_routing_lines' - get 'add_routing_stops' + get 'select_areas' end - end - end - - end - - match '/help/(*slug)' => 'help#show' - - # Sample resource route with options: - # resources :products do - # member do - # get 'short' - # post 'toggle' - # end - # - # collection do - # get 'sold' - # end - # end - - # Sample resource route with sub-resources: - # resources :products do - # resources :comments, :sales - # resource :seller - # end - - # Sample resource route with more complex sub-resources - # resources :products do - # resources :comments - # resources :sales do - # get 'recent', :on => :collection - # end - # end - - # Sample resource route within a namespace: - # namespace :admin do - # # Directs /admin/products/* to Admin::ProductsController - # # (app/controllers/admin/products_controller.rb) - # resources :products - # end + resources :stop_areas do + resources :stop_area_parents + resources :stop_area_children + resources :stop_area_routing_lines + resources :stop_area_routing_stops + member do + get 'add_children' + get 'select_parent' + get 'add_routing_lines' + get 'add_routing_stops' + end + end + end - # You can have the root of your site routed with "root" - # just remember to delete public/index.html. - root :to => 'referentials#index' + end - # See how all your routes lay out with "rake routes" + match '/help/(*slug)' => 'help#show' - # This is a legacy wild controller route that's not recommended for RESTful applications. - # Note: This route will make all actions in every controller accessible via GET requests. - # match ':controller(/:action(/:id(.:format)))' + root :to => 'referentials#index' + end end -- cgit v1.2.3 From 9c3bdd3da00322e8dd0d1b7223f93dc200967d6b Mon Sep 17 00:00:00 2001 From: Michel Etienne Date: Thu, 5 Jul 2012 16:04:50 +0200 Subject: add test descriptions for validation --- app/assets/stylesheets/test_sheet.css.scss | 452 ++++++++++++++++ app/controllers/file_validations_controller.rb | 9 + app/controllers/test_sheet_controller.rb | 14 + app/helpers/application_helper.rb | 8 + app/models/test_sheet_page.rb | 40 ++ .../file_validations/_test_sheet_toc.html.erb | 23 + app/views/file_validations/new.html.erb | 6 + app/views/file_validations/show.html.erb | 2 + app/views/layouts/_user_links.erb | 2 +- app/views/layouts/application.html.erb | 8 +- app/views/test_sheet/1.1.html | 297 +++++++++++ app/views/test_sheet/1.2.html | 335 ++++++++++++ app/views/test_sheet/2.1.html | 500 ++++++++++++++++++ app/views/test_sheet/2.10.html | 282 ++++++++++ app/views/test_sheet/2.11.html | 304 +++++++++++ app/views/test_sheet/2.12.html | 287 +++++++++++ app/views/test_sheet/2.13.html | 299 +++++++++++ app/views/test_sheet/2.14.html | 399 ++++++++++++++ app/views/test_sheet/2.15.html | 463 +++++++++++++++++ app/views/test_sheet/2.16.html | 305 +++++++++++ app/views/test_sheet/2.17.html | 310 +++++++++++ app/views/test_sheet/2.18.html | 549 ++++++++++++++++++++ app/views/test_sheet/2.19.html | 322 ++++++++++++ app/views/test_sheet/2.2.html | 286 +++++++++++ app/views/test_sheet/2.20.html | 336 ++++++++++++ app/views/test_sheet/2.21.html | 325 ++++++++++++ app/views/test_sheet/2.22.html | 350 +++++++++++++ app/views/test_sheet/2.23.html | 354 +++++++++++++ app/views/test_sheet/2.24.html | 282 ++++++++++ app/views/test_sheet/2.25.html | 320 ++++++++++++ app/views/test_sheet/2.26.html | 351 +++++++++++++ app/views/test_sheet/2.27.html | 345 +++++++++++++ app/views/test_sheet/2.28.html | 399 ++++++++++++++ app/views/test_sheet/2.3.html | 354 +++++++++++++ app/views/test_sheet/2.4.html | 367 +++++++++++++ app/views/test_sheet/2.5.html | 465 +++++++++++++++++ app/views/test_sheet/2.6.html | 355 +++++++++++++ app/views/test_sheet/2.7.html | 322 ++++++++++++ app/views/test_sheet/2.8.html | 572 +++++++++++++++++++++ app/views/test_sheet/2.9.html | 298 +++++++++++ app/views/test_sheet/3.1.html | 244 +++++++++ app/views/test_sheet/3.10.html | 432 ++++++++++++++++ app/views/test_sheet/3.11.html | 257 +++++++++ app/views/test_sheet/3.12.html | 255 +++++++++ app/views/test_sheet/3.13.html | 278 ++++++++++ app/views/test_sheet/3.14.html | 258 ++++++++++ app/views/test_sheet/3.15.html | 286 +++++++++++ app/views/test_sheet/3.16.html | 465 +++++++++++++++++ app/views/test_sheet/3.17.html | 242 +++++++++ app/views/test_sheet/3.18.html | 257 +++++++++ app/views/test_sheet/3.19.html | 242 +++++++++ app/views/test_sheet/3.2.html | 254 +++++++++ app/views/test_sheet/3.20.html | 257 +++++++++ app/views/test_sheet/3.21.html | 282 ++++++++++ app/views/test_sheet/3.3.html | 246 +++++++++ app/views/test_sheet/3.4.html | 239 +++++++++ app/views/test_sheet/3.5.html | 239 +++++++++ app/views/test_sheet/3.6.html | 260 ++++++++++ app/views/test_sheet/3.7.html | 256 +++++++++ app/views/test_sheet/3.8.html | 283 ++++++++++ app/views/test_sheet/3.9.html | 260 ++++++++++ app/views/test_sheet/show.html.erb | 7 + app/views/test_sheet/toc.html | 56 ++ config/routes.rb | 1 + 64 files changed, 17151 insertions(+), 2 deletions(-) create mode 100644 app/assets/stylesheets/test_sheet.css.scss create mode 100644 app/controllers/test_sheet_controller.rb create mode 100644 app/models/test_sheet_page.rb create mode 100644 app/views/file_validations/_test_sheet_toc.html.erb create mode 100644 app/views/test_sheet/1.1.html create mode 100644 app/views/test_sheet/1.2.html create mode 100644 app/views/test_sheet/2.1.html create mode 100644 app/views/test_sheet/2.10.html create mode 100644 app/views/test_sheet/2.11.html create mode 100644 app/views/test_sheet/2.12.html create mode 100644 app/views/test_sheet/2.13.html create mode 100644 app/views/test_sheet/2.14.html create mode 100644 app/views/test_sheet/2.15.html create mode 100644 app/views/test_sheet/2.16.html create mode 100644 app/views/test_sheet/2.17.html create mode 100644 app/views/test_sheet/2.18.html create mode 100644 app/views/test_sheet/2.19.html create mode 100644 app/views/test_sheet/2.2.html create mode 100644 app/views/test_sheet/2.20.html create mode 100644 app/views/test_sheet/2.21.html create mode 100644 app/views/test_sheet/2.22.html create mode 100644 app/views/test_sheet/2.23.html create mode 100644 app/views/test_sheet/2.24.html create mode 100644 app/views/test_sheet/2.25.html create mode 100644 app/views/test_sheet/2.26.html create mode 100644 app/views/test_sheet/2.27.html create mode 100644 app/views/test_sheet/2.28.html create mode 100644 app/views/test_sheet/2.3.html create mode 100644 app/views/test_sheet/2.4.html create mode 100644 app/views/test_sheet/2.5.html create mode 100644 app/views/test_sheet/2.6.html create mode 100644 app/views/test_sheet/2.7.html create mode 100644 app/views/test_sheet/2.8.html create mode 100644 app/views/test_sheet/2.9.html create mode 100644 app/views/test_sheet/3.1.html create mode 100644 app/views/test_sheet/3.10.html create mode 100644 app/views/test_sheet/3.11.html create mode 100644 app/views/test_sheet/3.12.html create mode 100644 app/views/test_sheet/3.13.html create mode 100644 app/views/test_sheet/3.14.html create mode 100644 app/views/test_sheet/3.15.html create mode 100644 app/views/test_sheet/3.16.html create mode 100644 app/views/test_sheet/3.17.html create mode 100644 app/views/test_sheet/3.18.html create mode 100644 app/views/test_sheet/3.19.html create mode 100644 app/views/test_sheet/3.2.html create mode 100644 app/views/test_sheet/3.20.html create mode 100644 app/views/test_sheet/3.21.html create mode 100644 app/views/test_sheet/3.3.html create mode 100644 app/views/test_sheet/3.4.html create mode 100644 app/views/test_sheet/3.5.html create mode 100644 app/views/test_sheet/3.6.html create mode 100644 app/views/test_sheet/3.7.html create mode 100644 app/views/test_sheet/3.8.html create mode 100644 app/views/test_sheet/3.9.html create mode 100644 app/views/test_sheet/show.html.erb create mode 100644 app/views/test_sheet/toc.html diff --git a/app/assets/stylesheets/test_sheet.css.scss b/app/assets/stylesheets/test_sheet.css.scss new file mode 100644 index 000000000..47190b119 --- /dev/null +++ b/app/assets/stylesheets/test_sheet.css.scss @@ -0,0 +1,452 @@ +#workspace.test_sheet { + /* Font Definitions */ + @font-face + {font-family:Wingdings; + panose-1:5 0 0 0 0 0 0 0 0 0;} +@font-face + {font-family:"Cambria Math"; + panose-1:2 4 5 3 5 4 6 3 2 4;} +@font-face + {font-family:Cambria; + panose-1:2 4 5 3 5 4 6 3 2 4;} +@font-face + {font-family:Calibri; + panose-1:2 15 5 2 2 2 4 3 2 4;} +@font-face + {font-family:Tahoma; + panose-1:2 11 6 4 3 5 4 4 2 4;} +@font-face + {font-family:Monospace;} +@font-face + {font-family:"MIKJPD+Arial\,Bold"; + panose-1:0 0 0 0 0 0 0 0 0 0;} +@font-face + {font-family:StarSymbol;} +@font-face + {font-family:"Arial Narrow"; + panose-1:2 11 6 6 2 2 2 3 2 4;} +@font-face + {font-family:"\@Monospace";} + /* Style Definitions */ + p.MsoNormal, li.MsoNormal, div.MsoNormal + {margin:0cm; + margin-bottom:.0001pt; + font-size:12.0pt; + font-family:"Times New Roman","serif";} +h1 + {margin:0cm; + margin-bottom:.0001pt; + text-align:justify; + page-break-after:avoid; + font-size:14.0pt; + font-family:"Arial","sans-serif"; + font-weight:bold;} +h2 + {margin:0cm; + margin-bottom:.0001pt; + text-align:justify; + page-break-after:avoid; + font-size:16.0pt; + font-family:"Arial","sans-serif"; + font-weight:bold;} +h3 + {margin:0cm; + margin-bottom:.0001pt; + text-indent:35.4pt; + page-break-after:avoid; + font-size:12.0pt; + font-family:"Arial","sans-serif"; + font-weight:bold;} +h4 + {margin:0cm; + margin-bottom:.0001pt; + text-align:justify; + text-indent:35.4pt; + page-break-after:avoid; + font-size:12.0pt; + font-family:"Arial","sans-serif"; + font-weight:bold;} +h5 + {margin-top:0cm; + margin-right:0cm; + margin-bottom:0cm; + margin-left:18.0pt; + margin-bottom:.0001pt; + text-indent:-18.0pt; + page-break-after:avoid; + font-size:14.0pt; + font-family:"Arial","sans-serif"; + font-weight:bold;} +h6 + {margin-top:0cm; + margin-right:0cm; + margin-bottom:0cm; + margin-left:39.6pt; + margin-bottom:.0001pt; + text-indent:-21.6pt; + font-size:12.0pt; + font-family:"Arial","sans-serif"; + font-weight:bold;} +p.MsoHeading7, li.MsoHeading7, div.MsoHeading7 + {margin-top:0cm; + margin-right:0cm; + margin-bottom:0cm; + margin-left:61.2pt; + margin-bottom:.0001pt; + text-indent:-25.2pt; + page-break-after:avoid; + font-size:12.0pt; + font-family:"Arial","sans-serif"; + font-weight:bold;} +p.MsoHeading8, li.MsoHeading8, div.MsoHeading8 + {margin-top:12.0pt; + margin-right:0cm; + margin-bottom:3.0pt; + margin-left:86.4pt; + text-indent:-32.4pt; + font-size:12.0pt; + font-family:"Times New Roman","serif"; + font-style:italic;} +p.MsoHeading9, li.MsoHeading9, div.MsoHeading9 + {margin-top:12.0pt; + margin-right:0cm; + margin-bottom:3.0pt; + margin-left:0cm; + font-size:11.0pt; + font-family:"Arial","sans-serif";} +p.MsoToc1, li.MsoToc1, div.MsoToc1 + {margin-top:6.0pt; + margin-right:0cm; + margin-bottom:0cm; + margin-left:0cm; + margin-bottom:.0001pt; + font-size:12.0pt; + font-family:"Calibri","sans-serif"; + font-weight:bold; + font-style:italic;} +p.MsoToc2, li.MsoToc2, div.MsoToc2 + {margin-top:6.0pt; + margin-right:0cm; + margin-bottom:0cm; + margin-left:12.0pt; + margin-bottom:.0001pt; + font-size:11.0pt; + font-family:"Calibri","sans-serif"; + font-weight:bold;} +p.MsoToc3, li.MsoToc3, div.MsoToc3 + {margin-top:0cm; + margin-right:0cm; + margin-bottom:0cm; + margin-left:24.0pt; + margin-bottom:.0001pt; + font-size:10.0pt; + font-family:"Calibri","sans-serif";} +p.MsoToc4, li.MsoToc4, div.MsoToc4 + {margin-top:0cm; + margin-right:0cm; + margin-bottom:0cm; + margin-left:36.0pt; + margin-bottom:.0001pt; + font-size:10.0pt; + font-family:"Calibri","sans-serif";} +p.MsoToc5, li.MsoToc5, div.MsoToc5 + {margin-top:0cm; + margin-right:0cm; + margin-bottom:0cm; + margin-left:48.0pt; + margin-bottom:.0001pt; + font-size:10.0pt; + font-family:"Calibri","sans-serif";} +p.MsoToc6, li.MsoToc6, div.MsoToc6 + {margin-top:0cm; + margin-right:0cm; + margin-bottom:0cm; + margin-left:60.0pt; + margin-bottom:.0001pt; + font-size:10.0pt; + font-family:"Calibri","sans-serif";} +p.MsoToc7, li.MsoToc7, div.MsoToc7 + {margin-top:0cm; + margin-right:0cm; + margin-bottom:0cm; + margin-left:72.0pt; + margin-bottom:.0001pt; + font-size:10.0pt; + font-family:"Calibri","sans-serif";} +p.MsoToc8, li.MsoToc8, div.MsoToc8 + {margin-top:0cm; + margin-right:0cm; + margin-bottom:0cm; + margin-left:84.0pt; + margin-bottom:.0001pt; + font-size:10.0pt; + font-family:"Calibri","sans-serif";} +p.MsoToc9, li.MsoToc9, div.MsoToc9 + {margin-top:0cm; + margin-right:0cm; + margin-bottom:0cm; + margin-left:96.0pt; + margin-bottom:.0001pt; + font-size:10.0pt; + font-family:"Calibri","sans-serif";} +p.MsoFootnoteText, li.MsoFootnoteText, div.MsoFootnoteText + {margin:0cm; + margin-bottom:.0001pt; + font-size:10.0pt; + font-family:"Times New Roman","serif";} +p.MsoCommentText, li.MsoCommentText, div.MsoCommentText + {margin:0cm; + margin-bottom:.0001pt; + font-size:10.0pt; + font-family:"Times New Roman","serif";} +p.MsoHeader, li.MsoHeader, div.MsoHeader + {margin:0cm; + margin-bottom:.0001pt; + font-size:12.0pt; + font-family:"Times New Roman","serif";} +p.MsoFooter, li.MsoFooter, div.MsoFooter + {margin:0cm; + margin-bottom:.0001pt; + font-size:12.0pt; + font-family:"Times New Roman","serif";} +span.MsoFootnoteReference + {vertical-align:super;} +p.MsoTitle, li.MsoTitle, div.MsoTitle + {margin:0cm; + margin-bottom:.0001pt; + text-align:center; + font-size:18.0pt; + font-family:"Arial","sans-serif"; + font-weight:bold;} +p.MsoBodyText, li.MsoBodyText, div.MsoBodyText + {margin:0cm; + margin-bottom:.0001pt; + text-align:justify; + font-size:11.0pt; + font-family:"Arial","sans-serif";} +p.MsoSubtitle, li.MsoSubtitle, div.MsoSubtitle + {margin-top:0cm; + margin-right:0cm; + margin-bottom:3.0pt; + margin-left:0cm; + text-align:center; + font-size:12.0pt; + font-family:"Arial","sans-serif";} +p.MsoBodyText2, li.MsoBodyText2, div.MsoBodyText2 + {margin-top:0cm; + margin-right:0cm; + margin-bottom:6.0pt; + margin-left:0cm; + line-height:200%; + font-size:12.0pt; + font-family:"Times New Roman","serif";} +p.MsoBodyText3, li.MsoBodyText3, div.MsoBodyText3 + {margin:0cm; + margin-bottom:.0001pt; + text-align:center; + font-size:11.0pt; + font-family:"Times New Roman","serif";} +a:link, span.MsoHyperlink + {color:blue; + text-decoration:underline;} +a:visited, span.MsoHyperlinkFollowed + {color:purple; + text-decoration:underline;} +p + {margin-right:0cm; + margin-left:0cm; + font-size:12.0pt; + font-family:"Times New Roman","serif";} +pre + {margin:0cm; + margin-bottom:.0001pt; + font-size:10.0pt; + font-family:"Courier New";} +p.MsoAcetate, li.MsoAcetate, div.MsoAcetate + {margin:0cm; + margin-bottom:.0001pt; + font-size:8.0pt; + font-family:"Tahoma","sans-serif";} +p.MsoTocHeading, li.MsoTocHeading, div.MsoTocHeading + {margin-top:24.0pt; + margin-right:0cm; + margin-bottom:0cm; + margin-left:0cm; + margin-bottom:.0001pt; + line-height:115%; + page-break-after:avoid; + font-size:14.0pt; + font-family:"Cambria","serif"; + color:#365F91; + font-weight:bold;} +p.Default, li.Default, div.Default + {mso-style-name:Default; + margin:0cm; + margin-bottom:.0001pt; + text-autospace:none; + font-size:12.0pt; + font-family:"MIKJPD+Arial,Bold","sans-serif"; + color:black;} +span.enteteexemplexml + {mso-style-name:enteteexemplexml;} +span.tag + {mso-style-name:tag;} +p.Titredetableau, li.Titredetableau, div.Titredetableau + {mso-style-name:"Titre de tableau"; + margin:0cm; + margin-bottom:.0001pt; + text-align:center; + font-size:12.0pt; + font-family:"Times New Roman","serif"; + font-weight:bold;} +p.Contenuducadre, li.Contenuducadre, div.Contenuducadre + {mso-style-name:"Contenu du cadre"; + margin-top:0cm; + margin-right:0cm; + margin-bottom:6.0pt; + margin-left:0cm; + font-size:12.0pt; + font-family:"Times New Roman","serif";} + /* Page Definitions */ + @page WordSection1 + {size:595.25pt 841.85pt; + margin:70.85pt 70.85pt 44.95pt 70.85pt;} +div.WordSection1 + {page:WordSection1;} +@page WordSection2 + {size:595.25pt 841.85pt; + margin:70.85pt 70.85pt 44.95pt 70.85pt;} +div.WordSection2 + {page:WordSection2;} +@page WordSection3 + {size:595.25pt 841.85pt; + margin:70.85pt 70.85pt 70.85pt 70.85pt;} +div.WordSection3 + {page:WordSection3;} +@page WordSection4 + {size:595.25pt 841.85pt; + margin:70.85pt 70.85pt 70.85pt 70.85pt;} +div.WordSection4 + {page:WordSection4;} +@page WordSection5 + {size:595.25pt 841.85pt; + margin:70.85pt 70.85pt 70.85pt 70.85pt;} +div.WordSection5 + {page:WordSection5;} +@page WordSection6 + {size:595.25pt 841.85pt; + margin:70.85pt 70.85pt 70.85pt 70.85pt;} +div.WordSection6 + {page:WordSection6;} +@page WordSection7 + {size:595.25pt 841.85pt; + margin:70.85pt 70.85pt 70.85pt 70.85pt;} +div.WordSection7 + {page:WordSection7;} +@page WordSection8 + {size:595.25pt 841.85pt; + margin:70.85pt 70.85pt 44.95pt 70.85pt;} +div.WordSection8 + {page:WordSection8;} +@page WordSection9 + {size:595.25pt 841.85pt; + margin:70.85pt 70.85pt 44.95pt 70.85pt;} +div.WordSection9 + {page:WordSection9;} +@page WordSection10 + {size:595.25pt 841.85pt; + margin:70.85pt 70.85pt 44.95pt 70.85pt;} +div.WordSection10 + {page:WordSection10;} +@page WordSection11 + {size:595.3pt 841.9pt; + margin:70.85pt 70.85pt 70.85pt 70.85pt;} +div.WordSection11 + {page:WordSection11;} +@page WordSection12 + {size:595.3pt 841.9pt; + margin:70.85pt 70.85pt 70.85pt 70.85pt;} +div.WordSection12 + {page:WordSection12;} +@page WordSection13 + {size:595.3pt 841.9pt; + margin:70.85pt 70.85pt 70.85pt 70.85pt;} +div.WordSection13 + {page:WordSection13;} +@page WordSection14 + {size:595.3pt 841.9pt; + margin:70.85pt 70.85pt 70.85pt 70.85pt;} +div.WordSection14 + {page:WordSection14;} +@page WordSection15 + {size:595.3pt 841.9pt; + margin:70.85pt 70.85pt 70.85pt 70.85pt;} +div.WordSection15 + {page:WordSection15;} +@page WordSection16 + {size:595.3pt 841.9pt; + margin:70.85pt 70.85pt 70.85pt 70.85pt;} +div.WordSection16 + {page:WordSection16;} +@page WordSection17 + {size:595.3pt 841.9pt; + margin:70.85pt 70.85pt 70.85pt 70.85pt;} +div.WordSection17 + {page:WordSection17;} +@page WordSection18 + {size:595.3pt 841.9pt; + margin:70.85pt 70.85pt 70.85pt 70.85pt;} +div.WordSection18 + {page:WordSection18;} +@page WordSection19 + {size:595.3pt 841.9pt; + margin:70.85pt 70.85pt 70.85pt 70.85pt;} +div.WordSection19 + {page:WordSection19;} +@page WordSection20 + {size:595.3pt 841.9pt; + margin:62.9pt 70.85pt 53.95pt 70.85pt;} +div.WordSection20 + {page:WordSection20;} +@page WordSection21 + {size:595.3pt 841.9pt; + margin:70.85pt 70.85pt 70.85pt 70.85pt;} +div.WordSection21 + {page:WordSection21;} +@page WordSection22 + {size:595.3pt 841.9pt; + margin:70.85pt 70.85pt 70.85pt 70.85pt;} +div.WordSection22 + {page:WordSection22;} +@page WordSection23 + {size:595.3pt 841.9pt; + margin:70.85pt 70.85pt 70.85pt 70.85pt;} +div.WordSection23 + {page:WordSection23;} +@page WordSection24 + {size:595.3pt 841.9pt; + margin:70.85pt 70.85pt 70.85pt 70.85pt;} +div.WordSection24 + {page:WordSection24;} +@page WordSection25 + {size:595.3pt 841.9pt; + margin:70.85pt 70.85pt 70.85pt 70.85pt;} +div.WordSection25 + {page:WordSection25;} +@page WordSection26 + {size:595.3pt 841.9pt; + margin:70.85pt 70.85pt 70.85pt 70.85pt;} +div.WordSection26 + {page:WordSection26;} +@page WordSection27 + {size:595.3pt 841.9pt; + margin:70.9pt 70.9pt 70.9pt 70.9pt;} +div.WordSection27 + {page:WordSection27;} + /* List Definitions */ + ol + {margin-bottom:0cm;} +ul + {margin-bottom:0cm;} + +} diff --git a/app/controllers/file_validations_controller.rb b/app/controllers/file_validations_controller.rb index 0f0dcf71b..f56cf8ceb 100644 --- a/app/controllers/file_validations_controller.rb +++ b/app/controllers/file_validations_controller.rb @@ -1,6 +1,15 @@ class FileValidationsController < InheritedResources::Base respond_to :html, :xml, :json + def show + @toc = TestSheetPage.find("toc") + show! + end + + def new + @toc = TestSheetPage.find("toc") + new! + end def create create! do |success, failure| diff --git a/app/controllers/test_sheet_controller.rb b/app/controllers/test_sheet_controller.rb new file mode 100644 index 000000000..5bc3374e2 --- /dev/null +++ b/app/controllers/test_sheet_controller.rb @@ -0,0 +1,14 @@ +class TestSheetController < ApplicationController + + def show + @page = TestSheetPage.find(slug) + @toc = TestSheetPage.find("toc") + end + + private + + def slug + params[:slug] or "toc" + end + +end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 07b8ad3d6..797aab166 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -8,8 +8,16 @@ module ApplicationHelper controller_name == "help" end + def test_sheet_page? + controller_name == "test_sheet" + end + def help_path url_for(:controller => "/help", :action => "show") + '/' end + def test_sheet_path + url_for(:controller => "/test_sheet", :action => "show") + '/' + end + end diff --git a/app/models/test_sheet_page.rb b/app/models/test_sheet_page.rb new file mode 100644 index 000000000..35a368608 --- /dev/null +++ b/app/models/test_sheet_page.rb @@ -0,0 +1,40 @@ +class TestSheetPage + + attr_accessor :slug, :content, :data + + def initialize(slug) + @slug = slug + @data = {}.with_indifferent_access + end + + def filename + "#{Rails.root}/app/views/test_sheet/#{slug}.html" + end + + def exists? + File.exists? filename + end + + def load + self.content = File.read(filename) + end + + def method_missing(method, *arguments) + if arguments.empty? and data.has_key?(method) + data[method] + else + super + end + end + + def self.find(slug) + new(slug).tap do |page| + if page.exists? + page.load + else + raise ActiveRecord::RecordNotFound + end + end + end + +end diff --git a/app/views/file_validations/_test_sheet_toc.html.erb b/app/views/file_validations/_test_sheet_toc.html.erb new file mode 100644 index 000000000..010d29b1b --- /dev/null +++ b/app/views/file_validations/_test_sheet_toc.html.erb @@ -0,0 +1,23 @@ +
    +

    Définition des tests

    +
      +
    1. Catégorie 1 +
        + <% for i in 1..2 do %> +
      1. <%= link_to 'Fiche 1.'+i.to_s , test_sheet_path+"1."+i.to_s, :target => "test_sheets" %>
      2. + <% end %> +
    2. +
    3. Catégorie 2 +
        + <% for i in 1..28 do %> +
      1. <%= link_to 'Fiche 2.'+i.to_s , test_sheet_path+"2."+i.to_s, :target => "test_sheets" %>
      2. + <% end %> +
    4. +
    5. Catégorie 3 +
        + <% for i in 1..21 do %> +
      1. <%= link_to 'Fiche 3.'+i.to_s , test_sheet_path+"3."+i.to_s, :target => "test_sheets" %>
      2. + <% end %> +
    6. +
    +
    \ No newline at end of file diff --git a/app/views/file_validations/new.html.erb b/app/views/file_validations/new.html.erb index d02584e52..1bca668fe 100644 --- a/app/views/file_validations/new.html.erb +++ b/app/views/file_validations/new.html.erb @@ -43,3 +43,9 @@ <%= form.action :cancel, :as => :link %> <% end %> <% end %> + +<% content_for :sidebar do %> +<%= render :partial => "test_sheet_toc" %> +<% end %> + + diff --git a/app/views/file_validations/show.html.erb b/app/views/file_validations/show.html.erb index 5a63c9c81..e3d69c0f0 100644 --- a/app/views/file_validations/show.html.erb +++ b/app/views/file_validations/show.html.erb @@ -146,4 +146,6 @@
    • <%= link_to t('file_validations.actions.destroy'), file_validation_path(@file_validation), :method => :delete, :confirm => t('file_validations.actions.destroy_confirm'), :class => "remove" %>
    +<%= render :partial => "test_sheet_toc" %> + <% end %> diff --git a/app/views/layouts/_user_links.erb b/app/views/layouts/_user_links.erb index b33f8bd8e..cef586598 100644 --- a/app/views/layouts/_user_links.erb +++ b/app/views/layouts/_user_links.erb @@ -15,7 +15,7 @@ <% if user_signed_in? %>
  • |
  • - <%= link_to help_path do %> + <%= link_to help_path , :target => "help" do %> <%= t('layouts.help') %> <% end %>
  • diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 83e4e14fa..a03a7a8cc 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -4,6 +4,8 @@ Chouette V2 - <%= title %> <%= stylesheet_link_tag :application %> <%= javascript_include_tag :application %> + + <%= csrf_meta_tag %> @@ -23,6 +25,8 @@

    <%= @referential.name %>

    <% elsif help_page? %>

    Guide d'utilisation

    + <% elsif test_sheet_page? %> +

    Description des tests de validation

    <% end %>
    @@ -33,8 +37,10 @@
      <% if help_page? %>
    • <%= link_to "Aide", help_path, :class => "current" %>
    • + <% elsif test_sheet_page? %> +
    • <%= link_to "Tests", test_sheet_path+"1.1", :class => "current" %>
    • <% elsif ! selected_referential? %> -
    • <%= tab_link_to Referential, referentials_path, :class => ("current" if current_page?(referentials_path)) %>
    • +
    • <%= link_to Referential.model_name.human.capitalize.pluralize, referentials_path, :class => ("current" if current_page?(referentials_path)) %>
    • <%= tab_link_to FileValidation, file_validations_path %>
    • <% else %>
    • <%= link_to t("layouts.tabs.dashboard"), referential_path(@referential), :class => ("current" if current_page?(referential_path(@referential))) %>
    • diff --git a/app/views/test_sheet/1.1.html b/app/views/test_sheet/1.1.html new file mode 100644 index 000000000..e7623184a --- /dev/null +++ b/app/views/test_sheet/1.1.html @@ -0,0 +1,297 @@ +
      + +

      Fiche +du point de contrôle N° 1.1

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Vérification + de la conformité à la syntaxe XML suivant les recommandations du W3C

      +
      +

      Objectif

      +
      +

      Contrôler + que le fichier respecte la syntaxe XML telle que décrite dans les + recommandations du W3C

      +
      +

      Références

      +
      +

      W3C

      +
      +

      N° de fiche(s)

      +

      connexe(s)

      +
      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire

      +
      +

      Résultat

      +
      +

      Conforme + ou non conforme

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Un fichier XML doit + être correctement constitué :

      +

      - Il possède une déclaration comportant le + numéro de version XML utilisé dans le document ainsi que le nom du jeu de + codage de caractères utilisé.

      +

      - Un nom d'élément ne peut commencer par + un chiffre. Si le nom n'est composé que d'un seul caractère, ce doit être une + lettre comprise entre "a" et "z" pour les minuscules, + "A" et "Z" pour les majuscules. S'il est composé d'au + moins deux caractères, le premier peut être "_" ou ":". + Le nom peut ensuite être composé de lettres, chiffres, tirets, tirets bas et + deux points.

      +

      - Les balises n'ayant pas de contenu + doivent se terminer par />.

      +

      - Toutes les balises portant un contenu + non vide doivent être fermées.

      +

      - Les valeurs d'attributs doivent être entre guillemets.

      +

      - Les noms d'attributs sont en minuscules.

      +

      - Tous les éléments peuvent contenir un ou + plusieurs attributs. Chaque élément ne peut contenir qu'une fois le même + attribut. Un attribut est composé d'un nom et d'une valeur. Il ne peut être + présent que dans la balise ouvrante de l'élément.

      +
      +

      Exemple

      +
      +

      Exemple + de fichier XML

      +

      <?xml + version="1.0" encoding="ISO-8859-1"?>

      +

      <ChouettePTNetwork + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

      +

      + xmlns="http://www.trident.org/schema/trident" + xsi:schemaLocation="http://www.trident.org/schema/trident + /home/marc/workspace/chouette-ninoxe/src/main/castor/Chouette.xsd">

      +

      <PTNetwork>

      +

      + <objectId>AMIV:PTNetwork:95</objectId>

      +

      <versionDate>2007-03-21</versionDate>

      +

      ...

      +

      </ChouettePTNetwork>

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      1.1.1

      +
      +

      Libellé

      +
      +

      Conformité + à la syntaxe XML

      +
      +

      Champ + d’application

      +
      +

      Syntaxe + XML suivant les recommandations du W3C

      +
      +

      Vérification

      +
      +

      - + Vérifier qu'il est possible d'ouvrir le fichier contenant le modèle CHOUETTE + à analyser avec un éditeur XML ou directement à l'aide d'un Framework de + vérification de la syntaxe XML (castor, xerces, etc...).

      +

      - + Si le fichier respecte la syntaxe W3C alors le test est validé, sinon le test + est invalidé et produit le message « test 1.1.1 : le fichier n’est + pas correctement formé selon les recommandations du W3C ».

      +

       

      +
      + + +
      + diff --git a/app/views/test_sheet/1.2.html b/app/views/test_sheet/1.2.html new file mode 100644 index 000000000..dae76e7aa --- /dev/null +++ b/app/views/test_sheet/1.2.html @@ -0,0 +1,335 @@ + +
      + + +

      Fiche +du point de contrôle N° 1.2

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Vérification + de la conformité au schéma XML du profil CHOUETTE

      +
      +

      Objectif

      +
      +

      Vérifier + le fichier d’export XML par rapport à un fichier de référence XSD (XML Schema + Definition) dans lequel est défini un jeu de règles et contraintes.

      +
      +

      Références

      +
      +

      Schéma + XML CHOUETTE

      +
      +

      N° de fiche(s) + connexe(s)

      +
      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire

      +
      +

      Résultat

      +
      +

      Conforme + ou non conforme

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Il faut vérifier + que le document d’export XML respecte les règles décrites dans le document + XSD CHOUETTE. Pour cela, il faut mettre en place les traitements permettant + de vérifier la présence de tous les objets et attributs obligatoires des + concepts et des attributs optionnels visibles d’une part dans le modèle de + données, d’autre part dans le profil d’échange, si utilisés.

      +

      La vérification de la conformité XSD + permet de valider, entre autre :

      +

      ·         + que + les balises utilisées sont bien connues (définies dans l'XSD)

      +

      ·         + la + présence des balises obligatoires

      +

      ·         + l’arborescence + des balises

      +

      ·         + l’ordre + des balises

      +

      ·         + la + cardinalité des balises

      +

      ·         + le + contenu de balise (vérification de type quand il est connu : date, + durée, entier, flottant, booléen, pattern, etc.)

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

      Un exemple de + fichier XSD (reseau.xsd) :

      +

      <?xml version="1.0" + encoding="ISO-8859-1"?>

      +

      <xsd:schema + xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="http://www.trident.org/schema/trident" + xmlns:trd="http://www.trident.org/schema/trident" + targetNamespace="http://www.trident.org/schema/trident" + elementFormDefault="qualified" version="1.00">

      +

      <xsd:annotation>

      +

      <xsd:documentation + xml:lang="en">

      +

      TRIDENT exchange schema.

      +

      Request / Answer schema

      +

      Copyright (c) 2001 TRIDENT + consortium, All Rights Reserved.

      +

      </xsd:documentation>

      +

      </xsd:annotation>

      +

      <xsd:include + schemaLocation="./trident/trident_Global_schema.xsd"/>

      +
      ...
      +

      </xsd:schema>

      +

      Suivi d'un fichier xml valide :

      +

      <?xml + version="1.0" encoding="ISO-8859-1"?>

      +

      <ChouettePTNetwork + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

      +

      + xmlns="http://www.trident.org/schema/trident" + xsi:schemaLocation="http://www.trident.org/schema/trident + /home/marc/workspace/chouette-ninoxe/src/main/castor/Chouette.xsd">

      +

      <PTNetwork>

      +

      <objectId>AMIV:PTNetwork:95</objectId>

      +

      <versionDate>2007-03-21</versionDate>

      +

      ...

      +

      </ChouettePTNetwork>

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      1.2.1

      +
      +

      Libellé

      +
      +

      Conformité + au schéma XML du profil CHOUETTE

      +
      +

      Champ + d’application

      +
      +

      Schéma + XML du profil CHOUETTE

      +
      +

      Vérification

      +
      +

      - + Vérifier qu'il est possible d'ouvrir le fichier contenant le modèle CHOUETTE + à analyser avec un éditeur XML en respectant le schéma CHOUETTE ou + directement à l'aide d'un Framework de vérification de la syntaxe XML par + rapport au schéma CHOUETTE (castor, xerces, etc...).

      +

      - Si le fichier respecte le modèle + CHOUETTE alors le test est validé, sinon le test est invalidé et produit le + message « test 1.2.1 : le fichier ne respecte pas le modèle + CHOUETTE».

      +
      + + +
      + diff --git a/app/views/test_sheet/2.1.html b/app/views/test_sheet/2.1.html new file mode 100644 index 000000000..b4f3995a8 --- /dev/null +++ b/app/views/test_sheet/2.1.html @@ -0,0 +1,500 @@ + +
      + + +

      Fiche +du point de contrôle N° 2.1

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +

       

      +

      Intitulé

      +
      +

      Cohérence + entre le réseau et ses composants

      +

       

      +

      Objectif

      +
      +

      Vérification + de la correcte référence à des LIGNEs/Chouette (« Line ») dans VERSION DU + RÉSEAU (« PTNetwork »).

      +

      Vérification + de la correcte référence à la VERSION DU RÉSEAU(« PTNetwork ») + dans LIGNEs/Chouette (« Line »).

      +

       

      +

      Références

      +
      +

      TRIDENT/profil + CHOUETTE/Transmodel V4 et V5.1

      +

       

      +

      N° de fiche(s) + connexe(s)

      +
      +

       

      +

       

      +

      Priorité

      +
      +

      Obligatoire + (si la séquence « lineId » est utilisée dans + « PTNetwork »)

      +

      Obligatoire + (si l’élément ptNetworkIdShortCut est utilisé dans « Line »)

      +

       

      +

      Résultat

      +
      +

      Conforme + ou non conforme

      +

       

      +

      Mise en œuvre

      +

       

      +

       

      +

      Explication

      +

       

      +

       

      +
      +

      La référence à la + LIGNE/Chouette (« Line »), au sein de la classe d’objets de VERSION DU + RÉSEAU (« PTNetwork »), a un caractère optionnel. Si cette référence est + utilisée, alors elle doit correspondre à une ou plusieurs LIGNEs/Chouette (« + Line ») effectivement définie(s).

      +

      L’élément permettant d’identifier le réseau + (ptNetworkIdShortcut) auquel appartient une LIGNE/Chouette (« Line ») a un caractère + optionnel. Si cet élément est utilisé, il convient de vérifier que sa valeur + correspond bien à l’identifiant de la VERSION DU RÉSEAU (« PTNetwork ») en + question.

      +

       

      +

      Exemple

      +
      +

       

      +

      Représentation + schématique de l’Objet PTNetwork

      +

      +

      Exemple de l’objet PTNetwork à partir d’un + fichier XML

      +

      ...

      +

      <PTNetwork>

      +

      <objectId>SYNTHESE:PTNetwork:6192449487677451</objectId>

      +

      <name>MP/TLS + - Tisséo</name>

      +

      <lineId>SYNTHESE:Line:11821949021891693</lineId>

      +

      <registration>

      +

      <registrationNumber>6192449487677451</registrationNumber>

      +

      </registration>

      +

      </PTNetwork>

      +

      ...

      +

      <Line>

      +

      <objectId>SYNTHESE:Line:11821949021891693</objectId>

      +

      <name>MP/TLS/150</name>

      +

      <publishedName>le + taxi-bus Saubens</publishedName>

      +

      <routeId>SYNTHESE:ChouetteRoute:2533274790396714</routeId>

      +

      <routeId>SYNTHESE:ChouetteRoute:2533274790396715</routeId>

      +

      <routeId>SYNTHESE:ChouetteRoute:2533274790397007</routeId>

      +

      <routeId>SYNTHESE:ChouetteRoute:2533274790397008</routeId>

      +

      <registration>

      +

      <registrationNumber>11821949021891693</registrationNumber>

      +

      </registration>

      +

      </Line>

      +

      ...

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

      Exemple

      +
      +

       

      +

      Représentation + schématique de l’Objet Line

      +

       

      +

      +

       

      +

       

      +

      Exemple de ligne référençant le réseau auquel appartient la ligne

      +

      ...

      +

      <PTNetwork>

      +

      <objectId>AMIV:PTNetwork:95</objectId>

      +

      <versionDate>2007-03-21</versionDate>

      +

      ...

      +

      <Line>

      +

      <objectId>AMIV:Line:014014012</objectId>

      +

      <objectVersion>1</objectVersion>

      +

      <creationTime>2007-03-21T16:05:54.000+01:00</creationTime>

      +

      <name>LIGNE + 012</name>

      +

      <publishedName>Les + Courriers de l'Ile de France</publishedName>

      +

      <transportModeName>Bus</transportModeName>

      +

      <lineEnd>AMIV:StopPoint:488957A0A237830</lineEnd>

      +

      <ptNetworkIdShortcut>AMIV:PTNetwork:95</ptNetworkIdShortcut>

      +

      <routeId>AMIV:Route:488957</routeId>

      +

      <routeId>AMIV:Route:488959</routeId>...

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      2.1.1

      +
      +

      Libellé

      +
      +

      Vérification + de la correcte référence à des LIGNEs/Chouette (« Line ») dans VERSION DU + RÉSEAU (« PTNetwork »).

      +
      +

      Champ + d’application

      +
      +

      <PTNetwork>

      +

      <Line>

      +
      +

      Vérification

      +
      +

      - + Si l’élément « lineId », situé dans l’objet + « PTNetwork », existe alors poursuivre le test, sinon abandonner le + test,

      +

      - Si la valeur de chaque élément « LineId » de + la classe d’objets «PTNetwork », est identifiée dans l’élément + « objectId » de la classe d’objets « Line » alors le + test est validé, sinon le test est invalidé et produit le message « test + 2.1.1 : la valeur de l’élément « LineId » de la classe + d’objets «PTNetwork » n’a pas été repérée dans l’élément + « objectId » de la classe d’objets « Line ».

      +
      +

      N° test

      +
      +

      2.1.2

      +
      +

      Libellé

      +
      +

      Vérification + de la correcte référence à la VERSION DU RÉSEAU

      +

      ( + « PTNetwork »).dans LIGNEs/Chouette (« Line »).

      +
      +

      Champ + d’application

      +
      +

      <Line>

      +

      <PTNetwork>

      +

       

      +
      +

      Vérification

      +
      +

      - + Si l’élément «PtNetworkIdShortcut» existe alors poursuivre le test, sinon le + test est abandonné,

      +

      - + Si la valeur de chaque « ptNetworkIdShortcut » pour chaque + « Line », est identifiée dans l’élément « objectId » + de la classe d’objets « PTNetwork » alors le test est validé, + sinon le test est invalidé et produit le message « test 2.1.2 : la + référence au réseau « PtNetworkIdShortcut » n’a pas été repérée + dans l’élément « objectId » de la classe d’objets « PtNetwork» + ».

      +

       

      +
      + + +
      + diff --git a/app/views/test_sheet/2.10.html b/app/views/test_sheet/2.10.html new file mode 100644 index 000000000..bfe452e12 --- /dev/null +++ b/app/views/test_sheet/2.10.html @@ -0,0 +1,282 @@ +
      + + +

      Fiche +du point de contrôle N° 2.10

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Référence + à une ligne pour un point d’arrêt.

      +
      +

      Objectif

      +
      +

      Vérifiication + de la correcte référence à une LIGNE/Chouette (« Line ») pour les + POINTS D’ARRÊT SUR PARCOURS (« StopPoint » ).

      +
      +

      Références

      +
      +

      TRIDENT/profil + CHOUETTE/Transmodel V4 et V5.1

      +
      +

      N° de fiche(s)

      +

      Connexe(s)

      +
      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire + (si l’élément « LineIdShortCut » est existant)

      +
      +

      Résultat

      +
      +

      Conforme + ou non conforme

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      La + référence à la LIGNE/Chouette (« Line ») « LineIdShortCut » + au sein d'un arrêt POINT D’ARRÊT SUR PARCOURS (« StopPoint ») a un + caractère optionnel. Si cette référence est utilisée, il convient de vérifier + qu'elle correspond à l'identifiant « objectId » d’une + LIGNE/Chouette (« Line »).

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      Représentation + schématique de l’Objet « StopPoint »

      +

       

      +

      +

      Exemple + d'arrêt référençant le raccourci de ligne

      +

      ...

      +

      <Line>

      +

      <objectId>AMIV:Line:014014012</objectId>

      +

      ...

      +

      <StopPoint>

      +

      <objectId>AMIV:StopPoint:488957A0A237830</objectId>

      +

      <objectVersion>1</objectVersion>

      +

      ...

      +

      <lineIdShortcut>AMIV:Line:014014012</lineIdShortcut>

      +

      <ptNetworkIdShortcut>AMIV:PTNetwork:95</ptNetworkIdShortcut>

      +

      <containedIn>AMIV:StopPoint:237830</containedIn>

      +

      <name>Gérard + de Nerval</name>

      +

      </StopPoint>

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      2.10.1

      +
      +

      Libellé

      +
      +

      Vérification de la correcte référence à une + LIGNE/Chouette (« Line ») pour les POINTs D’ARRÊT SUR PARCOURS (« + StopPoint » ).

      +
      +

      Champ + d’application

      +
      +

      <StopPoint>

      +

      <Line>

      +
      +

      Vérification

      +
      +

       

      +

      - Si l’élément de référence d’une « Line » + (« lineIdShortcut ») qui est présent dans « StopPoint » + est identifié à un objet de ligne « Line », le test est validé, + sinon le test est invalidé et produit le message « test 2.10.1 : Le + point d’arrêt (« StopPoint ») fait référence à une ligne inexistante».

      +

       

      +
      + + +
      diff --git a/app/views/test_sheet/2.11.html b/app/views/test_sheet/2.11.html new file mode 100644 index 000000000..c2b5c4308 --- /dev/null +++ b/app/views/test_sheet/2.11.html @@ -0,0 +1,304 @@ +
      + + +

      Fiche +du point de contrôle N° 2.11

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Référence à un réseau au point + d’arrêt.

      +
      +

      Objectif

      +
      +

      Vérification + de la correcte référence à la VERSION DU RÉSEAU (« PTNetwork ») + pour chaque POINT D’ARRÊT SUR PARCOURS

      +

      (« + StopPoint »).

      +
      +

      Références

      +
      +

      TRIDENT/profil + CHOUETTE/Transmodel V4 et V5.1

      +
      +

      N° de + fiche(s)

      +

      connexe(s)

      +
      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire + (si l’élément « PTNetworkIdShortCut » est existant)

      +
      +

      Résultat

      +
      +

      Conforme + ou non conforme

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      La + référence au réseau « pTNetworkIdShortCut » au sein d'un POINT + D’ARRÊT SUR PARCOURS (« StopPoint ») a un caractère optionnel. Si + elle est définie, il convient de vérifier qu'elle correspond à l'identifiant + « objectId » de la VERSION DU RÉSEAU (« PTNetwork »).

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      Représentation + schématique de l’Objet « StopPoint »

      +

       

      +

      +

       

      +

       

      +

      Exemple + d'arrêt référençant le réseau

      +

       

      +

      <?xml + version="1.0" encoding="ISO-8859-1"?>

      +

      <ChouettePTNetwork + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="http://www.trident.org/schema/trident" + xsi:schemaLocation="http://www.trident.org/schema/trident + /home/marc/workspace/chouette-ninoxe/src/main/castor/Chouette.xsd">

      +

      <PTNetwork>

      +

      <objectId>AMIV:PTNetwork:95</objectId>

      +

      ...

      +

      <StopPoint>

      +

      <objectId>AMIV:StopPoint:488957A0A237830</objectId>

      +

      <objectVersion>1</objectVersion>

      +

      ...

      +

      <lineIdShortcut>AMIV:Line:014014012</lineIdShortcut>

      +

      <ptNetworkIdShortcut>AMIV:PTNetwork:95</ptNetworkIdShortcut>

      +

      <containedIn>AMIV:StopPoint:237830</containedIn>

      +

      <name>Gérard + de Nerval</name>

      +

      </StopPoint>

      +

      ...

      +

       

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      2.11.1

      +
      +

      Libellé

      +
      +

      Vérification + de la correcte référence à la VERSION DU RÉSEAU (« PTNetwork ») + pour chaque POINT D’ARRÊT SUR PARCOURS

      +

      (« StopPoint »).

      +
      +

      Champ d’application

      +
      +

      <StopPoint>

      +

      <PTNetwork>

      +
      +

      Vérification

      +
      +

       

      +

      - + Si l’élément « ptNetworkIdShortcut » existe alors poursuivre le test, sinon le + test est abandonné

      +

       

      +

      - + Si l’élément « ptNetworkIdShortcut », référencé dans un objet + « StopPoint » est identifié au réseau « PtNetwork », le + test est validé, sinon le test est invalidé et produit le message « test + 2.11.1 : Le point d’arrêt (« StopPoint ») fait référence à un réseau + inexistant».

      +

       

      +
      + + +
      diff --git a/app/views/test_sheet/2.12.html b/app/views/test_sheet/2.12.html new file mode 100644 index 000000000..12516725e --- /dev/null +++ b/app/views/test_sheet/2.12.html @@ -0,0 +1,287 @@ + +
      + +

      Fiche +du point de contrôle N° 2.12

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Définition de l'Interdiction de + Trafic Local.

      +
      +

      Objectif

      +
      +

      Vérification + de cohérence entre les objets «  ITL » et les ARRÊTs/Chouette + (« StopArea »).

      +
      +

      Références

      +
      +

      TRIDENT/profil + CHOUETTE/Transmodel V4 et V5.1

      +
      +

      N° de fiche(s) + connexe(s)

      +
      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire + (si le réseau contient des Interdictions de Trafic Local « ITL »)

      +
      +

      Résultat

      +
      +

      Conforme + ou non conforme

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Les + Interdictions de Trafic Local « ITL » sont optionnelles dans un + réseau. Lorsqu'elles existent, il convient de vérifier pour chaque + ARRÊT/Chouette (« StopArea ») de type  ITL , que + l'élément « areaId » qui est à caractère obligatoire, correspond à + un identifiant « ObjectId » d’ARRÊT/Chouette + (« StopArea »)» du réseau.

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      Représentation + schématique de l’Objet «  ITL »

      +

       

      +

      +

       

      +

       

      +

      Exemple d'ITL dont l'« areaId » référence un + point d’arrêt

      +

      ...

      +

      <StopArea>

      +

      <objectId>AMIV:StopPoint:237814</objectId>

      +

      <name>Croix + l'Alouettes</name>

      +

      <contains>AMIV:StopPoint:488965A7A23781400</contains>

      +

      ...

      +

      <ITL>

      +

      <areaId>AMIV:StopPoint:237814</areaId>

      +

      <name>Croix + l'Alouettes000</name>

      +

      <lineIdShortCut>AMIV:Line:014014012000</lineIdShortCut>

      +

      </ITL>

      +

      ...

      +

       

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      2.12.1

      +
      +

      Libellé

      +
      +

      Vérification + de cohérence entre les objets «  ITL » et les ARRÊTs/Chouette + (« StopArea »).

      +
      +

      Champ + d’application

      +
      +

      <ITL>

      +

      <StopArea>

      +
      +

      Vérification

      +
      +

       

      +

      - + Si l’objet « ITL » existe alors poursuivre le test, sinon le test + est abandonné

      +

       

      +

      - + Si l’élément « areaId », référencé dans un objet d’interdiction de + trafic local « ITL », possède un identifiant + « ObjectId » dans un objet « StopArea » , le test est + validé, sinon le test est invalidé et produit le message « test 2.12.1 : + Un objet d’interdiction de trafic local « ITL » fait référence à + un arrêt du réseau « StopArea » inexistant ».

      +

       

      +
      + +
      + diff --git a/app/views/test_sheet/2.13.html b/app/views/test_sheet/2.13.html new file mode 100644 index 000000000..613e4f0ac --- /dev/null +++ b/app/views/test_sheet/2.13.html @@ -0,0 +1,299 @@ + + +
      + + +

      Fiche +du point de contrôle N° 2.13

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Référence + à une ligne des arrêts ITL

      +
      +

      Objectif

      +
      +

      Vérification + de la correcte référence à la LIGNE/Chouette (« Line ») pour chaque + « ITL ».

      +
      +

      Références

      +
      +

      TRIDENT/profil + CHOUETTE/Transmodel V4 et V5.1

      +
      +

      N° de fiche(s) + connexe(s)

      +
      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire + (si le réseau contient des Interdictions de Trafic Local « ITL »)

      +
      +

      Résultat

      +
      +

      Conforme + ou non conforme

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Les + Interdictions de Trafic Local « ITL » sont optionnelles dans un + réseau. Lorsqu'elles existent, il convient de vérifier pour chaque + « ITL » que si l'élément « lineIdShortcut », qui est à + caractère optionnel dans l'« ITL », existe, il correspond à l'identifiant + « ObjectId » d’une LIGNE/Chouette (« Line ») définie.

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      Représentation + schématique de l’Objet « ITL »

      +

       

      +

      +

      +

       

      +

      Exemple d'ITL avec le « lineIdShortcut » + référencé dans la ligne du réseau

      +

      ...

      +

      <Line>

      +

      <objectId>AMIV:Line:014014012</objectId>

      +

      <objectVersion>1</objectVersion>

      +

      ...

      +

      <ITL>

      +

      <areaId>AMIV:StopPoint:237814</areaId>

      +

      <name>Croix + l'Alouettes000</name>

      +

      <lineIdShortCut>AMIV:Line:014014012</lineIdShortCut>

      +

      </ITL>

      +

      ...

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      2.13.1

      +
      +

      Libellé

      +
      +

      Vérification + de la correcte référence à la LIGNE/Chouette (« Line ») pour chaque + « ITL ».

      +
      +

      Champ + d’application

      +
      +

      <ITL>

      +

      <Line>

      +
      +

      Vérification

      +
      +

       

      +

      - Si l’objet « ITL » existe alors poursuivre le + test, sinon le test est abandonné

      +

       

      +

      - Si l’élément de raccourci de ligne + « lineIdShortcut » existe alors poursuivre le test, sinon le test + est abandonné

      +

       

      +

      - Si l’élément de raccourci de ligne + « lineIdShortcut », référencé dans un objet d’interdiction de + trafic local « ITL », possède un identifiant + « ObjectId » dans un objet de ligne « Line » , le test + est validé, sinon le test est invalidé et produit le message « test + 2.13.1 : Un objet d’interdiction de trafic local « ITL » fait + référence à une ligne inexistante ».

      +

       

      +
      + +

       

      + +
      + diff --git a/app/views/test_sheet/2.14.html b/app/views/test_sheet/2.14.html new file mode 100644 index 000000000..26a7f1622 --- /dev/null +++ b/app/views/test_sheet/2.14.html @@ -0,0 +1,399 @@ +
      + + +

      Fiche +du point de contrôle N° 2.14

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Association points + d’arrêt, tronçons, itinéraire.

      +
      +

      Objectif

      +
      +

      Vérification que tout POINT + D’ARRÊT SUR PARCOURS (« StopPoint ») est associé à un Itinéraire/Chouette + (ChouetteRoute »).

      +

      Analyse de la + continuité des tronçons + COMMERCIAUX/Chouette (« PtLink ») au sein d’un Itinéraire/Chouette + (ChouetteRoute »)..

      +
      +

      Références

      +
      +

      TRIDENT/profil + CHOUETTE/Transmodel V4 et V5.1

      +
      +

      N° de fiche(s) connexe(s)

      +
      +

       

      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire

      +
      +

      Résultat

      +
      +

      Conforme ou non + conforme

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

       

      +

      Ce + point de contrôle vérifie que tous les POINTs D’ARRÊT SUR PARCOURS

      +

      (« + StopPoint ») sont bien rattachés à un Itinéraire/Chouette + (« ChouetteRoute ») et que chaque POINT D’ARRÊT SUR PARCOURS

      +

      (« + StopPoint ») appartient à un tronçon + COMMERCIAL/Chouette (« PtLink »).

      +

      D’autre part, les POINTs D’ARRÊT SUR + PARCOURS (« StopPoint ») doivent être ordonnés sur l’Itinéraire/Chouette + (« ChouetteRoute ») et former une séquence de tronçons contigus.

      +

       

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      Exemple + de définition à partir d’un fichier XML sur le RER A

      +

      L’élément StopPoint possède l’identifiant 521850 :

      +

      +

      <StopPoint>

      +

      <objectId>NINOXE:StopPoint:521850</objectId>

      +

      <objectVersion>0</objectVersion>

      +

      <creationTime>2007-06-28T17:18:56.000+02:00</creationTime>

      +

      <containedIn>NINOXE:StopArea:521759</containedIn>

      +

      </StopPoint>

      +

       

      +

      On le retrouve dans le tronçon ci-après :

      +

       

      +

      <PtLink>

      +

      <objectId>NINOXE:PtLink:521850-521851</objectId>

      +

      <startOfLink>NINOXE:StopPoint:521850</startOfLink>

      +

      <endOfLink>NINOXE:StopPoint:521851</endOfLink>

      +

      </PtLink>

      +

       

      +

      Et ce même tronçon est intégré dans l’itinéraire ci-après + :

      +

       

      +

      <ChouetteRoute>

      +

      <objectId>NINOXE:Route:521755</objectId>

      +

      <objectVersion>0</objectVersion>

      +

      <creationTime>2007-06-28T17:18:56.000+02:00</creationTime>

      +

      <name>X</name>

      +

      <publishedName>Marne-la-Vallée-Chessy + Cergy</publishedName>

      +

      <number>ALLER</number>

      +

      <ptLinkId>NINOXE:PtLink:521850-521851</ptLinkId>

      +

      +

      </ChouetteRoute>

      +

       

      +

       

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      Test 2.14.1

      +
      +

      Libellé

      +
      +

      Vérification + que tout POINT D’ARRÊT SUR PARCOURS (« StopPoint ») + est associé à un Itinéraire/Chouette (ChouetteRoute »).

      +
      +

      Champ d’application

      +
      +

       

      +

      <StopPoint>

      +

      <PtLink>

      +

      <chouetteRoute>

      +

       

      +
      +

      Vérification

      +
      +

       

      +

      - Si l’objet de point d’arrêt « StopPoint » + mentionné dans les champs d’application est présent une ou plusieurs fois, + poursuivre le test, sinon le test est abandonné.

      +

      - + Si l’identifiant du point d’arrêt détecté, contenu dans l’élément + « StopPoint », figure dans l’un des éléments + « startOfLink » ou « endOfLink » de l’objet de tronçon + « PTLink » , poursuivre le test, sinon le test fournit le message + d’alerte «  test 2.14.1 a : le point d’arrêt (« StopPoint ») XX + n’appartient à aucune extrémité de tronçon ». La poursuite des tests est + abandonnée.

      +

       

      +

      - + Si l’identifiant du tronçon « PtLink », détecté ci-avant, est + intégré dans un objet « ChouetteRoute », le test est validé, sinon + le test est invalidé et fournit le message «  test 2.14.1 b : le + tronçon XX fait référence à un itinéraire inexistant ».

      +

       

      +

       

      +
      + +

       

      + + + + + + + + + + + + + + + + + + +
      +

      N° test

      +
      +

      Test 2.14.2

      +
      +

      Libellé

      +
      +

      Analyse + de la continuité des tronçons + COMMERCIAUX/Chouette (« PtLink ») au sein d’un Itinéraire/Chouette + (« ChouetteRoute »).

      +
      +

      Champ d’application

      +
      +

       

      +

      <PtLink>

      +

      <chouetteRoute>

      +

       

      +
      +

      Vérification

      +
      +

       

      +

      - Si l’élément « ChouetteRoute » mentionné + dans les champs d’application est présent une ou plusieurs fois, poursuivre + le test, sinon le test est abandonné.

      +

       

      +

      - + Pour chaque identifiant de tronçon « PtLink » successif, contenu + dans l’élément « ChouetteRoute », si la valeur de l’attribut de + l’élément « endOfLink » du premier tronçon « PtLink » est + identique à la valeur de l’attribut de l’élément « startOfLink » du + deuxième tronçon « PtLink », poursuivre le test (se décaler d’un + tronçon), sinon le test est invalidé et fournit message : « test + 2.14.2 : l’analyse des tronçons d’un itinéraire fait apparaître que la + valeur de l’attribut de l’élément « endOfLink » d’un premier + tronçon « PtLink » n’est pas identique à la valeur de l’attribut de + l’élément « startOfLink » du deuxième tronçon + « PtLink » ».

      +

       

      +

      - + Le test est validé

      +

       

      +
      + +

       

      + + +
      + diff --git a/app/views/test_sheet/2.15.html b/app/views/test_sheet/2.15.html new file mode 100644 index 000000000..24fb2d502 --- /dev/null +++ b/app/views/test_sheet/2.15.html @@ -0,0 +1,463 @@ +
      + + +

      Fiche +du point de contrôle N° 2.15

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Cohérence + entre points d'arrêt et missions commerciales.

      +
      +

      Objectif

      +
      +

      Vérification + de l’existence de définition des POINTs D’ARRÊT SUR PARCOURS (« StopPoint + ») d’une mission commerciale + (« JourneyPattern »).

      +

      Vérification + que tout POINT D’ARRÊT SUR PARCOURS (« StopPoint ») appartient à une mission commerciale + (« JourneyPattern »).

      +
      +

      Références

      +
      +

      TRIDENT/profil + CHOUETTE/Transmodel V4 et V5.1

      +
      +

      N° de fiche(s) + connexe(s)

      +
      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire + (si l’objet « JourneyPattern » existe)

      +
      +

      Résultat

      +
      +

      Conforme + ou non conforme

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      L’objet de MISSION COMMERCIALE (« JourneyPattern ») , a + un caractère optionnel. Quand elle existe, chaque MISSION COMMERCIALE

      +

      (« + JourneyPattern ») référence de manière obligatoire une liste + « stopPointList » qui contient au moins deux identifiants de POINT + D’ARRÊT SUR PARCOURS (« StopPoint »). Pour chaque identifiant de cette + liste, il convient de vérifier qu'il correspond à l'identifiant + « objectId » d'un POINT D’ARRÊT SUR PARCOURS (« StopPoint ») du + réseau.

      +

      Chaque identifiant de POINT D’ARRÊT SUR + PARCOURS (« StopPoint ») doit appartenir à la liste des POINTs D’ARRÊT SUR + PARCOURS d’une MISSION COMMERCIALE (« StopPointList » de la mission commerciale « JourneyPattern »).

      +

       

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      Représentation + schématique de l’objet « JourneyPattern »

      +

       

      +

      +

      +

       

      +

      Exemple + d'un parcours qui référence sept points d'arrêt

      +

      ...

      +

      <StopPoint>

      +

      <objectId>AMIV:StopPoint:489111A0A237832</objectId>

      +

      <objectVersion>1</objectVersion>

      +

      ...

      +

      <StopPoint>

      +

      <objectId>AMIV:StopPoint:489111A1A237807</objectId>

      +

      <objectVersion>1</objectVersion>

      +

      ...

      +

      <StopPoint>

      +

      <objectId>AMIV:StopPoint:489111A2A237806</objectId>

      +

      <objectVersion>1</objectVersion>

      +

      ...

      +

      <StopPoint>

      +

      <objectId>AMIV:StopPoint:489111A3A237805</objectId>

      +

      <objectVersion>1</objectVersion>

      +

      ...

      +

      <StopPoint>

      +

      <objectId>AMIV:StopPoint:489111A4A237804</objectId>

      +

      <objectVersion>1</objectVersion>

      +

      ...

      +

      <StopPoint>

      +

      <objectId>AMIV:StopPoint:489111A5A237803</objectId>

      +

      <objectVersion>1</objectVersion>

      +

      ...

      +

      <StopPoint>

      +

      <objectId>AMIV:StopPoint:489111A6A237832</objectId>

      +

      <objectVersion>1</objectVersion>

      +

      ...

      +

      <JourneyPattern>

      +

      <objectId>AMIV:JourneyPattern:489111M74</objectId>

      +

      <routeId>AMIV:Route:489111</routeId>

      +

      <stopPointList>AMIV:StopPoint:489111A0A237832</stopPointList>

      +

      <stopPointList>AMIV:StopPoint:489111A1A237807</stopPointList>

      +

      <stopPointList>AMIV:StopPoint:489111A2A237806</stopPointList>

      +

      <stopPointList>AMIV:StopPoint:489111A3A237805</stopPointList>

      +

      <stopPointList>AMIV:StopPoint:489111A4A237804</stopPointList>

      +

      <stopPointList>AMIV:StopPoint:489111A5A237803</stopPointList>

      +

      <stopPointList>AMIV:StopPoint:489111A6A237832</stopPointList>

      +

      <lineIdShortcut>AMIV:Line:014014012</lineIdShortcut>

      +

      </JourneyPattern>

      +

      ...

      +

       

      +

       

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      2.15.1

      +
      +

      Libellé

      +
      +

      Vérification + de l’existence de définition des POINTs D’ARRÊT SUR PARCOURS (« StopPoint + ») d’une mission commerciale + (« JourneyPattern »).

      +
      +

      Champ + d’application

      +
      +

      <JourneyPattern>

      +

      <StopPoint>

      +
      +

      Vérification

      +
      +

       

      +

      - + Si l’objet de mission commerciale existe, poursuivre le test, sinon + abandonner le test

      +

       

      +

      - Si la liste des points d’arrêt + « stopPointList », référencés dans un objet de mission commerciale + « JourneyPattern », possède des identifiants « objectId » + dans les objets de points d’arrêt « StopPoint », alors le test est + validé, sinon le test est invalidé et produit le message « test + 2.15.1 : La liste de l’objet « JourneyPattern » fait référence + à des points d’arrêt inexistants »

      +

       

      +

       

      +

      N° test

      +
      +

      2.15.2

      +

       

      +

      Libellé

      +
      +

      Vérification + que tout POINT D’ARRÊT SUR PARCOURS (« StopPoint ») appartient à une mission commerciale + (« JourneyPattern »).

      +

       

      +

      Champ d’application

      +
      +

       

      +

      <StopPoint>

      +

      <JourneyPattern>

      +

       

      +

       

      +

      Vérification

      +
      +

       

      +

      - Si l’objet « StopPoint », mentionné dans les + champs d’application, est présent une ou plusieurs fois, poursuivre le test, + sinon le test est abandonné.

      +

       

      +

      - Si l’identifiant de l’élément « StopPoint » + identifié est contenu dans la liste des points d’arrêt (StopPointList) de + l’objet « JourneyPattern », le test est validé, sinon le test est + invalidé et fournit le message : « test 2.15.2 : un point + d’arrêt (« StopPoint ») n’est pas rattaché à une mission + commerciale ».

      +

       

      +
      + +

       

      + +
      + diff --git a/app/views/test_sheet/2.16.html b/app/views/test_sheet/2.16.html new file mode 100644 index 000000000..c5448bbea --- /dev/null +++ b/app/views/test_sheet/2.16.html @@ -0,0 +1,305 @@ + +
      + + +

      Fiche +du point de contrôle N° 2.16

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Référence + à une ligne des missions commerciales.

      +
      +

      Objectif

      +
      +

      Vérification + de la correcte référence à une LIGNE/Chouette (« Ligne ») pour une + MISSION COMMERCIALE (« JourneyPattern »).

      +
      +

      Références

      +
      +

      TRIDENT/profil + CHOUETTE/Transmodel V4 et V5.1

      +
      +

      N° de fiche(s) + connexe(s)

      +
      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire + (si l’objet « JourneyPattern » existe et s’il contient l’objet + « lineIdShortCut »)

      +
      +

      Résultat

      +
      +

      Conforme + ou non conforme

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Lorsque + l’objet MISSION COMMERCIALE (« JourneyPattern ») fait référence à + une LIGNE/Chouette (« Ligne ») à travers + « lineIdShortCut », qui est à caractère optionnel, il convient de + vérifier que cette référence correspond à l'identifiant + « objectId » d’une LIGNE /Chouette (« Ligne ») définie.

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      Représentation + schématique de l’objet JourneyPattern

      +

       

      +

      +

      +

      Exemple

      +

      ...

      +

      <Line>

      +

      <objectId>AMIV:Line:014014012</objectId>

      +

      <objectVersion>1</objectVersion>

      +

      ...

      +

      <JourneyPattern>

      +

      <objectId>AMIV:JourneyPattern:489111M74</objectId>

      +

      <routeId>AMIV:Route:489111</routeId>

      +

      <stopPointList>AMIV:StopPoint:489111A0A237832</stopPointList>

      +

      <stopPointList>AMIV:StopPoint:489111A1A237807</stopPointList>

      +

      <stopPointList>AMIV:StopPoint:489111A2A237806</stopPointList>

      +

      <stopPointList>AMIV:StopPoint:489111A3A237805</stopPointList>

      +

      <stopPointList>AMIV:StopPoint:489111A4A237804</stopPointList>

      +

      <stopPointList>AMIV:StopPoint:489111A5A237803</stopPointList>

      +

      <stopPointList>AMIV:StopPoint:489111A6A237832</stopPointList>

      +

      <lineIdShortcut>AMIV:Line:014014012</lineIdShortcut>

      +

      </JourneyPattern>

      +

      ...

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      2.16.1

      +
      +

      Libellé

      +
      +

      Vérification de la + correcte référence à une une LIGNE/Chouette (« Ligne ») pour une + MISSION COMMERCIALE (« JourneyPattern »).

      +
      +

      Champ + d’application

      +
      +

      <JourneyPattern>

      +

      <Line>

      +

       

      +
      +

      Vérification

      +
      +

       

      +

      - + Si l’objet de mission commerciale existe, poursuivre le test, sinon + abandonner le test

      +

       

      +

      - + Si le raccourci de ligne « lineIdShortCut », dans l’objet + « JourneyPattern », poursuivre le test, sinon abandonner le test

      +

       

      +

      - Si l’élément de raccourci de + ligne « lineIdShortCut » , référencé dans un objet + « JourneyPattern », possède un identifiant « objectId » + dans un objet de ligne « Line », alors le test est validé, sinon le + test est invalidé et produit le message « test 2.16.1 : Un objet + « JourneyPattern » fait référence à une ligne inexistante.»

      +

       

      +
      + +

       

      + +
      + diff --git a/app/views/test_sheet/2.17.html b/app/views/test_sheet/2.17.html new file mode 100644 index 000000000..e7d9eb55d --- /dev/null +++ b/app/views/test_sheet/2.17.html @@ -0,0 +1,310 @@ +
      + + +

      Fiche +du point de contrôle N° 2.17

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Cohérence + entre itinéraires et courses.

      +
      +

      Objectif

      +
      +

      Vérification + de la correcte référence à l’Itinéraire/Chouette (« ChouetteRoute) pour + chaque COURSE COMMERCIALE (« VehicleJourney » ).

      +
      +

      Références

      +
      +

      TRIDENT/profil + CHOUETTE/Transmodel V4 et V5.1

      +
      +

      N° de fiche(s) + connexe(s)

      +
      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire + (si l'objet « VehicleJourney » existe)

      +
      +

      Résultat

      +
      +

      Conforme + ou non conforme

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Lorsqu’une + COURSE COMMERCIALE (« VehicleJourney » ) fait référence à un + Itinéraire/Chouette (« ChouetteRoute ») il convient de vérifier que + l'identifiant d'itinéraire « routeId », qui est à caractère + obligatoire dans la course, correspond à l'identifiant « objectId » + d'un Itinéraire/Chouette (« ChouetteRoute »).

      +

       

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      Représentation + schématique de l’Objet « VehicleJourney »

      +

       

      +

       

      +

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

      Exemple + d'une course qui référence une « ChouetteRoute »

      +

      ...

      +

      <ChouetteRoute>

      +

      <objectId>AMIV:Route:488970</objectId>

      +

      <name>0140140120542</name>

      +

      ...

      +

      <VehicleJourney>

      +

      <objectId>AMIV:VehicleJourney:8970758</objectId>

      +

      <routeId>AMIV:Route:488970</routeId>

      +

      <journeyPatternId>AMIV:JourneyPattern:488970M1</journeyPatternId>

      +

      <lineIdShortcut>AMIV:Line:014014012</lineIdShortcut>

      +

      <operatorId>AMIV:Company:2422</operatorId>

      +

      <timeSlotId>AMIV:TimeSlot:0</timeSlotId>

      +

      <vehicleJourneyAtStop>

      +

      <stopPointId>AMIV:StopPoint:488970A0A237816</stopPointId>

      +

      <vehicleJourneyId>AMIV:VehicleJourney:8970758</vehicleJourneyId>

      +

      <arrivalTime>05:45:00</arrivalTime>

      +

      <departureTime>05:45:00</departureTime>

      +

      <order>1</order>

      +

      </vehicleJourneyAtStop>

      +

      <vehicleJourneyAtStop>

      +

      <stopPointId>AMIV:StopPoint:488970A1A237817</stopPointId>

      +

      <vehicleJourneyId>AMIV:VehicleJourney:8970758</vehicleJourneyId>

      +

      ...

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      2.17.1

      +
      +

      Libellé

      +
      +

      Vérification + de la correcte référence à l’Itinéraire/Chouette (« ChouetteRoute) pour + chaque COURSE COMMERCIALE (« VehicleJourney » ).

      +
      +

      Champs d’application

      +
      +

       

      +

      <VehicleJourney>

      +

      <ChouetteRoute>

      +

       

      +
      +

      Vérification

      +
      +

       

      +

      - Si l’objet « VehicleJourney » mentionné dans + les champs d’application est présent une ou plusieurs fois, poursuivre le + test, sinon le test est abandonné.

      +

       

      +

      - Si chaque élément « RouteId » + est associé à un objet « ChouetteRoute », le test est validé, sinon + le test est invalidé et fournit le message : « test 2.17.1 : + la course XX fait référence à un itinéraire inexistant ».

      +

       

      +
      + +

       

      + +
      diff --git a/app/views/test_sheet/2.18.html b/app/views/test_sheet/2.18.html new file mode 100644 index 000000000..4bab93f36 --- /dev/null +++ b/app/views/test_sheet/2.18.html @@ -0,0 +1,549 @@ +
      + + +

      Fiche +du point de contrôle N° 2.18

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Cohérence + entre les missions commerciales et les courses.

      +
      +

      Objectif

      +
      +

      Vérification + de l’existence d’une MISSION COMMERCIALE (« JourneyPattern « ) + pour chaque COURSE COMMERCIALE (« VehicleJourney »).

      +

      Vérification + de la cohérence de points entre MISSION COMMERCIALE + (« JourneyPattern « ) et COURSE COMMERCIALE + (« VehicleJourney »).

      +
      +

      Références

      +
      +

      TRIDENT/profil + CHOUETTE/Transmodel V4 et V5.1

      +
      +

      N° de fiche(s) + connexe(s)

      +
      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire + (si l'objet « VehicleJourney » existe et contient l'élément + « journeyPatternId »)

      +
      +

      Résultat

      +
      +

      Conforme + ou non conforme

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Lorsqu’une + COURSE COMMERCIALE (« VehicleJourney » ) est définie, il convient de + vérifier que si l’élément « journeyPatternId » de MISSION + COMMERCIALE (« JourneyPattern ») , qui est à caractère optionnel + dans la course, existe (c’est-à-dire si on fait référence à une MISSION + COMMERCIALE) alors il doit correspondre à une MISSION COMMERCIALE + (« JourneyPattern ») définie .

      +

      Par + ailleurs, les points d’une COURSE COMMERCIALE (« VehicleJourney ») doivent + appartenir à la MISSION COMMERCIALE (« JourneyPattern ») à + laquelle la COURSE COMMERCIALE (« VehicleJourney ») est associée.

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      Représentation + schématique de l’objet « VehicleJourney »

      +

       

      +

      +

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

      Exemple + d'une course qui référence une mission

      +

      ...

      +

      <VehicleJourney>

      +

      + <objectId>AMIV:VehicleJourney:8970758</objectId>

      +

      + <routeId>AMIV:Route:488970</routeId>

      +

      + <journeyPatternId>AMIV:JourneyPattern:488970M1</journeyPatternId>

      +

      <lineIdShortcut>AMIV:Line:014014012</lineIdShortcut>

      +

      + <operatorId>AMIV:Company:2422</operatorId>

      +

      + <timeSlotId>AMIV:TimeSlot:0</timeSlotId>

      +

      + <vehicleJourneyAtStop>

      +

      + <stopPointId>AMIV:StopPoint:488970A0A237816</stopPointId>

      +

      + <vehicleJourneyId>AMIV:VehicleJourney:8970758</vehicleJourneyId> <arrivalTime>05:45:00</arrivalTime>

      +

      <departureTime>05:45:00</departureTime>

      +

      <order>1</order>

      +

      + </vehicleJourneyAtStop>

      +

      + <vehicleJourneyAtStop>

      +

      + <stopPointId>AMIV:StopPoint:488970A1A237817</stopPointId>

      +

      <vehicleJourneyId>AMIV:VehicleJourney:8970758</vehicleJourneyId>

      +

      ...

      +

      <JourneyPattern>

      +

      <objectId>AMIV:JourneyPattern:488970M1</objectId>

      +

      <routeId>AMIV:Route:488970</routeId>

      +

      ...

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

      L’objet + « JourneyPattern » référence une liste de point d’arrêt et + l’identifiant d’un itinéraire :

      +

       

      +

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

      Ces mêmes identifiants de points + d’arrêt sont référencés dans les objets « vehicleJourneyAtStop » + dépendant de la course « vehicleJourney » qui contient + l’identifiant de la mission.

      +

       

      +

      +

       

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      2.18.1

      +
      +

      Libellé

      +
      +

      Vérification de + l’existence d’une MISSION COMMERCIALE (« JourneyPattern « ) + pour chaque COURSE COMMERCIALE (« VehicleJourney »).

      +
      +

      Champ + d’application

      +
      +

      <VehicleJourney>

      +

      <JourneyPattern>

      +
      +

      Vérification

      +
      +

       

      +

      - + Si l’objet de course « VehicleJourney » existe, poursuivre le test, + sinon abandonner le test

      +

       

      +

      - + Si l’élément « JourneyPatternId » existe dans l’objet de course + « VehicleJourney », poursuivre le test, sinon abandonner le test

      +

       

      +

      - Si un élément + « JourneyPatternId » , référencé dans un objet de course + « VehicleJourney », possède un identifiant « objectId » + dans un objet « JourneyPattern », alors le test est validé, sinon + le test est invalidé et produit le message « test 2.18.1 : la + course XX fait référence à une mission commerciale inexistante »

      +

       

      +

       

      +

      N° test

      +
      +

      Test + 2.18.2

      +

       

      +

      Libellé

      +
      +

      Vérification + de la cohérence de points entre MISSION COMMERCIALE + (« JourneyPattern « ) et COURSE COMMERCIALE + (« VehicleJourney »).

      +

       

      +

      Champ d’application

      +
      +

      <StopPoint>

      +

      <JourneyPattern>

      +

      <vehicleJourneyAtStop>

      +

      <vehicleJourney>

      +

       

      +

      Vérification

      +
      +

       

      +

      - Si « StopPoint » mentionné dans + les champs d’application est présent une ou plusieurs fois, poursuivre le + test, sinon le test est abandonné.

      +

       

      +

      - Si l’identifiant du « StopPoint » + détecté figure dans la liste des points d’arrêts « stopPointList » + de « JourneyPattern », poursuivre le test, sinon le test est + invalidé et fournit le message : » test 2.18.2.1a : + l’identifiant (« StopPoint ») détecté dans un objet « StopPoint » + ne figure pas dans la liste des points d’arrêts « stopPointList » + de « JourneyPattern » ».

      +

       

      +

      - Si l’identifiant du « StopPoint » + figure dans l’élément « stopPointId » d’un objet + « vehicleJourneyAtStop », poursuivre le test, sinon le test est + invalidé et fournit le message : « test 2.18.2b : + l’identifiant (« StopPoint ») ne figure pas dans l’élément + « stopPointId » d’un objet + « vehicleJourneyAtStop » ».

      +
      + + +
      diff --git a/app/views/test_sheet/2.19.html b/app/views/test_sheet/2.19.html new file mode 100644 index 000000000..f19939744 --- /dev/null +++ b/app/views/test_sheet/2.19.html @@ -0,0 +1,322 @@ +
      + + +

      Fiche +du point de contrôle N° 2.19

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Référence + à une ligne pour chaque course.

      +
      +

      Objectif

      +
      +

      Vérification de la référence à une LIGNE/Chouette (« Line ») + pour une COURSE COMMERCIALE (« VehicleJourney »).

      +
      +

      Références

      +
      +

      TRIDENT/profil + CHOUETTE/Transmodel V4 et V5.1

      +
      +

      N° de fiche(s) + connexe(s)

      +
      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire (si l’objet + « VehicleJourney » existe et s’il contient l’élément + « lineIdShortCut »)

      +
      +

      Résultat

      +
      +

      Conforme ou non + conforme

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Lorsque + l’objet de course COURSE COMMERCIALE (« VehicleJourney » ) fait référence à + une LIGNE/Chouette (« Line ») à travers + « lineIdShortCut », qui est à caractère optionnel, il convient de + vérifier qu'il correspond à l'identifiant « objectId » d’une + LIGNE/Chouette (« Line » ) du réseau.

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      Représentation + schématique de l’objet « VehicleJourney »

      +

       

      +

      +

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

      Exemple + d'une course qui référence la ligne

      +

      ...

      +

      <Line>

      +

      <objectId>AMIV:Line:014014012</objectId>

      +

      <objectVersion>1</objectVersion>

      +

      ...

      +

      <VehicleJourney>

      +

      <objectId>AMIV:VehicleJourney:8970758</objectId>

      +

      <routeId>AMIV:Route:488970</routeId>

      +

      + <journeyPatternId>AMIV:JourneyPattern:488970M1</journeyPatternId>

      +

      <lineIdShortcut>AMIV:Line:014014012</lineIdShortcut>

      +

      <operatorId>AMIV:Company:2422</operatorId>

      +

      <timeSlotId>AMIV:TimeSlot:0</timeSlotId>

      +

      <vehicleJourneyAtStop>

      +

      <stopPointId>AMIV:StopPoint:488970A0A237816</stopPointId>

      +

      <vehicleJourneyId>AMIV:VehicleJourney:8970758</vehicleJourneyId>

      +

      <arrivalTime>05:45:00</arrivalTime>

      +

      <departureTime>05:45:00</departureTime>

      +

      <order>1</order>

      +

      </vehicleJourneyAtStop>

      +

      <vehicleJourneyAtStop>

      +

      <stopPointId>AMIV:StopPoint:488970A1A237817</stopPointId>

      +

      + <vehicleJourneyId>AMIV:VehicleJourney:8970758</vehicleJourneyId>

      +

      ...

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      2.19.1

      +
      +

      Libellé

      +
      +

      Vérification de la référence à une LIGNE/Chouette (« Line ») + pour une COURSE COMMERCIALE (« VehicleJourney »).

      +
      +

      Champ + d’application

      +
      +

      <VehicleJourney>

      +

      <Line>

      +
      +

      Vérification

      +
      +

      - + Si l’objet « VehicleJourney » existe, poursuivre le test, sinon + abandonner le test

      +

       

      +

      - + Si l’élément de raccourci de ligne « lineIdShortcut » existe dans + l’objet « VehicleJourney », poursuivre le test, sinon abandonner le + test

      +

       

      +

      - Si un élément de raccourci de + ligne « lineIdShortcut » , référencé dans un objet + « VehicleJourney », possède un identifiant « objectId » + dans un objet de ligne « Line », alors le test est validé, sinon le + test est invalidé et produit le message « test 2.19.1 : le + raccourci de ligne d’une course XX fait référence à une ligne + inexistante ».

      +

       

      +
      + + +
      diff --git a/app/views/test_sheet/2.2.html b/app/views/test_sheet/2.2.html new file mode 100644 index 000000000..a03053d70 --- /dev/null +++ b/app/views/test_sheet/2.2.html @@ -0,0 +1,286 @@ + +
      + + +

      Fiche +du point de contrôle N° 2.2

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Cohérence + entre le regroupement de lignes et ses composants

      +
      +

      Objectif

      +
      +

      Vérification + de la correcte référence à des LIGNEs/Chouette (« Line ») dans GROUPE DE + LIGNES (« GroupOfLine »).

      +
      +

      Références

      +
      +

      TRIDENT/profil + CHOUETTE/Transmodel V4 et V5.1

      +
      +

      N° de fiche(s)

      +

      connexe(s)

      +
      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire + (si l’objet « GroupOfLine » existe)

      +
      +

      Résultat

      +
      +

      Conforme + ou non conforme

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Si la classe d’objets + de GROUPE DE LIGNES (« GroupOfLine ») existe, il convient de vérifier que les + LIGNEs/Chouette (« Line ») référencées dans cette classe, sont réellement + définies, en vérifiant l’existence de leurs identifiants.

      +
      +

      Exemple

      +
      +

       

      +

      Représentation + schématique de l’Objet « GroupOfLIne »

      +

       

      +

      +

       

      +

      Exemple de l’objet « GroupOfLine » à + partir d’un fichier XML

      +

      ...

      +

      <GroupOfLine>

      +

      <objectId>AMIV:GroupOfLine:1</objectId>

      +

      <name>SERVICE + URBAIN</name>

      +

      <lineId>AMIV:Line:014014012</lineId>

      +

      </GroupOfLine>

      +

      ...

      +

      <Line>

      +

      <objectId>AMIV:Line:014014012</objectId>

      +

      ...

      +

      </Line>

      +

      ...

      +

      Dans + cet exemple, « lineId » est utilisé dans l’objet + « GroupOfLine »

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      2.2.1

      +
      +

      Libellé

      +
      +

      Vérification de la correcte référence à des + LIGNEs/Chouette (« Line ») dans GROUPE DE LIGNES (« GroupOfLine »).

      +
      +

      Champ + d’application

      +
      +

      <GroupOfLine>

      +

      <Line>

      +
      +

      Vérification

      +
      +

      - Si la classe d’objets + « GroupOfLine » existe alors poursuivre le test, sinon abandonner le + test,

      +

      - Si la valeur de + chaque élément « LineId » de la classe d’objets + « GroupOfLine », est identifiée dans l’élément + « objectId » de la classe d’objets « Line » alors le + test est validé, sinon le test est invalidé et produit le message « test + 2.2.1 : la valeur de l’élément « lineId » de la classe + d’objets « GroupOfLine » n’a pas été repérée dans l’élément + « objectId » de la classe d’objets « Line ».

      +
      + + +
      + diff --git a/app/views/test_sheet/2.20.html b/app/views/test_sheet/2.20.html new file mode 100644 index 000000000..7d433e7ff --- /dev/null +++ b/app/views/test_sheet/2.20.html @@ -0,0 +1,336 @@ +
      + + +

      Fiche +du point de contrôle N° 2.20

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Vérification + des identifiants d'exploitants que référencent les courses.

      +
      +

      Objectif

      +
      +

      Vérification de la correcte référence à + l’EXPLOITANT/Chouette (« Company ») dans une COURSE COMMERCIALE (« + VehicleJourney » ).

      +
      +

      Références

      +
      +

      TRIDENT/profil + CHOUETTE/Transmodel V4 et V5.1

      +
      +

      N° de fiche(s) + connexe(s)

      +
      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire + (si l’objet « VehicleJourney » existe et s’il contient l’objet + « operatorId »)

      +
      +

      Résultat

      +
      +

      Conforme + ou non conforme

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Lorsque + l’objet de course COURSE COMMERCIALE (« VehicleJourney » ) existe, et + lorsque l'identifiant EXPLOITANT/Chouette (« Company ») - + « operatorId » -qui est à caractère optionnel dans la COURSE + COMMERCIALE (« VehicleJourney » ) , est référencé, il convient de vérifier + qu'il correspond à l'identifiant « objectId » d'un + EXPLOITANT/Chouette (« Company »)défini.

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      Représentation + schématique de l’objet « VehicleJourney »

      +

       

      +

      +

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

      Exemple + d'une course qui référence un opérateur exploitant la ligne

      +

      ...

      +

      <Company>

      +

      <objectId>AMIV:Company:2422</objectId>

      +

      <name>CIF 93 - + TREMBLAY</name>

      +

      <registration>

      +

      <registrationNumber>014</registrationNumber>

      +

      </registration>

      +

      </Company>

      +

      ...

      +

      <VehicleJourney>

      +

      + <objectId>AMIV:VehicleJourney:8970758</objectId>

      +

      + <routeId>AMIV:Route:488970</routeId>

      +

      + <journeyPatternId>AMIV:JourneyPattern:488970M1</journeyPatternId>

      +

      <lineIdShortcut>AMIV:Line:014014012</lineIdShortcut>

      +

      <operatorId>AMIV:Company:2422</operatorId>

      +

      <timeSlotId>AMIV:TimeSlot:0</timeSlotId>

      +

      <vehicleJourneyAtStop>

      +

      <stopPointId>AMIV:StopPoint:488970A0A237816</stopPointId>

      +

      + <vehicleJourneyId>AMIV:VehicleJourney:8970758</vehicleJourneyId>

      +

      <arrivalTime>05:45:00</arrivalTime>

      +

      <departureTime>05:45:00</departureTime>

      +

      <order>1</order>

      +

      </vehicleJourneyAtStop>

      +

      <vehicleJourneyAtStop>

      +

      <stopPointId>AMIV:StopPoint:488970A1A237817</stopPointId>

      +

      <vehicleJourneyId>AMIV:VehicleJourney:8970758</vehicleJourneyId>

      +

      ...

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      2.20.1

      +
      +

      Libellé

      +
      +

      Vérification de la correcte référence à + l’EXPLOITANT/Chouette (« Company ») dans une COURSE COMMERCIALE (« + VehicleJourney » ).

      +
      +

      Champ + d’application

      +
      +

      <VehicleJourney>

      +

      <Company>

      +
      +

      Vérification

      +
      +

      - + Si l’objet « VehicleJourney » existe, poursuivre le test, sinon + abandonner le test

      +

       

      +

      - + Si l’élément désignant l’exploitant « operatorId » existe dans + l’objet « VehicleJourney », poursuivre le test, sinon abandonner le + test

      +

       

      +

      - Si un élément désignant + l’exploitant « operatorId » , référencé dans un objet + « VehicleJourney », possède un identifiant « objectId » + dans un objet « Company », alors le test est validé, sinon le test + est invalidé et produit le message « test 2.20.1 : la course XX + fait référence à un exploitant inexistant ».

      +
      + + +
      diff --git a/app/views/test_sheet/2.21.html b/app/views/test_sheet/2.21.html new file mode 100644 index 000000000..c083741eb --- /dev/null +++ b/app/views/test_sheet/2.21.html @@ -0,0 +1,325 @@ +
      + + +

      Fiche +du point de contrôle N° 2.21

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Référence + à une tranche horaire pour les courses.

      +
      +

      Objectif

      +
      +

      Vérification + de la correcte référence des COURSEs COMMERCIALEs

      +

      (« + VehicleJourney » ) à des TRANCHEs HORAIREs (« TimeSlot »).

      +
      +

      Références

      +
      +

      TRIDENT/profil + CHOUETTE/Transmodel V4 et V5.1

      +
      +

      N° de fiche(s) + connexe(s)

      +
      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire + (si l’objet « VehicleJourney » existe et s’il contient l’élément + « timeSlotId »)

      +
      +

      Résultat

      +
      +

      Conforme + ou non conforme

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Lorsque COURSE + COMMERCIALE (« VehicleJourney » ), existe, et lorsque l’élément + « timeSlotId », qui est à caractère optionnel dans la COURSE + COMMERCIALE (« VehicleJourney » ), est référencé, il convient de vérifier + qu'il identifie un objet TRANCHE HORAIRE (« TimeSlot » ) du réseau.

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      Représentation + schématique de l’objet « VehicleJourney »

      +

       

      +

      +

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

      Exemple + d'une course qui référence une tranche horaire

      +

      <TimeSlot>

      +

      <objectId>AMIV:TimeSlot:0</objectId>

      +

      ...

      +

      <VehicleJourney>

      +

      <objectId>AMIV:VehicleJourney:8970758</objectId>

      +

      <routeId>AMIV:Route:488970</routeId>

      +

      <journeyPatternId>AMIV:JourneyPattern:488970M1</journeyPatternId>

      +

      <lineIdShortcut>AMIV:Line:014014012</lineIdShortcut>

      +

      <operatorId>AMIV:Company:2422</operatorId>

      +

      <timeSlotId>AMIV:TimeSlot:0</timeSlotId>

      +

       

      +

      <vehicleJourneyAtStop>

      +

      <stopPointId>AMIV:StopPoint:488970A0A237816</stopPointId>

      +

      <vehicleJourneyId>AMIV:VehicleJourney:8970758</vehicleJourneyId>

      +

      <arrivalTime>05:45:00</arrivalTime>

      +

      <departureTime>05:45:00</departureTime>

      +

      <order>1</order>

      +

      </vehicleJourneyAtStop>

      +

       

      +

      <vehicleJourneyAtStop>

      +

      <stopPointId>AMIV:StopPoint:488970A1A237817</stopPointId>

      +

      <vehicleJourneyId>AMIV:VehicleJourney:8970758</vehicleJourneyId>

      +

      ...

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      2.21.1

      +
      +

      Libellé

      +
      +

      Vérification de la + correcte référence des COURSEs COMMERCIALEs

      +

      (« VehicleJourney » ) à + des TRANCHEs HORAIREs (« TimeSlot »).

      +
      +

      Champ + d’application

      +
      +

      <VehicleJourney>

      +

      <TimeSlot>

      +
      +

      Vérification

      +
      +

       

      +

      - + Si l’objet de course « VehicleJourney » existe, poursuivre le test, + sinon abandonner le test

      +

      - + Si l’élément de fréquence « timeSlotId » existe dans l’objet de + course « VehicleJourney », poursuivre le test, sinon abandonner le + test

      +

      - Si un élément de fréquence + « timeSlotId » , référencé dans un objet de course + « VehicleJourney », possède un identifiant « objectId » + dans un objet de fréquence « TimeSlot », alors le test est validé, + sinon le test est invalidé et produit le message « test 2.21.1 : la + course XX fait référence à une tranche horaire inexistante ».

      +
      + + +
      diff --git a/app/views/test_sheet/2.22.html b/app/views/test_sheet/2.22.html new file mode 100644 index 000000000..258bb16e9 --- /dev/null +++ b/app/views/test_sheet/2.22.html @@ -0,0 +1,350 @@ +
      + + +

      Fiche +du point de contrôle N° 2.22

      + +

       

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Cohérence + entre les points d'arrêts et les heures de passage.

      +
      +

      Objectif

      +
      +

      Vérifier + la correcte référence à un POINT D’ARRÊT SUR PARCOURS + (« StopPoint ») pour les HEUREs DE PASSAGE GRAPHIQUées/Chouette + (« VehicleJourneyAtStop »).

      +
      +

      Références

      +
      +

      TRIDENT/profil + CHOUETTE/Transmodel V4 et V5.1

      +
      +

      N°de fiche(s) + connexe(s)

      +
      +

      1.2 (vérifier qu’il existe au moins 2 HEURES DE PASSAGE + GRAPHIQUEES/Chouette pour une COURSE COMMERCIALE (« VehicleJourney » )

      +
      +

      Priorité

      +
      +

      Obligatoire + (si l’objet « VehicleJourney »)

      +
      +

      Résultat

      +
      +

      Conforme + ou non conforme

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Lorsque l’objet de + course COURSE COMMERCIALE (« VehicleJourney » ) existe, et pour chaque + « VehicleJourneyAtStop », qui est à caractère obligatoire dans la + course, il convient de vérifier que l'identifiant « stopPointId », + qui est à son tour obligatoire dans les « VehicleJourneyAtStop », + correspond à l'identifiant « objectId » d'un « StopPoint » + du réseau.

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      Représentation + schématique de l’objet « VehicleJourneyAtStop »

      +

       

      +

       

      +

      +

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

      Exemple + d'un heure de passage qui référence un point d'arrêt

      +

      ...

      +

      <StopPoint>

      +

      <objectId>AMIV:StopPoint:488970A0A237816</objectId>

      +

      <objectVersion>1</objectVersion>

      +

      ...

      +

      <VehicleJourney>

      +

      <objectId>AMIV:VehicleJourney:8970758</objectId>

      +

      <routeId>AMIV:Route:488970</routeId>

      +

      <journeyPatternId>AMIV:JourneyPattern:488970M1</journeyPatternId>

      +

      <lineIdShortcut>AMIV:Line:014014012</lineIdShortcut>

      +

      <operatorId>AMIV:Company:2422</operatorId>

      +

      <timeSlotId>AMIV:TimeSlot:0</timeSlotId>

      +

       

      +

      <vehicleJourneyAtStop>

      +

      <stopPointId>AMIV:StopPoint:488970A0A237816</stopPointId>

      +

      <vehicleJourneyId>AMIV:VehicleJourney:8970758</vehicleJourneyId>

      +

      <arrivalTime>05:45:00</arrivalTime>

      +

      <departureTime>05:45:00</departureTime>

      +

      <order>1</order>

      +

      </vehicleJourneyAtStop>

      +

       

      +

      <vehicleJourneyAtStop>

      +

      <stopPointId>AMIV:StopPoint:488970A1A237817</stopPointId>

      +

      <vehicleJourneyId>AMIV:VehicleJourney:8970758</vehicleJourneyId>

      +

      ...

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      2.22.1

      +
      +

      Libellé

      +
      +

      Vérifier la correcte + référence à un POINT D’ARRÊT SUR PARCOURS (« StopPoint ») pour les + HEUREs DE PASSAGE GRAPHIQUées/Chouette + (« VehicleJourneyAtStop »).

      +
      +

      Champ d’application

      +
      +

      <VehicleJourneyAtStop>

      +

      <VehicleJourney>

      +

      <StopPoint>

      +
      +

      Vérification

      +
      +

       

      +

      - + Si l’objet de course « VehicleJourney » existe, poursuivre le test, + sinon abandonner le test

      +

       

      +

      - Si « StopPointId » référencé + dans « VehicleJourneyAtStop », correspond à un identifiant + « objectId » dans « StopPoint », alors le test est + validé, sinon le test est invalidé et produit le message « test + 2.22.1 : une heure de passage XX fait référence à un point d’arrêt (« + StopPoint ») inexistant ».

      +

       

      +
      + + +
      diff --git a/app/views/test_sheet/2.23.html b/app/views/test_sheet/2.23.html new file mode 100644 index 000000000..dc5d20ad6 --- /dev/null +++ b/app/views/test_sheet/2.23.html @@ -0,0 +1,354 @@ +
      + + +

      Fiche +du point de contrôle N° 2.23

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Cohérence + entre les courses et des heures de passage.

      +
      +

      Objectif

      +
      +

      Vérification + de la correcte référence à une COURSE COMMERCIALE (« VehicleJourney ») dans + HEURE DE PASSAGE GRAPHIQUEE/Chouette (« VehicleJourneyAtStop »).

      +
      +

      Références

      +
      +

      TRIDENT/profil + CHOUETTE/Transmodel V4 et V5.1

      +
      +

      N° de fiche(s) + connexe(s)

      +
      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire + (si l’objet « VehicleJourney » existe et si ses + « VehicleJourneyAtStop » référencent l'identifiant + « vehicleJourneyId »)

      +
      +

      Résultat

      +
      +

      Conforme + ou non conforme

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Pour + chaque HEURE DE PASSAGE GRAPHIQUEE/Chouette + (« VehicleJourneyAtStop ») la référence à la COURSE COMMERCIALE

      +

      (« + VehicleJourney » ) à travers « vehicleJourneyId », est + optionnelle. Si elle est utilisée, vérifier qu’elle correspond à un + identifiant de COURSE COMMERCIALE (« VehicleJourney » ) définie.

      +

       

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      Représentation + schématique de l’objet « VehicleJourneyAtStop »

      +

       

      +

       

      +

      +

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

      Exemple + d'un temps d'attente qui référence la course qui le contient

      +

      ...

      +

      <VehicleJourney>

      +

      <objectId>AMIV:VehicleJourney:8970758</objectId>

      +

      <routeId>AMIV:Route:488970</routeId>

      +

      <journeyPatternId>AMIV:JourneyPattern:488970M1</journeyPatternId>

      +

      <lineIdShortcut>AMIV:Line:014014012</lineIdShortcut>

      +

      <operatorId>AMIV:Company:2422</operatorId>

      +

      <timeSlotId>AMIV:TimeSlot:0</timeSlotId>

      +

       

      +

      <vehicleJourneyAtStop>

      +

      <stopPointId>AMIV:StopPoint:488970A0A237816</stopPointId>

      +

      <vehicleJourneyId>AMIV:VehicleJourney:8970758</vehicleJourneyId>

      +

      <arrivalTime>05:45:00</arrivalTime>

      +

      <departureTime>05:45:00</departureTime>

      +

      <order>1</order>

      +

      </vehicleJourneyAtStop>

      +

       

      +

      <vehicleJourneyAtStop>

      +

      <stopPointId>AMIV:StopPoint:488970A1A237817</stopPointId>

      +

      <vehicleJourneyId>AMIV:VehicleJourney:8970758</vehicleJourneyId>

      +

      ...

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      2.23.1

      +
      +

      Libellé

      +
      +

      Vérification de la + correcte référence à une COURSE COMMERCIALE

      +

      (« VehicleJourney ») + dans HEURE DE PASSAGE GRAPHIQUEE/Chouette + (« VehicleJourneyAtStop »).

      +
      +

      Champ + d’application

      +
      +

      <VehicleJourneyAtStop>

      +

      <VehicleJourney>

      +

       

      +
      +

      Vérification

      +
      +

       

      +

      - + Si l’objet de course « VehicleJourney » existe, poursuivre le test, + sinon abandonner le test

      +

      - Si un élément + « VehicleJourneyId », référencé dans un objet + « VehicleJourneyAtStop », correspond à un identifiant + « objectId » dans l’objet de course « VehicleJourney » + qui contient l’objet de heure de passage au point d’arrêt, alors le test est + validé, sinon le test est invalidé et produit le message « test + 2.23.1 : un heure de passage XX fait référence à une course + inexistante »

      +

       

      +
      + + +
      diff --git a/app/views/test_sheet/2.24.html b/app/views/test_sheet/2.24.html new file mode 100644 index 000000000..04280b8ca --- /dev/null +++ b/app/views/test_sheet/2.24.html @@ -0,0 +1,282 @@ +
      + + +

      Fiche +du point de contrôle N° 2.24

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Cohérence entre la + mission commerciale de la course et l’itinéraire de la course

      +
      +

      Objectif

      +
      +

      Vérification de la + cohérence de la référence un Itinéraire/Chouette pour une COURSE COMMERCIALE + (« VehicleJourney ») et la MISSION COMMERCIALE + (« JourneyPattern ») correspondante.

      +
      +

      Références

      +
      +

      TRIDENT/profil + CHOUETTE/Transmodel V4 et V5.1

      +
      +

      N° de fiche(s) connexe(s)

      +
      +

       

      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire

      +
      +

      Résultat

      +
      +

      Conforme ou non + conforme

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      La + MISSION COMMERCIALE (« JourneyPattern ») correspondant à une COURSE + COMMERCIALE (« VehicleJourney ») possède un identifiant + d’Itinéraire. Ce même identifiant se retrouve dans la COURSE COMMERCIALE qui + est associée à cette MISSION COMMERCIALE.

      +

      Ce + point de contrôle consiste donc à vérifier la cohérence de deux identifiants. +

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      La mission possède un identifiant + d’Itinéraire (RouteId) :

      +

       

      +

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

      La course associée à la mission + commerciale possède le même identifiant d’Itinéraire (RouteId)

      +

       

      +

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      Test + 2.24.1

      +
      +

      Libellé

      +
      +

      Vérification + de la cohérence de la référence un Itinéraire/Chouette pour une COURSE + COMMERCIALE (« VehicleJourney ») et la MISSION COMMERCIALE + (« JourneyPattern ») correspondante.

      +
      +

      Champ d’application

      +
      +

       

      +

      <JourneyPattern>

      +

      <VehicleJourney>

      +

       

      +
      +

      Vérification

      +
      +

       

      +

      - + Si l’objet « JourneyPattern » mentionné dans les champs + d’application est présent une ou plusieurs fois, poursuivre le test, sinon le + test est abandonné.

      +

       

      +

      - + Si l’objet « vehicleJourney » mentionné dans les champs + d’application est présent une ou plusieurs fois, poursuivre le test, sinon le + test est abandonné.

      +

       

      +

      - + Si pour chaque objet « JourneyPattern », il existe un objet + « vehicleJourney » dont la valeur de l’attribut de l’élément + « RouteId » est égale à la valeur de l’élément + « RouteId » de l’objet de référence « JourneyPattern » + alors le test est validé, sinon le test est invalidé et fournit le + message : « test 2.24.1 : un objet + « vehicleJourney » possède une valeur de l’attribut de l’élément + « RouteId ». Cette valeur ne se retrouve dans un élément + « RouteId » d’un objet « JourneyPattern » » 

      +

       

      +
      + +
      + + diff --git a/app/views/test_sheet/2.25.html b/app/views/test_sheet/2.25.html new file mode 100644 index 000000000..4413a2710 --- /dev/null +++ b/app/views/test_sheet/2.25.html @@ -0,0 +1,320 @@ + +
      + + +

      Fiche +du point de contrôle N° 2.25

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Définition + des liens d’accès.

      +
      +

      Objectif

      +
      +

      Vérification + de la correcte référence aux Accès/ARRÊTs/NEPTUNE (« AccessPoint » + / « StopArea ») définissant des LiensAccèsZoneArrêt /NEPTUNE + (« AccessLink ») .

      +
      +

      Références

      +
      +

      TRIDENT/profil + NEPTUNE/Transmodel V4 et V5.1

      +
      +

      N°de fiche(s) + connexe(s)

      +
      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire + (si l’objet « AccessLink » existe)

      +
      +

      Résultat

      +
      +

      Conforme + ou non conforme

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      La + liste des LiensAccèsZoneArrêt /Chouette (« AccessLink ») définie + dans un « ChouettePTNetwork » est optionnelle. Les éléments + « startOfLink » et « endOfLink » de chaque + LiensAccèsZoneArrêt /NEPTUNE (« AccessLink ») sont obligatoires.

      +

      Lorsque + la liste des LiensAccèsZoneArrêt /NEPTUNE (« AccessLink ») est non + vide, il convient de vérifier que pour chaque LiensAccèsZoneArrêt /NEPTUNE + (« AccessLink ») « startOfLink » et + « endOfLink » correspondent à un identifiant d’ARRÊTs/NEPTUNE (« + StopArea ») ou à un identifiant d’ACCES/NEPTUNE («AccessPoint »).

      +
      + +

       

      + + + + + + +
      +

      Exemple

      +
      +

       

      +

      Représentation + schématique de l’Objet « AccessLink » dans le schéma XSD CHOUETTE

      +

       

      +

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

      Exemple d’un arrêt et + d’un point d’accès connectés lien d’accès

      +

      A définir

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      2.25.1

      +
      +

      Libellé

      +
      +

      Vérification + de la correcte référence aux ARRÊTs/Chouette (« StopArea ») et ACCES/NEPTUNE + («AccessPoint ») définissant des LiensAccèsZoneArrêt/NEPTUNE + (« AccessLink ») .

      +
      +

      Champ + d’application

      +
      +

      <StopArea>

      +

      <AccessPoint>

      +

      <AccessLink>

      +
      +

      Vérification

      +
      +

      - Si l’objet « AccessLink » existe alors + poursuivre le test, sinon le test est abandonné,

      +

      - Si l’objet + « AccessLink » possède des identifiants d’arrêt distincts + « StartOfLink » et « EndOfLink » alors poursuivre le test + sinon le test est invalidé et produit le message « test + 2.25.1.a : il manque au moins un identifiant d’arrêt ou d’accès + « StartOfLink » et « EndOfLink » dans  l’objet + « AccessLink ». »

      +

      - + Si chaque identifiant d’arrêt « StartOfLink » et + « EndOfLink » de l’objet « AccessLink » est défini dans + un objet « StopArea » ou «AccessPoint » , alors le test + est validé, sinon le test est invalidé et produit le message « test + 2.25.1.b : un identifiant d’arrêt ou d’accès « StartOfLink » + ou « EndOfLink » de l’objet « AccessLink» n’est pas repéré + dans un objet « StopArea » ou « AccessPoint ». »

      +
      + +

       

      + + +
      + diff --git a/app/views/test_sheet/2.26.html b/app/views/test_sheet/2.26.html new file mode 100644 index 000000000..6f3034a19 --- /dev/null +++ b/app/views/test_sheet/2.26.html @@ -0,0 +1,351 @@ + +
      + + +

      Fiche +du point de contrôle N° 2.26

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

       

      +

      Cohérence + entre les accès et leurs composants. (pour la lisibilité, il vaudrait mieux + que cette colonne soit en gras et la colonne de gauche ne soit pas en gras)

      +

       

      +
      +

      Objectif

      +
      +

      Vérification + de la correcte référence à des ARRÊTs/Chouette (« StopArea ») et/ou à des + LiensAccèsZoneArrêt /NEPTUNE (« AccessLink ») dans des + ACCES/NEPTUNE (« AccessPoint »)

      +
      +

      Références

      +
      +

      TRIDENT/profil + NEPTUNE/Transmodel V4 et V5.1

      +
      +

      N° de fiche(s) + connexe(s)

      +
      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire

      +
      +

      Résultat

      +
      +

      Conforme + ou non conforme

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Si un ACCES/NEPTUNE + (« AccessPoint ») est défini, il référence soit au moins + un autre ARRÊT/Chouette (« StopArea »), soit au moins un LiensAccèsZoneArrêt + /NEPTUNE (« AccessLink »).

      +

      Il convient alors de + vérifier que les éléments référencés trouvent une description dans la classe + d’objets qui les concernent.

      +
      + +

       

      + + + + + + +
      +

      Exemple

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +
      +

      Représentation + schématique de l’Objet « AccessPoint »

      +

      +

      Exemple + de AccessPoint avec containedIn de StopArea associé

      +

      ...

      +

      A définir

      +

      ...

      +

       

      +
      + +

       

      + +

       

      + +
      + +
      +
      + +
      + + + + + + + + + + + + + + + + + + + + + +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      2.26.1

      +
      +

      Libellé

      +
      +

      Vérification + de la correcte référence à des ARRÊTs/Chouette (« StopArea ») et/ou à des LiensAccèsZoneArrêt/NEPTUNE + (« AccessLink ») dans les ACCES/NEPTUNE (« AccessPoint »)

      +
      +

      Champ + d’application

      +
      +

      <AccessPoint>

      +

      <StopArea>

      +

      <AccessLink>

      +
      +

      Vérification

      +
      +

      - + Si la classe d’objets « AccessPoint» + existe alors poursuivre le test, sinon abandonner le test,

      +

      - + Si chaque élément « containedIn» contient une ou plusieurs valeurs, + alors le test est validé si ces valeurs se retrouvent dans des éléments + « objectId » des classes d’objets « StopArea » ou + « AccessLink » sinon le test est + invalidé et produit le message « test 2.26.1 : une ou plusieurs + valeurs de l’élément « containedIn» de la classe d’objets « AccessPoint» + n’est pas repérée dans la classe d’objets correspondante + « StopArea » ou « AccessLink ». » +

      +
      + + +
      + diff --git a/app/views/test_sheet/2.27.html b/app/views/test_sheet/2.27.html new file mode 100644 index 000000000..1c7440555 --- /dev/null +++ b/app/views/test_sheet/2.27.html @@ -0,0 +1,345 @@ + +
      + + +

      Fiche +du point de contrôle N° 2.27

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

       

      +

      Référence + aux arrêts dans les équipements

      +

       

      +
      +

      Objectif

      +
      +

      Vérification + de la correcte référence à des ARRÊTs/Chouette (« StopArea ») dans des + FACILITYs/NEPTUNE (« Facility »)

      +
      +

      Références

      +
      +

      TRIDENT/profil + NEPTUNE/Transmodel V4 et V5.1

      +
      +

      N° de fiche(s) + connexe(s)

      +
      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire

      +
      +

      Résultat

      +
      +

      Conforme + ou non conforme

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Si un équipement /NEPTUNE + Facility») est défini et que + « facilityLocation » est défini, il référence au moins un autre + ARRÊT/Chouette (« StopArea »).

      +

      Il convient alors de + vérifier que les éléments référencés trouvent une description dans la classe + d’objets qui les concernent.

      +
      + +

       

      + + + + + + +
      +

      Exemple

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +
      +

      Représentation + schématique de l’Objet « Facility »

      +

      +

      Exemple + de Facility avec containedIn et de StopArea associé

      +

      ...

      +

      A définir

      +

      ...

      +

       

      +
      + +

       

      + +

       

      + +
      + +
      +
      + +
      + + + + + + + + + + + + + + + + + + + + + +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      2.27.1

      +
      +

      Libellé

      +
      +

      Vérification + de la correcte référence à des ARRÊTs/Chouette (« StopArea ») dans les + EQUIPEMENTs /NEPTUNE Facility»)

      +
      +

      Champ + d’application

      +
      +

      <StopArea>

      +

      <Facility>

      +
      +

      Vérification

      +
      +

      - + Si la classe d’objets « Facility» + existe alors poursuivre le test, sinon abandonner le test,

      +

      - + Si l’élément « facilityLocation » n’est pas défini : + abandonner le test,

      +

      - + Si chaque élément « containedIn» contient une valeur, alors le test est + validé si ces valeurs se retrouvent dans des éléments « objectId » + de la classe d’objet « StopArea » sinon le test est invalidé et + produit le message « test 2.27.1 : une valeur de l’élément + « containedIn» de la classe d’objets « Facility» + n’est pas repérée dans la classe d’objets correspondante + « StopArea ». »

      +
      + + +
      + + diff --git a/app/views/test_sheet/2.28.html b/app/views/test_sheet/2.28.html new file mode 100644 index 000000000..461c913e6 --- /dev/null +++ b/app/views/test_sheet/2.28.html @@ -0,0 +1,399 @@ + +
      + + +

      Fiche +du point de contrôle N° 2.28

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

       

      +

      Référencement + correct des composants dans les équipements

      +

       

      +
      +

      Objectif

      +
      +

      Vérification + de la correcte référence à des ARRÊTs/Chouette (« StopArea ») ou à des + LIGNEs/Chouette (« Line ») ou à des POINTs D’ARRÊT + SUR PARCOURS (« StopPoint ») ou à des + TronçonsDeCorrespondance/Chouette (« ConnectionLink ») dans + des EQUIPEMENTs/NEPTUNE (« Facility »)

      +
      +

      Références

      +
      +

      TRIDENT/profil + NEPTUNE/Transmodel V4 et V5.1

      +
      +

      N° de fiche(s) + connexe(s)

      +
      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire

      +
      +

      Résultat

      +
      +

      Conforme + ou non conforme

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Si un EQUIPEMENTs + /NEPTUNE Facility») est défini, il référence au + moins un autre ARRÊT/Chouette (« StopArea ») ou une autre + LIGNEs/Chouette (« Line ») ou un autre POINTs D’ARRÊT SUR + PARCOURS (« StopPoint ») ou un autre + TronçonsDeCorrespondance/Chouette (« ConnectionLink »).

      +

      Il convient alors de + vérifier que l’élément référencé trouve une description dans la classe + d’objets qui le concerne.

      +
      +
      + + + + + +
      +

      Exemple

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +
      +

      Représentation + schématique de l’Objet « Facility »

      +

      +

      Exemple + de Facility et de StopPointId associé

      +

      ...

      +

      A définir

      +

      ...

      +

       

      +
      + +

       

      + +

       

      + +
      + +
      +
      + +
      + + + + + + + + + + + + + + + + + + + + + +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      2.28.1

      +
      +

      Libellé

      +
      +

      Vérification + de la correcte référence à un ARRÊT/Chouette (« StopArea ») ou à une + LIGNE/Chouette (« Line ») ou à un POINT D’ARRÊT SUR PARCOURS + (« StopPoint ») ou à un TronçonsDeCorrespondance/Chouette + (« ConnectionLink ») dans les FACILITYs /NEPTUNE Facility»)

      +
      +

      Champ + d’application

      +
      +

      <StopArea>

      +

      < + StopPoint >

      +

      < + Line>

      +

      < + ConnectionLink >

      +

      <Facility>

      +
      +

      Vérification

      +
      +

      - + Si la classe d’objets « Facility» + existe alors poursuivre le test, sinon abandonner le test,

      +

      - + Si chaque élément « stopAreaId» contient une valeur, alors le test est + validé si ces valeurs se retrouvent dans des éléments « objectId » + de la classe d’objet « StopArea » sinon le test est invalidé et + produit le message « test 2.28.1 : une valeur de l’élément + « stopAreaId» de la classe d’objets « Facility» + n’est pas repérée dans la classe d’objets correspondant « StopArea ». » +

      +

      - Si chaque élément « lineId» contient + une valeur, alors le test est validé si ces valeurs se retrouvent dans des + éléments « objectId » de la classe d’objet « Line» sinon le test + est invalidé et produit le message « test 2.28.2 : une valeur de l’élément + « lineId» + de la classe d’objets « Facility» n’est pas repérée dans la classe + d’objets correspondant « Line». »

      +

      - Si chaque élément « connectionLinkId» + contient une valeur, alors le test est validé si ces valeurs se retrouvent + dans des éléments « objectId » de la classe d’objet « ConnectionLink » sinon le test + est invalidé et produit le message « test 2.28.3 : une valeur de + l’élément « connectionLinkId» + de la classe d’objets « Facility» n’est pas repérée dans la classe + d’objets correspondant « ConnectionLink ». »

      +

      - Si chaque élément « stopPointId» + contient une valeur, alors le test est validé si ces valeurs se retrouvent + dans des éléments « objectId » de la classe d’objet + « StopPoint » sinon le test est invalidé et produit le message + « test 2.28.4 : une valeur de l’élément « stopPointId» de la + classe d’objets « Facility» n’est pas repérée + dans la classe d’objets correspondant « StopPoint ». »

      +
      + +
      diff --git a/app/views/test_sheet/2.3.html b/app/views/test_sheet/2.3.html new file mode 100644 index 000000000..8785be94f --- /dev/null +++ b/app/views/test_sheet/2.3.html @@ -0,0 +1,354 @@ + +
      + +

      Fiche +du point de contrôle N° 2.3

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

       

      +

      Cohérence + entre les arrêts et leurs composants.

      +

       

      +
      +

      Objectif

      +
      +

      Vérification + de la correcte référence à des ARRÊTs/Chouette (« StopArea ») et/ou à des + POINTs D’ARRÊT SUR PARCOURS (« StopPoint ») dans les + ARRÊTs/Chouette (« StopArea »)

      +
      +

      Références

      +
      +

      TRIDENT/profil + CHOUETTE/Transmodel V4 et V5.1

      +
      +

      N° de fiche(s) + connexe(s)

      +
      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire

      +
      +

      Résultat

      +
      +

      Conforme + ou non conforme

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Si un ARRÊT/Chouette (« + StopArea ») est défini, il référence soit au moins un autre ARRÊT/Chouette (« + StopArea »), soit au moins un POINT D’ARRÊT SUR PARCOURS (« StopPoint »).

      +

      Il convient alors de + vérifier que les éléments référencés trouvent une description dans la classe + d’objets qui les concernent.

      +
      + +
      + + + + + + + +
      +

      Exemple

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +
      +

      Représentation + schématique de l’Objet « StopArea »

      +

      +

      Exemple + de StopArea avec contains et de StopPoint associé

      +

      ...

      +

      <ChouetteArea>

      +

      <StopArea>

      +

      <objectId>AMIV:StopPoint:237814</objectId>

      +

      <name>Croix + l'Alouettes</name>

      +

      <contains>AMIV:StopPoint:488965A7A237814</contains>

      +

      <centroidOfArea>AMIV:Place:237814</centroidOfArea>

      +

      <StopAreaExtension>

      +

      <areaType>Quay</areaType>

      +

      <fareCode>0</fareCode>

      +

      </StopAreaExtension>

      +

      </StopArea>

      +

      ...

      +

      <StopPoint>

      +

      <objectId>AMIV:StopPoint:488965A7A237814</objectId>

      +

      <objectVersion>1</objectVersion>

      +

      <longitude>0</longitude>

      +

      <latitude>0</latitude>

      +

      <longLatType>WGS84</longLatType>

      +

      ...

      +

       

      +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + + +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      2.3.1

      +
      +

      Libellé

      +
      +

      Vérification + de la correcte référence à des ARRÊTs/Chouette (« StopArea ») et/ou à des + POINTs D’ARRÊT SUR PARCOURS (« StopPoint ») dans les + ARRÊTs/Chouette (« StopArea »)

      +
      +

      Champ + d’application

      +
      +

      <StopArea>

      +

      <StopPoint>

      +
      +

      Vérification

      +
      +

      - + Si la classe d’objets « StopArea » existe alors poursuivre le test, + sinon abandonner le test,

      +

      - + Si chaque élément « contains » contient une ou plusieurs valeurs, + alors le test est validé si ces valeurs se retrouvent dans des éléments + « objectId » des classes d’objets « StopArea » ou + « StopPoint » sinon le test est invalidé et produit le message + « test 2.3.1 : une ou plusieurs valeurs de l’élément « contains » + de la classe d’objets « StopArea » n’est pas repérée dans la classe + d’objets correspondant « StopPoint » ou + « StopArea ». »

      +
      +
      diff --git a/app/views/test_sheet/2.4.html b/app/views/test_sheet/2.4.html new file mode 100644 index 000000000..7bd6d3bea --- /dev/null +++ b/app/views/test_sheet/2.4.html @@ -0,0 +1,367 @@ + +
      + +

       

      + +

      Fiche +du point de contrôle N° 2.4

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Définition + des correspondances.

      +
      +

      Objectif

      +
      +

      Vérification + de la correcte référence aux ARRÊTs/Chouette (« StopArea ») définissant des + TronçonsDeCorrespondance/Chouette (« ConnectionLink ») .

      +
      +

      Références

      +
      +

      TRIDENT/profil + CHOUETTE/Transmodel V4 et V5.1

      +
      +

      N°de fiche(s) + connexe(s)

      +
      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire + (si l’objet « ConnectionLink » existe)

      +
      +

      Résultat

      +
      +

      Conforme + ou non conforme

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      La + liste des TronçonsDeCorrespondance/Chouette (« ConnectionLink ») + définie dans un « ChouettePTNetwork » est optionnelle. Les éléments + « startOfLink » et « endOfLink » de chaque + TronçonDeCorrespondance/Chouette (« ConnectionLink ») sont + obligatoires.

      +

      Lorsque + la liste des TronçonsDeCorrespondance/Chouette (« ConnectionLink ») + est non vide, il convient de vérifier que pour chaque + TronçonDeCorrespondance/Chouette (« ConnectionLink ») + « startOfLink » et « endOfLink » correspondent à deux + identifiants distincts d’ARRÊTs/Chouette (« StopArea »).

      +
      + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      Représentation + schématique de l’Objet « ConnectionLink » dans le schéma XSD + CHOUETTE

      +

       

      +

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

      Exemple de deux arrêts connectés + par une correspondance

      +

      <StopArea>

      +

      <objectId>AMIV:StopPoint:237803</objectId>

      +

      <name>ZAE + Robert Moinon</name>

      +

      <contains>AMIV:StopPoint:488973A5A237803</contains>

      +

      <contains>AMIV:StopPoint:489111A5A237803</contains>

      +

      <contains>AMIV:StopPoint:488962A4A237803</contains>

      +

      <centroidOfArea>AMIV:Place:237803</centroidOfArea>

      +

      <StopAreaExtension>

      +

      <areaType>Quay</areaType>

      +

      <fareCode>0</fareCode>

      +

      </StopAreaExtension>

      +

      </StopArea>

      +

      ...

      +

      <StopArea>

      +

      <objectId>AMIV:StopPoint:237804</objectId>

      +

      <name>ZAE + REP</name>

      +

      <contains>AMIV:StopPoint:488973A4A237804</contains>

      +

      <contains>AMIV:StopPoint:489111A4A237804</contains>

      +

      <contains>AMIV:StopPoint:488962A3A237804</contains>

      +

      <centroidOfArea>AMIV:Place:237804</centroidOfArea>

      +

      <StopAreaExtension>

      +

      <areaType>Quay</areaType>

      +

      <fareCode>0</fareCode>

      +

      </StopAreaExtension>

      +

      </StopArea>

      +

      ...

      +

      <ConnectionLink>

      +

      <objectId>AMIV:ConnectionLink:02378030237804</objectId>

      +

      <startOfLink>AMIV:StopPoint:237803</startOfLink>

      +

      <endOfLink>AMIV:StopPoint:237804</endOfLink>

      +

      <defaultDuration>PT2M53S</defaultDuration>

      +

      </ConnectionLink>

      +

       

      +

      La + correspondance 'AMIV:ConnectionLink:02378030237804' + connecte + deux arrêts du réseau 'AMIV:StopPoint:237803' + et 'AMIV:StopPoint:237804'.

      +

       

      +

       

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      2.4.1

      +
      +

      Libellé

      +
      +

      Vérification + de la correcte référence aux ARRÊTs/Chouette (« StopArea ») définissant des + TronçonsDeCorrespondance/Chouette (« ConnectionLink ») .

      +
      +

      Champ + d’application

      +
      +

      <StopArea>

      +

      <ConnectionLink>

      +
      +

      Vérification

      +
      +

      - Si l’objet « ConnectionLink » existe alors + poursuivre le test, sinon le test est abandonné,

      +

      - Si l’objet + « ConnectionLink » possède des identifiants d’arrêt distincts + « StartOfLink » et « EndOfLink » alors poursuivre le test + sinon le test est invalidé et produit le message « test + 2.4.1.a : il manque au moins un identifiant d’arrêt + « StartOfLink » et « EndOfLink » dans  l’objet + « ConnectionLink ». »

      +

      - + Si chaque identifiant d’arrêt « StartOfLink » et + « EndOfLink » de l’objet « ConnectionLink » est défini + dans un objet « StopArea », alors le test est validé, sinon le test + est invalidé et produit le message « test 2.4.1.b : un identifiant + d’arrêt « StartOfLink » ou « EndOfLink » de l’objet + « ConnectionLink» n’est pas repéré dans un objet + « StopArea ». »

      +
      + +
      \ No newline at end of file diff --git a/app/views/test_sheet/2.5.html b/app/views/test_sheet/2.5.html new file mode 100644 index 000000000..cff209e5d --- /dev/null +++ b/app/views/test_sheet/2.5.html @@ -0,0 +1,465 @@ + +
      + + +

      Fiche +du point de contrôle N° 2.5

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Cohérence + entre les courses et les horaires.

      +
      +

      Objectif

      +
      +

      Vérification + de la correcte référence aux COURSES COMMERCIALES + (« VehicleJourney ») dans les VERSIONs DES HORAIRES/Chouette

      +

      (« + Timetable »).

      +

      Vérifier + que chaque COURSE COMMERCIALE (« VehicleJourney ») est référencée + dans une VERSION DES HORAIRES/Chouette (« Timetable »).

      +
      +

      Références

      +
      +

      TRIDENT/profil + CHOUETTE/Transmodel V4 et V5.1

      +
      +

      N° de fiche(s) + connexe(s)

      +
      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire + (si « Timetable » existe et si l’identifiant de course + « VehicleJourneyId » existe dans « Timetable »)

      +
      +

      Résultat

      +
      +

      Conforme + ou non conforme ou message d’avertissement si une course est absente d’une + VERSION DES HORAIRES/Chouette

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      La liste des données + horaires VERSION DES HORAIRES/Chouette (« + Timetable ») est optionnelle. Lorsque cette liste est non vide, chaque + valeur d’attribut doit alors être référencée dans un objet COURSE + COMMERCIALE (« VehicleJourney ») du réseau.

      +

      Chaque COURSE COMMERCIALE identifiée doit + être référencée dans une VERSION DES HORAIRES/Chouette.

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      Représentation + schématique de l’Objet « Timetable »

      +

       

      +

      +

       

      +

       

      +

       

      +

       

      +

      Exemple + de VERSION DES HORAIRES/Chouette avec une liste d'identifiants de COURSEs + COMMERCIALEs:

      +

       

      +

      <Timetable>

      +

      <objectId>AMIV:Timetable:146357</objectId>

      +

      <period>

      +

      <startOfPeriod>2006-09-18</startOfPeriod>

      +

      <endOfPeriod>2007-12-21</endOfPeriod>

      +

      </period>

      +

      <calendarDay>2006-09-18</calendarDay>

      +

      <calendarDay>2006-09-19</calendarDay>

      +

      ...

      +

      <vehicleJourneyId>AMIV:VehicleJourney:8970777</vehicleJourneyId>

      +

      <vehicleJourneyId>AMIV:VehicleJourney:8970778</vehicleJourneyId>

      +

      <vehicleJourneyId>AMIV:VehicleJourney:8970779</vehicleJourneyId>

      +

      ...

      +

      </Timetable>

      +

      ...

      +

      <Timetable>

      +

      <objectId>AMIV:Timetable:146358</objectId>

      +

      ...

      +

      </Timetable>

      +

      ...

      +

      <VehicleJourney>

      +

      <objectId>AMIV:VehicleJourney:8970777</objectId>

      +

      <routeId>AMIV:Route:488970</routeId>

      +

      ...

      +

      <VehicleJourney>

      +

      <objectId>AMIV:VehicleJourney:8970778</objectId>

      +

      ...

      +

      <VehicleJourney>

      +

      <objectId>AMIV:VehicleJourney:8970779</objectId>

      +

      ...

      +

       

      +

      Exemple + de COURSE COMMERCIALE référencée dans une VERSION DES HORAIRES/Chouette

      +

       

      +

      <VehicleJourney>

      +

      <objectId>NINOXE:VehicleJourney:521875</objectId>

      +

      <objectVersion>0</objectVersion>

      +

      <creationTime>2007-06-28T17:18:56.000+02:00</creationTime>

      +

      <routeId>NINOXE:Route:521753</routeId>

      +

      <number>0</number>

      +

      <vehicleJourneyAtStop>

      +

      <stopPointId>NINOXE:StopPoint:521802</stopPointId>

      +

      <vehicleJourneyId>NINOXE:VehicleJourney:521875</vehicleJourneyId>

      +

       

      +

      </vehicleJourneyAtStop>

      +

       

      +

      <VehicleJourney>

      +

       

      +

      <Timetable>

      +

      <objectId>NINOXE:Timetable:521973</objectId>

      +

      <objectVersion>0</objectVersion>

      +

      <creationTime>2007-06-28T17:18:56.000+02:00</creationTime>

      +

      <vehicleJourneyId>NINOXE:VehicleJourney:521875</vehicleJourneyId>

      +

      <vehicleJourneyId>NINOXE:VehicleJourney:521876</vehicleJourneyId>

      +

      <vehicleJourneyId>NINOXE:VehicleJourney:521877</vehicleJourneyId>

      +

      <vehicleJourneyId>NINOXE:VehicleJourney:521878</vehicleJourneyId>

      +

      <comment>Vacances + scolaires </comment>

      +

      </Timetable>

      +

       

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      2.5.1

      +
      +

      Libellé

      +
      +

      Vérification + de la correcte référence aux COURSES COMMERCIALES + (« VehicleJourney » ) dans les VERSIONs DES HORAIRES/Chouette

      +

      (« + Timetable »).

      +
      +

      Champ + d’application

      +
      +

      <Timetable>

      +

      <VehicleJourney>

      +
      +

      Vérification

      +
      +

       

      +

      - + Si l’objet « Timetable » existe alors poursuivre le test, sinon le test + est abandonné,

      +

      - + Si l’élément «VehicleJourneyId  » existe alors poursuivre le test, + sinon le test est abandonné,

      +

      - + Si chaque identifiant de course, dans l’objet « Timetable », est + référencé dans un objet « VehicleJourney » alors le test est + validé, sinon le test est invalidé et produit le message « test + 2.5.1 : un identifiant de course, situé dans l’objet + « Timetable », n’est pas référencé dans un objet + « VehicleJourney »».

      +

       

      +

       

      +

      N° test

      +
      +

      Test + 2.5.2

      +

       

      +

      Libellé

      +
      +

      Vérifier + que chaque COURSE COMMERCIALE (« VehicleJourney » ) est référencée + dans une VERSION DES HORAIRES/Chouette (« Timetable »).

      +

       

      +

      Champ d’application

      +
      +

      <VehicleJourney>

      +

      <Timetable>

      +

       

      +

      Vérification

      +
      +

       

      +

      - + Si l’objet de course « VehicleJourney » mentionné dans les champs + d’application est présent une ou plusieurs fois, poursuivre le test, sinon le + test est abandonné.

      +

       

      +

      - + Si l’identifiant « objectId » de l’objet + « VehicleJourney » précédent est détecté dans l’élément + « vehicleJourneyId » d’un objet « Timetable » alors le + test est validé, sinon le test est invalidé et fournit le message + d’avertissement : « test 3.12.1 : une course n’est pas + référencée dans aucun « TimeTable »».

      +

       

      +
      + + +
      + diff --git a/app/views/test_sheet/2.6.html b/app/views/test_sheet/2.6.html new file mode 100644 index 000000000..2b2a7a852 --- /dev/null +++ b/app/views/test_sheet/2.6.html @@ -0,0 +1,355 @@ + +
      + + +

      Fiche +du point de contrôle N° 2.6

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Définition + des terminus

      +
      +

      Objectif

      +
      +

      Vérification + de la correcte définition du terminus de LIGNE/Chouette (« Line »).

      +
      +

      Références

      +
      +

      TRIDENT/profil + CHOUETTE/Transmodel V4 et V5.1

      +
      +

      N°de fiche(s) + connexe(s)

      +
      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire + (si « LineEnd » existe)

      +
      +

      Résultat

      +
      +

      Conforme + ou non conforme

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      L’ensemble + des éléments de fin des LIGNEs/Chouette (« Line ») (« LineEnd ») a + un caractère optionnel. Si ces éléments existent, il convient de vérifier que + chacun d’entre eux possède une valeur d’attribut qui identifie un POINT + D’ARRÊT SUR PARCOURS (« StopPoint »)

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      Représentation + schématique de l’Objet « Line »

      +

       

      +

      +

      +

      Exemple de  « Line » avec un arrêt de fin de trajet + défini plus loin :

      +

      <Line>

      +

      <objectId>AMIV:Line:014014012</objectId>

      +

      <objectVersion>1</objectVersion>

      +

      <creationTime>2007-03-21T16:05:54.000+01:00</creationTime>

      +

      <name>LIGNE + 012</name>

      +

      <publishedName>Les + Courriers de l'Ile de France</publishedName>

      +

      <transportModeName>Bus</transportModeName>

      +

      <lineEnd>AMIV:StopPoint:488957A0A237830</lineEnd>

      +

      ...

      +

      <StopPoint>

      +

      <objectId>AMIV:StopPoint:488957A0A237830</objectId>

      +

      <objectVersion>1</objectVersion>

      +

      ...

      +

       

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      2.6.1

      +
      +

      Libellé

      +
      +

      Vérification + de la correcte définition du terminus de LIGNE/Chouette (« Line »).

      +
      +

      Champ + d’application

      +
      +

      <Line>

      +

      <StopPoint>

      +
      +

      Vérification

      +
      +

      - + Si l’élément «LineEnd» existe alors poursuivre le test, sinon le test est + abandonné,

      +

      - Si chaque identifiant de fin de trajet dans l’élément + « LineEnd » de l’objet « Line », est repéré dans un objet + « StopPoint » alors le test est validé, sinon le test est invalidé + et produit le message « test 2.6.1 : un identifiant de point + d’arrêt de fin de trajet n’est pas repéré dans un objet + « StopPoint »».

      +
      +

      N° test

      +
      +

      2.6.2

      +
      +

      Libellé

      +
      +

      Vérification + du caractère terminus des points de fin de trajet des LIGNEs/Chouette (« Line + »).

      +
      +

      Champ + d’application

      +
      +

      <Line>

      +

      <StopPoint>

      +
      +

      Vérification

      +
      +

      - + Si l’élément «LineEnd» existe alors poursuivre le test, sinon le test est + abandonné,

      +

      - + Si chaque identifiant de fin de trajet dans l’élément « LineEnd » + de l’objet « Line », est repéré une et une seule fois dans un objet + « startOfLink » ou bien dans un objet « endOfLink » d’un + tronçon « PTLink » alors le test est validé, sinon le test est + invalidé et produit le message « test 2.6.2 : un identifiant de + point d’arrêt de fin de trajet n’est pas repéré comme début ou comme fin d’un + trajet».

      +

       

      +
      + + +
      + diff --git a/app/views/test_sheet/2.7.html b/app/views/test_sheet/2.7.html new file mode 100644 index 000000000..7618e3356 --- /dev/null +++ b/app/views/test_sheet/2.7.html @@ -0,0 +1,322 @@ +
      + +

      Fiche +du point de contrôle N° 2.7

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Cohérence + entre les Itinéraires/Chouette et les LIGNEs/Chouette.

      +
      +

      Objectif

      +
      +

      Vérification + de la correcte référence aux Itinéraires/Chouette (« ChouetteRoute ») + pour chaque LIGNE/Chouette (« Line ») .

      +
      +

      Références

      +
      +

      TRIDENT/profil + CHOUETTE/Transmodel V4 et V5.1

      +
      +

      N°de fiche(s)

      +

      connexe(s)

      +
      +

      1.2 + (vérifier qu’il y a au moins un élément d’itinéraire « RouteId » + dans l’objet « Line)

      +
      +

      Priorité

      +
      +

      Obligatoire +

      +
      +

      Résultat

      +
      +

      Conforme + ou non conforme

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      L’élément + « RouteId » au sein de l'objet « Line » a un caractère + obligatoire. Il convient de vérifier que chaque élément « RouteId » + correspond à un identifiant « ObjectId » d’un Itinéraire/Chouette (« ChouetteRoute »). +

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

      Représentation + schématique de l’Objet « Line »

      +

       

      +

      +

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

       

      +

      Exemple + de définition de « routeId » dans une « Line »

      +

      <Line>

      +

      <objectId>AMIV:Line:014014012</objectId>

      +

      <objectVersion>1</objectVersion>

      +

      <creationTime>2007-03-21T16:05:54.000+01:00</creationTime>

      +

      <name>LIGNE + 012</name>

      +

      <publishedName>Les + Courriers de l'Ile de France</publishedName>

      +

      <transportModeName>Bus</transportModeName>

      +

      <lineEnd>AMIV:StopPoint:488957A0A237830</lineEnd>

      +

      <ptNetworkIdShortcut>AMIV:PTNetwork:95</ptNetworkIdShortcut>

      +

      <routeId>AMIV:Route:488957</routeId>

      +

      <routeId>AMIV:Route:488959</routeId>

      +

      <routeId>AMIV:Route:488961</routeId>

      +

      ...

      +

      <ChouetteRoute>

      +

      <objectId>AMIV:Route:488957</objectId>

      +

      ...

      +

      <ChouetteRoute>

      +

      <objectId>AMIV:Route:488959</objectId>

      +

      ...

      +

      <ChouetteRoute>

      +

      <objectId>AMIV:Route:488961</objectId>

      +

      ...

      +

       

      +

       

      +

       

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      2.7.1

      +
      +

      Libellé

      +
      +

      Vérification de + la correcte référence aux Itinéraires/Chouette (« ChouetteRoute ») + pour chaque LIGNE/Chouette (« Line ») .

      +
      +

      Champ d’application

      +
      +

      <Line>

      +

      <ChouetteRoute>

      +
      +

      Vérification

      +
      +

      - Si chaque identifiant d’Itinéraire + « RouteId » au sein de l'objet « Line » est identifié + dans l’objet « ChouetteRoute » alors le test est validé, sinon le + test est invalidé et produit le message « test 2.7.1 : un + identifiant d’Itinéraire « RouteId » situé dans l’objet + « Line » n’est pas identifié dans l’objet + « ChouetteRoute » ».

      +
      + +
      diff --git a/app/views/test_sheet/2.8.html b/app/views/test_sheet/2.8.html new file mode 100644 index 000000000..372ec6429 --- /dev/null +++ b/app/views/test_sheet/2.8.html @@ -0,0 +1,572 @@ +
      + + +

      Fiche +du point de contrôle N° 2.8

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Cohérence entre les missions + commerciales et les itinéraires.

      +
      +

      Objectif

      +
      +

      Vérification + de la correcte référence des MISSIONs COMMERCIALEs + (« JourneyPattern ») par les Itinéraires/Chouette + (« ChouetteRoute »).

      +

      Vérification + de la correcte référence des Itinéraires/Chouette + (« ChouetteRoute ») que référencent les MISSIONs COMMERCIALEs + (« JourneyPattern »).

      +

      Vérification + de la cohérence de la séquence des POINTs D’ARRÊT SUR PARCOURS (« StopPoint + ») d’une MISSION COMMERCIALE et celle de l’ Itinéraire/Chouette + (« ChouetteRoute ») correspondant.

      +
      +

      Références

      +
      +

      TRIDENT/profil + CHOUETTE/Transmodel V4 et V5.1

      +
      +

      N° de fiche(s)

      +

      connexe(s)

      +
      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire + (en partie si l’objet « JourneyPattern » existe)

      +
      +

      Résultat

      +
      +

      Conforme + ou non conforme

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      L’élément + « journeyPatternId » au sein de l' Itinéraire/Chouette + (« ChouetteRoute ») a un caractère obligatoire. Il convient de + vérifier qu'il existe une MISSION COMMERCIALE (« JourneyPattern ») + correspondante.

      +

      Inversement, la référence à un Itinéraire/Chouette + (« ChouetteRoute ») pour chaque mission + commerciale + « JourneyPattern », doit correspondre à un Itinéraire/Chouette + (« ChouetteRoute »).

      +

      L’ordre des points définissant + « JourneyPattern » et « ChouetteRoute » doit être + respecté.

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

      Représentation schématique de + l’Objet « ChouetteRoute »

      +

       

      +

      +

      Exemple d'identifiant de mission commerciale + « journeyPatternId » dans un objet « ChouetteRoute » + correspondant à un « ObjectId » dans un objet + « JourneyPattern »

      +

      ...

      +

      <ChouetteRoute>

      +

      <objectId>AMIV:Route:488957</objectId>

      +

      <name>0140140120535</name>

      +

      <publishedName>GOUSSAINVILLE + RER - CHAUMONTEL</publishedName>

      +

      <ptLinkId>AMIV:PTLink:488957A0A02378300237816</ptLinkId>

      +

      <ptLinkId>AMIV:PTLink:488957A1A02378160237817</ptLinkId>

      +

      <journeyPatternId>AMIV:JourneyPattern:488957M102</journeyPatternId>

      +

      ...

      +

      <JourneyPattern>

      +

      <objectId>AMIV:JourneyPattern:488957M102</objectId>

      +

      <routeId>AMIV:Route:488957</routeId>

      +

      <stopPointList>AMIV:StopPoint:488957A0A237830</stopPointList>

      +

      <stopPointList>AMIV:StopPoint:488957A1A237816</stopPointList>

      +

      <stopPointList>AMIV:StopPoint:488957A2A237817</stopPointList>

      +

      </JourneyPattern>

      +

      ...

      +

      Représentation schématique de + l’objet JourneyPattern

      +

       

      +

      +

       

      +

      Exemple d'une mission qui référence une + ChouetteRoute

      +

      ...

      +

      <ChouetteRoute>

      +

      <objectId>AMIV:Route:489111</objectId>

      +

      <name>0140140120996</name>

      +

      ...

      +

      <JourneyPattern>

      +

      <objectId>AMIV:JourneyPattern:489111M74</objectId>

      +

      <routeId>AMIV:Route:489111</routeId>

      +

      <stopPointList>AMIV:StopPoint:489111A0A237832</stopPointList>

      +

      <stopPointList>AMIV:StopPoint:489111A1A237807</stopPointList>

      +

      <stopPointList>AMIV:StopPoint:489111A2A237806</stopPointList>

      +

      <stopPointList>AMIV:StopPoint:489111A3A237805</stopPointList>

      +

      <stopPointList>AMIV:StopPoint:489111A4A237804</stopPointList>

      +

      <stopPointList>AMIV:StopPoint:489111A5A237803</stopPointList>

      +

      <stopPointList>AMIV:StopPoint:489111A6A237832</stopPointList>

      +

      <lineIdShortcut>AMIV:Line:014014012</lineIdShortcut>

      +

      </JourneyPattern>

      +

      ...

      +

       

      +

       

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      2.8.1

      +
      +

      Libellé

      +
      +

      Vérification + de la correcte référence des MISSIONs COMMERCIALEs + (« JourneyPattern ») par les Itinéraires/Chouette + (« ChouetteRoute »).

      +
      +

      Champ + d’application

      +
      +

      <ChouetteRoute>

      +

      <JourneyPattern>

      +
      +

      Vérification

      +
      +

       

      +

      - + Si l’élément « journeyPatternId », référencé dans l’objet + « ChouetteRoute » possède un identifiant « ObjectId » + dans un objet « JourneyPattern », le test est validé, sinon le test + est invalidé et produit le message « test 2.8.1 : un élément + « journeyPatternId » dans un objet d’Itinéraire + « ChouetteRoute » n’a pas d’identifiant « ObjectId » dans + un objet « JourneyPattern» ».

      +

       

      +
      +

      N° test

      +
      +

      2.8.2

      +
      +

      Libellé

      +
      +

      Vérification + de la correcte référence des Itinéraires/Chouette + (« ChouetteRoute ») que référencent les MISSIONs COMMERCIALEs + (« JourneyPattern »).

      +
      +

      Champ + d’application

      +
      +

      <JourneyPattern>

      +

      <ChouetteRoute>

      +
      +

      Vérification

      +
      +

       

      +

      - + Si l’objet de MISSION COMMERCIALE existe, poursuivre le test, sinon + abandonner le test

      +

       

      +

      - Si l’élément d’Itinéraire + « routeId », référencé dans un objet « JourneyPattern », + possède un identifiant « objectId » dans l’objet d’Itinéraire + « ChouetteRoute », alors le test est validé, sinon le test est + invalidé et produit le message « test 2.8.1 : l’élément + d’Itinéraire « routeId », référencé dans un objet + « JourneyPattern », n’a pas d’identifiant « objectId » + dans l’objet d’Itinéraire « ChouetteRoute » »

      +

       

      +

       

      +

      N° test

      +
      +

      Test 2.8.3

      +

       

       

      +

      Libellé

      +
      +

      Vérification + de la cohérence de la séquence des POINTs D’ARRÊT SUR PARCOURS (« StopPoint + ») d’une mission commerciale + et celle de l’Itinéraire/Chouette (« ChouetteRoute ») correspondant.

      +

       

       

      +

      Champ d’application

      +
      +

      <StopPoint>

      +

      <JourneyPattern>

      +

      <ptLink>

      +

      <ChouetteRoute>

      +

       

       

      +

      Vérification

      +
      +

      - + Si l’élément « StopPoint » mentionné dans les champs d’application + est présent une ou plusieurs fois, poursuivre le test, sinon le test est + abandonné.

      +

       

      +

      - + Si l’identifiant du « StopPoint » détecté, figure dans la liste des points + d’arrêts de l’objet « JourneyPattern », poursuivre le test, sinon + le test est invalidé et fournit le message : « test 2.8.3 a : + l’identifiant du « StopPoint » détecté dans l’objet « StopPoint » + ne figure pas dans la liste des points d’arrêt de l’objet + « JourneyPattern » ».

      +

      +

      - + Si l’identifiant du « StopPoint » figure dans l’un des éléments + « startOfLink » ou « endOfLink » du tronçon + « PtLink », poursuivre le test, sinon le test est invalidé et + fournit le message : « test 2.8.3 b: l’identifiant du « StopPoint + » ne figure pas dans l’un des éléments « startOfLink » ou + « endOfLink » du tronçon « PtLink » ».

      +

       

      +

      - + Si l’identifiant du tronçon « PtLink », détecté ci-avant, est + intégré dans un Itinéraire « ChouetteRoute », poursuivre le test, + sinon le test est invalidé et fournit le message : « test 2.8.3 + c : l’identifiant du tronçon « PtLink », détecté dans le test + 3.3.1b, n’est pas intégré dans un Itinéraire + « ChouetteRoute » ».

      +

       

      +

      - + Si l’identifiant d’Itinéraire « ChouetteRoute », détecté ci-avant, + est le même que celui détecté ci-avant dans la MISSION COMMERCIALE + « JourneyPattern », le test est validé, sinon le test est invalidé + et fournit le message : « test 2.8.3 d : l’identifiant + d’Itinéraire « ChouetteRoute » n’est le même que celui détecté dans + la MISSION COMMERCIALE « JourneyPattern » »

      +

       

      + + +
      diff --git a/app/views/test_sheet/2.9.html b/app/views/test_sheet/2.9.html new file mode 100644 index 000000000..1650f0a9a --- /dev/null +++ b/app/views/test_sheet/2.9.html @@ -0,0 +1,298 @@ + +
      + + +

      Fiche +du point de contrôle N° 2.9

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Définition + de l’itinéraire retour.

      +
      +

      Objectif

      +
      +

      Vérifier + la correcte référence à un Itinéraire/Chouette (« ChouetteRoute ») + dans le cas d’un itinéraire de retour.

      +
      +

      Références

      +
      +

      TRIDENT/profil + CHOUETTE/Transmodel V4 et V5.1

      +
      +

      N°de fiche(s)

      +

      connexe(s)

      +
      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire + (si l’identifiant « wayBackRouteId » existe)

      +
      +

      Résultat

      +
      +

      Conforme + ou non conforme

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      L’élément + d’Itinéraire de retour « wayBackRouteId » au sein de l’objet + Itinéraire/Chouette (« ChouetteRoute ») a un caractère optionnel. + Si une valeur d’attribut est définie, il convient de s'assurer qu’elle + correspond à un Itinéraire/Chouette (« ChouetteRoute ») dans le + même réseau.

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      Représentation + schématique de l’Objet « ChouetteRoute »

      +

       

      +

      +

       

      +

      Exemple + d'itinéraire de retour

      +

      ...

      +

      <ChouetteRoute>

      +

      <objectId>AMIV:Route:488957</objectId>

      +

      <name>0140140120535</name>

      +

      <publishedName>GOUSSAINVILLE + RER - CHAUMONTEL</publishedName>

      +

      <ptLinkId>AMIV:PTLink:488957A0A02378300237816</ptLinkId>

      +

      <ptLinkId>AMIV:PTLink:488957A1A02378160237817</ptLinkId>

      +

      <journeyPatternId>AMIV:JourneyPattern:488957M10200</journeyPatternId>

      +

      <comment>12 + Lycée Gérard de Nerval – Cyprien Réthoré</comment>

      +

      <wayBackRouteId>AMIV:Route:488959</wayBackRouteId>

      +

      <RouteExtension>

      +

      <wayBack>R</wayBack>

      +

      </RouteExtension>

      +

      </ChouetteRoute>

      +

      <ChouetteRoute>

      +

      <objectId>AMIV:Route:488959</objectId>

      +

      <name>0140140120536</name>

      +

      ...

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      2.9.1

      +
      +

      Libellé

      +
      +

      Vérifier la + correcte référence à un Itinéraire/Chouette (« ChouetteRoute ») + dans le cas d’un Itinéraire de retour.

      +
      +

      Champ d’application

      +
      +

      <ChouetteRoute>

      +
      +

      Vérification

      +
      +

       

      +

      - Si l’élément d’Itinéraire de + retour «wayBackRouteId » est présent dans + l’objet « ChouetteRoute » alors poursuivre le test, sinon le test + est abandonné

      +

       

      +

      - Si l élément d’Itinéraire de + retour « wayBackRouteId », référencé dans un objet d’Itinéraire + « ChouetteRoute » possède un identifiant « ObjectId » + dans un autre objet d’Itinéraire « ChouetteRoute », le test est + validé, sinon le test est invalidé et produit le message « test + 2.9.1 : un élément d’Itinéraire de retour « wayBackRouteId » + dans un objet d’Itinéraire « ChouetteRoute » n’a pas d’identifiant + « ObjectId » dans un autre objet d’Itinéraire + «  ChouetteRoute ».

      +

       

      +
      + + +
      + diff --git a/app/views/test_sheet/3.1.html b/app/views/test_sheet/3.1.html new file mode 100644 index 000000000..7467796ea --- /dev/null +++ b/app/views/test_sheet/3.1.html @@ -0,0 +1,244 @@ +
      + + +

      Fiche +du point de contrôle N° 3.1

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Points d’arrêt de + dénomination différente et très proches

      +
      +

      Objectif

      +
      +

      Signaler la présence de POINTs + D’ARRÊT SUR PARCOURS (« StopPoint ») très proches et de + dénomination différente sur un même réseau.

      +
      +

      Références

      +
      +

      TRIDENT/profil CHOUETTE/Transmodel + V4 et V5.1

      +
      +

      N° de fiche(s) connexe(s)

      +
      +

       

      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire

      +
      +

      Résultat

      +
      +

      Délivrance d’un avertissement de + mise en garde sur des conséquences éventuelles de dysfonctionnement

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Chaque + POINT D’ARRÊT SUR PARCOURS (« StopPoint ») est localisé grâce à ses + coordonnées en latitude et en longitude. La mise en œuvre de ce point de + contrôle consiste à vérifier la présence de POINT D’ARRÊT SUR PARCOURS + proches et de dénomination différente. Pour cela un rayon de proximité entre + POINT D’ARRÊT SUR PARCOURS est à déterminer.

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      +

       

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      Test + 3.1.1

      +
      +

      Libellé

      +
      +

      Vérifier + que 2 POINTs D’ARRÊT SUR PARCOURS (« StopPoint ») très proches + porte le même nom/même adresse

      +
      +

      Champ d’application

      +
      +

      <StopPoint>

      +
      +

      Vérification

      +
      +

       

      +

      - + Si l’élément « StopPoint » mentionné dans les champs d’application + est présent une ou plusieurs fois, poursuivre le test, sinon le test est + abandonné.

      +

       

      +

      - + Si pour chaque élément « StopPoint », la distance spatiale calculée + à partir de la valeur de l’attribut des éléments « longitude », + « latitude » et « longLatType » entre lui et tous les + autres objets « stopPoint » est inférieure à une valeur + paramétrable XX alors vérifier que la valeur de l’attribut de l’élément + « name » de ces deux objets « StopPoint » est identique. + Si elle est différente, le test fournit le message d’avertissement : + « test 3.1.1 : deux points d’arrêt séparés par une distance + inférieure à une valeur paramétrable XX ne portent pas le même nom ».

      +

       

      +

      - Sinon le test est validé

      +
      + +

       

      + +
      + diff --git a/app/views/test_sheet/3.10.html b/app/views/test_sheet/3.10.html new file mode 100644 index 000000000..22180a1aa --- /dev/null +++ b/app/views/test_sheet/3.10.html @@ -0,0 +1,432 @@ +
      + + +

      Fiche +du point de contrôle N° 3.10

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Détection des boucles

      +
      +

      Objectif

      +
      +

      Vérifier si + chaque Itinéraire/Chouette (« ChouetteRoute ») contient des boucles.

      +
      +

      Références

      +
      +

      TRIDENT/profil CHOUETTE/Transmodel + V4 et V5.1

      +
      +

      N° de fiche(s) connexe(s)

      +
      +

       

      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire

      +
      +

      Résultat

      +
      +

      Délivrance d’un avertissement de + mise en garde sur des conséquences éventuelles de dysfonctionnement

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

       

      +

      Dans + le cas d’une boucle, l’Itinéraire/Chouette (« ChouetteRoute ») comporte une + intersection avec lui-même. Toutefois, à l’endroit de l’intersection, un + POINT D’ARRÊT SUR PARCOURS (« StopPoint ») supplémentaire doit être + créé.

      +

      Il faut donc vérifier, à l’intersection, + que le POINT D’ARRÊT SUR PARCOURS (« StopPoint ») du premier + passage et POINT D’ARRÊT SUR PARCOURS (« StopPoint ») qui assure + l’intersection se trouvent au même emplacement. Dans ce type d’Itinéraire/Chouette + (« ChouetteRoute »), il y a au moins deux POINTs D’ARRÊT SUR PARCOURS qui + ont (ou pratiquement – la fourchette reste à définir) les mêmes coordonnées.

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      +

       

      +

      +

       

      +

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      Test + 3.10.1

      +
      +

      Libellé

      +
      +

      Vérification + de l’utilisation unique dans un Itinéraire/Chouette (« ChouetteRoute ») d’un + POINT D’ARRÊT SUR PARCOURS (« StopPoint »)

      +
      +

      Champ d’application

      +
      +

      <StopPoint>

      +

      <PtLink>

      +

      <ChouetteRoute>

      +
      +

      Vérification

      +
      +

       

      +

      - Si l’élément « StopPoint » + mentionné dans les champs d’application est présent une ou plusieurs fois, + poursuivre le test, sinon le test est abandonné

      +

       

      +

      - Si l’identifiant du point d’arrêt + détecté, figure dans un ou deux tronçons « PtLink », poursuivre le + test, sinon le test est invalidé et fournit le message : « test + 3.10.1a : le point d’arrêt d’identifiant « ObjectId » est défini + de manière unique et ne retrouve pas dans au moins deux tronçons».

      +

       

      +

      - Si le ou les identifiants de tronçons + identifiés précédemment sont référencés dans un même élément + « chouetteRoute » alors le test est validé, sinon le test est + invalidé et fournit le message ; « test 3.10.1b : les + identifiants de tronçon identifiés dans le 3.10.1a ne sont pas présents dans + un même itinéraire ».

      +

       

      +
      +

       

      +
      +

       

      +
      +

      N° test

      +
      +

      Test + 3.10.2

      +
      +

      Libellé

      +
      +

      Vérification de boucle dans un itinéraire/Chouette

      +
      +

      Champ d’application

      +
      +

      <StopPoint>

      +

      <PtLink>

      +

      <ChouetteRoute>

      +
      +

      Vérification

      +
      +

       

      +

      - + Si l’élément « ChouetteRoute » mentionné dans les champs + d’application est présent une ou plusieurs fois, poursuivre le test, sinon le + test est abandonné.

      +

       

      +

      - Si pour l’élément + « chouetteRoute », la liste des tronçons « PtLink » + utilise des points d’arrêt « StopPoint » ayant la même valeur + d’attribut que l’élément « containedIn » alors le test fournit le + message d’avertissement : «  test 3.10.2 : des tronçons + « PtLink » utilisent des points d’arrêt « StopPoint » + ayant la même valeur d’attribut que l’élément + « containedIn » ».

      +

       

      +

      - + Sinon le test est validé

      +
      +

      N° test

      +
      +

      Test + 3.10.3

      +
      +

      Libellé

      +
      +

      Vérification + de la distance entre points d’arrêt d’un même itinéraire/Chouette

      +
      +

      Champ d’application

      +
      +

      <StopPoint>

      +

      <PtLink>

      +

      <ChouetteRoute>

      +
      +

      Vérification

      +
      +

       

      +

      - + Si l’élément « chouetteRoute » mentionné dans les champs + d’application est présent une ou plusieurs fois, poursuivre le test, sinon le + test est abandonné.

      +

       

      +

      - + Si pour l’objet « chouetteRoute », la liste des tronçons + « PtLink » utilise des points d’arrêt « StopPoint » + proches entre eux (la distance spatiale entre point d’arrêt à partir des + valeurs des attributs des éléments « longitude », « latitude» + et « lonLatType » inférieure à XX) alors le test fournit le message + d’avertissement « des points d’arrêt « StopPoint », utilisés + par des tronçons d’itinéraire, sont proches les uns des autres d’une distance + inférieure à une valeur paramétrable XX ».

      +

       

      +

      - + Sinon le test est validé

      +
      + +

       

      + +
      + diff --git a/app/views/test_sheet/3.11.html b/app/views/test_sheet/3.11.html new file mode 100644 index 000000000..56d5e2ef6 --- /dev/null +++ b/app/views/test_sheet/3.11.html @@ -0,0 +1,257 @@ +
      + + +

      Fiche +du point de contrôle N° 3.11

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Détection des retours en + arrière

      +
      +

      Objectif

      +
      +

      Signaler que sur un + Itinéraire/Chouette (« ChouetteRoute ») le ou les MISSIONs + COMMERCIALEs (« JourneyPattern ») comportent des retours en arrière

      +
      +

      Références

      +
      +

      TRIDENT/profil CHOUETTE/Transmodel + V4 et V5.1

      +
      +

      N° de fiche(s) connexe(s)

      +
      +

       

      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire

      +
      +

      Résultat

      +
      +

      Délivrance d’un avertissement de + mise en garde sur des conséquences éventuelles de dysfonctionnement

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Une MISSION COMMERCIALE (« JourneyPattern ») + comporte une liste de POINTs D’ARRÊT SUR PARCOURS (« StopPoint ») + ordonnés, décrivant le plan de déplacement pour les véhicules de transport + public. Une MISSION COMMERCIALE (« JourneyPattern ») peut passer + par un POINT D’ARRÊT SUR PARCOURS (« StopPoint ») plus d’une fois. + Un retour en arrière consiste donc à repasser sur des POINTs D’ARRÊT SUR + PARCOURS (« StopPoint ») déjà utilisés.

      +

      On + peut donc signaler les MISSIONs COMMERCIALEs qui comportent des POINTs + D’ARRÊT SUR PARCOURS utilisés au moins deux fois (POINTs D’ARRÊT SUR PARCOURS + dont les identifiants sont identiques).

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

      +

       

      +

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      Test 3.11.1

      +
      +

      Libellé

      +
      +

      Vérification de l’utilisation répétitive de POINTs D’ARRÊT SUR + PARCOURS d’un Itinéraire/Chouette + (« ChouetteRoute »)

      +
      +

      Champ d’application

      +
      +

      <PtLink>

      +

      <ChouetteRoute>

      +
      +

      Vérification

      +
      +

       

      +

      - Si l’élément « ChouetteRoute » + mentionné dans les champs d’application est présent une ou plusieurs fois, + poursuivre le test, sinon le test est abandonné.

      +

       

      +

      - Si pour l’objet + « ChouetteRoute », la liste des tronçons « PtLink » + utilise des points d’arrêt « StopPoint » identiques plus de deux + fois alors le test fournit le message d’avertissement « test + 3.11.1 : les tronçons « PtLink » d’un itinéraire utilisent des + points d’arrêt « StopPoint » identiques plus de deux fois ».

      +

       

      +

      - Sinon le test est validé

      +
      + +

       

      + +
      + diff --git a/app/views/test_sheet/3.12.html b/app/views/test_sheet/3.12.html new file mode 100644 index 000000000..9a93c2888 --- /dev/null +++ b/app/views/test_sheet/3.12.html @@ -0,0 +1,255 @@ +
      + + +

      Fiche +du point de contrôle N° 3.12

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Connexité du graphe des + lignes et des points d’arrêt

      +
      +

      Objectif

      +
      +

      Vérifier que les POINTs + D’ARRÊT SUR PARCOURS (« StopPoint ») sont + accessibles par les voyageurs quel que soit leur point de départ, sans tenir + compte des HEUREs DE PASSAGE GRAPHIQUEEs/Chouette + (« VehicleJourneyAtStop »)

      +
      +

      Références

      +
      +

      TRIDENT/profil CHOUETTE/Transmodel + V4 et V5.1

      +
      +

      N° de fiche(s) connexe(s)

      +
      +

       

      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire

      +
      +

      Résultat

      +
      +

      Délivrance d’un avertissement de + mise en garde sur des conséquences éventuelles de dysfonctionnement

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Le réseau est décrit dans le + fichier XML par des POINTs D’ARRÊT SUR PARCOURS (« StopPoint ») , des TRONCONS + COMMERCIAUX/Chouette (« PtLink »), et des TronçonDeCorrespondances/Chouette + (« ConnectionLink »).

      +

      Il faut vérifier la connexité de ces éléments en + prenant des POINTs D’ARRÊT SUR PARCOURS et en créant un cheminement vers les + autres POINTs D’ARRÊT SUR PARCOURS.

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      +

       

      +

      +

       

      +

      +

       

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      Test + 3.12.1

      +
      +

      Libellé

      +
      +

      Construction + d’un graphe à partir de chaque POINTs D’ARRÊT SUR PARCOURS

      +
      +

      Champ d’application

      +
      +

      <StopPoint>

      +

      <PtLink>

      +

      <ConnectionLink>

      +
      +

      Vérification

      +
      +

       

      +

      - + Si l’élément « StopPoint » mentionné dans les champs d’application + est présent une ou plusieurs fois, poursuivre le test, sinon le test est + abandonné.

      +

       

      +

      - + Construire le graphe entre chaque « StopPoint » à partir des objets + de tronçon « PtLink » et des correspondances « ConnectionLink»

      +

       

      +

      - Si le graphe ainsi constitué est connexe, + alors le test est validé, sinon le test est invalidé et fournit le message + « test 3.12.1 : le graphe constitué entre chaque point d’arrêt + n’est pas satisfaisant ».

      +

       

      +
      + +

       

      + +
      diff --git a/app/views/test_sheet/3.13.html b/app/views/test_sheet/3.13.html new file mode 100644 index 000000000..5f3a51bcd --- /dev/null +++ b/app/views/test_sheet/3.13.html @@ -0,0 +1,278 @@ +
      + + +

      Fiche +du point de contrôle N° 3.13

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Connexité du graphe des + lignes et des points d’arrêt avec intégration des horaires

      +
      +

      Objectif

      +
      +

      Vérifier que les POINTs + D’ARRÊT SUR PARCOURS (« StopPoint ») du + réseau sont accessibles par les voyageurs quel que soit leur point de départ. + Cette connexité est établie en tenant compte des HEUREs DE PASSAGE + GRAPHIQUEEs/Chouette (« VehicleJourneyAtStop »)

      +
      +

      Références

      +
      +

      TRIDENT/profil CHOUETTE/Transmodel + V4 et V5.1

      +
      +

      N° de fiche(s) connexe(s)

      +
      +

       

      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire

      +
      +

      Résultat

      +
      +

      Délivrance d’un avertissement de + mise en garde sur des conséquences éventuelles de dysfonctionnement

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Le réseau est décrit dans le fichier XML par des POINTs + D’ARRÊT SUR PARCOURS (« StopPoint »), des TRONCONS + COMMERCIAUX/Chouette (« PtLink »), et + TronçonsDeCorrespondance/Chouette (« ConnectionLink ») mais aussi + des COURSES (« VehicleJourney ») et des HEUREs DE PASSAGE GRAPHIQUEEs/Chouette + (« VehicleJourneyAtStop »)

      +

      Le principe est le même que pour la fiche 3.11 mais avec une + dimension temporelle en plus. Il faut vérifier la connexité de ces + éléments en prenant chacun des POINTs D’ARRÊT SUR PARCOURS + (« StopPoint ») et en créant un cheminement vers les + autres POINTs + D’ARRÊT SUR PARCOURS (« StopPoint »).

      +

       

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      +

       

      +

      +

       

      +

      +

       

      +

      +

       

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      Test + 3.13.1

      +
      +

      Libellé

      +
      +

      Construction + d’un graphe à partir de chaque POINTs D’ARRÊT SUR PARCOURS + (« StopPoint ») en tenant compte des HEUREs + DE PASSAGE GRAPHIQUEEs/Chouette (« VehicleJourneyAtStop »)

      +
      +

      Champ d’application

      +
      +

      <StopPoint>

      +

      <VehicleJourney>

      +

      <VehicleJourneyAtStop>

      +

      <ConnectionLink>

      +
      +

      Vérification

      +
      +

       

      +

      - + Si l’élément « StopPoint » mentionné dans les champs d’application + est présent une ou plusieurs fois, poursuivre le test, sinon le test est + abandonné.

      +

       

      +

      - + Construire le graph entre chaque point d’arrêt « StopPoint » à + partir des objets « VehicleJourney », + « VehicleJourneyAtStop » et des correspondances + « ConnectionLink ».

      +

       

      +

      - + Si le graph ainsi constitué est connexe, alors le test est validé, sinon le + test est invalidé et fournit le message ; « test 3.13.1 : le + graphe constitué entre chaque point d’arrêt n’est pas satisfaisant ».

      +

       

      +
      + +

       

      + +
      diff --git a/app/views/test_sheet/3.14.html b/app/views/test_sheet/3.14.html new file mode 100644 index 000000000..feaee5be7 --- /dev/null +++ b/app/views/test_sheet/3.14.html @@ -0,0 +1,258 @@ +
      + + +

      Fiche +du point de contrôle N° 3.14

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Carte + isochrone du fichier de données

      +
      +

      Objectif

      +
      +

      Dessin du graphe des HEUREs DE PASSAGE GRAPHIQUEEs/Chouette + (« VehicleJourneyAtStop ») par rapport au point + centre de tous les POINTs D’ARRÊT SUR PARCOURS (« StopPoint »).

      +
      +

      Références

      +
      +

      TRIDENT/profil CHOUETTE/Transmodel + V4 et V5.1

      +
      +

      N° de fiche(s) connexe(s)

      +
      +

       

      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire

      +
      +

      Résultat

      +
      +

      Indication pour appréciation

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      La + carte des isochrones est obtenu en fonction des POINTs D’ARRÊT SUR PARCOURS + (« StopPoint ») et des HEUREs DE PASSAGE + GRAPHIQUEEs/Chouette (« VehicleJourneyAtStop ») des COURSEs

      +

       

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      +

       

      +

      +

       

      +

      +

       

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      Test + 3.14.1

      +
      +

      Libellé

      +
      +

      Rendu + graphique du réseau à l’aide des isochrones

      +
      +

      Champ d’application

      +
      +

      <StopPoint>

      +

      <VehicleJourney>

      +

      <VehicleJourneyAtStop>

      +
      +

      Vérification

      +
      +

       

      +

      - + Si l’élément « StopPoint » mentionné dans les champs d’application + est présent une ou plusieurs fois, poursuivre le test, sinon le test est + abandonné.

      +

       

      +

      - Construire le graphe des isochrones des temps + minimum entre « StopPoint » à partir des objets + « VehicleJourney » et « VehicleJourneyAtStop ».

      +

       

      +

      - Construire le graphe des isochrones des + temps maximum entre « StopPoint » à partir des objets + « VehicleJourney », « VehicleJourneyAtStop ».

      +

       

      +

      - + Interpréter manuellement le rendu des deux graphes.

      +

       

      +
      + +

       

      + +
      + diff --git a/app/views/test_sheet/3.15.html b/app/views/test_sheet/3.15.html new file mode 100644 index 000000000..da861b959 --- /dev/null +++ b/app/views/test_sheet/3.15.html @@ -0,0 +1,286 @@ +
      + + +

      Fiche +du point de contrôle N° 3.15

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Cohérence des horaires

      +
      +

      Objectif

      +
      +

      Vérifier que les HEUREs DE PASSAGE GRAPHIQUEEs/Chouette + (« VehicleJourneyAtStop ») sont + cohérentes (pas de temps de parcours aberrant et pas de retour en arrière + dans le temps)

      +
      +

      Références

      +
      +

      TRIDENT/profil CHOUETTE/Transmodel + V4 et V5.1

      +
      +

      N° de fiche(s) connexe(s)

      +
      +

       

      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire

      +
      +

      Résultat

      +
      +

      Délivrance d’un avertissement de + mise en garde sur des conséquences éventuelles de dysfonctionnement

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Dans + chaque COURSE (« VehicleJourney ») du fichier , il faut vérifier + que les HEUREs DE PASSAGE GRAPHIQUEEs/Chouette + (« VehicleJourneyAtStop ») pour chaque POINT D’ARRÊT SUR + PARCOURS (« StopPoint ») sont dans un ordre chronologique et que + les écarts horaires entre 2 POINTs D’ARRÊT SUR PARCOURS + (« StopPoint ») consécutifs + ne sont pas aberrants (fixer pour cela un seuil)

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

      Exemple + de définition à partir d’un fichier XML sur le RER A

      +

       

      +

      <VehicleJourney>

      +

      <objectId>NINOXE:VehicleJourney:521875</objectId>

      +

      <objectVersion>0</objectVersion>

      +

      <creationTime>2007-06-28T17:18:56.000+02:00</creationTime>

      +

      <routeId>NINOXE:Route:521753</routeId>

      +

      <number>0</number>

      +

      <vehicleJourneyAtStop>

      +

      <stopPointId>NINOXE:StopPoint:521802</stopPointId>

      +

      <vehicleJourneyId>NINOXE:VehicleJourney:521875</vehicleJourneyId>

      +

      <arrivalTime>08:00:00</arrivalTime>

      +

      <departureTime>08:00:00</departureTime>

      +

      </vehicleJourneyAtStop>

      +

      <vehicleJourneyAtStop>

      +

      <stopPointId>NINOXE:StopPoint:521803</stopPointId>

      +

      <vehicleJourneyId>NINOXE:VehicleJourney:521875</vehicleJourneyId>

      +

      <arrivalTime>08:01:00</arrivalTime>

      +

      <departureTime>08:01:00</departureTime>

      +

      </vehicleJourneyAtStop>

      +

      ……..

      +

      ………

      +

      <VehicleJourney>

      +

       

      +

      L’horaire + du premier point d’arrêt dans la course est 8H00, l’horaire du second est + 8H01. On constate que les horaires sont chronologiques

      +

       

      +

      +

       

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      Test 3.15.1

      +
      +

      Libellé

      +
      +

      Vérification de cohérence des HEUREs DE PASSAGE GRAPHIQUEEs/Chouette + (« VehicleJourneyAtStop ») d’une + COURSE (« VehicleJourney ») pour chaque POINT D’ARRÊT SUR PARCOURS + (« StopPoint »)

      +
      +

      Champ d’application

      +
      +

       

      +

      <VehicleJourneyAtStop>

      +

       

      +
      +

      Vérification

      +
      +

       

      +

      - Si l’élément « VehicleJourneyAtStop », + mentionné dans les champs d’application, est présent une ou plusieurs fois, + poursuivre le test, sinon le test est abandonné.

      +

       

      +

      - Si dans l’élément « VehicleJourneyAtStop » + identifié, la différence absolue entre la valeur de l’attribut de l’élément + « arrivalTime » et la valeur de l’attribut de l’élément + « departureTime » est inférieure à une valeur paramétrable XX, le + test est validé, sinon le test est invalidé et fournit le message : + « test 3.15.1 : la différence absolue entre la valeur de l’attribut + de l’élément « arrivalTime » et la valeur de l’attribut de + l’élément « departureTime » est supérieure à une valeur + paramétrable XX ».

      +

       

      +

       

      +
      + + +
      diff --git a/app/views/test_sheet/3.16.html b/app/views/test_sheet/3.16.html new file mode 100644 index 000000000..6b007bfcb --- /dev/null +++ b/app/views/test_sheet/3.16.html @@ -0,0 +1,465 @@ +
      + + +

      Fiche +du point de contrôle N°3.16

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Cohérence des courses

      +
      +

      Objectif

      +
      +

      Vérifier que les COURSEs (« VehicleJourney ») + sont cohérentes entre elles c’est à dire que si deux COURSEs utilisent le + même TRONCON COMMERCIAL/Chouette (« PtLink ») A -> B, les temps + de parcours entre un POINT D’ARRÊT SUR PARCOURS (« StopPoint ») A + et un POINT D’ARRÊT SUR PARCOURS (« StopPoint ») B doivent être + cohérents et signaler les journées sans COURSE.

      +
      +

      Références

      +
      +

      TRIDENT/profil CHOUETTE/Transmodel + V4 et V5.1

      +
      +

      N° de fiche(s) connexe(s)

      +
      +

       

      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire

      +
      +

      Résultat

      +
      +

      Délivrance d’un avertissement de + mise en garde sur des conséquences éventuelles de dysfonctionnement

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Si un TRONCON + COMMERCIAL/Chouette (« PtLink ») A -> B se retrouve dans + plusieurs COURSEs(« VehicleJourney »), il faut vérifier que les + écarts horaires entre ces 2 POINTs D’ARRÊT SUR PARCOURS + (« StopPoint ») sont cohérents (fixer une fourchette de + tolérance).

      +

      On vérifie qu’il y a des COURSEs pour une + journée donnée dans la VERSION DES HORAIRES/Chouette + (« Timetable »).

      +

       

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      +

       

      +

      +

       

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      Test 3.16.1

      +
      +

      Libellé

      +
      +

      Cohérence horaire pour 2 COURSEs + (« VehicleJourney ») utilisant le même couple de POINTs D’ARRÊT SUR + PARCOURS (« StopPoint »)

      +
      +

      Champ d’application

      +
      +

       

      +

      <vehicleJourneyAtStop>

      +

       

      +
      +

      Vérification

      +
      +

       

      +

      - Si le fichier contient au moins deux + objets « vehicleJourney » incluant au moins deux objets + « vehicleJourneyAtStop » consécutifs, poursuivre le test, sinon le + test est abandonné.

      +

       

      +

      - Si pour deux objets + « vehicleJourneyAtStop » successifs d’une course + « vehicleJourney », il existe un autre couple + « vehicleJourneyAtStop » successifs d’une autre course + « vehicleJourney » tel que les deux premiers + « vehicleJourneyAtStop » possèdent la même valeur de l’attribut de + l’élément « stopPointId » et que les deux deuxièmes + « vehicleJourneyAtStop » possèdent la même valeur de l’attribut de + l’élément <stopPointId>, alors la différence absolue entre la valeur de + l’attribut de l’élément « departureTime » du premier point d’arrêt + et la valeur de l’attribut de l’élément « arrivalTime » du second + point d’arrêt du premier couple « vehicleJourneyAtStop » doit être + proche de la différence absolue entre la valeur de l’attribut de l’élément + « departureTime » du premier point d’arrêt et la valeur de + l’attribut de l’élément « arrivalTime » du second point d’arrêt du + deuxième couple « vehicleJourneyAtStop », le test est validé, sinon + le test est invalidé et fournit le message d’avertissement : « test + 3.16.1 : pour deux courses qui utilisent le même couple de points A + -> B, les temps de parcours entre le point A et le point B ne sont pas + cohérents ».

      +

       

      +
      +

       

      +
      +

       

      +
      +

      N° test

      +
      +

      Test 3.16.2

      +
      +

      Libellé

      +
      +

      Vérification que la VERSION DES + HORAIREs/Chouette (« Timetable ») contient des COURSEs + (« VehicleJourney »)

      +
      +

      Champ d’application

      +
      +

       

      +

      <vehicleJourney>

      +

      <Timetable>

      +

       

      +
      +

      Vérification

      +
      +

       

      +

      - Si l’élément « vehicleJourney », mentionné + dans les champs d’application, est présent une ou plusieurs fois , poursuivre + le test, sinon le test est abandonné.

      +

       

      +

      - Si l’identifiant de l’objet « vehicleJourney » détecté est + présent dans l’objet « TimeTable », le test est validé, sinon le + test est invalidé et fournit un message d’avertissement « test + 3.16.2 : La course « vehicleJourney » dont + l’identifiant est « ObjecId » n’est pas référencée dans l’objet + « TimeTable » ».

      +

       

      +
      +

      N° test

      +
      +

      Test 3.16.3

      +
      +

      Libellé

      +
      +

      Vérification de cohérence des + HEUREs DE PASSAGE GRAPHIQUEEs/Chouette (« VehicleJourneyAtStop ») + entre 2 POINTs D’ARRÊT SUR PARCOURS (« StopPoint ») consécutifs dans + une COURSE (« VehicleJourney »)

      +
      +

      Champ d’application

      +
      +

       

      +

      <VehicleJourney>

      +

      <VehicleJourneyAtStop>

      +

       

      +
      +

      Vérification

      +
      +

       

      +

      - Si le fichier contient un élément + « vehicleJourney » incluant au moins deux éléments + « vehicleJourneyAtStop » consécutifs, poursuivre le test, sinon le + test est abandonné.

      +

       

      +

      - Si entre deux éléments + « vehicleJourneyAtStop » successifs, la différence absolue entre la + valeur de l’attribut de l’élément « departureTime » du premier + point d’arrêt et la valeur de l’attribut de l’élément « arrivalTime » + du second point d’arrêt est inférieur à une valeur paramétrable ZZ, + poursuivre le test, sinon le test est invalidé et fournit le message : + « test 3.16.3a : entre deux éléments + « vehicleJourneyAtStop » successifs, la différence absolue entre la + valeur de l’attribut de l’élément « departureTime » du premier + point d’arrêt et la valeur de l’attribut de l’élément + « arrivalTime » du second point d’arrêt est supérieure à une valeur + paramétrable ZZ »

      +

       

      +

      - Si entre deux éléments + « vehicleJourneyAtStop » successifs, la valeur de l’attribut de + l’élément « departureTime » du premier point d’arrêt est inférieure + (ou égale, dans le cas de points rapprochés) à la valeur de l’attribut de + l’élément <arrivalTime> du second point d’arrêt alors le test est + validé, sinon poursuivre le test.

      +

       

      +

      - Si entre deux éléments + « vehicleJourneyAtStop » successifs, la valeur de l’attribut de + l’élément « departureTime » du premier point d’arrêt est supérieure + à la valeur de l’attribut de l’élément « arrivalTime » du second point + d’arrêt et que la valeur de l’attribut de l’élément + « arrivalTime » du second point d’arrêt est inférieure à une valeur + paramétrable WW alors le test est validé, sinon le test est invalidé et + fournit le message : « test 3.16.3b : entre deux éléments + « vehicleJourneyAtStop » successifs, la valeur de l’attribut de + l’élément « departureTime » du premier point d’arrêt est inférieure + à la valeur de l’attribut de l’élément « arrivalTime » du second + point d’arrêt ou la valeur de l’attribut de l’élément + « arrivalTime » du second point d’arrêt est supérieure à une valeur + paramétrable WW »

      +

       

      +
      + + +
      diff --git a/app/views/test_sheet/3.17.html b/app/views/test_sheet/3.17.html new file mode 100644 index 000000000..530526ca2 --- /dev/null +++ b/app/views/test_sheet/3.17.html @@ -0,0 +1,242 @@ +
      + + +

      Fiche +du point de contrôle N° 3.17

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Modèle de représentation + des coordonnées des points d’accès

      +
      +

      Objectif

      +
      +

      Vérifier que les coordonnées des + POINTs D’ACCES (« AccessPoint ») sont dans un même système + géodésique ou un même système de projection

      +
      +

      Références

      +
      +

      TRIDENT/profil NEPTUNE/Transmodel + V4 et V5.1

      +
      +

      N° de fiche(s) connexe(s)

      +
      +

       

      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire

      +
      +

      Résultat

      +
      +

      Conforme ou non conforme

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Dans un même jeu + de données, chaque POINT D’ACCES (« AccessPoint ») doit être + représenté géographiquement de la même manière et dans un système de + représentation géographique identique. On vérifiera également qu’il n’y a pas + d’aberration comme des coordonnées géographiques nulles ou situées hors d’une + zone dont le périmètre ou le contour est à définir.

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      +

       

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      Test + 3.17.1

      +
      +

      Libellé

      +
      +

      Test + des coordonnées géographiques de chaque POINT D’ACCES + (« AccessPoint ») par rapport à un modèle de projection de + référence.

      +
      +

      Champ d’application

      +
      +

      <AccessPoint>

      +
      +

      Vérification

      +
      +

       

      +

      Soit + PJ la projection de référence.

      +

       

      +

      - + Si l’objet « AccessPoint » est présent une ou plusieurs fois, + poursuivre le test, sinon le test est abandonné.

      +

       

      +

      - + Si la valeur de l’attribut de l’élément « longLatType » contenu + dans l’élément « AccessPoint » est différente de PJ alors le test + fournit le message d'avertissement : « test 3.17.1 : le point + d’accès d’identifiant « ObjectId » n’est pas dans le bon système de + projection ou ses coordonnées géographiques sont nulles ou il est situé + hors d’une zone dont le périmètre ou le contour est à définir.»

      +

       

      +

      - + Sinon le test est validé.

      +
      + +

       

      + +
      + diff --git a/app/views/test_sheet/3.18.html b/app/views/test_sheet/3.18.html new file mode 100644 index 000000000..d9c26f0cb --- /dev/null +++ b/app/views/test_sheet/3.18.html @@ -0,0 +1,257 @@ +
      + + +

      Fiche +du point de contrôle N° 3.18

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Localisation + des points d’accès à l’intérieur d’un périmètre défini.

      +
      +

      Objectif

      +
      +

      S’assurer que les coordonnées des POINTs + D’ACCES (« AccessPoint ») du jeu de données sont situées à + l’intérieur d’un périmètre défini.

      +
      +

      Références

      +
      +

      TRIDENT/profil NEPTUNE/Transmodel V4 et V5.1

      +
      +

      N°de fiche(s) connexe(s)

      +
      +

       

      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire

      +
      +

      Résultat

      +
      +

      Délivrance d’un avertissement de mise en garde sur des + conséquences éventuelles de dysfonctionnement

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Si le jeu de données appartient à un + exploitant dont le réseau dessert un groupe de communes, les coordonnées des POINTs D’ACCES + (« AccessPoint ») doivent se situer dans cette zone.

      +

      Ce point de contrôle consiste donc à + vérifier que les coordonnées en latitude et longitude de chaque POINT D’ACCES + (« AccessPoint ») sont incluses dans un territoire délimité.

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      +

       

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      Test + 3.18.1

      +
      +

      Libellé

      +
      +

      Vérification + que les coordonnées de chaque POINT D’ACCES (« AccessPoint ») sont inscrites dans + une zone déterminée et qu’elles sont dans le bon système de projection.

      +
      +

      Champ d’application

      +
      +

      <AccessPoint>

      +
      +

      Vérification

      +
      +

       

      +

      Soit + PG le polygone de la zone couverte par le réseau dans une projection PJ.

      +

       

      +

      - Si l’objet « AccessPoint » + mentionné dans les champs d’application est présent une ou plusieurs fois, + poursuivre le test, sinon le test est abandonné.

      +

       

      +

      - Si la valeur de l’attribut de l’élément + « longLatType » contenu dans l’objet « AccessPoint » est + différente de PJ alors le test fournit le message d'avertissement « test + 3.18.1a : le point d’accès d’identifiant « ObjectId » n’est + pas dans le bon système de projection », sinon poursuivre le test.

      +

       

      +

      - Si la projection du point, calculée à + partir des valeurs des attributs des éléments « longitude », + « latitude » contenus dans l’objet « AccessPoint », est + contenue dans le polygone PG le test est validé, sinon le test est invalidé + et fournit le message : « test 3.18.1b : le point d’accès + d’identifiant « ObjectId » a des coordonnées qui sont hors du + polygone de la zone couverte ».

      +

       

      +
      + + +
      + diff --git a/app/views/test_sheet/3.19.html b/app/views/test_sheet/3.19.html new file mode 100644 index 000000000..ed032f4f5 --- /dev/null +++ b/app/views/test_sheet/3.19.html @@ -0,0 +1,242 @@ +
      + + +

      Fiche +du point de contrôle N° 3.19

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Modèle de représentation des + coordonnées des équipements

      +
      +

      Objectif

      +
      +

      Vérifier que les coordonnées des + EQUIPEMENTs (« Facility») sont dans un même système géodésique ou un + même système de projection

      +
      +

      Références

      +
      +

      TRIDENT/profil NEPTUNE/Transmodel + V4 et V5.1

      +
      +

      N° de fiche(s) connexe(s)

      +
      +

       

      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire

      +
      +

      Résultat

      +
      +

      Conforme ou non conforme

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Dans un même jeu + de données, chaque EQUIPEMENT (« Facility ») doit être représenté + géographiquement de la même manière et dans un système de représentation + géographique identique. On vérifiera également qu’il n’y a pas d’aberration + comme des coordonnées géographiques nulles ou situées hors d’une zone dont le + périmètre ou le contour est à définir.

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      +

       

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      Test + 3.19.1

      +
      +

      Libellé

      +
      +

      Test + des coordonnées géographiques de chaque EQUIPEMENT (« Facility ») + par rapport à un modèle de projection de référence.

      +
      +

      Champ d’application

      +
      +

      <Facility>

      +
      +

      Vérification

      +
      +

       

      +

      Soit + PJ la projection de référence.

      +

       

      +

      - + Si l’objet « Facility » mentionné dans les champs d’application est + présent une ou plusieurs fois, poursuivre le test, sinon le test est + abandonné.

      +

       

      +

      - + Si la valeur de l’attribut de l’élément « longLatType » contenu + dans l’élément « Facility » est différente de PJ alors le test + fournit le message d'avertissement : « test 3.19.1 : + l’equipement « ObjectId » n’est pas dans le bon système de + projection ou ses coordonnées géographiques sont nulle ou il est situé + hors d’une zone dont le périmètre ou le contour est à définir.»

      +

       

      +

      - + Sinon le test est validé.

      +
      + +

       

      + +
      + diff --git a/app/views/test_sheet/3.2.html b/app/views/test_sheet/3.2.html new file mode 100644 index 000000000..c0866df30 --- /dev/null +++ b/app/views/test_sheet/3.2.html @@ -0,0 +1,254 @@ +
      + + +

      Fiche +du point de contrôle N° 3.2

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Points d’arrêt très + proches regroupés au sein d’une zone d’arrêt

      +
      +

      Objectif

      +
      +

      Vérifier que des POINTs D’ARRÊT SUR + PARCOURS (« StopPoint ») très proches, portant + le même nom ou un nom différent, sont regroupés au sein + d’un même ARRÊT/Choutte.

      +
      +

      Références

      +
      +

      TRIDENT/profil CHOUETTE/Transmodel + V4 et V5.1

      +
      +

      N° de fiche(s) connexe(s)

      +
      +

       

      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire

      +
      +

      Résultat

      +
      +

      Délivrance d’un avertissement de + mise en garde sur des conséquences éventuelles de dysfonctionnement

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Chaque + POINT D’ARRÊT SUR PARCOURS (« StopPoint ») est localisé grâce à ses + coordonnées en latitude et en longitude. D’autre part, chaque POINT D’ARRÊT + SUR PARCOURS est relié à l’identifiant de l’ARRÊT1/Chouette (« StopArea ») + dont il dépend (« ContainedIn »). Il suffit alors de vérifier que + tous les POINTs D’ARRÊT SUR PARCOURS (« StopPoint ») appartiennent + à un même ARRÊT1/Chouette (« StopArea ») et qu’il n’y a pas de + POINTs D’ARRÊT SUR PARCOURS isolés très proches d’autres POINTs D’ARRÊT SUR + PARCOURS (cette distance reste à déterminer et est paramétrable).

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      +

       

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      Test + 3.2.1

      +
      +

      Libellé

      +
      +

      Vérifier + que 2 POINTs D’ARRÊT SUR PARCOURS (« StopPoint ») très proches + appartiennent à un même ARRÊT1/Chouette (« StopArea »)

      +
      +

      Champ d’application

      +
      +

      <StopPoint>

      +
      +

      Vérification

      +
      +

       

      +

      - Si l’élément « StopPoint » + mentionné dans les champs d’application est présent une ou plusieurs fois, + poursuivre le test, sinon le test est abandonné.

      +

       

      +

      - Si pour chaque élément « StopPoint », + la distance spatiale calculée à partir de la valeur de l’attribut des + éléments « longitude », « latitude » et + « longLatType » entre lui et tous les autres éléments + « stopPoint » est inférieure à une valeur paramétrable XX alors + vérifier que la valeur de l’attribut de l’élément « containedIn » + de ces deux points d’arrêt « StopPoint » est identique. Si elle est + différente alors adresser le message d'avertissement : « test + 3.2.1 : la distance calculée entre un point d’arrêt et les autres points + d’arrêt est inférieure à une valeur paramétrable XX mais la valeur de + l’attribut de l’élément « containedIn » de ces deux points d’arrêt + « StopPoint » n’est pas identique ».

      +

       

      +

      - Sinon le test est validé

      +

       

      +
      + +

       

      + +
      + diff --git a/app/views/test_sheet/3.20.html b/app/views/test_sheet/3.20.html new file mode 100644 index 000000000..caf922356 --- /dev/null +++ b/app/views/test_sheet/3.20.html @@ -0,0 +1,257 @@ +
      + + +

      Fiche +du point de contrôle N° 3.20

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Localisation + des équipements à l’intérieur d’un périmètre défini.

      +
      +

      Objectif

      +
      +

      S’assurer que les coordonnées des + EQUIPEMENTs (« Facility ») du jeu de données sont situées à + l’intérieur d’un périmètre défini.

      +
      +

      Références

      +
      +

      TRIDENT/profil NEPTUNE/Transmodel V4 et V5.1

      +
      +

      N°de fiche(s) connexe(s)

      +
      +

       

      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire

      +
      +

      Résultat

      +
      +

      Délivrance d’un avertissement de mise en garde sur des + conséquences éventuelles de dysfonctionnement

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Si le jeu de données appartient à un + exploitant dont le réseau dessert un groupe de communes, les coordonnées des EQUIPEMENTs + (« Facility ») doivent se situer dans cette zone.

      +

      Ce point de contrôle consiste donc à + vérifier que les coordonnées en latitude et longitude de chaque EQUIPEMENT + (« Facility ») sont incluses dans un territoire délimité.

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      +

       

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      Test + 3.20.1

      +
      +

      Libellé

      +
      +

      Vérification + que les coordonnées de chaque EQUIPEMENT (« Facility») sont inscrites dans + une zone déterminée et qu’elles sont dans le bon système de projection.

      +
      +

      Champ d’application

      +
      +

      <Facility>

      +
      +

      Vérification

      +
      +

       

      +

      Soit + PG le polygone de la zone couverte par le réseau dans une projection PJ.

      +

       

      +

      - Si l’objet « Facility » + mentionné dans les champs d’application est présent une ou plusieurs fois, + poursuivre le test, sinon le test est abandonné.

      +

       

      +

      - Si la valeur de l’attribut de l’élément + « longLatType » contenu dans l’objet « Facility » est + différente de PJ alors le test fournit le message d'avertissement « test + 3.20.1a : l’equipement d’identifiant « ObjectId » n’est pas + dans le bon système de projection », sinon poursuivre le test.

      +

       

      +

      - Si la projection du point, calculée à + partir des valeurs des attributs des éléments « longitude », + « latitude » contenus dans l’objet « Facility », est + contenue dans le polygone PG le test est validé, sinon le test est invalidé + et fournit le message : « test 3.20.1b : l’equipement + d’identifiant « ObjectId » a des coordonnées qui sont hors du + polygone de la zone couverte ».

      +

       

      +
      + + +
      diff --git a/app/views/test_sheet/3.21.html b/app/views/test_sheet/3.21.html new file mode 100644 index 000000000..104181277 --- /dev/null +++ b/app/views/test_sheet/3.21.html @@ -0,0 +1,282 @@ +
      + + +

      Fiche +du point de contrôle N° 3.21

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Cohérence + entre le temps et la distance pour chaque lien accès-zone d’arrêt

      +
      +

      Objectif

      +
      +

      Vérifier que qu’il y a une cohérence entre + le temps et la distance pour chaque LiensAccèsZoneArrêt/NEPTUNE + (« AccessLink »)

      +
      +

      Références

      +
      +

      TRIDENT/profil NEPTUNE

      +
      +

      N°de fiche(s) connexe(s)

      +
      +

       

      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire

      +
      +

      Résultat

      +
      +

      Délivrance d’un message de mise en garde

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Pour chaque LiensAccèsZoneArrêt /NEPTUNE + (« AccessLink »), le temps de parcours entre 1 ARRÊT/Chouette + (« StopArea ») et 1 Accès/NEPTUNE (« AccessPoint ») ne + doit pas être aberrant. On peut alors fixer une vitesse théorique moyenne (en + fonction du temps de déplacement en marche à pied, des obstacles rencontrés, + de la perte de temps liée à la descente du véhicule …).

      +

      Ainsi + la longueur du LiensAccèsZoneArrêt + /NEPTUNE (« AccessLink ») qui est la différence entre les éléments + « EndOfLink » et « StartOfLink » et la durée représentée + par les éléments « DefaultDuration », + « FrequentTravellerDuration » ou « OccasionalTravellerDuration », + éventuellement « MobilityRestrictedTravellerDuration », permet de + calculer une vitesse qui doit s’approcher de la vitesse théorique (fourchette + à définir).

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      +

       

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      Test + 3.21.1

      +
      +

      Libellé

      +
      +

      Vérifier + les vitesses calculées à partir des attributs du LiensAccèsZoneArrêt + /NEPTUNE (« AccessLink ») suivant les paramètres fixés

      +
      +

      Champ d’application

      +
      +

      <AccessLink>

      +
      +

      Vérification

      +
      +

       

      +

      - + Si l’élément « AccessLink » mentionné dans les champs d’application + est présent une ou plusieurs fois, poursuivre le test, sinon le test est + abandonné.

      +

       

      +

      - + Si la vitesse déduite de la distance spatiale entre « EndOfLink » + et « StartOfLink » divisée par le temps + « DefaultDuration » est proche de la valeur paramétrable XX (+/- + delta), poursuivre le test, sinon le test est invalidé et fournit le + message : « test 3.21.1a : la vitesse fixée par l’élément + « DefaultDuration » n’est pas conforme à la valeur paramétrable XX + (+/- delta) fixée pour le lien d’accès dont l’identifiant est « ObjectId ».

      +

       

      +

      - + Si la vitesse déduite de la distance spatiale entre « EndOfLink » + et « StartOfLink » divisée par le temps + « FrequentTravellerDuration » est proche de la valeur paramétrable + YY (+/- delta), poursuivre le test, sinon le test est invalidé et fournit le + message : « test 3.21.1b : la vitesse fixée par l’élément + « FrequentTravellerDuration » n’est pas conforme à la valeur + paramétrable YY (+/- delta) fixée pour le lien d’accès dont l’identifiant est + « ObjectId ».

      +

       

      +

      - + Si la vitesse déduite de la distance spatiale entre « EndOfLink » et + « StartOfLink » divisée par le temps + « OccasionalTravellerDuration » est proche de la valeur + paramétrable ZZ (+/- delta), poursuivre le test, sinon le test est invalidé + et fournit le message : « test 3.21.1c : la vitesse fixée par + l’élément « OccasionalTravellerDuration » n’est pas conforme à la + valeur paramétrable ZZ (+/- delta) fixée pour e lien d’accès dont + l’identifiant est « ObjectId ».».

      +

       

      +

      - + Si l’élément « MobilityRestrictedTravellerDuration »  est + défini dans l’élément « VehicleJourneyAtStop » identifié, + poursuivre le test, sinon le test est validé.

      +

       

      +

      - + Si la vitesse déduite de la distance spatiale entre « EndOfLink » + et « StartOfLink » divisée par le temps + « MobilityRestrictedTravellerDuration » est proche de la valeur + paramétrable WW (+/- delta), le test est validé, sinon le test est invalidé + et fournit le message : « test 3.8.1d : la vitesse fixée par + l’élément « MobilityRestrictedTravellerDuration » n’est pas + conforme à la valeur paramétrable WW (+/- delta) fixée pour le lien d’accès + dont l’identifiant est « ObjectId ».».

      +

       

      +
      + +

       

      + +
      + diff --git a/app/views/test_sheet/3.3.html b/app/views/test_sheet/3.3.html new file mode 100644 index 000000000..d54516b4d --- /dev/null +++ b/app/views/test_sheet/3.3.html @@ -0,0 +1,246 @@ +
      + + +

      Fiche +de contrôle N° 3.3

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Unicité des noms de + points d’arrêt

      +
      +

      Objectif

      +
      +

      Vérifier que chaque POINT D’ARRÊT + SUR PARCOURS (« StopPoint ») possède des propriétés uniques au sein + d’un même jeu de données

      +
      +

      Références

      +
      +

      TRIDENT/profil CHOUETTE/Transmodel + V4 et V5.1

      +
      +

      N° de fiche(s) connexe(s)

      +
      +

       

      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire

      +
      +

      Résultat

      +
      +

      Délivrance d’un avertissement de + mise en garde sur des conséquences éventuelles de dysfonctionnement

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Dans un même jeu de données et à fortiori sur un même + LIGNE/Chouette (« Line »), deux ou plusieurs POINTs D’ARRÊT SUR + PARCOURS (« StopPoint ») peuvent avoir la même dénomination. Si un + simple nom ne suffit pas (mairie, église …) à les départager, alors il faut + ajouter à ce nom une adresse et éventuellement le nom de la commune.

      +

      Ce point de contrôle consiste donc à + recenser les POINTs D’ARRÊT SUR PARCOURS qui possèdent les mêmes + caractéristiques.

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      +

       

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      Test + 3.3.1

      +
      +

      Libellé

      +
      +

      Différentiation + de nom pour les POINTs D’ARRÊT SUR PARCOURS (« StopPoint »)

      +
      +

      Champ d’application

      +
      +

      <StopPoint>

      +
      +

      Vérification

      +
      +

       

      +

      - + Si l’élément « StopPoint » mentionné dans les champs d’application + est présent une ou plusieurs fois, poursuivre le test, sinon le test est + abandonné.

      +

       

      +

      - + S’il existe deux points d’arrêt « StopPoint » dont la valeur de + l’attribut de l’élément « names » est identique et que les valeurs + de l’attribut de l’élément <containedIn> sont différentes ou vides, + alors la valeur de l’élément « adresse » doit être différenciée + pour les deux objets « StopPoint ». Si c’est le cas, le test est + validé sinon le test fournit message d'avertissement : « test 3.3.1 : + deux points d’arrêt « StopPoint » de même nom ne sont pas + suffisamment renseignés pour avoir des propriétés uniques ».

      +

       

      +
      + +

       

      + +
      + diff --git a/app/views/test_sheet/3.4.html b/app/views/test_sheet/3.4.html new file mode 100644 index 000000000..735f814a6 --- /dev/null +++ b/app/views/test_sheet/3.4.html @@ -0,0 +1,239 @@ +
      + + +

      Fiche +du point de contrôle N° 3.4

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Unicité des noms de ligne

      +
      +

      Objectif

      +
      +

      Vérifier que chaque LINE/Chouette + (« Line ») possède des propriétés uniques dans + un jeu de données.

      +
      +

      Références

      +
      +

      TRIDENT/profil CHOUETTE/Transmodel + V4 et V5.1

      +
      +

      N° de fiche(s) connexe(s)

      +
      +

       

      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire

      +
      +

      Résultat

      +
      +

      délivrance d’un avertissement de + mise en garde sur des conséquences éventuelles de dysfonctionnement

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Dans + un même jeu de données, chaque LINE/Chouette (« Line ») doit + posséder une appellation unique.

      +

      Ce + point de contrôle consiste donc à recenser les LINEs/Chouette qui possèdent + les mêmes propriétés.

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      +

       

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      Test + 3.4.1

      +
      +

      Libellé

      +
      +

      Vérifier + que chaque LINE/Chouette (« Line ») possède des valeurs d’attributs + uniques

      +
      +

      Champ d’application

      +
      +

      <Line>

      +
      +

      Vérification

      +
      +

       

      +

      - + Si l’élément « Line », mentionné dans les champs d’application, est + présent une ou plusieurs fois, poursuivre le test, sinon le test est + abandonné.

      +

       

      +

      - + Si la référence constituée par la concaténation de la valeur des attributs + des éléments « name » et « number » est unique pour + toutes les lignes « Line », le test est validé, sinon le test est + invalidé et fournit le message : « test 3.4.1 : les éléments + « name » et « number » d’une ligne ne constituent pas un + identifiant unique pour la ligne « Line » référencée par l’élément + « ObjectId »»

      +

       

      +
      + +

       

      + +
      diff --git a/app/views/test_sheet/3.5.html b/app/views/test_sheet/3.5.html new file mode 100644 index 000000000..968d199a7 --- /dev/null +++ b/app/views/test_sheet/3.5.html @@ -0,0 +1,239 @@ +
      + + +

      Fiche +du point de contrôle N° 3.5

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Modèle de représentation + des coordonnées des points d’arrêt

      +
      +

      Objectif

      +
      +

      Vérifier que les coordonnées des + POINTs D’ARRÊT SUR PARCOURS (« StopPoint ») sont dans un même système + géodésique ou un même système de projection

      +
      +

      Références

      +
      +

      TRIDENT/profil CHOUETTE/Transmodel + V4 et V5.1

      +
      +

      N° de fiche(s) connexe(s)

      +
      +

       

      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire

      +
      +

      Résultat

      +
      +

      Conforme ou non conforme

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Dans un même jeu + de données, chaque POINT D’ARRÊT SUR PARCOURS (« StopPoint ») doit + être représenté géographiquement de la même manière et dans un système de + représentation géographique identique. On vérifiera également qu’il n’y a pas + d’aberration comme des coordonnées géographiques nulle ou situées hors d’une + zone dont le périmètre ou le contour est à définir.

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      +

       

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      Test + 3.5.1

      +
      +

      Libellé

      +
      +

      Test + des coordonnées géographiques de chaque POINT D’ARRÊT SUR PARCOURS + (« StopPoint ») par rapport à un modèle de projection de référence.

      +
      +

      Champ d’application

      +
      +

      <StopPoint>

      +
      +

      Vérification

      +
      +

       

      +

      Soit + PJ la projection de référence.

      +

       

      +

      - + Si l’objet « StopPoint » mentionné dans les champs d’application + est présent une ou plusieurs fois, poursuivre le test, sinon le test est + abandonné.

      +

       

      +

      - + Si la valeur de l’attribut de l’élément « longLatType » contenu + dans l’élément « StopPoint » est différente de PJ alors le test + fournit le message d'avertissement : « test 3.5.1 : le point + d’arrêt d’identifiant « ObjectId » n’est pas dans le bon système de + projection ou ses coordonnées géographiques sont nulle ou il est situé + hors d’une zone dont le périmètre ou le contour est à définir.»

      +

       

      +

      - + Sinon le test est validé.

      +
      + +
      \ No newline at end of file diff --git a/app/views/test_sheet/3.6.html b/app/views/test_sheet/3.6.html new file mode 100644 index 000000000..2ad4af075 --- /dev/null +++ b/app/views/test_sheet/3.6.html @@ -0,0 +1,260 @@ +
      + + +

      Fiche +du point de contrôle N° 3.6

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Localisation + des points d’arrêt à l’intérieur d’un périmètre défini.

      +
      +

      Objectif

      +
      +

      S’assurer que les coordonnées des POINTs + D’ARRÊT SUR PARCOURS (« StopPoint ») du jeu de données sont situées + à l’intérieur d’un périmètre défini.

      +
      +

      Références

      +
      +

      TRIDENT/profil CHOUETTE/Transmodel V4 et V5.1

      +
      +

      N°de fiche(s) connexe(s)

      +
      +

       

      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire

      +
      +

      Résultat

      +
      +

      Délivrance d’un avertissement de mise en garde sur des + conséquences éventuelles de dysfonctionnement

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Si le jeu de données appartient à un + exploitant dont le réseau dessert un groupe de communes, les coordonnées des POINTs D’ARRÊT SUR + PARCOURS (« StopPoint ») doivent se situer dans cette zone.

      +

      Ce point de contrôle consiste donc à + vérifier que les coordonnées en latitude et longitude de chaque POINT D’ARRÊT SUR + PARCOURS (« StopPoint ») sont incluses dans un territoire délimité.

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      +

       

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      Test + 3.6.1

      +
      +

      Libellé

      +
      +

      Vérification + que les coordonnées de chaque POINT D’ARRÊT SUR PARCOURS + (« StopPoint ») sont inscrites dans une zone déterminée et qu’elles + sont dans le bon système de projection.

      +
      +

      Champ d’application

      +
      +

      <StopPoint>

      +
      +

      Vérification

      +
      +

       

      +

      Soit + PG le polygone de la zone couverte par le réseau dans une projection PJ.

      +

       

      +

      - Si l’objet « StopPoint » + mentionné dans les champs d’application est présent une ou plusieurs fois, + poursuivre le test, sinon le test est abandonné.

      +

       

      +

      - Si la valeur de l’attribut de l’élément + « longLatType » contenu dans l’objet « StopPoint » est + différente de PJ alors le test fournit le message d'avertissement « test + 3.6.1a : le point d’arrêt d’identifiant « ObjectId » n’est pas + dans le bon système de projection », sinon poursuivre le test.

      +

       

      +

      - Si la projection du point, calculée à + partir des valeurs des attributs des éléments « longitude », + « latitude » contenus dans l’objet « StopPoint », est contenue + dans le polygone PG le test est validé, sinon le test est invalidé et fournit + le message : « test 3.6.1b : le point d’arrêt d’identifiant + « ObjectId » a des coordonnées qui sont hors du polygone de la zone + couverte ».

      +

       

      +
      + +

       

      + +
      + diff --git a/app/views/test_sheet/3.7.html b/app/views/test_sheet/3.7.html new file mode 100644 index 000000000..5193c9ae9 --- /dev/null +++ b/app/views/test_sheet/3.7.html @@ -0,0 +1,256 @@ +
      + + +

      Fiche +du point de contrôle N° 3.7

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Caractérisation + des distances entre les points d’arrêt

      +
      +

      Objectif

      +
      +

      Vérifier que la distance entre les POINTs + D’ARRÊT SUR PARCOURS (« StopPoint ») se situe dans + une fourchette paramétrable (distance minimale et maximale à fixer)

      +
      +

      Références

      +
      +

      TRIDENT/profil CHOUETTE/Transmodel V4 et V5.1

      +
      +

      N°de fiche(s) connexe(s)

      +
      +

       

      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire

      +
      +

      Résultat

      +
      +

      Délivrance d’un avertissement de mise en garde sur des + conséquences éventuelles de dysfonctionnement

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Afin de contrôler les distances aberrantes + entre les POINTs D’ARRÊT SUR PARCOURS (« StopPoint »), un contrôle + sera effectué sur la distance entre les 2 POINTs D’ARRÊT SUR PARCOURS de + chaque TRONCON COMMERCIAL/Chouette (« PtLink ») : ce contrôle + devra répondre à des critères de distance maximale et de distance minimale + (ces distances seront paramétrables).

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      +

       

      +

      +

       

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      Test + 3.7.1

      +
      +

      Libellé

      +
      +

      Vérification + de la distance entre 2 POINTs D’ARRÊT SUR PARCOURS (« StopPoint ») + consécutifs

      +
      +

      Champ d’application

      +
      +

      <vehicleJourney> +

      +

      <VehicleJourneyAtStop>

      +
      +

      Vérification

      +
      +

       

      +

      - Si le fichier contient une classe + d’objets « vehicleJourney » incluant au moins deux éléments + « vehicleJourneyAtStop » consécutifs, poursuivre le test, sinon le + test est abandonné.

      +

       

      +

      - Si entre deux éléments + « vehicleJourneyAtStop » successifs, la distance spatiale entre le + point d’arrêt « StopPoint » identifié par la valeur de l’attribut + de l’élément « stopPointId » et le point d’arrêt « StopPoint» + identifié par la valeur de l’attribut de l’élément « stopPointId » + est inférieure à XX ou supérieure à YY, alors le test fournit le message + d’avertissement : « test 3.7.1 : la distance spatiale entre + deux points d’arrêt consécutifs ne se situe pas dans une fourchette + autorisée (entre XX pour sa valeur minimale et YY pour sa valeur + supérieure».

      +

       

      +

      - Sinon le test est validé

      +
      + +

       

      + +
      + diff --git a/app/views/test_sheet/3.8.html b/app/views/test_sheet/3.8.html new file mode 100644 index 000000000..08e6f6d19 --- /dev/null +++ b/app/views/test_sheet/3.8.html @@ -0,0 +1,283 @@ +
      + + +

      Fiche +du point de contrôle N° 3.8

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Cohérence + entre le temps et la distance pour chaque correspondance

      +
      +

      Objectif

      +
      +

      Vérifier que qu’il y a une cohérence entre + le temps et la distance pour chaque TronçonDeCorrespondance/Chouette + (« ConnectionLink »)

      +
      +

      Références

      +
      +

      TRIDENT/profil CHOUETTE

      +
      +

      N°de fiche(s) connexe(s)

      +
      +

       

      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire

      +
      +

      Résultat

      +
      +

      Délivrance d’un message de mise en garde

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Pour chaque TronçonDeCorrespondance/Chouette + (« ConnectionLink »), le temps de parcours entre 2 + ARRÊT1/Chouette (« StopArea ») ne doit pas être aberrant. On peut + alors fixer une vitesse théorique moyenne (en fonction du temps de + déplacement en marche à pied, des obstacles rencontrés, de la perte de temps + liée à la descente du véhicule …).

      +

      Ainsi + la longueur du TronçonDeCorrespondance/Chouette + (« ConnectionLink ») qui est la différence entre les éléments + « EndOfLink » et « StartOfLink » et la durée représentée + par les éléments « DefaultDuration », + « FrequentTravellerDuration » ou + « OccasionalTravellerDuration », éventuellement + « MobilityRestrictedTravellerDuration », permet de calculer une + vitesse qui doit s’approcher de la vitesse théorique (fourchette à définir).

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      +

       

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      Test + 3.8.1

      +
      +

      Libellé

      +
      +

      Vérifier + les vitesses calculées à partir des attributs du TronçonDeCorrespondance/Chouette + (« ConnectionLink ») suivant les paramètres fixés

      +
      +

      Champ d’application

      +
      +

      <ConnectionLink>

      +
      +

      Vérification

      +
      +

       

      +

      - + Si l’élément « ConnectionLink » mentionné dans les champs + d’application est présent une ou plusieurs fois, poursuivre le test, sinon le + test est abandonné.

      +

       

      +

      - + Si la vitesse déduite de la distance spatiale entre « EndOfLink » + et « StartOfLink » divisée par le temps + « DefaultDuration » est proche de la valeur paramétrable XX (+/- + delta), poursuivre le test, sinon le test est invalidé et fournit le + message : « test 3.8.1a : la vitesse fixée par l’élément + « DefaultDuration » n’est pas conforme à la valeur paramétrable XX + (+/- delta) fixée pour la correspondance dont l’identifiant est + « ObjectId ».

      +

       

      +

      - + Si la vitesse déduite de la distance spatiale entre « EndOfLink » + et « StartOfLink » divisée par le temps + « FrequentTravellerDuration » est proche de la valeur paramétrable + YY (+/- delta), poursuivre le test, sinon le test est invalidé et fournit le + message : « test 3.8.1b : la vitesse fixée par l’élément + « FrequentTravellerDuration » n’est pas conforme à la valeur + paramétrable YY (+/- delta) fixée pour la correspondance dont l’identifiant + est « ObjectId ».

      +

       

      +

      - + Si la vitesse déduite de la distance spatiale entre « EndOfLink » + et « StartOfLink » divisée par le temps + « OccasionalTravellerDuration » est proche de la valeur + paramétrable ZZ (+/- delta), poursuivre le test, sinon le test est invalidé + et fournit le message : « test 3.8.1c : la vitesse fixée par + l’élément « OccasionalTravellerDuration » n’est pas conforme à la + valeur paramétrable ZZ (+/- delta) fixée pour la correspondance dont + l’identifiant est « ObjectId ».».

      +

       

      +

      - + Si l’élément « MobilityRestrictedTravellerDuration »  est + défini dans l’élément « VehicleJourneyAtStop » identifié, + poursuivre le test, sinon le test est validé.

      +

       

      +

      - + Si la vitesse déduite de la distance spatiale entre « EndOfLink » + et « StartOfLink » divisée par le temps + « MobilityRestrictedTravellerDuration » est proche de la valeur + paramétrable WW (+/- delta), le test est validé, sinon le test est invalidé + et fournit le message : « test 3.8.1d : la vitesse fixée par + l’élément « MobilityRestrictedTravellerDuration » n’est pas + conforme à la valeur paramétrable WW (+/- delta) fixée pour la correspondance + dont l’identifiant est « ObjectId ».».

      +

       

      +
      + +

       

      + +
      + diff --git a/app/views/test_sheet/3.9.html b/app/views/test_sheet/3.9.html new file mode 100644 index 000000000..249a1d722 --- /dev/null +++ b/app/views/test_sheet/3.9.html @@ -0,0 +1,260 @@ +
      + + +

      Fiche +du point de contrôle N° 3.9

      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Description

      +
      +

      Intitulé

      +
      +

      Cohérence entre le temps + et la distance pour chaque tronçon

      +
      +

      Objectif

      +
      +

      Vérifier que + qu’il y a une cohérence entre le temps et la distance pour chaque TRONCON + COMMERCIAL / Chouette (« PtLink »)

      +
      +

      Références

      +
      +

      TRIDENT/profil CHOUETTE/Transmodel + V4 et V5.1

      +
      +

      N° de fiche(s) connexe(s)

      +
      +

       

      +

       

      +
      +

      Priorité

      +
      +

      Obligatoire

      +
      +

      Résultat

      +
      +

      Délivrance d’un avertissement de + mise en garde sur des conséquences éventuelles de dysfonctionnement

      +
      +

      Mise en œuvre

      +
      +

      Explication

      +
      +

      Pour chaque TRONCON COMMERCIAL / Chouette + (« PtLink »), + on peut calculer la distance entre les 2 POINTs D’ARRÊT SUR PARCOURS + (« StopPoint ») qui le constituent et au sein d’une même COURSE + COMMERCIALE (« VehicleJourney »), on peut récupérer l’HEURE DE + PASSAGE GRAPHIQUEE/Chouette (« VehicleJourneyAtStop ») des POINTs + D’ARRÊT SUR PARCOURS . On peut ainsi vérifier que la vitesse calculée se + situe autour d’une vitesse théorique moyenne (vitesse commerciale ou vitesse + à vol d’oiseau).

      +
      + +

       

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Exemple

      +
      +

       

      +

      +

       

      +

      +

       

      +
      +

      Evaluation

      +
      +

      N° test

      +
      +

      Test + 3.9.1

      +
      +

      Libellé

      +
      +

      Vérifier + que la vitesse entre 2 POINTs D’ARRÊT SUR PARCOURS (« StopPoint ») + consécutifs se situe dans une fourchette autorisée.

      +
      +

      Champ d’application

      +
      +

      <vehicleJourney> +

      +

      <VehicleJourneyAtStop>

      +
      +

      Vérification

      +
      +

       

      +

      - Si le fichier contient un objet + « vehicleJourney » incluant au moins deux objets + « vehicleJourneyAtStop » consécutifs, poursuivre le test, sinon le + test est abandonné.

      +

       

      +

      - Si entre deux objets + « vehicleJourneyAtStop » successifs, la distance spatiale entre le + point d’arrêt « StopPoint » identifié par la valeur de l’attribut + de l’élément « stopPointId » et le point d’arrêt « StopPoint » + identifié par la valeur de l’attribut de l’élément « stopPointId » + divisée par la différence absolue entre la valeur de l’attribut de l’élément + « departureTime » du premier point d’arrêt et la valeur de + l’attribut de l’élément « arrivalTime » du second point d’arrêt est + inférieure à XX ou supérieure à YY alors le test fournit le message + d’avertissement : « test 3.9.1 : la vitesse déterminée par la + distance et le temps entre 2 points d’arrêt consécutifs (entre deux objets + « vehicleJourneyAtStop ») ne se situe pas une fourchette autorisée + entre XX et YY ».

      +

       

      +

      - + Sinon + le test est validé

      +
      + +

       

      + +
      + diff --git a/app/views/test_sheet/show.html.erb b/app/views/test_sheet/show.html.erb new file mode 100644 index 000000000..6c0c4b109 --- /dev/null +++ b/app/views/test_sheet/show.html.erb @@ -0,0 +1,7 @@ +<%= @page.content.html_safe %> + +<% content_for :sidebar do %> +
      +<%= textilize(@toc.content).html_safe %> +
      +<% end %> \ No newline at end of file diff --git a/app/views/test_sheet/toc.html b/app/views/test_sheet/toc.html new file mode 100644 index 000000000..b65a18833 --- /dev/null +++ b/app/views/test_sheet/toc.html @@ -0,0 +1,56 @@ +h3. Définition des tests + +# Catégorie 1 +## Fiche 1.1 +## Fiche 1.2 +# Catégorie 2 +## Fiche 2.1 +## Fiche 2.2 +## Fiche 2.3 +## Fiche 2.4 +## Fiche 2.5 +## Fiche 2.6 +## Fiche 2.7 +## Fiche 2.8 +## Fiche 2.9 +## Fiche 2.10 +## Fiche 2.11 +## Fiche 2.12 +## Fiche 2.13 +## Fiche 2.14 +## Fiche 2.15 +## Fiche 2.16 +## Fiche 2.17 +## Fiche 2.18 +## Fiche 2.19 +## Fiche 2.20 +## Fiche 2.21 +## Fiche 2.22 +## Fiche 2.23 +## Fiche 2.24 +## Fiche 2.25 +## Fiche 2.26 +## Fiche 2.27 +## Fiche 2.28 +# Catégorie 3 +## Fiche 3.1 +## Fiche 3.2 +## Fiche 3.3 +## Fiche 3.4 +## Fiche 3.5 +## Fiche 3.6 +## Fiche 3.7 +## Fiche 3.8 +## Fiche 3.9 +## Fiche 3.10 +## Fiche 3.11 +## Fiche 3.12 +## Fiche 3.13 +## Fiche 3.14 +## Fiche 3.15 +## Fiche 3.16 +## Fiche 3.17 +## Fiche 3.18 +## Fiche 3.19 +## Fiche 3.20 +## Fiche 3.21 diff --git a/config/routes.rb b/config/routes.rb index ee583f1b6..8dcac5fca 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -104,6 +104,7 @@ ChouetteIhm::Application.routes.draw do end match '/help/(*slug)' => 'help#show' + match '/test_sheet/(*slug)' => 'test_sheet#show' # Sample resource route with options: # resources :products do -- cgit v1.2.3 From e3bc4da3812a1fea571eec52fd1b386ae221630d Mon Sep 17 00:00:00 2001 From: Alban Peignier Date: Thu, 5 Jul 2012 16:19:35 +0200 Subject: ... don't RAILS_RELATIVE_URL_ROOT as scope in routes. Refs #4 --- config/routes.rb | 134 +++++++++++++++++++++++++++---------------------------- 1 file changed, 66 insertions(+), 68 deletions(-) diff --git a/config/routes.rb b/config/routes.rb index 0d48495b9..f92870194 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,61 +1,78 @@ ChouetteIhm::Application.routes.draw do - scope ENV['RAILS_RELATIVE_URL_ROOT'] || '/' do - devise_for :users + devise_for :users - resources :file_validations + resources :file_validations - resources :referentials do - resources :stop_point_areas - match 'lines' => 'lines#destroy_all', :via => :delete - resources :lines, :networks do - resources :stop_areas do - resources :stop_area_parents - resources :stop_area_children - resources :stop_area_routing_lines - resources :stop_area_routing_stops + resources :referentials do + resources :stop_point_areas + match 'lines' => 'lines#destroy_all', :via => :delete + resources :lines, :networks do + resources :stop_areas do + resources :stop_area_parents + resources :stop_area_children + resources :stop_area_routing_lines + resources :stop_area_routing_stops + member do + get 'add_children' + get 'select_parent' + get 'add_routing_lines' + get 'add_routing_stops' + end + end + resources :routes do + resources :journey_patterns do member do - get 'add_children' - get 'select_parent' - get 'add_routing_lines' - get 'add_routing_stops' + get 'new_vehicle_journey' end - end - resources :routes do - resources :journey_patterns do - member do - get 'new_vehicle_journey' - end - end - resources :vehicle_journeys do - member do - get 'select_journey_pattern' - end + end + resources :vehicle_journeys do + member do + get 'select_journey_pattern' end - resources :stop_points do - collection do - post :sort - end + end + resources :stop_points do + collection do + post :sort end end end + end - resources :imports - resources :exports do - collection do - get 'references' - end + resources :imports + resources :exports do + collection do + get 'references' end + end - resources :companies - - resources :time_tables do - collection do - get :comment_filter - end - resources :time_table_dates - resources :time_table_periods + resources :companies + + resources :time_tables do + collection do + get :comment_filter end + resources :time_table_dates + resources :time_table_periods + end + resources :stop_areas do + resources :stop_area_parents + resources :stop_area_children + resources :stop_area_routing_lines + resources :stop_area_routing_stops + member do + get 'add_children' + get 'select_parent' + get 'add_routing_lines' + get 'add_routing_stops' + end + end + + resources :connection_links do + resources :connection_link_areas + member do + get 'select_areas' + end resources :stop_areas do resources :stop_area_parents resources :stop_area_children @@ -67,31 +84,12 @@ ChouetteIhm::Application.routes.draw do get 'add_routing_lines' get 'add_routing_stops' end - end - - resources :connection_links do - resources :connection_link_areas - member do - get 'select_areas' - end - resources :stop_areas do - resources :stop_area_parents - resources :stop_area_children - resources :stop_area_routing_lines - resources :stop_area_routing_stops - member do - get 'add_children' - get 'select_parent' - get 'add_routing_lines' - get 'add_routing_stops' - end - end - end + end + end - end + end - match '/help/(*slug)' => 'help#show' + match '/help/(*slug)' => 'help#show' - root :to => 'referentials#index' - end + root :to => 'referentials#index' end -- cgit v1.2.3 From d44b24c660c528f199f9b9e596b6db8225f8208b Mon Sep 17 00:00:00 2001 From: Michel Etienne Date: Thu, 5 Jul 2012 17:26:40 +0200 Subject: workaround for textile special chars --- app/models/help_page.rb | 23 +++++ app/models/test_sheet_page.rb | 22 +++++ .../file_validations/_test_sheet_toc.html.erb | 30 +++--- app/views/help/companies.textile | 48 ++++----- app/views/help/connection_links.textile | 50 +++++----- app/views/help/dataspaces.textile | 18 ++-- app/views/help/faq.textile | 2 +- app/views/help/index.textile | 40 ++++---- app/views/help/introduction.textile | 16 +-- app/views/help/journeypatterns.textile | 30 +++--- app/views/help/lines.textile | 38 +++---- app/views/help/networks.textile | 44 ++++----- app/views/help/normalisation.textile | 40 ++++---- app/views/help/restapis.textile | 12 +-- app/views/help/routes.textile | 36 +++---- app/views/help/schema.textile | 2 +- app/views/help/stop_areas.textile | 100 +++++++++---------- app/views/help/timetables.textile | 56 +++++------ app/views/help/toc.textile | 14 +-- app/views/help/vehiclejourneys.textile | 34 +++---- app/views/layouts/_user_links.erb | 2 +- app/views/layouts/application.html.erb | 13 +-- app/views/test_sheet/toc.html | 110 ++++++++++----------- 23 files changed, 407 insertions(+), 373 deletions(-) diff --git a/app/models/help_page.rb b/app/models/help_page.rb index 1207c5198..28d9e22b2 100644 --- a/app/models/help_page.rb +++ b/app/models/help_page.rb @@ -23,6 +23,29 @@ class HelpPage self.content = $POSTMATCH self.data.merge! YAML.load($1) end + + # workaround for special chars + self.content = self.content.gsub('é','é') + self.content = self.content.gsub('è','è') + self.content = self.content.gsub('à','à') + self.content = self.content.gsub('ù','ù') + self.content = self.content.gsub('É','É') + self.content = self.content.gsub('È','È') + self.content = self.content.gsub('Ê','Ê') + self.content = self.content.gsub('À','À') + self.content = self.content.gsub('Ù','Ù') + self.content = self.content.gsub('â','â') + self.content = self.content.gsub('ê','ê') + self.content = self.content.gsub('ô','ô') + self.content = self.content.gsub('î','î') + self.content = self.content.gsub('û','û') + self.content = self.content.gsub('ë','ëc;') + self.content = self.content.gsub('ï','ï') + self.content = self.content.gsub('ç','ç') + self.content = self.content.gsub('oe','œ') + self.content = self.content.gsub('<<','«') + self.content = self.content.gsub('>>','»') + self.content = self.content.gsub('°','º') end def method_missing(method, *arguments) diff --git a/app/models/test_sheet_page.rb b/app/models/test_sheet_page.rb index 35a368608..a57a37595 100644 --- a/app/models/test_sheet_page.rb +++ b/app/models/test_sheet_page.rb @@ -17,6 +17,28 @@ class TestSheetPage def load self.content = File.read(filename) + # workaround for special chars + self.content = self.content.gsub('é','é') + self.content = self.content.gsub('è','è') + self.content = self.content.gsub('à','à') + self.content = self.content.gsub('ù','ù') + self.content = self.content.gsub('É','É') + self.content = self.content.gsub('È','È') + self.content = self.content.gsub('Ê','Ê') + self.content = self.content.gsub('À','À') + self.content = self.content.gsub('Ù','Ù') + self.content = self.content.gsub('â','â') + self.content = self.content.gsub('ê','ê') + self.content = self.content.gsub('ô','ô') + self.content = self.content.gsub('î','î') + self.content = self.content.gsub('û','û') + self.content = self.content.gsub('ë','ëc;') + self.content = self.content.gsub('ï','ï') + self.content = self.content.gsub('ç','ç') + self.content = self.content.gsub('oe','œ') + self.content = self.content.gsub('<<','«') + self.content = self.content.gsub('>>','»') + self.content = self.content.gsub('°','º') end def method_missing(method, *arguments) diff --git a/app/views/file_validations/_test_sheet_toc.html.erb b/app/views/file_validations/_test_sheet_toc.html.erb index 010d29b1b..34383a19d 100644 --- a/app/views/file_validations/_test_sheet_toc.html.erb +++ b/app/views/file_validations/_test_sheet_toc.html.erb @@ -1,23 +1,15 @@

      Définition des tests

      -
        -
      1. Catégorie 1 -
          - <% for i in 1..2 do %> -
        1. <%= link_to 'Fiche 1.'+i.to_s , test_sheet_path+"1."+i.to_s, :target => "test_sheets" %>
        2. +
            + <% cnt = Array[0,2,28,21] %> + <% for j in 1..3 do %> +
          • Catégorie <%= j.to_s %> +
              + <% 1.upto(cnt[j]) do |i| %> +
            • <%= link_to 'Fiche '+j.to_s+'.'+i.to_s , test_sheet_path+j.to_s+"."+i.to_s, :target => "chouette_help" %>
            • <% end %> -
      2. -
      3. Catégorie 2 -
          - <% for i in 1..28 do %> -
        1. <%= link_to 'Fiche 2.'+i.to_s , test_sheet_path+"2."+i.to_s, :target => "test_sheets" %>
        2. - <% end %> -
      4. -
      5. Catégorie 3 -
          - <% for i in 1..21 do %> -
        1. <%= link_to 'Fiche 3.'+i.to_s , test_sheet_path+"3."+i.to_s, :target => "test_sheets" %>
        2. - <% end %> -
      6. -
      +
    + + <% end %> +
    \ No newline at end of file diff --git a/app/views/help/companies.textile b/app/views/help/companies.textile index 07d7789c5..54d20b2ed 100644 --- a/app/views/help/companies.textile +++ b/app/views/help/companies.textile @@ -3,42 +3,42 @@ layout: default title: Transporteurs --- -h3. Définition +h3. Définition -Dans la réalité, le transporteur est l'entité en charge de l'exploitation d'une ou plusieurs lignes de transport. +Dans la réalité, le transporteur est l'entité en charge de l'exploitation d'une ou plusieurs lignes de transport. Ce principe se retrouve dans ce logiciel. -* Il s'agit de l'exploitant de la ligne; chaque ligne est rattachée à un seul transporteur, un transporteur pouvant évidemment gérer plusieurs lignes. -* Chaque transporteur dispose d'un identifiant fonctionnel (« numéro d'enregistrement ») qui est utilisé dans les échanges XML pour identifier le transporteur et le mettre à jour. Cet identifiant est unique pour toute la base CHOUETTE, quel que soit le réseau ; il est donc important que le gestionnaire de la base CHOUETTE le renseigne d'une manière bien définie et pérenne. +* Il s'agit de l'exploitant de la ligne; chaque ligne est rattachée à un seul transporteur, un transporteur pouvant évidemment gérer plusieurs lignes. +* Chaque transporteur dispose d'un identifiant fonctionnel (<< numéro d'enregistrement >>) qui est utilisé dans les échanges XML pour identifier le transporteur et le mettre à jour. Cet identifiant est unique pour toute la base CHOUETTE, quel que soit le réseau ; il est donc important que le gestionnaire de la base CHOUETTE le renseigne d'une manière bien définie et pérenne. h3. Attributs - Nom := nom du transporteur -- Nom court := nom abrégé du transporteur -- Nom d'unité := nom de l'unité de gestion dans la société de transport -- Nom du département := nom du département dans la société de transport -- Code postal := code postal de l'adresse de la société de transport -- Numéro de téléphone := Numréro de téléphone de l'unité de gestion -- Numéro de fax := Numéro de fax de l'unité de gestion -- Email := adresse électronique de l'unité de gestion de l'unité de gestion -- Numéro d'enregistrement := code référençant un transporteur au sein d'une autorité supérieure +- Nom court := nom abrégé du transporteur +- Nom d'unité := nom de l'unité de gestion dans la société de transport +- Nom du département := nom du département dans la société de transport +- Code postal := code postal de l'adresse de la société de transport +- Numéro de téléphone := Numréro de téléphone de l'unité de gestion +- Numéro de fax := Numéro de fax de l'unité de gestion +- Email := adresse électronique de l'unité de gestion de l'unité de gestion +- Numéro d'enregistrement := code référençant un transporteur au sein d'une autorité supérieure -p(attr_data). Données de gestion : +p(attr_data). Données de gestion : - Identifiant Neptune := -clé unique pérenne identifiant le transporteur pour les échanges Neptune -cet identifiant est composé de 3 parties : préfixe:type:id_technique -* préfixe : clé identifiant un producteur de données unique -* type = Company : clé identifiant le type d'objet (valeur imposée) -* id_technique : valeur identifiant un seul object d'un type donné pour un même producteur -ce champ obligatoire est automatiquement généré s'il n'est pas renseigné -il est possible aussi de ne renseigner que l'identifiant technique auquel cas la valeur sera complétée automatiquement. +clé unique pérenne identifiant le transporteur pour les échanges Neptune +cet identifiant est composé de 3 parties : préfixe:type:id_technique +* préfixe : clé identifiant un producteur de données unique +* type = Company : clé identifiant le type d'objet (valeur imposée) +* id_technique : valeur identifiant un seul object d'un type donné pour un même producteur +ce champ obligatoire est automatiquement généré s'il n'est pas renseigné +il est possible aussi de ne renseigner que l'identifiant technique auquel cas la valeur sera complétée automatiquement. =: -- Date de création := date à laquelle l'objet a été créé ou modifié pour la dernière fois -- Version := version de l'objet (auto incrémenté à chaque modification) -- Créé par := compte utilisateur ayant procédé à la dernière modification +- Date de création := date à laquelle l'objet a été créé ou modifié pour la dernière fois +- Version := version de l'objet (auto incrémenté à chaque modification) +- Créé par := compte utilisateur ayant procédé à la dernière modification -h3. Implémentation +h3. Implémentation p. TODO diff --git a/app/views/help/connection_links.textile b/app/views/help/connection_links.textile index 941918e2d..112e2de1f 100644 --- a/app/views/help/connection_links.textile +++ b/app/views/help/connection_links.textile @@ -3,44 +3,44 @@ layout: default title: Correspondances --- -h3. Définition +h3. Définition -Une correspondance ou un changement est, dans un voyage en transports en commun, une étape nécessitant de changer de ligne. Le changement peut se faire soit au sein du même réseau, soit de manière intermodale, c'est-à-dire en changeant également de mode de transport. -La correspondance permet d'établir une liaison entre un arrêt physique (ou une zone d'arrêt de type « arrêt commercial » ou de type « pôle d'échange ») et un autre arrêt physique (ou une autre zone d'arrêt de type « arrêt commercial » ou de type « pôle d'échange »). -Cette liaison définit aussi une durée de parcours entre les arrêts (ou zones) reliés. +Une correspondance ou un changement est, dans un voyage en transports en commun, une étape nécessitant de changer de ligne. Le changement peut se faire soit au sein du même réseau, soit de manière intermodale, c'est-à-dire en changeant également de mode de transport. +La correspondance permet d'établir une liaison entre un arrêt physique (ou une zone d'arrêt de type << arrêt commercial >> ou de type << pôle d'échange >>) et un autre arrêt physique (ou une autre zone d'arrêt de type << arrêt commercial >> ou de type << pôle d'échange >>). +Cette liaison définit aussi une durée de parcours entre les arrêts (ou zones) reliés. h3. Attributs - Nom := nom de la correspondances - Commentaire := zone de texte libre -- Distance := distance en mètres -- Type := liste de choix parmi « Aérien », « Souterrain» ou mixte « Aérien et souterrain » -- Départ := arrêt de départ de la correspondance -- Arrivée := arrêt d'arrivée de la correspondance -- Durée moyenne := champ de type horaire hh:mm -- Durée pour un voyageur à mobilité réduite := champ de type horaire hh:mm -- Durée pour un voyageur occasionnel := champ de type horaire hh:mm -- Durée pour un habitué := champ de type horaire hh:mm +- Distance := distance en mètres +- Type := liste de choix parmi << Aérien >>, << Souterrain>> ou mixte << Aérien et souterrain >> +- Départ := arrêt de départ de la correspondance +- Arrivée := arrêt d'arrivée de la correspondance +- Durée moyenne := champ de type horaire hh:mm +- Durée pour un voyageur à mobilité réduite := champ de type horaire hh:mm +- Durée pour un voyageur occasionnel := champ de type horaire hh:mm +- Durée pour un habitué := champ de type horaire hh:mm - Ascenseur := indicateur (Oui ou Non) -- Accès pour personne à mobilité réduite := indicateur (Oui ou Non) +- Accès pour personne à mobilité réduite := indicateur (Oui ou Non) - Escalator disponible := indicateur (Oui ou Non) -p(attr_data). Données de gestion : +p(attr_data). Données de gestion : - Identifiant Neptune := -clé unique pérenne identifiant la correspondance pour les échanges Neptune -cet identifiant est composé de 3 parties : préfixe:type:id_technique -* préfixe : clé identifiant un producteur de données unique -* type = ConnectionLink : clé identifiant le type d'objet (valeur imposée) -* id_technique : valeur identifiant un seul object d'un type donné pour un même producteur -ce champ obligatoire est automatiquement généré s'il n'est pas renseigné -il est possible aussi de ne renseigner que l'identifiant technique auquel cas la valeur sera complétée automatiquement. +clé unique pérenne identifiant la correspondance pour les échanges Neptune +cet identifiant est composé de 3 parties : préfixe:type:id_technique +* préfixe : clé identifiant un producteur de données unique +* type = ConnectionLink : clé identifiant le type d'objet (valeur imposée) +* id_technique : valeur identifiant un seul object d'un type donné pour un même producteur +ce champ obligatoire est automatiquement généré s'il n'est pas renseigné +il est possible aussi de ne renseigner que l'identifiant technique auquel cas la valeur sera complétée automatiquement. =: -- Date de création := date à laquelle l'objet a été créé ou modifié pour la dernière fois -- Version := version de l'objet (auto incrémenté à chaque modification) -- Créé par := compte utilisateur ayant procédé à la dernière modification +- Date de création := date à laquelle l'objet a été créé ou modifié pour la dernière fois +- Version := version de l'objet (auto incrémenté à chaque modification) +- Créé par := compte utilisateur ayant procédé à la dernière modification -h3. Implémentation +h3. Implémentation p. TODO diff --git a/app/views/help/dataspaces.textile b/app/views/help/dataspaces.textile index 51c32e59d..59d33f6e6 100644 --- a/app/views/help/dataspaces.textile +++ b/app/views/help/dataspaces.textile @@ -3,20 +3,20 @@ layout: default title: Espaces de données --- -h3. Définition +h3. Définition -p. un espace de données est le lieu de stockage d'un ensemble de données de transport connectées entre elles. +p. un espace de données est le lieu de stockage d'un ensemble de données de transport connectées entre elles. h3. Attributs -- Nom := nom de l'espace de données -- Code := code de l'espace de données -- Préfixe Neptune := préfixe utilisé par défaut pour la génération des identifiants Neptune -- Projection géographique := référentiel de projection des coordonnées cartographiques en complément du WGS84 +- Nom := nom de l'espace de données +- Code := code de l'espace de données +- Préfixe Neptune := préfixe utilisé par défaut pour la génération des identifiants Neptune +- Projection géographique := référentiel de projection des coordonnées cartographiques en complément du WGS84 - Fuseau horaire := fuseau horaire applicable pour les horaires des courses. (cf "Tz_database":http://fr.wikipedia.org/wiki/Tz_database) -h3. Implémentation +h3. Implémentation -p. L'espace de données est concrétisé dans la base de données par un schéma au sens SQL portant le nom definit par l'attribut code, -les attributs sont enregistrés dans la table REFERENTIALS du schema PUBLIC +p. L'espace de données est concrétisé dans la base de données par un schéma au sens SQL portant le nom definit par l'attribut code, +les attributs sont enregistrés dans la table REFERENTIALS du schema PUBLIC diff --git a/app/views/help/faq.textile b/app/views/help/faq.textile index 5fb8cfa9a..c6a96e045 100644 --- a/app/views/help/faq.textile +++ b/app/views/help/faq.textile @@ -3,4 +3,4 @@ layout: default title: Foire aux questions --- -Rédaction ultérieure \ No newline at end of file +Rédaction ultérieure \ No newline at end of file diff --git a/app/views/help/index.textile b/app/views/help/index.textile index 231807ec7..439d70edf 100644 --- a/app/views/help/index.textile +++ b/app/views/help/index.textile @@ -3,19 +3,19 @@ layout: default title: Présentation --- -Chouette v2 : itération 9 du 03/07/2012 +Chouette v2 : itération 9 du 03/07/2012 -Cette itération présente les formulaires de : +Cette itération présente les formulaires de : -* réseaux +* réseaux * transporteurs * lignes -** séquences d'arrêts +** séquences d'arrêts *** missions *** courses/horaires -* arrêts -** arrêts physiques -** zones d'arrêt +* arrêts +** arrêts physiques +** zones d'arrêt ** ITL * calendriers d'application * correspondances @@ -25,25 +25,25 @@ Cette itération présente les formulaires de : l'avancement actuel permet de : -* créer, modifier et supprimer les objets +* créer, modifier et supprimer les objets * consulter les cartes -** les noms des arrêts sont affiché sous forme de bulle d'aide sur les cartes du réseau, des lignes et des correspondances -* déplacer un arrêt depuis la carte (voir mode opératoire dans l'aide des arrêts) -* associer les arrêts à leurs parents -* ajouter des fils à un arrêt -* importer des lignes aux formats Neptune et CSV (zip et fichier non compressé) +** les noms des arrêts sont affiché sous forme de bulle d'aide sur les cartes du réseau, des lignes et des correspondances +* déplacer un arrêt depuis la carte (voir mode opératoire dans l'aide des arrêts) +* associer les arrêts à leurs parents +* ajouter des fils à un arrêt +* importer des lignes aux formats Neptune et CSV (zip et fichier non compressé) * exporter des lignes au format Neptune (zip) -* éditer des séquences d'arrêts : -** ajouter, déplacer et retirer des arrêts dans la séquence -** ajouter, modifier les missions de la séquence +* éditer des séquences d'arrêts : +** ajouter, déplacer et retirer des arrêts dans la séquence +** ajouter, modifier les missions de la séquence ** afficher, ajouter, modifier, supprimer des courses/horaires -* préciser des paramètres généraux de l'espace de données +* préciser des paramètres généraux de l'espace de données * valider un fichier neptune les actions suivantes ne sont pas encore disponible : -* définir l'emprise générale du réseau -* gérer le second référentiel de projection +* définir l'emprise générale du réseau +* gérer le second référentiel de projection * afficher des informations dans le tableau de bord -* créer des courses par translation +* créer des courses par translation diff --git a/app/views/help/introduction.textile b/app/views/help/introduction.textile index 71f954d53..8cda121c5 100644 --- a/app/views/help/introduction.textile +++ b/app/views/help/introduction.textile @@ -3,13 +3,13 @@ layout: default title: Introduction --- -CHOUETTE est un logiciel libre développé à l'initiative du ministère français chargé des transports (et du développement durable), -dans le but de faciliter l'échange de données d'offre (théorique) de transport collectif (TC), -en s'appuyant pour cela sur la norme NFP 99506, dite Neptune, qui spécifie un profil d'échange XML. - -Les utilisateurs visés sont les collectivités locales Autorités Organisatrices de Transport (AOT), -les exploitants des réseaux TC ,et leurs prestataires (bureaux d'étude ou société de services). -D'autres utilisateurs potentiels sont néanmoins identifiés : services de l'état, éditeurs de logiciels, -opérateurs de services d'information, chercheurs... +CHOUETTE est un logiciel libre développé à l'initiative du ministère français chargé des transports (et du développement durable), +dans le but de faciliter l'échange de données d'offre (théorique) de transport collectif (TC), +en s'appuyant pour cela sur la norme NFP 99506, dite Neptune, qui spécifie un profil d'échange XML. + +Les utilisateurs visés sont les collectivités locales Autorités Organisatrices de Transport (AOT), +les exploitants des réseaux TC ,et leurs prestataires (bureaux d'étude ou société de services). +D'autres utilisateurs potentiels sont néanmoins identifiés : services de l'état, éditeurs de logiciels, +opérateurs de services d'information, chercheurs... diff --git a/app/views/help/journeypatterns.textile b/app/views/help/journeypatterns.textile index 727e3772b..d491fc7db 100644 --- a/app/views/help/journeypatterns.textile +++ b/app/views/help/journeypatterns.textile @@ -3,33 +3,33 @@ layout: default title: Missions --- -h3. Définition +h3. Définition -Si on considère la suite ordonnée des arrêts d'une séquence d'arrêts, la mission se définit comme une suite extraite. Autrement dit, toutes les courses d'une séquence d'arrêts qui desservent les mêmes arrêts et dans le même ordre, à des horaires différents éventuellement, référencent la même mission. La mission correspond donc à une suite ordonnée d'arrêts de la séquence d'arrêts. +Si on considère la suite ordonnée des arrêts d'une séquence d'arrêts, la mission se définit comme une suite extraite. Autrement dit, toutes les courses d'une séquence d'arrêts qui desservent les mêmes arrêts et dans le même ordre, à des horaires différents éventuellement, référencent la même mission. La mission correspond donc à une suite ordonnée d'arrêts de la séquence d'arrêts. h3. Attributs - Nom := nom de la mission - Nom public := nom public pour les voyageurs -- Numéro d'enregistrement := Le numéro d'enregistrement est unique. Aucune règle de nommage ne s'applique sur ce numéro. Celui-ci doit être unique sur l'ensemble des missions de la ligne. +- Numéro d'enregistrement := Le numéro d'enregistrement est unique. Aucune règle de nommage ne s'applique sur ce numéro. Celui-ci doit être unique sur l'ensemble des missions de la ligne. - Commentaire := zone de texte libre -p(attr_data). Données de gestion : +p(attr_data). Données de gestion : - Identifiant Neptune := -clé unique pérenne identifiant la mission pour les échanges Neptune -cet identifiant est composé de 3 parties : préfixe:type:id_technique -* préfixe : clé identifiant un producteur de données unique -* type = JourneyPattern : clé identifiant le type d'objet (valeur imposée) -* id_technique : valeur identifiant un seul object d'un type donné pour un même producteur -ce champ obligatoire est automatiquement généré s'il n'est pas renseigné -il est possible aussi de ne renseigner que l'identifiant technique auquel cas la valeur sera complétée automatiquement. +clé unique pérenne identifiant la mission pour les échanges Neptune +cet identifiant est composé de 3 parties : préfixe:type:id_technique +* préfixe : clé identifiant un producteur de données unique +* type = JourneyPattern : clé identifiant le type d'objet (valeur imposée) +* id_technique : valeur identifiant un seul object d'un type donné pour un même producteur +ce champ obligatoire est automatiquement généré s'il n'est pas renseigné +il est possible aussi de ne renseigner que l'identifiant technique auquel cas la valeur sera complétée automatiquement. =: -- Date de création := date à laquelle l'objet a été créé ou modifié pour la dernière fois -- Version := version de l'objet (auto incrémenté à chaque modification) -- Créé par := compte utilisateur ayant procédé à la dernière modification +- Date de création := date à laquelle l'objet a été créé ou modifié pour la dernière fois +- Version := version de l'objet (auto incrémenté à chaque modification) +- Créé par := compte utilisateur ayant procédé à la dernière modification -h3. Implémentation +h3. Implémentation p. TODO diff --git a/app/views/help/lines.textile b/app/views/help/lines.textile index 78348896f..7263dd04b 100644 --- a/app/views/help/lines.textile +++ b/app/views/help/lines.textile @@ -3,44 +3,44 @@ layout: default title: Lignes --- -h3. Définition +h3. Définition -Une ligne référence un réseau et un transporteur; par ailleurs la ligne se compose d'un ou plusieurs itinéraires. -La ligne dispose aussi d'un identifiant fonctionnel (« numéro d'enregistrement ») qui est utilisé dans les échanges XML pour identifier la ligne et la mettre à jour; il est donc important que le gestionnaire de la base CHOUETTE le renseigne d'une manière bien définie et pérenne. +Une ligne référence un réseau et un transporteur; par ailleurs la ligne se compose d'un ou plusieurs itinéraires. +La ligne dispose aussi d'un identifiant fonctionnel (<< numéro d'enregistrement >>) qui est utilisé dans les échanges XML pour identifier la ligne et la mettre à jour; il est donc important que le gestionnaire de la base CHOUETTE le renseigne d'une manière bien définie et pérenne. h3. Attributs -- Réseau := réseau d'appartenance de la ligne +- Réseau := réseau d'appartenance de la ligne - Transporteur := transporteur principal exploitant la ligne -les autres transporteurs de la lignes sont référencés au niveau de chaque course +les autres transporteurs de la lignes sont référencés au niveau de chaque course =: - Nom := nom de la ligne - Nom public := nom de la ligne connu des usagers -- Numéro d'enregistrement := code référençant une ligne au sein d'une autorité supérieure +- Numéro d'enregistrement := code référençant une ligne au sein d'une autorité supérieure - Indice := indice de la ligne - Mode de transport := mode de transport principal de la ligne -les modes de transports particuliers sont indiqués au niveau de chaque course +les modes de transports particuliers sont indiqués au niveau de chaque course =: - Commentaire := zone de texte libre sur la ligne -p(attr_data). Données de gestion : +p(attr_data). Données de gestion : - Identifiant Neptune := -clé unique pérenne identifiant la ligne pour les échanges Neptune -cet identifiant est composé de 3 parties : préfixe:type:id_technique -* préfixe : clé identifiant un producteur de données unique -* type = Line : clé identifiant le type d'objet (valeur imposée) -* id_technique : valeur identifiant un seul object d'un type donné pour un même producteur -ce champ obligatoire est automatiquement généré s'il n'est pas renseigné -il est possible aussi de ne renseigner que l'identifiant technique auquel cas la valeur sera complétée automatiquement. +clé unique pérenne identifiant la ligne pour les échanges Neptune +cet identifiant est composé de 3 parties : préfixe:type:id_technique +* préfixe : clé identifiant un producteur de données unique +* type = Line : clé identifiant le type d'objet (valeur imposée) +* id_technique : valeur identifiant un seul object d'un type donné pour un même producteur +ce champ obligatoire est automatiquement généré s'il n'est pas renseigné +il est possible aussi de ne renseigner que l'identifiant technique auquel cas la valeur sera complétée automatiquement. =: -- Date de création := date à laquelle l'objet a été créé ou modifié pour la dernière fois -- Version := version de l'objet (auto incrémenté à chaque modification) -- Créé par := compte utilisateur ayant procédé à la dernière modification +- Date de création := date à laquelle l'objet a été créé ou modifié pour la dernière fois +- Version := version de l'objet (auto incrémenté à chaque modification) +- Créé par := compte utilisateur ayant procédé à la dernière modification -h3. Implémentation +h3. Implémentation p. TODO diff --git a/app/views/help/networks.textile b/app/views/help/networks.textile index 2a2de2309..656693295 100644 --- a/app/views/help/networks.textile +++ b/app/views/help/networks.textile @@ -3,39 +3,39 @@ layout: default title: Réseaux --- -h3. Définition +h3. Définition -Un réseau est constitué par les lignes, les séquences d'arrêts, les Interdictions de Trafic Local (ITL), les horaires, et les courses qui le définissent. +Un réseau est constitué par les lignes, les séquences d'arrêts, les Interdictions de Trafic Local (ITL), les horaires, et les courses qui le définissent. -Chaque réseau dispose d'un identifiant fonctionnel (« numéro d'enregistrement ») qui est utilisé dans les échanges XML pour identifier le réseau et le mettre à jour. Il est donc important que le gestionnaire le renseigne d'une manière bien définie et pérenne. +Chaque réseau dispose d'un identifiant fonctionnel (<< numéro d'enregistrement >>) qui est utilisé dans les échanges XML pour identifier le réseau et le mettre à jour. Il est donc important que le gestionnaire le renseigne d'une manière bien définie et pérenne. h3. Attributs -- Nom := nom du réseau -- Numéro d'enregistrement := code référençant un réseau au sein d'une autorité supérieure -- Commentaire := zone de texte libre sur le réseau -- Date de version := date de mise en référence de l'ensemble des constituants du réseau -- Description := description du réseau -- Nom du système origine := nom du système ayant produit les données du réseau -- Identifiant du système origine := identifiant du système ayant produit les données du réseau +- Nom := nom du réseau +- Numéro d'enregistrement := code référençant un réseau au sein d'une autorité supérieure +- Commentaire := zone de texte libre sur le réseau +- Date de version := date de mise en référence de l'ensemble des constituants du réseau +- Description := description du réseau +- Nom du système origine := nom du système ayant produit les données du réseau +- Identifiant du système origine := identifiant du système ayant produit les données du réseau -p(attr_data). Données de gestion : +p(attr_data). Données de gestion : - Identifiant Neptune := -clé unique pérenne identifiant le réseau pour les échanges Neptune -cet identifiant est composé de 3 parties : préfixe:type:id_technique -* préfixe : clé identifiant un producteur de données unique -* type = GroupOfLine : clé identifiant le type d'objet (valeur imposée) -* id_technique : valeur identifiant un seul object d'un type donné pour un même producteur -ce champ obligatoire est automatiquement généré s'il n'est pas renseigné -il est possible aussi de ne renseigner que l'identifiant technique auquel cas la valeur sera complétée automatiquement. +clé unique pérenne identifiant le réseau pour les échanges Neptune +cet identifiant est composé de 3 parties : préfixe:type:id_technique +* préfixe : clé identifiant un producteur de données unique +* type = GroupOfLine : clé identifiant le type d'objet (valeur imposée) +* id_technique : valeur identifiant un seul object d'un type donné pour un même producteur +ce champ obligatoire est automatiquement généré s'il n'est pas renseigné +il est possible aussi de ne renseigner que l'identifiant technique auquel cas la valeur sera complétée automatiquement. =: -- Date de création := date à laquelle l'objet a été créé ou modifié pour la dernière fois -- Version := version de l'objet (auto incrémenté à chaque modification) -- Créé par := compte utilisateur ayant procédé à la dernière modification +- Date de création := date à laquelle l'objet a été créé ou modifié pour la dernière fois +- Version := version de l'objet (auto incrémenté à chaque modification) +- Créé par := compte utilisateur ayant procédé à la dernière modification -h3. Implémentation +h3. Implémentation p. TODO diff --git a/app/views/help/normalisation.textile b/app/views/help/normalisation.textile index 6d7793eb4..875a52cfc 100644 --- a/app/views/help/normalisation.textile +++ b/app/views/help/normalisation.textile @@ -3,41 +3,41 @@ layout: default title: Normalisation --- -Le projet Chouette a été développé dans le cadre de la normalisation de l'information sur les transports publics (AFNOR/BNEVT CN03/GT7), en vue de faciliter l'interopérabilité des systèmes et en particulier les échanges de données entre Systèmes d'Information Multimodale. +Le projet Chouette a été développé dans le cadre de la normalisation de l'information sur les transports publics (AFNOR/BNEVT CN03/GT7), en vue de faciliter l'interopérabilité des systèmes et en particulier les échanges de données entre Systèmes d'Information Multimodale. h3. TRANSMODEL (EN12896) -La norme européenne TRANSMODEL constitue le modèle conceptuel de données sur lequel s'appuie l'ensemble des travaux normatifs (Neptune, SIRI, IFOPT, NETEX) . Elle est actuellement validée dans sa version 5.1. +La norme européenne TRANSMODEL constitue le modèle conceptuel de données sur lequel s'appuie l'ensemble des travaux normatifs (Neptune, SIRI, IFOPT, NETEX) . Elle est actuellement validée dans sa version 5.1. -Elle a pour objectif de décrire les différents concepts utilisés au sein des multiples métiers du transport public (aussi bien dans le domaine de l'exploitation, de la régulation que dans celui de l'information voyageur) en usant de la modélisation UML. Cette description a abouti à la constitution d'un "dictionnaire" dans lequel chacun peut venir piocher la terminologie adéquate pour pouvoir désigner, quels que soient la structure et le métier de l'intéressé, de façon homogène et non ambiguëc; les concepts qu'il va décliner dans son application. +Elle a pour objectif de décrire les différents concepts utilisés au sein des multiples métiers du transport public (aussi bien dans le domaine de l'exploitation, de la régulation que dans celui de l'information voyageur) en usant de la modélisation UML. Cette description a abouti à la constitution d'un "dictionnaire" dans lequel chacun peut venir piocher la terminologie adéquate pour pouvoir désigner, quels que soient la structure et le métier de l'intéressé, de façon homogène et non ambiguëc; les concepts qu'il va décliner dans son application. -h3. de TRIDENT à NEPTUNE (PR NF P99-506) +h3. de TRIDENT à NEPTUNE (PR NF P99-506) -Dans le cadre de la commission de normalisation CN03 pour les applications télématiques dans les transports publics, miroir du groupe européen CEN TC278 / WG3, un groupe de travail GT7 a été créé en 2002 pour normaliser les échanges de données concernant l'information aux voyageurs entre exploitants et Autorités Organisatrices de transport. +Dans le cadre de la commission de normalisation CN03 pour les applications télématiques dans les transports publics, miroir du groupe européen CEN TC278 / WG3, un groupe de travail GT7 a été créé en 2002 pour normaliser les échanges de données concernant l'information aux voyageurs entre exploitants et Autorités Organisatrices de transport. -Après examen des travaux en cours au niveau européen, il est apparu au groupe que les spécifications d'échange élaborées dans le cadre du projet européen TRIDENT étaient la meilleure base de travail sur laquelle s'appuyer pour la normalisation. -Ces spécifications d'échange couvrent l'information VP et TC, théorique et en situation perturbée; elles s'appuient sur : -* un modèle d'échange pair à pair entre fournisseur et client, avec possibilité d'abonnement ; -* un modèle de données orienté objets décrit en UML, reprenant pour ce qui concerne les transports publics, le modèle conceptuel de données Transmodel V4.0, normalisé au niveau européen ; -* un format d'échange XML spécifié sous forme de schémas XSD. +Après examen des travaux en cours au niveau européen, il est apparu au groupe que les spécifications d'échange élaborées dans le cadre du projet européen TRIDENT étaient la meilleure base de travail sur laquelle s'appuyer pour la normalisation. +Ces spécifications d'échange couvrent l'information VP et TC, théorique et en situation perturbée; elles s'appuient sur : +* un modèle d'échange pair à pair entre fournisseur et client, avec possibilité d'abonnement ; +* un modèle de données orienté objets décrit en UML, reprenant pour ce qui concerne les transports publics, le modèle conceptuel de données Transmodel V4.0, normalisé au niveau européen ; +* un format d'échange XML spécifié sous forme de schémas XSD. -Les spécifications TRIDENT ont été implémentées dans plusieurs pays européens, et en France ont été mises en &œlig;uvre par la RATP pour son système d'information sur les situations perturbées SIPRE, et également pour les échanges d'information au niveau francilien en cours entre les systèmes de la RATP et du STIF, pour ce qui concerne l'information théorique. +Les spécifications TRIDENT ont été implémentées dans plusieurs pays européens, et en France ont été mises en œuvre par la RATP pour son système d'information sur les situations perturbées SIPRE, et également pour les échanges d'information au niveau francilien en cours entre les systèmes de la RATP et du STIF, pour ce qui concerne l'information théorique. -Le travail du groupe GT7 a abouti à des spécifications de profil d'échange TRIDENT / Chouette en 2006, qui ont servi de référence pour implémenter le logiciel CHOUETTE et sont utilisées depuis lors par plusieurs projets de SIM en France. +Le travail du groupe GT7 a abouti à des spécifications de profil d'échange TRIDENT / Chouette en 2006, qui ont servi de référence pour implémenter le logiciel CHOUETTE et sont utilisées depuis lors par plusieurs projets de SIM en France. -Lors des discussions précédant l'enquête probatoire AFNOR en 2009 en vue faire de ces spécifications une norme française, ces spécifications ont été complétées par quelques éléments de données relatifs à l'accessibilité des transports : le nouveau profil d'échange baptisé *NEPTUNE* (PR NF99-506 Décembre 2009) a été adopté en janvier 2010. Il y a compatibilité ascendante avec les fichiers au profil Trident/Chouette dont Neptune est une extension. +Lors des discussions précédant l'enquête probatoire AFNOR en 2009 en vue faire de ces spécifications une norme française, ces spécifications ont été complétées par quelques éléments de données relatifs à l'accessibilité des transports : le nouveau profil d'échange baptisé *NEPTUNE* (PR NF99-506 Décembre 2009) a été adopté en janvier 2010. Il y a compatibilité ascendante avec les fichiers au profil Trident/Chouette dont Neptune est une extension. -h3. Le profile d'échange NEPTUNE +h3. Le profile d'échange NEPTUNE -Le développement des Systèmes d'Information Multimodale a conduit les partenaires des transports publics en France (AOT et opérateurs, représentants d'utilisateurs et administrations publiques) dans leur ensemble à demander l'inscription de ce profil d'échange en tant que 'norme pleine'. L'adoption de ce statut de norme est d'autant plus important aujourd'hui, que les outils précités vont connaître des périodes d'évolution et d'adaptation. +Le développement des Systèmes d'Information Multimodale a conduit les partenaires des transports publics en France (AOT et opérateurs, représentants d'utilisateurs et administrations publiques) dans leur ensemble à demander l'inscription de ce profil d'échange en tant que 'norme pleine'. L'adoption de ce statut de norme est d'autant plus important aujourd'hui, que les outils précités vont connaître des périodes d'évolution et d'adaptation. -Dans le cadre du processus de normalisation, le profil d'échange a été rebaptisé NEPTUNE et complété . Le processus s'est conclu début 2010 par l'adoption d'un document AFNOR (cf. PR NF P99-506) . +Dans le cadre du processus de normalisation, le profil d'échange a été rebaptisé NEPTUNE et complété . Le processus s'est conclu début 2010 par l'adoption d'un document AFNOR (cf. PR NF P99-506) . -En pratique, l'essentiel est de savoir que le profil TRIDENT/CHOUETTE est compatible avec NEPTUNE : Neptune reprend l'essentiel de Trident profil Chouette, et n'a été complété qu'en ce qui concerne l'information sur l'accessibilité aux Personnes à Mobilité Réduite et les accès. En particulier, le nommage des éléments de données du profil XSD n'a pas été modifié. +En pratique, l'essentiel est de savoir que le profil TRIDENT/CHOUETTE est compatible avec NEPTUNE : Neptune reprend l'essentiel de Trident profil Chouette, et n'a été complété qu'en ce qui concerne l'information sur l'accessibilité aux Personnes à Mobilité Réduite et les accès. En particulier, le nommage des éléments de données du profil XSD n'a pas été modifié. -Ce profil résulte d'un consensus entre les différentes parties prenantes participant au groupe de travail de normalisation CN03/GT7. Il est rédigé en français. Dans certains cas, pour éviter des confusions ou des contre-sens, les concepts de la norme TRANSMODEL qui ont été manipulés sont rappelés dans leur terminologie, voire leur définition en anglais dans le texte original de la norme TRANSMODEL V5.1 qui vaut référence. Les rapprochements nécessaires ont été faits avec la version provisoire en français de la norme TRANSMODEL en cours de validation. +Ce profil résulte d'un consensus entre les différentes parties prenantes participant au groupe de travail de normalisation CN03/GT7. Il est rédigé en français. Dans certains cas, pour éviter des confusions ou des contre-sens, les concepts de la norme TRANSMODEL qui ont été manipulés sont rappelés dans leur terminologie, voire leur définition en anglais dans le texte original de la norme TRANSMODEL V5.1 qui vaut référence. Les rapprochements nécessaires ont été faits avec la version provisoire en français de la norme TRANSMODEL en cours de validation. -Ce profil sera sans doute amené à évoluer en fonction des travaux réalisés dans le cadre des travaux de normalisation européens ou internationaux en cours. Ceux-ci touchent tout à la fois la représentation topographique des réseaux de transport, les interfaces entre les données d'exploitation et l'information diffusée vers le voyageur avant et pendant le voyage (NeTEX ), la description des points d'arrêts et points fixes (IFOPT2) , les interfaces avec la billettique et les autres échanges de données envisageables dans les métiers des transports publics (TRANSMODEL). +Ce profil sera sans doute amené à évoluer en fonction des travaux réalisés dans le cadre des travaux de normalisation européens ou internationaux en cours. Ceux-ci touchent tout à la fois la représentation topographique des réseaux de transport, les interfaces entre les données d'exploitation et l'information diffusée vers le voyageur avant et pendant le voyage (NeTEX ), la description des points d'arrêts et points fixes (IFOPT2) , les interfaces avec la billettique et les autres échanges de données envisageables dans les métiers des transports publics (TRANSMODEL). -Le profil d'échange NEPTUNE (PR NF P99-506 Décembre 2009) et donc l'outil CHOUETTE se limitent aux échanges d'information concernant la description " statique " de l'offre TC (réseau, horaires), et ne couvrent pas l'information en temps réel. +Le profil d'échange NEPTUNE (PR NF P99-506 Décembre 2009) et donc l'outil CHOUETTE se limitent aux échanges d'information concernant la description " statique " de l'offre TC (réseau, horaires), et ne couvrent pas l'information en temps réel. diff --git a/app/views/help/restapis.textile b/app/views/help/restapis.textile index ed4aaf3b4..07bfccd93 100644 --- a/app/views/help/restapis.textile +++ b/app/views/help/restapis.textile @@ -5,19 +5,19 @@ title: API Rest h3. Syntaxe -Les différents objets Neptune sont accessibles dans Chouette par l'URL Rest: +Les différents objets Neptune sont accessibles dans Chouette par l'URL Rest: ??[URL_server]/[referential_id]/[Objects]/[id].[format]?? -la liste des objets d'un même type peut être obtenue par l'URL REST : +la liste des objets d'un même type peut être obtenue par l'URL REST : ??[URL_server]/[referential_id]/[Objects].[format]?? -où : +où : * URL_server : l'adresse web d'installation du serveur Chouette -* referential_id: l'identifiant de l'espace de données -* Objects: le type d'objet demandé (au pluriel) +* referential_id: l'identifiant de l'espace de données +* Objects: le type d'objet demandé (au pluriel) ** networks ** lines ** companies ** ... -* id : l'identifiant de l'objet désiré +* id : l'identifiant de l'objet désiré * format : le format de sortie : ** json ** xml diff --git a/app/views/help/routes.textile b/app/views/help/routes.textile index e34ccc162..6397ffe71 100644 --- a/app/views/help/routes.textile +++ b/app/views/help/routes.textile @@ -3,36 +3,36 @@ layout: default title: Séquence d'arrêts --- -h3. Définition +h3. Définition -La séquence d'arrêts est une sélection ordonnée de références aux points d'arrêt (exemple: itinéraires aller et retour d'une ligne). Une séquence d'arrêts est spécifique à une ligne; les séquences d'arrêts peuvent référencer des arrêts communs. +La séquence d'arrêts est une sélection ordonnée de références aux points d'arrêt (exemple: itinéraires aller et retour d'une ligne). Une séquence d'arrêts est spécifique à une ligne; les séquences d'arrêts peuvent référencer des arrêts communs. h3. Attributs -- Nom := nom de la séquence d'arrêts +- Nom := nom de la séquence d'arrêts - Nom public := nom public pour les voyageurs -- Commentaire := zone de texte libre sur le réseau +- Commentaire := zone de texte libre sur le réseau - Direction := orientation principale (points cardinaux, circulaire ou aller/retour) -- Indice := numéro de la séquence d'arrêts +- Indice := numéro de la séquence d'arrêts - Sens := aller ou retour -- Itinéraire associé en sens opposé := référence de l'itinéraire de sens opposé associé +- Itinéraire associé en sens opposé := référence de l'itinéraire de sens opposé associé -p(attr_data). Données de gestion : +p(attr_data). Données de gestion : - Identifiant Neptune := -clé unique pérenne identifiant la séquence d'arrêts pour les échanges Neptune -cet identifiant est composé de 3 parties : préfixe:type:id_technique -* préfixe : clé identifiant un producteur de données unique -* type = Route : clé identifiant le type d'objet (valeur imposée) -* id_technique : valeur identifiant un seul object d'un type donné pour un même producteur -ce champ obligatoire est automatiquement généré s'il n'est pas renseigné -il est possible aussi de ne renseigner que l'identifiant technique auquel cas la valeur sera complétée automatiquement. +clé unique pérenne identifiant la séquence d'arrêts pour les échanges Neptune +cet identifiant est composé de 3 parties : préfixe:type:id_technique +* préfixe : clé identifiant un producteur de données unique +* type = Route : clé identifiant le type d'objet (valeur imposée) +* id_technique : valeur identifiant un seul object d'un type donné pour un même producteur +ce champ obligatoire est automatiquement généré s'il n'est pas renseigné +il est possible aussi de ne renseigner que l'identifiant technique auquel cas la valeur sera complétée automatiquement. =: -- Date de création := date à laquelle l'objet a été créé ou modifié pour la dernière fois -- Version := version de l'objet (auto incrémenté à chaque modification) -- Créé par := compte utilisateur ayant procédé à la dernière modification +- Date de création := date à laquelle l'objet a été créé ou modifié pour la dernière fois +- Version := version de l'objet (auto incrémenté à chaque modification) +- Créé par := compte utilisateur ayant procédé à la dernière modification -h3. Implémentation +h3. Implémentation p. TODO diff --git a/app/views/help/schema.textile b/app/views/help/schema.textile index ffefaa680..1ee7f365d 100644 --- a/app/views/help/schema.textile +++ b/app/views/help/schema.textile @@ -3,4 +3,4 @@ layout: default title: Vue d'ensemble --- -Rédaction ultérieure \ No newline at end of file +Rédaction ultérieure \ No newline at end of file diff --git a/app/views/help/stop_areas.textile b/app/views/help/stop_areas.textile index 3fff6c6e3..2377cfd8d 100644 --- a/app/views/help/stop_areas.textile +++ b/app/views/help/stop_areas.textile @@ -3,87 +3,87 @@ layout: default title: Arrêts --- -* "Définition":#def +* "Définition":#def * "Attributs":#attr -* "Mode opératoire":#ope +* "Mode opératoire":#ope -h3(#def). Définition +h3(#def). Définition -Le référentiel des arrêts constitue un maillon essentiel du réseau, et se compose de plusieurs éléments de niveaux différents. +Le référentiel des arrêts constitue un maillon essentiel du réseau, et se compose de plusieurs éléments de niveaux différents. -On recense tout d'abord les arrêts physiques, qualifiés de *point d'embarquement* ou de *quai*. +On recense tout d'abord les arrêts physiques, qualifiés de *point d'embarquement* ou de *quai*. -Du fait de l'existence de deux concepts dans TRIDENT, cet arrêt physique sera considéré par l'application comme une *zone d'arrêt de premier niveau*. Cette notion est nécessaire pour gérer les *points d'arrêts sur itinéraire* utilisés par certains réseaux. +Du fait de l'existence de deux concepts dans TRIDENT, cet arrêt physique sera considéré par l'application comme une *zone d'arrêt de premier niveau*. Cette notion est nécessaire pour gérer les *points d'arrêts sur itinéraire* utilisés par certains réseaux. -L'application gère ensuite les points d'arrêts sur itinéraire à partir de ces arrêts physiques, en assurant le regroupement des points d'arrêt sur itinéraire dans un arrêt physique (cas de plusieurs lignes passant par le même arrêt physique). +L'application gère ensuite les points d'arrêts sur itinéraire à partir de ces arrêts physiques, en assurant le regroupement des points d'arrêt sur itinéraire dans un arrêt physique (cas de plusieurs lignes passant par le même arrêt physique). -Par la suite, vous pourrez regrouper deux (ou plus) arrêts physiques au sein d'un *arrêt commercial* (par exemple pour regrouper les points d'arrêt physiques correspondant à deux poteaux d'arrêt de la même ligne situés de part et d'autre d'une chaussée mais aussi pour regrouper l'ensemble des points d'arrêt physiques d'un quai de gare routière pour lesquels vous considérez que le temps de correspondance est nul). Vous aurez ainsi constitué une zone d'arrêt, avec qualification arrêt commercial, de deuxième niveau. +Par la suite, vous pourrez regrouper deux (ou plus) arrêts physiques au sein d'un *arrêt commercial* (par exemple pour regrouper les points d'arrêt physiques correspondant à deux poteaux d'arrêt de la même ligne situés de part et d'autre d'une chaussée mais aussi pour regrouper l'ensemble des points d'arrêt physiques d'un quai de gare routière pour lesquels vous considérez que le temps de correspondance est nul). Vous aurez ainsi constitué une zone d'arrêt, avec qualification arrêt commercial, de deuxième niveau. -Enfin, CHOUETTE vous offre la possibilité de regrouper les lieux d'arrêt agglomérés ainsi créés au sein d'une *zone d'arrêt de troisième niveau* pour constituer des *pôles d'échange*. +Enfin, CHOUETTE vous offre la possibilité de regrouper les lieux d'arrêt agglomérés ainsi créés au sein d'une *zone d'arrêt de troisième niveau* pour constituer des *pôles d'échange*. -Ainsi on obtient les possibilités de regroupements suivants: -* un arrêt physique regroupe plusieurs arrêts itinéraire. -* un arrêt commercial regroupe plusieurs arrêts physiques (quai, embarquement). -* un pôle d'échange regroupe plusieurs arrêts commerciaux. +Ainsi on obtient les possibilités de regroupements suivants: +* un arrêt physique regroupe plusieurs arrêts itinéraire. +* un arrêt commercial regroupe plusieurs arrêts physiques (quai, embarquement). +* un pôle d'échange regroupe plusieurs arrêts commerciaux. -Pour ne pas aboutir à un système trop complexe, les règles suivantes sont posées: -* un pôle d'échange peut contenir des arrêts commerciaux et/ou des pôles d'échanges (qui ne peuvent pas en contenir d'autres). -* un arrêt commercial ne peut contenir que des arrêts physiques. +Pour ne pas aboutir à un système trop complexe, les règles suivantes sont posées: +* un pôle d'échange peut contenir des arrêts commerciaux et/ou des pôles d'échanges (qui ne peuvent pas en contenir d'autres). +* un arrêt commercial ne peut contenir que des arrêts physiques. Un dernier regourpement est *l'ITL* : -*L'interdiction de trafic local* est l'interdiction faite à un service routier de prendre et de laisser un même voyageur à l'intérieur du périmètre des transports urbains _(cf. Décret nº49-1473 du 14 novembre 1949)_ . +*L'interdiction de trafic local* est l'interdiction faite à un service routier de prendre et de laisser un même voyageur à l'intérieur du périmètre des transports urbains _(cf. Décret n°49-1473 du 14 novembre 1949)_ . Ainsi dans CHOUETTE: -* Une ITL est un regroupement d'arrêts représentant le périmètre d'interdiction. -* Une ITL est associée à une ou plusieurs lignes +* Une ITL est un regroupement d'arrêts représentant le périmètre d'interdiction. +* Une ITL est associée à une ou plusieurs lignes h3(#attr). Attributs -- Type d'arrêt := catégorie de l'arrêt +- Type d'arrêt := catégorie de l'arrêt * !boardingposition.png! point d'embarquement * !quay.png! quai -* !commercialstoppoint.png! arrêt commercial -* !stopplace.png! pôle d'échange +* !commercialstoppoint.png! arrêt commercial +* !stopplace.png! pôle d'échange * !itl.png! ITL -- Nom := nom de l'arrêt +- Nom := nom de l'arrêt - Commentaire := zone de texte libre -- Point d'intérêt le plus proche := nom du lieu desservi par l'arrêt -- Nom de la rue := nom de la rue de l'arrêt -- Code INSEE := code INSEE de la commune de l'arrêt -- Zone tarifaire := zone de tarification applicable à cet arrêt -- Numéro d'enregistrement := code référençant un arrêt au sein d'une autorité supérieure +- Point d'intérêt le plus proche := nom du lieu desservi par l'arrêt +- Nom de la rue := nom de la rue de l'arrêt +- Code INSEE := code INSEE de la commune de l'arrêt +- Zone tarifaire := zone de tarification applicable à cet arrêt +- Numéro d'enregistrement := code référençant un arrêt au sein d'une autorité supérieure -p(attr_data). Données géographiques : +p(attr_data). Données géographiques : -- Position X := coordonnée horizontale de l'arrêt dans le référentiel de projection de l'espace de données -- Position Y := coordonnée verticale de l'arrêt dans le référentiel de projection de l'espace de données -- Longitude := longitude de l'arrêt dans le référentiel WGS84 -- latitude := latitude de l'arrêt dans le référentiel WGS84 +- Position X := coordonnée horizontale de l'arrêt dans le référentiel de projection de l'espace de données +- Position Y := coordonnée verticale de l'arrêt dans le référentiel de projection de l'espace de données +- Longitude := longitude de l'arrêt dans le référentiel WGS84 +- latitude := latitude de l'arrêt dans le référentiel WGS84 -p(attr_data). Données de gestion : +p(attr_data). Données de gestion : - Identifiant Neptune := -clé unique pérenne identifiant la ligne pour les échanges Neptune -cet identifiant est composé de 3 parties : préfixe:type:id_technique -* préfixe : clé identifiant un producteur de données unique -* type = Line : clé identifiant le type d'objet (valeur imposée) -* id_technique : valeur identifiant un seul object d'un type donné pour un même producteur -ce champ obligatoire est automatiquement généré s'il n'est pas renseigné -il est possible aussi de ne renseigner que l'identifiant technique auquel cas la valeur sera complétée automatiquement. +clé unique pérenne identifiant la ligne pour les échanges Neptune +cet identifiant est composé de 3 parties : préfixe:type:id_technique +* préfixe : clé identifiant un producteur de données unique +* type = Line : clé identifiant le type d'objet (valeur imposée) +* id_technique : valeur identifiant un seul object d'un type donné pour un même producteur +ce champ obligatoire est automatiquement généré s'il n'est pas renseigné +il est possible aussi de ne renseigner que l'identifiant technique auquel cas la valeur sera complétée automatiquement. =: -- Date de création := date à laquelle l'objet a été créé ou modifié pour la dernière fois -- Version := version de l'objet (auto incrémenté à chaque modification) -- Créé par := compte utilisateur ayant procédé à la dernière modification +- Date de création := date à laquelle l'objet a été créé ou modifié pour la dernière fois +- Version := version de l'objet (auto incrémenté à chaque modification) +- Créé par := compte utilisateur ayant procédé à la dernière modification -h3(#ope). Mode opératoire +h3(#ope). Mode opératoire -h4. Déplacement sur la carte +h4. Déplacement sur la carte -* activer le déplacement en cliquant sur l'arrêt -> le curseur prend la forme d'une quadruple flêche -* appuyer sur le bouton gauche de la souris et maintenir appuyer lors du déplacement -> l'arrêt suit la souris -* relacher le bouton -> l'arrêt a une nouvelle position fixe -* cliquer sur la carte -> sortie du mode déplacement; les coordonnées sont actualisées dans le formulaire +* activer le déplacement en cliquant sur l'arrêt -> le curseur prend la forme d'une quadruple flêche +* appuyer sur le bouton gauche de la souris et maintenir appuyer lors du déplacement -> l'arrêt suit la souris +* relacher le bouton -> l'arrêt a une nouvelle position fixe +* cliquer sur la carte -> sortie du mode déplacement; les coordonnées sont actualisées dans le formulaire diff --git a/app/views/help/timetables.textile b/app/views/help/timetables.textile index 6c55e8440..9bd187943 100644 --- a/app/views/help/timetables.textile +++ b/app/views/help/timetables.textile @@ -3,53 +3,53 @@ layout: default title: Calendriers d'application --- -h3. Définition +h3. Définition -Un calendrier d'application permet de définir la période de validité des horaires d'une course. -Les calendriers d'application sont donc définis indépendamment des lignes, à l'instar du référentiel des arrêts. +Un calendrier d'application permet de définir la période de validité des horaires d'une course. +Les calendriers d'application sont donc définis indépendamment des lignes, à l'instar du référentiel des arrêts. -La manière de définir un calendrier d'application est restreinte. -Les calendriers sont caractérisés par : +La manière de définir un calendrier d'application est restreinte. +Les calendriers sont caractérisés par : -* une liste de quantièmes (jours calendaires dans l'année) +* une liste de quantièmes (jours calendaires dans l'année) * une liste de jours d'application (lundis, mardis, etc.) -* une liste de périodes +* une liste de périodes -L'utilisateur doit donc faire attention au nommage de ses différents calendriers d'application. +L'utilisateur doit donc faire attention au nommage de ses différents calendriers d'application. -Plusieurs courses peuvent référencer le même calendrier. +Plusieurs courses peuvent référencer le même calendrier. -Ainsi, il est possible de construire des calendriers d'application qui sont ensuite référencés par des courses de lignes différentes. +Ainsi, il est possible de construire des calendriers d'application qui sont ensuite référencés par des courses de lignes différentes. h3. Attributs - Commentaire := Description du calendrier -- Version := version du calendrier (différent de la version de l'objet) -- Jours d'application := jours de la semaine effectivement applicables dans le cas où des périodes sont définies dans le calendrier -- Périodes d'application := périodes calendaires durant lesquelles le calendrier est applicable +- Version := version du calendrier (différent de la version de l'objet) +- Jours d'application := jours de la semaine effectivement applicables dans le cas où des périodes sont définies dans le calendrier +- Périodes d'application := périodes calendaires durant lesquelles le calendrier est applicable - Dates d'application := -dates spécifiques pour lesquelles le calendrier est applicable; -ces dates peuvent être ajoutées dans ou en dehors des périodes calendaires. +dates spécifiques pour lesquelles le calendrier est applicable; +ces dates peuvent être ajoutées dans ou en dehors des périodes calendaires. Un calendrier peut n'avoir que des dates calendaires, auquel cas les jours d'applications n'ont pas de signification =: -p(attr_data). Données de gestion : +p(attr_data). Données de gestion : - Identifiant Neptune := -clé unique pérenne identifiant le réseau pour les échanges Neptune -cet identifiant est composé de 3 parties : préfixe:type:id_technique - -* préfixe : clé identifiant un producteur de données unique -* type = Timetable : clé identifiant le type d'objet (valeur imposée) -* id_technique : valeur identifiant un seul object d'un type donné pour un même producteur -ce champ obligatoire est automatiquement généré s'il n'est pas renseigné -il est possible aussi de ne renseigner que l'identifiant technique auquel cas la valeur sera complétée automatiquement. +clé unique pérenne identifiant le réseau pour les échanges Neptune +cet identifiant est composé de 3 parties : préfixe:type:id_technique + +* préfixe : clé identifiant un producteur de données unique +* type = Timetable : clé identifiant le type d'objet (valeur imposée) +* id_technique : valeur identifiant un seul object d'un type donné pour un même producteur +ce champ obligatoire est automatiquement généré s'il n'est pas renseigné +il est possible aussi de ne renseigner que l'identifiant technique auquel cas la valeur sera complétée automatiquement. =: -- Date de création := date à laquelle l'objet a été créé ou modifié pour la dernière fois -- Version := version de l'objet (auto incrémenté à chaque modification) -- Créé par := compte utilisateur ayant procédé à la dernière modification +- Date de création := date à laquelle l'objet a été créé ou modifié pour la dernière fois +- Version := version de l'objet (auto incrémenté à chaque modification) +- Créé par := compte utilisateur ayant procédé à la dernière modification -h3. Implémentation +h3. Implémentation p. TODO diff --git a/app/views/help/toc.textile b/app/views/help/toc.textile index 2c2bd096c..ca5a282fd 100644 --- a/app/views/help/toc.textile +++ b/app/views/help/toc.textile @@ -5,21 +5,21 @@ title: Sommaire h3. Sommaire -# "Généralités":introduction +# "Généralités":introduction ## "Normalisation":normalisation ## "Documentation":documentation ## "Vue d'ensemble":schema -# "Espaces de données":dataspaces -# "Réseaux":networks +# "Espaces de données":dataspaces +# "Réseaux":networks # "Transporteurs":companies # "Lignes":lines -## "Séquences d'arrêts":routes +## "Séquences d'arrêts":routes ## "Missions":journeypatterns ## "Courses/Horaires":vehiclejourneys -# "Arrêts":stop_areas +# "Arrêts":stop_areas ## "Correspondances":connection_links -## Accès -## Liaisons Arrêt-Accès +## Accès +## Liaisons Arrêt-Accès # "Calendriers d'application":timetables # Outils ## Imports diff --git a/app/views/help/vehiclejourneys.textile b/app/views/help/vehiclejourneys.textile index 84547ebe7..a2f611dc9 100644 --- a/app/views/help/vehiclejourneys.textile +++ b/app/views/help/vehiclejourneys.textile @@ -3,35 +3,35 @@ layout: default title: Courses --- -h3. Définition +h3. Définition -Une course décrit le déplacement d'un véhicule de transport public sur une séquence d'arrêts de la ligne. La course parcourt les arrêts de la séquence d'arrêts dans l'ordre, sans nécessairement s'arrêter à chacun des arrêts. A chaque arrêt desservi, la course précise l'horaire de passage. -De plus, la course est rattachée à un nombre variable de calendriers d'application. +Une course décrit le déplacement d'un véhicule de transport public sur une séquence d'arrêts de la ligne. La course parcourt les arrêts de la séquence d'arrêts dans l'ordre, sans nécessairement s'arrêter à chacun des arrêts. A chaque arrêt desservi, la course précise l'horaire de passage. +De plus, la course est rattachée à un nombre variable de calendriers d'application. h3. Attributs - Nom := nom de la course - Nom public := nom public pour les voyageurs - Commentaire := zone de texte libre -- Mode de transport := mode de transport pour la course; par défaut, c'est le mode de transport de la ligne qui est appliqué -- Particularité := champs libre pouvant préciser des modes de fonctionnement (TAD par exemple) +- Mode de transport := mode de transport pour la course; par défaut, c'est le mode de transport de la ligne qui est appliqué +- Particularité := champs libre pouvant préciser des modes de fonctionnement (TAD par exemple) -p(attr_data). Données de gestion : +p(attr_data). Données de gestion : - Identifiant Neptune := -clé unique pérenne identifiant la course pour les échanges Neptune -cet identifiant est composé de 3 parties : préfixe:type:id_technique -* préfixe : clé identifiant un producteur de données unique -* type = VehicleJourney : clé identifiant le type d'objet (valeur imposée) -* id_technique : valeur identifiant un seul object d'un type donné pour un même producteur -ce champ obligatoire est automatiquement généré s'il n'est pas renseigné -il est possible aussi de ne renseigner que l'identifiant technique auquel cas la valeur sera complétée automatiquement. +clé unique pérenne identifiant la course pour les échanges Neptune +cet identifiant est composé de 3 parties : préfixe:type:id_technique +* préfixe : clé identifiant un producteur de données unique +* type = VehicleJourney : clé identifiant le type d'objet (valeur imposée) +* id_technique : valeur identifiant un seul object d'un type donné pour un même producteur +ce champ obligatoire est automatiquement généré s'il n'est pas renseigné +il est possible aussi de ne renseigner que l'identifiant technique auquel cas la valeur sera complétée automatiquement. =: -- Date de création := date à laquelle l'objet a été créé ou modifié pour la dernière fois -- Version := version de l'objet (auto incrémenté à chaque modification) -- Créé par := compte utilisateur ayant procédé à la dernière modification +- Date de création := date à laquelle l'objet a été créé ou modifié pour la dernière fois +- Version := version de l'objet (auto incrémenté à chaque modification) +- Créé par := compte utilisateur ayant procédé à la dernière modification -h3. Implémentation +h3. Implémentation p. TODO diff --git a/app/views/layouts/_user_links.erb b/app/views/layouts/_user_links.erb index cef586598..aa70e8c18 100644 --- a/app/views/layouts/_user_links.erb +++ b/app/views/layouts/_user_links.erb @@ -15,7 +15,7 @@ <% if user_signed_in? %>
  • |
  • - <%= link_to help_path , :target => "help" do %> + <%= link_to help_path , :target => "chouette_help" do %> <%= t('layouts.help') %> <% end %>
  • diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index a03a7a8cc..aebbc9f04 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -23,10 +23,8 @@
    <% if selected_referential? %>

    <%= @referential.name %>

    - <% elsif help_page? %> + <% elsif help_page? || test_sheet_page? %>

    Guide d'utilisation

    - <% elsif test_sheet_page? %> -

    Description des tests de validation

    <% end %>
    @@ -35,12 +33,11 @@
      - <% if help_page? %> -
    • <%= link_to "Aide", help_path, :class => "current" %>
    • - <% elsif test_sheet_page? %> -
    • <%= link_to "Tests", test_sheet_path+"1.1", :class => "current" %>
    • + <% if help_page? || test_sheet_page? %> +
    • <%= link_to "Aide", help_path, :class =>("current" if help_page?) %>
    • +
    • <%= link_to "Tests de validation", test_sheet_path+"1.1", :class =>("current" if test_sheet_page?) %>
    • <% elsif ! selected_referential? %> -
    • <%= link_to Referential.model_name.human.capitalize.pluralize, referentials_path, :class => ("current" if current_page?(referentials_path)) %>
    • +
    • <%= link_to Referential.model_name.human.capitalize.pluralize, referentials_path, :class => ("current" if current_page?(referentials_path) || current_page?(root_url)) %>
    • <%= tab_link_to FileValidation, file_validations_path %>
    • <% else %>
    • <%= link_to t("layouts.tabs.dashboard"), referential_path(@referential), :class => ("current" if current_page?(referential_path(@referential))) %>
    • diff --git a/app/views/test_sheet/toc.html b/app/views/test_sheet/toc.html index b65a18833..23ccdfcaf 100644 --- a/app/views/test_sheet/toc.html +++ b/app/views/test_sheet/toc.html @@ -1,56 +1,56 @@ -h3. Définition des tests +h3. Définition des tests -# Catégorie 1 -## Fiche 1.1 -## Fiche 1.2 -# Catégorie 2 -## Fiche 2.1 -## Fiche 2.2 -## Fiche 2.3 -## Fiche 2.4 -## Fiche 2.5 -## Fiche 2.6 -## Fiche 2.7 -## Fiche 2.8 -## Fiche 2.9 -## Fiche 2.10 -## Fiche 2.11 -## Fiche 2.12 -## Fiche 2.13 -## Fiche 2.14 -## Fiche 2.15 -## Fiche 2.16 -## Fiche 2.17 -## Fiche 2.18 -## Fiche 2.19 -## Fiche 2.20 -## Fiche 2.21 -## Fiche 2.22 -## Fiche 2.23 -## Fiche 2.24 -## Fiche 2.25 -## Fiche 2.26 -## Fiche 2.27 -## Fiche 2.28 -# Catégorie 3 -## Fiche 3.1 -## Fiche 3.2 -## Fiche 3.3 -## Fiche 3.4 -## Fiche 3.5 -## Fiche 3.6 -## Fiche 3.7 -## Fiche 3.8 -## Fiche 3.9 -## Fiche 3.10 -## Fiche 3.11 -## Fiche 3.12 -## Fiche 3.13 -## Fiche 3.14 -## Fiche 3.15 -## Fiche 3.16 -## Fiche 3.17 -## Fiche 3.18 -## Fiche 3.19 -## Fiche 3.20 -## Fiche 3.21 +* Catégorie 1 +** "Fiche 1.1":1.1 +** "Fiche 1.2":1.2 +* Catégorie 2 +** "Fiche 2.1":2.1 +** "Fiche 2.2":2.2 +** "Fiche 2.3":2.3 +** "Fiche 2.4":2.4 +** "Fiche 2.5":2.5 +** "Fiche 2.6":2.6 +** "Fiche 2.7":2.7 +** "Fiche 2.8":2.8 +** "Fiche 2.9":2.9 +** "Fiche 2.10":2.10 +** "Fiche 2.11":2.11 +** "Fiche 2.12":2.12 +** "Fiche 2.13":2.13 +** "Fiche 2.14":2.14 +** "Fiche 2.15":2.15 +** "Fiche 2.16":2.16 +** "Fiche 2.17":2.17 +** "Fiche 2.18":2.18 +** "Fiche 2.19":2.19 +** "Fiche 2.20":2.20 +** "Fiche 2.21":2.21 +** "Fiche 2.22":2.22 +** "Fiche 2.23":2.23 +** "Fiche 2.24":2.24 +** "Fiche 2.25":2.25 +** "Fiche 2.26":2.26 +** "Fiche 2.27":2.27 +** "Fiche 2.28":2.28 +* Catégorie 3 +** "Fiche 3.1":3.1 +** "Fiche 3.2":3.2 +** "Fiche 3.3":3.3 +** "Fiche 3.4":3.4 +** "Fiche 3.5":3.5 +** "Fiche 3.6":3.6 +** "Fiche 3.7":3.7 +** "Fiche 3.8":3.8 +** "Fiche 3.9":3.9 +** "Fiche 3.10":3.10 +** "Fiche 3.11":3.11 +** "Fiche 3.12":3.12 +** "Fiche 3.13":3.13 +** "Fiche 3.14":3.14 +** "Fiche 3.15":3.15 +** "Fiche 3.16":3.16 +** "Fiche 3.17":3.17 +** "Fiche 3.18":3.18 +** "Fiche 3.19":3.19 +** "Fiche 3.20":3.20 +** "Fiche 3.21":3.21 -- cgit v1.2.3 From ab123be8d9f909b46de5e0f049eb49a8f4c6183c Mon Sep 17 00:00:00 2001 From: Alban Peignier Date: Thu, 5 Jul 2012 18:40:41 +0200 Subject: Upgrade Rails to 3.2.6. Refs #91 --- Gemfile | 11 ++- Gemfile.lock | 117 +++++++++++++++---------------- app/controllers/stop_areas_controller.rb | 3 - app/models/export.rb | 5 +- app/models/import.rb | 8 +-- app/models/referential.rb | 2 +- config/database.yml | 2 +- config/environments/development.rb | 4 ++ config/environments/test.rb | 3 + db/schema.rb | 29 ++------ lib/tasks/assets.rake | 4 +- lib/tasks/warbler.rake | 7 +- spec/models/export_spec.rb | 1 + spec/models/import_spec.rb | 4 +- 14 files changed, 91 insertions(+), 109 deletions(-) diff --git a/Gemfile b/Gemfile index b58de2e41..fc99efba0 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,6 @@ source 'http://rubygems.org' -gem 'rails', '3.1.3' +gem 'rails', '3.2.6' gem 'devise' gem "ffi-proj4", :git => 'git://github.com/dryade/ffi-proj4.git' @@ -22,8 +22,7 @@ end gem "map_layers", "~> 0.0.4" gem "georuby-ext", :git => 'git://github.com/dryade/georuby-ext.git' -#gem 'user_interface', :git => 'git://github.com/dryade/user-interface.git' -gem 'user_interface', :git => 'git://sim.dryade.priv/user_interface' +gem 'user_interface', :git => 'git://sim.dryade.priv/user_interface' #, :path => '~/Projects/UserInterfaceDryade' gem 'json' gem 'cocoon' gem 'formtastic' @@ -39,15 +38,15 @@ gem "acts_as_tree", :git => "git://github.com/dryade/acts_as_tree.git" gem 'ninoxe', :git => 'git://chouette.dryade.priv/ninoxe' #, :path => '~/Projects/Ninoxe' gem 'acts_as_list', '0.1.6' -gem 'composite_primary_keys', '4.1.2' +#gem 'composite_primary_keys', '~> 5.0.8' gem 'delayed_job_active_record' gem 'apartment',:git => 'git://github.com/dryade/apartment.git' # Gems used only for assets and not required # in production environments by default. group :assets do - gem 'sass-rails', '= 3.1.4' - gem 'coffee-rails', '~> 3.1.1' + gem 'sass-rails', '~> 3.2.3' + gem 'coffee-rails', '~> 3.2.1' gem 'coffee-script-source' gem 'uglifier', '>= 1.0.3' gem 'therubyrhino', :platform => :jruby diff --git a/Gemfile.lock b/Gemfile.lock index 562e905ec..60277beeb 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,14 +1,14 @@ GIT remote: git://chouette.dryade.priv/ninoxe - revision: a8067d3063e01019d6599489781eb6ec4415890c + revision: 49ca25a1cb40534346e5d439144fdaae4a13dc21 specs: ninoxe (0.0.8) GeoRuby - activerecord (~> 3.1.3) + activerecord (> 3.1.3) acts_as_list (= 0.1.6) - composite_primary_keys (= 4.1.2) + composite_primary_keys (> 4.1.2) geokit - rails (= 3.1.3) + rails (> 3.1.3) GIT remote: git://github.com/dnagir/database_cleaner.git @@ -69,10 +69,10 @@ GIT GIT remote: git://sim.dryade.priv/user_interface - revision: 5302812852d2bd28ae29e49bc0d64a3bfb61fbc9 + revision: 6931e642037ffef9d3818669a5f5167a0298b30b specs: user_interface (0.0.1) - rails (~> 3.1.0) + rails (> 3.1.0) GEM remote: http://rubygems.org/ @@ -81,40 +81,39 @@ GEM RedCloth (4.2.9) RedCloth (4.2.9-java) SyslogLogger (1.4.1) - actionmailer (3.1.3) - actionpack (= 3.1.3) - mail (~> 2.3.0) - actionpack (3.1.3) - activemodel (= 3.1.3) - activesupport (= 3.1.3) + actionmailer (3.2.6) + actionpack (= 3.2.6) + mail (~> 2.4.4) + actionpack (3.2.6) + activemodel (= 3.2.6) + activesupport (= 3.2.6) builder (~> 3.0.0) erubis (~> 2.7.0) - i18n (~> 0.6) - rack (~> 1.3.5) - rack-cache (~> 1.1) - rack-mount (~> 0.8.2) + journey (~> 1.0.1) + rack (~> 1.4.0) + rack-cache (~> 1.2) rack-test (~> 0.6.1) - sprockets (~> 2.0.3) - activemodel (3.1.3) - activesupport (= 3.1.3) + sprockets (~> 2.1.3) + activemodel (3.2.6) + activesupport (= 3.2.6) builder (~> 3.0.0) - i18n (~> 0.6) - activerecord (3.1.3) - activemodel (= 3.1.3) - activesupport (= 3.1.3) - arel (~> 2.2.1) + activerecord (3.2.6) + activemodel (= 3.2.6) + activesupport (= 3.2.6) + arel (~> 3.0.2) tzinfo (~> 0.3.29) activerecord-jdbcsqlite3-adapter (1.2.1) activerecord-jdbc-adapter (~> 1.2.1) jdbc-sqlite3 (~> 3.7.2) - activeresource (3.1.3) - activemodel (= 3.1.3) - activesupport (= 3.1.3) - activesupport (3.1.3) + activeresource (3.2.6) + activemodel (= 3.2.6) + activesupport (= 3.2.6) + activesupport (3.2.6) + i18n (~> 0.6) multi_json (~> 1.0) acts_as_list (0.1.6) addressable (2.2.8) - arel (2.2.3) + arel (3.0.2) bcrypt-ruby (3.0.1) bcrypt-ruby (3.0.1-java) bouncy-castle-java (1.5.0146.1) @@ -137,15 +136,15 @@ GEM childprocess (0.3.2) ffi (~> 1.0.6) cocoon (1.0.22) - coffee-rails (3.1.1) + coffee-rails (3.2.2) coffee-script (>= 2.2.0) - railties (~> 3.1.0) + railties (~> 3.2.0) coffee-script (2.2.0) coffee-script-source execjs coffee-script-source (1.3.3) - composite_primary_keys (4.1.2) - activerecord (~> 3.1) + composite_primary_keys (5.0.8) + activerecord (~> 3.2.0) delayed_job (3.0.3) activesupport (~> 3.0) delayed_job_active_record (0.3.2) @@ -187,6 +186,7 @@ GEM has_scope (~> 0.5.0) responders (~> 0.6) jdbc-postgres (9.0.801) + journey (1.0.4) jquery-rails (1.0.19) railties (~> 3.0) thor (~> 0.14) @@ -212,7 +212,7 @@ GEM rb-fchange (~> 0.0.5) rb-fsevent (~> 0.9.1) rb-inotify (~> 0.8.8) - mail (2.3.3) + mail (2.4.4) i18n (>= 0.4.0) mime-types (~> 1.16) treetop (~> 1.4.8) @@ -234,30 +234,28 @@ GEM polyamorous (0.5.0) activerecord (~> 3.0) polyglot (0.3.3) - rack (1.3.6) + rack (1.4.1) rack-cache (1.2) rack (>= 0.4) - rack-mount (0.8.3) - rack (>= 1.0.0) rack-ssl (1.3.2) rack rack-test (0.6.1) rack (>= 1.0) - rails (3.1.3) - actionmailer (= 3.1.3) - actionpack (= 3.1.3) - activerecord (= 3.1.3) - activeresource (= 3.1.3) - activesupport (= 3.1.3) + rails (3.2.6) + actionmailer (= 3.2.6) + actionpack (= 3.2.6) + activerecord (= 3.2.6) + activeresource (= 3.2.6) + activesupport (= 3.2.6) bundler (~> 1.0) - railties (= 3.1.3) - railties (3.1.3) - actionpack (= 3.1.3) - activesupport (= 3.1.3) + railties (= 3.2.6) + railties (3.2.6) + actionpack (= 3.2.6) + activesupport (= 3.2.6) rack-ssl (~> 1.3.2) rake (>= 0.8.7) rdoc (~> 3.4) - thor (~> 0.14.6) + thor (>= 0.14.6, < 2.0) rake (0.9.2.2) ransack (0.6.0) actionpack (~> 3.0) @@ -296,13 +294,11 @@ GEM railties (>= 3.0) rspec (~> 2.10.0) rubyzip (0.9.8) - sass (3.1.19) - sass-rails (3.1.4) - actionpack (~> 3.1.0) - railties (~> 3.1.0) - sass (>= 3.1.4) - sprockets (~> 2.0.0) - tilt (~> 1.3.2) + sass (3.1.20) + sass-rails (3.2.5) + railties (~> 3.2.0) + sass (>= 3.1.10) + tilt (~> 1.3) selenium-webdriver (2.22.2) childprocess (>= 0.2.5) ffi (~> 1.0) @@ -313,7 +309,7 @@ GEM shoulda-matchers (1.1.0) activesupport (>= 3.0.0) spoon (0.0.1) - sprockets (2.0.4) + sprockets (2.1.3) hike (~> 1.2) rack (~> 1.0) tilt (~> 1.1, != 1.3.0) @@ -325,7 +321,7 @@ GEM therubyracer (0.10.1) libv8 (~> 3.3.10) therubyrhino (1.73.4) - thor (0.14.6) + thor (0.15.4) tilt (1.3.3) treetop (1.4.10) polyglot @@ -361,9 +357,8 @@ DEPENDENCIES capistrano-ext capybara cocoon - coffee-rails (~> 3.1.1) + coffee-rails (~> 3.2.1) coffee-script-source - composite_primary_keys (= 4.1.2) database_cleaner! delayed_job_active_record devise @@ -383,13 +378,13 @@ DEPENDENCIES modernizr-rails (~> 2.0.6) ninoxe! pg (~> 0.11.0) - rails (= 3.1.3) + rails (= 3.2.6) ransack remarkable (~> 4.0.0.alpha4) remarkable_activerecord (~> 4.0.0.alpha4) rspec rspec-rails - sass-rails (= 3.1.4) + sass-rails (~> 3.2.3) shoulda! sqlite3 squeel diff --git a/app/controllers/stop_areas_controller.rb b/app/controllers/stop_areas_controller.rb index 71fa602cc..8d68fd1d5 100644 --- a/app/controllers/stop_areas_controller.rb +++ b/app/controllers/stop_areas_controller.rb @@ -68,9 +68,6 @@ class StopAreasController < ChouetteController alias_method :stop_area, :resource def map - ENV.each do |key, value| - Rails.logger.info "ENV['#{key}'] = '#{value}'" - end @map = StopAreaMap.new(stop_area).with_helpers(self) end diff --git a/app/models/export.rb b/app/models/export.rb index 401541a13..a83d89958 100644 --- a/app/models/export.rb +++ b/app/models/export.rb @@ -25,10 +25,6 @@ class Export < ActiveRecord::Base exporter ||= ::Chouette::Exporter.new(referential.slug) end - def options - read_attribute(:options) || write_attribute(:options, {}) - end - @@root = "#{Rails.root}/tmp/exports" cattr_accessor :root @@ -63,6 +59,7 @@ class Export < ActiveRecord::Base before_validation :define_default_attributes, :on => :create def define_default_attributes self.status ||= "pending" + self.options ||= {} end after_create :delayed_export diff --git a/app/models/import.rb b/app/models/import.rb index 662fe4a84..db59b41ac 100644 --- a/app/models/import.rb +++ b/app/models/import.rb @@ -17,18 +17,14 @@ class Import < ActiveRecord::Base name = name.to_s define_method(name) do - self.options[name] + self.options and self.options[name] end define_method("#{name}=") do |prefix| - self.options[name] = prefix + (self.options ||= {})[name] = prefix end end - def options - read_attribute(:options) || write_attribute(:options, {}) - end - def self.types # if Rails.env.development? and subclasses.blank? # Dir[File.expand_path("../*_import.rb", __FILE__)].each do |f| diff --git a/app/models/referential.rb b/app/models/referential.rb index 639e4de12..35d4e9141 100644 --- a/app/models/referential.rb +++ b/app/models/referential.rb @@ -68,7 +68,7 @@ end Rails.application.config.after_initialize do Chouette::ActiveRecord - puts "patch Chouette::ActiveRecord (#{__FILE__})" + class Chouette::ActiveRecord def referential diff --git a/config/database.yml b/config/database.yml index 599c581da..0c5c4ba6e 100644 --- a/config/database.yml +++ b/config/database.yml @@ -22,7 +22,7 @@ test: password: chouette production: - adapter: jdbcpostgresql + adapter: <%= RUBY_PLATFORM == "java" ? "jdbcpostgresql" : "postgresql" %> database: chouette2 encoding: utf8 host: localhost diff --git a/config/environments/development.rb b/config/environments/development.rb index 73606fc10..f4936039b 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -28,6 +28,10 @@ ChouetteIhm::Application.configure do # Expands the lines which load the assets config.assets.debug = false + config.active_record.mass_assignment_sanitizer = :strict + + config.active_record.auto_explain_threshold_in_seconds = (RUBY_PLATFORM == "java" ? nil : 0.5) + config.action_mailer.default_url_options = { :host => 'localhost:3000' } config.to_prepare do diff --git a/config/environments/test.rb b/config/environments/test.rb index b2c29057b..2d2e45717 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -24,6 +24,9 @@ ChouetteIhm::Application.configure do # Disable request forgery protection in test environment config.action_controller.allow_forgery_protection = false +# Raise exception on mass assignment protection for Active Record models + config.active_record.mass_assignment_sanitizer = :strict + # Tell Action Mailer not to deliver emails to the real world. # The :test delivery method accumulates sent emails in the # ActionMailer::Base.deliveries array. diff --git a/db/schema.rb b/db/schema.rb index c9fbc3ec1..93b26a89f 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -176,8 +176,6 @@ ActiveRecord::Schema.define(:version => 20120620081755) do t.integer "choice_code" end - add_index "facilities_features", ["facility_id"], :name => "idx_facility_id" - create_table "file_validation_log_messages", :force => true do |t| t.integer "file_validation_id" t.string "key" @@ -192,7 +190,7 @@ ActiveRecord::Schema.define(:version => 20120620081755) do create_table "file_validations", :force => true do |t| t.string "status" - t.string "options" + t.string "options", :limit => 2000 t.string "file_name" t.string "file_type" t.datetime "created_at" @@ -211,13 +209,10 @@ ActiveRecord::Schema.define(:version => 20120620081755) do add_index "group_of_lines", ["objectid"], :name => "group_of_lines_objectid_key", :unique => true create_table "group_of_lines_lines", :id => false, :force => true do |t| - t.integer "group_of_line_id", :limit => 8, :null => false - t.integer "line_id", :limit => 8, :null => false + t.integer "group_of_line_id", :limit => 8 + t.integer "line_id", :limit => 8 end - add_index "group_of_lines_lines", ["group_of_line_id"], :name => "idx_grli_gr" - add_index "group_of_lines_lines", ["line_id"], :name => "idx_grli_li" - create_table "import_log_messages", :force => true do |t| t.integer "import_id" t.string "key" @@ -259,11 +254,10 @@ ActiveRecord::Schema.define(:version => 20120620081755) do add_index "journey_patterns", ["objectid"], :name => "journey_patterns_objectid_key", :unique => true create_table "journey_patterns_stop_points", :id => false, :force => true do |t| - t.integer "journey_pattern_id", :limit => 8, :null => false - t.integer "stop_point_id", :limit => 8, :null => false + t.integer "journey_pattern_id", :limit => 8 + t.integer "stop_point_id", :limit => 8 end - add_index "journey_patterns_stop_points", ["journey_pattern_id"], :name => "idx_jpsp_jpid" add_index "journey_patterns_stop_points", ["journey_pattern_id"], :name => "index_journey_pattern_id_on_journey_patterns_stop_points" create_table "lines", :force => true do |t| @@ -281,7 +275,6 @@ ActiveRecord::Schema.define(:version => 20120620081755) do t.string "comment" t.boolean "mobility_restricted_suitability" t.integer "int_user_needs" - t.integer "ptnetwork_id", :limit => 8 end add_index "lines", ["objectid"], :name => "lines_objectid_key", :unique => true @@ -327,7 +320,6 @@ ActiveRecord::Schema.define(:version => 20120620081755) do t.datetime "updated_at" t.string "prefix" t.string "projection_type" - t.string "bounding_box", :limit => nil t.string "time_zone" end @@ -353,9 +345,6 @@ ActiveRecord::Schema.define(:version => 20120620081755) do t.integer "line_id", :limit => 8 end - add_index "routing_constraints_lines", ["line_id"], :name => "idx_rcli_li" - add_index "routing_constraints_lines", ["stop_area_id"], :name => "idx_rcli_st" - create_table "stop_areas", :force => true do |t| t.integer "parent_id", :limit => 8 t.string "objectid", :null => false @@ -442,8 +431,8 @@ ActiveRecord::Schema.define(:version => 20120620081755) do add_index "time_tables", ["objectid"], :name => "time_tables_objectid_key", :unique => true create_table "time_tables_vehicle_journeys", :id => false, :force => true do |t| - t.integer "time_table_id", :limit => 8, :null => false - t.integer "vehicle_journey_id", :limit => 8, :null => false + t.integer "time_table_id", :limit => 8 + t.integer "vehicle_journey_id", :limit => 8 end add_index "time_tables_vehicle_journeys", ["time_table_id"], :name => "index_time_tables_vehicle_journeys_on_time_table_id" @@ -477,12 +466,8 @@ ActiveRecord::Schema.define(:version => 20120620081755) do t.time "waiting_time" t.time "elapse_duration" t.time "headway_frequency" - t.integer "position", :limit => 8 - t.boolean "is_departure", :default => false - t.boolean "is_arrival", :default => false end - add_index "vehicle_journey_at_stops", ["stop_point_id"], :name => "index_vehicle_journey_at_stops_on_stop_point_id" add_index "vehicle_journey_at_stops", ["stop_point_id"], :name => "index_vehicle_journey_at_stops_on_stop_pointid" add_index "vehicle_journey_at_stops", ["vehicle_journey_id"], :name => "index_vehicle_journey_at_stops_on_vehicle_journey_id" diff --git a/lib/tasks/assets.rake b/lib/tasks/assets.rake index 251348b9e..1147b52da 100644 --- a/lib/tasks/assets.rake +++ b/lib/tasks/assets.rake @@ -1,6 +1,6 @@ namespace :assets do task :environment do - puts "Sprockets::Bootstrap workaround (#{__FILE__})" - Sprockets::Bootstrap.new(Rails.application).run if Rails.application.assets.paths.empty? + # puts "Sprockets::Bootstrap workaround (#{__FILE__})" + # Sprockets::Bootstrap.new(Rails.application).run if Rails.application.assets.paths.empty? end end diff --git a/lib/tasks/warbler.rake b/lib/tasks/warbler.rake index 11aa26155..e69457583 100644 --- a/lib/tasks/warbler.rake +++ b/lib/tasks/warbler.rake @@ -1,7 +1,12 @@ begin require 'warbler' Warbler::Task.new - task :war => "assets:precompile" + + task "war:setup" do + ENV['RAILS_RELATIVE_URL_ROOT'] ||= "/chouette2" + end + + task :war => ["war:setup", "assets:precompile"] rescue LoadError => e puts "Failed to load Warbler. Make sure it's installed." end diff --git a/spec/models/export_spec.rb b/spec/models/export_spec.rb index 4e6a748ed..10fcf4b69 100644 --- a/spec/models/export_spec.rb +++ b/spec/models/export_spec.rb @@ -38,6 +38,7 @@ describe Export do describe "#options" do it "should be empty by default" do + puts subject.options.class subject.options.should be_empty end diff --git a/spec/models/import_spec.rb b/spec/models/import_spec.rb index f0a66eb4d..205489717 100644 --- a/spec/models/import_spec.rb +++ b/spec/models/import_spec.rb @@ -36,8 +36,8 @@ describe Import do describe "#options" do - it "should be empty by default" do - subject.options.should be_empty + it "should be nil by default" do + subject.options.should be_nil end end -- cgit v1.2.3 From 8052f392196759cfd5f86419cf84528e8f0c1ab1 Mon Sep 17 00:00:00 2001 From: Michel Etienne Date: Fri, 6 Jul 2012 09:17:02 +0200 Subject: add validity period to dashboard --- app/assets/stylesheets/referentials.css.scss | 6 +++- app/models/test_sheet_page.rb | 46 ++++++++++++------------ app/views/referentials/show.html.erb | 54 +++++++++++++++++++++++----- config/locales/referentials.yml | 8 +++++ 4 files changed, 82 insertions(+), 32 deletions(-) diff --git a/app/assets/stylesheets/referentials.css.scss b/app/assets/stylesheets/referentials.css.scss index 26d0411ba..fe38f4f81 100644 --- a/app/assets/stylesheets/referentials.css.scss +++ b/app/assets/stylesheets/referentials.css.scss @@ -12,12 +12,16 @@ border: 1px solid #61970b; padding-left: 5px; padding-right: 5px; + height: 30px; } .count thead td { background: #61970b; color: white; } - .value { + .count td.image { + padding-left: 25px; + } + .count td.value { text-align: right; } diff --git a/app/models/test_sheet_page.rb b/app/models/test_sheet_page.rb index a57a37595..da808f411 100644 --- a/app/models/test_sheet_page.rb +++ b/app/models/test_sheet_page.rb @@ -17,28 +17,30 @@ class TestSheetPage def load self.content = File.read(filename) - # workaround for special chars - self.content = self.content.gsub('é','é') - self.content = self.content.gsub('è','è') - self.content = self.content.gsub('à','à') - self.content = self.content.gsub('ù','ù') - self.content = self.content.gsub('É','É') - self.content = self.content.gsub('È','È') - self.content = self.content.gsub('Ê','Ê') - self.content = self.content.gsub('À','À') - self.content = self.content.gsub('Ù','Ù') - self.content = self.content.gsub('â','â') - self.content = self.content.gsub('ê','ê') - self.content = self.content.gsub('ô','ô') - self.content = self.content.gsub('î','î') - self.content = self.content.gsub('û','û') - self.content = self.content.gsub('ë','ëc;') - self.content = self.content.gsub('ï','ï') - self.content = self.content.gsub('ç','ç') - self.content = self.content.gsub('oe','œ') - self.content = self.content.gsub('<<','«') - self.content = self.content.gsub('>>','»') - self.content = self.content.gsub('°','º') + if self.slug == 'toc' + # workaround for special chars + self.content = self.content.gsub('é','é') + self.content = self.content.gsub('è','è') + self.content = self.content.gsub('à','à') + self.content = self.content.gsub('ù','ù') + self.content = self.content.gsub('É','É') + self.content = self.content.gsub('È','È') + self.content = self.content.gsub('Ê','Ê') + self.content = self.content.gsub('À','À') + self.content = self.content.gsub('Ù','Ù') + self.content = self.content.gsub('â','â') + self.content = self.content.gsub('ê','ê') + self.content = self.content.gsub('ô','ô') + self.content = self.content.gsub('î','î') + self.content = self.content.gsub('û','û') + self.content = self.content.gsub('ë','ëc;') + self.content = self.content.gsub('ï','ï') + self.content = self.content.gsub('ç','ç') + self.content = self.content.gsub('oe','œ') + self.content = self.content.gsub('<<','«') + self.content = self.content.gsub('>>','»') + self.content = self.content.gsub('°','º') + end end def method_missing(method, *arguments) diff --git a/app/views/referentials/show.html.erb b/app/views/referentials/show.html.erb index 59beb0c3f..f6c9522ce 100644 --- a/app/views/referentials/show.html.erb +++ b/app/views/referentials/show.html.erb @@ -17,38 +17,74 @@ <%= @referential.time_zone %>

      +

      + + <% if Chouette::TimeTable.start_validity_period.nil? %> + <%= Referential.human_attribute_name("no_validity_period") %> + <% else %> + <%= Referential.human_attribute_name("start_validity_period") %> + <%= l Chouette::TimeTable.start_validity_period %> + <%= Referential.human_attribute_name("end_validity_period") %> + <%= l Chouette::TimeTable.end_validity_period %> + <% end %> +

      - + - + - + - + - + + + + + + + - - + + - - + + + + + + + + + + + + + +
      <%= t(".objects") %><%= t(".objects") %> <%= t(".count") %>
      <%= Referential.human_attribute_name("networks") %><%= Referential.human_attribute_name("networks") %> <%= @referential.networks.size %>
      <%= Referential.human_attribute_name("lines") %><%= Referential.human_attribute_name("lines") %> <%= @referential.lines.size %>
      <%= Referential.human_attribute_name("companies") %><%= Referential.human_attribute_name("companies") %> <%= @referential.companies.size %>
      <%= Referential.human_attribute_name("stop_areas") %><%= Referential.human_attribute_name("time_tables") %> <%= @referential.time_tables.size %> +
      <%= Referential.human_attribute_name("connection_links") %> <%= @referential.connection_links.size %> +
      <%= Referential.human_attribute_name("stop_areas") %> <%= @referential.stop_areas.size %>
      <%= Referential.human_attribute_name("time_tables") %> <%= @referential.time_tables.size %> + <%= image_tag "map/boarding_position.png"%><%= Referential.human_attribute_name("boarding_positions") %> <%= @referential.stop_areas.where("area_type = ?","BoardingPosition").size %>
      <%= Referential.human_attribute_name("connection_links") %> <%= @referential.connection_links.size %> + <%= image_tag "map/quay.png"%><%= Referential.human_attribute_name("quays") %> <%= @referential.stop_areas.where("area_type = ?","Quay").size %> +
      <%= image_tag "map/commercial_stop_point.png"%><%= Referential.human_attribute_name("commercial_stops") %> <%= @referential.stop_areas.where("area_type = ?","CommercialStopPoint").size %> +
      <%= image_tag "map/stop_place.png"%><%= Referential.human_attribute_name("stop_places") %> <%= @referential.stop_areas.where("area_type = ?","StopPlace").size %> +
      <%= image_tag "map/itl.png"%><%= Referential.human_attribute_name("itls") %> <%= @referential.stop_areas.where("area_type = ?","ITL").size %>
      diff --git a/config/locales/referentials.yml b/config/locales/referentials.yml index 379e00fc7..feaca8082 100644 --- a/config/locales/referentials.yml +++ b/config/locales/referentials.yml @@ -24,6 +24,10 @@ en: prefix: Neptune Object Id prefix projection_type: Optional spatial reference system code (SRID) time_zone: time zone + validity_period: Validity period + no_validity_period: undefined + start_validity_period: from + end_validity_period: to networks: Networks lines: Lines companies: Companies @@ -68,6 +72,10 @@ fr: prefix: Préfixe des identifiants Neptune projection_type: Système de référence spatiale optionnel (SRID) time_zone: Fuseau horaire + validity_period: Période de validité + no_validity_period: non définie + start_validity_period: du + end_validity_period: au networks: Réseaux lines: Lignes companies: Transporteurs -- cgit v1.2.3 From 58a44e57f989f6467e43f28f472ca5511550aa37 Mon Sep 17 00:00:00 2001 From: Michel Etienne Date: Fri, 6 Jul 2012 10:03:55 +0200 Subject: synchro Gemfile.github --- Gemfile.github | 12 ++++++------ Gemfile.lock | 8 ++++---- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Gemfile.github b/Gemfile.github index b2c77f9aa..8501a21c3 100644 --- a/Gemfile.github +++ b/Gemfile.github @@ -1,6 +1,6 @@ source 'http://rubygems.org' -gem 'rails', '3.1.3' +gem 'rails', '3.2.6' gem 'devise' gem "ffi-proj4", :git => 'git://github.com/dryade/ffi-proj4.git' @@ -22,7 +22,7 @@ end gem "map_layers", "~> 0.0.4" gem "georuby-ext", :git => 'git://github.com/dryade/georuby-ext.git' -gem 'user_interface', :git => 'git://github.com/dryade/user-interface.git' +gem 'user_interface', :git => 'git://github.com/dryade/user-interface' gem 'json' gem 'cocoon' gem 'formtastic' @@ -35,18 +35,18 @@ gem 'jquery-rails' gem "modernizr-rails", "~> 2.0.6" gem "acts_as_tree", :git => "git://github.com/dryade/acts_as_tree.git" -gem 'ninoxe', :git => 'git://github.com/ninoxe.git' +gem 'ninoxe', :git => 'git://github.com/dryade/ninoxe.git' gem 'acts_as_list', '0.1.6' -gem 'composite_primary_keys', '4.1.2' +#gem 'composite_primary_keys', '~> 5.0.8' gem 'delayed_job_active_record' gem 'apartment',:git => 'git://github.com/dryade/apartment.git' # Gems used only for assets and not required # in production environments by default. group :assets do - gem 'sass-rails', '= 3.1.4' - gem 'coffee-rails', '~> 3.1.1' + gem 'sass-rails', '~> 3.2.3' + gem 'coffee-rails', '~> 3.2.1' gem 'coffee-script-source' gem 'uglifier', '>= 1.0.3' gem 'therubyrhino', :platform => :jruby diff --git a/Gemfile.lock b/Gemfile.lock index 60277beeb..f7298e6f3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,14 +1,14 @@ GIT remote: git://chouette.dryade.priv/ninoxe - revision: 49ca25a1cb40534346e5d439144fdaae4a13dc21 + revision: 34f3b94569b35d8ce51e2b036c12e067e2222eec specs: ninoxe (0.0.8) GeoRuby - activerecord (> 3.1.3) + activerecord (>= 3.1.3) acts_as_list (= 0.1.6) - composite_primary_keys (> 4.1.2) + composite_primary_keys (>= 4.1.2) geokit - rails (> 3.1.3) + rails (>= 3.1.3) GIT remote: git://github.com/dnagir/database_cleaner.git -- cgit v1.2.3 From cff05ff56a421f612091394f3a6e9cdb24fb93a5 Mon Sep 17 00:00:00 2001 From: Michel Etienne Date: Fri, 6 Jul 2012 10:15:38 +0200 Subject: passage command en 2.0.0.2 --- config/environments/production.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/environments/production.rb b/config/environments/production.rb index 19568bcb7..b3e0c7ce0 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -65,7 +65,7 @@ ChouetteIhm::Application.configure do config.action_mailer.default_url_options = { :host => 'chouette.dryade.net/chouette2' } config.to_prepare do - Chouette::Command.command = "/usr/local/opt/chouette-command/chouette-gui-2.0.0/chouette" + Chouette::Command.command = "/usr/local/opt/chouette-command/chouette-gui-2.0.0.2/chouette" Import.root = "/var/lib/chouette/imports" Export.root = "/var/lib/chouette/exports" FileValidation.root = "/var/lib/chouette/validations" -- cgit v1.2.3 From 3a291e506dd0d5c9fedc83b97948dbaf1c42d8fe Mon Sep 17 00:00:00 2001 From: Michel Etienne Date: Fri, 6 Jul 2012 15:00:11 +0200 Subject: github integration --- Gemfile | 6 +++-- Gemfile.github | 81 ---------------------------------------------------------- Gemfile.lock | 36 +++++++++++++------------- 3 files changed, 22 insertions(+), 101 deletions(-) delete mode 100644 Gemfile.github diff --git a/Gemfile b/Gemfile index fc99efba0..839b57c7a 100644 --- a/Gemfile +++ b/Gemfile @@ -22,7 +22,8 @@ end gem "map_layers", "~> 0.0.4" gem "georuby-ext", :git => 'git://github.com/dryade/georuby-ext.git' -gem 'user_interface', :git => 'git://sim.dryade.priv/user_interface' #, :path => '~/Projects/UserInterfaceDryade' +gem 'user_interface', :git => 'git://github.com/dryade/user-interface.git' +#gem 'user_interface', :git => 'git://sim.dryade.priv/user_interface' #, :path => '~/Projects/UserInterfaceDryade' gem 'json' gem 'cocoon' gem 'formtastic' @@ -35,7 +36,8 @@ gem 'jquery-rails' gem "modernizr-rails", "~> 2.0.6" gem "acts_as_tree", :git => "git://github.com/dryade/acts_as_tree.git" -gem 'ninoxe', :git => 'git://chouette.dryade.priv/ninoxe' #, :path => '~/Projects/Ninoxe' +gem 'ninoxe', :git => 'git://github.com/dryade/ninoxe.git' +#gem 'ninoxe', :git => 'git://chouette.dryade.priv/ninoxe' #, :path => '~/Projects/Ninoxe' gem 'acts_as_list', '0.1.6' #gem 'composite_primary_keys', '~> 5.0.8' diff --git a/Gemfile.github b/Gemfile.github deleted file mode 100644 index 8501a21c3..000000000 --- a/Gemfile.github +++ /dev/null @@ -1,81 +0,0 @@ -source 'http://rubygems.org' - -gem 'rails', '3.2.6' -gem 'devise' - -gem "ffi-proj4", :git => 'git://github.com/dryade/ffi-proj4.git' - -platforms :jruby do - gem 'activerecord-jdbcpostgresql-adapter', :git => 'git://github.com/dryade/activerecord-jdbc-adapter.git' - gem 'activerecord-jdbcsqlite3-adapter' - gem 'jruby-openssl' - gem "jruby-rack-worker" - gem 'warbler' - gem "jruby-rack-worker" -end - -platforms :ruby do - gem 'pg', '~> 0.11.0' - gem 'sqlite3' -end - -gem "map_layers", "~> 0.0.4" -gem "georuby-ext", :git => 'git://github.com/dryade/georuby-ext.git' - -gem 'user_interface', :git => 'git://github.com/dryade/user-interface' -gem 'json' -gem 'cocoon' -gem 'formtastic' -gem 'inherited_resources' -gem 'will_paginate', '~> 3.0' -gem 'ransack' -gem 'squeel' -gem 'RedCloth' -gem 'jquery-rails' -gem "modernizr-rails", "~> 2.0.6" - -gem "acts_as_tree", :git => "git://github.com/dryade/acts_as_tree.git" -gem 'ninoxe', :git => 'git://github.com/dryade/ninoxe.git' -gem 'acts_as_list', '0.1.6' - -#gem 'composite_primary_keys', '~> 5.0.8' -gem 'delayed_job_active_record' -gem 'apartment',:git => 'git://github.com/dryade/apartment.git' - -# Gems used only for assets and not required -# in production environments by default. -group :assets do - gem 'sass-rails', '~> 3.2.3' - gem 'coffee-rails', '~> 3.2.1' - gem 'coffee-script-source' - gem 'uglifier', '>= 1.0.3' - gem 'therubyrhino', :platform => :jruby - gem 'therubyracer', :platform => :ruby -end - -group :development do - gem 'capistrano' - gem 'capistrano-ext' - gem 'guard' - gem 'guard-rspec' -end - -group :test, :development do - gem "rspec" - gem "rspec-rails" - gem "remarkable", "~> 4.0.0.alpha4" - gem "remarkable_activerecord", "~> 4.0.0.alpha4" - gem "shoulda", :git => 'git://github.com/thoughtbot/shoulda.git' -end - -group :test do - gem 'capybara' - gem 'launchy' - gem 'database_cleaner', :git => 'git://github.com/dnagir/database_cleaner.git', :branch => 'postgre_jruby_issue' - gem 'factory_girl_rails', '1.7' -end - -group :production do - gem "SyslogLogger" -end - diff --git a/Gemfile.lock b/Gemfile.lock index f7298e6f3..3a446184e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,15 +1,3 @@ -GIT - remote: git://chouette.dryade.priv/ninoxe - revision: 34f3b94569b35d8ce51e2b036c12e067e2222eec - specs: - ninoxe (0.0.8) - GeoRuby - activerecord (>= 3.1.3) - acts_as_list (= 0.1.6) - composite_primary_keys (>= 4.1.2) - geokit - rails (>= 3.1.3) - GIT remote: git://github.com/dnagir/database_cleaner.git revision: 0c0aa44f13ae392000a6f506b62d5d1602cb4e53 @@ -60,20 +48,32 @@ GIT rgeo (~> 0.3.13) GIT - remote: git://github.com/thoughtbot/shoulda.git - revision: 269edccc7df8f2eb94a96a6a6d248a5960d7fe1f + remote: git://github.com/dryade/ninoxe.git + revision: 34f3b94569b35d8ce51e2b036c12e067e2222eec specs: - shoulda (3.0.1) - shoulda-context (~> 1.0) - shoulda-matchers (~> 1.0) + ninoxe (0.0.8) + GeoRuby + activerecord (>= 3.1.3) + acts_as_list (= 0.1.6) + composite_primary_keys (>= 4.1.2) + geokit + rails (>= 3.1.3) GIT - remote: git://sim.dryade.priv/user_interface + remote: git://github.com/dryade/user-interface.git revision: 6931e642037ffef9d3818669a5f5167a0298b30b specs: user_interface (0.0.1) rails (> 3.1.0) +GIT + remote: git://github.com/thoughtbot/shoulda.git + revision: 269edccc7df8f2eb94a96a6a6d248a5960d7fe1f + specs: + shoulda (3.0.1) + shoulda-context (~> 1.0) + shoulda-matchers (~> 1.0) + GEM remote: http://rubygems.org/ specs: -- cgit v1.2.3 From 25cda96edddc62186236f37db3daef79b068491e Mon Sep 17 00:00:00 2001 From: Michel Etienne Date: Fri, 6 Jul 2012 15:12:37 +0200 Subject: return to dryade --- Gemfile | 8 ++++---- Gemfile.lock | 36 ++++++++++++++++++------------------ 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/Gemfile b/Gemfile index 839b57c7a..d012d1d8f 100644 --- a/Gemfile +++ b/Gemfile @@ -22,8 +22,8 @@ end gem "map_layers", "~> 0.0.4" gem "georuby-ext", :git => 'git://github.com/dryade/georuby-ext.git' -gem 'user_interface', :git => 'git://github.com/dryade/user-interface.git' -#gem 'user_interface', :git => 'git://sim.dryade.priv/user_interface' #, :path => '~/Projects/UserInterfaceDryade' +#gem 'user_interface', :git => 'git://github.com/dryade/user-interface.git' +gem 'user_interface', :git => 'git://sim.dryade.priv/user_interface' #, :path => '~/Projects/UserInterfaceDryade' gem 'json' gem 'cocoon' gem 'formtastic' @@ -36,8 +36,8 @@ gem 'jquery-rails' gem "modernizr-rails", "~> 2.0.6" gem "acts_as_tree", :git => "git://github.com/dryade/acts_as_tree.git" -gem 'ninoxe', :git => 'git://github.com/dryade/ninoxe.git' -#gem 'ninoxe', :git => 'git://chouette.dryade.priv/ninoxe' #, :path => '~/Projects/Ninoxe' +#gem 'ninoxe', :git => 'git://github.com/dryade/ninoxe.git' +gem 'ninoxe', :git => 'git://chouette.dryade.priv/ninoxe' #, :path => '~/Projects/Ninoxe' gem 'acts_as_list', '0.1.6' #gem 'composite_primary_keys', '~> 5.0.8' diff --git a/Gemfile.lock b/Gemfile.lock index 3a446184e..f7298e6f3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,3 +1,15 @@ +GIT + remote: git://chouette.dryade.priv/ninoxe + revision: 34f3b94569b35d8ce51e2b036c12e067e2222eec + specs: + ninoxe (0.0.8) + GeoRuby + activerecord (>= 3.1.3) + acts_as_list (= 0.1.6) + composite_primary_keys (>= 4.1.2) + geokit + rails (>= 3.1.3) + GIT remote: git://github.com/dnagir/database_cleaner.git revision: 0c0aa44f13ae392000a6f506b62d5d1602cb4e53 @@ -48,32 +60,20 @@ GIT rgeo (~> 0.3.13) GIT - remote: git://github.com/dryade/ninoxe.git - revision: 34f3b94569b35d8ce51e2b036c12e067e2222eec + remote: git://github.com/thoughtbot/shoulda.git + revision: 269edccc7df8f2eb94a96a6a6d248a5960d7fe1f specs: - ninoxe (0.0.8) - GeoRuby - activerecord (>= 3.1.3) - acts_as_list (= 0.1.6) - composite_primary_keys (>= 4.1.2) - geokit - rails (>= 3.1.3) + shoulda (3.0.1) + shoulda-context (~> 1.0) + shoulda-matchers (~> 1.0) GIT - remote: git://github.com/dryade/user-interface.git + remote: git://sim.dryade.priv/user_interface revision: 6931e642037ffef9d3818669a5f5167a0298b30b specs: user_interface (0.0.1) rails (> 3.1.0) -GIT - remote: git://github.com/thoughtbot/shoulda.git - revision: 269edccc7df8f2eb94a96a6a6d248a5960d7fe1f - specs: - shoulda (3.0.1) - shoulda-context (~> 1.0) - shoulda-matchers (~> 1.0) - GEM remote: http://rubygems.org/ specs: -- cgit v1.2.3 From 9848694c64bf7e7183d23b8adce92a80fa0155b4 Mon Sep 17 00:00:00 2001 From: Alban Peignier Date: Fri, 6 Jul 2012 16:22:15 +0200 Subject: Use shoulda-matchers (instead of shoudla) --- Gemfile | 2 +- Gemfile.lock | 11 +---------- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/Gemfile b/Gemfile index d012d1d8f..986e81a1d 100644 --- a/Gemfile +++ b/Gemfile @@ -67,7 +67,7 @@ group :test, :development do gem "rspec-rails" gem "remarkable", "~> 4.0.0.alpha4" gem "remarkable_activerecord", "~> 4.0.0.alpha4" - gem "shoulda", :git => 'git://github.com/thoughtbot/shoulda.git' + gem "shoulda-matchers" end group :test do diff --git a/Gemfile.lock b/Gemfile.lock index f7298e6f3..b5fc3e90e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -59,14 +59,6 @@ GIT json_pure rgeo (~> 0.3.13) -GIT - remote: git://github.com/thoughtbot/shoulda.git - revision: 269edccc7df8f2eb94a96a6a6d248a5960d7fe1f - specs: - shoulda (3.0.1) - shoulda-context (~> 1.0) - shoulda-matchers (~> 1.0) - GIT remote: git://sim.dryade.priv/user_interface revision: 6931e642037ffef9d3818669a5f5167a0298b30b @@ -305,7 +297,6 @@ GEM libwebsocket (~> 0.1.3) multi_json (~> 1.0) rubyzip - shoulda-context (1.0.0) shoulda-matchers (1.1.0) activesupport (>= 3.0.0) spoon (0.0.1) @@ -385,7 +376,7 @@ DEPENDENCIES rspec rspec-rails sass-rails (~> 3.2.3) - shoulda! + shoulda-matchers sqlite3 squeel therubyracer -- cgit v1.2.3