diff options
34 files changed, 3 insertions, 2663 deletions
diff --git a/app/controllers/compliance_check_tasks_controller.rb b/app/controllers/compliance_check_tasks_controller.rb deleted file mode 100644 index c2995c94d..000000000 --- a/app/controllers/compliance_check_tasks_controller.rb +++ /dev/null @@ -1,49 +0,0 @@ -class ComplianceCheckTasksController < ChouetteController - defaults :resource_class => ComplianceCheckTask - - respond_to :html, :only => [:new, :create] - respond_to :js, :only => [:new, :create] - - belongs_to :referential - - def new - begin - new! - rescue Ievkit::Error, Faraday::Error => error - logger.error("Iev failure : #{error.message}") - flash[:error] = t(error.locale_for_error) - redirect_to referential_path(@referential) - end - end - - def create - begin - create! do |success, failure| - success.html { redirect_to referential_compliance_checks_path(@referential) } - end - rescue Ievkit::Error, Faraday::Error => error - logger.error("Iev failure : #{error.message}") - flash[:error] = t(error.locale_for_error) - redirect_to referential_path(@referential) - end - end - - def references - references_type = params[:filter].pluralize - references = @referential.send(references_type).where("name ilike ?", "%#{params[:q]}%").select("id, name") - puts references.inspect - respond_to do |format| - format.json do - render :json => references.collect { |child| { :id => child.id, :name => child.name } } - end - end - end - - protected - - def build_resource - @compliance_check_task ||= ComplianceCheckTask.new( params[:compliance_check_task] || {} ) - end - - -end diff --git a/app/controllers/compliance_checks_controller.rb b/app/controllers/compliance_checks_controller.rb index 2d67aae98..07438cf99 100644 --- a/app/controllers/compliance_checks_controller.rb +++ b/app/controllers/compliance_checks_controller.rb @@ -1,87 +1,4 @@ -require 'will_paginate/array' - class ComplianceChecksController < ChouetteController - defaults :resource_class => ComplianceCheck - - respond_to :html, :js - respond_to :zip, :only => :export - belongs_to :referential - - def index - begin - index! do - build_breadcrumb :index - end - rescue Ievkit::Error, Faraday::Error => error - logger.error("Iev failure : #{error.message}") - flash[:error] = t(error.locale_for_error) - redirect_to referential_path(@referential) - end - end - - def show - begin - show! do |format| - build_breadcrumb :show - end - rescue Ievkit::Error, Faraday::Error => error - logger.error("Iev failure : #{error.message}") - flash[:error] = t(error.locale_for_error) - redirect_to referential_path(@referential) - end - end - - def report - resource - build_breadcrumb :report - end - - def references - @references = referential.send(params[:type]).where("name ilike ?", "%#{params[:q]}%") - respond_to do |format| - format.json do - render json: @references.collect { |child| { id: child.id, name: child.name } } - end - end - end - - def rule_parameter_set - begin - @rule_parameter_set = resource.rule_parameter_set - build_breadcrumb :rule_parameter_set - render "rule_parameter_sets/show" - rescue Ievkit::Error, Faraday::Error => error - logger.error("Iev failure : #{error.message}") - flash[:error] = t(error.locale_for_error) - redirect_to referential_path(@referential) - end - end - - def export - respond_to do |format| - format.zip { send_file ComplianceCheckExport.new(resource, @referential.id, request).export, :type => :zip } - end - end - - protected - - alias_method :compliance_check, :resource - - def compliance_check_service - ComplianceCheckService.new(@referential) - end - - def resource - @compliance_check ||= compliance_check_service.find(params[:id]) - @line_items = @compliance_check.report.line_items - if @line_items.size > 500 - @line_items = @line_items.paginate(page: params[:page], per_page: 20) - end - @compliance_check - end - def collection - @compliance_checks ||= compliance_check_service.all.sort_by{ |compliance_check| compliance_check.created_at }.reverse.paginate(:page => params[:page]) - end end diff --git a/app/helpers/compliance_check_tasks_helper.rb b/app/helpers/compliance_check_tasks_helper.rb deleted file mode 100644 index 5ba8bdc46..000000000 --- a/app/helpers/compliance_check_tasks_helper.rb +++ /dev/null @@ -1,11 +0,0 @@ -module ComplianceCheckTasksHelper - - def button_link_class( compliance_check_task ) - if compliance_check_task.any_error_severity_failure? || compliance_check_task.status == "failed" - "btn-danger" - else - "btn-default" - end - end - -end diff --git a/app/helpers/compliance_checks_helper.rb b/app/helpers/compliance_checks_helper.rb deleted file mode 100644 index d7e42e187..000000000 --- a/app/helpers/compliance_checks_helper.rb +++ /dev/null @@ -1,96 +0,0 @@ -# -*- coding: utf-8 -*- -module ComplianceChecksHelper - - def fields_for_compliance_check_format(form) - begin - render :partial => compliance_check_partial_name(form), :locals => { :form => form } - rescue ActionView::MissingTemplate - "" - end - end - - def compliance_check_partial_name(form) - "fields_#{form.object.format.underscore}_compliance_check" - end - - def compliance_icon( compliance_check) - return nil unless compliance_check.compliance_check_validation_report - compliance_check.compliance_check_validation_report.tap do |cct| - if cct.failed? || cct.any_error_severity_failure? - return 'icons/link_page_alert.png' - else - return 'icons/link_page.png' - end - end - end - - def status_icon( compliance_check_result_status, compliance_check_result_severity ) - if compliance_check_result_status == "uncheck" - ("<i class='fa fa-ban status_" + compliance_check_result_status + "_" + compliance_check_result_severity + "'></i>").html_safe - elsif compliance_check_result_status == "ok" - ("<i class='fa fa-check status_" + compliance_check_result_status + "_" + compliance_check_result_severity + "'></i>").html_safe - else - ("<i class='fa fa-times status_" + compliance_check_result_status + "_" + compliance_check_result_severity + "'></i>").html_safe - end - end - - def test_definition (compliance_check_result_code) - Rails.application.config.validation_spec + I18n.locale.to_s + "/" + compliance_check_result_code +".html" - end - - def object_url (referential_id, error) - location = "/referentials/" + referential_id.to_s - object_path = error[:source].object_path - if object_path.first[:type] == "vehicle_journey" - object_path.delete_at 1 - end - - types, identifiers = object_path.reverse.map { |resource| [ resource[:type], resource[:id] ] }.transpose - - method_name = (['referential'] + types + ['path']).join('_') - identifiers.unshift referential_id - - return send method_name, *identifiers - end - - def object_labels_hash (error) - ### THE error HASH STRUCTURE - # 1. error[:source] - # 0..1 file - # 1 filename - # 0..1 line_number - # 0..1 column_number - # 0..1 objectid - # 0..1 label - # 0.. object_path - # 1 type - # 1 id - # 0.. error[:target] - # 0..1 error[:error_value] - # 0..1 error[:reference_value] - object_labels_hash = Hash.new - object_labels_hash[:source_objectid] = error[:source].objectid if error[:source].objectid.present? - object_labels_hash[:source_label] = error[:source].label if error[:source].label.present? - if error[:source].file.present? - object_labels_hash[:filename] = error[:source].file.filename - object_labels_hash[:line_number] = error[:source].file.line_number if error[:source].file.line_number.present? - object_labels_hash[:column_number] = error[:source].file.column_number if error[:source].file.column_number.present? - end - - if error[:target].present? - error[:target].each_with_index do |target, index| - object_labels_hash["target_#{index}_objectid".to_sym] = target[:objectid] if target[:objectid] - object_labels_hash["target_#{index}_label".to_sym] = target[:label] if target[:label] - end - end - if error[:error_value].present? - object_labels_hash[:error_value] = error[:error_value] - end - if error[:reference_value].present? - object_labels_hash[:reference_value] = error[:reference_value] - end - return object_labels_hash - end - - -end diff --git a/app/models/compliance_check.rb b/app/models/compliance_check.rb index d3e4054a6..a9dbc4211 100644 --- a/app/models/compliance_check.rb +++ b/app/models/compliance_check.rb @@ -1,58 +1,3 @@ class ComplianceCheck - include JobConcern - def initialize( response ) - @datas = response - end - - def report? - links["action_report"].present? - end - - def report - Rails.cache.fetch("#{cache_key}/action_report", expires_in: cache_expiration) do - if report_path = links["action_report"] - ComplianceCheckReport.new Ievkit.get(report_path) - end - end - end - - def compliance_check_validation_report? - links["validation_report"].present? - end - - def compliance_check_validation_report - Rails.cache.fetch("#{cache_key}/validation_report", expires_in: cache_expiration) do - if report_path = links["validation_report"] - ComplianceCheckResult.new Ievkit.get(report_path) - end - end - end - - def rule_parameter_set? - links["validation_params"].present? - end - - def rule_parameter_set - Rails.cache.fetch("#{cache_key}/validation_params", expires_in: cache_expiration) do - if rule_parameter_set_path = links["validation_params"] - response = Ievkit.get(rule_parameter_set_path) - RuleParameterSet.new(name: '', compliance_check: self).tap do |rps| - rps.parameters = response.validation - end - end - end - end - - def destroy - if delete_path = links["delete"] - Ievkit.delete(delete_path) - elsif cancel_path = links["cancel"] - Ievkit.delete(cancel_path) - end - end - - def format - datas.type - end end diff --git a/app/models/compliance_check_export.rb b/app/models/compliance_check_export.rb deleted file mode 100644 index 95abb3b27..000000000 --- a/app/models/compliance_check_export.rb +++ /dev/null @@ -1,56 +0,0 @@ -require 'tempfile' - -class ComplianceCheckExport - include ERB::Util - include ComplianceChecksHelper - - require 'zip' - - attr_accessor :template, :detailed_errors_template, :request - attr_reader :compliance_check - - def initialize(compliance_check, referential_id, request) - @request = request - @compliance_check = compliance_check - @referential_id = referential_id - @template = File.open('app/views/compliance_checks/summary_errors_index.csv.erb' ) { |f| f.read } - @detailed_errors_template = File.open('app/views/compliance_checks/detailed_errors_index.csv.erb' ) { |f| f.read } - end - - def export - begin - Dir.mktmpdir("#{I18n.t('compliance_check_results.file.zip_name_prefix')}_#{@referential_id}_#{@compliance_check.id}_", Dir.tmpdir) { |temp_dir| - - File.open(temp_dir + "/#{I18n.t('compliance_check_results.file.summary_errors_file_prefix')}" , "a:utf-8") do |f| - f.write("\ufeff") - f.write(render) - f.flush - end - - File.open(temp_dir + "/#{I18n.t('compliance_check_results.file.detailed_errors_file_prefix')}" , "a:utf-8") do |f| - f.write("\ufeff") - f.write(detailed_errors_render) - f.flush - end - - zip_file = Tempfile.new(["#{I18n.t('compliance_check_results.file.zip_name_prefix')}_#{@referential_id}_#{@compliance_check.id}_", ".zip"]) - - ::Zip::File.open(zip_file.path, ::Zip::File::CREATE) do |zipfile| - Dir[File.join(temp_dir, '*.csv')].each do |f| - zipfile.add(File.basename(f), f) - end - end - return zip_file - } - end - end - - def render() - ERB.new(@template).result(binding) - end - - def detailed_errors_render() - ERB.new(@detailed_errors_template).result(binding) - end - -end diff --git a/app/models/compliance_check_report.rb b/app/models/compliance_check_report.rb deleted file mode 100644 index 94deb8cc9..000000000 --- a/app/models/compliance_check_report.rb +++ /dev/null @@ -1,9 +0,0 @@ -class ComplianceCheckReport - include ReportConcern - - def initialize( response ) - @datas = response.action_report - end - -end - diff --git a/app/models/compliance_check_result.rb b/app/models/compliance_check_result.rb index cd956a021..06f8649f5 100644 --- a/app/models/compliance_check_result.rb +++ b/app/models/compliance_check_result.rb @@ -1,76 +1,3 @@ class ComplianceCheckResult - extend ActiveModel::Naming - extend ActiveModel::Translation - include ActiveModel::Model - - attr_accessor :datas - - def initialize(response) - @datas = response.validation_report - end - - def tests? - datas.tests? - end - - def ok_error - all('ok', 'error') - end - - def nok_error - all('nok', 'error') - end - - def na_error - all('uncheck', 'error') - end - - def ok_warning - all('ok', 'warning') - end - - def nok_warning - all('nok', 'warning') - end - - def na_warning - all('uncheck', 'warning') - end - - def all(status, severity) - tests? ? tests.select { |test| test.result == status.downcase && test.severity == severity.downcase } : [] - end - - def tests - @tests ||= tests? ? datas.tests.map{ |test| Test.new(test) } : [] - end - - class Test - attr_reader :options - - def initialize( options ) - @options = options - end - - def test_id - options.test_id if options.test_id? - end - - def severity - options.severity.downcase if options.severity? - end - - def result - options.result.downcase if options.result? - end - - def errors - options.errors if options.errors? - end - - def error_count - options.error_count if options.error_count? - end - end end diff --git a/app/models/compliance_check_service.rb b/app/models/compliance_check_service.rb deleted file mode 100644 index c27f36894..000000000 --- a/app/models/compliance_check_service.rb +++ /dev/null @@ -1,23 +0,0 @@ -class ComplianceCheckService - - attr_reader :referential - - def initialize(referential) - @referential = referential - end - - # Find a validation whith this id - def find(id) - ComplianceCheck.new(Ievkit.scheduled_job(referential.slug, id, { :action => "validator" })) - end - - # Find all validations - def all - [].tap do |jobs| - Ievkit.jobs(referential.slug, { :action => "validator" }).each do |job| - jobs << ComplianceCheck.new(job) - end - end - end - -end diff --git a/app/models/compliance_check_task.rb b/app/models/compliance_check_task.rb deleted file mode 100644 index da0508cbf..000000000 --- a/app/models/compliance_check_task.rb +++ /dev/null @@ -1,114 +0,0 @@ -class ComplianceCheckTask - extend Enumerize - extend ActiveModel::Naming - extend ActiveModel::Translation - extend ActiveModel::Callbacks - include ActiveModel::Validations - include ActiveModel::Conversion - - enumerize :references_type, in: %w( network line company group_of_line ) - attr_accessor :rule_parameter_set_id, :referential_id, :user_id, :user_name, :name, :references_type, :reference_ids - - validates_presence_of :referential_id, :user_id, :user_name, :name - - def initialize( params = {} ) - params.each {|k,v| send("#{k}=",v)} - end - - def referential - Referential.find(referential_id) - end - - def organisation - referential.organisation - end - - def rule_parameter_set - organisation.rule_parameter_sets.find(rule_parameter_set_id) if rule_parameter_set_id.present? - end - - def save - if valid? - # Call Iev Server - begin - Ievkit.create_job( referential.slug, "validator", "", { - :file1 => params_io, - } ) - rescue Exception => exception - raise exception - end - true - else - false - end - end - - def self.references_types - self.references_type.values - end - - def params - {}.tap do |h| - h["parameters"] = validation_params ? action_params.merge(validation_params) : action_params - end - end - - def action_params - { - "validate" => { - "name" => name, - "references_type" => references_type, - "reference_ids" => reference_ids, - "user_name" => user_name, - "organisation_name" => organisation.name, - "referential_name" => referential.name, - } - - } - end - - def validation_params - { - "validation" => rule_parameter_set.parameters - } if rule_parameter_set.present? - end - - def self.data_formats - self.data_format.values - end - - def params_io - file = StringIO.new( params.to_json ) - Faraday::UploadIO.new(file, "application/json", "parameters.json") - end - - def transport_data_io - file = File.new(saved_resources_path, "r") - if file_extname == ".zip" - Faraday::UploadIO.new(file, "application/zip", original_filename ) - elsif file_extname == ".xml" - Faraday::UploadIO.new(file, "application/xml", original_filename ) - end - end - - def save_resources - FileUtils.mkdir_p root - FileUtils.cp resources.path, saved_resources_path - end - - def delete_resources - FileUtils.rm saved_resources_path if File.exists? saved_resources_path - end - - def original_filename - resources.original_filename - end - - def file_extname - File.extname(resources.original_filename) - end - - def saved_resources_path - "#{root}/#{Time.now.to_i}#{file_extname}" - end -end diff --git a/app/models/concerns/report_concern.rb b/app/models/concerns/report_concern.rb deleted file mode 100644 index f195f8f36..000000000 --- a/app/models/concerns/report_concern.rb +++ /dev/null @@ -1,170 +0,0 @@ -module ReportConcern - extend ActiveSupport::Concern - extend ActiveModel::Naming - extend ActiveModel::Translation - include ActiveModel::Model - - included do - attr_reader :datas - end - - module ClassMethods - end - - delegate :progression?, :progression, :zip_file, :stats, to: :datas - - def failure_code? - datas.result == "NOK" && datas.failure? - end - - def failure_code - datas.failure.code.downcase if failure_code? - end - - def percentage(a, b) - (a.to_f / b.to_f * 100).round(0) - end - - def level_progress - percentage( progression.current_step, progression.steps_count) if progression? - end - - def last_step - datas.progression.steps.last if progression? - end - - def current_step - datas.progression.steps[ progression.current_step - 1] - end - - def step_progress - percentage( current_step.realized, current_step.total ) - end - - def step_progress_name - return last_step.step if progression.current_step == progression.steps_count - - current_step.step - end - - def files - @files ||= datas.files || [] - end - - def error_files - files.select{ |file| file[:status] == "ERROR"} - end - - def ignored_files - files.select{ |file| file[:status] == "IGNORED"} - end - - def ok_files - files.select{ |file| file[:status] == "OK"} - end - - def line_items - @line_items ||= [].tap do |line_items| - datas.lines.each do |line| - line_items << LineItem.new(line) - end if datas.lines? - end - end - - def saved_lines - line_items.map(&:status).count(true) - end - - def unsaved_lines - line_items.map(&:status).count(false) - end - - def lines - stats.present? ? stats.line_count : 0 - end - - def routes - stats.present? ? stats.route_count : 0 - end - - def connection_links - stats.present? ? stats.connection_link_count : 0 - end - - def time_tables - stats.present? ? stats.time_table_count : 0 - end - - def stop_areas - stats.present? ? stats.stop_area_count : 0 - end - - def access_points - stats.present? ? stats.access_point_count : 0 - end - - def vehicle_journeys - stats.present? ? stats.vehicle_journey_count : 0 - end - - def journey_patterns - stats.present? ? stats.journey_pattern_count : 0 - end - - class LineItem - attr_reader :options - - def initialize( options ) - @options = options - end - - def name - @name ||= options.name if options.name? - end - - def stats - @stats ||= options.stats if options.stats? - end - - def status - @status ||= if options.status? - if %w{ok warning}.include? options.status.downcase - true - else - false - end - else - false - end - end - - def routes - stats ? stats.route_count : 0 - end - - def connection_links - stats ? stats.connection_link_count : 0 - end - - def time_tables - stats ? stats.time_table_count : 0 - end - - def stop_areas - stats ? stats.stop_area_count : 0 - end - - def access_points - stats ? stats.access_point_count : 0 - end - - def vehicle_journeys - stats ? stats.vehicle_journey_count : 0 - end - - def journey_patterns - stats ? stats.journey_pattern_count : 0 - end - - end -end diff --git a/app/views/compliance_check_tasks/new.html.erb b/app/views/compliance_check_tasks/new.html.erb deleted file mode 100644 index 3f43a7dd7..000000000 --- a/app/views/compliance_check_tasks/new.html.erb +++ /dev/null @@ -1,39 +0,0 @@ -<%= title_tag t(".title") %> - -<%= semantic_form_for [@referential, @compliance_check_task], :url => referential_compliance_check_tasks_path(@referential) do |form| %> - <%= form.inputs do %> - <%= form.input :user_name, :as => :hidden, :input_html => { :value => current_user.name } %> <%= form.input :user_id, :as => :hidden, :input_html => { :value => current_user.id } %> - <%= form.input :referential_id, :as => :hidden, :input_html => { :value => @referential.id } %> - <%= form.input :name %> - <%= form.input :rule_parameter_set_id, :as => :select, - :collection => @referential.organisation.rule_parameter_sets.map { |rps| [ rps.name, rps.id ] }, :include_blank => false %> - <%= form.input :references_type, :as => :select, :include_blank => t(".all") %> - <% @compliance_check_task.class.references_types.each do |type| %> - <%= form.input :reference_ids, :as => :reference_ids, :json => references_referential_compliance_check_tasks_path(@referential, :format => :json) + "?filter=#{type}", :hint_text => t('search_hint'), :no_result_text => t('no_result_text'),:searching_text => t('searching_term'), :id => "#{type}_reference_ids", :input_html => { :id => "#{type}_reference_ids" }, :wrapper_html => { :style => "display:none;", :id => "#{type}", :"data-type" => "#{type}" } %> - <% end %> - <% end %> - - <%= form.actions do %> - <%= form.action :submit, :as => :button , :label => t( 'formtastic.validate' ) %> - <%= form.action :cancel, :as => :link %> - <% end %> -<% end %> - -<!-- = title_tag t('.title') - -= semantic_form_for [@referential, @compliance_check_task], :url => referential_compliance_check_tasks_path(@referential) do |form| - = form.inputs do - = form.input :user_name, :as => :hidden, :input_html => { :value => current_user.name } - = form.input :user_id, :as => :hidden, :input_html => { :value => current_user.id } - = form.input :referential_id, :as => :hidden, :input_html => { :value => @referential.id } - = form.input :name - = form.input :rule_parameter_set_id, :as => :select, - :collection => @referential.organisation.rule_parameter_sets.map { |rps| [ rps.name, rps.id ] }, :include_blank => false - = form.input :references_type, :as => :select, :include_blank => t(".all") - - @compliance_check_task.class.references_types.each do |type| - - = form.input :reference_ids, as: :reference_ids, json: references_referential_compliance_check_tasks_path(@referential, format: :json) + "?filter=#{type}", hint_text: t('search_hint'), no_result_text: t('no_result_text'), searching_text: t('searching_term'), id: "#{type}_reference_ids", input_html: { :id => "#{type}_reference_ids" }, wrapper_html: { :style => "display:none;", :id => "#{type}", :"data-type" => "#{type}" } - - = form.actions do - = form.action :submit, as: :button, label: t('formtastic.validate') - = form.action :cancel, as: :link --> diff --git a/app/views/compliance_check_tasks/new.js.coffee b/app/views/compliance_check_tasks/new.js.coffee deleted file mode 100644 index ba62f53b2..000000000 --- a/app/views/compliance_check_tasks/new.js.coffee +++ /dev/null @@ -1,7 +0,0 @@ -jQuery -> - <% ComplianceCheckTask.references_types.map { |type| type_ids_model_references_type( ComplianceCheckTask, type)}.each do |rt| %> - $("textarea.<%= rt.input_class %>").tokenInput('<%= references_referential_compliance_check_tasks_path(@referential, :type => rt.relation_name, :format => :json) %>', { prePopulate: $('#').data('pre'), minChars: 1, hintText: '<%= t('search_hint') %>', noResultsText: '<%= t('no_result_text') %>', searchingText: '<%= t('searching_term') %>'}); - <% end %> - - # - ComplianceCheckTask.references_types.map { |type| type_ids_model_references_type( ComplianceCheckTask, type)}.each do |rt| - # $("textarea.#{rt.input_class}").tokenInput("#{references_referential_compliance_check_tasks_path(@referential, :type => rt.relation_name, format: :json)}", { prePopulate: $('#').data('pre'), minChars: 1, hintText: "#{t('search_hint')}", noResultsText: "#{t('no_result_text')}", searchingText: "#{t('searching_term')}"}); diff --git a/app/views/compliance_checks/_compliance_check.html.slim b/app/views/compliance_checks/_compliance_check.html.slim deleted file mode 100644 index 383a7ea82..000000000 --- a/app/views/compliance_checks/_compliance_check.html.slim +++ /dev/null @@ -1,17 +0,0 @@ -#index_item.panel.panel-default - .panel-heading - .panel-title.clearfix - span.pull-right - = link_to referential_compliance_check_path(@referential, compliance_check.id), :method => :delete, :data => {:confirm => t('compliance_checks.actions.destroy_confirm')}, class: 'btn btn-danger btn-sm' do - span.fa.fa-trash-o - h5 - = link_to referential_compliance_check_path(@referential, compliance_check.id), class: 'preview', title: "#{ComplianceCheck.model_name.human.capitalize} #{compliance_check.name}" do - = job_status_title(compliance_check) - - .panel-body - p - = link_to( font_awesome_classic_tag("fa-external-link") + t("compliance_checks.actions.report"), report_referential_compliance_check_path(@referential, compliance_check.id)) if compliance_check.report? - .panel-footer - .history - = l compliance_check.created_at, :format => "%d/%m/%Y %H:%M" - = " | #{compliance_check.user_name}" diff --git a/app/views/compliance_checks/_compliance_check_results.html.slim b/app/views/compliance_checks/_compliance_check_results.html.slim deleted file mode 100644 index 8e86c174e..000000000 --- a/app/views/compliance_checks/_compliance_check_results.html.slim +++ /dev/null @@ -1,92 +0,0 @@ -p - form.form-inline - .form-group - label = t('shared.ie_report.search') - input#filter.form-control type="text" - - .form-group - label = ComplianceCheckResult.human_attribute_name(:severity) - select.filter-severity.form-control - option - option value="severity-error" - = t('compliance_check_result.severities.error') - option value="severity-warning" - = t('compliance_check_result.severities.warning') - - .form-group - label = ComplianceCheckResult.human_attribute_name(:status) - select.filter-status.form-control - option - option value="status-ok" - = t('compliance_check_result.statuses.ok') - option value="status-nok" - = t('compliance_check_result.statuses.nok') - option value="status-uncheck" - = t('compliance_check_result.statuses.uncheck') - - -table.table.table-hover.toggle-circle.toggle-medium data-filter="#filter" data-page-size="20" data-title-nok="#{t('compliance_check_result.statuses.nok')}" data-title-uncheck="#{t('compliance_check_result.statuses.uncheck')}" data-title-ok="#{t('compliance_check_result.statuses.ok')}" - thead - tr - th data-sort-ignore="true" - = ComplianceCheckResult.human_attribute_name(:status) - th.col-md-1 data-sort-ignore="true" - = ComplianceCheckResult.human_attribute_name(:severity) - th.col-md-3 - = ComplianceCheckResult.human_attribute_name(:rule_code) - th.col-md-2 - = t('compliance_check_results.errors') - th.col-md-6 data-toggle="true" data-sort-ignore="true" - = ComplianceCheckResult.human_attribute_name(:detail) - th data-hide="all" data-sort-ignore="true" - - tbody - - if compliance_check_validation_report - - compliance_check_validation_report.tests.each_with_index do |test, index| - tr class="#{test.result}_#{test.severity}" - td data-value="status-#{test.result}" - = status_icon( test.result, test.severity ) - td data-value="severity-#{test.severity}" - = t("compliance_check_result.severities.#{test.severity}_txt") - td data-value="#{test.result}_#{test.severity}" - = link_to test.test_id, test_definition(test.test_id), title: ComplianceCheckResult.human_attribute_name(test.test_id), target: "compliance_check" - td - = "#{test.error_count || 0} #{ComplianceCheckResult.human_attribute_name(:violation_count)}" if test.errors.present? - td - = truncate(t("activemodel.attributes.compliance_check_result.#{test.test_id}"), length: 50) - td - p - b - = t("activemodel.attributes.compliance_check_result.#{test.test_id}") - - - if test.errors.present? - - test.errors.first(10).each do |error| - dl.inline - dt - - if error["source"].present? - - if error[:source].object_path.present? - - if error[:source].label.present? - = link_to error[:source].label, object_url(@referential.id, error), target: :_blank - - else - = link_to "#{error[:source].object_path.type} (#{error[:source].object_path.id})", object_url(@referential.id, error), target: :_blank - - - if error[:source].file.present? - = error[:source].objectid if error[:source].objectid.present? - - dd = t("compliance_check_result.details.detail_#{error[:error_id]}", object_labels_hash(error)) - - - if error[:source].file.present? - p.file_error - = error[:source].file.filename - = ", li: #{error[:source].file.line_number}" if error[:source].file.line_number.present? - = ", co: #{error[:source].file.column_number}" if error[:source].file.column_number.present? - - - else - tr - td colspan="6" - = t('compliance_check_results.in_progress') - - tfoot.hide-if-no-paging - tr - td colspan="5" - ul.pagination.pagination-centered diff --git a/app/views/compliance_checks/_compliance_checks.html.slim b/app/views/compliance_checks/_compliance_checks.html.slim deleted file mode 100644 index 48db9ae94..000000000 --- a/app/views/compliance_checks/_compliance_checks.html.slim +++ /dev/null @@ -1,9 +0,0 @@ -.page_info - span.search = t('will_paginate.page_entries_info.search') - = page_entries_info @compliance_checks - -.compliance_checks.paginated_content - = paginated_content @compliance_checks, "compliance_checks/compliance_check" - -.pagination - = will_paginate @compliance_checks, :container => false, renderer: RemoteBootstrapPaginationLinkRenderer
\ No newline at end of file diff --git a/app/views/compliance_checks/detailed_errors_index.csv.slim b/app/views/compliance_checks/detailed_errors_index.csv.slim deleted file mode 100644 index 7fe20e282..000000000 --- a/app/views/compliance_checks/detailed_errors_index.csv.slim +++ /dev/null @@ -1,37 +0,0 @@ -= I18n.t('activemodel.attributes.compliance_check_result.severity'); -= I18n.t('activemodel.attributes.compliance_check_result.rule_code'); -= I18n.t('activemodel.attributes.compliance_check_result.object'); -= I18n.t('activemodel.attributes.compliance_check_result.resource'); -= I18n.t('activemodel.attributes.compliance_check_result.title'); -= I18n.t('activemodel.attributes.compliance_check_result.detail') - -- @compliance_check.compliance_check_validation_report.tests.each do |r| - - if r.errors.present? - - r.errors.first(10).each do |error| - - case r.severity - - when "warning" - = I18n.t('compliance_check_result.severities.warning_txt') - - when "error" - = I18n.t('compliance_check_result.severities.error_txt') - - = r.test_id; - - - if error["source"].present? - = error["source"]["objectid"] if error["source"]["objectid"].present? - - - if error["source"]["object_path"].present? - = object_url(@referential_id, error) - - elsif error["source"]["file"].present? - = File.basename(error["source"]["file"]["filename"]) + " - " - = I18n.t("compliance_check_results.index.column") + ":" - = error["source"]["file"]["column_number"] + "," - = I18n.t("compliance_check_results.index.line") + ":" - = error["source"]["file"]["line_number"] - - - else - = I18n.t("activemodel.attributes.compliance_check_result.#{r.test_id}"); - = I18n.t("compliance_check_result.details.detail_#{error['error_id']}", object_labels_hash(error) ) - = "\n" - -/ <%= I18n.t("activemodel.attributes.compliance_check_result.severity") %>;<%= I18n.t("activemodel.attributes.compliance_check_result.rule_code") %>;<%= I18n.t("activemodel.attributes.compliance_check_result.object") %>;<%= I18n.t("activemodel.attributes.compliance_check_result.resource") %>;<%= I18n.t("activemodel.attributes.compliance_check_result.title") %>;<%= I18n.t("activemodel.attributes.compliance_check_result.detail") %> -/ <% @compliance_check.compliance_check_validation_report.tests.each do |r| %><% if r.errors.present? %><% r.errors.first(10).each do |error| %><% case r.severity %><% when "warning" %><%= I18n.t "compliance_check_result.severities.warning_txt" %><% when "error" %><%= I18n.t "compliance_check_result.severities.error_txt" %><% end %>;<%= r.test_id %>;<% if error["source"].present? %><%= error["source"]["objectid"] if error["source"]["objectid"].present? %>;<% if error["source"]["object_path"].present? %><%= object_url(@referential_id, error) %><% elsif error["source"]["file"].present? %><%= File.basename(error["source"]["file"]["filename"]) +" - " %><%= I18n.t "compliance_check_results.index.column" %>:<%= error["source"]["file"]["column_number"] %>,<%= I18n.t "compliance_check_results.index.line" %>:<%= error["source"]["file"]["line_number"] %><% end %>;<% else %>;;<% end %><%= I18n.t("activemodel.attributes.compliance_check_result."+r.test_id) %>;<%= I18n.t("compliance_check_result.details.detail_#{error['error_id']}", object_labels_hash(error) )%><%= "\n" %><% end %><% end %><% end %> diff --git a/app/views/compliance_checks/index.html.slim b/app/views/compliance_checks/index.html.slim deleted file mode 100644 index 392c46663..000000000 --- a/app/views/compliance_checks/index.html.slim +++ /dev/null @@ -1,14 +0,0 @@ -= title_tag t('.title') - -.warning - = t('.warning') - -#compliance_checks - = render 'compliance_checks' - -- content_for :sidebar do - ul.actions - li - = link_to t('compliance_check_tasks.actions.new'), new_referential_compliance_check_task_path(), class: 'add' - li - = link_to t('rule_parameter_sets.actions.index'), organisation_rule_parameter_sets_path, class: 'link'
\ No newline at end of file diff --git a/app/views/compliance_checks/index.js.slim b/app/views/compliance_checks/index.js.slim deleted file mode 100644 index cfd8dc40d..000000000 --- a/app/views/compliance_checks/index.js.slim +++ /dev/null @@ -1 +0,0 @@ -| $('#compliance_checks').html("#{escape_javascript(render('compliance_checks'))}");
\ No newline at end of file diff --git a/app/views/compliance_checks/report.html.slim b/app/views/compliance_checks/report.html.slim deleted file mode 100644 index be2bb8adc..000000000 --- a/app/views/compliance_checks/report.html.slim +++ /dev/null @@ -1,41 +0,0 @@ -= title_tag job_status_title(@compliance_check) - -.compliance_check_show - .links - - if @compliance_check.class == Import - = link_to(font_awesome_classic_tag('fa-eye') + t("compliance_checks.report.action_report"), referential_import_path(@referential, @compliance_check.id)) - = link_to font_awesome_classic_tag("fa-external-link") + t("compliance_checks.rule_parameter_set"), rule_parameter_set_referential_import_path(@referential, @compliance_check.id) if @compliance_check.rule_parameter_set? - - else - = link_to(font_awesome_classic_tag('fa-eye') + t("compliance_checks.report.action_report"), referential_compliance_check_path(@referential, @compliance_check.id)) - = link_to font_awesome_classic_tag("fa-external-link") + t("compliance_checks.rule_parameter_set"), rule_parameter_set_referential_compliance_check_path(@referential, @compliance_check.id) if @compliance_check.rule_parameter_set? - - .btn-group.pull-right - button.btn.btn-default.dropdown-toggle type="button" data-toggle="dropdown" aria-expanded="false" - = t('compliance_checks.show.export') - span.caret - - ul.dropdown-menu role="menu" - li - - if @compliance_check.class == Import - = link_to t('compliance_checks.show.export_csv'), export_referential_import_path(@referential, @compliance_check.id) - - else - = link_to t("compliance_checks.show.export_csv"), export_referential_compliance_check_path(@referential, @compliance_check.id) - - .report data-refresh-interval="#{job_refresh_interval(@compliance_check)}" - = render partial: 'compliance_checks/compliance_check_results', locals: { compliance_check_validation_report: @compliance_check.compliance_check_validation_report } - -- content_for :sidebar do - - if @compliance_check.compliance_check_validation_report && @compliance_check.compliance_check_validation_report.nok_error.blank? - .row - = font_awesome_classic_tag('fa-thumbs-up fa-5x col-md-3') - p#validation_success.col-md-7 - = t('.validation_success') - - ul.actions - li - - if @compliance_check.class != Import - = link_to t('compliance_checks.actions.destroy'), referential_compliance_check_path(@referential, @compliance_check.id), method: :delete, :data => {:confirm => t('compliance_checks.actions.destroy_confirm')}, class: 'remove' - - = history_tag(@compliance_check) - #error.graph - #warning.graph
\ No newline at end of file diff --git a/app/views/compliance_checks/show.html.slim b/app/views/compliance_checks/show.html.slim deleted file mode 100644 index 8c6900981..000000000 --- a/app/views/compliance_checks/show.html.slim +++ /dev/null @@ -1,22 +0,0 @@ -.test - = title_tag job_status_title(@compliance_check) - -- if @compliance_check.report.failure_code? - .alert.alert-danger - = t("iev.failure.#{@compliance_check.report.failure_code}") - -.progress_bars - = progress_bar_tag(@compliance_check) - -.compliance_check.show - .links - = link_to font_awesome_classic_tag("fa-external-link") + t("compliance_checks.actions.report"), report_referential_compliance_check_path(@referential, @compliance_check.id) if @compliance_check.compliance_check_validation_report? - - = render partial: "shared/ie_report", locals: { job: @compliance_check, type: :validation, line_items: @line_items } - -- content_for :sidebar do - ul.actions - li - = link_to t('compliance_checks.actions.destroy'), referential_compliance_check_path(@referential, @compliance_check.id), method: :delete, data: {confirm: t('compliance_checks.actions.destroy_confirm')}, class: 'remove' - - = history_tag(@compliance_check)
\ No newline at end of file diff --git a/app/views/compliance_checks/summary_errors_index.csv.slim b/app/views/compliance_checks/summary_errors_index.csv.slim deleted file mode 100644 index 8c88d5cf6..000000000 --- a/app/views/compliance_checks/summary_errors_index.csv.slim +++ /dev/null @@ -1,34 +0,0 @@ -= I18n.t("activemodel.attributes.compliance_check_result.severity"); -= I18n.t("activemodel.attributes.compliance_check_result.status"); -= I18n.t("activemodel.attributes.compliance_check_result.rule_code"); -= I18n.t("activemodel.attributes.compliance_check_result.title"); -= I18n.t("activemodel.attributes.compliance_check_result.url"); -= I18n.t("activemodel.attributes.compliance_check_result.violation_count_txt"); -= I18n.t("activemodel.attributes.compliance_check_result.objects") - -- @compliance_check.compliance_check_validation_report.tests.each do |r| - - case r.severity - - when "warning" - = I18n.t("compliance_check_result.severities.warning_txt") - - when "error" - = I18n.t("compliance_check_result.severities.error_txt") - - = r.result; - = r.test_id; - - = I18n.t("activemodel.attributes.compliance_check_result.#{r.test_id}"); - = Rails.application.config.validation_spec + I18n.locale.to_s + "/" + r.test_id + ".html"; - - = r.error_count - - - if r.error_count > 0 - - if r.errors.present? - - r.errors.first(10).each do |error| - - if error["source"] - = error["source"]["objectid"] + " " - - else - = " " - -/ <%= I18n.t("activemodel.attributes.compliance_check_result.severity") %>;<%= I18n.t("activemodel.attributes.compliance_check_result.status") %>;<%= I18n.t("activemodel.attributes.compliance_check_result.rule_code") %>;<%= I18n.t("activemodel.attributes.compliance_check_result.title") %>;<%= I18n.t("activemodel.attributes.compliance_check_result.url") %>;<%= I18n.t("activemodel.attributes.compliance_check_result.violation_count_txt") %>;<%= I18n.t("activemodel.attributes.compliance_check_result.objects") %> -/ <% @compliance_check.compliance_check_validation_report.tests.each do |r| %><% case r.severity %><% when "warning" %><%= I18n.t "compliance_check_result.severities.warning_txt" %><% when "error" %><%= I18n.t "compliance_check_result.severities.error_txt" %><% end %>;<%= r.result %>;<%= r.test_id %>;<%= I18n.t("activemodel.attributes.compliance_check_result."+r.test_id) %>;<%= Rails.application.config.validation_spec + I18n.locale.to_s + "/" + r.test_id + ".html" %>;<%= r.error_count %><% if r.error_count > 0 %><% if r.errors.present? %>;<% r.errors.first(10).each do |error| %><% if error["source"] %><%= error["source"]["objectid"] + " " %><% else %><%= " " %><% end %><% end %><% end %><% end %> -/ <% end %> diff --git a/config/locales/compliance_check_results.en.yml b/config/locales/compliance_check_results.en.yml index 7a71f83f0..e0541ab36 100644 --- a/config/locales/compliance_check_results.en.yml +++ b/config/locales/compliance_check_results.en.yml @@ -1,458 +1,3 @@ en: compliance_check_results: - errors: 'Errors' - file: - zip_name_prefix: "compliance_check_results" - summary_errors_file_prefix: "summary_of_tests.csv" - detailed_errors_file_prefix: "detail_of_errors.csv" - index: - line: "Li" - column: "Col" - in_progress: "Compliance check in progress..." - compliance_check_result: - severities: - error: "Required" - warning: "Optional" - error_txt: "Required" - warning_txt: "Optional" - statuses: - nok: "Error" - uncheck: "Unavailable" - ok: "Success" - details: - #### level 1 - ## NEPTUNE - detail_1_neptune_xml_1: "%{source_label} : %{error_value}" - detail_1_neptune_xml_2: "%{source_label} : %{error_value}" - - ## GTFS - detail_1_gtfs_csv_1: "le fichier %{filename} est inexploitable" - detail_1_gtfs_csv_2: "le fichier %{filename} est inexploitable" - detail_1_gtfs_csv_3: "le fichier %{filename} contient un entête vide" - detail_1_gtfs_csv_4: "le fichier %{filename} contient des entêtes en double" - detail_1_gtfs_csv_5: "la ligne du fichier %{filename} ne respecte pas la syntaxe CSV" - detail_1_gtfs_csv_6: "le fichier %{filename} contient des balises HTML" - detail_1_gtfs_csv_7: "la valeur '%{error_value}' du champ %{reference_value} contient des espaces aux extrémités" - - detail_1_gtfs_common_1: "le fichier %{filename} est obligatoire" - detail_1_gtfs_common_2: "l'un des fichiers calendar.txt ou calendar_dates.txt est obligatoire" - detail_1_gtfs_common_3: "le fichier %{filename} optionnel n'est pas présent" - detail_1_gtfs_common_4: "le fichier %{filename} n'est pas traité" - detail_1_gtfs_common_5: "le fichier %{filename} obligatoire doit définir au moins une entrée" - detail_1_gtfs_common_6: "l'un des deux fichiers calendar.txt ou calendar_dates.txt doit définir au moins une entrée" - detail_1_gtfs_common_7: "le fichier %{filename} optionnel ne contient aucune entrée" - detail_1_gtfs_common_8: "la valeur %{error_value} est définie plusieurs fois pour la colonne %{reference_value}" - detail_1_gtfs_common_9: "la colonne %{error_value} est obligatoire" - detail_1_gtfs_common_10: "la colonne agency_id devrait être présente dans le fichier %{filename}" - detail_1_gtfs_common_11: "la colonne %{error_value} n'est pas exploitée dans le fichier %{filename}" - detail_1_gtfs_common_12: "la valeur de la colonne %{error_value} n'est pas renseignée" - detail_1_gtfs_common_13: "la colonne agency_id doit être présente dans le fichier %{filename}" - detail_1_gtfs_common_14: "la colonne agency_id est absente dans le fichier %{filename}" - detail_1_gtfs_common_15_1: "la valeur arrival_time est obligatoire en présence d'une valeur pour departure_time" - detail_1_gtfs_common_15_2: "la valeur departure_time est obligatoire en présence d'une valeur pour arrival_time" - detail_1_gtfs_common_15_3: "la valeur min_transfer_time est obligatoire quand transfer_type=2" - detail_1_gtfs_common_16: "la valeur %{error_value} n'est pas autorisée pour le champs %{reference_value} " - - detail_1_gtfs_route_1: "les champs route_long_name et route_short_name ne sont pas définies" - detail_1_gtfs_route_2: "les valeurs des champs route_long_name et route_short_name ne sont pas renseignées" - - detail_1_gtfs_calendar_1: "aucun jour d'application n'est activé" - detail_1_gtfs_calendar_2: "la date de fin du calendrier est antérieur ou égale à la date début" - - #### level 2 - ## NEPTUNE - detail_2_neptune_common_1: "L'élément %{source_objectid} a des attributs qui diffèrent entre les différents fichiers qui le définissent" - detail_2_neptune_common_2: "L'élément %{source_objectid} partage l'attribut RegistrationNumber = %{error_value} avec un autre objet de même type" - detail_2_neptune_network_1: "La ligne %{source_objectid} est absente de la liste des lignes du réseau %{target_0_objectid}" - detail_2_neptune_network_2: "Le réseau %{source_objectid} a un type de source non valide : %{error_value}, remplacé par %{reference_value}" - detail_2_neptune_groupofline_1: "La ligne %{source_objectid} est absente de la liste des lignes du du groupe de lignes %{target_0_objectid}" - detail_2_neptune_stoparea_1: "Le fils (contains = %{error_value}) de l'arrêt %{source_objectid} n'est pas de type StopArea ni StopPoint" - detail_2_neptune_stoparea_2: "L'arrêt %{source_objectid} de type %{reference_value} ne peut contenir que des arrêts de type StopPlace ou CommercialStopPoint, or un des arrêts contenus (contains = %{target_0_objectid}) est de type %{error_value}" - detail_2_neptune_stoparea_3: "L'arrêt %{source_objectid} de type %{reference_value} ne peut contenir que des arrêts de type BoardingPosition ou Quay, or un des arrêts contenus (contains = %{target_0_objectid}) est de type %{error_value}" - detail_2_neptune_stoparea_4: "L'arrêt %{source_objectid} de type %{reference_value} ne peut contenir que des points d'arrêt de séquence, or un des arrêts contenus (contains = %{target_0_objectid}) est un StopArea arrêt de type %{error_value}" - detail_2_neptune_stoparea_5: "L'arrêt %{source_objectid} référence une position géographique (centroidOfArea = %{error_value}) inexistante" - detail_2_neptune_stoparea_6: "L'arrêt %{source_objectid} référence une position géographique (centroidOfArea = %{target_0_objectid}) qui ne le référence pas en retour (containedIn = %{error_value})" - detail_2_neptune_itl_1: "Le fils (contains = %{target_0_objectid}) de type %{error_value} ne peut pas être contenu dans l'arrêt %{source_objectid} de type %{reference_value}" - detail_2_neptune_itl_2: "L'arrêt de type ITL %{source_objectid} n'est pas utilisé" - detail_2_neptune_itl_3: "L'arrêt areaId = %{error_value} référencé par l'ITL %{source_objectid} n'existe pas" - detail_2_neptune_itl_4: "L'arrêt areaId = %{target_0_objectid} référencé par l'ITL %{source_objectid} devrait être de type ITL et non de type %{error_value}" - detail_2_neptune_itl_5: "La référence lineIdShortCut = %{error_value} de l'ITL %{source_objectid} n'est pas cohérente avec la ligne %{target_0_objectid}" - detail_2_neptune_areacentroid_1: "La position géographique <AreaCentroid> %{source_objectid} référence un arrêt (containedIn = %{error_value}) inexistant" - detail_2_neptune_areacentroid_2: "La position géographique <AreaCentroid> %{source_objectid} utilise un référentiel géographique (longLatType = %{error_value}) invalide" - detail_2_neptune_connectionlink_1: "La correspondance %{source_objectid} référence 2 arrêts inexistants" - detail_2_neptune_accesspoint_1: "L'accès %{source_objectid} référence un arrêt parent (containedIn = %{error_value}) inexistant" - detail_2_neptune_accesspoint_2: "L'accès %{source_objectid} référence un arrêt parent (containedIn = %{target_0_objectid}) de type invalide (ITL)" - detail_2_neptune_accesspoint_3: "L'accès %{source_objectid} n'a pas de lien d'accès" - detail_2_neptune_accesspoint_4: "L'accès %{source_objectid} de type In a des liens d'accès sortants" - detail_2_neptune_accesspoint_5: "L'accès %{source_objectid} de type Out a des liens d'accès entrants" - detail_2_neptune_accesspoint_6: "L'accès %{source_objectid} de type InOut n'a que des liens d'accès entrants ou sortants" - detail_2_neptune_accesspoint_7: "L'accès %{source_objectid} utilise un référentiel géographique (longLatType = %{error_value}) invalide" - detail_2_neptune_accesslink_1: "La liaison d'accès %{source_objectid} référence %{error_value} qui n'existe pas" - detail_2_neptune_accesslink_2: "Sur la liaison d'accès %{source_objectid}, les références startOfLink = %{error_value} et endOfLink = %{reference_value} sont de même type" - detail_2_neptune_line_1: "La ligne %{source_objectid} référence un réseau (ptNetworkIdShortcut = %{error_value} inexistant" - detail_2_neptune_line_2: "La ligne %{source_objectid} référence un point d'arrêt <StopPoint> (lineEnd = %{error_value}) inexistant " - detail_2_neptune_line_3: "La ligne %{source_objectid} référence un point d'arrêt (lineEnd = %{error_value}) qui n'est pas terminus d'une séquence d'arrêts" - detail_2_neptune_line_4: "La ligne %{source_objectid} référence une séquence d'arrêt (routeId = %{error_value}) inexistante" - detail_2_neptune_line_5: "La séquence d'arrêts (routeId = %{target_0_objectid}) n'est pas référencée par la ligne %{source_objectid}" - detail_2_neptune_line_6: "La ligne %{source_objectid} ne renseigne aucun des champs name, number ou publishedName" - detail_2_neptune_route_1: "La séquence d'arrêts %{source_objectid} référence une mission (journeyPatternId = %{error_value}) inexistante" - detail_2_neptune_route_2: "La séquence d'arrêts %{source_objectid} référence un tronçon (ptLinkId = %{error_value}) inexistant" - detail_2_neptune_route_3: "La séquence retour (waybackRouteId = %{error_value}) de la séquence d'arrêts %{source_objectid} n'existe pas" - detail_2_neptune_route_4: "Le tronçon (ptLinkId = %{error_value}) référencé par la séquence d'arrêt %{source_objectid} est partagé avec %{target_0_objectid}" - detail_2_neptune_route_5: "Le tronçon %{source_objectid} partage un %{reference_value} : %{error_value} avec un autre tronçon" - detail_2_neptune_route_6_1: "La séquence d'arrêts %{source_objectid} n'est pas une séquence linéaire, le chainage des tronçons forme un anneau" - detail_2_neptune_route_6_2: "La séquence d'arrêts %{source_objectid} n'est pas une séquence linéaire, le chainage des tronçons est rompu au tronçon %{target_0_objectid}" - detail_2_neptune_route_7: "La séquence d'arrêts %{source_objectid} ne référence pas la mission %{target_0_objectid} alors que cette mission référence la séquence d'arrêt" - detail_2_neptune_route_8: "La mission journeyPatternId = %{target_0_objectid} de la séquence d'arrêts %{source_objectid} utilise des points d'arrêts hors séquence" - detail_2_neptune_route_9: "Le point d'arrêt (stopPointId = %{target_0_objectid}) de la séquence d'arrêts %{source_objectid} n'est utilisé dans aucune mission" - detail_2_neptune_route_10: "La séquence retour (waybackRouteId = %{target_0_objectid}) ne référence pas la séquence d'arrêts %{source_objectid} comme retour" - detail_2_neptune_route_11: "Le sens (%{reference_value}) de la séquence d'arrêt %{source_objectid} n'est pas compatible avec celui (%{error_value}) de la séquence opposée %{target_0_objectid}" - detail_2_neptune_route_12: "Le départ dans la zone %{reference_value}) de la séquence d'arrêts %{source_objectid} n'est pas dans la même zone que l'arrivée (zone %{error_value} de la séquence retour %{target_0_objectid}" - detail_2_neptune_ptlink_1: "Le tronçon %{source_objectid} reférence un %{reference_value} = %{error_value} inexistant" - detail_2_neptune_journeypattern_1: "La mission %{source_objectid} référence une séquence d'arrêts (routeId = %{error_value}) inexistante" - detail_2_neptune_journeypattern_2: "La mission %{source_objectid} référence un point d'arrêt (stopPointId = %{error_value}) inexistant" - detail_2_neptune_journeypattern_3: "La mission %{source_objectid} référence une ligne (lineIdShortcut = %{error_value}) inexistante" - detail_2_neptune_stoppoint_1: "Le point d'arrêt %{source_objectid} référence une ligne (lineIdShortcut = %{error_value}) inexistante" - detail_2_neptune_stoppoint_2: "Le point d'arrêt %{source_objectid} référence un réseau (ptNetworkIdShortcut = %{error_value}) inexistant" - detail_2_neptune_stoppoint_3: "Le point d'arrêt %{source_objectid} référence un arrêt (containedIn = %{error_value}) inexistant" - detail_2_neptune_stoppoint_4: "Le point d'arrêt %{source_objectid} utilise un référentiel géographique (longLatType = %{error_value}) invalide" - detail_2_neptune_timetable_1: "Le calendrier (<Timetable>) %{source_objectid} ne référence aucune course existante" - detail_2_neptune_timetable_2: "La course %{source_objectid} n'est référencée dans aucun calendrier (<Timetable>)" - detail_2_neptune_timetable_3: "Le calendrier (<Timetable>) %{source_objectid} contient une période invalide" - detail_2_neptune_vehiclejourney_1: "La course %{source_objectid} référence une séquence d'arrêts (routeId = %{error_value}) inexistante" - detail_2_neptune_vehiclejourney_2: "La course %{source_objectid} référence une mission (journeyPatternId = %{error_value}) inexistante" - detail_2_neptune_vehiclejourney_3: "La course %{source_objectid} référence une ligne (lineIdShortcut = %{error_value}) inexistante" - detail_2_neptune_vehiclejourney_4: "La course %{source_objectid} référence un opérateur (operatorId = %{error_value}) inexistant" - detail_2_neptune_vehiclejourney_5: "La course %{source_objectid} référence une fréquence horaire (timeSlotId = %{error_value}) inexistante" - detail_2_neptune_vehiclejourney_6: "La course %{source_objectid} référence une mission %{error_value} incompatible de la séquence d'arrêts %{reference_value}" - detail_2_neptune_vehiclejourney_7: "La mission %{source_objectid} n'est référencée par aucune course" - detail_2_neptune_vehiclejourney_8: "La course %{source_objectid} doit référencer une mission si la séquence d'arrêt en possède plusieurs" - detail_2_neptune_vehiclejourneyatstop_1: "La course %{source_objectid} fournit un horaire sur un point d'arrêt (stopPointId = %{error_value}) inexistant" - detail_2_neptune_vehiclejourneyatstop_2: "Un horaire de la course %{source_objectid} référence une autre course : vehicleJourneyId = %{error_value}" - detail_2_neptune_vehiclejourneyatstop_3: "La course %{source_objectid} ne fournit pas les horaires des points d'arrêts selon l'ordre de la séquence d'arrêts %{error_value}" - detail_2_neptune_vehiclejourneyatstop_4: "La course %{source_objectid} ne fournit pas les horaires des points d'arrêts de sa mission %{error_value}" - detail_2_neptune_facility_1: "L'équipement %{source_objectid} est situé sur un arrêt inexistant (containedId = %{error_value})" - detail_2_neptune_facility_2: "L'équipement %{source_objectid} référence un arrêt (stopAreaId = %{error_value}) inexistant" - detail_2_neptune_facility_3: "L'équipement %{source_objectid} référence une ligne (lineId = %{error_value} inexistante" - detail_2_neptune_facility_4: "L'équipement %{source_objectid} référence une correspondance (connectionLinkId = %{error_value} inexistante" - detail_2_neptune_facility_5: "L'équipement %{source_objectid} référence un point d'arrêt (stopPointId = %{error_value} inexistant" - detail_2_neptune_facility_6: "L'équipement %{source_objectid} utilise un référentiel géographique (longLatType = %{error_value}) invalide" - - ## GTFS - detail_2_gtfs_common_1: "Identifiant %{reference_value} inconnu : %{error_value}" - detail_2_gtfs_common_2: "Identifiant %{reference_value} non référencé : %{error_value}" - detail_2_gtfs_common_3: "Le couple de champs (%{reference_value}) est en doublon (%{error_value}): " - detail_2_gtfs_common_4: "Les valeurs des champs (%{reference_value}) sont identiques : '%{error_value}'" - detail_2_gtfs_stop_1: "L'arrêt (%{source_objectid}) ne peut appartenir à un parent de type %{error_value}" - detail_2_gtfs_stop_2: "La colonne location_type n'est pas renseignée" - detail_2_gtfs_stop_3: "Le nom et la description de l'arrêt (%{source_objectid}) sont identiques : '%{error_value}'" - detail_2_gtfs_stop_4: "L'arrêt (%{source_objectid}) de type station ne peut appartenir à une autre station (%{error_value})" - detail_2_gtfs_route_1: "La route (%{source_objectid}) a la même valeur (%{error_value}) pour route_short_name et route_long_name" - detail_2_gtfs_route_2: "La route (%{source_objectid}) réutilise la valeur de route_short_name (%{error_value}) dans route_long_name (%{reference_value})" - detail_2_gtfs_route_3: "les couleurs de la route (%{source_objectid}) ne sont pas contrastées" - detail_2_gtfs_route_4: "La route (%{source_objectid}) utilise les valeurs (route_short_name,route_long_name) de la route (%{error_value}) " - - #### level 3 - detail_3_stoparea_1: "L'arrêt %{source_label} (%{source_objectid}) n'est pas géolocalisé" - detail_3_stoparea_2: "L'arrêt %{source_label} (%{source_objectid}) est localisé trop près de l'arrêt %{target_0_label} (%{target_0_objectid}) : distance %{error_value} < %{reference_value}" - detail_3_stoparea_3: "Les arrêts %{source_label} (%{source_objectid} et %{target_0_objectid}) sont desservis par les mêmes lignes" - detail_3_stoparea_4: "L'arrêt %{source_label} (%{source_objectid}) est en dehors du périmètre de contrôle" - detail_3_stoparea_5: "L'arrêt %{source_label} (%{source_objectid}) est localisé trop loin de son parent %{target_0_label} (%{target_0_objectid}) : distance %{error_value} > %{reference_value}" - detail_3_accesspoint_1: "L'accès %{source_label} (%{source_objectid}) n'est pas géolocalisé" - detail_3_accesspoint_2: "L'accès %{source_label} (%{source_objectid}) est localisé trop près de l'accès %{target_0_label} (%{target_0_objectid}) : distance %{error_value} < %{reference_value}" - detail_3_accesspoint_3: "L'accès %{source_label} (%{source_objectid}) est localisé trop loin de son parent %{target_0_label} (%{target_0_objectid}) : distance %{error_value} > %{reference_value}" - detail_3_connectionlink_1: "Sur la correspondance %{source_label} (%{source_objectid}), la distance entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid}) est trop grande : distance %{error_value} > %{reference_value}" - detail_3_connectionlink_2: "Sur la correspondance %{source_label} (%{source_objectid}), la distance entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid}) : %{error_value} est supérieure à la longueur du lien : %{reference_value}" - detail_3_connectionlink_3_1: "Sur la correspondance %{source_label} (%{source_objectid}), la vitesse par défaut %{error_value} est supérieure à %{reference_value} km/h" - detail_3_connectionlink_3_2: "Sur la correspondance %{source_label} (%{source_objectid}), la vitesse pour un voyageur occasionnel %{error_value} est supérieure à %{reference_value} km/h" - detail_3_connectionlink_3_3: "Sur la correspondance %{source_label} (%{source_objectid}), la vitesse pour un voyageur habitué %{error_value} est supérieure à %{reference_value} km/h" - detail_3_connectionlink_3_4: "Sur la correspondance %{source_label} (%{source_objectid}), la vitesse pour un voyageur à mobilité réduite %{error_value} est supérieure à %{reference_value} km/h" - detail_3_accesslink_1: "Sur le lien d'accès %{source_label} (%{source_objectid}), la distance entre l'arrêt %{target_0_label} (%{target_0_objectid}) et l'accès %{target_1_label} (%{target_1_objectid}) est trop grande : distance %{error_value} > %{reference_value}" - detail_3_accesslink_2: "Sur le lien d'accès %{source_label} (%{source_objectid}), la distance entre l'arrêt %{target_0_label} (%{target_0_objectid}) et l'accès %{target_1_label} (%{target_1_objectid}) : %{error_value} est supérieure à la longueur du lien : %{reference_value}" - detail_3_accesslink_3_1: "Sur le lien d'accès %{source_label} (%{source_objectid}), la vitesse par défaut %{error_value} est supérieure à %{reference_value} km/h" - detail_3_accesslink_3_2: "Sur le lien d'accès %{source_label} (%{source_objectid}), la vitesse pour un voyageur occasionnel %{error_value} est supérieure à %{reference_value} km/h" - detail_3_accesslink_3_3: "Sur le lien d'accès %{source_label} (%{source_objectid}), la vitesse pour un voyageur habitué %{error_value} est supérieure à %{reference_value} km/h" - detail_3_accesslink_3_4: "Sur le lien d'accès %{source_label} (%{source_objectid}), la vitesse pour un voyageur à mobilité réduite %{error_value} est supérieure à %{reference_value} km/h" - detail_3_line_1: "La ligne %{source_label} (%{source_objectid}) a une ligne homonyme sur le même réseau %{target_0_label} (%{target_0_objectid})" - detail_3_line_2: "La ligne %{source_label} (%{source_objectid}) n'a pas de séquence d'arrêts" - detail_3_route_1: "Sur la séquence d'arrêt %{source_label} (%{source_objectid}), l'arrêt %{target_0_label} (%{target_0_objectid}) est desservi 2 fois consécutivement" - detail_3_route_2: "Les terminus de la séquence d'arrêt %{source_label} (%{source_objectid}) ne sont pas cohérent avec ceux de sa séquence opposée : l'une part de %{target_0_label} (%{target_0_objectid}) et l'autre arrive à %{target_1_label} (%{target_1_objectid})" - detail_3_route_3_1: "Sur la séquence d'arrêt %{source_label} (%{source_objectid}), entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid}), distance %{error_value} < %{reference_value} " - detail_3_route_3_2: "Sur la séquence d'arrêt %{source_label} (%{source_objectid}), entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid}), distance %{error_value} > %{reference_value} " - detail_3_route_4: "La séquence d'arrêt %{source_label} (%{source_objectid}) utilise la même liste ordonnée d'arrêts que la séquence d'arrêts %{target_0_label} (%{target_0_objectid})" - detail_3_route_5: "La séquence d'arrêt %{source_label} (%{source_objectid}) peut admettre la séquence %{target_0_label} (%{target_0_objectid}) comme séquence opposée" - detail_3_route_6: "La séquence d'arrêt %{source_label} (%{source_objectid}) doit avoir un minimum de 2 arrêts" - detail_3_route_7: "La séquence d'arrêt %{source_label} (%{source_objectid}) n'a pas de mission" - detail_3_route_8: "La séquence d'arrêt %{source_label} (%{source_objectid}) a %{error_value} arrêts non utilisés par des missions" - detail_3_route_9: "La séquence d'arrêt %{source_label} (%{source_objectid}) n'a pas de mission desservant l'ensemble de ses arrêts" - detail_3_journeypattern_1: "La mission %{source_label} (%{source_objectid}) utilise les mêmes arrêts que la mission %{target_0_label} (%{target_0_objectid}) - nombre d'arrêts = %{error_value}" - detail_3_vehiclejourney_1: "Arrêt %{target_0_label} (%{target_0_objectid}) : durée d'arrêt mesurée %{error_value} > %{reference_value}" - detail_3_vehiclejourney_2_1: "La course %{source_label} (%{source_objectid}) a des horaires décroissants entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid})" - detail_3_vehiclejourney_2_2: "La course %{source_label} (%{source_objectid}) a une vitesse %{error_value} < %{reference_value} km/h entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid})" - detail_3_vehiclejourney_2_3: "La course %{source_label} (%{source_objectid}) a une vitesse %{error_value} > %{reference_value} km/h entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid})" - detail_3_vehiclejourney_3: "La course %{source_label} (%{source_objectid}) a une variation de progression entre les arrêts %{target_1_label} (%{target_1_objectid}) et %{target_2_label} (%{target_2_objectid}) %{error_value} > %{reference_value} avec la course %{target_0_label} (%{target_0_objectid})" - detail_3_vehiclejourney_4: "La course %{source_label} (%{source_objectid}) n'a pas de calendrier d'application" - detail_3_facility_1: "L'équipement %{source_label} (%{source_objectid}) n'est pas géolocalisé" - detail_3_facility_2: "L'équipement %{source_label} (%{source_objectid}) est localisé trop loin de son parent %{areaName} (%{areaId}) : distance %{error_value} > %{reference_value}" - - detail_4_network_1_min_size: "L'attribut %{reference_value} du réseau %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value}) " - detail_4_network_1_max_size: "L'attribut %{reference_value} du réseau %{source_label} (%{source_objectid}) est trop grand (%{error_value})" - detail_4_network_1_pattern: "L'attribut %{reference_value} du réseau %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" - detail_4_network_1_unique: "L'attribut %{reference_value} du réseau %{source_label} (%{source_objectid}) a une valeur partagée avec le réseau %{target_0_label} (%{target_0_objectid})" - detail_4_company_1_min_size: "L'attribut %{reference_value} du transporteur %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" - detail_4_company_1_max_size: "L'attribut %{reference_value} du transporteur %{source_label} (%{source_objectid}) est trop grand (%{error_value})" - detail_4_company_1_pattern: "L'attribut %{reference_value} du transporteur %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" - detail_4_company_1_unique: "L'attribut %{reference_value} du transporteur %{source_label} (%{source_objectid}) a une valeur partagée avec le transporteur %{target_0_label} (%{target_0_objectid})" - detail_4_groupofline_1_min_size: "L'attribut %{reference_value} du groupe de lignes %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" - detail_4_groupofline_1_max_size: "L'attribut %{reference_value} du groupe de lignes %{source_label} (%{source_objectid}) est trop grand (%{error_value})" - detail_4_groupofline_1_pattern: "L'attribut %{reference_value} du groupe de lignes %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" - detail_4_groupofline_1_unique: "L'attribut %{reference_value} du groupe de lignes %{source_label} (%{source_objectid}) a une valeur partagée avec le groupe de lignes %{target_0_label} (%{target_0_objectid})" - detail_4_stoparea_1_min_size: "L'attribut %{reference_value} de l'arrêt %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" - detail_4_stoparea_1_max_size: "L'attribut %{reference_value} de l'arrêt %{source_label} (%{source_objectid}) est trop grand (%{error_value})" - detail_4_stoparea_1_pattern: "L'attribut %{reference_value} de l'arrêt %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" - detail_4_stoparea_1_unique: "L'attribut %{reference_value} de l'arrêt %{source_label} (%{source_objectid}) a une valeur partagée avec l'arrêt %{target_0_label} (%{target_0_objectid})" - detail_4_stoparea_2: "L'arrêt physique %{source_label} (%{source_objectid}) n'a pas de parent" - detail_4_accesspoint_1_min_size: "L'attribut %{reference_value} du point d'accès %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" - detail_4_accesspoint_1_max_size: "L'attribut %{reference_value} du point d'accès %{source_label} (%{source_objectid}) est trop grand (%{error_value})" - detail_4_accesspoint_1_pattern: "L'attribut %{reference_value} du point d'accès %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" - detail_4_accesspoint_1_unique: "L'attribut %{reference_value} du point d'accès %{source_label} (%{source_objectid}) a une valeur partagée avec le point d'accès %{target_0_label} (%{target_0_objectid})" - detail_4_accesslink_1_min_size: "L'attribut %{reference_value} du lien d'accès %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" - detail_4_accesslink_1_max_size: "L'attribut %{reference_value} du lien d'accès %{source_label} (%{source_objectid}) est trop grand (%{error_value})" - detail_4_accesslink_1_pattern: "L'attribut %{reference_value} du lien d'accès %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" - detail_4_accesslink_1_unique: "L'attribut %{reference_value} du lien d'accès %{source_label} (%{source_objectid}) a une valeur partagée avec le lien d'accès %{target_0_label} (%{target_0_objectid})" - detail_4_connectionlink_1_min_size: "L'attribut %{reference_value} de la correspondance %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" - detail_4_connectionlink_1_max_size: "L'attribut %{reference_value} de la correspondance %{source_label} (%{source_objectid}) est trop grand (%{error_value})" - detail_4_connectionlink_1_pattern: "L'attribut %{reference_value} de la correspondance %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" - detail_4_connectionlink_1_unique: "L'attribut %{reference_value} de la correspondance %{source_label} (%{source_objectid}) a une valeur partagée avec la correspondance %{target_0_label} (%{target_0_objectid})" - detail_4_connectionlink_2: "Sur la correspondance %{source_label} (%{source_objectid}) au moins l'un des arrêts %{startName} (%{startId}) et %{endName} (%{endId}) n'est pas un arrêt physique" - detail_4_timetable_1_min_size: "L'attribut %{reference_value} du calendrier %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" - detail_4_timetable_1_max_size: "L'attribut %{reference_value} du calendrier %{source_label} (%{source_objectid}) est trop grand (%{error_value})" - detail_4_timetable_1_pattern: "L'attribut %{reference_value} du calendrier %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" - detail_4_timetable_1_unique: "L'attribut %{reference_value} du calendrier %{source_label} (%{source_objectid}) a une valeur partagée avec le calendrier %{target_0_label} (%{target_0_objectid})" - detail_4_line_1_min_size: "L'attribut %{reference_value} de la ligne %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" - detail_4_line_1_max_size: "L'attribut %{reference_value} de la ligne %{source_label} (%{source_objectid}) est trop grand (%{error_value})" - detail_4_line_1_pattern: "L'attribut %{reference_value} de la ligne %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" - detail_4_line_1_unique: "L'attribut %{reference_value} de la ligne %{source_label} (%{source_objectid}) a une valeur partagée avec la ligne %{target_0_label} (%{target_0_objectid})" - detail_4_line_2: "La ligne %{source_label} (%{source_objectid}) a un mode de transport interdit %{error_value}" - detail_4_line_3_1: "La ligne %{source_label} (%{source_objectid}) n'a pas de groupe de lignes" - detail_4_line_3_2: "La ligne %{source_label} (%{source_objectid}) a plusieurs groupes de lignes" - detail_4_line_4_1: "La ligne %{source_label} (%{source_objectid}) n'a pas de séquence d'arrêts" - detail_4_line_4_2: "La ligne %{source_label} (%{source_objectid}) a trop de séquences d'arrêts non associées (%{error_value})" - detail_4_route_1_min_size: "L'attribut %{reference_value} de la séquence d'arrêts %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" - detail_4_route_1_max_size: "L'attribut %{reference_value} de la séquence d'arrêts %{source_label} (%{source_objectid}) est trop grand (%{error_value})" - detail_4_route_1_pattern: "L'attribut %{reference_value} de la séquence d'arrêts %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" - detail_4_route_1_unique: "L'attribut %{reference_value} de la séquence d'arrêts %{source_label} (%{source_objectid}) a une valeur partagée avec la séquence d'arrêts %{target_0_label} (%{target_0_objectid})" - detail_4_journeypattern_1_min_size: "L'attribut %{reference_value} de la mission %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" - detail_4_journeypattern_1_max_size: "L'attribut %{reference_value} de la mission %{source_label} (%{source_objectid}) est trop grand (%{error_value})" - detail_4_journeypattern_1_pattern: "L'attribut %{reference_value} de la mission %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" - detail_4_journeypattern_1_unique: "L'attribut %{reference_value} de la mission %{source_label} (%{source_objectid}) a une valeur partagée avec la mission %{target_0_label} (%{target_0_objectid})" - detail_4_vehiclejourney_1_min_size: "L'attribut %{reference_value} de la course %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" - detail_4_vehiclejourney_1_max_size: "L'attribut %{reference_value} de la course %{source_label} (%{source_objectid}) est trop grand (%{error_value})" - detail_4_vehiclejourney_1_pattern: "L'attribut %{reference_value} de la course %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" - detail_4_vehiclejourney_1_unique: "L'attribut %{reference_value} de la course %{source_label} (%{source_objectid}) a une valeur partagée avec la course %{target_0_label} (%{target_0_objectid})" - detail_4_vehiclejourney_2: "La course %{source_label} (%{source_objectid}) a un mode de transport interdit %{error_value}" - activemodel: - models: - compliance_check_result: - zero: "Validation" - one: "Validation" - other: "Validation" - attributes: - compliance_check_result: - 1-NEPTUNE-XML-1: "Conformité à la syntaxe XML suivant les recommandations du W3C." - 1-NEPTUNE-XML-2: "Conformité au schéma défini par la XSD du profil TRIDENT/NEPTUNE." - 2-NEPTUNE-Common-1: "Unicité des éléments objectId des différents objets d'un lot de fichiers Neptune." - 2-NEPTUNE-Common-2: "Unicité des éléments regitrationNumber des différents objets d'un lot de fichiers Neptune." - 2-NEPTUNE-Network-1: "Correcte référence à des lignes <Line> dans version du réseau <PTNetwork>." - 2-NEPTUNE-Network-2: "Valeur autorisée pour le type de source <SourceType> dans version du réseau <PTNetwork>." - 2-NEPTUNE-GroupOfLine-1: "Correcte référence à des lignes <Line> dans groupe de lignes <GroupOfLine>." - 2-NEPTUNE-StopArea-1: "Correcte référence à des arrêts <StopArea> et/ou à des points d'arrêt sur parcours <StopPoint> dans les arrêts <StopArea>." - 2-NEPTUNE-StopArea-2: "Correcte référence à des arrêts <StopArea> dans les arrêts <StopArea> de type StopPlace." - 2-NEPTUNE-StopArea-3: "Correcte référence à des arrêts <StopArea> dans les arrêts <StopArea> de type CommercialStopPoint." - 2-NEPTUNE-StopArea-4: "Correcte référence à des points d'arrêt sur parcours <StopPoint> dans les arrêts <StopArea> de type BoardingPosition ou Quay." - 2-NEPTUNE-StopArea-5: "Correcte référence à une position géographique <AreaCentroid> dans les arrêts <StopArea> de tout type StopPlace, CommercialStopPoint, BoardingPosition et Quay." - 2-NEPTUNE-StopArea-6: "référenceréciproque d'une position géographique <AreaCentroid> dans les arrêts <StopArea> de tout type StopPlace, CommercialStopPoint, BoardingPosition et Quay." - 2-NEPTUNE-ITL-1: "Correcte référence à des arrêts <StopArea> dans les arrêts <StopArea> de type ITL." - 2-NEPTUNE-ITL-2: "Correcte référence à des arrêts <StopArea> de type ITL dans la classe d’objets <ITL>." - 2-NEPTUNE-ITL-3: "Correcte référence à des arrêts <StopArea> dans la classe d’objets <ITL>." - 2-NEPTUNE-ITL-4: "Vérification du type de référence à des arrêts <StopArea> type ITL dans la classe d’objets <ITL>." - 2-NEPTUNE-ITL-5: "Bonne référence à la ligne <Line> dans la classe d’objets <ITL>." - 2-NEPTUNE-AreaCentroid-1: "Correcte référence à des arrêts <StopArea> dans la classe d’objets <AreaCentroid>." - 2-NEPTUNE-AreaCentroid-2: "Vérification du modèle de projection de référence utilisé." - 2-NEPTUNE-ConnectionLink-1: "Correcte référence aux arrêts <StopArea> définissant des tronçons de correspondance <ConnectionLink>." - 2-NEPTUNE-AccessPoint-1: "Correcte référence à un arrêt <StopArea> dans les accès <AccessPoint>." - 2-NEPTUNE-AccessPoint-2: "Correcte référence à un arrêt <StopArea> dans les accès <AccessPoint>." - 2-NEPTUNE-AccessPoint-3: "Existence de liens d'accès <AccessLink> sur les accès <AccessPoint>." - 2-NEPTUNE-AccessPoint-4: "Existence de liens d'accès <AccessLink> sur les accès <AccessPoint> de type 'in'." - 2-NEPTUNE-AccessPoint-5: "Existence de liens d'accès <AccessLink> sur les accès <AccessPoint> sur les accès de type 'out'." - 2-NEPTUNE-AccessPoint-6: "Existence de liens d'accès <AccessLink> sur les accès <AccessPoint> sur les accès de type 'inout'." - 2-NEPTUNE-AccessPoint-7: "Vérification du modèle de projection de référence utilisé." - 2-NEPTUNE-AccessLink-1: "Correcte référence aux arrêts <StopArea> et accès <AccessPoint> définissant des liens d'accès <AccessLink>." - 2-NEPTUNE-AccessLink-2: "Correcte référence aux arrêts <StopArea> et accès <AccessPoint> définissant des liens d'accès <AccessLink>." - 2-NEPTUNE-Line-1: "Correcte référence au réseau dans l'objet ligne <Line>." - 2-NEPTUNE-Line-2: "Correcte référence à un point d'arrêt sur parcours <StopPoint> comme terminus de ligne <Line>." - 2-NEPTUNE-Line-3: "Correcte référence à un point d'arrêt sur parcours <StopPoint> comme terminus de ligne <Line>." - 2-NEPTUNE-Line-4: "Correcte référence aux séquences d'arrêts <ChouetteRoute> dans l'objet ligne <Line>." - 2-NEPTUNE-Line-5: "Correcte référence aux séquences d'arrêts <ChouetteRoute> dans l'objet ligne <Line>." - 2-NEPTUNE-Line-6: "Présence d'au moins une valeur parmi <name>,<number> ou <publishedName> dans l'objet ligne <Line>." - 2-NEPTUNE-Route-1: "Existence des missions <JourneyPattern> référencées par la séquence d'arrêt <ChouetteRoute>." - 2-NEPTUNE-Route-2: "Existence des tronçons commerciaux <PtLink> référencés par la séquence d'arrêt <ChouetteRoute>." - 2-NEPTUNE-Route-3: "Existence de la séquence opposée <ChouetteRoute> référencée par la séquence d'arrêt <ChouetteRoute>." - 2-NEPTUNE-Route-4: "Correcte référence à un tronçon commercial <PtLink> dans une séquence d'arrêts <ChouetteRoute>." - 2-NEPTUNE-Route-5: "Vérification que tous les points d'arrêts sur parcours sont rattachés à une séquence d'arrêts <ChouetteRoute> au départ d'un tronçon commercial <PtLink> et/ou à l'arrivée d'un autre tronçon commercial <PtLink> de la même séquence d'arrêts." - 2-NEPTUNE-Route-6: "Vérification du correct ordonnancement des points d'arrêts sur parcours <StopPoint> dans le chainage des tronçons <PtLink> d'une séquence d'arrêts <ChouetteRoute>." - 2-NEPTUNE-Route-7: "référence mutuelle des missions <JourneyPattern> et des séquences d'arrêts <ChouetteRoute>." - 2-NEPTUNE-Route-8: "Cohérence des références aux points d'arrêt des missions <JourneyPattern> et des séquences d'arrêts <ChouetteRoute>." - 2-NEPTUNE-Route-9: "Utilité des points d'arrêts sur parcours des séquences d'arrêts <ChouetteRoute>." - 2-NEPTUNE-Route-10: "référence d'une séquence d'arrêts <ChouetteRoute> à une séquence d'arrêts opposée." - 2-NEPTUNE-Route-11: "Cohérence des sens de la référence d'une séquence d'arrêts <ChouetteRoute> à une séquence d'arrêts opposée." - 2-NEPTUNE-Route-12: "Cohérence des terminus de la référence d'une séquence d'arrêts <ChouetteRoute> à une séquence d'arrêts opposée." - 2-NEPTUNE-PtLink-1: "Existence des arrêts <StopPoint> référencés par les tronçons commerciaux <PTLink>." - 2-NEPTUNE-JourneyPattern-1: "Existence de la séquence d'arrêt <ChouetteRoute> référencée par la mission <JourneyPattern>." - 2-NEPTUNE-JourneyPattern-2: "Existence des arrêts <StopPoint> référencés par la mission <JourneyPattern>." - 2-NEPTUNE-JourneyPattern-3: "Existence de la ligne <Line> référencée par la mission <JourneyPattern>." - 2-NEPTUNE-StopPoint-1: "Existence de la ligne <Line> référencée par l'arrêt <StopPoint>." - 2-NEPTUNE-StopPoint-2: "Existence du réseau <PTNetwork> référence par l'arrêt <StopPoint>." - 2-NEPTUNE-StopPoint-3: "Existence de l'arrêt <StopArea> référencé par l'arrêt <StopPoint>." - 2-NEPTUNE-StopPoint-4: "Vérification du modèle de projection de référence utilisé." - 2-NEPTUNE-Timetable-1: "Utilité des calendriers." - 2-NEPTUNE-Timetable-2: "Utilité des calendriers." - 2-NEPTUNE-Timetable-2: "Validité des dates de début et de fin des périodes des calendriers" - 2-NEPTUNE-Timetable-3: "Validité des dates de début et de fin des périodes des calendriers" - 2-NEPTUNE-VehicleJourney-1: "Existence de la séquence d'arrêt <ChouetteRoute> référencée par la course <VehicleJourney>." - 2-NEPTUNE-VehicleJourney-2: "Existence de la mission <JourneyPattern> référencée par la course <VehicleJourney>." - 2-NEPTUNE-VehicleJourney-3: "Existence de la ligne <Line> référencée par la course <VehicleJourney>." - 2-NEPTUNE-VehicleJourney-4: "Existence de l'opérateur <Company> référencé par la course <VehicleJourney>." - 2-NEPTUNE-VehicleJourney-5: "Existence de la tranche horaire <TimeSlot> référencée par la course <VehicleJourney>." - 2-NEPTUNE-VehicleJourney-6: "Cohérence entre la course, la mission et la séquence d'arrêts." - 2-NEPTUNE-VehicleJourney-7: "Utilité des missions" - 2-NEPTUNE-VehicleJourney-8: "Mission implicite" - 2-NEPTUNE-VehicleJourneyAtStop-1: "Existence de l'arrêt <StopPoint> référencé par l'horaire <VehicleJourneyAtStop>." - 2-NEPTUNE-VehicleJourneyAtStop-2: "Existence de la course <VehicleJourney> référenceé par l'horaire <VehicleJourneyAtStop>." - 2-NEPTUNE-VehicleJourneyAtStop-3: "adéquation des horaires de la course à la séquence d'arrêts." - 2-NEPTUNE-VehicleJourneyAtStop-4: "adéquation des horaires de la course à la mission." - 2-NEPTUNE-Facility-1: "Existence de l'arrêt <StopArea> référencé par l'équipement <Facility>." - 2-NEPTUNE-Facility-2: "Existence de l'arrêt <StopArea> référencé par l'équipement <Facility>." - 2-NEPTUNE-Facility-3: "Existence de la ligne <Line> référencée par l'équipement <Facility>." - 2-NEPTUNE-Facility-4: "Existence de la correspondance <ConnectionLink> référencée par l'équipement <Facility>." - 2-NEPTUNE-Facility-5: "Existence de l'arrêt <StopPoint> référencé par l'équipement <Facility>." - 2-NEPTUNE-Facility-6: "Vérification du modèle de projection de référence utilisé." - - ## GTFS - 1-GTFS-CSV-1: "Contrôle de la lecture du fichier" - 1-GTFS-CSV-2: "Contrôle de la syntaxe d'une ligne" - 1-GTFS-CSV-3: "Contrôle de la syntaxe des entêtes" - 1-GTFS-CSV-4: "Contrôle de la non présence de doublons dans les entêtes" - 1-GTFS-CSV-5: "Contrôle de la syntaxe CSV GTFS du fichier" - 1-GTFS-CSV-6: "Contrôle de la non présence de balise HTML" - 1-GTFS-CSV-7: "Contrôle de la non présence d'espace en début ou fin de colonne" - - 1-GTFS-Common-1: "Contrôle de la présence des fichiers obligatoires" - 1-GTFS-Common-2: "Contrôle de la présence des fichiers calendar ou calendar_dates" - 1-GTFS-Common-3: "Contrôle de la présence des fichiers optionnels" - 1-GTFS-Common-4: "Contrôle de la présence des fichiers non traités" - - 1-GTFS-Common-5: "Contrôle de la présence de données dans les fichiers obligatoires" - 1-GTFS-Common-6: "Contrôle de la présence de données dans les fichiers calendar ou calendar_dates" - 1-GTFS-Common-7: "Contrôle de la présence de données dans les fichiers optionnels" - - 1-GTFS-Common-8: "Contrôle de l'unicité des identifiants" - 1-GTFS-Common-9: "Contrôle de la présence des colonnes obligatoires" - 1-GTFS-Common-10: "Contrôle de la présence des colonnes qui devraient être obligatoires " - 1-GTFS-Common-11: "Contrôle de la présence de colonnes non traités" - - 1-GTFS-Common-12: "Contrôle de la présence des données obligatoires" - 1-GTFS-Common-13: "Contrôle de la présence de la colonne agency_id si plusieurs agences sont définies" - 1-GTFS-Common-14: "Contrôle de la présence de la colonne agency_id même si une seule agence est définie" - 1-GTFS-Common-15: "Contrôle de la présence d'une donnée sur valeur d'une autre" - - 1-GTFS-Common-16: "Contrôle du type des données" - - 1-GTFS-Route-1: "Contrôle de la présence des colonnes obligatoires conditionnelles" - 1-GTFS-Route-2: "Contrôle de la présence de données dans route_long_name ou route_short_name" - - 1-GTFS-Calendar-1: "Contrôle de la présence d'au moins un jour d'application " - 1-GTFS-Calendar-2: "Contrôle de la chronologie des dates de début et fin de période" - - 2-GTFS-Common-1: "Contrôle de la présence des objets référencés" - 2-GTFS-Common-2: "Contrôle de l'utilité des objets" - 2-GTFS-Common-3: "Contrôle de l'unicité d'un couple de données" - 2-GTFS-Common-4: "Contrôle de la non redondance de valeurs" - 2-GTFS-Stop-1: "Contrôle du type du parent_station" - 2-GTFS-Stop-2: "Contrôle de l'utilité de la colonne location_type" - 2-GTFS-Stop-3: "Contrôle de l'unicité de désignation (stop_name,stop_desc)" - 2-GTFS-Stop-4: "Contrôle de la non présence de station dans des stations" - 2-GTFS-Route-1: "Contrôle de la différence entre route_short_name et route_long_name" - 2-GTFS-Route-2: "Contrôle de la non inclusion de route_short_name dans route_long_name" - 2-GTFS-Route-3: "Contrôle du contraste des couleurs" - 2-GTFS-Route-4: "Contrôle de la non présence d'une route inversant les valeurs route_short_name et route_long_name d'une autre" - - ## COMMON - 3-StopArea-1: "Vérification de la géolocalisation de tous les arrêts hors ITL" - 3-StopArea-2: "Vérification que 2 arrêts de noms différents en dehors d'un même regroupement d'arrêts ne sont pas trop proches" - 3-StopArea-3: "Vérification de l'unicité des arrêts" - 3-StopArea-4: "Vérification de la géolocalisation des arrêts" - 3-StopArea-5: "Vérification de la position relative des arrêts et de leur parent" - 3-AccessPoint-1: "Vérification de la géolocalisation de tous les accès" - 3-AccessPoint-2: "Vérification que deux accès de nom différents ne sont pas trop proches" - 3-AccessPoint-3: "Vérification de la proximité entre les accès et leur arrêt de rattachement" - 3-ConnectionLink-1: "Vérification de la proximité entre les deux arrêts d'une correspondance" - 3-ConnectionLink-2: "Vérification de la cohérence entre la distance fournie sur la correspondance et la distance géographique entre les deux arrêts de la correspondance" - 3-ConnectionLink-3: "Vérification de la vitesse de parcours entre les deux arrêts d'une correspondance" - 3-AccessLink-1: "Vérification de la proximité entre les deux extrémités d'un lien d'accès" - 3-AccessLink-2: "Vérification de la cohérence entre la distance fournie sur le lien d'accès et la distance géographique entre les deux extrémités du lien d'accès" - 3-AccessLink-3: "Vérification de la vitesse de parcours entre les deux extrémités d'un lien d'accès" - 3-Line-1: "Vérification de la non homonymie des lignes" - 3-Line-2: "Vérification de la présence de séquences d'arrêts sur la ligne" - 3-Route-1: "Vérification de la succession des arrêts de la séquence" - 3-Route-2: "Vérification de la séquence inverse" - 3-Route-3: "Vérification de la distance entre deux arrêts successifs de la séquence" - 3-Route-4: "Vérification de double définition de séquences" - 3-Route-5: "Vérification de séquences sans séquence opposée" - 3-Route-6: "Vérification de la présence d'arrêts dans la séquence" - 3-Route-7: "Vérification de la présence de missions" - 3-Route-8: "Vérification de l'utilisation des arrêts par les missions" - 3-Route-9: "Vérification de l’existence d’une mission passant par tous les arrêts de la séquence" - 3-JourneyPattern-1: "Vérification de double définition de missions" - 3-JourneyPattern-2: "Vérification de l’existence d’une mission passant par tous les arrêts de la séquence" - 3-JourneyPattern-3: "Vérification de double définition de missions" - 3-VehicleJourney-1: "Vérification de la chronologie des horaires de passage à un arrêt" - 3-VehicleJourney-2: "Vérification de la vitesse de transfert entre deux arrêts" - 3-VehicleJourney-3: "Vérification de la cohérence des courses successives desservant deux mêmes arrêts" - 3-VehicleJourney-4: "Vérification de l'affectation des courses à un calendrier" - 3-Facility-1: "Vérification de la géolocalisation de tous les accès" - 3-Facility-2: "Vérification de la proximité entre les équipements et leur arrêt de rattachement" - 4-Network-1: "Vérification de contraintes sur les attributs des réseaux" - 4-Company-1: "Vérification de contraintes sur les attributs des transporteurs" - 4-GroupOfLine-1: "Vérification de contraintes sur les attributs des groupes de lignes" - 4-StopArea-1: "Vérification de contraintes sur les attributs des arrêts" - 4-StopArea-2: "Vérification de l'existance d'un arrêt commercial pour les arrêts physiques" - 4-StopArea-3: "Vérification de la cohérence entre les noms de communes et leur code INSEE" - 4-AccessPoint-1: "Vérification de contraintes sur les attributs des accès" - 4-AccessLink-1: "Vérification de contraintes sur les attributs des liens d'accès" - 4-ConnectionLink-1: "Vérification de contraintes sur les attributs des correspondances" - 4-ConnectionLink-2: "Vérification des type d'arrêts en correspondance" - 4-Timetable-1: "Vérification de contraintes sur les attributs des calendiers" - 4-Line-1: "Vérification de contraintes sur les attributs des lignes" - 4-Line-2: "Vérification des modes de transport des lignes" - 4-Line-3: "Vérification des groupes de lignes d'une ligne" - 4-Line-4: "Vérification des séquences d'arrêts d'une ligne" - 4-Route-1: "Vérification de contraintes sur les attributs des séquences d'arrêt" - 4-JourneyPattern-1: "Vérification de contraintes sur les attributs des missions" - 4-VehicleJourney-1: "Vérification de contraintes sur les attributs des courses" - 4-VehicleJourney-2: "Vérification des modes de transport des courses" - severity: "Severity" - status: "Status" - rule_level: "Level" - rule_target: "Object" - rule_number: "Step" - rule_code: "Code" - violation_count: "errors" - violation_count_txt: "Number of errors" - objects: "Objects in violations" - detail: "Detail" - title: "Test title" - object: "Error object" - resource: "Resources of the error object" - url: "URL" - first_violations: "First violations" + diff --git a/config/locales/compliance_check_results.fr.yml b/config/locales/compliance_check_results.fr.yml index 19f436582..b3ddc53f2 100644 --- a/config/locales/compliance_check_results.fr.yml +++ b/config/locales/compliance_check_results.fr.yml @@ -1,457 +1,3 @@ fr: compliance_check_results: - errors: 'Erreurs' - file: - zip_name_prefix: "resultats_de_validation" - summary_errors_file_prefix: "sommaire_des_tests.csv" - detailed_errors_file_prefix: "details_des_erreurs.csv" - index: - line: "Li" - column: "Col" - in_progress: "Validation en cours..." - compliance_check_result: - severities: - error: "Obligatoires" - warning: "Optionnels" - error_txt: "Obligatoire" - warning_txt: "Optionnel" - statuses: - nok: "Erreur" - uncheck: "Absent" - ok: "Succès" - details: - #### level 1 - ## NEPTUNE - detail_1_neptune_xml_1: "%{source_label} : %{error_value}" - detail_1_neptune_xml_2: "%{source_label} : %{error_value}" - - ## GTFS - detail_1_gtfs_csv_1: "le fichier %{filename} est inexploitable" - detail_1_gtfs_csv_2: "le fichier %{filename} est inexploitable" - detail_1_gtfs_csv_3: "le fichier %{filename} contient un entête vide" - detail_1_gtfs_csv_4: "le fichier %{filename} contient des entêtes en double" - detail_1_gtfs_csv_5: "la ligne du fichier %{filename} ne respecte pas la syntaxe CSV" - detail_1_gtfs_csv_6: "le fichier %{filename} contient des balises HTML" - detail_1_gtfs_csv_7: "la valeur '%{error_value}' du champ %{reference_value} contient des espaces aux extrémités" - - detail_1_gtfs_common_1: "le fichier %{filename} est obligatoire" - detail_1_gtfs_common_2: "l'un des fichiers calendar.txt ou calendar_dates.txt est obligatoire" - detail_1_gtfs_common_3: "le fichier %{filename} optionnel n'est pas présent" - detail_1_gtfs_common_4: "le fichier %{filename} n'est pas traité" - detail_1_gtfs_common_5: "le fichier %{filename} obligatoire doit définir au moins une entrée" - detail_1_gtfs_common_6: "l'un des deux fichiers calendar.txt ou calendar_dates.txt doit définir au moins une entrée" - detail_1_gtfs_common_7: "le fichier %{filename} optionnel ne contient aucune entrée" - detail_1_gtfs_common_8: "la valeur %{error_value} est définie plusieurs fois pour la colonne %{reference_value}" - detail_1_gtfs_common_9: "la colonne %{error_value} est obligatoire" - detail_1_gtfs_common_10: "la colonne agency_id devrait être présente dans le fichier %{filename}" - detail_1_gtfs_common_11: "la colonne %{error_value} n'est pas exploitée dans le fichier %{filename}" - detail_1_gtfs_common_12: "la valeur de la colonne %{error_value} n'est pas renseignée" - detail_1_gtfs_common_13: "la colonne agency_id doit être présente dans le fichier %{filename}" - detail_1_gtfs_common_14: "la colonne agency_id est absente dans le fichier %{filename}" - detail_1_gtfs_common_15_1: "la valeur arrival_time est obligatoire en présence d'une valeur pour departure_time" - detail_1_gtfs_common_15_2: "la valeur departure_time est obligatoire en présence d'une valeur pour arrival_time" - detail_1_gtfs_common_15_3: "la valeur min_transfer_time est obligatoire quand transfer_type=2" - detail_1_gtfs_common_16: "la valeur %{error_value} n'est pas autorisée pour le champs %{reference_value} " - - detail_1_gtfs_route_1: "les champs route_long_name et route_short_name ne sont pas définies" - detail_1_gtfs_route_2: "les valeurs des champs route_long_name et route_short_name ne sont pas renseignées" - - detail_1_gtfs_calendar_1: "aucun jour d'application n'est activé" - detail_1_gtfs_calendar_2: "la date de fin du calendrier est antérieur ou égale à la date début" - - #### level 2 - ## NEPTUNE - detail_2_neptune_common_1: "L'élément %{source_objectid} a des attributs qui diffèrent entre les différents fichiers qui le définissent" - detail_2_neptune_common_2: "L'élément %{source_objectid} partage l'attribut RegistrationNumber = %{error_value} avec un autre objet de même type" - detail_2_neptune_network_1: "La ligne %{source_objectid} est absente de la liste des lignes du réseau %{target_0_objectid}" - detail_2_neptune_network_2: "Le réseau %{source_objectid} a un type de source non validee : %{error_value}, remplacé par %{reference_value}" - detail_2_neptune_groupofline_1: "La ligne %{source_objectid} est absente de la liste des lignes du du groupe de lignes %{target_0_objectid}" - detail_2_neptune_stoparea_1: "Le fils (contains = %{error_value}) de l'arrêt %{source_objectid} n'est pas de type StopArea ni StopPoint" - detail_2_neptune_stoparea_2: "L'arrêt %{source_objectid} de type %{reference_value} ne peut contenir que des arrêts de type StopPlace ou CommercialStopPoint, or un des arrêts contenus (contains = %{target_0_objectid}) est de type %{error_value}" - detail_2_neptune_stoparea_3: "L'arrêt %{source_objectid} de type %{reference_value} ne peut contenir que des arrêts de type BoardingPosition ou Quay, or un des arrêts contenus (contains = %{target_0_objectid}) est de type %{error_value}" - detail_2_neptune_stoparea_4: "L'arrêt %{source_objectid} de type %{reference_value} ne peut contenir que des points d'arrêt de séquence, or un des arrêts contenus (contains = %{target_0_objectid}) est un StopArea arrêt de type %{error_value}" - detail_2_neptune_stoparea_5: "L'arrêt %{source_objectid} référence une position géographique (centroidOfArea = %{error_value}) inexistante" - detail_2_neptune_stoparea_6: "L'arrêt %{source_objectid} référence une position géographique (centroidOfArea = %{target_0_objectid}) qui ne le référence pas en retour (containedIn = %{error_value})" - detail_2_neptune_itl_1: "Le fils (contains = %{target_0_objectid}) de type %{error_value} ne peut pas être contenu dans l'arrêt %{source_objectid} de type %{reference_value}" - detail_2_neptune_itl_2: "L'arrêt de type ITL %{source_objectid} n'est pas utilisé" - detail_2_neptune_itl_3: "L'arrêt areaId = %{error_value} référencé par l'ITL %{source_objectid} n'existe pas" - detail_2_neptune_itl_4: "L'arrêt areaId = %{target_0_objectid} référencé par l'ITL %{source_objectid} devrait être de type ITL et non de type %{error_value}" - detail_2_neptune_itl_5: "La référence lineIdShortCut = %{error_value} de l'ITL %{source_objectid} n'est pas cohérente avec la ligne %{target_0_objectid}" - detail_2_neptune_areacentroid_1: "La position géographique <AreaCentroid> %{source_objectid} référence un arrêt (containedIn = %{error_value}) inexistant" - detail_2_neptune_areacentroid_2: "La position géographique <AreaCentroid> %{source_objectid} utilise un référentiel géographique (longLatType = %{error_value}) invalide" - detail_2_neptune_connectionlink_1: "La correspondance %{source_objectid} référence 2 arrêts inexistants" - detail_2_neptune_accesspoint_1: "L'accès %{source_objectid} référence un arrêt parent (containedIn = %{error_value}) inexistant" - detail_2_neptune_accesspoint_2: "L'accès %{source_objectid} référence un arrêt parent (containedIn = %{target_0_objectid}) de type invalide (ITL)" - detail_2_neptune_accesspoint_3: "L'accès %{source_objectid} n'a pas de lien d'accès" - detail_2_neptune_accesspoint_4: "L'accès %{source_objectid} de type In a des liens d'accès sortants" - detail_2_neptune_accesspoint_5: "L'accès %{source_objectid} de type Out a des liens d'accès entrants" - detail_2_neptune_accesspoint_6: "L'accès %{source_objectid} de type InOut n'a que des liens d'accès entrants ou sortants" - detail_2_neptune_accesspoint_7: "L'accès %{source_objectid} utilise un référentiel géographique (longLatType = %{error_value}) invalide" - detail_2_neptune_accesslink_1: "La liaison d'accès %{source_objectid} référence %{error_value} qui n'existe pas" - detail_2_neptune_accesslink_2: "Sur la liaison d'accès %{source_objectid}, les références startOfLink = %{error_value} et endOfLink = %{reference_value} sont de même type" - detail_2_neptune_line_1: "La ligne %{source_objectid} référence un réseau (ptNetworkIdShortcut = %{error_value} inexistant" - detail_2_neptune_line_2: "La ligne %{source_objectid} référence un point d'arrêt <StopPoint> (lineEnd = %{error_value}) inexistant " - detail_2_neptune_line_3: "La ligne %{source_objectid} référence un point d'arrêt (lineEnd = %{error_value}) qui n'est pas terminus d'une séquence d'arrêts" - detail_2_neptune_line_4: "La ligne %{source_objectid} référence une séquence d'arrêt (routeId = %{error_value}) inexistante" - detail_2_neptune_line_5: "La séquence d'arrêts (routeId = %{target_0_objectid}) n'est pas référencée par la ligne %{source_objectid}" - detail_2_neptune_line_6: "La ligne %{source_objectid} ne renseigne aucun des champs name, number ou publishedName" - detail_2_neptune_route_1: "La séquence d'arrêts %{source_objectid} référence une mission (journeyPatternId = %{error_value}) inexistante" - detail_2_neptune_route_2: "La séquence d'arrêts %{source_objectid} référence un tronçon (ptLinkId = %{error_value}) inexistant" - detail_2_neptune_route_3: "La séquence retour (waybackRouteId = %{error_value}) de la séquence d'arrêts %{source_objectid} n'existe pas" - detail_2_neptune_route_4: "Le tronçon (ptLinkId = %{error_value}) référencé par la séquence d'arrêt %{source_objectid} est partagé avec %{target_0_objectid}" - detail_2_neptune_route_5: "Le tronçon %{source_objectid} partage un %{reference_value} : %{error_value} avec un autre tronçon" - detail_2_neptune_route_6_1: "La séquence d'arrêts %{source_objectid} n'est pas une séquence linéaire, le chainage des tronçons forme un anneau" - detail_2_neptune_route_6_2: "La séquence d'arrêts %{source_objectid} n'est pas une séquence linéaire, le chainage des tronçons est rompu au tronçon %{target_0_objectid}" - detail_2_neptune_route_7: "La séquence d'arrêts %{source_objectid} ne référence pas la mission %{target_0_objectid} alors que cette mission référence la séquence d'arrêt" - detail_2_neptune_route_8: "La mission journeyPatternId = %{target_0_objectid} de la séquence d'arrêts %{source_objectid} utilise des points d'arrêts hors séquence" - detail_2_neptune_route_9: "Le point d'arrêt (stopPointId = %{target_0_objectid}) de la séquence d'arrêts %{source_objectid} n'est utilisé dans aucune mission" - detail_2_neptune_route_10: "La séquence retour (waybackRouteId = %{target_0_objectid}) ne référence pas la séquence d'arrêts %{source_objectid} comme retour" - detail_2_neptune_route_11: "Le sens (%{reference_value}) de la séquence d'arrêt %{source_objectid} n'est pas compatible avec celui (%{error_value}) de la séquence opposée %{target_0_objectid}" - detail_2_neptune_route_12: "Le départ dans la zone %{reference_value}) de la séquence d'arrêts %{source_objectid} n'est pas dans la même zone que l'arrivée (zone %{error_value} de la séquence retour %{target_0_objectid}" - detail_2_neptune_ptlink_1: "Le tronçon %{source_objectid} reférence un %{reference_value} = %{error_value} inexistant" - detail_2_neptune_journeypattern_1: "La mission %{source_objectid} référence une séquence d'arrêts (routeId = %{error_value}) inexistante" - detail_2_neptune_journeypattern_2: "La mission %{source_objectid} référence un point d'arrêt (stopPointId = %{error_value}) inexistant" - detail_2_neptune_journeypattern_3: "La mission %{source_objectid} référence une ligne (lineIdShortcut = %{error_value}) inexistante" - detail_2_neptune_stoppoint_1: "Le point d'arrêt %{source_objectid} référence une ligne (lineIdShortcut = %{error_value}) inexistante" - detail_2_neptune_stoppoint_2: "Le point d'arrêt %{source_objectid} référence un réseau (ptNetworkIdShortcut = %{error_value}) inexistant" - detail_2_neptune_stoppoint_3: "Le point d'arrêt %{source_objectid} référence un arrêt (containedIn = %{error_value}) inexistant" - detail_2_neptune_stoppoint_4: "Le point d'arrêt %{source_objectid} utilise un référentiel géographique (longLatType = %{error_value}) invalide" - detail_2_neptune_timetable_1: "Le calendrier (<Timetable>) %{source_objectid} ne référence aucune course existante" - detail_2_neptune_timetable_2: "La course %{source_objectid} n'est référencée dans aucun calendrier (<Timetable>)" - detail_2_neptune_timetable_3: "Le calendrier (<Timetable>) %{source_objectid} contient une période invalide" - detail_2_neptune_vehiclejourney_1: "La course %{source_objectid} référence une séquence d'arrêts (routeId = %{error_value}) inexistante" - detail_2_neptune_vehiclejourney_2: "La course %{source_objectid} référence une mission (journeyPatternId = %{error_value}) inexistante" - detail_2_neptune_vehiclejourney_3: "La course %{source_objectid} référence une ligne (lineIdShortcut = %{error_value}) inexistante" - detail_2_neptune_vehiclejourney_4: "La course %{source_objectid} référence un opérateur (operatorId = %{error_value}) inexistant" - detail_2_neptune_vehiclejourney_5: "La course %{source_objectid} référence une fréquence horaire (timeSlotId = %{error_value}) inexistante" - detail_2_neptune_vehiclejourney_6: "La course %{source_objectid} référence une mission %{error_value} incompatible de la séquence d'arrêts %{reference_value}" - detail_2_neptune_vehiclejourney_7: "La mission %{source_objectid} n'est référencée par aucune course" - detail_2_neptune_vehiclejourney_8: "La course %{source_objectid} doit référencer une mission si la séquence d'arrêt en possède plusieurs" - detail_2_neptune_vehiclejourneyatstop_1: "La course %{source_objectid} fournit un horaire sur un point d'arrêt (stopPointId = %{error_value}) inexistant" - detail_2_neptune_vehiclejourneyatstop_2: "Un horaire de la course %{source_objectid} référence une autre course : vehicleJourneyId = %{error_value}" - detail_2_neptune_vehiclejourneyatstop_3: "La course %{source_objectid} ne fournit pas les horaires des points d'arrêts selon l'ordre de la séquence d'arrêts %{error_value}" - detail_2_neptune_vehiclejourneyatstop_4: "La course %{source_objectid} ne fournit pas les horaires des points d'arrêts de sa mission %{error_value}" - detail_2_neptune_facility_1: "L'équipement %{source_objectid} est situé sur un arrêt inexistant (containedId = %{error_value})" - detail_2_neptune_facility_2: "L'équipement %{source_objectid} référence un arrêt (stopAreaId = %{error_value}) inexistant" - detail_2_neptune_facility_3: "L'équipement %{source_objectid} référence une ligne (lineId = %{error_value} inexistante" - detail_2_neptune_facility_4: "L'équipement %{source_objectid} référence une correspondance (connectionLinkId = %{error_value} inexistante" - detail_2_neptune_facility_5: "L'équipement %{source_objectid} référence un point d'arrêt (stopPointId = %{error_value} inexistant" - detail_2_neptune_facility_6: "L'équipement %{source_objectid} utilise un référentiel géographique (longLatType = %{error_value}) invalide" - ## GTFS - detail_2_gtfs_common_1: "Identifiant %{reference_value} inconnu : %{error_value}" - detail_2_gtfs_common_2: "Identifiant %{reference_value} non référencé : %{error_value}" - detail_2_gtfs_common_3: "Le couple de champs (%{reference_value}) est en doublon (%{error_value}): " - detail_2_gtfs_common_4: "Les valeurs des champs (%{reference_value}) sont identiques : '%{error_value}'" - detail_2_gtfs_stop_1: "L'arrêt (%{source_objectid}) ne peut appartenir à un parent de type %{error_value}" - detail_2_gtfs_stop_2: "La colonne location_type n'est pas renseignée" - detail_2_gtfs_stop_3: "Le nom et la description de l'arrêt (%{source_objectid}) sont identiques : '%{error_value}'" - detail_2_gtfs_stop_4: "L'arrêt (%{source_objectid}) de type station ne peut appartenir à une autre station (%{error_value})" - detail_2_gtfs_route_1: "La route (%{source_objectid}) a la même valeur (%{error_value}) pour route_short_name et route_long_name" - detail_2_gtfs_route_2: "La route (%{source_objectid}) réutilise la valeur de route_short_name (%{error_value}) dans route_long_name (%{reference_value})" - detail_2_gtfs_route_3: "les couleurs de la route (%{source_objectid}) ne sont pas contrastées" - detail_2_gtfs_route_4: "La route (%{source_objectid}) utilise les valeurs (route_short_name,route_long_name) de la route (%{error_value}) " - - #### level 3 - detail_3_stoparea_1: "L'arrêt %{source_label} (%{source_objectid}) n'est pas géolocalisé" - detail_3_stoparea_2: "L'arrêt %{source_label} (%{source_objectid}) est localisé trop près de l'arrêt %{target_0_label} (%{target_0_objectid}) : distance %{error_value} < %{reference_value}" - detail_3_stoparea_3: "Les arrêts %{source_label} (%{source_objectid} et %{target_0_objectid}) sont desservis par les mêmes lignes" - detail_3_stoparea_4: "L'arrêt %{source_label} (%{source_objectid}) est en dehors du périmètre de contrôle" - detail_3_stoparea_5: "L'arrêt %{source_label} (%{source_objectid}) est localisé trop loin de son parent %{target_0_label} (%{target_0_objectid}) : distance %{error_value} > %{reference_value}" - detail_3_accesspoint_1: "L'accès %{source_label} (%{source_objectid}) n'est pas géolocalisé" - detail_3_accesspoint_2: "L'accès %{source_label} (%{source_objectid}) est localisé trop près de l'accès %{target_0_label} (%{target_0_objectid}) : distance %{error_value} < %{reference_value}" - detail_3_accesspoint_3: "L'accès %{source_label} (%{source_objectid}) est localisé trop loin de son parent %{target_0_label} (%{target_0_objectid}) : distance %{error_value} > %{reference_value}" - detail_3_connectionlink_1: "Sur la correspondance %{source_label} (%{source_objectid}), la distance entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid}) est trop grande : distance %{error_value} > %{reference_value}" - detail_3_connectionlink_2: "Sur la correspondance %{source_label} (%{source_objectid}), la distance entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid}) : %{error_value} est supérieure à la longueur du lien : %{reference_value}" - detail_3_connectionlink_3_1: "Sur la correspondance %{source_label} (%{source_objectid}), la vitesse par défaut %{error_value} est supérieure à %{reference_value} km/h" - detail_3_connectionlink_3_2: "Sur la correspondance %{source_label} (%{source_objectid}), la vitesse pour un voyageur occasionnel %{error_value} est supérieure à %{reference_value} km/h" - detail_3_connectionlink_3_3: "Sur la correspondance %{source_label} (%{source_objectid}), la vitesse pour un voyageur habitué %{error_value} est supérieure à %{reference_value} km/h" - detail_3_connectionlink_3_4: "Sur la correspondance %{source_label} (%{source_objectid}), la vitesse pour un voyageur à mobilité réduite %{error_value} est supérieure à %{reference_value} km/h" - detail_3_accesslink_1: "Sur le lien d'accès %{source_label} (%{source_objectid}), la distance entre l'arrêt %{target_0_label} (%{target_0_objectid}) et l'accès %{target_1_label} (%{target_1_objectid}) est trop grande : distance %{error_value} > %{reference_value}" - detail_3_accesslink_2: "Sur le lien d'accès %{source_label} (%{source_objectid}), la distance entre l'arrêt %{target_0_label} (%{target_0_objectid}) et l'accès %{target_1_label} (%{target_1_objectid}) : %{error_value} est supérieure à la longueur du lien : %{reference_value}" - detail_3_accesslink_3_1: "Sur le lien d'accès %{source_label} (%{source_objectid}), la vitesse par défaut %{error_value} est supérieure à %{reference_value} km/h" - detail_3_accesslink_3_2: "Sur le lien d'accès %{source_label} (%{source_objectid}), la vitesse pour un voyageur occasionnel %{error_value} est supérieure à %{reference_value} km/h" - detail_3_accesslink_3_3: "Sur le lien d'accès %{source_label} (%{source_objectid}), la vitesse pour un voyageur habitué %{error_value} est supérieure à %{reference_value} km/h" - detail_3_accesslink_3_4: "Sur le lien d'accès %{source_label} (%{source_objectid}), la vitesse pour un voyageur à mobilité réduite %{error_value} est supérieure à %{reference_value} km/h" - detail_3_line_1: "La ligne %{source_label} (%{source_objectid}) a une ligne homonyme sur le même réseau %{target_0_label} (%{target_0_objectid})" - detail_3_line_2: "La ligne %{source_label} (%{source_objectid}) n'a pas de séquence d'arrêts" - detail_3_route_1: "Sur la séquence d'arrêt %{source_label} (%{source_objectid}), l'arrêt %{target_0_label} (%{target_0_objectid}) est desservi 2 fois consécutivement" - detail_3_route_2: "Les terminus de la séquence d'arrêt %{source_label} (%{source_objectid}) ne sont pas cohérent avec ceux de sa séquence opposée : l'une part de %{target_0_label} (%{target_0_objectid}) et l'autre arrive à %{target_1_label} (%{target_1_objectid})" - detail_3_route_3_1: "Sur la séquence d'arrêt %{source_label} (%{source_objectid}), entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid}), distance %{error_value} < %{reference_value} " - detail_3_route_3_2: "Sur la séquence d'arrêt %{source_label} (%{source_objectid}), entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid}), distance %{error_value} > %{reference_value} " - detail_3_route_4: "La séquence d'arrêt %{source_label} (%{source_objectid}) utilise la même liste ordonnée d'arrêts que la séquence d'arrêts %{target_0_label} (%{target_0_objectid})" - detail_3_route_5: "La séquence d'arrêt %{source_label} (%{source_objectid}) peut admettre la séquence %{target_0_label} (%{target_0_objectid}) comme séquence opposée" - detail_3_route_6: "La séquence d'arrêt %{source_label} (%{source_objectid}) doit avoir un minimum de 2 arrêts" - detail_3_route_7: "La séquence d'arrêt %{source_label} (%{source_objectid}) n'a pas de mission" - detail_3_route_8: "La séquence d'arrêt %{source_label} (%{source_objectid}) a %{error_value} arrêts non utilisés par des missions" - detail_3_route_9: "La séquence d'arrêt %{source_label} (%{source_objectid}) n'a pas de mission desservant l'ensemble de ses arrêts" - detail_3_journeypattern_1: "La mission %{source_label} (%{source_objectid}) utilise les mêmes arrêts que la mission %{target_0_label} (%{target_0_objectid}) - nombre d'arrêts = %{error_value}" - detail_3_vehiclejourney_1: "Arrêt %{target_0_label} (%{target_0_objectid}) : durée d'arrêt mesurée %{error_value} > %{reference_value}" - detail_3_vehiclejourney_2_1: "La course %{source_label} (%{source_objectid}) a des horaires décroissants entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid})" - detail_3_vehiclejourney_2_2: "La course %{source_label} (%{source_objectid}) a une vitesse %{error_value} < %{reference_value} km/h entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid})" - detail_3_vehiclejourney_2_3: "La course %{source_label} (%{source_objectid}) a une vitesse %{error_value} > %{reference_value} km/h entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid})" - detail_3_vehiclejourney_3: "La course %{source_label} (%{source_objectid}) a une variation de progression entre les arrêts %{target_1_label} (%{target_1_objectid}) et %{target_2_label} (%{target_2_objectid}) %{error_value} > %{reference_value} avec la course %{target_0_label} (%{target_0_objectid})" - detail_3_vehiclejourney_4: "La course %{source_label} (%{source_objectid}) n'a pas de calendrier d'application" - detail_3_facility_1: "L'équipement %{source_label} (%{source_objectid}) n'est pas géolocalisé" - detail_3_facility_2: "L'équipement %{source_label} (%{source_objectid}) est localisé trop loin de son parent %{areaName} (%{areaId}) : distance %{error_value} > %{reference_value}" - - detail_4_network_1_min_size: "L'attribut %{reference_value} du réseau %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value}) " - detail_4_network_1_max_size: "L'attribut %{reference_value} du réseau %{source_label} (%{source_objectid}) est trop grand (%{error_value})" - detail_4_network_1_pattern: "L'attribut %{reference_value} du réseau %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" - detail_4_network_1_unique: "L'attribut %{reference_value} du réseau %{source_label} (%{source_objectid}) a une valeur partagée avec le réseau %{target_0_label} (%{target_0_objectid})" - detail_4_company_1_min_size: "L'attribut %{reference_value} du transporteur %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" - detail_4_company_1_max_size: "L'attribut %{reference_value} du transporteur %{source_label} (%{source_objectid}) est trop grand (%{error_value})" - detail_4_company_1_pattern: "L'attribut %{reference_value} du transporteur %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" - detail_4_company_1_unique: "L'attribut %{reference_value} du transporteur %{source_label} (%{source_objectid}) a une valeur partagée avec le transporteur %{target_0_label} (%{target_0_objectid})" - detail_4_groupofline_1_min_size: "L'attribut %{reference_value} du groupe de lignes %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" - detail_4_groupofline_1_max_size: "L'attribut %{reference_value} du groupe de lignes %{source_label} (%{source_objectid}) est trop grand (%{error_value})" - detail_4_groupofline_1_pattern: "L'attribut %{reference_value} du groupe de lignes %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" - detail_4_groupofline_1_unique: "L'attribut %{reference_value} du groupe de lignes %{source_label} (%{source_objectid}) a une valeur partagée avec le groupe de lignes %{target_0_label} (%{target_0_objectid})" - detail_4_stoparea_1_min_size: "L'attribut %{reference_value} de l'arrêt %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" - detail_4_stoparea_1_max_size: "L'attribut %{reference_value} de l'arrêt %{source_label} (%{source_objectid}) est trop grand (%{error_value})" - detail_4_stoparea_1_pattern: "L'attribut %{reference_value} de l'arrêt %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" - detail_4_stoparea_1_unique: "L'attribut %{reference_value} de l'arrêt %{source_label} (%{source_objectid}) a une valeur partagée avec l'arrêt %{target_0_label} (%{target_0_objectid})" - detail_4_stoparea_2: "L'arrêt physique %{source_label} (%{source_objectid}) n'a pas de parent" - detail_4_accesspoint_1_min_size: "L'attribut %{reference_value} du point d'accès %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" - detail_4_accesspoint_1_max_size: "L'attribut %{reference_value} du point d'accès %{source_label} (%{source_objectid}) est trop grand (%{error_value})" - detail_4_accesspoint_1_pattern: "L'attribut %{reference_value} du point d'accès %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" - detail_4_accesspoint_1_unique: "L'attribut %{reference_value} du point d'accès %{source_label} (%{source_objectid}) a une valeur partagée avec le point d'accès %{target_0_label} (%{target_0_objectid})" - detail_4_accesslink_1_min_size: "L'attribut %{reference_value} du lien d'accès %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" - detail_4_accesslink_1_max_size: "L'attribut %{reference_value} du lien d'accès %{source_label} (%{source_objectid}) est trop grand (%{error_value})" - detail_4_accesslink_1_pattern: "L'attribut %{reference_value} du lien d'accès %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" - detail_4_accesslink_1_unique: "L'attribut %{reference_value} du lien d'accès %{source_label} (%{source_objectid}) a une valeur partagée avec le lien d'accès %{target_0_label} (%{target_0_objectid})" - detail_4_connectionlink_1_min_size: "L'attribut %{reference_value} de la correspondance %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" - detail_4_connectionlink_1_max_size: "L'attribut %{reference_value} de la correspondance %{source_label} (%{source_objectid}) est trop grand (%{error_value})" - detail_4_connectionlink_1_pattern: "L'attribut %{reference_value} de la correspondance %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" - detail_4_connectionlink_1_unique: "L'attribut %{reference_value} de la correspondance %{source_label} (%{source_objectid}) a une valeur partagée avec la correspondance %{target_0_label} (%{target_0_objectid})" - detail_4_connectionlink_2: "Sur la correspondance %{source_label} (%{source_objectid}) au moins l'un des arrêts %{startName} (%{startId}) et %{endName} (%{endId}) n'est pas un arrêt physique" - detail_4_timetable_1_min_size: "L'attribut %{reference_value} du calendrier %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" - detail_4_timetable_1_max_size: "L'attribut %{reference_value} du calendrier %{source_label} (%{source_objectid}) est trop grand (%{error_value})" - detail_4_timetable_1_pattern: "L'attribut %{reference_value} du calendrier %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" - detail_4_timetable_1_unique: "L'attribut %{reference_value} du calendrier %{source_label} (%{source_objectid}) a une valeur partagée avec le calendrier %{target_0_label} (%{target_0_objectid})" - detail_4_line_1_min_size: "L'attribut %{reference_value} de la ligne %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" - detail_4_line_1_max_size: "L'attribut %{reference_value} de la ligne %{source_label} (%{source_objectid}) est trop grand (%{error_value})" - detail_4_line_1_pattern: "L'attribut %{reference_value} de la ligne %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" - detail_4_line_1_unique: "L'attribut %{reference_value} de la ligne %{source_label} (%{source_objectid}) a une valeur partagée avec la ligne %{target_0_label} (%{target_0_objectid})" - detail_4_line_2: "La ligne %{source_label} (%{source_objectid}) a un mode de transport interdit %{error_value}" - detail_4_line_3_1: "La ligne %{source_label} (%{source_objectid}) n'a pas de groupe de lignes" - detail_4_line_3_2: "La ligne %{source_label} (%{source_objectid}) a plusieurs groupes de lignes" - detail_4_line_4_1: "La ligne %{source_label} (%{source_objectid}) n'a pas de séquence d'arrêts" - detail_4_line_4_2: "La ligne %{source_label} (%{source_objectid}) a trop de séquences d'arrêts non associées (%{error_value})" - detail_4_route_1_min_size: "L'attribut %{reference_value} de la séquence d'arrêts %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" - detail_4_route_1_max_size: "L'attribut %{reference_value} de la séquence d'arrêts %{source_label} (%{source_objectid}) est trop grand (%{error_value})" - detail_4_route_1_pattern: "L'attribut %{reference_value} de la séquence d'arrêts %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" - detail_4_route_1_unique: "L'attribut %{reference_value} de la séquence d'arrêts %{source_label} (%{source_objectid}) a une valeur partagée avec la séquence d'arrêts %{target_0_label} (%{target_0_objectid})" - detail_4_journeypattern_1_min_size: "L'attribut %{reference_value} de la mission %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" - detail_4_journeypattern_1_max_size: "L'attribut %{reference_value} de la mission %{source_label} (%{source_objectid}) est trop grand (%{error_value})" - detail_4_journeypattern_1_pattern: "L'attribut %{reference_value} de la mission %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" - detail_4_journeypattern_1_unique: "L'attribut %{reference_value} de la mission %{source_label} (%{source_objectid}) a une valeur partagée avec la mission %{target_0_label} (%{target_0_objectid})" - detail_4_vehiclejourney_1_min_size: "L'attribut %{reference_value} de la course %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" - detail_4_vehiclejourney_1_max_size: "L'attribut %{reference_value} de la course %{source_label} (%{source_objectid}) est trop grand (%{error_value})" - detail_4_vehiclejourney_1_pattern: "L'attribut %{reference_value} de la course %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" - detail_4_vehiclejourney_1_unique: "L'attribut %{reference_value} de la course %{source_label} (%{source_objectid}) a une valeur partagée avec la course %{target_0_label} (%{target_0_objectid})" - detail_4_vehiclejourney_2: "La course %{source_label} (%{source_objectid}) a un mode de transport interdit %{error_value}" - activemodel: - models: - compliance_check_result: - zero: "Validation" - one: "Validation" - other: "Validations" - attributes: - compliance_check_result: - ## Neptune - 1-NEPTUNE-XML-1: "Conformité à la syntaxe XML suivant les recommandations du W3C." - 1-NEPTUNE-XML-2: "Conformité au schéma défini par la XSD du profil TRIDENT/NEPTUNE." - 2-NEPTUNE-Common-1: "Unicité des éléments objectId des différents objets d'un lot de fichiers Neptune." - 2-NEPTUNE-Common-2: "Unicité des éléments regitrationNumber des différents objets d'un lot de fichiers Neptune." - 2-NEPTUNE-Network-1: "Correcte référence à des lignes <Line> dans version du réseau <PTNetwork>." - 2-NEPTUNE-Network-2: "Valeur autorisée pour le type de source <SourceType> dans version du réseau <PTNetwork>." - 2-NEPTUNE-GroupOfLine-1: "Correcte référence à des lignes <Line> dans groupe de lignes <GroupOfLine>." - 2-NEPTUNE-StopArea-1: "Correcte référence à des arrêts <StopArea> et/ou à des points d'arrêt sur parcours <StopPoint> dans les arrêts <StopArea>." - 2-NEPTUNE-StopArea-2: "Correcte référence à des arrêts <StopArea> dans les arrêts <StopArea> de type StopPlace." - 2-NEPTUNE-StopArea-3: "Correcte référence à des arrêts <StopArea> dans les arrêts <StopArea> de type CommercialStopPoint." - 2-NEPTUNE-StopArea-4: "Correcte référence à des points d'arrêt sur parcours <StopPoint> dans les arrêts <StopArea> de type BoardingPosition ou Quay." - 2-NEPTUNE-StopArea-5: "Correcte référence à une position géographique <AreaCentroid> dans les arrêts <StopArea> de tout type StopPlace, CommercialStopPoint, BoardingPosition et Quay." - 2-NEPTUNE-StopArea-6: "référenceréciproque d'une position géographique <AreaCentroid> dans les arrêts <StopArea> de tout type StopPlace, CommercialStopPoint, BoardingPosition et Quay." - 2-NEPTUNE-ITL-1: "Correcte référence à des arrêts <StopArea> dans les arrêts <StopArea> de type ITL." - 2-NEPTUNE-ITL-2: "Correcte référence à des arrêts <StopArea> de type ITL dans la classe d’objets <ITL>." - 2-NEPTUNE-ITL-3: "Correcte référence à des arrêts <StopArea> dans la classe d’objets <ITL>." - 2-NEPTUNE-ITL-4: "Vérification du type de référence à des arrêts <StopArea> type ITL dans la classe d’objets <ITL>." - 2-NEPTUNE-ITL-5: "Bonne référence à la ligne <Line> dans la classe d’objets <ITL>." - 2-NEPTUNE-AreaCentroid-1: "Correcte référence à des arrêts <StopArea> dans la classe d’objets <AreaCentroid>." - 2-NEPTUNE-AreaCentroid-2: "Vérification du modèle de projection de référence utilisé." - 2-NEPTUNE-ConnectionLink-1: "Correcte référence aux arrêts <StopArea> définissant des tronçons de correspondance <ConnectionLink>." - 2-NEPTUNE-AccessPoint-1: "Correcte référence à un arrêt <StopArea> dans les accès <AccessPoint>." - 2-NEPTUNE-AccessPoint-2: "Correcte référence à un arrêt <StopArea> dans les accès <AccessPoint>." - 2-NEPTUNE-AccessPoint-3: "Existence de liens d'accès <AccessLink> sur les accès <AccessPoint>." - 2-NEPTUNE-AccessPoint-4: "Existence de liens d'accès <AccessLink> sur les accès <AccessPoint> de type 'in'." - 2-NEPTUNE-AccessPoint-5: "Existence de liens d'accès <AccessLink> sur les accès <AccessPoint> sur les accès de type 'out'." - 2-NEPTUNE-AccessPoint-6: "Existence de liens d'accès <AccessLink> sur les accès <AccessPoint> sur les accès de type 'inout'." - 2-NEPTUNE-AccessPoint-7: "Vérification du modèle de projection de référence utilisé." - 2-NEPTUNE-AccessLink-1: "Correcte référence aux arrêts <StopArea> et accès <AccessPoint> définissant des liens d'accès <AccessLink>." - 2-NEPTUNE-AccessLink-2: "Correcte référence aux arrêts <StopArea> et accès <AccessPoint> définissant des liens d'accès <AccessLink>." - 2-NEPTUNE-Line-1: "Correcte référence au réseau dans l'objet ligne <Line>." - 2-NEPTUNE-Line-2: "Correcte référence à un point d'arrêt sur parcours <StopPoint> comme terminus de ligne <Line>." - 2-NEPTUNE-Line-3: "Correcte référence à un point d'arrêt sur parcours <StopPoint> comme terminus de ligne <Line>." - 2-NEPTUNE-Line-4: "Correcte référence aux séquences d'arrêts <ChouetteRoute> dans l'objet ligne <Line>." - 2-NEPTUNE-Line-5: "Correcte référence aux séquences d'arrêts <ChouetteRoute> dans l'objet ligne <Line>." - 2-NEPTUNE-Line-6: "Présence d'au moins une valeur parmi <name>,<number> ou <publishedName> dans l'objet ligne <Line>." - 2-NEPTUNE-Route-1: "Existence des missions <JourneyPattern> référencées par la séquence d'arrêt <ChouetteRoute>." - 2-NEPTUNE-Route-2: "Existence des tronçons commerciaux <PtLink> référencés par la séquence d'arrêt <ChouetteRoute>." - 2-NEPTUNE-Route-3: "Existence de la séquence opposée <ChouetteRoute> référencée par la séquence d'arrêt <ChouetteRoute>." - 2-NEPTUNE-Route-4: "Correcte référence à un tronçon commercial <PtLink> dans une séquence d'arrêts <ChouetteRoute>." - 2-NEPTUNE-Route-5: "Vérification que tous les points d'arrêts sur parcours sont rattachés à une séquence d'arrêts <ChouetteRoute> au départ d'un tronçon commercial <PtLink> et/ou à l'arrivée d'un autre tronçon commercial <PtLink> de la même séquence d'arrêts." - 2-NEPTUNE-Route-6: "Vérification du correct ordonnancement des points d'arrêts sur parcours <StopPoint> dans le chainage des tronçons <PtLink> d'une séquence d'arrêts <ChouetteRoute>." - 2-NEPTUNE-Route-7: "référence mutuelle des missions <JourneyPattern> et des séquences d'arrêts <ChouetteRoute>." - 2-NEPTUNE-Route-8: "Cohérence des références aux points d'arrêt des missions <JourneyPattern> et des séquences d'arrêts <ChouetteRoute>." - 2-NEPTUNE-Route-9: "Utilité des points d'arrêts sur parcours des séquences d'arrêts <ChouetteRoute>." - 2-NEPTUNE-Route-10: "référence d'une séquence d'arrêts <ChouetteRoute> à une séquence d'arrêts opposée." - 2-NEPTUNE-Route-11: "Cohérence des sens de la référence d'une séquence d'arrêts <ChouetteRoute> à une séquence d'arrêts opposée." - 2-NEPTUNE-Route-12: "Cohérence des terminus de la référence d'une séquence d'arrêts <ChouetteRoute> à une séquence d'arrêts opposée." - 2-NEPTUNE-PtLink-1: "Existence des arrêts <StopPoint> référencés par les tronçons commerciaux <PTLink>." - 2-NEPTUNE-JourneyPattern-1: "Existence de la séquence d'arrêt <ChouetteRoute> référencée par la mission <JourneyPattern>." - 2-NEPTUNE-JourneyPattern-2: "Existence des arrêts <StopPoint> référencés par la mission <JourneyPattern>." - 2-NEPTUNE-JourneyPattern-3: "Existence de la ligne <Line> référencée par la mission <JourneyPattern>." - 2-NEPTUNE-StopPoint-1: "Existence de la ligne <Line> référencée par l'arrêt <StopPoint>." - 2-NEPTUNE-StopPoint-2: "Existence du réseau <PTNetwork> référence par l'arrêt <StopPoint>." - 2-NEPTUNE-StopPoint-3: "Existence de l'arrêt <StopArea> référencé par l'arrêt <StopPoint>." - 2-NEPTUNE-StopPoint-4: "Vérification du modèle de projection de référence utilisé." - 2-NEPTUNE-Timetable-1: "Utilité des calendriers." - 2-NEPTUNE-Timetable-2: "Utilité des calendriers." - 2-NEPTUNE-Timetable-3: "Validité des dates de début et de fin des périodes des calendriers" - 2-NEPTUNE-VehicleJourney-1: "Existence de la séquence d'arrêt <ChouetteRoute> référencée par la course <VehicleJourney>." - 2-NEPTUNE-VehicleJourney-2: "Existence de la mission <JourneyPattern> référencée par la course <VehicleJourney>." - 2-NEPTUNE-VehicleJourney-3: "Existence de la ligne <Line> référencée par la course <VehicleJourney>." - 2-NEPTUNE-VehicleJourney-4: "Existence de l'opérateur <Company> référencé par la course <VehicleJourney>." - 2-NEPTUNE-VehicleJourney-5: "Existence de la tranche horaire <TimeSlot> référencée par la course <VehicleJourney>." - 2-NEPTUNE-VehicleJourney-6: "Cohérence entre la course, la mission et la séquence d'arrêts." - 2-NEPTUNE-VehicleJourney-7: "Utilité des missions" - 2-NEPTUNE-VehicleJourney-8: "Mission implicite" - 2-NEPTUNE-VehicleJourneyAtStop-1: "Existence de l'arrêt <StopPoint> référencé par l'horaire <VehicleJourneyAtStop>." - 2-NEPTUNE-VehicleJourneyAtStop-2: "Existence de la course <VehicleJourney> référenceé par l'horaire <VehicleJourneyAtStop>." - 2-NEPTUNE-VehicleJourneyAtStop-3: "adéquation des horaires de la course à la séquence d'arrêts." - 2-NEPTUNE-VehicleJourneyAtStop-4: "adéquation des horaires de la course à la mission." - 2-NEPTUNE-Facility-1: "Existence de l'arrêt <StopArea> référencé par l'équipement <Facility>." - 2-NEPTUNE-Facility-2: "Existence de l'arrêt <StopArea> référencé par l'équipement <Facility>." - 2-NEPTUNE-Facility-3: "Existence de la ligne <Line> référencée par l'équipement <Facility>." - 2-NEPTUNE-Facility-4: "Existence de la correspondance <ConnectionLink> référencée par l'équipement <Facility>." - 2-NEPTUNE-Facility-5: "Existence de l'arrêt <StopPoint> référencé par l'équipement <Facility>." - 2-NEPTUNE-Facility-6: "Vérification du modèle de projection de référence utilisé." - - ## GTFS - 1-GTFS-CSV-1: "Contrôle de la lecture du fichier" - 1-GTFS-CSV-2: "Contrôle de la syntaxe d'une ligne" - 1-GTFS-CSV-3: "Contrôle de la syntaxe des entêtes" - 1-GTFS-CSV-4: "Contrôle de la non présence de doublons dans les entêtes" - 1-GTFS-CSV-5: "Contrôle de la syntaxe CSV GTFS du fichier" - 1-GTFS-CSV-6: "Contrôle de la non présence de balise HTML" - 1-GTFS-CSV-7: "Contrôle de la non présence d'espace en début ou fin de colonne" - - 1-GTFS-Common-1: "Contrôle de la présence des fichiers obligatoires" - 1-GTFS-Common-2: "Contrôle de la présence des fichiers calendar ou calendar_dates" - 1-GTFS-Common-3: "Contrôle de la présence des fichiers optionnels" - 1-GTFS-Common-4: "Contrôle de la présence des fichiers non traités" - - 1-GTFS-Common-5: "Contrôle de la présence de données dans les fichiers obligatoires" - 1-GTFS-Common-6: "Contrôle de la présence de données dans les fichiers calendar ou calendar_dates" - 1-GTFS-Common-7: "Contrôle de la présence de données dans les fichiers optionnels" - - 1-GTFS-Common-8: "Contrôle de l'unicité des identifiants" - 1-GTFS-Common-9: "Contrôle de la présence des colonnes obligatoires" - 1-GTFS-Common-10: "Contrôle de la présence des colonnes qui devraient être obligatoires " - 1-GTFS-Common-11: "Contrôle de la présence de colonnes non traités" - - 1-GTFS-Common-12: "Contrôle de la présence des données obligatoires" - 1-GTFS-Common-13: "Contrôle de la présence de la colonne agency_id si plusieurs agences sont définies" - 1-GTFS-Common-14: "Contrôle de la présence de la colonne agency_id même si une seule agence est définie" - 1-GTFS-Common-15: "Contrôle de la présence d'une donnée sur valeur d'une autre" - - 1-GTFS-Common-16: "Contrôle du type des données" - - 1-GTFS-Route-1: "Contrôle de la présence des colonnes obligatoires conditionnelles" - 1-GTFS-Route-2: "Contrôle de la présence de données dans route_long_name ou route_short_name" - - 1-GTFS-Calendar-1: "Contrôle de la présence d'au moins un jour d'application " - 1-GTFS-Calendar-2: "Contrôle de la chronologie des dates de début et fin de période" - - 2-GTFS-Common-1: "Contrôle de la présence des objets référencés" - 2-GTFS-Common-2: "Contrôle de l'utilité des objets" - 2-GTFS-Common-3: "Contrôle de l'unicité d'un couple de données" - 2-GTFS-Common-4: "Contrôle de la non redondance de valeurs" - 2-GTFS-Stop-1: "Contrôle du type du parent_station" - 2-GTFS-Stop-2: "Contrôle de l'utilité de la colonne location_type" - 2-GTFS-Stop-3: "Contrôle de l'unicité de désignation (stop_name,stop_desc)" - 2-GTFS-Stop-4: "Contrôle de la non présence de station dans des stations" - 2-GTFS-Route-1: "Contrôle de la différence entre route_short_name et route_long_name" - 2-GTFS-Route-2: "Contrôle de la non inclusion de route_short_name dans route_long_name" - 2-GTFS-Route-3: "Contrôle du contraste des couleurs" - 2-GTFS-Route-4: "Contrôle de la non présence d'une route inversant les valeurs route_short_name et route_long_name d'une autre" - - ## COMMON - 3-StopArea-1: "Vérification de la géolocalisation de tous les arrêts hors ITL" - 3-StopArea-2: "Vérification que 2 arrêts de noms différents en dehors d'un même regroupement d'arrêts ne sont pas trop proches" - 3-StopArea-3: "Vérification de l'unicité des arrêts" - 3-StopArea-4: "Vérification de la géolocalisation des arrêts" - 3-StopArea-5: "Vérification de la position relative des arrêts et de leur parent" - 3-AccessPoint-1: "Vérification de la géolocalisation de tous les accès" - 3-AccessPoint-2: "Vérification que deux accès de nom différents ne sont pas trop proches" - 3-AccessPoint-3: "Vérification de la proximité entre les accès et leur arrêt de rattachement" - 3-ConnectionLink-1: "Vérification de la proximité entre les deux arrêts d'une correspondance" - 3-ConnectionLink-2: "Vérification de la cohérence entre la distance fournie sur la correspondance et la distance géographique entre les deux arrêts de la correspondance" - 3-ConnectionLink-3: "Vérification de la vitesse de parcours entre les deux arrêts d'une correspondance" - 3-AccessLink-1: "Vérification de la proximité entre les deux extrémités d'un lien d'accès" - 3-AccessLink-2: "Vérification de la cohérence entre la distance fournie sur le lien d'accès et la distance géographique entre les deux extrémités du lien d'accès" - 3-AccessLink-3: "Vérification de la vitesse de parcours entre les deux extrémités d'un lien d'accès" - 3-Line-1: "Vérification de la non homonymie des lignes" - 3-Line-2: "Vérification de la présence de séquences d'arrêts sur la ligne" - 3-Route-1: "Vérification de la succession des arrêts de la séquence" - 3-Route-2: "Vérification de la séquence inverse" - 3-Route-3: "Vérification de la distance entre deux arrêts successifs de la séquence" - 3-Route-4: "Vérification de double définition de séquences" - 3-Route-5: "Vérification de séquences sans séquence opposée" - 3-Route-6: "Vérification de la présence d'arrêts dans la séquence" - 3-Route-7: "Vérification de la présence de missions" - 3-Route-8: "Vérification de l'utilisation des arrêts par les missions" - 3-Route-9: "Vérification de l’existence d’une mission passant par tous les arrêts de la séquence" - 3-JourneyPattern-1: "Vérification de l'utilisation des arrêts par les missions" - 3-JourneyPattern-2: "Vérification de l’existence d’une mission passant par tous les arrêts de la séquence" - 3-JourneyPattern-3: "Vérification de double définition de missions" - 3-VehicleJourney-1: "Vérification de la chronologie des horaires de passage à un arrêt" - 3-VehicleJourney-2: "Vérification de la vitesse de transfert entre deux arrêts" - 3-VehicleJourney-3: "Vérification de la cohérence des courses successives desservant deux mêmes arrêts" - 3-VehicleJourney-4: "Vérification de l'affectation des courses à un calendrier" - 3-Facility-1: "Vérification de la géolocalisation de tous les accès" - 3-Facility-2: "Vérification de la proximité entre les équipements et leur arrêt de rattachement" - 4-Network-1: "Vérification de contraintes sur les attributs des réseaux" - 4-Company-1: "Vérification de contraintes sur les attributs des transporteurs" - 4-GroupOfLine-1: "Vérification de contraintes sur les attributs des groupes de lignes" - 4-StopArea-1: "Vérification de contraintes sur les attributs des arrêts" - 4-StopArea-2: "Vérification de l'existance d'un arrêt commercial pour les arrêts physiques" - 4-StopArea-3: "Vérification de la cohérence entre les noms de communes et leur code INSEE" - 4-AccessPoint-1: "Vérification de contraintes sur les attributs des accès" - 4-AccessLink-1: "Vérification de contraintes sur les attributs des liens d'accès" - 4-ConnectionLink-1: "Vérification de contraintes sur les attributs des correspondances" - 4-ConnectionLink-2: "Vérification des type d'arrêts en correspondance" - 4-Timetable-1: "Vérification de contraintes sur les attributs des calendiers" - 4-Line-1: "Vérification de contraintes sur les attributs des lignes" - 4-Line-2: "Vérification des modes de transport des lignes" - 4-Line-3: "Vérification des groupes de lignes d'une ligne" - 4-Line-4: "Vérification des séquences d'arrêts d'une ligne" - 4-Route-1: "Vérification de contraintes sur les attributs des séquences d'arrêt" - 4-JourneyPattern-1: "Vérification de contraintes sur les attributs des missions" - 4-VehicleJourney-1: "Vérification de contraintes sur les attributs des courses" - 4-VehicleJourney-2: "Vérification des modes de transport des courses" - severity: "Sévérité" - status: "Statut" - rule_level: "Niveau" - rule_target: "Objet" - rule_number: "Etape" - rule_code: "Code" - violation_count: "erreurs" - violation_count_txt: "Nombre d'erreurs" - objects: "Objets en erreur" - detail: "Détail" - title: "Titre du test" - object: "Objet en erreur" - resource: "Ressource de l'objet en erreur" - url: "URL" - first_violations: "Premières violations" + diff --git a/config/locales/compliance_check_tasks.en.yml b/config/locales/compliance_check_tasks.en.yml deleted file mode 100644 index 61e56473c..000000000 --- a/config/locales/compliance_check_tasks.en.yml +++ /dev/null @@ -1,17 +0,0 @@ -en: - compliance_check_tasks: - new: - title: "Create a new validation" - submit: "Create a validation" - all: "All" - flash: "Validation task on queue, refresh page to see progression" - actions: - new: "Add a validation" - activemodel: - attributes: - compliance_check_task: - name: "Compliance check name" - references_type: "Subset" - reference_ids: "Subset ids" - object_id_prefix: "Neptune Id prefix" - rule_parameter_set_id: "Jeu de paramètres pour validation"
\ No newline at end of file diff --git a/config/locales/compliance_check_tasks.fr.yml b/config/locales/compliance_check_tasks.fr.yml deleted file mode 100644 index d6cc88b1e..000000000 --- a/config/locales/compliance_check_tasks.fr.yml +++ /dev/null @@ -1,17 +0,0 @@ -fr: - compliance_check_tasks: - new: - title: "Démarrer une nouvelle validation" - submit: "Lancer la validation" - all: "Toutes" - flash: "La demande de validation est mise en file d'attente, veuillez rafraichir régulièrement la page pour en suivre la progression" - actions: - new: "Ajouter une validation" - activemodel: - attributes: - compliance_check_task: - name: "Nom de la validation" - references_type: "Sous ensemble" - reference_ids: "Identifiants du sous ensemble" - object_id_prefix: "Préfixe Neptune Id" - rule_parameter_set_id: "Jeu de paramètres pour validation" diff --git a/config/locales/compliance_checks.en.yml b/config/locales/compliance_checks.en.yml index c9bac8bc3..7f3e317be 100644 --- a/config/locales/compliance_checks.en.yml +++ b/config/locales/compliance_checks.en.yml @@ -1,93 +1,2 @@ en: compliance_checks: - index: - title: "Validation" - warning: "" - edit: - title: "Edit the Validation" - show: - title: "Neptune Validation" - summary: "Rapport de conformité à la norme NEPTUNE" - details: "Details" - parameters: "Tests parameters" - completed: "[ Completed ]" - failed: "[ Failed ]" - pending: "[ In the treatment queue ]" - processing: "[ In progress... ]" - export: "Download test report" - export_csv: "CSV format" - report: - validation_success: "Validation successfully passed." - action_report: "Action report" - actions: - destroy_confirm: "Do you confirm to destroy this validation ?" - destroy: "Destroy this validation" - edit: "Edit this validation" - report: "Report" - rule_parameter_set: "Rule parameter set" - download: "Download" - statuses: - pending: "Pending" - processing: "Processing" - completed: "Completed" - failed: "Failed" - started: "Started" - scheduled: "Processing ..." - terminated: "Completed" - canceled: "Canceled" - aborted: "Failed" - uncheck_count: - zero: "no unappliable" - one: "one unappliable" - other: "%{count} unappliables" - ok_count: - zero: "No successful test" - one: "One successful test" - other: "%{count} successful tests" - warning_count: - zero: "no warning" - one: "one warning" - other: "%{count} warnings" - error_count: - zero: "no error" - one: "one error" - other: "%{count} errors" - fatal_count: - zero: "no fatal error" - one: "one fatal error" - other: "%{count} fatal errors" - import: "Import" - rule_parameter_set: "Rule parameter set" - file_validation_log_messages: - messages: - undefined: "%{key} undefined" - TooMuchDetails: ( %{0} errors / suppl. warnings ) - ONE: "Catégorie 1 : Syntaxe" - severities: - uncheck: "Unchecked" - ok: "Ok" - warning: "Warning" - error: "Error" - fatal: "Fatal" - import: "Import Report" - rule_parameter_set: "Rule Parameter Set" - activemodel: - models: - compliance_check: - zero: "Validation" - one: "Validation" - other: "Validation" - attributes: - compliance_check: - created_at: "Executed at" - references_type: "Associated Data Type" - reference_ids: "Associated Data" - rule_parameter_set_id: "Rule parameters set" - resources: "File to validate" - status: "Status" - file_name: "Tested data" - projection_reference: "Système de projection de référence" - compliance_check_log_message: - created_at: "Date" - position: "N." - full_message: "Message" diff --git a/config/locales/compliance_checks.fr.yml b/config/locales/compliance_checks.fr.yml index 14ae7e943..421574cbd 100644 --- a/config/locales/compliance_checks.fr.yml +++ b/config/locales/compliance_checks.fr.yml @@ -1,93 +1,3 @@ fr: compliance_checks: - index: - title: "Validation" - warning: "" - edit: - title: "Editer la validation" - show: - title: "Validation Neptune" - summary: "Rapport de conformité à la norme NEPTUNE" - details: "Détails" - parameters: "Paramètres des tests" - completed: "[ Terminé ]" - failed: "[ Echoué ]" - pending: "[ En file d'attente ]" - processing: "[ En progression... ]" - export: "Télécharger les résultats" - export_csv: "Format CSV" - report: - validation_success: "La validation est passée avec succès." - action_report: "Rapport d'action" - actions: - destroy_confirm: "Voulez-vous supprimer ce résultat de validation ?" - destroy: "Supprimer cette validation" - edit: "Editer cette validation" - report: "Test de conformité" - rule_parameter_set: "Jeu de paramètres" - download: "Télécharger" - statuses: - pending: "En attente ..." - processing: "En cours ..." - completed: "Achevé" - failed: "Echoué" - started: "En file d'attente..." - scheduled: "En cours..." - terminated: "Achevé" - canceled: "Annulé" - aborted: "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" - import: "Import" - rule_parameter_set: "Jeu de paramètres" - file_validation_log_messages: - messages: - undefined: "%{key} non défini" - TooMuchDetails: "( %{0} erreurs / warnings supplémentaires )" - ONE: "Catégorie 1 : Syntaxe" - severities: - uncheck: "Non testé" - ok: "Ok" - warning: "Alerte" - error: "Erreur" - fatal: "Fatal" - import: "Import Report" - rule_parameter_set: "Rule Parameter Set" - activemodel: - models: - compliance_check: - zero: "Validation" - one: "Validation" - other: "Validations" - attributes: - compliance_check: - created_at: "Exécuté le" - references_type: "Type de données incluses" - reference_ids: "Données incluses" - rule_parameter_set_id: "Jeu de paramètres" - resources: "Fichier à valider" - status: "Status" - file_name: "Jeu de données" - projection_reference: "Système de projection de référence" - compliance_check_log_message: - created_at: "Date" - position: "N." - full_message: "Message" + diff --git a/config/routes.rb b/config/routes.rb index d7322980a..fa892c908 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -152,23 +152,6 @@ ChouetteIhm::Application.routes.draw do end end - resources :compliance_check_tasks, :only => [:new, :create] do - collection do - get 'references' - end - end - - resources :compliance_checks, :only => [:index, :show, :destroy] do - member do - get 'export', defaults: { format: 'zip' } - get 'report' - get 'rule_parameter_set' - end - collection do - get 'references' - end - end - resources :companies, controller: "referential_companies" resources :time_tables do diff --git a/spec/controllers/import_tasks_controller_spec.rb b/spec/controllers/import_tasks_controller_spec.rb deleted file mode 100644 index 17be1a8d7..000000000 --- a/spec/controllers/import_tasks_controller_spec.rb +++ /dev/null @@ -1,34 +0,0 @@ -require 'spec_helper' - -# describe ImportTasksController, :type => :controller do -# login_user -# shared_examples_for "referential dependant" do -# it "assigns referential as @referential" do -# expect(assigns[:referential]).to eq(referential) -# end -# end - -# describe "GET /new" do -# before(:each) do -# get :new, -# :referential_id => referential.id -# end -# it_behaves_like "referential dependant" -# it "should assign import_task with NeptuneImport instance" do -# expect(assigns[:import_task].class).to eq(NeptuneImport) -# end -# it "should assign import_task with Neptune format" do -# expect(assigns[:import_task].format).to eq(ImportTask.new.format) -# end -# it "should assign import_task with refrential.id" do -# expect(assigns[:import_task].referential_id).to eq(referential.id) -# end -# it "should assign import_task with logged in user id" do -# expect(assigns[:import_task].user_id).to eq(referential.organisation.users.first.id) -# end -# it "should assign import_task with logged in user name" do -# expect(assigns[:import_task].user_name).to eq(referential.organisation.users.first.name) -# end -# end - -# end diff --git a/spec/factories/compliance_check_results.rb b/spec/factories/compliance_check_results.rb deleted file mode 100644 index 7a3a3e956..000000000 --- a/spec/factories/compliance_check_results.rb +++ /dev/null @@ -1,8 +0,0 @@ -FactoryGirl.define do - factory :compliance_check_result do - association :compliance_check_task - rule_code "2-NEPTUNE-StopArea-6" - severity "warning" - status "nok" - end -end diff --git a/spec/factories/compliance_check_tasks.rb b/spec/factories/compliance_check_tasks.rb deleted file mode 100644 index e9fdeb5ef..000000000 --- a/spec/factories/compliance_check_tasks.rb +++ /dev/null @@ -1,8 +0,0 @@ -FactoryGirl.define do - factory :compliance_check_task do - user_id 1 - user_name "Dummy" - status "pending" - referential { Referential.find_by_slug("first") } - end -end diff --git a/spec/models/compliance_check_result_spec.rb b/spec/models/compliance_check_result_spec.rb deleted file mode 100644 index 42a2e4507..000000000 --- a/spec/models/compliance_check_result_spec.rb +++ /dev/null @@ -1,100 +0,0 @@ -# require 'spec_helper' - -# describe ComplianceCheckResult, :type => :model do - -# subject { Factory( :compliance_check_result)} - -# describe "#indice" do -# context "when 1-NEPTUNE-XML-1 result" do -# before(:each) do -# subject.rule_code = "1-NEPTUNE-XML-1" -# end - -# describe '#indice' do -# subject { super().indice } -# it { is_expected.to eq(1) } -# end -# end -# context "when 2-NETEX-AccessLink-2 result" do -# before(:each) do -# subject.rule_code = "2-NETEX-AccessLink-2" -# end - -# describe '#indice' do -# subject { super().indice } -# it { is_expected.to eq(2) } -# end -# end -# end - -# describe "#data_type" do -# context "when 1-NEPTUNE-XML-1 result" do -# before(:each) do -# subject.rule_code = "1-NEPTUNE-XML-1" -# end - -# describe '#data_type' do -# subject { super().data_type } -# it { is_expected.to eq("XML") } -# end -# end -# context "when 2-NETEX-AccessLink-2 result" do -# before(:each) do -# subject.rule_code = "2-NETEX-AccessLink-2" -# end - -# describe '#data_type' do -# subject { super().data_type } -# it { is_expected.to eq("AccessLink") } -# end -# end -# end - -# describe "#format" do -# context "when 1-NEPTUNE-XML-1 result" do -# before(:each) do -# subject.rule_code = "1-NEPTUNE-XML-1" -# end - -# describe '#format' do -# subject { super().format } -# it { is_expected.to eq("NEPTUNE") } -# end -# end -# context "when 2-NETEX-AccessLink-2 result" do -# before(:each) do -# subject.rule_code = "2-NETEX-AccessLink-2" -# end - -# describe '#format' do -# subject { super().format } -# it { is_expected.to eq("NETEX") } -# end -# end -# end - -# describe "#level" do -# context "when 1-NEPTUNE-XML-1 result" do -# before(:each) do -# subject.rule_code = "1-NEPTUNE-XML-1" -# end - -# describe '#level' do -# subject { super().level } -# it { is_expected.to eq(1) } -# end -# end -# context "when 2-NEPTUNE-AccessLink-2 result" do -# before(:each) do -# subject.rule_code = "2-NEPTUNE-AccessLink-2" -# end - -# describe '#level' do -# subject { super().level } -# it { is_expected.to eq(2) } -# end -# end -# end - -# end - diff --git a/spec/models/compliance_check_task_spec.rb b/spec/models/compliance_check_task_spec.rb deleted file mode 100644 index a062fdb58..000000000 --- a/spec/models/compliance_check_task_spec.rb +++ /dev/null @@ -1,317 +0,0 @@ -# require 'spec_helper' - -# TODO: Can we get rid of this??? -# ************************* - -# describe ComplianceCheckTask, :type => :model do - -# subject { Factory( :compliance_check_task ) } - -# RSpec::Matchers.define :be_log_message do |expected| -# match do |actual| -# actual and expected.all? { |k,v| actual[k.to_s] == v } -# end -# end - - -# describe "#any_error_severity_failure?" do -# context "when compliance_check_results empty" do -# before(:each) do -# subject.compliance_check_results = [] -# end -# it "does return false" do -# expect(subject.any_error_severity_failure?).to be_falsey -# end -# end -# context "when compliance_check_results contains a error_severity_failure" do -# let( :valid_result){ Factory.build( :compliance_check_result) } -# let( :invalid_result){ Factory.build( :compliance_check_result, :severity => "error", :status => "nok") } -# before(:each) do -# subject.compliance_check_results = [ valid_result, invalid_result] -# end -# it "does return true" do -# expect(subject.any_error_severity_failure?).to be_truthy -# end -# end -# context "when compliance_check_results contains no error_severity_failure" do -# let( :valid_result){ Factory.build( :compliance_check_result) } -# before(:each) do -# subject.compliance_check_results = [ valid_result] -# end -# it "does return false" do -# expect(subject.any_error_severity_failure?).to be_falsey -# end -# end -# end - -# describe "#destroy" do -# let(:import_task){ Factory( :import_task )} -# context "with an import_task" do -# before(:each) do -# subject.import_task = import_task -# end -# it "should destroy import_task" do -# subject.destroy -# expect(ImportTask.exists?( import_task.id)).to be_falsey -# end -# end -# context "without any import_task" do -# before(:each) do -# subject.import_task = nil -# end -# it "should not raise exception" do -# subject.destroy -# expect(subject).to be_destroyed -# end -# end -# end - -# describe "#levels" do -# let(:import_task){ Factory( :import_task )} -# context "when validation is without import" do -# it "should not return levels 1 and 2" do -# expect(subject.levels.include?(1)).to be_falsey -# expect(subject.levels.include?(2)).to be_falsey -# end -# context "when parameter_set is defined" do -# before(:each) do -# subject.parameter_set = "dummy" -# end -# it "should return level 3" do -# expect(subject.levels.include?(3)).to be_truthy -# end -# end -# context "when parameter_set is not defined" do -# before(:each) do -# subject.parameter_set = nil -# end -# it "should not return level 3" do -# expect(subject.levels.include?(3)).not_to be_truthy -# end -# end -# end -# context "when validation is done with an import" do -# before(:each) do -# subject.import_task = import_task -# end -# it "should return levels 1 and 2" do -# expect(subject.levels.include?(1)).to be_truthy -# expect(subject.levels.include?(2)).to be_truthy -# end -# context "when parameter_set is defined" do -# before(:each) do -# subject.parameter_set = "dummy" -# end -# it "should return level 3" do -# expect(subject.levels.include?(3)).to be_truthy -# end -# end -# context "when parameter_set is not defined" do -# before(:each) do -# subject.parameter_set = nil -# end -# it "should not return level 3" do -# expect(subject.levels.include?(3)).not_to be_truthy -# end -# end -# end - -# end - -# describe "#chouette_command" do -# it "should be a Chouette::Command instance" do -# expect(subject.send( :chouette_command).class).to eq(Chouette::Command) -# end -# it "should have schema same as referential.slug" do -# expect(subject.send( :chouette_command).schema).to eq(subject.referential.slug) -# end -# end - -# describe "#validate" do -# let(:compliance_check_task){ Factory(:compliance_check_task) } -# let(:chouette_command) { "dummy" } -# context "for failing validation" do -# before(:each) do -# allow(chouette_command).to receive( :run!).and_raise( "dummy") -# allow(compliance_check_task).to receive_messages( :chouette_command => chouette_command) -# end -# it "should have status 'failed'" do -# compliance_check_task.validate -# expect(compliance_check_task.status).to eq("failed") -# end -# end -# context "for successful validation" do -# before(:each) do -# allow(compliance_check_task).to receive_messages( :chouette_command => double( :run! => true )) -# end -# it "should have status 'completed'" do -# compliance_check_task.validate -# expect(compliance_check_task.status).to eq("completed") -# end -# end -# end - -# describe "#validate" do -# let(:compliance_check_task){ Factory(:compliance_check_task) } -# let(:command_args){ "dummy" } -# before(:each) do -# allow(compliance_check_task).to receive_messages( :chouette_command => double( :run! => true )) -# allow(compliance_check_task).to receive_messages( :chouette_command_args => command_args) -# end -# it "should call chouette_command.run! with :c => 'import', :id => id" do -# expect(compliance_check_task.send( :chouette_command)).to receive( :run! ).with( command_args) -# compliance_check_task.validate -# end -# end - -# describe "#delayed_validate" do -# let( :import_task){ Factory.build(:import_task) } -# before(:each) do -# allow(subject).to receive_messages( :delay => double( :validate => true)) -# end -# it "should not call delay#validate if import_task defined" do -# subject.import_task = import_task -# expect(subject.delay).not_to receive( :validate) -# subject.delayed_validate -# end -# it "should call delay#validate if import_task blank" do -# subject.import_task = nil -# expect(subject.delay).to receive( :validate) -# subject.delayed_validate -# end - -# end - -# describe "#define_default_attributes" do -# it "should keep status if defined" do -# subject.status = "dummy" -# subject.define_default_attributes -# expect(subject.status).to eq("dummy") -# end -# it "should set status to pending if not defined" do -# subject.status = nil -# subject.define_default_attributes -# expect(subject.status).to eq("pending") -# end -# context "when rule_parameter_set is nil" do -# before(:each) do -# allow(subject).to receive_messages( :rule_parameter_set => nil) -# subject.parameter_set = "dummy" -# subject.parameter_set_name = "dummy" -# end -# it "should keep parameter_set_name" do -# subject.define_default_attributes -# expect(subject.parameter_set_name).to eq("dummy") -# end -# it "should keep parameter_set" do -# subject.define_default_attributes -# expect(subject.parameter_set).to eq("dummy") -# end -# end -# context "when rule_parameter_set is defined" do -# let( :rule_parameter_set ){ Factory( :rule_parameter_set ) } -# before(:each) do -# allow(subject).to receive_messages( :rule_parameter_set => rule_parameter_set) -# subject.parameter_set = "dummy" -# subject.parameter_set_name = "dummy" -# end -# it "should set parameter_set_name to rule_parameter_set.name" do -# subject.define_default_attributes -# expect(subject.parameter_set_name).to eq(rule_parameter_set.name) -# end -# it "should keep set parameter_set to rule_parameter_set.parameters" do -# subject.define_default_attributes -# expect(subject.parameter_set).to eq(rule_parameter_set.parameters) -# end -# end -# end - -# describe "#rule_parameter_set" do -# context "when rule_parameter_set_id is blank" do -# before(:each) do -# subject.rule_parameter_set_id = "" -# end -# it "should return nil" do -# expect(subject.rule_parameter_set).to be_nil -# end -# end -# context "when rule_parameter_set_id is not blank" do -# let( :rule_parameter_set ){ Factory( :rule_parameter_set ) } -# before(:each) do -# subject.rule_parameter_set_id = rule_parameter_set.id -# end -# it "should return rule_parameter_set instance" do -# expect(subject.rule_parameter_set).to eq(rule_parameter_set) -# end -# end -# end - -# describe "#rule_parameter_set_archived" do -# context "when parameter_set is blank" do -# before(:each) do -# subject.parameter_set = nil -# end -# it "should return nil" do -# expect(subject.rule_parameter_set_archived).to be_nil -# end -# end -# context "when parameter_set is blank" do -# before(:each) do -# subject.parameter_set = { :speed => 30, :distance => 5 } -# end -# it "should return RuleParameterSet#parameters same as parameter_set" do -# expect(subject.rule_parameter_set_archived.parameters).to eq(subject.parameter_set) -# end -# it "should return RuleParameterSet#name same as parameter_set_name" do -# expect(subject.rule_parameter_set_archived.name).to eq(subject.parameter_set_name) -# end -# end - -# end - -# # describe "#validate" do -# # -# # before(:each) do -# # subject.stub :validator => mock(:validate => true) -# # end -# # -# # it "should create a ComplianceCheckResult :started when started" do -# # subject.validate - # expect(subject.compliance_check_results.first).to be_log_message(:key => "started") -# # end -# # -# # it "should create a ComplianceCheckResult :completed when completed" do -# # subject.validate - # expect(subject.compliance_check_results.last).to be_log_message(:key => "completed") -# # end -# # -# # it "should create a ComplianceCheckResult :failed when failed" do -# # pending -# # # subject.loader.stub(:export).and_raise("export failed") -# # subject.validate - # expect(subject.compliance_check_results.last).to be_log_message(:key => "failed") -# # end -# # -# # end - -# describe ".create" do -# let( :new_compliance_check_task){ Factory.build( :compliance_check_task) } - -# it "should call #define_default_attributes" do -# expect(new_compliance_check_task).to receive( :define_default_attributes) -# new_compliance_check_task.save -# end - -# it "should call #delayed_validate" do -# expect(new_compliance_check_task).not_to receive( :delayed_validate) -# new_compliance_check_task.save -# end - -# end - -# it_behaves_like TypeIdsModelable do -# let(:type_ids_model) { subject} -# end - -# end - |
