sql-jarvis 1.9.6 → 1.9.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: f1955fca26a63e1f2ffdedb671c1fdf3f151a931
4
- data.tar.gz: 5f46942561c29e99cc9406ebf013b3196ea94f6b
2
+ SHA256:
3
+ metadata.gz: d7b78dfb371370a6d7279bdc520f586298e7702fa3b58c5039f55dc03ad08138
4
+ data.tar.gz: 6f414f547cb3d5fcbb64f40b72d9c3d186c8f167d1ff078413995d5f4498bb34
5
5
  SHA512:
6
- metadata.gz: 11f3e01c54004114a906921897a007412be4381d282025103895d359a4dcc0d57f33f98496c2f3d62fe17165ab3648905a8cbefa06a3394ec775f63c07481057
7
- data.tar.gz: 51c7cadfdd95d77870a00551cbe70ce6aaef4f0d7b62acceef64c5c0e2bb0728b6391f3e83af8ae0001e01705734acb92d6a4b1d94596f73fae4f50a55f29230
6
+ metadata.gz: a059f544d8eb06549069fd9c728b39414cabe2061afdbc33e902ef07064bfbfa0df7094165313ecb8247790f66c5a5a564ba7bdf95f81a77d1290507464b7219
7
+ data.tar.gz: 624ec5b9428319f1b3b72eef61fccd7ef401f78fb63bd25762a80dc5d649a54e936d6755255d36b0248aed2b8c6861d3296e9e6f8ecf519ab0c4fa6904219f1e
@@ -77,4 +77,3 @@ function preventBackspaceNav() {
77
77
  }
78
78
 
79
79
  preventBackspaceNav()
