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 |
