Forráskód Böngészése

Fixed inherit_smart_settings

Andrew Kane 8 éve
szülő
commit
16e6691b26

+ 16 - 9
app/controllers/blazer/base_controller.rb

@@ -59,16 +59,23 @@ module Blazer
     end
 
     def parse_smart_variables(var, data_source)
-      query = data_source.smart_variables[var]
-      if query.is_a? Hash
-        smart_var = query.map { |k,v| [v, k] }
-      elsif query.is_a? Array
-        smart_var = query.map { |v| [v, v] }
-      elsif query
-        result = data_source.run_statement(query)
-        smart_var = result.rows.map { |v| v.reverse }
-        error = result.error if result.error
+      smart_var_data_source =
+        ([data_source] + Array(data_source.settings["inherit_smart_settings"]).map { |ds| Blazer.data_sources[ds] }).find { |ds| ds.smart_variables[var] }
+
+      if smart_var_data_source
+        query = smart_var_data_source.smart_variables[var]
+
+        if query.is_a? Hash
+          smart_var = query.map { |k,v| [v, k] }
+        elsif query.is_a? Array
+          smart_var = query.map { |v| [v, v] }
+        elsif query
+          result = smart_var_data_source.run_statement(query)
+          smart_var = result.rows.map { |v| v.reverse }
+          error = result.error if result.error
+        end
       end
+
       [smart_var, error]
     end
 

+ 2 - 18
lib/blazer/data_source.rb

@@ -44,27 +44,11 @@ module Blazer
     end
 
     def smart_columns
-      @smart_columns ||= begin
-        sc = settings["smart_columns"] || {}
-        Array(settings["inherit_smart_settings"]).each do |ds|
-          (Blazer.data_sources[ds].settings["smart_columns"] || {}).each do |k, v|
-            sc[k] ||= v
-          end
-        end
-        sc
-      end
+      settings["smart_columns"] || {}
     end
 
     def smart_variables
-      @smart_variables ||= begin
-        sv = settings["smart_variables"] || {}
-        Array(settings["inherit_smart_settings"]).each do |ds|
-          (Blazer.data_sources[ds].settings["smart_variables"] || {}).each do |k, v|
-            sv[k] ||= v
-          end
-        end
-        sv
-      end
+      settings["smart_variables"] || {}
     end
 
     def variable_defaults

+ 6 - 3
lib/blazer/result.rb

@@ -23,14 +23,17 @@ module Blazer
       @boom ||= begin
         boom = {}
         columns.each_with_index do |key, i|
-          query = data_source.smart_columns[key]
-          if query
+          smart_columns_data_source =
+            ([data_source] + Array(data_source.settings["inherit_smart_settings"]).map { |ds| Blazer.data_sources[ds] }).find { |ds| ds.smart_columns[key] }
+
+          if smart_columns_data_source
+            query = smart_columns_data_source.smart_columns[key]
             res =
               if query.is_a?(Hash)
                 query
               else
                 values = rows.map { |r| r[i] }.compact.uniq
-                result = data_source.run_statement(ActiveRecord::Base.send(:sanitize_sql_array, [query.sub("{value}", "(?)"), values]))
+                result = smart_columns_data_source.run_statement(ActiveRecord::Base.send(:sanitize_sql_array, [query.sub("{value}", "(?)"), values]))
                 result.rows
               end