diff options
Diffstat (limited to 'app')
| -rw-r--r-- | app/controllers/compliance_controls_controller.rb | 32 | ||||
| -rw-r--r-- | app/models/compliance_control.rb | 13 | ||||
| -rw-r--r-- | app/models/generic_attribute_control/min_max.rb | 3 | ||||
| -rw-r--r-- | app/models/generic_attribute_control/pattern.rb | 8 | ||||
| -rw-r--r-- | app/models/generic_attribute_control/uniqueness.rb | 5 | ||||
| -rw-r--r-- | app/models/vehicle_journey_control/delta.rb | 2 | ||||
| -rw-r--r-- | app/models/vehicle_journey_control/speed.rb | 3 | ||||
| -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.rb | 2 | ||||
| -rw-r--r-- | app/views/compliance_controls/_form.html.slim | 4 | ||||
| -rw-r--r-- | app/views/compliance_controls/select_type.html.slim | 4 | ||||
| -rw-r--r-- | app/views/compliance_controls/show.html.slim | 4 | 
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 \                ) | 
