blazer 0.0.1
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.
Potentially problematic release.
This version of blazer might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/.gitignore +14 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +144 -0
- data/Rakefile +2 -0
- data/app/assets/javascripts/blazer/ace/ace.js +11 -0
- data/app/assets/javascripts/blazer/ace/ext-language_tools.js +5 -0
- data/app/assets/javascripts/blazer/ace/mode-sql.js +1 -0
- data/app/assets/javascripts/blazer/ace/snippets/sql.js +1 -0
- data/app/assets/javascripts/blazer/ace/snippets/text.js +1 -0
- data/app/assets/javascripts/blazer/ace/theme-twilight.js +1 -0
- data/app/assets/javascripts/blazer/application.js +15 -0
- data/app/assets/javascripts/blazer/daterangepicker.js +1026 -0
- data/app/assets/javascripts/blazer/highlight.pack.js +1 -0
- data/app/assets/javascripts/blazer/jquery.js +10308 -0
- data/app/assets/javascripts/blazer/jquery.stickytableheaders.js +263 -0
- data/app/assets/javascripts/blazer/jquery_ujs.js +469 -0
- data/app/assets/javascripts/blazer/list.js +1474 -0
- data/app/assets/javascripts/blazer/moment.js +2400 -0
- data/app/assets/javascripts/blazer/selectize.js +3477 -0
- data/app/assets/javascripts/blazer/stupidtable.js +114 -0
- data/app/assets/stylesheets/blazer/application.css +66 -0
- data/app/assets/stylesheets/blazer/bootstrap.css +6203 -0
- data/app/assets/stylesheets/blazer/bootstrap.css.map +1 -0
- data/app/assets/stylesheets/blazer/daterangepicker-bs3.css +267 -0
- data/app/assets/stylesheets/blazer/github.css +126 -0
- data/app/assets/stylesheets/blazer/selectize.default.css +386 -0
- data/app/controllers/blazer/queries_controller.rb +216 -0
- data/app/helpers/blazer/queries_helper.rb +21 -0
- data/app/models/blazer/audit.rb +5 -0
- data/app/models/blazer/connection.rb +5 -0
- data/app/models/blazer/query.rb +13 -0
- data/app/views/blazer/queries/_form.html.erb +84 -0
- data/app/views/blazer/queries/edit.html.erb +1 -0
- data/app/views/blazer/queries/index.html.erb +47 -0
- data/app/views/blazer/queries/new.html.erb +1 -0
- data/app/views/blazer/queries/run.html.erb +50 -0
- data/app/views/blazer/queries/show.html.erb +138 -0
- data/app/views/layouts/blazer/application.html.erb +17 -0
- data/blazer.gemspec +25 -0
- data/config/routes.rb +6 -0
- data/lib/blazer/engine.rb +11 -0
- data/lib/blazer/version.rb +3 -0
- data/lib/blazer.rb +16 -0
- data/lib/generators/blazer/install_generator.rb +33 -0
- data/lib/generators/blazer/templates/config.yml +8 -0
- data/lib/generators/blazer/templates/install.rb +17 -0
- metadata +134 -0
@@ -0,0 +1,114 @@
|
|
1
|
+
// Stupid jQuery table plugin.
|
2
|
+
|
3
|
+
// Call on a table
|
4
|
+
// sortFns: Sort functions for your datatypes.
|
5
|
+
(function($) {
|
6
|
+
|
7
|
+
$.fn.stupidtable = function(sortFns) {
|
8
|
+
return this.each(function() {
|
9
|
+
var $table = $(this);
|
10
|
+
sortFns = sortFns || {};
|
11
|
+
|
12
|
+
// Merge sort functions with some default sort functions.
|
13
|
+
sortFns = $.extend({}, $.fn.stupidtable.default_sort_fns, sortFns);
|
14
|
+
|
15
|
+
|
16
|
+
// ==================================================== //
|
17
|
+
// Begin execution! //
|
18
|
+
// ==================================================== //
|
19
|
+
|
20
|
+
// Do sorting when THs are clicked
|
21
|
+
$table.on("click.stupidtable", "th", function() {
|
22
|
+
var $this = $(this);
|
23
|
+
var th_index = 0;
|
24
|
+
var dir = $.fn.stupidtable.dir;
|
25
|
+
|
26
|
+
$table.find("th").slice(0, $this.index()).each(function() {
|
27
|
+
var cols = $(this).attr("colspan") || 1;
|
28
|
+
th_index += parseInt(cols,10);
|
29
|
+
});
|
30
|
+
|
31
|
+
// Determine (and/or reverse) sorting direction, default `asc`
|
32
|
+
var sort_dir = $this.data("sort-default") || dir.ASC;
|
33
|
+
if ($this.data("sort-dir"))
|
34
|
+
sort_dir = $this.data("sort-dir") === dir.ASC ? dir.DESC : dir.ASC;
|
35
|
+
|
36
|
+
// Choose appropriate sorting function.
|
37
|
+
var type = $this.data("sort") || null;
|
38
|
+
|
39
|
+
// Prevent sorting if no type defined
|
40
|
+
if (type === null) {
|
41
|
+
return;
|
42
|
+
}
|
43
|
+
|
44
|
+
// Trigger `beforetablesort` event that calling scripts can hook into;
|
45
|
+
// pass parameters for sorted column index and sorting direction
|
46
|
+
$table.trigger("beforetablesort", {column: th_index, direction: sort_dir});
|
47
|
+
// More reliable method of forcing a redraw
|
48
|
+
$table.css("display");
|
49
|
+
|
50
|
+
// Run sorting asynchronously on a timout to force browser redraw after
|
51
|
+
// `beforetablesort` callback. Also avoids locking up the browser too much.
|
52
|
+
setTimeout(function() {
|
53
|
+
// Gather the elements for this column
|
54
|
+
var column = [];
|
55
|
+
var sortMethod = sortFns[type];
|
56
|
+
var trs = $table.children("tbody").children("tr");
|
57
|
+
|
58
|
+
// Extract the data for the column that needs to be sorted and pair it up
|
59
|
+
// with the TR itself into a tuple
|
60
|
+
trs.each(function(index,tr) {
|
61
|
+
var $e = $(tr).children().eq(th_index);
|
62
|
+
var sort_val = $e.data("sort-value");
|
63
|
+
var order_by = typeof(sort_val) !== "undefined" ? sort_val : $e.text();
|
64
|
+
column.push([order_by, tr]);
|
65
|
+
});
|
66
|
+
|
67
|
+
// Sort by the data-order-by value
|
68
|
+
column.sort(function(a, b) { return sortMethod(a[0], b[0]); });
|
69
|
+
if (sort_dir != dir.ASC)
|
70
|
+
column.reverse();
|
71
|
+
|
72
|
+
// Replace the content of tbody with the sorted rows. Strangely (and
|
73
|
+
// conveniently!) enough, .append accomplishes this for us.
|
74
|
+
trs = $.map(column, function(kv) { return kv[1]; });
|
75
|
+
$table.children("tbody").append(trs);
|
76
|
+
|
77
|
+
// Reset siblings
|
78
|
+
$table.find("th").data("sort-dir", null).removeClass("sorting-desc sorting-asc");
|
79
|
+
$this.data("sort-dir", sort_dir).addClass("sorting-"+sort_dir);
|
80
|
+
|
81
|
+
// Trigger `aftertablesort` event. Similar to `beforetablesort`
|
82
|
+
$table.trigger("aftertablesort", {column: th_index, direction: sort_dir});
|
83
|
+
// More reliable method of forcing a redraw
|
84
|
+
$table.css("display");
|
85
|
+
}, 10);
|
86
|
+
});
|
87
|
+
});
|
88
|
+
};
|
89
|
+
|
90
|
+
// Enum containing sorting directions
|
91
|
+
$.fn.stupidtable.dir = {ASC: "asc", DESC: "desc"};
|
92
|
+
|
93
|
+
$.fn.stupidtable.default_sort_fns = {
|
94
|
+
"int": function(a, b) {
|
95
|
+
return parseInt(a.replace(/,/g, ''), 10) - parseInt(b.replace(/,/g, ''), 10);
|
96
|
+
},
|
97
|
+
"float": function(a, b) {
|
98
|
+
return parseFloat(a) - parseFloat(b);
|
99
|
+
},
|
100
|
+
"string": function(a, b) {
|
101
|
+
if (a < b) return -1;
|
102
|
+
if (a > b) return +1;
|
103
|
+
return 0;
|
104
|
+
},
|
105
|
+
"string-ins": function(a, b) {
|
106
|
+
a = a.toLowerCase();
|
107
|
+
b = b.toLowerCase();
|
108
|
+
if (a < b) return -1;
|
109
|
+
if (a > b) return +1;
|
110
|
+
return 0;
|
111
|
+
}
|
112
|
+
};
|
113
|
+
|
114
|
+
})(jQuery);
|
@@ -0,0 +1,66 @@
|
|
1
|
+
/*
|
2
|
+
*= require ./bootstrap
|
3
|
+
*= require ./selectize.default
|
4
|
+
*= require ./github
|
5
|
+
*= require ./daterangepicker-bs3
|
6
|
+
*= require_self
|
7
|
+
*/
|
8
|
+
|
9
|
+
pre {
|
10
|
+
border: none;
|
11
|
+
border-radius: 0;
|
12
|
+
}
|
13
|
+
|
14
|
+
body {
|
15
|
+
padding-top: 20px;
|
16
|
+
padding-bottom: 20px;
|
17
|
+
}
|
18
|
+
|
19
|
+
#results th {
|
20
|
+
cursor: pointer;
|
21
|
+
}
|
22
|
+
|
23
|
+
#results thead {
|
24
|
+
background-color: #fff;
|
25
|
+
}
|
26
|
+
|
27
|
+
input.search {
|
28
|
+
border: none;
|
29
|
+
box-shadow: none;
|
30
|
+
}
|
31
|
+
|
32
|
+
input.search:focus {
|
33
|
+
outline: none;
|
34
|
+
box-shadow: none;
|
35
|
+
}
|
36
|
+
|
37
|
+
.button_to {
|
38
|
+
display: inline-block;
|
39
|
+
}
|
40
|
+
|
41
|
+
.button_to input:focus {
|
42
|
+
outline: none;
|
43
|
+
}
|
44
|
+
|
45
|
+
.form-inline .selectize-control, .text-right .selectize-control {
|
46
|
+
display: inline-block;
|
47
|
+
vertical-align: middle;
|
48
|
+
margin-left: 5px;
|
49
|
+
margin-right: 20px;
|
50
|
+
text-align: left;
|
51
|
+
}
|
52
|
+
|
53
|
+
#editor-container {
|
54
|
+
background-color: #141414;
|
55
|
+
padding-top: 10px;
|
56
|
+
padding-bottom: 10px;
|
57
|
+
}
|
58
|
+
|
59
|
+
#editor {
|
60
|
+
display: none;
|
61
|
+
height: 100px;
|
62
|
+
}
|
63
|
+
|
64
|
+
.ace_print-margin-layer {
|
65
|
+
display: none;
|
66
|
+
}
|