blazer 1.9.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +13 -0
  3. data/CONTRIBUTING.md +9 -7
  4. data/README.md +59 -19
  5. data/app/assets/fonts/blazer/glyphicons-halflings-regular.eot +0 -0
  6. data/app/assets/fonts/blazer/glyphicons-halflings-regular.svg +0 -0
  7. data/app/assets/fonts/blazer/glyphicons-halflings-regular.ttf +0 -0
  8. data/app/assets/fonts/blazer/glyphicons-halflings-regular.woff +0 -0
  9. data/app/assets/fonts/blazer/glyphicons-halflings-regular.woff2 +0 -0
  10. data/app/assets/javascripts/blazer/Chart.js +4195 -3884
  11. data/app/assets/javascripts/blazer/Sortable.js +1493 -1097
  12. data/app/assets/javascripts/blazer/ace/ace.js +21294 -4
  13. data/app/assets/javascripts/blazer/ace/ext-language_tools.js +1991 -3
  14. data/app/assets/javascripts/blazer/ace/mode-sql.js +110 -1
  15. data/app/assets/javascripts/blazer/ace/snippets/sql.js +40 -1
  16. data/app/assets/javascripts/blazer/ace/snippets/text.js +14 -1
  17. data/app/assets/javascripts/blazer/ace/theme-twilight.js +116 -1
  18. data/app/assets/javascripts/blazer/application.js +4 -3
  19. data/app/assets/javascripts/blazer/bootstrap.js +623 -612
  20. data/app/assets/javascripts/blazer/chartkick.js +1769 -1248
  21. data/app/assets/javascripts/blazer/daterangepicker.js +263 -115
  22. data/app/assets/javascripts/blazer/highlight.min.js +3 -0
  23. data/app/assets/javascripts/blazer/{jquery_ujs.js → jquery-ujs.js} +161 -75
  24. data/app/assets/javascripts/blazer/jquery.js +9506 -9450
  25. data/app/assets/javascripts/blazer/jquery.stickytableheaders.js +321 -259
  26. data/app/assets/javascripts/blazer/moment-timezone-with-data.js +1212 -0
  27. data/app/assets/javascripts/blazer/queries.js +1 -1
  28. data/app/assets/javascripts/blazer/routes.js +1 -1
  29. data/app/assets/javascripts/blazer/selectize.js +3828 -3604
  30. data/app/assets/javascripts/blazer/stupidtable.js +255 -88
  31. data/app/assets/javascripts/blazer/vue.js +8015 -4583
  32. data/app/assets/stylesheets/blazer/application.css +13 -1
  33. data/app/assets/stylesheets/blazer/bootstrap.css.erb +879 -325
  34. data/app/assets/stylesheets/blazer/daterangepicker.css +269 -0
  35. data/app/assets/stylesheets/blazer/selectize.default.css +26 -10
  36. data/app/controllers/blazer/base_controller.rb +7 -1
  37. data/app/controllers/blazer/checks_controller.rb +1 -1
  38. data/app/controllers/blazer/queries_controller.rb +7 -8
  39. data/app/mailers/blazer/slack_notifier.rb +76 -0
  40. data/app/models/blazer/check.rb +9 -0
  41. data/app/views/blazer/_variables.html.erb +38 -18
  42. data/app/views/blazer/checks/_form.html.erb +9 -1
  43. data/app/views/blazer/checks/index.html.erb +4 -1
  44. data/app/views/blazer/queries/_form.html.erb +2 -2
  45. data/app/views/blazer/queries/docs.html.erb +138 -0
  46. data/app/views/blazer/queries/show.html.erb +1 -1
  47. data/app/views/layouts/blazer/application.html.erb +2 -2
  48. data/config/routes.rb +1 -1
  49. data/lib/blazer.rb +22 -15
  50. data/lib/blazer/adapters/bigquery_adapter.rb +5 -4
  51. data/lib/blazer/adapters/elasticsearch_adapter.rb +14 -17
  52. data/lib/blazer/adapters/mongodb_adapter.rb +1 -1
  53. data/lib/blazer/adapters/sql_adapter.rb +7 -1
  54. data/lib/blazer/data_source.rb +0 -1
  55. data/lib/blazer/engine.rb +2 -0
  56. data/lib/blazer/run_statement_job.rb +6 -9
  57. data/lib/blazer/version.rb +1 -1
  58. data/lib/generators/blazer/templates/{config.yml → config.yml.tt} +3 -0
  59. data/lib/generators/blazer/templates/{install.rb → install.rb.tt} +1 -0
  60. data/lib/tasks/blazer.rake +2 -1
  61. metadata +24 -30
  62. data/.gitattributes +0 -1
  63. data/.github/ISSUE_TEMPLATE.md +0 -7
  64. data/.gitignore +0 -14
  65. data/Gemfile +0 -4
  66. data/Rakefile +0 -1
  67. data/app/assets/javascripts/blazer/highlight.pack.js +0 -1
  68. data/app/assets/javascripts/blazer/moment-timezone.js +0 -1007
  69. data/app/assets/stylesheets/blazer/daterangepicker-bs3.css +0 -375
  70. data/app/views/blazer/queries/schema.html.erb +0 -20
  71. data/blazer.gemspec +0 -27
