blazer_xlsx 3.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (148) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +442 -0
  3. data/CONTRIBUTING.md +42 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +1093 -0
  6. data/app/assets/fonts/blazer/glyphicons-halflings-regular.eot +0 -0
  7. data/app/assets/fonts/blazer/glyphicons-halflings-regular.svg +288 -0
  8. data/app/assets/fonts/blazer/glyphicons-halflings-regular.ttf +0 -0
  9. data/app/assets/fonts/blazer/glyphicons-halflings-regular.woff +0 -0
  10. data/app/assets/fonts/blazer/glyphicons-halflings-regular.woff2 +0 -0
  11. data/app/assets/images/blazer/favicon.png +0 -0
  12. data/app/assets/javascripts/blazer/Sortable.js +3709 -0
  13. data/app/assets/javascripts/blazer/ace/ace.js +19630 -0
  14. data/app/assets/javascripts/blazer/ace/ext-language_tools.js +1981 -0
  15. data/app/assets/javascripts/blazer/ace/mode-sql.js +215 -0
  16. data/app/assets/javascripts/blazer/ace/snippets/sql.js +16 -0
  17. data/app/assets/javascripts/blazer/ace/snippets/text.js +9 -0
  18. data/app/assets/javascripts/blazer/ace/theme-twilight.js +18 -0
  19. data/app/assets/javascripts/blazer/ace.js +6 -0
  20. data/app/assets/javascripts/blazer/application.js +84 -0
  21. data/app/assets/javascripts/blazer/bootstrap.js +2580 -0
  22. data/app/assets/javascripts/blazer/chart.umd.js +13 -0
  23. data/app/assets/javascripts/blazer/chartjs-adapter-date-fns.bundle.js +6322 -0
  24. data/app/assets/javascripts/blazer/chartkick.js +2570 -0
  25. data/app/assets/javascripts/blazer/daterangepicker.js +1578 -0
  26. data/app/assets/javascripts/blazer/fuzzysearch.js +24 -0
  27. data/app/assets/javascripts/blazer/highlight.min.js +466 -0
  28. data/app/assets/javascripts/blazer/jquery.js +10872 -0
  29. data/app/assets/javascripts/blazer/jquery.stickytableheaders.js +325 -0
  30. data/app/assets/javascripts/blazer/mapkick.bundle.js +1029 -0
  31. data/app/assets/javascripts/blazer/moment-timezone-with-data.js +1548 -0
  32. data/app/assets/javascripts/blazer/moment.js +5685 -0
  33. data/app/assets/javascripts/blazer/queries.js +130 -0
  34. data/app/assets/javascripts/blazer/rails-ujs.js +746 -0
  35. data/app/assets/javascripts/blazer/routes.js +26 -0
  36. data/app/assets/javascripts/blazer/selectize.js +3891 -0
  37. data/app/assets/javascripts/blazer/stupidtable-custom-settings.js +13 -0
  38. data/app/assets/javascripts/blazer/stupidtable.js +281 -0
  39. data/app/assets/javascripts/blazer/vue.global.prod.js +1 -0
  40. data/app/assets/stylesheets/blazer/application.css +243 -0
  41. data/app/assets/stylesheets/blazer/bootstrap-propshaft.css +10 -0
  42. data/app/assets/stylesheets/blazer/bootstrap-sprockets.css.erb +10 -0
  43. data/app/assets/stylesheets/blazer/bootstrap.css +6828 -0
  44. data/app/assets/stylesheets/blazer/daterangepicker.css +410 -0
  45. data/app/assets/stylesheets/blazer/github.css +125 -0
  46. data/app/assets/stylesheets/blazer/selectize.css +403 -0
  47. data/app/controllers/blazer/base_controller.rb +135 -0
  48. data/app/controllers/blazer/checks_controller.rb +56 -0
  49. data/app/controllers/blazer/dashboards_controller.rb +99 -0
  50. data/app/controllers/blazer/queries_controller.rb +472 -0
  51. data/app/controllers/blazer/uploads_controller.rb +147 -0
  52. data/app/helpers/blazer/base_helper.rb +39 -0
  53. data/app/models/blazer/audit.rb +6 -0
  54. data/app/models/blazer/check.rb +104 -0
  55. data/app/models/blazer/connection.rb +5 -0
  56. data/app/models/blazer/dashboard.rb +17 -0
  57. data/app/models/blazer/dashboard_query.rb +9 -0
  58. data/app/models/blazer/query.rb +42 -0
  59. data/app/models/blazer/record.rb +5 -0
  60. data/app/models/blazer/upload.rb +11 -0
  61. data/app/models/blazer/uploads_connection.rb +7 -0
  62. data/app/views/blazer/_nav.html.erb +18 -0
  63. data/app/views/blazer/_variables.html.erb +127 -0
  64. data/app/views/blazer/check_mailer/failing_checks.html.erb +7 -0
  65. data/app/views/blazer/check_mailer/state_change.html.erb +48 -0
  66. data/app/views/blazer/checks/_form.html.erb +79 -0
  67. data/app/views/blazer/checks/edit.html.erb +3 -0
  68. data/app/views/blazer/checks/index.html.erb +72 -0
  69. data/app/views/blazer/checks/new.html.erb +3 -0
  70. data/app/views/blazer/dashboards/_form.html.erb +82 -0
  71. data/app/views/blazer/dashboards/edit.html.erb +3 -0
  72. data/app/views/blazer/dashboards/new.html.erb +3 -0
  73. data/app/views/blazer/dashboards/show.html.erb +53 -0
  74. data/app/views/blazer/queries/_caching.html.erb +16 -0
  75. data/app/views/blazer/queries/_cohorts.html.erb +48 -0
  76. data/app/views/blazer/queries/_form.html.erb +255 -0
  77. data/app/views/blazer/queries/docs.html.erb +147 -0
  78. data/app/views/blazer/queries/edit.html.erb +2 -0
  79. data/app/views/blazer/queries/home.html.erb +169 -0
  80. data/app/views/blazer/queries/new.html.erb +2 -0
  81. data/app/views/blazer/queries/run.html.erb +183 -0
  82. data/app/views/blazer/queries/schema.html.erb +55 -0
  83. data/app/views/blazer/queries/show.html.erb +72 -0
  84. data/app/views/blazer/uploads/_form.html.erb +27 -0
  85. data/app/views/blazer/uploads/edit.html.erb +3 -0
  86. data/app/views/blazer/uploads/index.html.erb +55 -0
  87. data/app/views/blazer/uploads/new.html.erb +3 -0
  88. data/app/views/layouts/blazer/application.html.erb +25 -0
  89. data/config/routes.rb +25 -0
  90. data/lib/blazer/adapters/athena_adapter.rb +182 -0
  91. data/lib/blazer/adapters/base_adapter.rb +76 -0
  92. data/lib/blazer/adapters/bigquery_adapter.rb +79 -0
  93. data/lib/blazer/adapters/cassandra_adapter.rb +70 -0
  94. data/lib/blazer/adapters/drill_adapter.rb +38 -0
  95. data/lib/blazer/adapters/druid_adapter.rb +102 -0
  96. data/lib/blazer/adapters/elasticsearch_adapter.rb +61 -0
  97. data/lib/blazer/adapters/hive_adapter.rb +55 -0
  98. data/lib/blazer/adapters/ignite_adapter.rb +64 -0
  99. data/lib/blazer/adapters/influxdb_adapter.rb +57 -0
  100. data/lib/blazer/adapters/neo4j_adapter.rb +62 -0
  101. data/lib/blazer/adapters/opensearch_adapter.rb +52 -0
  102. data/lib/blazer/adapters/presto_adapter.rb +54 -0
  103. data/lib/blazer/adapters/salesforce_adapter.rb +50 -0
  104. data/lib/blazer/adapters/snowflake_adapter.rb +82 -0
  105. data/lib/blazer/adapters/soda_adapter.rb +105 -0
  106. data/lib/blazer/adapters/spark_adapter.rb +14 -0
  107. data/lib/blazer/adapters/sql_adapter.rb +353 -0
  108. data/lib/blazer/adapters.rb +17 -0
  109. data/lib/blazer/anomaly_detectors.rb +22 -0
  110. data/lib/blazer/check_mailer.rb +27 -0
  111. data/lib/blazer/data_source.rb +266 -0
  112. data/lib/blazer/engine.rb +42 -0
  113. data/lib/blazer/forecasters.rb +7 -0
  114. data/lib/blazer/result.rb +178 -0
  115. data/lib/blazer/result_cache.rb +71 -0
  116. data/lib/blazer/run_statement.rb +45 -0
  117. data/lib/blazer/run_statement_job.rb +20 -0
  118. data/lib/blazer/slack_notifier.rb +94 -0
  119. data/lib/blazer/statement.rb +77 -0
  120. data/lib/blazer/version.rb +3 -0
  121. data/lib/blazer.rb +282 -0
  122. data/lib/generators/blazer/install_generator.rb +22 -0
  123. data/lib/generators/blazer/templates/config.yml.tt +79 -0
  124. data/lib/generators/blazer/templates/install.rb.tt +47 -0
  125. data/lib/generators/blazer/templates/uploads.rb.tt +10 -0
  126. data/lib/generators/blazer/uploads_generator.rb +18 -0
  127. data/lib/tasks/blazer.rake +20 -0
  128. data/licenses/LICENSE-ace.txt +24 -0
  129. data/licenses/LICENSE-bootstrap.txt +21 -0
  130. data/licenses/LICENSE-chart.js.txt +9 -0
  131. data/licenses/LICENSE-chartjs-adapter-date-fns.txt +9 -0
  132. data/licenses/LICENSE-chartkick.js.txt +22 -0
  133. data/licenses/LICENSE-date-fns.txt +21 -0
  134. data/licenses/LICENSE-daterangepicker.txt +21 -0
  135. data/licenses/LICENSE-fuzzysearch.txt +20 -0
  136. data/licenses/LICENSE-highlight.js.txt +29 -0
  137. data/licenses/LICENSE-jquery.txt +20 -0
  138. data/licenses/LICENSE-kurkle-color.txt +9 -0
  139. data/licenses/LICENSE-mapkick-bundle.txt +1029 -0
  140. data/licenses/LICENSE-moment-timezone.txt +20 -0
  141. data/licenses/LICENSE-moment.txt +22 -0
  142. data/licenses/LICENSE-rails-ujs.txt +20 -0
  143. data/licenses/LICENSE-selectize.txt +202 -0
  144. data/licenses/LICENSE-sortable.txt +21 -0
  145. data/licenses/LICENSE-stickytableheaders.txt +20 -0
  146. data/licenses/LICENSE-stupidtable.txt +19 -0
  147. data/licenses/LICENSE-vue.txt +21 -0
  148. metadata +271 -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,9 @@
