aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/controllers/compliance_controls_controller.rb32
-rw-r--r--app/models/compliance_control.rb13
-rw-r--r--app/models/generic_attribute_control/min_max.rb3
-rw-r--r--app/models/generic_attribute_control/pattern.rb8
-rw-r--r--app/models/generic_attribute_control/uniqueness.rb5
-rw-r--r--app/models/vehicle_journey_control/delta.rb2
-rw-r--r--app/models/vehicle_journey_control/speed.rb3
-rw-r--r--app/models/vehicle_journey_control/time_table.rb (renamed from app/models/route_control/time_table.rb)2
-rw-r--r--app/models/vehicle_journey_control/vehicle_journey_at_stops.rb (renamed from app/models/route_control/vehicle_journey_at_stops.rb)2
-rw-r--r--app/models/vehicle_journey_control/waiting_time.rb2
-rw-r--r--app/views/compliance_controls/_form.html.slim4
-rw-r--r--app/views/compliance_controls/select_type.html.slim4
-rw-r--r--app/views/compliance_controls/show.html.slim4
13 files changed, 53 insertions, 31 deletions
diff --git a/app/controllers/compliance_controls_controller.rb b/app/controllers/compliance_controls_controller.rb
index d7d84afb3..6fe799267 100644
--- a/app/controllers/compliance_controls_controller.rb
+++ b/app/controllers/compliance_controls_controller.rb
@@ -7,26 +7,42 @@ class ComplianceControlsController < BreadcrumbController
end
def new
- if params[:sti_class]
- @compliance_control_set = parent
- @compliance_control = params[:sti_class].constantize.new
- else
+ if params[:sti_class].blank?
+ flash[:notice] = I18n.t("compliance_controls.errors.mandatory_control_type")
redirect_to(action: :select_type)
end
+ new!
end
def create
- create! { compliance_control_set_path(parent) }
+ create! do |success, failure|
+ success.html { redirect_to compliance_control_set_path(parent) }
+ failure.html { render( :action => 'new' ) }
+ end
+ end
+
+ protected
+
+ alias_method :compliance_control_set, :parent
+ alias_method :compliance_control, :resource
+
+ def build_resource
+ @compliance_control ||= compliance_control_class.new compliance_control_set: parent
end
private
+
+ def compliance_control_class
+ (params[:sti_class] || params[:compliance_control][:type]).constantize
+ end
+
def dynamic_attributes_params
- params.require(:compliance_control).permit(:type).values[0].constantize.dynamic_attributes
+ compliance_control_class.dynamic_attributes
end
def compliance_control_params
base = [:name, :code, :origin_code, :criticity, :comment, :control_attributes, :type, :compliance_control_block_id]
- permited = base + dynamic_attributes_params
- params.require(:compliance_control).permit(permited)
+ permitted = base + dynamic_attributes_params
+ params.require(:compliance_control).permit(permitted)
end
end
diff --git a/app/models/compliance_control.rb b/app/models/compliance_control.rb
index 363ef5d61..bfbc075c6 100644
--- a/app/models/compliance_control.rb
+++ b/app/models/compliance_control.rb
@@ -44,10 +44,11 @@ class ComplianceControl < ActiveRecord::Base
end
end
- before_validation(on: :create) do
- self.name ||= self.class.name
- self.code ||= self.class.default_code
- self.origin_code ||= self.class.default_code
+ def initialize(attributes = {})
+ super
+ self.name ||= I18n.t("activerecord.models.#{self.class.name.underscore}.one")
+ self.code ||= self.class.default_code
+ self.origin_code ||= self.class.default_code
end
end
@@ -67,9 +68,7 @@ require_dependency 'route_control/omnibus_journey_pattern'
require_dependency 'route_control/opposite_route_terminus'
require_dependency 'route_control/opposite_route'
require_dependency 'route_control/stop_points_in_journey_pattern'
-require_dependency 'route_control/time_table'
require_dependency 'route_control/unactivated_stop_points'
-require_dependency 'route_control/vehicle_journey_at_stops'
require_dependency 'route_control/zdl_stop_area'
require_dependency 'routing_constraint_zone_control/maximum_length'
require_dependency 'routing_constraint_zone_control/minimum_length'
@@ -77,3 +76,5 @@ require_dependency 'routing_constraint_zone_control/unactivated_stop_point'
require_dependency 'vehicle_journey_control/delta'
require_dependency 'vehicle_journey_control/waiting_time'
require_dependency 'vehicle_journey_control/speed'
+require_dependency 'vehicle_journey_control/time_table'
+require_dependency 'vehicle_journey_control/vehicle_journey_at_stops'
diff --git a/app/models/generic_attribute_control/min_max.rb b/app/models/generic_attribute_control/min_max.rb
index 876f56eed..c46ba0453 100644
--- a/app/models/generic_attribute_control/min_max.rb
+++ b/app/models/generic_attribute_control/min_max.rb
@@ -2,6 +2,9 @@ module GenericAttributeControl
class MinMax < ComplianceControl
hstore_accessor :control_attributes, minimum: :integer, maximum: :integer, target: :string
+ validates :minimum, numericality: true, allow_nil: true
+ validates :maximum, numericality: true, allow_nil: true
+ #validates :target, presence: true
validate :min_max_values
def min_max_values
true
diff --git a/app/models/generic_attribute_control/pattern.rb b/app/models/generic_attribute_control/pattern.rb
index 6796da84f..d59f211dc 100644
--- a/app/models/generic_attribute_control/pattern.rb
+++ b/app/models/generic_attribute_control/pattern.rb
@@ -2,15 +2,13 @@ module GenericAttributeControl
class Pattern < ComplianceControl
hstore_accessor :control_attributes, pattern: :string, target: :string
- validate :pattern_match
- def pattern_match
- true
- end
+ #validates :target, presence: true
+ #validates :pattern, presence: true
class << self
def attribute_type; :string end
def default_criticity; :warning end
- def default_code; "3-Generic-3" end
+ def default_code; "3-Generic-1" end
end
end
end
diff --git a/app/models/generic_attribute_control/uniqueness.rb b/app/models/generic_attribute_control/uniqueness.rb
index f227bf8b6..dbedcd858 100644
--- a/app/models/generic_attribute_control/uniqueness.rb
+++ b/app/models/generic_attribute_control/uniqueness.rb
@@ -2,10 +2,7 @@ module GenericAttributeControl
class Uniqueness < ComplianceControl
hstore_accessor :control_attributes, target: :string
- validate :unique_values
- def unique_values
- true
- end
+ #validates :target, presence: true
class << self
def attribute_type; :string end
diff --git a/app/models/vehicle_journey_control/delta.rb b/app/models/vehicle_journey_control/delta.rb
index 7be0db261..1f3a4d492 100644
--- a/app/models/vehicle_journey_control/delta.rb
+++ b/app/models/vehicle_journey_control/delta.rb
@@ -3,6 +3,8 @@ module VehicleJourneyControl
hstore_accessor :control_attributes, maximum: :integer
+ validates :maximum, numericality: true, allow_nil: true
+
def self.default_code; "3-VehicleJourney-3" end
end
end
diff --git a/app/models/vehicle_journey_control/speed.rb b/app/models/vehicle_journey_control/speed.rb
index cc46ee1f9..099a46d1d 100644
--- a/app/models/vehicle_journey_control/speed.rb
+++ b/app/models/vehicle_journey_control/speed.rb
@@ -2,6 +2,9 @@ module VehicleJourneyControl
class Speed < ComplianceControl
hstore_accessor :control_attributes, minimum: :integer, maximum: :integer
+ validates :minimum, numericality: true, allow_nil: true
+ validates :maximum, numericality: true, allow_nil: true
+
def self.default_code; "3-VehicleJourney-2" end
end
end
diff --git a/app/models/route_control/time_table.rb b/app/models/vehicle_journey_control/time_table.rb
index 069cd0a9e..617ead12b 100644
--- a/app/models/route_control/time_table.rb
+++ b/app/models/vehicle_journey_control/time_table.rb
@@ -1,4 +1,4 @@
-module RouteControl
+module VehicleJourneyControl
class TimeTable < ComplianceControl
def self.default_code; "3-VehicleJourney-4" end
diff --git a/app/models/route_control/vehicle_journey_at_stops.rb b/app/models/vehicle_journey_control/vehicle_journey_at_stops.rb
index 7c376a2da..47ee26f82 100644
--- a/app/models/route_control/vehicle_journey_at_stops.rb
+++ b/app/models/vehicle_journey_control/vehicle_journey_at_stops.rb
@@ -1,4 +1,4 @@
-module RouteControl
+module VehicleJourneyControl
class VehicleJourneyAtStops < ComplianceControl
def self.default_code; "3-VehicleJourney-5" end
diff --git a/app/models/vehicle_journey_control/waiting_time.rb b/app/models/vehicle_journey_control/waiting_time.rb
index da35bc4a1..68fccb5c1 100644
--- a/app/models/vehicle_journey_control/waiting_time.rb
+++ b/app/models/vehicle_journey_control/waiting_time.rb
@@ -2,6 +2,8 @@ module VehicleJourneyControl
class WaitingTime < ComplianceControl
hstore_accessor :control_attributes, maximum: :integer
+ validates :maximum, numericality: true, allow_nil: true
+
def self.default_code; "3-VehicleJourney-1" end
end
end
diff --git a/app/views/compliance_controls/_form.html.slim b/app/views/compliance_controls/_form.html.slim
index 8c56d145f..1ebbe8802 100644
--- a/app/views/compliance_controls/_form.html.slim
+++ b/app/views/compliance_controls/_form.html.slim
@@ -2,14 +2,14 @@
.row
.col-lg-12
= f.input :name
- = f.input :type, as: :select, collection: ComplianceControl.subclasses, disabled: true
+ = f.input :type, as: :hidden
= f.input :code
= f.input :criticity
= f.association :compliance_control_block, collection: @compliance_control_set.compliance_control_blocks, label_method: :label_method
= f.input :comment
- f.object.class.dynamic_attributes.each do |attribute|
- if attribute == :target
- = f.input :target, as: :grouped_select, collection: ModelAttribute.grouped_options(@compliance_control.class.attribute_type), :group_method => :last
+ = f.input :target, as: :grouped_select, collection: ModelAttribute.grouped_options(@compliance_control.class.attribute_type), group_method: :last, include_blank: false
- else
= f.input attribute.to_sym
end
diff --git a/app/views/compliance_controls/select_type.html.slim b/app/views/compliance_controls/select_type.html.slim
index 72ac41dc9..a4ae1ed27 100644
--- a/app/views/compliance_controls/select_type.html.slim
+++ b/app/views/compliance_controls/select_type.html.slim
@@ -12,7 +12,7 @@
= form_tag(new_compliance_control_set_compliance_control_path, method: :get) do
- @sti_subclasses.each do |klass|
.radio
- = radio_button_tag(:sti_class, klass)
- = I18n.t("activerecord.models.#{klass.name.underscore}.one")
+ = radio_button_tag(:sti_class, klass, @sti_subclasses.first)
+ = "#{klass.default_code} - #{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/app/views/compliance_controls/show.html.slim b/app/views/compliance_controls/show.html.slim
index 7affcf2a3..2cf8051fc 100644
--- a/app/views/compliance_controls/show.html.slim
+++ b/app/views/compliance_controls/show.html.slim
@@ -16,8 +16,8 @@
ComplianceControl.human_attribute_name(:comment) => @compliance_control.comment,
}.merge( \
{}.tap do |hash| \
- @compliance_control.control_attributes.each do |k, v| \
- hash[ComplianceControl.human_attribute_name(k)] = v \
+ @compliance_control.class.dynamic_attributes.each do |attribute| \
+ hash[ComplianceControl.human_attribute_name(attribute)] = @compliance_control.send(attribute) \
end \
end \
)