aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcedricnjanga2018-05-16 23:40:23 -0700
committerJohan Van Ryseghem2018-05-31 14:10:09 +0200
commitab00694f49336a326d934ff0bd85b76e2e0a6c23 (patch)
treeef6e2e264f909d49c0ea991b21c45ac1307dfef5
parentcc4f4a0abff3eeef4af6091180777bf3a0de6746 (diff)
downloadchouette-core-ab00694f49336a326d934ff0bd85b76e2e0a6c23.tar.bz2
Refs #7057 Display ComplianceControl object type to CCSet#select_type & CCSet#show views
-rw-r--r--app/controllers/compliance_controls_controller.rb6
-rw-r--r--app/helpers/compliance_control_sets_helper.rb9
-rw-r--r--app/models/compliance_control.rb4
-rw-r--r--app/views/compliance_controls/select_type.html.slim10
-rw-r--r--config/locales/compliance_controls.en.yml7
-rw-r--r--config/locales/compliance_controls.fr.yml1
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