rgviz-rails 0.26 → 0.28
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.
- data/lib/rgviz_rails.rb +2 -0
- data/lib/rgviz_rails/executor.rb +1 -0
- data/lib/rgviz_rails/js_renderer.rb +19 -0
- data/lib/rgviz_rails/tqx.rb +22 -0
- data/rails/init.rb +11 -32
- metadata +5 -3
data/lib/rgviz_rails.rb
CHANGED
data/lib/rgviz_rails/executor.rb
CHANGED
@@ -0,0 +1,19 @@
|
|
1
|
+
module Rgviz
|
2
|
+
module JsRenderer
|
3
|
+
def self.render(table, tqx)
|
4
|
+
response_handler = tqx['responseHandler']
|
5
|
+
req_id = tqx['reqId']
|
6
|
+
version = tqx['version']
|
7
|
+
"#{response_handler}({reqId:'#{req_id}',status:'ok',version:'#{version}',table:#{table.to_json}});"
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.render_error(reason, message, tqx)
|
11
|
+
reason = reason.gsub("'", "\\'")
|
12
|
+
message = message.gsub("'", "\\'")
|
13
|
+
response_handler = tqx['responseHandler']
|
14
|
+
req_id = tqx['reqId']
|
15
|
+
version = tqx['version']
|
16
|
+
"#{response_handler}({reqId:'#{req_id}',status:'error',version:'#{version}',errors:[{reason:'#{reason}', message:'#{message}'}]});"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Rgviz
|
2
|
+
module Tqx
|
3
|
+
def self.parse(tqx)
|
4
|
+
tqx ||= ''
|
5
|
+
pieces = tqx.split ';'
|
6
|
+
|
7
|
+
map = {
|
8
|
+
'reqId' => '0',
|
9
|
+
'version' => '0.6',
|
10
|
+
'responseHandler' => 'google.visualization.Query.setResponse',
|
11
|
+
'out' => 'json'
|
12
|
+
}
|
13
|
+
|
14
|
+
pieces.each do |p|
|
15
|
+
key_value = p.split ':'
|
16
|
+
map[key_value[0]] = key_value[1] if key_value.length == 2
|
17
|
+
end
|
18
|
+
|
19
|
+
map
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/rails/init.rb
CHANGED
@@ -15,29 +15,8 @@ config.after_initialize do
|
|
15
15
|
conditions = hash[:conditions]
|
16
16
|
query = params[:tq]
|
17
17
|
tqx = params[:tqx] || ''
|
18
|
-
|
19
|
-
|
20
|
-
version = '0.6'
|
21
|
-
responseHandler = 'google.visualization.Query.setResponse'
|
22
|
-
out = 'json'
|
23
|
-
outFileName = nil
|
24
|
-
pieces.each do |p|
|
25
|
-
key_value = p.split ':'
|
26
|
-
if key_value.length == 2
|
27
|
-
case key_value[0]
|
28
|
-
when 'reqId'
|
29
|
-
reqId = key_value[1]
|
30
|
-
when 'version'
|
31
|
-
version = key_value[1]
|
32
|
-
when 'responseHandler'
|
33
|
-
responseHandler = key_value[1]
|
34
|
-
when 'out'
|
35
|
-
out = key_value[1]
|
36
|
-
when 'outFileName'
|
37
|
-
outFileName = key_value[1]
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
18
|
+
|
19
|
+
tqx = Rgviz::Tqx.parse(tqx)
|
41
20
|
|
42
21
|
begin
|
43
22
|
executor = Rgviz::Executor.new model, Rgviz::Parser.new(query).parse
|
@@ -45,31 +24,31 @@ config.after_initialize do
|
|
45
24
|
options[:conditions] = conditions if conditions
|
46
25
|
table = executor.execute options
|
47
26
|
|
48
|
-
|
27
|
+
yield table if block_given?
|
28
|
+
|
29
|
+
case tqx['out']
|
49
30
|
when 'json'
|
50
|
-
original_render :text =>
|
31
|
+
original_render :text => Rgviz::JsRenderer.render(table, tqx)
|
51
32
|
when 'html'
|
52
33
|
original_render :text => Rgviz::HtmlRenderer.render(table)
|
53
34
|
when 'csv'
|
54
35
|
csv_output = Rgviz::CsvRenderer.render(table)
|
55
|
-
if outFileName
|
36
|
+
if tqx['outFileName']
|
56
37
|
send_data csv_output, :filename => outFileName, :type => 'text/csv'
|
57
38
|
else
|
58
39
|
original_render :text => csv_output
|
59
40
|
end
|
60
41
|
else
|
61
|
-
original_render :text =>
|
42
|
+
original_render :text => Rgviz::JsRenderer.render_error('not_supported', "Unsupported output type: #{out}", tqx)
|
62
43
|
end
|
63
44
|
rescue ParseException => e
|
64
|
-
msg = e.message.gsub("'", "\\'")
|
65
|
-
|
66
45
|
case out
|
67
46
|
when 'json'
|
68
|
-
original_render :text =>
|
47
|
+
original_render :text => Rgviz::JsRenderer.render_error('invalid_query', e.message)
|
69
48
|
when 'html'
|
70
|
-
original_render :text => "<b>Error:</b> #{
|
49
|
+
original_render :text => "<b>Error:</b> #{e.message}"
|
71
50
|
when 'csv'
|
72
|
-
original_render :text => "Error: #{
|
51
|
+
original_render :text => "Error: #{e.message}"
|
73
52
|
else
|
74
53
|
original_render :text => "<b>Unsupported output type:</b> #{out}"
|
75
54
|
end
|
metadata
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rgviz-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 51
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: "0.
|
8
|
+
- 28
|
9
|
+
version: "0.28"
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Ary Borenszweig
|
@@ -29,6 +29,8 @@ extra_rdoc_files:
|
|
29
29
|
files:
|
30
30
|
- lib/rgviz_rails.rb
|
31
31
|
- lib/rgviz_rails/executor.rb
|
32
|
+
- lib/rgviz_rails/js_renderer.rb
|
33
|
+
- lib/rgviz_rails/tqx.rb
|
32
34
|
- lib/rgviz_rails/view_helper.rb
|
33
35
|
- lib/rgviz_rails/adapters/mysql_adapter.rb
|
34
36
|
- lib/rgviz_rails/adapters/postgresql_adapter.rb
|