datagrid 1.1.1 → 1.1.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3cf5af4041b5836e7938747ba830e28bda894965
4
- data.tar.gz: 44863f33c721396345e89a6d32f4d1030a1d0128
3
+ metadata.gz: 44f9ec4967241697a3299e94ea4c112eee7976a0
4
+ data.tar.gz: 704336e23cb2865df032a9842a0c74797a43b19b
5
5
  SHA512:
6
- metadata.gz: a651f92eb381d9f9d268ffe20cfa2d2c8aa559adc7b1a11840e86ca1b0ed2e296e45a1471e7c47b9b8692b6cdc51b8180e960594eb99e33ba6a5f9de43b3e810
7
- data.tar.gz: da1cc6b18029502799af4395a0c9b846a87449272292543121668fc916c2f841d9bc7c1368d4a8cbc50bac10eaa3a590fe9639f415e6f2f3befab424e45a1ff2
6
+ metadata.gz: ef2563a325877ffa13f721b5903e5381e064804a35d007e15d5ad279691504886e157c956a56698594351232782a9b9be45afb52038eacfad59f9e3553e31307
7
+ data.tar.gz: f30f96c8b933c2cc71636f0183615a47c6fe25a0658ea6c4cfd0a6ca738babaf4a1606be3b32071bfc93a505f4d58975327231759f6e70dba57e16830781bfd2
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.1
1
+ 1.1.2
data/datagrid.gemspec CHANGED
@@ -2,15 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: datagrid 1.1.1 ruby lib
5
+ # stub: datagrid 1.1.2 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "datagrid"
9
- s.version = "1.1.1"
9
+ s.version = "1.1.2"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib"]
12
13
  s.authors = ["Bogdan Gusiev"]
13
- s.date = "2014-03-08"
14
+ s.date = "2014-03-17"
14
15
  s.description = "This allows you to easily build datagrid aka data tables with sortable columns and filters"
15
16
  s.email = "agresso@gmail.com"
16
17
  s.extra_rdoc_files = [
@@ -110,8 +111,7 @@ Gem::Specification.new do |s|
110
111
  ]
111
112
  s.homepage = "http://github.com/bogdan/datagrid"
112
113
  s.licenses = ["MIT"]
113
- s.require_paths = ["lib"]
114
- s.rubygems_version = "2.1.10"
114
+ s.rubygems_version = "2.2.2"
115
115
  s.summary = "Ruby gem to create datagrids"
116
116
 
117
117
  if s.respond_to? :specification_version then
@@ -16,7 +16,6 @@ module Datagrid
16
16
  self.default_column_options = {}
17
17
 
18
18
  class_attribute :batch_size
19
- self.batch_size = 1000
20
19
 
21
20
  end
22
21
  base.send :include, InstanceMethods
@@ -259,18 +258,11 @@ module Datagrid
259
258
  # grid.to_csv(:col_sep => ';')
260
259
  def to_csv(*column_names)
261
260
  options = column_names.extract_options!
