aleph_analytics 0.0.6 → 0.1.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +16 -0
- data/app/assets/javascripts/angular/aleph.js.es6 +2 -1
- data/app/assets/javascripts/angular/config/schema_completer_config.js.es6 +5 -1
- data/app/assets/javascripts/angular/controllers/query/query_repl_controller.js.es6 +9 -1
- data/app/assets/javascripts/angular/services/lib/matcher_runner.js.es6 +6 -1
- data/app/assets/javascripts/angular/services/lib/schema_completer.js.es6 +5 -4
- data/config/initializers/pester.rb +3 -2
- data/public/assets/{.sprockets-manifest-db701e8ddeb121fb438905e98c289832.json → .sprockets-manifest-ee5031d89f2eb0b53eb8eee944d985cf.json} +1 -1
- data/public/assets/angular/{aleph.js-5c6fb1f7eaa833a4e9fc35bca222deb7.es6 → aleph.js-48037f371a59a5ffaff68fd517163d50.es6} +2 -1
- data/public/assets/angular/config/{schema_completer_config.js-1b696920b5e04f75620630d75117b201.es6 → schema_completer_config.js-bf6c4caf7972760623f4faa48864aef0.es6} +5 -1
- data/public/assets/angular/controllers/query/{query_repl_controller.js-0afdd52039f0b9d6109c2acd45cc8307.es6 → query_repl_controller.js-6766572fd1d6a3e2ebd5915ca66f30d1.es6} +9 -1
- data/public/assets/angular/services/lib/{matcher_runner.js-bd63f4c6ad965716c5b793d3c4602563.es6 → matcher_runner.js-174426afcffcfdef46041dc7470655f7.es6} +6 -1
- data/public/assets/angular/services/lib/{schema_completer.js-d04d49642967fd9f8e2c95e0df81f2ae.es6 → schema_completer.js-45c62c500021d3e3a74d931c5a8d3dc2.es6} +5 -4
- data/public/assets/{application-2d39a2a295cb3e0266f72956b3a62534.js → application-b990345b1178d3d77974c9ea035650ae.js} +4 -4
- metadata +8 -8
@@ -38,7 +38,8 @@
|
|
38
38
|
let keysForAce = {
|
39
39
|
save: this._saveKb,
|
40
40
|
detectParameters: this._detectParametersKb,
|
41
|
-
run: this._runKb
|
41
|
+
run: this._runKb,
|
42
|
+
triggerAutoComplete: this._triggerAutoComplete
|
42
43
|
};
|
43
44
|
|
44
45
|
this.aceLoaded = function aceLoaded(editor) {
|
@@ -47,6 +48,7 @@
|
|
47
48
|
editor.commands.addCommand(keysForAce.save.aceKeyCmd);
|
48
49
|
editor.commands.addCommand(keysForAce.detectParameters.aceKeyCmd);
|
49
50
|
editor.commands.bindKey(keysForAce.run.bindKey, keysForAce.run.keyFn);
|
51
|
+
editor.commands.bindKey(keysForAce.triggerAutoComplete.bindKey, keysForAce.triggerAutoComplete.keyFn);
|
50
52
|
editor.setOptions({
|
51
53
|
maxLines: 500,
|
52
54
|
minLines: 2
|
@@ -143,6 +145,11 @@
|
|
143
145
|
}
|
144
146
|
});
|
145
147
|
|
148
|
+
this._triggerAutoComplete = KeyBindings.triggerAutoComplete.withKeyFn((editor) => {
|
149
|
+
editor.insert('.');
|
150
|
+
editor.execCommand("startAutocomplete");
|
151
|
+
});
|
152
|
+
|
146
153
|
this._runKb = KeyBindings.runQuery.withKeyFn(() => {
|
147
154
|
if(this.validToRun()) {
|
148
155
|
this.runQuery();
|
@@ -157,6 +164,7 @@
|
|
157
164
|
hotkeys.bindTo($scope)
|
158
165
|
.add(this._saveKb.hotKey)
|
159
166
|
.add(this._runKb.hotKey)
|
167
|
+
.add(this._triggerAutoComplete.hotKey)
|
160
168
|
.add(this._detectParametersKb.hotKey);
|
161
169
|
}
|
162
170
|
}
|
@@ -10,6 +10,8 @@
|
|
10
10
|
|
11
11
|
execute(currentContext, filterArgs, prefix) {
|
12
12
|
let allMatches = [];
|
13
|
+
// override context if user has pressed "." -- which manifests as a prefix ""
|
14
|
+
currentContext = prefix == '' ? 'postDot' : currentContext;
|
13
15
|
|
14
16
|
_.each(this._matchers, matcher => {
|
15
17
|
if (this._isMatcherRelevant(matcher, currentContext)) {
|
@@ -36,7 +38,10 @@
|
|
36
38
|
if (!this._matcherFiltersForContext(matcher, currentContext) ||
|
37
39
|
this._itemSatisfiesFilters(matcher.contextItemFilters[currentContext], item, filterArgs)) {
|
38
40
|
let itemName = _.exists(matcher.nameProperty) ? item[matcher.nameProperty] : item;
|
39
|
-
|
41
|
+
|
42
|
+
// We want to return everything on empty string because it means that
|
43
|
+
// the typing has just begun and anything matches
|
44
|
+
if (itemName.indexOf(prefix) === 0 || prefix == '') {
|
40
45
|
return itemName;
|
41
46
|
}
|
42
47
|
}
|
@@ -6,6 +6,7 @@
|
|
6
6
|
return class SchemaCompleter {
|
7
7
|
|
8
8
|
constructor() {
|
9
|
+
this.identifierRegexps = [/[a-zA-Z_0-9\$\-\u00A2-\uFFFF]/, /\./]
|
9
10
|
this._columns = new SchemaColumns();
|
10
11
|
this.loadColumnData();
|
11
12
|
}
|
@@ -22,12 +23,13 @@
|
|
22
23
|
}
|
23
24
|
|
24
25
|
getCompletions(editor, session, pos, prefix, callback) {
|
25
|
-
if (prefix.length === 0) { callback(null, []); return; }
|
26
|
-
|
27
26
|
let parsedSql = aceSqlParse(session, pos);
|
28
27
|
let currentClause = parsedSql.currentClause;
|
29
28
|
let isSubstring = this._makeIsSubstringFn(parsedSql.fromClause);
|
30
|
-
let matchingTables =
|
29
|
+
let matchingTables = []
|
30
|
+
if (prefix != '') {
|
31
|
+
matchingTables = _(this._columns.uniqueTables).filter(isSubstring);
|
32
|
+
}
|
31
33
|
let matchingSchemas = _(this._columns.uniqueSchemas).filter(isSubstring);
|
32
34
|
|
33
35
|
if (_.exists(this._matcherRunner)) {
|
@@ -35,7 +37,6 @@
|
|
35
37
|
tableRestrict: matchingTables,
|
36
38
|
schemaRestrict: matchingSchemas
|
37
39
|
}, prefix);
|
38
|
-
|
39
40
|
callback(null, matches);
|
40
41
|
}
|
41
42
|
}
|