diff options
Diffstat (limited to 'app/models')
| -rw-r--r-- | app/models/export/base.rb | 12 | ||||
| -rw-r--r-- | app/models/export/netex.rb | 15 | ||||
| -rw-r--r-- | app/models/export/option_proxy.rb | 21 | 
3 files changed, 39 insertions, 9 deletions
| diff --git a/app/models/export/base.rb b/app/models/export/base.rb index c65539635..6afa6b8e0 100644 --- a/app/models/export/base.rb +++ b/app/models/export/base.rb @@ -52,7 +52,7 @@ class Export::Base < ActiveRecord::Base            begin              klass_name.constantize            rescue => e -            Rails.logger.info "Failed: #{e.message}" +            Rails.logger.info "Failed: #{e.message}".red              nil            end          end @@ -83,10 +83,18 @@ class Export::Base < ActiveRecord::Base      end      if !!opts[:required] -      validates name, presence: true +      if opts[:depends] +        validates name, presence: true, if: ->(record){ record.send(opts[:depends][:option]) == opts[:depends][:value]} +      else +        validates name, presence: true +      end      end      @options ||= {}      @options[name] = opts + +    if block_given? +      yield Export::OptionProxy.new(self, opts.update(name: name)) +    end    end    def self.options diff --git a/app/models/export/netex.rb b/app/models/export/netex.rb index 069ec2209..d471682b0 100644 --- a/app/models/export/netex.rb +++ b/app/models/export/netex.rb @@ -1,8 +1,13 @@  class Export::Netex < Export::Base    after_commit :call_iev_callback, on: :create -  option :export_type, collection: %w(line full), required: true -  option :duration, type: :integer, default_value: 90, required: true -  option :line_code +  option :export_type, collection: %w(line full), required: true do |val| +    val.full do +      option :duration, type: :integer, default_value: 90, required: true +    end +    val.line do +      option :line_code, collection: ->(referential){referential.lines.map{|l| [l.display_name, l.id]}}, depends_on_referential: true +    end +  end    private @@ -10,10 +15,6 @@ class Export::Netex < Export::Base      URI("#{Rails.configuration.iev_url}/boiv_iev/referentials/exporter/new?id=#{id}")    end -  # def self.user_visible? -  #   false -  # end -    def destroy_non_ready_referential      if referential && !referential.ready        referential.destroy diff --git a/app/models/export/option_proxy.rb b/app/models/export/option_proxy.rb new file mode 100644 index 000000000..8141f3b54 --- /dev/null +++ b/app/models/export/option_proxy.rb @@ -0,0 +1,21 @@ +class Export::OptionProxy +  def initialize export, parent_option +    @export = export +    @parent_option = parent_option + +    if parent_option[:collection].is_a?(Array) +      parent_option[:collection].each do |val| +        define_singleton_method val do |&block| +          @_collection_value = val +          instance_exec &block +          @_collection_value = nil +        end +      end +    end +  end + +  def option name, opts={} +    opts.update depends: {option: @parent_option[:name], value: @_collection_value} +    @export.option name, opts +  end +end | 