262
- klass = if RUBY_VERSION >= "1.9"
263
- require 'csv'
264
- CSV
265
- else
266
- require "fastercsv"
267
- FasterCSV
268
- end
269
- klass.generate(
261
+ csv_class.generate(
270
262
  {:headers => self.header(*column_names), :write_headers => true}.merge(options)
271
263
  ) do |csv|
272
- self.rows(*column_names).each do |row|
273
- csv << row
264
+ each_with_batches do |asset|
265
+ csv << row_for(asset, *column_names)
274
266
  end
275
267
  end
276
268
  end
@@ -358,10 +350,29 @@ module Datagrid
358
350
  protected
359
351
 
360
352
  def map_with_batches(&block)
353
+ result = []
354
+ each_with_batches do |asset|
355
+ result << block.call(asset)
356
+ end
357
+ result
358
+ end
359
+
360
+ def each_with_batches(&block)
361
361
  if batch_size && batch_size > 0
362
- driver.batch_map(assets, batch_size, &block)
362
+ driver.batch_each(assets, batch_size, &block)
363
+ else
364
+ assets.each(&block)
365
+ end
366
+ end
367
+
368
+
369
+ def csv_class
370
+ if RUBY_VERSION >= "1.9"
371
+ require 'csv'
372
+ CSV
363
373
  else
364
- assets.map(&block)
374
+ require "fastercsv"
375
+ FasterCSV
365
376
  end
366
377
  end
367
378
 
@@ -78,7 +78,7 @@ module Datagrid
78
78
  raise NotImplementedError
79
79
  end
80
80
 
81
- def batch_map(scope, batch_size, &block)
81
+ def batch_each(scope, batch_size, &block)
82
82
  raise NotImplementedError
83
83
  end
84
84
 
@@ -101,12 +101,8 @@ module Datagrid
101
101
  end
102
102
  end
103
103
 
104
- def batch_map(scope, batch_size, &block)
105
- result = []
106
- scope.find_each(batch_size ? { :batch_size => batch_size} : {}) do |record|
107
- result << yield(record)
108
- end
109
- result
104
+ def batch_each(scope, batch_size, &block)
105
+ scope.find_each(batch_size ? { :batch_size => batch_size} : {}, &block)
110
106
  end
111
107
 
112
108
  protected
@@ -65,8 +65,8 @@ module Datagrid
65
65
  []
66
66
  end
67
67
 
68
- def batch_map(scope, batch_size, &block)
69
- scope.map(&block)
68
+ def batch_each(scope, batch_size, &block)
69
+ scope.each(&block)
70
70
  end
71
71
  end
72
72
  end
@@ -56,14 +56,13 @@ module Datagrid
56
56
  [] # TODO: implement support
57
57
  end
58
58
 
59
- def batch_map(scope, batch_size, &block)
59
+ def batch_each(scope, batch_size, &block)
60
60
  current_page = 0
61
- result = []
62
61
  loop do
63
62
  batch = scope.skip(current_page * batch_size).limit(batch_size).to_a
64
- return result if batch.empty?
63
+ return if batch.empty?
65
64
  scope.skip(current_page * batch_size).limit(batch_size).each do |item|
66
- result << yield(item)
65
+ yield(item)
67
66
  end
68
67
  current_page+=1
69
68
  end
@@ -79,14 +79,13 @@ module Datagrid
79
79
  return :string
80
80
  end
81
81
 
82
- def batch_map(scope, batch_size, &block)
82
+ def batch_each(scope, batch_size, &block)
83
83
  current_page = 0
84
- result = []
85
84
  loop do
86
85
  batch = scope.skip(current_page * batch_size).limit(batch_size).to_a
87
- return result if batch.empty?
86
+ return if batch.empty?
88
87
  scope.skip(current_page * batch_size).limit(batch_size).each do |item|
89
- result << yield(item)
88
+ yield(item)
90
89
  end
91
90
  current_page+=1
92
91
  end
@@ -83,28 +83,6 @@ describe Datagrid::Columns do
83
83
  subject.to_csv(:col_sep => ";").should == "Shipping date;Group;Name;Access level;Pet\n#{date};Pop;Star;admin;ROTTWEILER\n"
84
84
  end
85
85
 
86
- it "should support defining a query for a column" do
87
- report = test_report do
88
- scope {Entry}
89
- filter(:name)
90
- column(:id)
91
- column(:sum_group_id, 'sum(group_id)')
92
- end
93
- report.assets.first.sum_group_id.should == group.id
94
- end
95
- it "should support hidding columns through if and unless" do
96
- report = test_report do
97
- scope {Entry}
98
- column(:id, :if => :show?)
99
- column(:name, :unless => proc {|grid| !grid.show? })
100
-
101
- def show?
102
- false
103
- end
104
- end
105
- report.columns(:id).should == []
106
- report.columns(:name).should == []
107
- end
108
86
  end
109
87
 
110
88
  it "should support columns with model and report arguments" do
@@ -139,6 +117,43 @@ describe Datagrid::Columns do
139
117
  child.column_by_name(:name).should_not be_nil
140
118
  child.column_by_name(:group_id).should_not be_nil
141
119
  end
120
+ it "should support defining a query for a column" do
121
+ report = test_report do
122
+ scope {Entry}
123
+ filter(:name)
124
+ column(:id)
125
+ column(:sum_group_id, 'sum(group_id)')
126
+ end
127
+ Entry.create!(:group => group)
128
+ report.assets.first.sum_group_id.should == group.id
129
+ end
130
+
131
+ it "should support post formatting for column defined with query" do
132
+ report = test_report do
133
+ scope {Group.joins(:entries).group("groups.id")}
134
+ filter(:name)
135
+ column(:entries_count, 'count(entries.id)') do |model|
136
+ format("(#{model.entries_count})") do |value|
137
+ content_tag(:span, value)
138
+ end
139
+ end
140
+ end
141
+ 3.times { Entry.create!(group: group) }
142
+ report.rows.should == [["(3)"]]
143
+ end
144
+ it "should support hidding columns through if and unless" do
145
+ report = test_report do
146
+ scope {Entry}
147
+ column(:id, :if => :show?)
148
+ column(:name, :unless => proc {|grid| !grid.show? })
149
+
150
+ def show?
151
+ false
152
+ end
153
+ end
154
+ report.columns(:id).should == []
155
+ report.columns(:name).should == []
156
+ end
142
157
 
143
158
  describe ".column_names attributes" do
144
159
  let(:grid) do
@@ -224,7 +239,7 @@ describe Datagrid::Columns do
224
239
  fake_assets = double(:assets)
225
240
 
226
241
  report.should_receive(:assets) { fake_assets }
227
- fake_assets.should_receive(:map)
242
+ fake_assets.should_receive(:each)
228
243
  fake_assets.should_not_receive(:find_each)
229
244
  report.rows
230
245
  end
@@ -18,6 +18,6 @@ describe Datagrid::Drivers::ActiveRecord do
18
18
 
19
19
  it "should support append_column_queries" do
20
20
  scope = subject.append_column_queries(Entry.scoped, [Datagrid::Columns::Column.new(SimpleReport, :sum_group_id, 'sum(entries.group_id)')])
21
- scope.to_sql.should == 'SELECT "entries".*, sum(entries.group_id) AS sum_group_id FROM "entries" '
21
+ scope.to_sql.strip.should == 'SELECT "entries".*, sum(entries.group_id) AS sum_group_id FROM "entries"'
22
22
  end
23
23
  end
@@ -247,7 +247,7 @@ describe Datagrid::FormBuilder do
247
247
  end
248
248
  end
249
249
  let(:_filter) { :category }
250
- if true || Rails.version >= "4.0"
250
+ if Rails.version >= "4.1"
251
251
  it { should equal_to_dom(
252
252
  '
253
253
  <label class="category enum_filter checkboxes" for="report_category_first"><input id="report_category_first" name="report[category][]" type="checkbox" value="first" />first</label>
@@ -56,7 +56,7 @@ describe SimpleReport do
56
56
  describe ".batch_size" do
57
57
  context "when not defined on class level" do
58
58
  it "returns nil" do
59
- subject.batch_size.should == 1000
59
+ subject.batch_size.should == nil
60
60
  end
61
61
  end
62
62
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datagrid
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bogdan Gusiev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-08 00:00:00.000000000 Z
11
+ date: 2014-03-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -324,7 +324,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
324
324
  version: '0'
325
325
  requirements: []
326
326
  rubyforge_project:
327
- rubygems_version: 2.1.10
327
+ rubygems_version: 2.2.2
328
328
  signing_key:
329
329
  specification_version: 4
330
330
  summary: Ruby gem to create datagrids