the_grid 1.1.2 → 1.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/lib/the_grid/api/command/paginate.rb +4 -2
- data/lib/the_grid/builder/csv.rb +5 -4
- data/lib/the_grid/version.rb +1 -1
- data/spec/api/command/paginate_spec.rb +6 -1
- data/spec/builder/csv_spec.rb +3 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NGE5YjY3ZGZiZjJjOWUxMjBlMDlkMGNmYzRlMGQ0ODEzMTYyODc3Yg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZWVmMDM4YTAxOGM3N2Y1NmI2ZmI5YTY0ZTcxMDZhMmQ4MTc0NmRiMQ==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YjEwYWU3Y2E5MGE5YmYwYWZmYmE5MmMyY2YwNjVhNjYxOTBiYWE2NmYwZDk4
|
10
|
+
NjY3MzY5Y2Y4YmU4M2UxNjRhMmNjNDE5NzVlMDNlOTU0YzdlMTgxOWU4Y2Ni
|
11
|
+
Njg4YjUwNjA2NThmNjgwNDYxNjMyOWY5MjI4NmU5Y2Q5MDI3ZGI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YTI3NzIwMTc2MmJiNzY5YTQzZmVjZjU0ODVjYmM0NGQ5N2NmNGEwNDljZWYw
|
14
|
+
MGU4NzhhZmQ5NjAwZjIyMzc4YWY4MDMxZjUyMDllMGQ2MGE1NmMzZDIxYzQx
|
15
|
+
ZTNjMGY3YzQ2Y2I0Y2FjYzM2MWFkNDU1OGIxMmRkNGI0OWE5MGQ=
|
@@ -6,6 +6,7 @@ module TheGrid
|
|
6
6
|
{}.tap do |o|
|
7
7
|
o[:page] = params[:page].to_i
|
8
8
|
o[:page] = 1 if o[:page] <= 0
|
9
|
+
o[:size] = params[:size]
|
9
10
|
|
10
11
|
o[:per_page] = params[:per_page].to_i
|
11
12
|
o[:per_page] = self.class.default_per_page if o[:per_page] <= 0
|
@@ -18,7 +19,8 @@ module TheGrid
|
|
18
19
|
|
19
20
|
def calculate_max_page_for(relation, params)
|
20
21
|
params = configure(relation, params)
|
21
|
-
|
22
|
+
total_count = params[:size].present? ? params[:size] : relation.except(:limit, :offset, :includes).count
|
23
|
+
(total_count / params[:per_page].to_f).ceil
|
22
24
|
end
|
23
25
|
|
24
26
|
def contextualize(relation, params)
|
@@ -26,4 +28,4 @@ module TheGrid
|
|
26
28
|
end
|
27
29
|
|
28
30
|
end
|
29
|
-
end
|
31
|
+
end
|
data/lib/the_grid/builder/csv.rb
CHANGED
@@ -13,7 +13,7 @@ module TheGrid
|
|
13
13
|
|
14
14
|
def assemble_with(params)
|
15
15
|
options = params.merge context.params
|
16
|
-
api.compose!(options.merge :per_page => BATCH_SIZE) if api.relation.respond_to?(:
|
16
|
+
api.compose!(options.merge :per_page => BATCH_SIZE) if api.relation.respond_to?(:connection)
|
17
17
|
generate_csv_with(options)
|
18
18
|
end
|
19
19
|
|
@@ -25,14 +25,15 @@ module TheGrid
|
|
25
25
|
api.relation.kind_of?(Array) ? put_data_to(csv) : put_relation_to(csv)
|
26
26
|
end
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
def put_data_to(csv)
|
30
30
|
put_records_to(csv, api.relation)
|
31
31
|
end
|
32
32
|
|
33
33
|
def put_relation_to(csv)
|
34
|
-
|
35
|
-
|
34
|
+
pages = api.options[:max_page]
|
35
|
+
(1..pages).each do |page|
|
36
|
+
relation = api.run_command!(:paginate, :page => page, :per_page => BATCH_SIZE, :size => pages * BATCH_SIZE)
|
36
37
|
put_records_to(csv, relation)
|
37
38
|
end
|
38
39
|
end
|
data/lib/the_grid/version.rb
CHANGED
@@ -35,10 +35,15 @@ describe TheGrid::Api::Command::Paginate do
|
|
35
35
|
it "should respect specified per_page option" do
|
36
36
|
subject.calculate_max_page_for(relation, :per_page => 15).should eql 2
|
37
37
|
end
|
38
|
+
|
39
|
+
it "does not count rows if size options is present" do
|
40
|
+
relation.should_not_receive(:count)
|
41
|
+
subject.calculate_max_page_for(relation, :per_page => 15, :page => 1, :size => 100)
|
42
|
+
end
|
38
43
|
end
|
39
44
|
|
40
45
|
it "calculates max page when prepares context" do
|
41
46
|
subject.contextualize(relation, :page => 1, :per_page => 15).fetch(:max_page).should eql 2
|
42
47
|
end
|
43
48
|
|
44
|
-
end
|
49
|
+
end
|
data/spec/builder/csv_spec.rb
CHANGED
@@ -5,7 +5,8 @@ describe TheGrid::Builder::Csv do
|
|
5
5
|
subject{ TheGrid::Builder::Csv.new(relation, build_context) }
|
6
6
|
|
7
7
|
include_examples "for Grid View Builder"
|
8
|
-
before(:each) { subject.api.stub(:compose!)
|
8
|
+
before(:each) { subject.api.stub(:compose!) }
|
9
|
+
before(:each) { subject.api.options[:max_page] = 1 }
|
9
10
|
|
10
11
|
let(:relation) { double.as_null_object }
|
11
12
|
let(:record) {{ :id => 1, :name => "Name", :status => "Active", :text => "Text" }}
|
@@ -23,7 +24,7 @@ describe TheGrid::Builder::Csv do
|
|
23
24
|
end
|
24
25
|
|
25
26
|
it "generates csv records in batches" do
|
26
|
-
subject.api.should_receive(:run_command!).with(:paginate, :page => 1, :per_page => params[:per_page])
|
27
|
+
subject.api.should_receive(:run_command!).with(:paginate, :page => 1, :per_page => params[:per_page], :size => subject.api.options[:max_page] * params[:per_page])
|
27
28
|
subject.assemble_with(params);
|
28
29
|
end
|
29
30
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: the_grid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sergiy Stotskiy
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-05-
|
12
|
+
date: 2013-05-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activerecord
|