datagrid 1.3.3 → 1.3.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e7dd21661c0b7829a023451513b73670d0b0be11
4
- data.tar.gz: 4b2b5bb748791497da883b6c24ad8f19c7ce3c81
3
+ metadata.gz: 3e94155c2af961e78d34637a09881263afa9b47d
4
+ data.tar.gz: a8573f7be208ac8d629e5a453a3ee52f899333ee
5
5
  SHA512:
6
- metadata.gz: 7d33aa9a4a8eceaacad1ff76ee91ba9dc3b9e312d2158f70998e7eaef707877042ace5218df8de47a28373dce7d92f6886e4fdf7be70ea27bf90baa6246f763c
7
- data.tar.gz: d19b2234cbaba7712206f4b9ed7159cdcf2fd44ec320ff0c3a937a4ea3f03caf237499b4d2a594a0f76a84526fe28cbf23132279e0072a3eaf0535334179692c
6
+ metadata.gz: c994fd4f81436a191195851226c4ff1dd11f1cf0ff17027ee2dd0fe04eed653475d2785e1c90e8765ea997249284fb30344f99e50c8fc5e271f8fb6fee25b3fb
7
+ data.tar.gz: 87bf1d14751e50059eb0414665608936f39002a42bb81021ca93e8b710eef37d231cdf6957fb9c032b9293bba598b270bd855f6339b5aca998a81f8d6cf88097
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.3.3
1
+ 1.3.4
@@ -2,16 +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.3.3 ruby lib
5
+ # stub: datagrid 1.3.4 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "datagrid"
9
- s.version = "1.3.3"
9
+ s.version = "1.3.4"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
13
13
  s.authors = ["Bogdan Gusiev"]
14
- s.date = "2014-11-12"
14
+ s.date = "2015-01-08"
15
15
  s.description = "This allows you to easily build datagrid aka data tables with sortable columns and filters"
16
16
  s.email = "agresso@gmail.com"
