sql-jarvis 1.9.6 → 1.9.7

Sign up to get free protection for your applications and to get access to all the features.
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