@@ -1,375 +0,0 @@
1
- /**
2
- * A stylesheet for use with Bootstrap 3.x
3
- * @author: Dan Grossman http://www.dangrossman.info/
4
- * @copyright: Copyright (c) 2012-2015 Dan Grossman. All rights reserved.
5
- * @license: Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php
6
- * @website: https://www.improvely.com/
7
- */
8
-
9
- /* Container Appearance */
10
-
11
- .daterangepicker {
12
- position: absolute;
13
- background: #fff;
14
- top: 100px;
15
- left: 20px;
16
- padding: 4px;
17
- margin-top: 1px;
18
- border-radius: 4px;
19
- width:278px;
20
- }
21
-
22
- .daterangepicker.opensleft:before {
23
- position: absolute;
24
- top: -7px;
25
- right: 9px;
26
- display: inline-block;
27
- border-right: 7px solid transparent;
28
- border-bottom: 7px solid #ccc;
29
- border-left: 7px solid transparent;
30
- border-bottom-color: rgba(0, 0, 0, 0.2);
31
- content: '';
32
- }
33
-
34
- .daterangepicker.opensleft:after {
35
- position: absolute;
36
- top: -6px;
37
- right: 10px;
38
- display: inline-block;
39
- border-right: 6px solid transparent;
40
- border-bottom: 6px solid #fff;
41
- border-left: 6px solid transparent;
42
- content: '';
43
- }
44
-
45
- .daterangepicker.openscenter:before {
46
- position: absolute;
47
- top: -7px;
48
- left: 0;
49
- right: 0;
50
- width: 0;
51
- margin-left: auto;
52
- margin-right: auto;
53
- display: inline-block;
54
- border-right: 7px solid transparent;
55
- border-bottom: 7px solid #ccc;
56
- border-left: 7px solid transparent;
57
- border-bottom-color: rgba(0, 0, 0, 0.2);
58
- content: '';
59
- }
60
-
61
- .daterangepicker.openscenter:after {
62
- position: absolute;
63
- top: -6px;
64
- left: 0;
65
- right: 0;
66
- width: 0;
67
- margin-left: auto;
68
- margin-right: auto;
69
- display: inline-block;
70
- border-right: 6px solid transparent;
71
- border-bottom: 6px solid #fff;
72
- border-left: 6px solid transparent;
73
- content: '';
74
- }
75
-
76
- .daterangepicker.opensright:before {
77
- position: absolute;
78
- top: -7px;
79
- left: 9px;
80
- display: inline-block;
81
- border-right: 7px solid transparent;
82
- border-bottom: 7px solid #ccc;
83
- border-left: 7px solid transparent;
84
- border-bottom-color: rgba(0, 0, 0, 0.2);
85
- content: '';
86
- }
87
-
88
- .daterangepicker.opensright:after {
89
- position: absolute;
90
- top: -6px;
91
- left: 10px;
92
- display: inline-block;
93
- border-right: 6px solid transparent;
94
- border-bottom: 6px solid #fff;
95
- border-left: 6px solid transparent;
96
- content: '';
97
- }
98
-
99
- .daterangepicker.dropup{
100
- margin-top: -5px;
101
- }
102
- .daterangepicker.dropup:before{
103
- top: initial;
104
- bottom:-7px;
105
- border-bottom: initial;
106
- border-top: 7px solid #ccc;
107
- }
108
- .daterangepicker.dropup:after{
109
- top: initial;
110
- bottom:-6px;
111
- border-bottom: initial;
112
- border-top: 6px solid #fff;
113
- }
114
-
115
- .daterangepicker.dropdown-menu {
116
- max-width: none;
117
- z-index: 3000;
118
- }
119
-
120
- .daterangepicker.single .ranges, .daterangepicker.single .calendar {
121
- float: none;
122
- }
123
-
124
- .daterangepicker .calendar {
125
- display: none;
126
- max-width: 270px;
127
- margin: 4px;
128
- }
129
-
130
- .daterangepicker.show-calendar .calendar {
131
- display: block;
132
- }
133
-
134
- .daterangepicker .calendar.single .calendar-table {
135
- border: none;
136
- }
137
-
138
- /* Calendars */
139
-
140
- .daterangepicker .calendar th, .daterangepicker .calendar td {
141
- white-space: nowrap;
142
- text-align: center;
143
- min-width: 32px;
144
- }
145
-
146
- .daterangepicker .calendar-table {
147
- border: 1px solid #ddd;
148
- padding: 4px;
149
- border-radius: 4px;
150
- background: #fff;
151
- }
152
-
153
- .daterangepicker table {
154
- width: 100%;
155
- margin: 0;
156
- }
157
-
158
- .daterangepicker td, .daterangepicker th {
159
- text-align: center;
160
- width: 20px;
161
- height: 20px;
162
- border-radius: 4px;
163
- white-space: nowrap;
164
- cursor: pointer;
165
- }
166
-
167
- .daterangepicker td.off, .daterangepicker td.off.in-range, .daterangepicker td.off.start-date, .daterangepicker td.off.end-date {
168
- color: #999;
169
- background: #fff;
170
- }
171
-
172
- .daterangepicker td.disabled, .daterangepicker option.disabled {
173
- color: #999;
174
- cursor: not-allowed;
175
- text-decoration: line-through;
176
- }
177
-
178
- .daterangepicker td.available:hover, .daterangepicker th.available:hover {
179
- background: #eee;
180
- }
181
-
182
- .daterangepicker td.in-range {
183
- background: #ebf4f8;
184
- border-radius: 0;
185
- }
186
-
187
- .daterangepicker td.start-date {
188
- border-radius: 4px 0 0 4px;
189
- }
190
-
191
- .daterangepicker td.end-date {
192
- border-radius: 0 4px 4px 0;
193
- }
194
-
195
- .daterangepicker td.start-date.end-date {
196
- border-radius: 4px;
197
- }
198
-
199
- .daterangepicker td.active, .daterangepicker td.active:hover {
200
- background-color: #357ebd;
201
- border-color: #3071a9;
202
- color: #fff;
203
- }
204
-
205
- .daterangepicker td.week, .daterangepicker th.week {
206
- font-size: 80%;
207
- color: #ccc;
208
- }
209
-
210
- .daterangepicker select.monthselect, .daterangepicker select.yearselect {
211
- font-size: 12px;
212
- padding: 1px;
213
- height: auto;
214
- margin: 0;
215
- cursor: default;
216
- }
217
-
218
- .daterangepicker select.monthselect {
219
- margin-right: 2%;
220
- width: 56%;
221
- }
222
-
223
- .daterangepicker select.yearselect {
224
- width: 40%;
225
- }
226
-
227
- .daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.secondselect, .daterangepicker select.ampmselect {
228
- width: 50px;
229
- margin-bottom: 0;
230
- }
231
-
232
- .daterangepicker th.month {
233
- width: auto;
234
- }
235
-
236
- /* Text Input Above Each Calendar */
237
-
238
- .daterangepicker .input-mini {
239
- border: 1px solid #ccc;
240
- border-radius: 4px;
241
- color: #555;
242
- display: block;
243
- height: 30px;
244
- line-height: 30px;
245
- vertical-align: middle;
246
- margin: 0 0 5px 0;
247
- padding: 0 6px 0 28px;
248
- width: 100%;
249
- }
250
-
251
- .daterangepicker .input-mini.active {
252
- border: 1px solid #357ebd;
253
- }
254
-
255
- .daterangepicker .daterangepicker_input i {
256
- position: absolute;
257
- left: 8px;
258
- top: 8px;
259
- }
260
-
261
- .daterangepicker .daterangepicker_input {
262
- position: relative;
263
- }
264
-
265
- /* Time Picker */
266
-
267
- .daterangepicker .calendar-time {
268
- text-align: center;
269
- margin: 5px auto;
270
- line-height: 30px;
271
- position: relative;
272
- padding-left: 28px;
273
- }
274
-
275
- .daterangepicker .calendar-time select.disabled {
276
- color: #ccc;
277
- cursor: not-allowed;
278
- }
279
-
280
- /* Predefined Ranges */
281
-
282
- .daterangepicker .ranges {
283
- font-size: 11px;
284
- float: none;
285
- margin: 4px;
286
- text-align: left;
287
- }
288
-
289
- .daterangepicker .ranges ul {
290
- list-style: none;
291
- margin: 0 auto;
292
- padding: 0;
293
- width: 100%;
294
- }
295
-
296
- .daterangepicker .ranges li {
297
- font-size: 13px;
298
- background: #f5f5f5;
299
- border: 1px solid #f5f5f5;
300
- color: #08c;
301
- padding: 3px 12px;
302
- margin-bottom: 8px;
303
- border-radius: 5px;
304
- cursor: pointer;
305
- }
306
-
307
- .daterangepicker .ranges li.active, .daterangepicker .ranges li:hover {
308
- background: #08c;
309
- border: 1px solid #08c;
310
- color: #fff;
311
- }
312
-
313
- /* Larger Screen Styling */
314
- @media (min-width: 564px) {
315
- .daterangepicker{
316
- width: auto;
317
- }
318
-
319
- .daterangepicker .ranges ul {
320
- width: 160px;
321
- }
322
- .daterangepicker.single .ranges ul {
323
- width: 100%;
324
- }
325
- .daterangepicker .calendar.left .calendar-table {
326
- border-right: none;
327
- border-top-right-radius: 0;
328
- border-bottom-right-radius: 0;
329
- }
330
-
331
- .daterangepicker .calendar.right .calendar-table {
332
- border-left: none;
333
- border-top-left-radius: 0;
334
- border-bottom-left-radius: 0;
335
- }
336
-
337
- .daterangepicker .calendar.left {
338
- clear: left;
339
- margin-right: 0;
340
- }
341
- .daterangepicker.single .calendar.left {
342
- clear: none;
343
- }
344
- .daterangepicker.single .ranges,
345
- .daterangepicker.single .calendar{
346
- float:left;
347
- }
348
-
349
- .daterangepicker .calendar.right {
350
- margin-left: 0;
351
- }
352
-
353
- .daterangepicker .left .daterangepicker_input {
354
- padding-right: 12px;
355
- }
356
-
357
- .daterangepicker .calendar.left .calendar-table {
358
- padding-right: 12px;
359
- }
360
-
361
- .daterangepicker .ranges,
362
- .daterangepicker .calendar {
363
- float: left;
364
- }
365
- }
366
-
367
- @media (min-width: 730px) {
368
- .daterangepicker .ranges {
369
- width: auto;
370
- float: left;
371
- }
372
- .daterangepicker .calendar.left {
373
- clear: none;
374
- }
375
- }
@@ -1,20 +0,0 @@
1
- <% blazer_title "Database Schema" %>
2
-
3
- <% @schema.each do |table| %>
4
- <h4>
5
- <%= table[:table] %>
6
- <% if table[:schema] != "public" %>
7
- <small><%= table[:schema] %></small>
8
- <% end %>
9
- </h4>
10
- <table class="table" style="max-width: 500px;">
11
- <tbody>
12
- <% table[:columns].each do |column| %>
13
- <tr>
14
- <td style="width: 60%;"><%= column[:name] %></td>
15
- <td class="text-muted"><%= column[:data_type] %></td>
16
- </tr>
17
- <% end %>
18
- </tbody>
19
- </table>
20
- <% end %>
data/blazer.gemspec DELETED
@@ -1,27 +0,0 @@
1
- # coding: utf-8
2
- lib = File.expand_path("../lib", __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require "blazer/version"
5
-
6
- Gem::Specification.new do |spec|
7
- spec.name = "blazer"
8
- spec.version = Blazer::VERSION
9
- spec.authors = ["Andrew Kane"]
10
- spec.email = ["andrew@chartkick.com"]
11
- spec.summary = "Explore your data with SQL. Easily create charts and dashboards, and share them with your team."
12
- spec.homepage = "https://github.com/ankane/blazer"
13
- spec.license = "MIT"
14
-
15
- spec.files = `git ls-files -z`.split("\x0")
16
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
- spec.require_paths = ["lib"]
19
-
20
- spec.add_dependency "railties", ">= 4"
21
- spec.add_dependency "activerecord", ">= 4"
22
- spec.add_dependency "chartkick"
23
- spec.add_dependency "safely_block", ">= 0.1.1"
24
-
25
- spec.add_development_dependency "bundler", "~> 1.7"
26
- spec.add_development_dependency "rake", "~> 10.0"
27
- end