tabulatr2 0.8.1 → 0.8.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +0 -0
- data/Gemfile +1 -1
- data/README.md +3 -3
- data/app/views/tabulatr/_tabulatr_table.html.slim +3 -2
- data/lib/tabulatr/data/data.rb +4 -0
- data/lib/tabulatr/data/dsl.rb +12 -8
- data/lib/tabulatr/data/formatting.rb +2 -7
- data/lib/tabulatr/renderer/column.rb +1 -1
- data/lib/tabulatr/renderer/renderer.rb +3 -2
- data/lib/tabulatr/version.rb +1 -1
- metadata +2 -2
- data/Changelog.textile +0 -124
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b1dc69e34a9977e78a0969398cdbbb39bd2601f4
|
4
|
+
data.tar.gz: b4c0b9bd6cb6e97829767fc3f2a85942e49cfb11
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f4fa0da835396c1cc9e355559a74934e723a00fccbc26e5db23bd84ff2b603c198f0cf9b74126f5a1e9be09e59a37cd1d9e082a276c029adc7e67973228a025b
|
7
|
+
data.tar.gz: 9c33aa54ee60d5035b02e229dcc37c0e9db393261a48ac4aa641a8cf1ba7b7c04e426d0af454cdcbb9a958dac8edfea69067d80179de68158c826a347b431bca
|
data/CHANGELOG.md
ADDED
File without changes
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
|
8
8
|
Require tabulatr2 in your Gemfile:
|
9
9
|
```ruby
|
10
|
-
gem 'tabulatr2', github: 'provideal/tabulatr2'
|
10
|
+
gem 'tabulatr2', github: 'provideal/tabulatr2'
|
11
11
|
```
|
12
12
|
After that run `bundle install`.
|
13
13
|
|
@@ -82,7 +82,7 @@ class ProductTabulatrData < Tabulatr::Data
|
|
82
82
|
filter_sql: "vendors.street || '' || vendors.zipcode || '' vendors.city" do
|
83
83
|
"#{vendor.house_number} #{vendor.street}, #{vendor.zipcode} #{vendor.city}"
|
84
84
|
end
|
85
|
-
column :edit_link do
|
85
|
+
column :edit_link do
|
86
86
|
link_to "edit #{title}", product_path(id)
|
87
87
|
end
|
88
88
|
column :updated_at do
|
@@ -114,7 +114,7 @@ _Hint:_ If you want to prefilter your table, you can do that too! Just pass an `
|
|
114
114
|
|
115
115
|
### View
|
116
116
|
|
117
|
-
In the view we can use all the attributes which are defined in our `ProductTabulatrData` class.
|
117
|
+
In the view we can use all the attributes which are defined in our `ProductTabulatrData` class.
|
118
118
|
|
119
119
|
```erb
|
120
120
|
<%= table_for Product do |t|
|
@@ -36,8 +36,9 @@
|
|
36
36
|
.tabulatr-info-string-wrapper data-table-id=table_id
|
37
37
|
= render '/tabulatr/tabulatr_info_string', opts
|
38
38
|
|
39
|
-
.
|
40
|
-
|
39
|
+
- if tabulatr_data.search?
|
40
|
+
.tabulatr-fuzzy-search-field-wrapper data-table-id=table_id
|
41
|
+
= render '/tabulatr/tabulatr_fuzzy_search_field', opts
|
41
42
|
|
42
43
|
.tabulatr-filter-dialog-wrapper data-table-id=table_id
|
43
44
|
= render '/tabulatr/tabulatr_filter_dialog', opts
|
data/lib/tabulatr/data/data.rb
CHANGED
data/lib/tabulatr/data/dsl.rb
CHANGED
@@ -25,30 +25,34 @@ module Tabulatr::Data::DSL
|
|
25
25
|
|
26
26
|
def column(name, sort_sql: nil, filter_sql: nil, sql: nil, table_column_options: {}, &block)
|
27
27
|
@columns ||= HashWithIndifferentAccess.new
|
28
|
+
table_column = Tabulatr::Renderer::Column.from(table_column_options.merge(name: name, klass: @base))
|
29
|
+
@table_columns ||= Tabulatr::Renderer::Columns.new(nil)
|
30
|
+
@table_columns << table_column
|
31
|
+
|
28
32
|
@columns[name.to_sym] = {
|
29
33
|
name: name,
|
30
34
|
sort_sql: sort_sql || sql,
|
31
35
|
filter_sql: filter_sql || sql,
|
32
|
-
output: block
|
36
|
+
output: block,
|
37
|
+
table_column: table_column
|
33
38
|
}
|
34
|
-
|
35
|
-
@table_columns ||= Tabulatr::Renderer::Columns.new(nil)
|
36
|
-
@table_columns << Tabulatr::Renderer::Column.from(table_column_options.merge(name: name))
|
37
39
|
end
|
38
40
|
|
39
41
|
def association(assoc, name, sort_sql: nil, filter_sql: nil, sql: nil, table_column_options: {}, &block)
|
40
42
|
@table_columns ||= Tabulatr::Renderer::Columns.new
|
41
43
|
@assocs ||= HashWithIndifferentAccess.new
|
42
44
|
@assocs[assoc.to_sym] ||= {}
|
45
|
+
@table_columns ||= Tabulatr::Renderer::Columns.new(nil)
|
46
|
+
table_column = Tabulatr::Renderer::Association.from(table_column_options.merge(name: name, table_name: assoc, klass: @base))
|
47
|
+
@table_columns << table_column
|
48
|
+
|
43
49
|
@assocs[assoc.to_sym][name.to_sym] = {
|
44
50
|
name: name,
|
45
51
|
sort_sql: sort_sql || sql,
|
46
52
|
filter_sql: filter_sql || sql,
|
47
|
-
output: block
|
53
|
+
output: block,
|
54
|
+
table_column: table_column
|
48
55
|
}
|
49
|
-
|
50
|
-
@table_columns ||= Tabulatr::Renderer::Columns.new(nil)
|
51
|
-
@table_columns << Tabulatr::Renderer::Association.from(table_column_options.merge(name: name, table_name: assoc))
|
52
56
|
end
|
53
57
|
|
54
58
|
def search(*args, &block)
|
@@ -45,18 +45,13 @@ module Tabulatr::Data::Formatting
|
|
45
45
|
if opts[:output]
|
46
46
|
view.instance_exec(record, &opts[:output])
|
47
47
|
else
|
48
|
-
|
48
|
+
opts[:table_column].value_for(record, view)
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
52
52
|
def format_association(record, table_name, name, opts, view)
|
53
53
|
return view.instance_exec(record, &opts[:output]) if opts[:output]
|
54
|
-
|
55
|
-
val = if assoc.collection?
|
56
|
-
record.try(table_name).try(:map, &name).join(', ')
|
57
|
-
else
|
58
|
-
record.try(table_name).try(:send, name)
|
59
|
-
end
|
54
|
+
opts[:table_column].value_for(record, view)
|
60
55
|
end
|
61
56
|
|
62
57
|
|
@@ -26,7 +26,7 @@ class Tabulatr::Renderer::Column
|
|
26
26
|
|
27
27
|
attr_accessor *%i{name header width align valign wrap type th_html filter_html
|
28
28
|
filter checkbox_value checkbox_label filter_width range_filter_symbol
|
29
|
-
sortable
|
29
|
+
sortable table_name block klass format map}
|
30
30
|
|
31
31
|
def self.from(
|
32
32
|
name: nil,
|
@@ -48,10 +48,10 @@ class Tabulatr::Renderer
|
|
48
48
|
end
|
49
49
|
|
50
50
|
def build_table(&block)
|
51
|
+
tdc = "#{@klass.name}TabulatrData".constantize.new(@klass)
|
51
52
|
if block_given?
|
52
53
|
@columns = ColumnsFromBlock.process @klass, &block
|
53
54
|
else
|
54
|
-
tdc = "#{@klass.name}TabulatrData".constantize.new(@klass)
|
55
55
|
@columns = tdc.table_columns
|
56
56
|
end
|
57
57
|
|
@@ -59,7 +59,8 @@ class Tabulatr::Renderer
|
|
59
59
|
columns: @columns,
|
60
60
|
table_options: @table_options,
|
61
61
|
klass: @klass,
|
62
|
-
classname: @classname
|
62
|
+
classname: @classname,
|
63
|
+
tabulatr_data: tdc
|
63
64
|
})
|
64
65
|
end
|
65
66
|
|
data/lib/tabulatr/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tabulatr2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Horn
|
@@ -65,7 +65,7 @@ files:
|
|
65
65
|
- .gitignore
|
66
66
|
- .rspec
|
67
67
|
- .travis.yml
|
68
|
-
-
|
68
|
+
- CHANGELOG.md
|
69
69
|
- Gemfile
|
70
70
|
- LICENSE
|
71
71
|
- README.md
|
data/Changelog.textile
DELETED
@@ -1,124 +0,0 @@
|
|
1
|
-
h1. Changelog for tabulatr
|
2
|
-
|
3
|
-
* Fixed <tt>:filter_width</tt> not working for <tt>select</tt> filters.
|
4
|
-
* Giving a Hash as <tt>:format</tt> option gives the corresponding value.
|
5
|
-
* We now allow column presets:
|
6
|
-
<pre>
|
7
|
-
Tabulatr.config do |config|
|
8
|
-
#...
|
9
|
-
config.column_presets({
|
10
|
-
config.column_presets({
|
11
|
-
:action_column => {:width => '100px'},
|
12
|
-
:smallint => { :width => '55px', :filter_width => '30px', :align => 'right' },
|
13
|
-
:id => :smallint,
|
14
|
-
:sid => { :width => '200px', :filter_width => '170px', :filter => :like },
|
15
|
-
:title => { :filter => :like },
|
16
|
-
:count => { :map => false, :width => '40px', :filter => false, :align => 'right' },
|
17
|
-
:moo => { :width => '155px', :filter_width => '120px', :align => 'right' }
|
18
|
-
})
|
19
|
-
end
|
20
|
-
</pre>
|
21
|
-
|
22
|
-
Now, every column will check whether there is as entry corresponding to its name in this table and get the content as 'default' options.
|
23
|
-
|
24
|
-
<pre>
|
25
|
-
<%= table_for @regions do |t|
|
26
|
-
t.column :id
|
27
|
-
t.column :sid
|
28
|
-
# ...
|
29
|
-
end %>
|
30
|
-
</pre>
|
31
|
-
|
32
|
-
so, the :id column has all the options defined above. The :action_column entry is used for 'action' columns.
|
33
|
-
|
34
|
-
But even better, you can use arbitrary presets:
|
35
|
-
|
36
|
-
<pre>
|
37
|
-
t.column :foo, :preset => :moo
|
38
|
-
</pre>
|
39
|
-
|
40
|
-
gets the :moo preset.
|
41
|
-
|
42
|
-
h2. 0.4.2
|
43
|
-
|
44
|
-
* Fixed two more bugs breaking ruby 1.8 compatibility. (Thanks to <a href="https://github.com/moabite">moabite</a> for reporting)
|
45
|
-
|
46
|
-
h2. 0.4.1
|
47
|
-
|
48
|
-
* Fixed a "bug" breaking ruby 1.8 compatibility. (Thanks to <a href="https://github.com/moabite">moabite</a> for reporting)
|
49
|
-
|
50
|
-
h2. 0.4.0
|
51
|
-
|
52
|
-
* Mongoid now really works.
|
53
|
-
* A lot of cleanup in the finder code (million thanks to <a href="https://github.com/plukevdh">plukevdh</a>)
|
54
|
-
* You can use <tt>table_for</tt> for 'normal' arrays that weren't found with <tt>find_for_table</tt>.
|
55
|
-
* Added a :name_mapping option to find_for_table to allow filtering by compund expressions, example:
|
56
|
-
|
57
|
-
<pre>
|
58
|
-
@customers = Customer.find_for_table(params,
|
59
|
-
name_mapping: {
|
60
|
-
name: '("addresses"."firstname" || \' \' || "addresses"."lastname")',
|
61
|
-
address: '("addresses"."street" || \' \' || "addresses"."zip_code" || \' \' || "addresses"."city")'
|
62
|
-
},
|
63
|
-
default_order: 'updated_at desc'
|
64
|
-
)
|
65
|
-
</pre>
|
66
|
-
|
67
|
-
* Added Mysql2Adapter to the ActiveRecord connection list (thanks to <a href="https://github.com/AaronLasseigne">AaronLasseigne</a>).
|
68
|
-
* Monkeypatch mongoid only if it is present. (thanks to <a href="https://github.com/rwz">rwz</a>)
|
69
|
-
|
70
|
-
h2. 0.3.0
|
71
|
-
|
72
|
-
* Converted into a Rails 3.1 engine and moved css and images to use the new asset pipeline. Works with 3.0.x -- 'opefully. Thanks to all that reported the problem.
|
73
|
-
* Header cells are now auto translated. Thanks to <a href="https://github.com/niedhui">niedhui</a>!
|
74
|
-
|
75
|
-
h2. 0.2.1
|
76
|
-
|
77
|
-
* Fixed a ruby 1.8 syntax issue. (Thanks to <a href="https://github.com/TBAA">TBAA</a> for reporting.)
|
78
|
-
|
79
|
-
h2. 0.2.0
|
80
|
-
|
81
|
-
* Mongoid can also be used in place of ActiveRecord
|
82
|
-
* fixed handling of the primary_key column and name
|
83
|
-
* Added dom_id to tables tr. Thanks to <a href="https://github.com/sterrym">sterrym (Tim Glen)</a>!
|
84
|
-
* Added note on "Request-URI Too Large error" to README
|
85
|
-
|
86
|
-
h2. 0.1.3
|
87
|
-
|
88
|
-
* nicer table headers. Thanks to <a href="https://github.com/troya2" target="_blank">troya2 (Troy Anderson)</a>!
|
89
|
-
|
90
|
-
h2. 0.1.2
|
91
|
-
|
92
|
-
* Fixed bug with nil exception on 'empty' belongs_to association. Thanks to <a href="https://github.com/dgm" target="_blank">dgm</a>!
|
93
|
-
|
94
|
-
h2. 0.1.1
|
95
|
-
|
96
|
-
* Fixed bug with "Select ..." buttons introduced in 0.1.0.
|
97
|
-
* Added tests for these buttons.
|
98
|
-
|
99
|
-
h2. v0.1.0
|
100
|
-
|
101
|
-
* new <tt>find_for_table</tt> option <tt>:stateful</tt>. If
|
102
|
-
|
103
|
-
<pre>
|
104
|
-
MyFancyModel.find_for_table params, :stateful => session
|
105
|
-
</pre>
|
106
|
-
|
107
|
-
is given, the current sorting, filtering, selecting and paging information is stored to the session and restored when reopened. Great for procession specifically filtered lists.
|
108
|
-
|
109
|
-
h2. v0.0.5 (2011-03-28)
|
110
|
-
|
111
|
-
* new column option :map (defaults to true) to disable automatic mapping on the enries of the association as in
|
112
|
-
|
113
|
-
<pre>
|
114
|
-
<%= table_for @products do |t|
|
115
|
-
...
|
116
|
-
t.association :tags, :title # mapped to all tags
|
117
|
-
t.association :tags, :count, :map => false # called on the list-of-tags
|
118
|
-
end %>
|
119
|
-
</pre>
|
120
|
-
|
121
|
-
|
122
|
-
h2. v0.0.4 (2011-03-27)
|
123
|
-
|
124
|
-
* fixed the path to paging/sorting images installed by generator. Thanks to <a href="https://github.com/sdsykes" target="_blank">sdsykes</a>!
|