rgviz-rails 0.20 → 0.21
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/executor.rb +13 -6
- data/spec/rgviz/executor_spec.rb +21 -0
- metadata +3 -3
data/lib/rgviz_rails/executor.rb
CHANGED
@@ -168,7 +168,7 @@ module Rgviz
|
|
168
168
|
else
|
169
169
|
# A little more complicated...
|
170
170
|
|
171
|
-
# This has the grouping as a key and the pivoted selection values as a
|
171
|
+
# This has the grouping as a key and the pivoted selection values as a value (in a list)
|
172
172
|
fin = ActiveSupport::OrderedHash.new
|
173
173
|
|
174
174
|
# The uniq pivot values
|
@@ -202,9 +202,7 @@ module Rgviz
|
|
202
202
|
|
203
203
|
# Now put all this info into fin
|
204
204
|
fin[grouped_by] = {} unless fin[grouped_by]
|
205
|
-
|
206
|
-
fin[grouped_by][pivots] = selection
|
207
|
-
end
|
205
|
+
fin[grouped_by][pivots] = selections
|
208
206
|
end
|
209
207
|
|
210
208
|
# Sort the uniq pivots so the results will be sorted for a human
|
@@ -236,6 +234,7 @@ module Rgviz
|
|
236
234
|
@table.rows << row
|
237
235
|
|
238
236
|
group_i = 0
|
237
|
+
value_i = 0
|
239
238
|
@original_columns.each_with_index do |original_column, i|
|
240
239
|
if @group_bys.include?(original_column)
|
241
240
|
hash = {}
|
@@ -244,10 +243,14 @@ module Rgviz
|
|
244
243
|
group_i += 1
|
245
244
|
elsif !@pivots.include?(original_column)
|
246
245
|
uniq_pivots.each do |uniq_pivot|
|
246
|
+
v = value[uniq_pivot]
|
247
|
+
v = v[value_i] if v
|
248
|
+
|
247
249
|
hash = {}
|
248
|
-
hash[:v] =
|
250
|
+
hash[:v] = v unless @query.options && @query.options.no_values
|
249
251
|
row.c << (Cell.new hash)
|
250
252
|
end
|
253
|
+
value_i += 1
|
251
254
|
end
|
252
255
|
end
|
253
256
|
end
|
@@ -383,10 +386,12 @@ module Rgviz
|
|
383
386
|
def visit_scalar_function_column(node)
|
384
387
|
case node.function
|
385
388
|
when ScalarFunctionColumn::Sum, ScalarFunctionColumn::Difference,
|
386
|
-
ScalarFunctionColumn::Product, ScalarFunctionColumn::Quotient
|
389
|
+
ScalarFunctionColumn::Product, ScalarFunctionColumn::Quotient
|
390
|
+
@string += "("
|
387
391
|
node.arguments[0].accept self
|
388
392
|
@string += node.function.to_s
|
389
393
|
node.arguments[1].accept self
|
394
|
+
@string += ")"
|
390
395
|
else
|
391
396
|
@string += @executor.adapter.accept_scalar_function_column(node, self)
|
392
397
|
end
|
@@ -437,9 +442,11 @@ module Rgviz
|
|
437
442
|
|
438
443
|
class WhereVisitor < ColumnVisitor
|
439
444
|
def visit_binary_expression(node)
|
445
|
+
@string += "("
|
440
446
|
node.left.accept self
|
441
447
|
@string += " #{node.operator} "
|
442
448
|
node.right.accept self
|
449
|
+
@string += ")"
|
443
450
|
false
|
444
451
|
end
|
445
452
|
|
data/spec/rgviz/executor_spec.rb
CHANGED
@@ -368,4 +368,25 @@ describe Executor do
|
|
368
368
|
end
|
369
369
|
end
|
370
370
|
|
371
|
+
it "processes pivot4" do
|
372
|
+
Person.make :name => 'Eng', :birthday => '2000-01-12', :age => 10
|
373
|
+
Person.make :name => 'Sales', :birthday => '2001-02-12', :age => 20
|
374
|
+
|
375
|
+
table = exec 'select birthday, month(birthday), sum(age) group by month(birthday) pivot name order by name'
|
376
|
+
|
377
|
+
table.cols.length.should == 5
|
378
|
+
|
379
|
+
i = 0
|
380
|
+
[
|
381
|
+
['2000-01-12', nil, 1, 10, nil],
|
382
|
+
[nil, '2001-02-12', 2, nil, 20],
|
383
|
+
].each do |values|
|
384
|
+
table.rows[i].c.length.should == 5
|
385
|
+
values.each_with_index do |v, j|
|
386
|
+
table.rows[i].c[j].v.should == v
|
387
|
+
end
|
388
|
+
i += 1
|
389
|
+
end
|
390
|
+
end
|
391
|
+
|
371
392
|
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: 33
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: "0.
|
8
|
+
- 21
|
9
|
+
version: "0.21"
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Ary Borenszweig
|