80
-
@@ -11,6 +11,9 @@ var Routes = {
11
11
  tables_queries_path: function(params) {
12
12
  return rootPath + "queries/tables?" + $.param(params)
13
13
  },
14
+ columns_queries_path: function(params) {
15
+ return rootPath + "queries/columns?" + $.param(params)
16
+ },
14
17
  queries_path: function() {
15
18
  return rootPath + "queries"
16
19
  },
@@ -1,7 +1,8 @@
1
1
  module Blazer
2
2
  class QueriesController < BaseController
3
3
  before_action :set_query, only: [:show, :edit, :update, :destroy, :refresh]
4
- before_action :set_data_source, only: [:tables, :schema, :cancel]
4
+ before_action :set_data_source, only: [:tables, :schema, :cancel, :columns]
5
+ before_action :set_assignees, only: [:new, :create, :show, :edit, :update, :destroy, :refresh]
5
6
 
6
7
  def home
7
8
  if params[:filter] == "dashboards"
@@ -183,6 +184,16 @@ module Blazer
183
184
  render json: @data_source.tables
184
185
  end
185
186
 
187
+ def columns
188
+ column_names = []
189
+ @data_source.schema.map do |t|
190
+ if params[:tables].include?(t[:table])
191
+ column_names += t[:columns].map { |c| c[:name] }
192
+ end
193
+ end
194
+ render json: column_names
195
+ end
196
+
186
197
  def schema
187
198
  @schema = @data_source.schema
188
199
  end
@@ -306,6 +317,19 @@ module Blazer
306
317
  end
307
318
  end
308
319
 
320
+ def set_assignees
321
+ if Blazer.settings.key?('assignees')
322
+ source = params[:data_source] || 'main'
323
+ data_source = Blazer.data_sources[source]
324
+ statement = Blazer.settings['assignees']
325
+ @assignees = Rails.cache.fetch 'jarvis_assignees' do
326
+ (Blazer::RunStatement.new.perform(data_source, statement, {}).rows rescue [])
327
+ end
328
+ else
329
+ @assignees = []
330
+ end
331
+ end
332
+
309
333
  def render_forbidden
310
334
  render plain: "Access denied", status: :forbidden
311
335
  end
@@ -34,10 +34,10 @@
34
34
  <%= f.label :description %>
35
35
  <%= f.text_area :description, placeholder: "Optional", style: "height: 80px;", class: "form-control" %>
36
36
  </div>
37
- <%- if Blazer.assignees.any? -%>
37
+ <%- if @assignees.any? -%>
38
38
  <div class="form-group">
39
39
  <%= f.label :assignees %>
40
- <%= f.collection_select :assignee_ids, Blazer.assignees, :first, :last, {}, { placeholder: "Assignees", style: "height: 80px;", class: "form-control", multiple: true } %>
40
+ <%= f.collection_select :assignee_ids, @assignees, :first, :last, {}, { placeholder: "Assignees", style: "height: 80px;", class: "form-control", multiple: true } %>
41
41
  </div>
42
42
  <%- end -%>
43
43
  <div class="text-right">
@@ -147,12 +147,12 @@
147
147
  editor.setTheme("ace/theme/twilight")
148
148
  editor.getSession().setMode("ace/mode/sql")
149
149
  editor.setOptions({
150
- enableBasicAutocompletion: false,
150
+ fontSize: 12,
151
+ minLines: 10,
151
152
  enableSnippets: false,
152
- enableLiveAutocompletion: false,
153
153
  highlightActiveLine: false,
154
- fontSize: 12,
155
- minLines: 10
154
+ enableLiveAutocompletion: true,
155
+ enableBasicAutocompletion: true
156
156
  })
157
157
  editor.renderer.setShowGutter(true)
158
158
  editor.renderer.setPrintMarginColumn(false)
@@ -169,6 +169,62 @@
169
169
  // fix command+L
170
170
  editor.commands.removeCommands(["gotoline", "find"])
171
171
 
172
+ var langTools = ace.require("ace/ext/language_tools");
173
+
174
+ var addSuggestItems = function(callback) {
175
+ if (window.tableNames === undefined) return;
176
+ callback(null, window.tableNames.map(function(table) {
177
+ return { name: table, value: table, score: 100, meta: "table" };
178
+ }));
179
+ }
180
+
181
+ // Load tables
182
+ langTools.addCompleter({
183
+ getCompletions: function(editor, session, pos, prefix, callback) {
184
+ if (prefix.length === 0) { callback(null, []); return }
185
+ if (window.tableNames !== undefined) {
186
+ addSuggestItems(callback);
187
+ } else {
188
+ $.getJSON(
189
+ Routes.tables_queries_path({data_source: this.dataSource})
190
+ , function(tables) {
191
+ window.tableNames = tables;
192
+ // wordList like [{"word":"flow","freq":24,"score":300,"flags":"bc","syllables":"1"}]
193
+ addSuggestItems(callback);
194
+ }
195
+ )
196
+ }
197
+ }
198
+ });
199
+
200
+ // Load columns
201
+ langTools.addCompleter({
202
+ getCompletions: function(editor, session, pos, prefix, callback) {
203
+ if (prefix.length === 0) { callback(null, []); return }
204
+ var sql = $('#query_statement').val();
205
+ tables = sql.toLowerCase().match(/(join|from) ([a-z_]{2,50})/g);
206
+ if (tables === null) { callback(null, []); return }
207
+ tables = tables.map(function(table) { return table.split(' ')[1] });
208
+ key = tables.join('-');
209
+ if (window[key]) {
210
+ callback(null, window[key].map(function(col) {
211
+ return { name: col, value: col, score: 100, meta: "column" };
212
+ }));
213
+ } else {
214
+ $.getJSON(
215
+ Routes.columns_queries_path({data_source: this.dataSource, tables: tables})
216
+ , function(columns) {
217
+ window[key] = Array.from(new Set(columns));
218
+ // wordList like [{"word":"flow","freq":24,"score":300,"flags":"bc","syllables":"1"}]
219
+ callback(null, window[key].map(function(col) {
220
+ return { name: col, value: col, score: 100, meta: "column" };
221
+ }));
222
+ }
223
+ )
224
+ }
225
+ }
226
+ });
227
+
172
228
  this.editor = editor
173
229
 
174
230
  editor.getSession().on("change", function () {
@@ -247,4 +303,5 @@
247
303
  $(document).ready(function() {
248
304
  $('#query_assignee_ids').select2();
249
305
  });
306
+
250
307
  </script>
@@ -4,6 +4,7 @@ Blazer::Engine.routes.draw do
4
4
  post :cancel, on: :collection
5
5
  post :refresh, on: :member
6
6
  get :tables, on: :collection
7
+ get :columns, on: :collection
7
8
  get :schema, on: :collection
8
9
  end
9
10
  resources :checks, except: [:show] do
@@ -20,14 +20,6 @@ module Blazer
20
20
  Blazer.mapbox_access_token = ENV["MAPBOX_ACCESS_TOKEN"]
21
21
  end
22
22
 
23
- if Blazer.settings.key?('assignees')
24
- data_source = Blazer.data_sources['main']
25
- statement = Blazer.settings['assignees']
26
- Blazer.assignees = (Blazer::RunStatement.new.perform(data_source, statement, {}).rows rescue [])
27
- else
28
- Blazer.assignees = []
29
- end
30
-
31
23
  if Blazer.user_class
32
24
  options = Blazer::BELONGS_TO_OPTIONAL.merge(class_name: Blazer.user_class.to_s)
33
25
  Blazer::Query.belongs_to :creator, options
@@ -1,3 +1,3 @@
1
1
  module Blazer
2
- VERSION = "1.9.6"
2
+ VERSION = "1.9.7"
3
3
  end
Binary file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sql-jarvis
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.6
4
+ version: 1.9.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - ThanhKhoaIT
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-20 00:00:00.000000000 Z
11
+ date: 2018-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -205,8 +205,7 @@ files:
205
205
  - lib/generators/blazer/templates/config.yml.tt
206
206
  - lib/generators/blazer/templates/install.rb.tt
207
207
  - lib/tasks/blazer.rake
208
- - sql-jarvis-1.9.4.gem
209
- - sql-jarvis-1.9.5.gem
208
+ - sql-jarvis-1.9.6.gem
210
209
  homepage: https://github.com/ThanhKhoaIT/blazer
211
210
  licenses:
212
211
  - MIT
@@ -227,7 +226,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
227
226
  version: '0'
228
227
  requirements: []
229
228
  rubyforge_project:
230
- rubygems_version: 2.6.14
229
+ rubygems_version: 2.7.7
231
230
  signing_key:
232
231
  specification_version: 4
233
232
  summary: Fork from ankane! Explore your data with SQL. Easily create charts and dashboards,
Binary file
Binary file