diff options
| -rw-r--r-- | app/controllers/compliance_controls_controller.rb | 6 | ||||
| -rw-r--r-- | app/helpers/compliance_control_sets_helper.rb | 9 | ||||
| -rw-r--r-- | app/models/compliance_control.rb | 4 | ||||
| -rw-r--r-- | app/views/compliance_controls/select_type.html.slim | 10 | ||||
| -rw-r--r-- | config/locales/compliance_controls.en.yml | 7 | ||||
| -rw-r--r-- | config/locales/compliance_controls.fr.yml | 1 | 
6 files changed, 28 insertions, 9 deletions
| diff --git a/app/controllers/compliance_controls_controller.rb b/app/controllers/compliance_controls_controller.rb index 7df922d01..a20602c63 100644 --- a/app/controllers/compliance_controls_controller.rb +++ b/app/controllers/compliance_controls_controller.rb @@ -5,7 +5,11 @@ class ComplianceControlsController < ChouetteController    actions :all, :except => [:index]    def select_type -    @sti_subclasses = ComplianceControl.subclasses.sort_by {|compliance_control| compliance_control.default_code} +    @sti_subclasses = Hash.new  +     +    ComplianceControl.subclass_patterns.each do |key, value| +      @sti_subclasses[key] = ComplianceControl.subclasses.select {|klass| klass.object_type == value} +    end    end    def show diff --git a/app/helpers/compliance_control_sets_helper.rb b/app/helpers/compliance_control_sets_helper.rb index 0c63cb139..7adb46971 100644 --- a/app/helpers/compliance_control_sets_helper.rb +++ b/app/helpers/compliance_control_sets_helper.rb @@ -83,6 +83,13 @@ module ComplianceControlSetsHelper              attribute: 'code'            ),            TableBuilderHelper::Column.new( +            key: :subclass, +            attribute: Proc.new do |compliance_control| +              key = ComplianceControl.subclass_patterns.key(compliance_control.object.class.object_type) +              I18n.t("compliance_controls.filters.subclasses.#{key}") +            end +          ), +          TableBuilderHelper::Column.new(              key: :name,              attribute: 'name',              link_to: lambda do |compliance_control| @@ -98,7 +105,7 @@ module ComplianceControlSetsHelper              attribute: 'comment'            ),        ], -      sortable: true, +      sortable: false,        cls: 'table has-filter has-search',        model: ComplianceControl,        action: :index diff --git a/app/models/compliance_control.rb b/app/models/compliance_control.rb index 672fb128c..59c359bd5 100644 --- a/app/models/compliance_control.rb +++ b/app/models/compliance_control.rb @@ -20,6 +20,10 @@ class ComplianceControl < ApplicationModel        }      end +    def object_type +      self.default_code.match(/^\d+-(?'object_type'\w+)-\d+$/)[:object_type] +    end +      def inherited(child)        child.instance_eval do          def model_name diff --git a/app/views/compliance_controls/select_type.html.slim b/app/views/compliance_controls/select_type.html.slim index d1c518ecf..4be53362b 100644 --- a/app/views/compliance_controls/select_type.html.slim +++ b/app/views/compliance_controls/select_type.html.slim @@ -4,9 +4,11 @@      .row        .col-lg-8.col-lg-offset-2.col-md-8.col-md-offset-2.col-sm-10.col-sm-offset-1          = form_tag(new_compliance_control_set_compliance_control_path, method: :get) do -          - @sti_subclasses.each do |klass| -            .radio -              = radio_button_tag(:sti_class, klass, @sti_subclasses.first) -              = "#{klass.default_code} - #{I18n.t("activerecord.models.#{klass.name.underscore}.one")}" +          - ComplianceControl.subclass_patterns.each do |key, value| +            h3 = t("compliance_controls.filters.subclasses.#{key}") +            - @sti_subclasses[key].each do |klass| +              .radio +                = radio_button_tag(:sti_class, klass, @sti_subclasses.first) +                = "#{I18n.t("activerecord.models.#{klass.name.underscore}.one")}"            .text-right              = submit_tag t('compliance_control_sets.actions.loaded'), class: "btn btn-outline-primary" diff --git a/config/locales/compliance_controls.en.yml b/config/locales/compliance_controls.en.yml index cb370c5df..73979c168 100644 --- a/config/locales/compliance_controls.en.yml +++ b/config/locales/compliance_controls.en.yml @@ -8,11 +8,11 @@ en:        subclass: Object        subclasses:          generic: 'Generic' -        journey_pattern: 'JourneyPattern' +        journey_pattern: 'Journey Pattern'          line: 'Line'          route: 'Route' -        routing_constraint_zone: 'RoutingConstraint' -        vehicle_journey: 'VehicleJourney' +        routing_constraint_zone: 'Routing Constraint Zone' +        vehicle_journey: 'Vehicle Journey'      search_no_results: 'No compliance controls matching your query'      min_max_values: "the minimum (%{min}) is not supposed to be greater than the maximum (%{max})"      errors: @@ -236,3 +236,4 @@ en:          prerequisite: "Prerequisite"          predicate: "Predicate"          pattern: Regular expression +        subclass: Object diff --git a/config/locales/compliance_controls.fr.yml b/config/locales/compliance_controls.fr.yml index 0b0555b6d..e46aa7693 100644 --- a/config/locales/compliance_controls.fr.yml +++ b/config/locales/compliance_controls.fr.yml @@ -233,3 +233,4 @@ fr:          prerequisite: "Prérequis"          predicate: "Prédicat"          pattern: Expression régulière +        subclass: Objet | 
