diff options
Diffstat (limited to 'app/models/export')
| -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 |