1
+
2
+ ; (function() {
3
+ window.require(["ace/snippets/text"], function(m) {
4
+ if (typeof module == "object" && typeof exports == "object" && module) {
5
+ module.exports = m;
6
+ }
7
+ });
8
+ })();
9
+
@@ -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,6 @@
1
+ //= require ./ace/ace
2
+ //= require ./ace/ext-language_tools
3
+ //= require ./ace/theme-twilight
4
+ //= require ./ace/mode-sql
5
+ //= require ./ace/snippets/text
6
+ //= require ./ace/snippets/sql
@@ -0,0 +1,84 @@
1
+ //= require ./jquery
2
+ //= require ./rails-ujs
3
+ //= require ./stupidtable
4
+ //= require ./stupidtable-custom-settings
5
+ //= require ./jquery.stickytableheaders
6
+ //= require ./selectize
7
+ //= require ./highlight.min
8
+ //= require ./moment
9
+ //= require ./moment-timezone-with-data
10
+ //= require ./daterangepicker
11
+ //= require ./chart.umd
12
+ //= require ./chartjs-adapter-date-fns.bundle
13
+ //= require ./chartkick
14
+ //= require ./mapkick.bundle
15
+ //= require ./ace
16
+ //= require ./Sortable
17
+ //= require ./bootstrap
18
+ //= require ./vue.global.prod
19
+ //= require ./routes
20
+ //= require ./queries
21
+ //= require ./fuzzysearch
22
+
23
+ $(document).on('mouseenter', '.dropdown-toggle', function () {
24
+ $(this).parent().addClass('open')
25
+ })
26
+
27
+ $(document).on("change", "#bind input, #bind select", function () {
28
+ submitIfCompleted($(this).closest("form"))
29
+ })
30
+
31
+ $(document).on("click", "#code", function () {
32
+ $(this).addClass("expanded")
33
+ })
34
+
35
+ $(document).on("click", "a[disabled]", function (e) {
36
+ e.preventDefault()
37
+ })
38
+
39
+ function submitIfCompleted($form) {
40
+ var completed = true
41
+ $form.find("input[name], select").each( function () {
42
+ if ($(this).val() == "") {
43
+ completed = false
44
+ }
45
+ })
46
+ if (completed) {
47
+ $form.submit()
48
+ }
49
+ }
50
+
51
+ // Prevent backspace from navigating backwards.
52
+ // Adapted from Biff MaGriff: http://stackoverflow.com/a/7895814/1196499
53
+ function preventBackspaceNav() {
54
+ $(document).keydown(function (e) {
55
+ var preventKeyPress
56
+ if (e.keyCode == 8) {
57
+ var d = e.srcElement || e.target
58
+ switch (d.tagName.toUpperCase()) {
59
+ case 'TEXTAREA':
60
+ preventKeyPress = d.readOnly || d.disabled
61
+ break
62
+ case 'INPUT':
63
+ preventKeyPress = d.readOnly || d.disabled || (d.attributes["type"] && $.inArray(d.attributes["type"].value.toLowerCase(), ["radio", "reset", "checkbox", "submit", "button"]) >= 0)
64
+ break
65
+ case 'DIV':
66
+ preventKeyPress = d.readOnly || d.disabled || !(d.attributes["contentEditable"] && d.attributes["contentEditable"].value == "true")
67
+ break
68
+ default:
69
+ preventKeyPress = true
70
+ break
71
+ }
72
+ }
73
+ else {
74
+ preventKeyPress = false
75
+ }
76
+
77
+ if (preventKeyPress) {
78
+ e.preventDefault()
79
+ }
80
+ })
81
+ }
82
+
83
+ preventBackspaceNav()
84
+