finery 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +426 -0
- data/CONTRIBUTING.md +49 -0
- data/LICENSE.txt +25 -0
- data/README.md +1144 -0
- data/app/assets/fonts/blazer/glyphicons-halflings-regular.eot +0 -0
- data/app/assets/fonts/blazer/glyphicons-halflings-regular.svg +288 -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/Sortable.js +3709 -0
- data/app/assets/javascripts/blazer/ace/ace.js +19630 -0
- data/app/assets/javascripts/blazer/ace/ext-language_tools.js +1981 -0
- data/app/assets/javascripts/blazer/ace/mode-sql.js +215 -0
- data/app/assets/javascripts/blazer/ace/snippets/sql.js +16 -0
- data/app/assets/javascripts/blazer/ace/snippets/text.js +9 -0
- data/app/assets/javascripts/blazer/ace/theme-twilight.js +18 -0
- data/app/assets/javascripts/blazer/ace.js +6 -0
- data/app/assets/javascripts/blazer/application.js +87 -0
- data/app/assets/javascripts/blazer/bootstrap.js +2580 -0
- data/app/assets/javascripts/blazer/chart.umd.js +13 -0
- data/app/assets/javascripts/blazer/chartjs-adapter-date-fns.bundle.js +6322 -0
- data/app/assets/javascripts/blazer/chartjs-plugin-annotation.min.js +7 -0
- data/app/assets/javascripts/blazer/chartkick.js +2570 -0
- data/app/assets/javascripts/blazer/daterangepicker.js +1578 -0
- data/app/assets/javascripts/blazer/fuzzysearch.js +24 -0
- data/app/assets/javascripts/blazer/highlight.min.js +466 -0
- data/app/assets/javascripts/blazer/jquery.js +10872 -0
- data/app/assets/javascripts/blazer/jquery.stickytableheaders.js +325 -0
- data/app/assets/javascripts/blazer/mapkick.bundle.js +1029 -0
- data/app/assets/javascripts/blazer/moment-timezone-with-data.js +1548 -0
- data/app/assets/javascripts/blazer/moment.js +5685 -0
- data/app/assets/javascripts/blazer/queries.js +130 -0
- data/app/assets/javascripts/blazer/rails-ujs.js +746 -0
- data/app/assets/javascripts/blazer/routes.js +26 -0
- data/app/assets/javascripts/blazer/selectize.js +3891 -0
- data/app/assets/javascripts/blazer/stupidtable-custom-settings.js +13 -0
- data/app/assets/javascripts/blazer/stupidtable.js +281 -0
- data/app/assets/javascripts/blazer/vue.global.prod.js +1 -0
- data/app/assets/stylesheets/blazer/application.css +243 -0
- 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 +6828 -0
- data/app/assets/stylesheets/blazer/daterangepicker.css +410 -0
- data/app/assets/stylesheets/blazer/github.css +125 -0
- data/app/assets/stylesheets/blazer/selectize.css +403 -0
- data/app/controllers/blazer/base_controller.rb +133 -0
- data/app/controllers/blazer/checks_controller.rb +56 -0
- data/app/controllers/blazer/dashboards_controller.rb +99 -0
- data/app/controllers/blazer/queries_controller.rb +468 -0
- data/app/controllers/blazer/uploads_controller.rb +147 -0
- data/app/helpers/blazer/base_helper.rb +83 -0
- data/app/models/blazer/audit.rb +6 -0
- data/app/models/blazer/check.rb +104 -0
- data/app/models/blazer/connection.rb +5 -0
- data/app/models/blazer/dashboard.rb +17 -0
- data/app/models/blazer/dashboard_query.rb +9 -0
- data/app/models/blazer/query.rb +42 -0
- 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 +18 -0
- data/app/views/blazer/_variables.html.erb +127 -0
- data/app/views/blazer/check_mailer/failing_checks.html.erb +7 -0
- data/app/views/blazer/check_mailer/state_change.html.erb +48 -0
- data/app/views/blazer/checks/_form.html.erb +79 -0
- data/app/views/blazer/checks/edit.html.erb +3 -0
- data/app/views/blazer/checks/index.html.erb +72 -0
- data/app/views/blazer/checks/new.html.erb +3 -0
- data/app/views/blazer/dashboards/_form.html.erb +82 -0
- data/app/views/blazer/dashboards/edit.html.erb +3 -0
- data/app/views/blazer/dashboards/new.html.erb +3 -0
- data/app/views/blazer/dashboards/show.html.erb +53 -0
- 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 +255 -0
- data/app/views/blazer/queries/docs.html.erb +147 -0
- data/app/views/blazer/queries/edit.html.erb +2 -0
- data/app/views/blazer/queries/home.html.erb +169 -0
- data/app/views/blazer/queries/new.html.erb +2 -0
- data/app/views/blazer/queries/run.html.erb +188 -0
- data/app/views/blazer/queries/schema.html.erb +55 -0
- data/app/views/blazer/queries/show.html.erb +72 -0
- 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 +25 -0
- data/config/routes.rb +25 -0
- data/lib/blazer/adapters/athena_adapter.rb +182 -0
- data/lib/blazer/adapters/base_adapter.rb +76 -0
- data/lib/blazer/adapters/bigquery_adapter.rb +79 -0
- data/lib/blazer/adapters/cassandra_adapter.rb +70 -0
- data/lib/blazer/adapters/clickhouse_adapter.rb +84 -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 +61 -0
- 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/neo4j_adapter.rb +62 -0
- data/lib/blazer/adapters/opensearch_adapter.rb +52 -0
- data/lib/blazer/adapters/presto_adapter.rb +54 -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 +324 -0
- data/lib/blazer/adapters.rb +18 -0
- data/lib/blazer/annotations.rb +47 -0
- data/lib/blazer/anomaly_detectors.rb +22 -0
- data/lib/blazer/check_mailer.rb +27 -0
- data/lib/blazer/data_source.rb +270 -0
- data/lib/blazer/engine.rb +42 -0
- data/lib/blazer/forecasters.rb +7 -0
- data/lib/blazer/result.rb +178 -0
- data/lib/blazer/result_cache.rb +71 -0
- data/lib/blazer/run_statement.rb +44 -0
- data/lib/blazer/run_statement_job.rb +20 -0
- data/lib/blazer/slack_notifier.rb +94 -0
- data/lib/blazer/statement.rb +77 -0
- data/lib/blazer/version.rb +3 -0
- data/lib/blazer.rb +286 -0
- data/lib/finery.rb +3 -0
- data/lib/generators/blazer/install_generator.rb +22 -0
- data/lib/generators/blazer/templates/config.yml.tt +83 -0
- data/lib/generators/blazer/templates/install.rb.tt +47 -0
- data/lib/generators/blazer/templates/uploads.rb.tt +10 -0
- data/lib/generators/blazer/uploads_generator.rb +18 -0
- data/lib/tasks/blazer.rake +20 -0
- data/lib/tasks/finery.rake +20 -0
- 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-chartjs-adapter-date-fns.txt +9 -0
- data/licenses/LICENSE-chartkick.js.txt +22 -0
- data/licenses/LICENSE-date-fns.txt +21 -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.txt +20 -0
- data/licenses/LICENSE-kurkle-color.txt +9 -0
- data/licenses/LICENSE-mapkick-bundle.txt +1029 -0
- data/licenses/LICENSE-moment-timezone.txt +20 -0
- data/licenses/LICENSE-moment.txt +22 -0
- data/licenses/LICENSE-rails-ujs.txt +20 -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 +250 -0
@@ -0,0 +1,215 @@
|
|
1
|
+
define("ace/mode/sql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict";
|
2
|
+
var oop = require("../lib/oop");
|
3
|
+
var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
|
4
|
+
var SqlHighlightRules = function () {
|
5
|
+
var keywords = ("select|insert|update|delete|from|where|and|or|group|by|order|limit|offset|having|as|case|" +
|
6
|
+
"when|then|else|end|type|left|right|join|on|outer|desc|asc|union|create|table|primary|key|if|" +
|
7
|
+
"foreign|not|references|default|null|inner|cross|natural|database|drop|grant|distinct");
|
8
|
+
var builtinConstants = ("true|false");
|
9
|
+
var builtinFunctions = ("avg|count|first|last|max|min|sum|ucase|lcase|mid|len|round|rank|now|format|" +
|
10
|
+
"coalesce|ifnull|isnull|nvl");
|
11
|
+
var dataTypes = ("int|numeric|decimal|date|varchar|char|bigint|float|double|bit|binary|text|set|timestamp|" +
|
12
|
+
"money|real|number|integer");
|
13
|
+
var keywordMapper = this.createKeywordMapper({
|
14
|
+
"support.function": builtinFunctions,
|
15
|
+
"keyword": keywords,
|
16
|
+
"constant.language": builtinConstants,
|
17
|
+
"storage.type": dataTypes
|
18
|
+
}, "identifier", true);
|
19
|
+
this.$rules = {
|
20
|
+
"start": [{
|
21
|
+
token: "comment",
|
22
|
+
regex: "--.*$"
|
23
|
+
}, {
|
24
|
+
token: "comment",
|
25
|
+
start: "/\\*",
|
26
|
+
end: "\\*/"
|
27
|
+
}, {
|
28
|
+
token: "string",
|
29
|
+
regex: '".*?"'
|
30
|
+
}, {
|
31
|
+
token: "string",
|
32
|
+
regex: "'.*?'"
|
33
|
+
}, {
|
34
|
+
token: "string",
|
35
|
+
regex: "`.*?`"
|
36
|
+
}, {
|
37
|
+
token: "constant.numeric",
|
38
|
+
regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
|
39
|
+
}, {
|
40
|
+
token: keywordMapper,
|
41
|
+
regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
|
42
|
+
}, {
|
43
|
+
token: "keyword.operator",
|
44
|
+
regex: "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="
|
45
|
+
}, {
|
46
|
+
token: "paren.lparen",
|
47
|
+
regex: "[\\(]"
|
48
|
+
}, {
|
49
|
+
token: "paren.rparen",
|
50
|
+
regex: "[\\)]"
|
51
|
+
}, {
|
52
|
+
token: "text",
|
53
|
+
regex: "\\s+"
|
54
|
+
}]
|
55
|
+
};
|
56
|
+
this.normalizeRules();
|
57
|
+
};
|
58
|
+
oop.inherits(SqlHighlightRules, TextHighlightRules);
|
59
|
+
exports.SqlHighlightRules = SqlHighlightRules;
|
60
|
+
|
61
|
+
});
|
62
|
+
|
63
|
+
define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict";
|
64
|
+
var oop = require("../../lib/oop");
|
65
|
+
var Range = require("../../range").Range;
|
66
|
+
var BaseFoldMode = require("./fold_mode").FoldMode;
|
67
|
+
var FoldMode = exports.FoldMode = function (commentRegex) {
|
68
|
+
if (commentRegex) {
|
69
|
+
this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start));
|
70
|
+
this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end));
|
71
|
+
}
|
72
|
+
};
|
73
|
+
oop.inherits(FoldMode, BaseFoldMode);
|
74
|
+
(function () {
|
75
|
+
this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/;
|
76
|
+
this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/;
|
77
|
+
this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/;
|
78
|
+
this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/;
|
79
|
+
this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/;
|
80
|
+
this._getFoldWidgetBase = this.getFoldWidget;
|
81
|
+
this.getFoldWidget = function (session, foldStyle, row) {
|
82
|
+
var line = session.getLine(row);
|
83
|
+
if (this.singleLineBlockCommentRe.test(line)) {
|
84
|
+
if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))
|
85
|
+
return "";
|
86
|
+
}
|
87
|
+
var fw = this._getFoldWidgetBase(session, foldStyle, row);
|
88
|
+
if (!fw && this.startRegionRe.test(line))
|
89
|
+
return "start"; // lineCommentRegionStart
|
90
|
+
return fw;
|
91
|
+
};
|
92
|
+
this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {
|
93
|
+
var line = session.getLine(row);
|
94
|
+
if (this.startRegionRe.test(line))
|
95
|
+
return this.getCommentRegionBlock(session, line, row);
|
96
|
+
var match = line.match(this.foldingStartMarker);
|
97
|
+
if (match) {
|
98
|
+
var i = match.index;
|
99
|
+
if (match[1])
|
100
|
+
return this.openingBracketBlock(session, match[1], row, i);
|
101
|
+
var range = session.getCommentFoldRange(row, i + match[0].length, 1);
|
102
|
+
if (range && !range.isMultiLine()) {
|
103
|
+
if (forceMultiline) {
|
104
|
+
range = this.getSectionRange(session, row);
|
105
|
+
}
|
106
|
+
else if (foldStyle != "all")
|
107
|
+
range = null;
|
108
|
+
}
|
109
|
+
return range;
|
110
|
+
}
|
111
|
+
if (foldStyle === "markbegin")
|
112
|
+
return;
|
113
|
+
var match = line.match(this.foldingStopMarker);
|
114
|
+
if (match) {
|
115
|
+
var i = match.index + match[0].length;
|
116
|
+
if (match[1])
|
117
|
+
return this.closingBracketBlock(session, match[1], row, i);
|
118
|
+
return session.getCommentFoldRange(row, i, -1);
|
119
|
+
}
|
120
|
+
};
|
121
|
+
this.getSectionRange = function (session, row) {
|
122
|
+
var line = session.getLine(row);
|
123
|
+
var startIndent = line.search(/\S/);
|
124
|
+
var startRow = row;
|
125
|
+
var startColumn = line.length;
|
126
|
+
row = row + 1;
|
127
|
+
var endRow = row;
|
128
|
+
var maxRow = session.getLength();
|
129
|
+
while (++row < maxRow) {
|
130
|
+
line = session.getLine(row);
|
131
|
+
var indent = line.search(/\S/);
|
132
|
+
if (indent === -1)
|
133
|
+
continue;
|
134
|
+
if (startIndent > indent)
|
135
|
+
break;
|
136
|
+
var subRange = this.getFoldWidgetRange(session, "all", row);
|
137
|
+
if (subRange) {
|
138
|
+
if (subRange.start.row <= startRow) {
|
139
|
+
break;
|
140
|
+
}
|
141
|
+
else if (subRange.isMultiLine()) {
|
142
|
+
row = subRange.end.row;
|
143
|
+
}
|
144
|
+
else if (startIndent == indent) {
|
145
|
+
break;
|
146
|
+
}
|
147
|
+
}
|
148
|
+
endRow = row;
|
149
|
+
}
|
150
|
+
return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);
|
151
|
+
};
|
152
|
+
this.getCommentRegionBlock = function (session, line, row) {
|
153
|
+
var startColumn = line.search(/\s*$/);
|
154
|
+
var maxRow = session.getLength();
|
155
|
+
var startRow = row;
|
156
|
+
var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/;
|
157
|
+
var depth = 1;
|
158
|
+
while (++row < maxRow) {
|
159
|
+
line = session.getLine(row);
|
160
|
+
var m = re.exec(line);
|
161
|
+
if (!m)
|
162
|
+
continue;
|
163
|
+
if (m[1])
|
164
|
+
depth--;
|
165
|
+
else
|
166
|
+
depth++;
|
167
|
+
if (!depth)
|
168
|
+
break;
|
169
|
+
}
|
170
|
+
var endRow = row;
|
171
|
+
if (endRow > startRow) {
|
172
|
+
return new Range(startRow, startColumn, endRow, line.length);
|
173
|
+
}
|
174
|
+
};
|
175
|
+
}).call(FoldMode.prototype);
|
176
|
+
|
177
|
+
});
|
178
|
+
|
179
|
+
define("ace/mode/folding/sql",["require","exports","module","ace/lib/oop","ace/mode/folding/cstyle"], function(require, exports, module){"use strict";
|
180
|
+
var oop = require("../../lib/oop");
|
181
|
+
var BaseFoldMode = require("./cstyle").FoldMode;
|
182
|
+
var FoldMode = exports.FoldMode = function () { };
|
183
|
+
oop.inherits(FoldMode, BaseFoldMode);
|
184
|
+
(function () {
|
185
|
+
}).call(FoldMode.prototype);
|
186
|
+
|
187
|
+
});
|
188
|
+
|
189
|
+
define("ace/mode/sql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sql_highlight_rules","ace/mode/folding/sql"], function(require, exports, module){"use strict";
|
190
|
+
var oop = require("../lib/oop");
|
191
|
+
var TextMode = require("./text").Mode;
|
192
|
+
var SqlHighlightRules = require("./sql_highlight_rules").SqlHighlightRules;
|
193
|
+
var SqlFoldMode = require("./folding/sql").FoldMode;
|
194
|
+
var Mode = function () {
|
195
|
+
this.HighlightRules = SqlHighlightRules;
|
196
|
+
this.foldingRules = new SqlFoldMode();
|
197
|
+
this.$behaviour = this.$defaultBehaviour;
|
198
|
+
};
|
199
|
+
oop.inherits(Mode, TextMode);
|
200
|
+
(function () {
|
201
|
+
this.lineCommentStart = "--";
|
202
|
+
this.blockComment = { start: "/*", end: "*/" };
|
203
|
+
this.$id = "ace/mode/sql";
|
204
|
+
this.snippetFileId = "ace/snippets/sql";
|
205
|
+
}).call(Mode.prototype);
|
206
|
+
exports.Mode = Mode;
|
207
|
+
|
208
|
+
}); (function() {
|
209
|
+
window.require(["ace/mode/sql"], function(m) {
|
210
|
+
if (typeof module == "object" && typeof exports == "object" && module) {
|
211
|
+
module.exports = m;
|
212
|
+
}
|
213
|
+
});
|
214
|
+
})();
|
215
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
define("ace/snippets/sql.snippets",["require","exports","module"], function(require, exports, module){module.exports = "snippet tbl\n\tcreate table ${1:table} (\n\t\t${2:columns}\n\t);\nsnippet col\n\t${1:name}\t${2:type}\t${3:default ''}\t${4:not null}\nsnippet ccol\n\t${1:name}\tvarchar2(${2:size})\t${3:default ''}\t${4:not null}\nsnippet ncol\n\t${1:name}\tnumber\t${3:default 0}\t${4:not null}\nsnippet dcol\n\t${1:name}\tdate\t${3:default sysdate}\t${4:not null}\nsnippet ind\n\tcreate index ${3:$1_$2} on ${1:table}(${2:column});\nsnippet uind\n\tcreate unique index ${1:name} on ${2:table}(${3:column});\nsnippet tblcom\n\tcomment on table ${1:table} is '${2:comment}';\nsnippet colcom\n\tcomment on column ${1:table}.${2:column} is '${3:comment}';\nsnippet addcol\n\talter table ${1:table} add (${2:column} ${3:type});\nsnippet seq\n\tcreate sequence ${1:name} start with ${2:1} increment by ${3:1} minvalue ${4:1};\nsnippet s*\n\tselect * from ${1:table}\n";
|
2
|
+
|
3
|
+
});
|
4
|
+
|
5
|
+
define("ace/snippets/sql",["require","exports","module","ace/snippets/sql.snippets"], function(require, exports, module){"use strict";
|
6
|
+
exports.snippetText = require("./sql.snippets");
|
7
|
+
exports.scope = "sql";
|
8
|
+
|
9
|
+
}); (function() {
|
10
|
+
window.require(["ace/snippets/sql"], function(m) {
|
11
|
+
if (typeof module == "object" && typeof exports == "object" && module) {
|
12
|
+
module.exports = m;
|
13
|
+
}
|
14
|
+
});
|
15
|
+
})();
|
16
|
+
|
@@ -0,0 +1,18 @@
|
|
1
|
+
define("ace/theme/twilight.css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-twilight .ace_gutter {\n background: #232323;\n color: #E2E2E2\n}\n\n.ace-twilight .ace_print-margin {\n width: 1px;\n background: #232323\n}\n\n.ace-twilight {\n background-color: #141414;\n color: #F8F8F8\n}\n\n.ace-twilight .ace_cursor {\n color: #A7A7A7\n}\n\n.ace-twilight .ace_marker-layer .ace_selection {\n background: rgba(221, 240, 255, 0.20)\n}\n\n.ace-twilight.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #141414;\n}\n\n.ace-twilight .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-twilight .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(255, 255, 255, 0.25)\n}\n\n.ace-twilight .ace_marker-layer .ace_active-line {\n background: rgba(255, 255, 255, 0.031)\n}\n\n.ace-twilight .ace_gutter-active-line {\n background-color: rgba(255, 255, 255, 0.031)\n}\n\n.ace-twilight .ace_marker-layer .ace_selected-word {\n border: 1px solid rgba(221, 240, 255, 0.20)\n}\n\n.ace-twilight .ace_invisible {\n color: rgba(255, 255, 255, 0.25)\n}\n\n.ace-twilight .ace_keyword,\n.ace-twilight .ace_meta {\n color: #CDA869\n}\n\n.ace-twilight .ace_constant,\n.ace-twilight .ace_constant.ace_character,\n.ace-twilight .ace_constant.ace_character.ace_escape,\n.ace-twilight .ace_constant.ace_other,\n.ace-twilight .ace_heading,\n.ace-twilight .ace_markup.ace_heading,\n.ace-twilight .ace_support.ace_constant {\n color: #CF6A4C\n}\n\n.ace-twilight .ace_invalid.ace_illegal {\n color: #F8F8F8;\n background-color: rgba(86, 45, 86, 0.75)\n}\n\n.ace-twilight .ace_invalid.ace_deprecated {\n text-decoration: underline;\n font-style: italic;\n color: #D2A8A1\n}\n\n.ace-twilight .ace_support {\n color: #9B859D\n}\n\n.ace-twilight .ace_fold {\n background-color: #AC885B;\n border-color: #F8F8F8\n}\n\n.ace-twilight .ace_support.ace_function {\n color: #DAD085\n}\n\n.ace-twilight .ace_list,\n.ace-twilight .ace_markup.ace_list,\n.ace-twilight .ace_storage {\n color: #F9EE98\n}\n\n.ace-twilight .ace_entity.ace_name.ace_function,\n.ace-twilight .ace_meta.ace_tag {\n color: #AC885B\n}\n\n.ace-twilight .ace_string {\n color: #8F9D6A\n}\n\n.ace-twilight .ace_string.ace_regexp {\n color: #E9C062\n}\n\n.ace-twilight .ace_comment {\n font-style: italic;\n color: #5F5A60\n}\n\n.ace-twilight .ace_variable {\n color: #7587A6\n}\n\n.ace-twilight .ace_xml-pe {\n color: #494949\n}\n\n.ace-twilight .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQERFpYLC1tf0PAAgOAnPnhxyiAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-twilight .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n}\n";
|
2
|
+
|
3
|
+
});
|
4
|
+
|
5
|
+
define("ace/theme/twilight",["require","exports","module","ace/theme/twilight.css","ace/lib/dom"], function(require, exports, module){exports.isDark = true;
|
6
|
+
exports.cssClass = "ace-twilight";
|
7
|
+
exports.cssText = require("./twilight.css");
|
8
|
+
var dom = require("../lib/dom");
|
9
|
+
dom.importCssString(exports.cssText, exports.cssClass, false);
|
10
|
+
|
11
|
+
}); (function() {
|
12
|
+
window.require(["ace/theme/twilight"], function(m) {
|
13
|
+
if (typeof module == "object" && typeof exports == "object" && module) {
|
14
|
+
module.exports = m;
|
15
|
+
}
|
16
|
+
});
|
17
|
+
})();
|
18
|
+
|
@@ -0,0 +1,87 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
//= require ./jquery
|
4
|
+
//= require ./rails-ujs
|
5
|
+
//= require ./stupidtable
|
6
|
+
//= require ./stupidtable-custom-settings
|
7
|
+
//= require ./jquery.stickytableheaders
|
8
|
+
//= require ./selectize
|
9
|
+
//= require ./highlight.min
|
10
|
+
//= require ./moment
|
11
|
+
//= require ./moment-timezone-with-data
|
12
|
+
//= require ./daterangepicker
|
13
|
+
//= require ./chart.umd
|
14
|
+
//= require ./chartjs-adapter-date-fns.bundle
|
15
|
+
//= require ./chartkick
|
16
|
+
//= require ./mapkick.bundle
|
17
|
+
//= require ./chartjs-plugin-annotation.min
|
18
|
+
//= require ./ace
|
19
|
+
//= require ./Sortable
|
20
|
+
//= require ./bootstrap
|
21
|
+
//= require ./vue.global.prod
|
22
|
+
//= require ./routes
|
23
|
+
//= require ./queries
|
24
|
+
//= require ./fuzzysearch
|
25
|
+
|
26
|
+
$(document).on('mouseenter', '.dropdown-toggle', function () {
|
27
|
+
$(this).parent().addClass('open')
|
28
|
+
})
|
29
|
+
|
30
|
+
$(document).on("change", "#bind input, #bind select", function () {
|
31
|
+
submitIfCompleted($(this).closest("form"))
|
32
|
+
})
|
33
|
+
|
34
|
+
$(document).on("click", "#code", function () {
|
35
|
+
$(this).addClass("expanded")
|
36
|
+
})
|
37
|
+
|
38
|
+
$(document).on("click", "a[disabled]", function (e) {
|
39
|
+
e.preventDefault()
|
40
|
+
})
|
41
|
+
|
42
|
+
function submitIfCompleted($form) {
|
43
|
+
var completed = true
|
44
|
+
$form.find("input[name], select").each( function () {
|
45
|
+
if ($(this).val() == "") {
|
46
|
+
completed = false
|
47
|
+
}
|
48
|
+
})
|
49
|
+
if (completed) {
|
50
|
+
$form.submit()
|
51
|
+
}
|
52
|
+
}
|
53
|
+
|
54
|
+
// Prevent backspace from navigating backwards.
|
55
|
+
// Adapted from Biff MaGriff: http://stackoverflow.com/a/7895814/1196499
|
56
|
+
function preventBackspaceNav() {
|
57
|
+
$(document).keydown(function (e) {
|
58
|
+
var preventKeyPress
|
59
|
+
if (e.keyCode == 8) {
|
60
|
+
var d = e.srcElement || e.target
|
61
|
+
switch (d.tagName.toUpperCase()) {
|
62
|
+
case 'TEXTAREA':
|
63
|
+
preventKeyPress = d.readOnly || d.disabled
|
64
|
+
break
|
65
|
+
case 'INPUT':
|
66
|
+
preventKeyPress = d.readOnly || d.disabled || (d.attributes["type"] && $.inArray(d.attributes["type"].value.toLowerCase(), ["radio", "reset", "checkbox", "submit", "button"]) >= 0)
|
67
|
+
break
|
68
|
+
case 'DIV':
|
69
|
+
preventKeyPress = d.readOnly || d.disabled || !(d.attributes["contentEditable"] && d.attributes["contentEditable"].value == "true")
|
70
|
+
break
|
71
|
+
default:
|
72
|
+
preventKeyPress = true
|
73
|
+
break
|
74
|
+
}
|
75
|
+
}
|
76
|
+
else {
|
77
|
+
preventKeyPress = false
|
78
|
+
}
|
79
|
+
|
80
|
+
if (preventKeyPress) {
|
81
|
+
e.preventDefault()
|
82
|
+
}
|
83
|
+
})
|
84
|
+
}
|
85
|
+
|
86
|
+
preventBackspaceNav()
|
87
|
+
|