table_sortable 1.0.0.pre.alpha.1 → 1.0.0.pre.alpha.2

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: 16a4f40f3be133c7ec573c4b44ed7a0e09d4ff32
4
- data.tar.gz: 8c5b23bb0ca2f978ac6e521a8c3ff6ec0b5f19c0
3
+ metadata.gz: ef99429a8e38ac1b35cca7c1132ac37dd1010e90
4
+ data.tar.gz: 990f9be300de2361525306f8441b9403295df3ad
5
5
  SHA512:
6
- metadata.gz: cded6091b5b1f9ca2fc93dcb89dda9282b1793a1e5ba3c6930bb5a58e1ef98a1058f0139eb4a80bb3491758c5d051d4be047744b67f6382fed5dc12d3bba14f2
7
- data.tar.gz: b2b5058c8231d4150bcb39b118b5645bab6d26416e3f2b70c227a6b5d8762d39798b4ca47775df077124f33d8f2f430cb3fedbec7b0bda945af03fc6089d8628
6
+ metadata.gz: 4476c99e0fcb47487687ae2b423e31e7b4eb13279853cd08525c77bbde688905d6a20ebb94f1c6e18c6715a11046f56f3be66f6569d4efee4187f9ae35bb58b5
7
+ data.tar.gz: ff9103a5e53aeaa7b3c14db4d3b30b1096072d06a044b995837e0bc894579d8c3735c2ab61d186ca8d8bf294a0d6da95c44af536fb367467671df6d8777ba28e
data/README.md CHANGED
@@ -365,11 +365,8 @@ you may create a partial inside a `table_sortable` folder nested inside the cont
365
365
  Notice that in this case you need to manually specify the different data attributes that correspond to the behaviour you wish this column to have.
366
366
 
367
367
  The view will be supplied with four locals:
368
- - `source`: the source ActiveRecord object
369
- - `content`: the column's content to be displayed
370
- - `value`: the column's value
368
+ - `record`: the source ActiveRecord object
371
369
  - `column`: the TableSortable::Column object
372
- - `index`: the column's index (useful for manually setting the `data-col` attribute)
373
370
 
374
371
  Here is an example of a full name column partial, in which the name links to the edit_user_path:
375
372
  ```erb
@@ -1,7 +1,7 @@
1
1
  module TableSortable
2
2
  class Column
3
3
 
4
- attr_reader :name, :label, :filter, :sorter, :template, :placeholder, :content, :translation_key, :options, :template_path, :column_partial, :header_partial
4
+ attr_reader :name, :label, :filter, :sorter, :template, :placeholder, :content, :translation_key, :options, :template_path
5
5
 
6
6
  def initialize(col_name, *options)
7
7
 
@@ -14,7 +14,6 @@ module TableSortable
14
14
  placeholder = options[:placeholder] || (options[:placeholder] == false ? nil : label)
15
15
  template = options[:template] || col_name
16
16
  column_options = options[:options] || {}
17
- controller = options[:controller]
18
17
 
19
18
  @name = col_name
20
19
  @value = value.respond_to?(:call) ? value : -> (record) { record.send(value) }
@@ -23,14 +22,7 @@ module TableSortable
23
22
  @placeholder = placeholder
24
23
  @template = template
25
24
  @template_path = template_path
26
-
27
- view_path = @template_path || (defined?(Rails) ? File.join("#{controller.controller_path}/table_sortable/") : '')
28
-
29
- view_filename = "#{@template}_column.html"
30
- @column_partial = controller.lookup_context.find_all(File.join(view_path, "_#{view_filename}")).any? ? File.join(view_path, "#{view_filename}") : false
31
-
32
- view_filename = "#{@template}_header.html"
33
- @header_partial = controller.lookup_context.find_all(File.join(view_path, "_#{view_filename}")).any? ? File.join(view_path, "#{view_filename}") : false
25
+ @translation_key = translation_key
34
26
 
35
27
  @options = column_options
36
28
  @filter = TableSortable::Column::Filter.new(options.merge(:column => self) )
@@ -1,3 +1,3 @@
1
1
  module TableSortable
2
- VERSION = "1.0.0-alpha.1"
2
+ VERSION = "1.0.0-alpha.2"
3
3
  end
@@ -35,8 +35,11 @@ module TableSortable
35
35
  th_options['data-value'] = col.filter.default_value if col.filter.default_value
36
36
  th_options.merge!(html_options)
37
37
 
38
- if col.header_partial
39
- render partial: col.header_partial,
38
+ view_path = col.template_path || (defined?(Rails) ? File.join("#{controller.controller_path}/table_sortable/") : '')
39
+ view_filename = "#{col.template}_header.html"
40
+ if controller.lookup_context.find_all(File.join(view_path, "_#{view_filename}")).any?
41
+
42
+ render partial: File.join(view_path, "#{view_filename}"),
40
43
  locals: {label: col.label,
41
44
  column: col,
42
45
  index: index}
@@ -48,7 +51,7 @@ module TableSortable
48
51
  end.join.html_safe
49
52
  end
50
53
 
51
- def table_sortable_columns(record, row_number, html_options = {})
54
+ def table_sortable_columns(record, row_number = nil, html_options = {})
52
55
  controller.columns.map.with_index do |col, index|
53
56
  value = col.value(record)
54
57
  content = col.content(record)
@@ -56,8 +59,10 @@ module TableSortable
56
59
  td_options['data-text'] = value if value != content
57
60
  td_options.merge!(html_options)
58
61
 
59
- if col.column_partial
62
+ if row_number && @column_html[col.name]
60
63
  @column_html[col.name][row_number]
64
+ elsif row_number.nil? && (col_partial = partial_for(col))
65
+ render partial: col_partial, locals: {column: col, record: record}
61
66
  else
62
67
  content_tag :td, td_options do
63
68
  content
@@ -68,11 +73,22 @@ module TableSortable
68
73
 
69
74
  def table_sortable_rows(layout, collection, html_options = {})
70
75
  @column_html = {}
71
- controller.columns.select{|col| col.column_partial}.each do |col|
72
- @column_html[col.name] = []
73
- render partial: col.column_partial, collection: collection, as: :record, layout: '/table_sortable/capture_column.html.erb', locals: {column: col}
76
+ controller.columns.each do |col|
77
+ col_partial = partial_for(col)
78
+ if col_partial
79
+ @column_html[col.name] = []
80
+ render partial: col_partial, collection: collection, as: :record, layout: '/table_sortable/capture_column.html.erb', locals: {column: col}
81
+ end
74
82
  end
75
83
  render partial: '/table_sortable/row.html.erb', layout: layout, collection: collection, as: :record, locals: {html_options: html_options}
76
84
  end
85
+
86
+ private
87
+
88
+ def partial_for(col)
89
+ view_path = col.template_path || (defined?(Rails) ? File.join("#{controller.controller_path}/table_sortable/") : '')
90
+ view_filename = "#{col.template}_column.html"
91
+ File.join(view_path, "#{view_filename}") if controller.lookup_context.find_all(File.join(view_path, "_#{view_filename}")).any?
92
+ end
77
93
  end
78
94
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: table_sortable
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.pre.alpha.1
4
+ version: 1.0.0.pre.alpha.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oded Davidov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-09 00:00:00.000000000 Z
11
+ date: 2017-07-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler