blazer 1.7.7 → 2.6.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/CHANGELOG.md +242 -33
- data/CONTRIBUTING.md +42 -0
- data/LICENSE.txt +1 -1
- data/README.md +621 -211
- data/app/assets/fonts/blazer/glyphicons-halflings-regular.eot +0 -0
- data/app/assets/fonts/blazer/glyphicons-halflings-regular.svg +0 -0
- data/app/assets/fonts/blazer/glyphicons-halflings-regular.ttf +0 -0
- data/app/assets/fonts/blazer/glyphicons-halflings-regular.woff +0 -0
- data/app/assets/fonts/blazer/glyphicons-halflings-regular.woff2 +0 -0
- data/app/assets/images/blazer/favicon.png +0 -0
- data/app/assets/javascripts/blazer/Chart.js +15658 -10011
- data/app/assets/javascripts/blazer/Sortable.js +3413 -848
- data/app/assets/javascripts/blazer/ace/ace.js +21294 -4
- data/app/assets/javascripts/blazer/ace/ext-language_tools.js +1991 -3
- data/app/assets/javascripts/blazer/ace/mode-sql.js +110 -1
- data/app/assets/javascripts/blazer/ace/snippets/sql.js +40 -1
- data/app/assets/javascripts/blazer/ace/snippets/text.js +14 -1
- data/app/assets/javascripts/blazer/ace/theme-twilight.js +116 -1
- data/app/assets/javascripts/blazer/application.js +5 -3
- data/app/assets/javascripts/blazer/bootstrap.js +842 -628
- data/app/assets/javascripts/blazer/chartkick.js +2015 -1244
- data/app/assets/javascripts/blazer/daterangepicker.js +372 -299
- data/app/assets/javascripts/blazer/highlight.min.js +3 -0
- data/app/assets/javascripts/blazer/{jquery_ujs.js → jquery-ujs.js} +161 -75
- data/app/assets/javascripts/blazer/jquery.js +10126 -9562
- data/app/assets/javascripts/blazer/jquery.stickytableheaders.js +321 -259
- data/app/assets/javascripts/blazer/moment-timezone-with-data.js +1546 -0
- data/app/assets/javascripts/blazer/moment.js +5085 -2460
- data/app/assets/javascripts/blazer/queries.js +18 -4
- data/app/assets/javascripts/blazer/routes.js +3 -0
- data/app/assets/javascripts/blazer/selectize.js +3828 -3604
- data/app/assets/javascripts/blazer/stupidtable-custom-settings.js +13 -0
- data/app/assets/javascripts/blazer/stupidtable.js +254 -87
- data/app/assets/javascripts/blazer/vue.js +11175 -6676
- data/app/assets/stylesheets/blazer/application.css +51 -6
- data/app/assets/stylesheets/blazer/bootstrap-propshaft.css +10 -0
- data/app/assets/stylesheets/blazer/bootstrap-sprockets.css.erb +10 -0
- data/app/assets/stylesheets/blazer/{bootstrap.css.erb → bootstrap.css} +1337 -711
- data/app/assets/stylesheets/blazer/{daterangepicker-bs3.css → daterangepicker.css} +207 -172
- data/app/assets/stylesheets/blazer/{selectize.default.css → selectize.css} +26 -10
- data/app/controllers/blazer/base_controller.rb +73 -46
- data/app/controllers/blazer/checks_controller.rb +1 -1
- data/app/controllers/blazer/dashboards_controller.rb +7 -13
- data/app/controllers/blazer/queries_controller.rb +171 -51
- data/app/controllers/blazer/uploads_controller.rb +147 -0
- data/app/helpers/blazer/base_helper.rb +6 -16
- data/app/models/blazer/audit.rb +3 -3
- data/app/models/blazer/check.rb +31 -5
- data/app/models/blazer/dashboard.rb +6 -2
- data/app/models/blazer/dashboard_query.rb +1 -1
- data/app/models/blazer/query.rb +30 -4
- data/app/models/blazer/record.rb +5 -0
- data/app/models/blazer/upload.rb +11 -0
- data/app/models/blazer/uploads_connection.rb +7 -0
- data/app/views/blazer/_nav.html.erb +3 -1
- data/app/views/blazer/_variables.html.erb +48 -23
- data/app/views/blazer/check_mailer/failing_checks.html.erb +1 -0
- data/app/views/blazer/check_mailer/state_change.html.erb +1 -0
- data/app/views/blazer/checks/_form.html.erb +17 -9
- data/app/views/blazer/checks/edit.html.erb +2 -0
- data/app/views/blazer/checks/index.html.erb +37 -5
- data/app/views/blazer/checks/new.html.erb +2 -0
- data/app/views/blazer/dashboards/_form.html.erb +5 -5
- data/app/views/blazer/dashboards/edit.html.erb +2 -0
- data/app/views/blazer/dashboards/new.html.erb +2 -0
- data/app/views/blazer/dashboards/show.html.erb +13 -7
- data/app/views/blazer/queries/_caching.html.erb +16 -0
- data/app/views/blazer/queries/_cohorts.html.erb +48 -0
- data/app/views/blazer/queries/_form.html.erb +23 -13
- data/app/views/blazer/queries/docs.html.erb +137 -0
- data/app/views/blazer/queries/home.html.erb +21 -7
- data/app/views/blazer/queries/run.html.erb +64 -29
- data/app/views/blazer/queries/schema.html.erb +44 -7
- data/app/views/blazer/queries/show.html.erb +15 -8
- data/app/views/blazer/uploads/_form.html.erb +27 -0
- data/app/views/blazer/uploads/edit.html.erb +3 -0
- data/app/views/blazer/uploads/index.html.erb +55 -0
- data/app/views/blazer/uploads/new.html.erb +3 -0
- data/app/views/layouts/blazer/application.html.erb +10 -5
- data/config/routes.rb +10 -1
- data/lib/blazer/adapters/athena_adapter.rb +182 -0
- data/lib/blazer/adapters/base_adapter.rb +24 -1
- data/lib/blazer/adapters/bigquery_adapter.rb +79 -0
- data/lib/blazer/adapters/cassandra_adapter.rb +70 -0
- data/lib/blazer/adapters/drill_adapter.rb +38 -0
- data/lib/blazer/adapters/druid_adapter.rb +102 -0
- data/lib/blazer/adapters/elasticsearch_adapter.rb +30 -18
- data/lib/blazer/adapters/hive_adapter.rb +55 -0
- data/lib/blazer/adapters/ignite_adapter.rb +64 -0
- data/lib/blazer/adapters/influxdb_adapter.rb +57 -0
- data/lib/blazer/adapters/mongodb_adapter.rb +5 -1
- data/lib/blazer/adapters/neo4j_adapter.rb +62 -0
- data/lib/blazer/adapters/opensearch_adapter.rb +52 -0
- data/lib/blazer/adapters/presto_adapter.rb +9 -0
- data/lib/blazer/adapters/salesforce_adapter.rb +50 -0
- data/lib/blazer/adapters/snowflake_adapter.rb +82 -0
- data/lib/blazer/adapters/soda_adapter.rb +105 -0
- data/lib/blazer/adapters/spark_adapter.rb +14 -0
- data/lib/blazer/adapters/sql_adapter.rb +187 -20
- data/{app/mailers → lib}/blazer/check_mailer.rb +0 -0
- data/lib/blazer/data_source.rb +107 -30
- data/lib/blazer/engine.rb +21 -23
- data/lib/blazer/result.rb +95 -29
- data/lib/blazer/run_statement.rb +8 -4
- data/lib/blazer/run_statement_job.rb +8 -9
- data/lib/blazer/slack_notifier.rb +94 -0
- data/lib/blazer/statement.rb +75 -0
- data/lib/blazer/version.rb +1 -1
- data/lib/blazer.rb +154 -26
- data/lib/generators/blazer/install_generator.rb +7 -18
- data/lib/generators/blazer/templates/{config.yml → config.yml.tt} +26 -3
- data/lib/generators/blazer/templates/{install.rb → install.rb.tt} +6 -4
- data/lib/generators/blazer/templates/uploads.rb.tt +10 -0
- data/lib/generators/blazer/uploads_generator.rb +18 -0
- data/lib/tasks/blazer.rake +11 -1
- data/licenses/LICENSE-ace.txt +24 -0
- data/licenses/LICENSE-bootstrap.txt +21 -0
- data/licenses/LICENSE-chart.js.txt +9 -0
- data/licenses/LICENSE-chartkick.js.txt +22 -0
- data/licenses/LICENSE-daterangepicker.txt +21 -0
- data/licenses/LICENSE-fuzzysearch.txt +20 -0
- data/licenses/LICENSE-highlight.js.txt +29 -0
- data/licenses/LICENSE-jquery-ujs.txt +20 -0
- data/licenses/LICENSE-jquery.txt +20 -0
- data/licenses/LICENSE-moment-timezone.txt +20 -0
- data/licenses/LICENSE-moment.txt +22 -0
- data/licenses/LICENSE-selectize.txt +202 -0
- data/licenses/LICENSE-sortable.txt +21 -0
- data/licenses/LICENSE-stickytableheaders.txt +20 -0
- data/licenses/LICENSE-stupidtable.txt +19 -0
- data/licenses/LICENSE-vue.txt +21 -0
- metadata +83 -53
- data/.gitignore +0 -14
- data/Gemfile +0 -4
- data/Rakefile +0 -1
- data/app/assets/javascripts/blazer/highlight.pack.js +0 -1
- data/app/assets/javascripts/blazer/moment-timezone.js +0 -1007
- data/blazer.gemspec +0 -26
@@ -3,6 +3,9 @@ var runningQueries = []
|
|
3
3
|
var maxQueries = 3
|
4
4
|
|
5
5
|
function runQuery(data, success, error) {
|
6
|
+
if (!data.data_source) {
|
7
|
+
throw new Error("Data source is required to cancel queries")
|
8
|
+
}
|
6
9
|
data.run_id = uuid()
|
7
10
|
var query = {
|
8
11
|
data: data,
|
@@ -50,8 +53,15 @@ function runQueryHelper(query) {
|
|
50
53
|
queryComplete(query)
|
51
54
|
}
|
52
55
|
}).fail( function(jqXHR, textStatus, errorThrown) {
|
53
|
-
|
56
|
+
// check jqXHR.status instead of query.canceled
|
57
|
+
// so it works for page navigation with Firefox and Safari
|
58
|
+
if (jqXHR.status === 0) {
|
59
|
+
cancelServerQuery(query)
|
60
|
+
} else {
|
54
61
|
var message = (typeof errorThrown === "string") ? errorThrown : errorThrown.message
|
62
|
+
if (!message) {
|
63
|
+
message = "An error occurred"
|
64
|
+
}
|
55
65
|
query.error(message)
|
56
66
|
}
|
57
67
|
queryComplete(query)
|
@@ -80,19 +90,23 @@ function cancelAllQueries() {
|
|
80
90
|
}
|
81
91
|
}
|
82
92
|
|
83
|
-
|
93
|
+
// needed for Chrome
|
94
|
+
// queries are canceled before unload with Firefox and Safari
|
95
|
+
$(window).on("unload", cancelAllQueries)
|
84
96
|
|
85
97
|
function cancelQuery(query) {
|
86
98
|
query.canceled = true
|
87
99
|
if (query.xhr) {
|
88
100
|
query.xhr.abort()
|
89
101
|
}
|
102
|
+
}
|
90
103
|
|
104
|
+
function cancelServerQuery(query) {
|
91
105
|
// tell server
|
92
106
|
var path = Routes.cancel_queries_path()
|
93
107
|
var data = {run_id: query.run_id, data_source: query.data_source}
|
94
108
|
if (navigator.sendBeacon) {
|
95
|
-
navigator.sendBeacon(path
|
109
|
+
navigator.sendBeacon(path + "?" + $.param(csrfProtect(data)))
|
96
110
|
} else {
|
97
111
|
// TODO make sync
|
98
112
|
$.post(path, data)
|
@@ -103,5 +117,5 @@ function csrfProtect(payload) {
|
|
103
117
|
var param = $("meta[name=csrf-param]").attr("content")
|
104
118
|
var token = $("meta[name=csrf-token]").attr("content")
|
105
119
|
if (param && token) payload[param] = token
|
106
|
-
return
|
120
|
+
return payload
|
107
121
|
}
|
@@ -8,6 +8,9 @@ var Routes = {
|
|
8
8
|
schema_queries_path: function(params) {
|
9
9
|
return rootPath + "queries/schema?" + $.param(params)
|
10
10
|
},
|
11
|
+
docs_queries_path: function(params) {
|
12
|
+
return rootPath + "queries/docs?" + $.param(params)
|
13
|
+
},
|
11
14
|
tables_queries_path: function(params) {
|
12
15
|
return rootPath + "queries/tables?" + $.param(params)
|
13
16
|
},
|