aboutsummaryrefslogtreecommitdiffstats
path: root/app/models
diff options
context:
space:
mode:
Diffstat (limited to 'app/models')
-rw-r--r--app/models/export/base.rb12
-rw-r--r--app/models/export/netex.rb15
-rw-r--r--app/models/export/option_proxy.rb21
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