sql-jarvis 2.0.1 → 2.0.2
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +25 -1
- data/LICENSE.txt +1 -1
- data/README.md +153 -52
- 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 +4195 -3884
- data/app/assets/javascripts/blazer/Sortable.js +1493 -1097
- 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 +4 -3
- data/app/assets/javascripts/blazer/bootstrap.js +623 -612
- data/app/assets/javascripts/blazer/chartkick.js +1769 -1248
- data/app/assets/javascripts/blazer/daterangepicker.js +263 -115
- 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 +9506 -9450
- data/app/assets/javascripts/blazer/jquery.stickytableheaders.js +321 -259
- data/app/assets/javascripts/blazer/moment-timezone-with-data.js +1212 -0
- data/app/assets/javascripts/blazer/queries.js +1 -1
- data/app/assets/javascripts/blazer/routes.js +3 -0
- data/app/assets/javascripts/blazer/selectize.js +3828 -3604
- data/app/assets/javascripts/blazer/stupidtable.js +255 -88
- data/app/assets/javascripts/blazer/vue.js +8015 -4583
- data/app/assets/stylesheets/blazer/application.css +41 -5
- data/app/assets/stylesheets/blazer/bootstrap.css.erb +879 -325
- data/app/assets/stylesheets/blazer/daterangepicker.css +269 -0
- data/app/assets/stylesheets/blazer/selectize.default.css +26 -10
- data/app/controllers/blazer/base_controller.rb +7 -0
- data/app/controllers/blazer/checks_controller.rb +1 -1
- data/app/controllers/blazer/dashboards_controller.rb +0 -4
- data/app/controllers/blazer/queries_controller.rb +20 -12
- data/app/helpers/blazer/base_helper.rb +1 -1
- data/app/mailers/blazer/slack_notifier.rb +76 -0
- data/app/models/blazer/check.rb +9 -0
- data/app/views/blazer/_nav.html.erb +0 -1
- data/app/views/blazer/_variables.html.erb +41 -19
- data/app/views/blazer/checks/_form.html.erb +16 -8
- data/app/views/blazer/checks/edit.html.erb +2 -0
- data/app/views/blazer/checks/index.html.erb +33 -4
- data/app/views/blazer/checks/new.html.erb +2 -0
- data/app/views/blazer/dashboards/_form.html.erb +4 -4
- 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 +7 -3
- data/app/views/blazer/queries/_form.html.erb +11 -6
- data/app/views/blazer/queries/docs.html.erb +131 -0
- data/app/views/blazer/queries/home.html.erb +12 -3
- data/app/views/blazer/queries/run.html.erb +36 -6
- data/app/views/blazer/queries/schema.html.erb +46 -8
- data/app/views/blazer/queries/show.html.erb +4 -4
- data/app/views/layouts/blazer/application.html.erb +3 -3
- data/config/routes.rb +5 -1
- data/lib/blazer.rb +32 -13
- data/lib/blazer/adapters/athena_adapter.rb +1 -1
- data/lib/blazer/adapters/elasticsearch_adapter.rb +14 -17
- data/lib/blazer/adapters/mongodb_adapter.rb +1 -1
- data/lib/blazer/adapters/sql_adapter.rb +7 -1
- data/lib/blazer/engine.rb +4 -0
- data/lib/blazer/result.rb +62 -29
- data/lib/blazer/run_statement_job.rb +6 -9
- data/lib/blazer/version.rb +1 -1
- data/lib/generators/blazer/templates/config.yml.tt +13 -2
- data/lib/generators/blazer/templates/install.rb.tt +1 -0
- data/lib/tasks/blazer.rake +1 -0
- metadata +33 -37
- data/.gitattributes +0 -1
- data/.github/ISSUE_TEMPLATE.md +0 -7
- data/.gitignore +0 -14
- data/Gemfile +0 -7
- 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/app/assets/stylesheets/blazer/daterangepicker-bs3.css +0 -375
- data/blazer.gemspec +0 -30
|
@@ -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
|
-
}
|
data/blazer.gemspec
DELETED
|
@@ -1,30 +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 = "sql-jarvis"
|
|
8
|
-
spec.version = Blazer::VERSION
|
|
9
|
-
spec.authors = ["ThanhKhoaIT"]
|
|
10
|
-
spec.email = ["thanhkhoait@gmail.com"]
|
|
11
|
-
spec.summary = "Fork from ankane! Explore your data with SQL. Easily create charts and dashboards, and share them with your team."
|
|
12
|
-
spec.homepage = "https://github.com/ThanhKhoaIT/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 "zip-zip"
|
|
21
|
-
spec.add_dependency "axlsx"
|
|
22
|
-
spec.add_dependency "axlsx_rails"
|
|
23
|
-
spec.add_dependency "railties", ">= 4"
|
|
24
|
-
spec.add_dependency "activerecord", ">= 4"
|
|
25
|
-
spec.add_dependency "chartkick"
|
|
26
|
-
spec.add_dependency "safely_block", ">= 0.1.1"
|
|
27
|
-
|
|
28
|
-
spec.add_development_dependency "bundler", "~> 1.7"
|
|
29
|
-
spec.add_development_dependency "rake", "~> 10.0"
|
|
30
|
-
end
|