lib/ecoportal/api/v2/page/component/chart_field.rb in ecoportal-api-v2-0.8.8 vs lib/ecoportal/api/v2/page/component/chart_field.rb in ecoportal-api-v2-0.8.9

- old
+ new

@@ -3,29 +3,41 @@ class V2 class Page class Component class ChartField < Page::Component passthrough :mode - passthrough :relative, :relstart, :relbound - passthrough :bounded, :ubound, :lbound + passboolean :relative, :bounded + passthrough :relstart, :relbound + passthrough :ubound, :lbound + passthrough :filter_date_input - passthrough :user_id, :lock_chart_user + passthrough :user_id, :user_lookup + passboolean :lock_chart_user + embeds_one :series_config, klass: "Ecoportal::API::V2::Page::Component::ChartField::SeriesConfig" embeds_one :frequency_config, klass: "Ecoportal::API::V2::Page::Component::ChartField::Frequency" embeds_one :heatmap_config, klass: "Ecoportal::API::V2::Page::Component::ChartField::Heatmap" embeds_one :sankey_config, klass: "Ecoportal::API::V2::Page::Component::ChartField::Sankey" embeds_one :indicator_config, klass: "Ecoportal::API::V2::Page::Component::ChartField::Indicator" embeds_one :faceted_series_config, klass: "Ecoportal::API::V2::Page::Component::ChartField::Multiseries" embeds_one :benchmark_config, klass: "Ecoportal::API::V2::Page::Component::ChartField::Benchmark" embeds_many :series, klass: "Ecoportal::API::V2::Page::Component::ChartField::Serie" - MODES = ["frequency", "series", "heatmap", "sankey", "indicator", "faceted_series"] + MODES = ["frequency", "series", "heatmap", "sankey", "indicator", "faceted_series", "benchmark"] + def mode=(value) + raise "Unsuported mode #{value}. Should be one of #{MODES}" unless MODES.include?(value) + config_doc(nil) + doc["mode"] = value + config_doc(config.class.new_doc) + self.mode + end + def config - case mode + case self.mode when "frequency" frequency_config when "series" series_config when "heatmap" @@ -39,16 +51,38 @@ when "benchmark" benchmark_config end end + private + + def config_doc(value) + case self.mode + when "frequency" + doc["frequency_config"] = value + when "series" + doc["series_config"] = value + when "heatmap" + doc["heatmap_config"] = value + when "sankey" + doc["sankey_config"] = value + when "indicator" + doc["indicator_config"] = value + when "faceted_series" + doc["faceted_series_config"] = value + when "benchmark" + doc["benchmark_config"] = value + end + end + end end end end end end +require 'ecoportal/api/v2/page/component/chart_field/config' require 'ecoportal/api/v2/page/component/chart_field/frequency' require 'ecoportal/api/v2/page/component/chart_field/series_config' require 'ecoportal/api/v2/page/component/chart_field/serie' require 'ecoportal/api/v2/page/component/chart_field/heatmap' require 'ecoportal/api/v2/page/component/chart_field/sankey'