From 5a6ce6804f9d86c7dbb21ed20ebc08dbce552a91 Mon Sep 17 00:00:00 2001 From: Zog Date: Fri, 25 May 2018 15:09:20 +0200 Subject: Refs #7159; Updte options for netex exports --- app/models/export/base.rb | 12 ++++++++++-- app/models/export/netex.rb | 15 ++++++++------- app/models/export/option_proxy.rb | 21 +++++++++++++++++++++ 3 files changed, 39 insertions(+), 9 deletions(-) create mode 100644 app/models/export/option_proxy.rb (limited to 'app/models/export') 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..bacc7e60f 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_subtype, 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}, 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 -- cgit v1.2.3 From c49242a8a51f16635f67acd850b3bbcd6ad2ac5e Mon Sep 17 00:00:00 2001 From: Zog Date: Tue, 29 May 2018 11:01:23 +0200 Subject: Refs #7159; Rename Export#export_subtype to export_type --- app/models/export/netex.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app/models/export') diff --git a/app/models/export/netex.rb b/app/models/export/netex.rb index bacc7e60f..d471682b0 100644 --- a/app/models/export/netex.rb +++ b/app/models/export/netex.rb @@ -1,11 +1,11 @@ class Export::Netex < Export::Base after_commit :call_iev_callback, on: :create - option :export_subtype, collection: %w(line full), required: true do |val| + 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}, depends_on_referential: true + option :line_code, collection: ->(referential){referential.lines.map{|l| [l.display_name, l.id]}}, depends_on_referential: true end end -- cgit v1.2.3