effective_datatables 2.1.7 → 2.1.8
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: af9c292325c6b762e373141abc1423733b680e07
|
4
|
+
data.tar.gz: 90eae3479c8852b652b45a050b0cd25e002e2ab8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: adcafc661510d837fe435defab4fce2078c07a203ad2edc815a3af94926e9798934f06979656fd5ff4e7b359dbc2c2a5c0941f29793e8e791d448a39ae0b65fd
|
7
|
+
data.tar.gz: 663e67d4613b20b1d925b0166d8feae2f27750ad3771941a64c893c4f2f85a4d8120ddab46b7d3fc3640b2807ab040c8b32500d981966a97c6120be283803595
|
@@ -3,6 +3,7 @@
|
|
3
3
|
module Effective
|
4
4
|
module EffectiveDatatable
|
5
5
|
module Rendering
|
6
|
+
BLANK = ''.freeze
|
6
7
|
|
7
8
|
def finalize(collection) # Override me if you like
|
8
9
|
collection
|
@@ -50,6 +51,7 @@ module Effective
|
|
50
51
|
col = self.arrayize(col)
|
51
52
|
end
|
52
53
|
|
54
|
+
self.format(col)
|
53
55
|
col = self.finalize(col)
|
54
56
|
end
|
55
57
|
|
@@ -104,7 +106,7 @@ module Effective
|
|
104
106
|
collection.each_with_index.map do |obj, index|
|
105
107
|
(display_table_columns || table_columns).map do |name, opts|
|
106
108
|
if opts[:visible] == false
|
107
|
-
|
109
|
+
BLANK
|
108
110
|
elsif opts[:partial]
|
109
111
|
rendered[name][index]
|
110
112
|
elsif opts[:block]
|
@@ -112,60 +114,77 @@ module Effective
|
|
112
114
|
elsif opts[:proc]
|
113
115
|
view.instance_exec(obj, collection, self, &opts[:proc])
|
114
116
|
elsif opts[:type] == :belongs_to
|
115
|
-
(obj.send(name) rescue nil)
|
117
|
+
(obj.send(name) rescue nil)
|
116
118
|
elsif opts[:type] == :belongs_to_polymorphic
|
117
|
-
(obj.send(name) rescue nil)
|
119
|
+
(obj.send(name) rescue nil)
|
118
120
|
elsif opts[:type] == :has_many
|
119
|
-
|
120
|
-
objs.length == 1 ? objs.first : (opts[:sentence] ? objs.to_sentence : objs.join('<br>'))
|
121
|
+
(obj.send(name).to_a rescue [])
|
121
122
|
elsif opts[:type] == :obfuscated_id
|
122
123
|
(obj.send(:to_param) rescue nil).to_s
|
123
124
|
elsif opts[:type] == :effective_roles
|
124
125
|
(obj.send(:roles) rescue []).join(', ')
|
126
|
+
elsif obj.kind_of?(Array) # Array backed collection
|
127
|
+
obj[opts[:array_index]]
|
125
128
|
else
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
value
|
148
|
-
|
149
|
-
|
150
|
-
if EffectiveDatatables.boolean_format == :yes_no && value == true
|
151
|
-
'Yes'
|
152
|
-
elsif EffectiveDatatables.boolean_format == :yes_no && value == false
|
153
|
-
'No'
|
154
|
-
else
|
155
|
-
value
|
156
|
-
end
|
157
|
-
when :string
|
158
|
-
if name == 'email' && value.present?
|
159
|
-
mail_to(value)
|
129
|
+
(obj.send(name) rescue (obj[name] rescue nil))
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
def format(collection)
|
136
|
+
collection.each do |row|
|
137
|
+
(display_table_columns || table_columns).each_with_index do |(name, opts), index|
|
138
|
+
value = row[index]
|
139
|
+
next if value == nil || value == BLANK || opts[:visible] == false
|
140
|
+
next if opts[:block] || opts[:partial] || opts[:proc]
|
141
|
+
|
142
|
+
case opts[:type]
|
143
|
+
when :belongs_to, :belongs_to_polymorphic
|
144
|
+
row[index] = value.to_s
|
145
|
+
when :has_many
|
146
|
+
if value.kind_of?(Array)
|
147
|
+
if value.length == 0
|
148
|
+
row[index] = BLANK
|
149
|
+
elsif value.length == 1
|
150
|
+
row[index] = value.first.to_s
|
151
|
+
elsif opts[:sentence]
|
152
|
+
row[index] = value.map { |v| v.to_s }.to_sentence
|
160
153
|
else
|
161
|
-
value
|
154
|
+
row[index] = value.map { |v| v.to_s }.join('<br>')
|
162
155
|
end
|
163
|
-
else # Other col_type
|
164
|
-
value
|
165
156
|
end
|
157
|
+
when :datetime
|
158
|
+
row[index] = value.strftime(EffectiveDatatables.datetime_format) rescue BLANK
|
159
|
+
when :date
|
160
|
+
row[index] = value.strftime(EffectiveDatatables.date_format) rescue BLANK
|
161
|
+
when :price
|
162
|
+
# This is an integer value, "number of cents"
|
163
|
+
raise 'column type: price expects an Integer representing the number of cents' unless value.kind_of?(Integer)
|
164
|
+
row[index] = number_to_currency(value / 100.0)
|
165
|
+
when :currency
|
166
|
+
row[index] = number_to_currency(value || 0)
|
167
|
+
when :integer
|
168
|
+
if EffectiveDatatables.integer_format.kind_of?(Symbol)
|
169
|
+
row[index] = view.instance_exec { public_send(EffectiveDatatables.integer_format, value) }
|
170
|
+
elsif EffectiveDatatables.integer_format.respond_to?(:call)
|
171
|
+
row[index] = view.instance_exec { EffectiveDatatables.integer_format.call(value) }
|
172
|
+
end
|
173
|
+
when :boolean
|
174
|
+
if EffectiveDatatables.boolean_format == :yes_no && value == true
|
175
|
+
row[index] = 'Yes'
|
176
|
+
elsif EffectiveDatatables.boolean_format == :yes_no && value == false
|
177
|
+
row[index] = 'No'
|
178
|
+
end
|
179
|
+
when :string
|
180
|
+
row[index] = mail_to(value) if name == 'email'
|
181
|
+
else
|
182
|
+
; # Nothing
|
166
183
|
end
|
167
184
|
end
|
168
185
|
end
|
186
|
+
|
187
|
+
collection
|
169
188
|
end
|
170
189
|
|
171
190
|
end # / Rendering
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: effective_datatables
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Code and Effect
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-09-
|
11
|
+
date: 2015-09-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|