diff --git a/app/controllers/blazer/base_controller.rb b/app/controllers/blazer/base_controller.rb index 49faa6117..4a6206926 100644 --- a/app/controllers/blazer/base_controller.rb +++ b/app/controllers/blazer/base_controller.rb @@ -47,6 +47,10 @@ def process_vars(statement, data_source) value = value.to_s.gsub(" ", "+") # fix for Quip bug end + if value.is_a?(Array) && Blazer.data_sources[data_source].supports_array? + value = Blazer.data_sources[data_source].array(value) + end + if var.end_with?("_at") begin value = Blazer.time_zone.parse(value) diff --git a/app/controllers/blazer/queries_controller.rb b/app/controllers/blazer/queries_controller.rb index d71b33a95..de1fe4267 100644 --- a/app/controllers/blazer/queries_controller.rb +++ b/app/controllers/blazer/queries_controller.rb @@ -63,11 +63,14 @@ def show process_vars(@statement, @query.data_source) @smart_vars = {} + @plural_vars = {} @sql_errors = [] data_source = Blazer.data_sources[@query.data_source] @bind_vars.each do |var| smart_var, error = parse_smart_variables(var, data_source) - @smart_vars[var] = smart_var if smart_var + plural_var, error = parse_smart_variables(var.singularize, data_source) if smart_var.nil? && error.nil? + @smart_vars[var] = smart_var || plural_var + @plural_vars[var] = true if smart_var.nil? && plural_var.present? @sql_errors << error if error end diff --git a/app/views/blazer/_variables.html.erb b/app/views/blazer/_variables.html.erb index d594bcc6e..e01cfb3d0 100644 --- a/app/views/blazer/_variables.html.erb +++ b/app/views/blazer/_variables.html.erb @@ -19,7 +19,7 @@ <% @bind_vars.each_with_index do |var, i| %> <%= label_tag var, var %> <% if (data = @smart_vars[var]) %> - <%= select_tag var, options_for_select([[nil, nil]] + data, selected: params[var]), style: "margin-right: 20px; width: 200px; display: none;" %> + <%= select_tag var, options_for_select([[nil, nil]] + data, selected: params[var]), multiple: @plural_vars[var].present?, style: "margin-right: 20px; width: 200px; display: none;" %>