From 0de5faf2f40974b326ba7435456d452978a018f3 Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Wed, 2 Nov 2016 00:44:18 -0700 Subject: [PATCH] Lighten dependencies --- app/assets/javascripts/blazer/routes.js.erb | 17 +-- app/controllers/blazer/base_controller.rb | 131 +++++++++--------- app/controllers/blazer/queries_controller.rb | 6 - app/views/blazer/queries/home.html.erb | 12 +- app/views/layouts/blazer/application.html.erb | 4 +- blazer.gemspec | 2 - lib/blazer.rb | 2 - 7 files changed, 80 insertions(+), 94 deletions(-) diff --git a/app/assets/javascripts/blazer/routes.js.erb b/app/assets/javascripts/blazer/routes.js.erb index 744009d38..eb99e41f0 100644 --- a/app/assets/javascripts/blazer/routes.js.erb +++ b/app/assets/javascripts/blazer/routes.js.erb @@ -1,26 +1,23 @@ -<%#= JsRoutes.generate(engine: Blazer::Engine, prefix: Blazer::Engine.app.url_helpers.root_path) %> - -// temp fix var Routes = { run_queries_path: function() { - return gon.root_path + "queries/run" + return rootPath + "queries/run" }, cancel_queries_path: function() { - return gon.root_path + "queries/cancel" + return rootPath + "queries/cancel" }, schema_queries_path: function(params) { - return gon.root_path + "queries/schema?data_source=" + params.data_source + return rootPath + "queries/schema?data_source=" + params.data_source }, tables_queries_path: function(params) { - return gon.root_path + "queries/tables?data_source=" + params.data_source + return rootPath + "queries/tables?data_source=" + params.data_source }, queries_path: function() { - return gon.root_path + "queries" + return rootPath + "queries" }, query_path: function(id) { - return gon.root_path + "queries/" + id + return rootPath + "queries/" + id }, dashboard_path: function(id) { - return gon.root_path + "dashboards/" + id + return rootPath + "dashboards/" + id } } diff --git a/app/controllers/blazer/base_controller.rb b/app/controllers/blazer/base_controller.rb index c470e020c..66147066c 100644 --- a/app/controllers/blazer/base_controller.rb +++ b/app/controllers/blazer/base_controller.rb @@ -19,94 +19,87 @@ class BaseController < ApplicationController if Blazer.before_action before_action Blazer.before_action.to_sym end - before_action :set_js_routes layout "blazer/application" private - def process_vars(statement, data_source) - (@bind_vars ||= []).concat(extract_vars(statement)).uniq! - @bind_vars.each do |var| - params[var] ||= Blazer.data_sources[data_source].variable_defaults[var] - end - @success = @bind_vars.all? { |v| params[v] } - - if @success + def process_vars(statement, data_source) + (@bind_vars ||= []).concat(extract_vars(statement)).uniq! @bind_vars.each do |var| - value = params[var].presence - if value - if ["start_time", "end_time"].include?(var) - value = value.to_s.gsub(" ", "+") # fix for Quip bug - end + params[var] ||= Blazer.data_sources[data_source].variable_defaults[var] + end + @success = @bind_vars.all? { |v| params[v] } + + if @success + @bind_vars.each do |var| + value = params[var].presence + if value + if ["start_time", "end_time"].include?(var) + value = value.to_s.gsub(" ", "+") # fix for Quip bug + end - if var.end_with?("_at") - begin - value = Blazer.time_zone.parse(value) - rescue - # do nothing + if var.end_with?("_at") + begin + value = Blazer.time_zone.parse(value) + rescue + # do nothing + end end - end - if value =~ /\A\d+\z/ - value = value.to_i - elsif value =~ /\A\d+\.\d+\z/ - value = value.to_f + if value =~ /\A\d+\z/ + value = value.to_i + elsif value =~ /\A\d+\.\d+\z/ + value = value.to_f + end end + statement.gsub!("{#{var}}", ActiveRecord::Base.connection.quote(value)) end - statement.gsub!("{#{var}}", ActiveRecord::Base.connection.quote(value)) end end - end - def parse_smart_variables(var, data_source) - 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 + def parse_smart_variables(var, data_source) + 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 - end - - [smart_var, error] - end - def extract_vars(statement) - # strip commented out lines - # and regex {1} or {1,2} - statement.gsub(/\-\-.+/, "").gsub(/\/\*.+\*\//m, "").scan(/\{\w*?\}/i).map { |v| v[1...-1] }.reject { |v| /\A\d+(\,\d+)?\z/.match(v) || v.empty? }.uniq - end - helper_method :extract_vars + [smart_var, error] + end - def variable_params - params.except(:controller, :action, :id, :host, :query, :dashboard, :query_id, :query_ids, :table_names, :authenticity_token, :utf8, :_method, :commit, :statement, :data_source, :name, :fork_query_id, :blazer, :run_id).permit! - end - helper_method :variable_params + def extract_vars(statement) + # strip commented out lines + # and regex {1} or {1,2} + statement.gsub(/\-\-.+/, "").gsub(/\/\*.+\*\//m, "").scan(/\{\w*?\}/i).map { |v| v[1...-1] }.reject { |v| /\A\d+(\,\d+)?\z/.match(v) || v.empty? }.uniq + end + helper_method :extract_vars - def blazer_user - send(Blazer.user_method) if Blazer.user_method && respond_to?(Blazer.user_method) - end - helper_method :blazer_user + def variable_params + params.except(:controller, :action, :id, :host, :query, :dashboard, :query_id, :query_ids, :table_names, :authenticity_token, :utf8, :_method, :commit, :statement, :data_source, :name, :fork_query_id, :blazer, :run_id).permit! + end + helper_method :variable_params - def render_errors(resource) - @errors = resource.errors - action = resource.persisted? ? :edit : :new - render action, status: :unprocessable_entity - end + def blazer_user + send(Blazer.user_method) if Blazer.user_method && respond_to?(Blazer.user_method) + end + helper_method :blazer_user - def set_js_routes - gon.push( - root_path: root_path - ) - end + def render_errors(resource) + @errors = resource.errors + action = resource.persisted? ? :edit : :new + render action, status: :unprocessable_entity + end end end diff --git a/app/controllers/blazer/queries_controller.rb b/app/controllers/blazer/queries_controller.rb index 01ce4bdd0..c82c919c5 100644 --- a/app/controllers/blazer/queries_controller.rb +++ b/app/controllers/blazer/queries_controller.rb @@ -26,12 +26,6 @@ def home dashboard: true } end - - gon.push( - dashboards: @dashboards, - queries: @queries, - more: @more - ) end def index diff --git a/app/views/blazer/queries/home.html.erb b/app/views/blazer/queries/home.html.erb index 012bd4bb9..dcecbf244 100644 --- a/app/views/blazer/queries/home.html.erb +++ b/app/views/blazer/queries/home.html.erb @@ -50,6 +50,10 @@ <% if blazer_maps? %> <%= stylesheet_link_tag "https://api.mapbox.com/mapbox.js/v2.4.0/mapbox.css" %> <%= javascript_include_tag "https://api.mapbox.com/mapbox.js/v2.4.0/mapbox.js" %> diff --git a/blazer.gemspec b/blazer.gemspec index 4dc74773c..33c8be627 100644 --- a/blazer.gemspec +++ b/blazer.gemspec @@ -20,8 +20,6 @@ Gem::Specification.new do |spec| spec.add_dependency "rails" spec.add_dependency "chartkick" spec.add_dependency "safely_block", ">= 0.1.1" - spec.add_dependency "js-routes" - spec.add_dependency "gon" spec.add_development_dependency "bundler", "~> 1.7" spec.add_development_dependency "rake", "~> 10.0" diff --git a/lib/blazer.rb b/lib/blazer.rb index c95660e6c..ba4c4b33c 100644 --- a/lib/blazer.rb +++ b/lib/blazer.rb @@ -2,8 +2,6 @@ require "yaml" require "chartkick" require "safely/core" -require "js-routes" -require "gon" require "blazer/version" require "blazer/data_source" require "blazer/result"