iquest-simple_table 0.3.4 → 0.3.5

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: c98e9638b525b3fcd9d23bedaba939041c8bed44
4
- data.tar.gz: e75d59320c151b9fc743f75a37993449093404cd
3
+ metadata.gz: a22a88ebc15153bfbddfa1b076b799834eef673c
4
+ data.tar.gz: 14f4ac09b39995cfb23a0336d4b6edffc57280c8
5
5
  SHA512:
6
- metadata.gz: 2870e8e75996fda74575e0e97b920cdf6b275c3d531ffa04bb8a13737b8caf26c0fa47da18cabc9b8c9fb573fdc0a5a91cba4ab348c9e74fcc3d7665e12308c8
7
- data.tar.gz: a8771e6c304757634be19bf1d83a263732174876f271958d3464bcee2b3f83aa977f3aa3aed8f1aa9da20b9129a22cd2a6365bf66dd1e655b33f7a3ff7513a1c
6
+ metadata.gz: 7356d83577cf0749b74a32d2dd247c89272943297a89365eb4c0362115e23842b26359350ddcc74fe62df5fd7f19dc1e72fb7d1134b9ddef0be0ae730e8e9791
7
+ data.tar.gz: deffa5e1599cae4b17533e848962ce8b4a0d4a593ea8a1c6f419e41ac0540213c4c16a62a18c28ea487a6d989522d69c8896a3f2f0a025f14c6ec57f86a2bed3
@@ -25,9 +25,12 @@ module Iquest
25
25
  options[:search_url] ||= polymorphic_path(collection_or_search.map {|o| o.is_a?(Ransack::Search) ? o.klass : o})
26
26
  elsif collection_or_search.is_a?(Array) && (collection = collection_or_search.detect {|o| o.is_a?(ActiveRecord::Relation) || o.is_a?(ActiveRecord::AssociationRelation)})
27
27
  @collection = collection
28
- @klass = @collection.klass
29
- else
30
- raise TypeError, 'ActiveRecord::Relation, ActiveRecord::AssociationRelation or Ransack::Search expected'
28
+ @klass = @collection.klass
29
+ elsif collection_or_search.is_a?(Array) && (collection_or_search.any? || options[:class])
30
+ @collection = collection_or_search
31
+ @klass = options[:class] || collection_or_search.first.class
32
+ else
33
+ raise TypeError, 'ActiveRecord::Relation, ActiveRecord::AssociationRelation, Ransack::Search or Array of ActiveModel like objects expected'
31
34
  end
32
35
  apply_pagination
33
36
  #draper
@@ -46,11 +49,7 @@ module Iquest
46
49
  options = args.extract_options!
47
50
  search = options.delete(:search)
48
51
  @columns[attr] = options
49
- if @search
50
- @columns[attr][:label] ||= Ransack::Translate.attribute(attr.to_s.tr('.','_'), context: @search.context)
51
- else
52
- @columns[attr][:label] ||= @klass.human_attribute_name(attr)
53
- end
52
+ @columns[attr][:label] ||= column_label(attr)
54
53
  #iniciaizce search options
55
54
  if search.is_a?(Symbol) || search.is_a?(String)
56
55
  @columns[attr][:search] = {search.to_sym => {}}
@@ -61,6 +60,7 @@ module Iquest
61
60
  end
62
61
  @columns[attr][:formatter] ||= block if block_given?
63
62
  @columns[attr][:sort] ||= attr.to_s.tr('.','_') unless @columns[attr][:sort] == false #sort link attr
63
+ @columns[attr][:html] ||= {}
64
64
  end
65
65
 
66
66
  def action(*args, &block)
@@ -213,12 +213,21 @@ module Iquest
213
213
  end
214
214
 
215
215
  def render_label(column)
216
- attr = column
216
+ attr = column
217
217
  options = @columns[attr]
218
218
  label = options[:label] || attr.to_s
219
- sort = options[:sort]
219
+ sort = options[:sort]
220
220
  if @search && sort
221
- sort_link(@search, sort, label, method: search_action)
221
+ sort_attr = attr
222
+ sort_options = {}
223
+ if sort.is_a?(Hash)
224
+ sort_attr = sort.keys.first
225
+ sort_options = sort[sort_attr]
226
+ elsif sort.is_a?(Symbol) || sort.is_a?(String)
227
+ sort_attr = sort
228
+ end
229
+ sort_options.reverse_merge!(method: search_action)
230
+ sort_link(@search, sort_attr, label, sort_options)
222
231
  else
223
232
  label
224
233
  end
@@ -234,9 +243,9 @@ module Iquest
234
243
  cell_value = render_value(obj, value, &formatter)
235
244
  cell_classes = []
236
245
  cell_classes << "rowlink-skip" if include_link?(cell_value)
237
- cell_classes << "#{options[:class]}"
238
- content_tag :td, class: cell_classes.join(' ') do
239
- cell_value
246
+ cell_classes << "#{options[:html][:class]}"
247
+ content_tag :td, class: cell_classes do
248
+ "#{cell_value}".html_safe
240
249
  end
241
250
  end
242
251
 
@@ -324,6 +333,20 @@ module Iquest
324
333
  col.to_s.split('.').inject(obj, :try)
325
334
  end
326
335
 
336
+ def column_label(attr)
337
+ if attr_class(attr).respond_to?(:human_attribute_name)
338
+ attr_class(attr).try(:human_attribute_name, attr)
339
+ elsif @search
340
+ Ransack::Translate.attribute(attr.to_s.tr('.','_'), context: @search.context)
341
+ else
342
+ attr.to_s.humanize
343
+ end
344
+ end
345
+
346
+ def attr_class(attr)
347
+ attr.to_s.split('.')[0..-2].inject(@klass) {|klass, assoc| klass.try(:reflect_on_association, assoc).try(:klass)}
348
+ end
349
+
327
350
  def column_count
328
351
  @columns.count
329
352
  end
@@ -1,5 +1,5 @@
1
1
  module Iquest
2
2
  module SimpleTable
3
- VERSION = '0.3.4'
3
+ VERSION = '0.3.5'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iquest-simple_table
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ version: 0.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Dusanek
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-06 00:00:00.000000000 Z
11
+ date: 2015-06-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ransack_simple_form