17
17
  s.extra_rdoc_files = [
@@ -98,6 +98,7 @@ module Datagrid
98
98
  end
99
99
 
100
100
 
101
+ # Updates datagrid attributes with a passed hash argument
101
102
  def assign_attributes(attributes)
102
103
  attributes.each do |name, value|
103
104
  self[name] = value
@@ -159,6 +160,12 @@ module Datagrid
159
160
  self.class.send :check_scope_defined!, message
160
161
  end
161
162
 
163
+ def inspect
164
+ attrs = attributes.map do |key, value|
165
+ "#{key}: #{value.inspect}"
166
+ end.join(", ")
167
+ "#<#{self.class} #{attrs}>"
168
+ end
162
169
 
163
170
  end # InstanceMethods
164
171
  end
@@ -33,13 +33,13 @@ class Datagrid::Filters::BaseFilter #:nodoc:
33
33
 
34
34
  def parse_values(value)
35
35
  if multiple?
36
+ return nil if value.nil?
36
37
  normalize_multiple_value(value).map do |v|
37
38
  parse(v)
38
39
  end
40
+ elsif value.is_a?(Array)
41
+ raise Datagrid::ArgumentError, "#{grid_class}##{name} filter can not accept Array argument. Use :multiple option."
39
42
  else
40
- if value.is_a?(Array)
41
- raise Datagrid::ArgumentError, "#{grid_class}##{name} filter can not accept Array argument. Use :multiple option."
42
- end
43
43
  parse(value)
44
44
  end
45
45
  end
@@ -10,31 +10,26 @@ module RangedFilter
10
10
 
11
11
  def parse_values(value)
12
12
  result = super(value)
13
- if range?
14
- if result.is_a?(Array)
15
- case result.size
16
- when 0
17
- nil
18
- when 1
19
- result.first
20
- when 2
21
- if result.first && result.last && result.first > result.last
22
- # If wrong range is given - reverse it to be always valid
23
- result.reverse
24
- else
25
- result
26
- end
27
- else
28
- raise ArgumentError, "Can not create a date range from array of more than two: #{result.inspect}"
29
- end
13
+ return result if !range? || result.nil?
14
+ # Simulate single point range
15
+ return result..result unless result.is_a?(Array)
16
+
17
+ case result.size
18
+ when 0
19
+ nil
20
+ when 1
21
+ result.first
22
+ when 2
23
+ if result.first && result.last && result.first > result.last
24
+ # If wrong range is given - reverse it to be always valid
25
+ result.reverse
30
26
  else
31
- # Simulate single point range
32
- result..result
27
+ result
33
28
  end
34
-
35
29
  else
36
- result
30
+ raise ArgumentError, "Can not create a date range from array of more than two: #{result.inspect}"
37
31
  end
32
+
38
33
  end
39
34
 
40
35
  def range?
@@ -1,9 +1,9 @@
1
1
  module Datagrid::Filters::SelectOptions
2
2
 
3
3
  def select(object = nil)
4
- #unless object
5
- #Datagrid::Utils.warn_once("#{self.class.name}#select without argument is deprecated")
6
- #end
4
+ unless object
5
+ Datagrid::Utils.warn_once("#{self.class.name}#select without argument is deprecated")
6
+ end
7
7
  select = self.options[:select]
8
8
  if select.is_a?(Symbol)
9
9
  object.send(select)
@@ -45,8 +45,7 @@ shared_examples_for "Datagrid" do
45
45
  when :integer
46
46
  1
47
47
  when :enum
48
- select = filter.select
49
- select = select.call(subject) if select.respond_to?(:call)
48
+ select = filter.select(subject)
50
49
  select.first.try(:last)
51
50
  else
52
51
  raise "unknown filter type: #{filter.class}"
@@ -48,4 +48,18 @@ describe Datagrid::Core do
48
48
  end
49
49
  end
50
50
  end
51
+
52
+ describe ".inspect" do
53
+ it "should show all attribute values" do
54
+ class InspectTest
55
+ include Datagrid
56
+ scope {Entry}
57
+ filter(:created_at, :date, :range => true)
58
+ column(:name)
59
+ end
60
+
61
+ grid = InspectTest.new(:created_at => ['2014-01-01', '2014-08-05'], :descending => true, :order => 'name')
62
+ expect(grid.inspect).to eq('#<InspectTest order: :name, descending: true, created_at: [Wed, 01 Jan 2014, Tue, 05 Aug 2014]>')
63
+ end
64
+ end
51
65
  end
@@ -3,17 +3,19 @@ require 'spec_helper'
3
3
  describe Datagrid::Filters::EnumFilter do
4
4
 
5
5
  it "should support select option" do
6
- expect(test_report do
6
+ report = test_report do
7
7
  scope {Entry}
8
8
  filter(:group_id, :enum, :select => [1,2] )
9
- end.class.filter_by_name(:group_id).select).to eq([1,2])
9
+ end
10
+ expect(report.filter_by_name(:group_id).select(report)).to eq([1,2])
10
11
  end
11
12
 
12
13
  it "should support select option as proc" do
13
- expect(test_report do
14
+ grid = test_report do
14
15
  scope {Entry}
15
16
  filter(:group_id, :enum, :select => proc { [1,2] })
16
- end.class.filter_by_name(:group_id).select).to eq([1,2])
17
+ end
18
+ expect(grid.filter_by_name(:group_id).select(grid)).to eq([1,2])
17
19
  end
18
20
 
19
21
  it "should support select option as proc with instace input" do
@@ -3,10 +3,11 @@ require 'spec_helper'
3
3
  describe Datagrid::Filters::ExtendedBooleanFilter do
4
4
 
5
5
  it "should support select option" do
6
- expect(test_report do
6
+ grid = test_report do
7
7
  scope {Entry}
8
8
  filter(:disabled, :xboolean)
9
- end.class.filter_by_name(:disabled).select).to eq([["Yes", "YES"], ["No", "NO"]])
9
+ end
10
+ expect(grid.filter_by_name(:disabled).select(grid)).to eq([["Yes", "YES"], ["No", "NO"]])
10
11
  end
11
12
 
12
13
  it "should generate pass boolean value to filter block" do
@@ -2,83 +2,73 @@ require 'spec_helper'
2
2
 
3
3
  describe Datagrid::Filters::IntegerFilter do
4
4
 
5
+
6
+ let(:entry1) { Entry.create!(:group_id => 1) }
7
+ let(:entry2) { Entry.create!(:group_id => 2) }
8
+ let(:entry3) { Entry.create!(:group_id => 3) }
9
+ let(:entry4) { Entry.create!(:group_id => 4) }
10
+ let(:entry5) { Entry.create!(:group_id => 5) }
11
+ let(:entry7) { Entry.create!(:group_id => 7) }
12
+
5
13
  it "should support integer range argument" do
6
- e1 = Entry.create!(:group_id => 1)
7
- e2 = Entry.create!(:group_id => 4)
8
- e3 = Entry.create!(:group_id => 7)
9
14
  report = test_report(:group_id => 3..5) do
10
15
  scope { Entry }
11
16
  filter(:group_id, :integer)
12
17
  end
13
- expect(report.assets).not_to include(e1)
14
- expect(report.assets).to include(e2)
15
- expect(report.assets).not_to include(e3)
18
+ expect(report.assets).not_to include(entry1)
19
+ expect(report.assets).to include(entry4)
20
+ expect(report.assets).not_to include(entry7)
16
21
  end
17
22
 
18
23
  it "should support integer range given as array argument" do
19
- e1 = Entry.create!(:group_id => 7)
20
- e2 = Entry.create!(:group_id => 4)
21
- e3 = Entry.create!(:group_id => 1)
22
24
  report = test_report(:group_id => [3.to_s, 5.to_s]) do
23
25
  scope { Entry }
24
26
  filter(:group_id, :integer, :range => true)
25
27
  end
26
- expect(report.assets).not_to include(e1)
27
- expect(report.assets).to include(e2)
28
- expect(report.assets).not_to include(e3)
28
+ expect(report.assets).not_to include(entry7)
29
+ expect(report.assets).to include(entry4)
30
+ expect(report.assets).not_to include(entry1)
29
31
  end
30
32
 
31
33
  it "should support minimum integer argument" do
32
- e1 = Entry.create!(:group_id => 1)
33
- e2 = Entry.create!(:group_id => 4)
34
- e3 = Entry.create!(:group_id => 7)
35
34
  report = test_report(:group_id => [5.to_s, nil]) do
36
35
  scope { Entry }
37
36
  filter(:group_id, :integer, :range => true)
38
37
  end
39
- expect(report.assets).not_to include(e1)
40
- expect(report.assets).not_to include(e2)
41
- expect(report.assets).to include(e3)
38
+ expect(report.assets).not_to include(entry1)
39
+ expect(report.assets).not_to include(entry4)
40
+ expect(report.assets).to include(entry7)
42
41
  end
43
42
 
44
43
  it "should support maximum integer argument" do
45
- e1 = Entry.create!(:group_id => 1)
46
- e2 = Entry.create!(:group_id => 4)
47
- e3 = Entry.create!(:group_id => 7)
48
44
  report = test_report(:group_id => [nil, 5.to_s]) do
49
45
  scope { Entry }
50
46
  filter(:group_id, :integer, :range => true)
51
47
  end
52
- expect(report.assets).to include(e1)
53
- expect(report.assets).to include(e2)
54
- expect(report.assets).not_to include(e3)
48
+ expect(report.assets).to include(entry1)
49
+ expect(report.assets).to include(entry4)
50
+ expect(report.assets).not_to include(entry7)
55
51
  end
56
52
 
57
53
  it "should find something in one integer interval" do
58
54
 
59
- e1 = Entry.create!(:group_id => 7)
60
- e2 = Entry.create!(:group_id => 4)
61
- e3 = Entry.create!(:group_id => 1)
62
55
  report = test_report(:group_id => (4..4)) do
63
56
  scope { Entry }
64
57
  filter(:group_id, :integer, :range => true)
65
58
  end
66
- expect(report.assets).not_to include(e1)
67
- expect(report.assets).to include(e2)
68
- expect(report.assets).not_to include(e3)
59
+ expect(report.assets).not_to include(entry7)
60
+ expect(report.assets).to include(entry4)
61
+ expect(report.assets).not_to include(entry1)
69
62
  end
70
63
  it "should support invalid range" do
71
64
 
72
- e1 = Entry.create!(:group_id => 7)
73
- e2 = Entry.create!(:group_id => 4)
74
- e3 = Entry.create!(:group_id => 1)
75
65
  report = test_report(:group_id => (7..1)) do
76
66
  scope { Entry }
77
67
  filter(:group_id, :integer, :range => true)
78
68
  end
79
- expect(report.assets).not_to include(e1)
80
- expect(report.assets).not_to include(e2)
81
- expect(report.assets).not_to include(e3)
69
+ expect(report.assets).not_to include(entry7)
70
+ expect(report.assets).not_to include(entry4)
71
+ expect(report.assets).not_to include(entry1)
82
72
  end
83
73
 
84
74
 
@@ -89,8 +79,8 @@ describe Datagrid::Filters::IntegerFilter do
89
79
  where("group_id >= ?", value)
90
80
  end
91
81
  end
92
- expect(report.assets).not_to include(Entry.create!(:group_id => 1))
93
- expect(report.assets).to include(Entry.create!(:group_id => 5))
82
+ expect(report.assets).not_to include(entry1)
83
+ expect(report.assets).to include(entry5)
94
84
  end
95
85
 
96
86
 
@@ -99,6 +89,7 @@ describe Datagrid::Filters::IntegerFilter do
99
89
  scope { Entry.joins(:group) }
100
90
  filter(:rating, :integer, :range => true)
101
91
  end
92
+ expect(report.rating).to eq([4,nil])
102
93
  expect(report.assets).not_to include(Entry.create!(:group => Group.create!(:rating => 3)))
103
94
  expect(report.assets).to include(Entry.create!(:group => Group.create!(:rating => 5)))
104
95
  end
@@ -106,39 +97,37 @@ describe Datagrid::Filters::IntegerFilter do
106
97
  it "should support multiple values" do
107
98
  report = test_report(:group_id => "1,2") do
108
99
  scope {Entry}
109
- filter(:group_id, :string, :multiple => true)
100
+ filter(:group_id, :integer, :multiple => true)
110
101
  end
111
- expect(report.assets).to include(Entry.create!( :group_id => 1))
112
- expect(report.assets).to include(Entry.create!( :group_id => 2))
113
- expect(report.assets).not_to include(Entry.create!( :group_id => 3))
102
+ expect(report.group_id).to eq([1,2])
103
+ expect(report.assets).to include(entry1)
104
+ expect(report.assets).to include(entry2)
105
+ expect(report.assets).not_to include(entry3)
114
106
  end
115
107
  it "should support custom separator multiple values" do
116
108
  report = test_report(:group_id => "1|2") do
117
109
  scope {Entry}
118
- filter(:group_id, :string, :multiple => '|')
110
+ filter(:group_id, :integer, :multiple => '|')
119
111
  end
120
- expect(report.assets).to include(Entry.create!( :group_id => 1))
121
- expect(report.assets).to include(Entry.create!( :group_id => 2))
122
- expect(report.assets).not_to include(Entry.create!( :group_id => 3))
112
+ expect(report.group_id).to eq([1,2])
113
+ expect(report.assets).to include(entry1)
114
+ expect(report.assets).to include(entry2)
115
+ expect(report.assets).not_to include(entry3)
123
116
  end
124
117
 
125
- it "should support multiple values" do
126
- report = test_report(:group_id => "1,2") do
127
- scope {Entry}
128
- filter(:group_id, :string, :multiple => true)
129
- end
130
- expect(report.assets).to include(Entry.create!( :group_id => 1))
131
- expect(report.assets).to include(Entry.create!( :group_id => 2))
132
- expect(report.assets).not_to include(Entry.create!( :group_id => 3))
133
- end
134
-
135
- it "should support custom separator multiple values" do
136
- report = test_report(:group_id => "1|2") do
118
+ it "should support multiple with allow_blank allow_nil options" do
119
+ report = test_report do
137
120
  scope {Entry}
138
- filter(:group_id, :string, :multiple => '|')
121
+ filter(:group_id, :integer, :multiple => true, :allow_nil => false, :allow_blank => true )
139
122
  end
140
- expect(report.assets).to include(Entry.create!( :group_id => 1))
141
- expect(report.assets).to include(Entry.create!( :group_id => 2))
142
- expect(report.assets).not_to include(Entry.create!( :group_id => 3))
123
+ report.group_id = []
124
+ expect(report.assets).to_not include(entry1)
125
+ expect(report.assets).to_not include(entry2)
126
+ report.group_id = [1]
127
+ expect(report.assets).to include(entry1)
128
+ expect(report.assets).to_not include(entry2)
129
+ report.group_id = nil
130
+ expect(report.assets).to include(entry1)
131
+ expect(report.assets).to include(entry2)
143
132
  end
144
133
  end
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.3.3
4
+ version: 1.3.4
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-11-12 00:00:00.000000000 Z
11
+ date: 2015-01-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails