rgviz-rails 0.21 → 0.22
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 +17 -3
- data/spec/rgviz/executor_spec.rb +21 -0
- metadata +3 -3
data/lib/rgviz_rails/executor.rb
CHANGED
@@ -94,7 +94,7 @@ module Rgviz
|
|
94
94
|
end
|
95
95
|
end
|
96
96
|
|
97
|
-
# Select pivot columns
|
97
|
+
# Select pivot columns and group by columns
|
98
98
|
if @query.pivot
|
99
99
|
@query.pivot.columns.each do |col|
|
100
100
|
col_to_s = col.to_s
|
@@ -104,6 +104,18 @@ module Rgviz
|
|
104
104
|
@original_columns << col_to_s
|
105
105
|
i += 1
|
106
106
|
end
|
107
|
+
|
108
|
+
@max_original_columns = @original_columns.length
|
109
|
+
|
110
|
+
if @query.group_by
|
111
|
+
@query.group_by.columns.each do |col|
|
112
|
+
col_to_s = col.to_s
|
113
|
+
|
114
|
+
@table.cols << (Column.new :id => column_id(col, i), :type => column_type(col), :label => column_label(col_to_s))
|
115
|
+
@selects << "(#{column_select(col)}) as c#{i}"
|
116
|
+
i += 1
|
117
|
+
end
|
118
|
+
end
|
107
119
|
end
|
108
120
|
end
|
109
121
|
|
@@ -187,9 +199,9 @@ module Rgviz
|
|
187
199
|
selections = []
|
188
200
|
|
189
201
|
# Fill grouped_by, pivots and selections, as well as uniq_pivots
|
190
|
-
@table.cols.each_with_index do |col, i|
|
202
|
+
@table.cols.each_with_index do |col, i|
|
191
203
|
val = column_value(col, result.send("c#{i}"))
|
192
|
-
if @group_bys.include?(@original_columns[i])
|
204
|
+
if i >= @max_original_columns || @group_bys.include?(@original_columns[i])
|
193
205
|
grouped_by << val
|
194
206
|
elsif @pivots.include?(@original_columns[i])
|
195
207
|
pivots << val
|
@@ -213,6 +225,8 @@ module Rgviz
|
|
213
225
|
col_i = 0
|
214
226
|
new_cols = []
|
215
227
|
@original_columns.each_with_index do |original_column, i|
|
228
|
+
break if i >= @max_original_columns
|
229
|
+
|
216
230
|
old_col = @table.cols[i]
|
217
231
|
if @group_bys.include?(original_column)
|
218
232
|
old_col.id = "c#{col_i}"
|
data/spec/rgviz/executor_spec.rb
CHANGED
@@ -389,4 +389,25 @@ describe Executor do
|
|
389
389
|
end
|
390
390
|
end
|
391
391
|
|
392
|
+
it "processes pivot with group by not in select" do
|
393
|
+
Person.make :name => 'Eng', :birthday => '2000-01-12', :age => 10
|
394
|
+
Person.make :name => 'Sales', :birthday => '2001-02-12', :age => 20
|
395
|
+
|
396
|
+
table = exec 'select birthday, sum(age) group by month(birthday) pivot name order by name'
|
397
|
+
|
398
|
+
table.cols.length.should == 4
|
399
|
+
|
400
|
+
i = 0
|
401
|
+
[
|
402
|
+
['2000-01-12', nil, 10, nil],
|
403
|
+
[nil, '2001-02-12', nil, 20],
|
404
|
+
].each do |values|
|
405
|
+
table.rows[i].c.length.should == 4
|
406
|
+
values.each_with_index do |v, j|
|
407
|
+
table.rows[i].c[j].v.should == v
|
408
|
+
end
|
409
|
+
i += 1
|
410
|
+
end
|
411
|
+
end
|
412
|
+
|
392
413
|
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: 39
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: "0.
|
8
|
+
- 22
|
9
|
+
version: "0.22"
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Ary Borenszweig
|