ct_table_for 0.1.12.beta → 0.1.13.beta
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +22 -0
- data/app/assets/javascripts/table_for.js +20 -0
- data/app/assets/stylesheets/table_for.scss.erb +10 -0
- data/app/helpers/ct_table_for/application_helper.rb +17 -6
- data/lib/ct_table_for/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d919b7dfe484a4150f43f2a2679fafc718b80e1
|
4
|
+
data.tar.gz: 7b86f06ecafbca0bc9401aa6f29d50d2ee0e66f4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: facae6310e063ca4d30b2c73beae3ad346e975f5d4f30bc87097a981e7952912d5271682212563100868fa4a18142ca25d006b8fb4f931283a65bf274fa526a5
|
7
|
+
data.tar.gz: 6a0321ab6e28ffad1abb2b67c69d944b2a582a859f7afe38d6ce46e0162fe0a19075e7fafc1e6e52a6cab37363a43b6be9b275022727fa886af858c5f9968592
|
data/README.md
CHANGED
@@ -36,6 +36,12 @@ or in sass
|
|
36
36
|
@import "table_for"
|
37
37
|
```
|
38
38
|
|
39
|
+
And require the necessary javascript in `application.js` if you are using the `clickable` row option (`jQuery` is required):
|
40
|
+
|
41
|
+
```js
|
42
|
+
//= require table_for
|
43
|
+
```
|
44
|
+
|
39
45
|
## Usage
|
40
46
|
|
41
47
|
To get started, just use the `table_for_for` helper. Here's an example:
|
@@ -44,6 +50,22 @@ To get started, just use the `table_for_for` helper. Here's an example:
|
|
44
50
|
<%= table_for Model, @collection %>
|
45
51
|
```
|
46
52
|
|
53
|
+
#### Clickable rows
|
54
|
+
|
55
|
+
To make rows clickable just add corresponding option to `table_for` helper:
|
56
|
+
|
57
|
+
```erb
|
58
|
+
<%= table_for Model, @collection, options: { clickable: true } %>
|
59
|
+
```
|
60
|
+
|
61
|
+
It builds a call to a named RESTful route for a given record from a collection.
|
62
|
+
Also, you can specify your own nested resources path by passing an `array` of symbols:
|
63
|
+
|
64
|
+
```erb
|
65
|
+
<%= table_for Model, @collection, options: { clickable: [:bo, :admin] } %>
|
66
|
+
```
|
67
|
+
|
68
|
+
|
47
69
|
### Customizing
|
48
70
|
|
49
71
|
Create config variables in your app's /config/initializers/ct_table_for.rb
|
@@ -0,0 +1,20 @@
|
|
1
|
+
// Clickable table rows.
|
2
|
+
// Set the class 'table-clickable' in table and
|
3
|
+
// in tr set 'data-link' and (optional) 'data-target'
|
4
|
+
// in td set 'data-link-enabled' to false for disable in specicif cells
|
5
|
+
$('table.table-clickable').each(function(index, table){
|
6
|
+
$(table).find('tbody tr').each(function(index, trow){
|
7
|
+
$(trow).click(function(evnt){
|
8
|
+
var link = $(this).attr('data-link');
|
9
|
+
var linkTarget = $(this).attr('data-target');
|
10
|
+
var linkEnabled = true
|
11
|
+
if( $(evnt.target).attr('data-link-enabled') == 'false' ||
|
12
|
+
$(evnt.target).parents('td[data-link-enabled="false"]').length > 0 ){
|
13
|
+
linkEnabled= false
|
14
|
+
}
|
15
|
+
|
16
|
+
if( !linkTarget ){ linkTarget = '_self'; }
|
17
|
+
if( link && linkEnabled){ window.open(link, linkTarget); }
|
18
|
+
});
|
19
|
+
});
|
20
|
+
});
|
@@ -37,3 +37,13 @@ $table-for-breakpoint: <%= CtTableFor.table_for_breakpoint %> !default;
|
|
37
37
|
}
|
38
38
|
}
|
39
39
|
}
|
40
|
+
|
41
|
+
// clickable options
|
42
|
+
.table-for.table-clickable {
|
43
|
+
tr[data-link] {
|
44
|
+
cursor: pointer;
|
45
|
+
td[data-link-enabled="false"] {
|
46
|
+
cursor: default;
|
47
|
+
}
|
48
|
+
}
|
49
|
+
}
|
@@ -18,13 +18,14 @@ module CtTableFor
|
|
18
18
|
# id: "my-id", // String: adds custom id to <table> element
|
19
19
|
# class: "my-custom-css", // String: add custom class to <table> element
|
20
20
|
# tr_class: "my-custom-css" // String: add custom class to <tr> element
|
21
|
+
# clickable: true || Array // Boolean or Array of nested resources for polymorphic_url
|
21
22
|
#}
|
22
23
|
####################################################################################
|
23
24
|
|
24
25
|
def table_for model, collection, options: {}
|
25
26
|
custom_id = options[:id].present? ? %Q{id="#{options[:id]}"} : ""
|
26
27
|
html = %Q{<div class="table-for-wrapper #{CtTableFor.table_for_wrapper_default_class}">}
|
27
|
-
html << %Q{<table #{custom_id} class="table-for #{CtTableFor.table_for_default_class} #{options[:class]}">}
|
28
|
+
html << %Q{<table #{custom_id} class="table-for #{CtTableFor.table_for_default_class} #{options[:class]} #{("table-clickable") if options[:clickable]}">}
|
28
29
|
html << table_for_header(model, has_actions: options[:actions].present?, options: options)
|
29
30
|
html << table_for_content(model, collection, options: options)
|
30
31
|
html << %Q{</table>}
|
@@ -62,7 +63,7 @@ module CtTableFor
|
|
62
63
|
if collection.present?
|
63
64
|
custom_tr_class = options[:tr_class].present? ? %Q{class="#{options[:tr_class]}"} : ""
|
64
65
|
collection.each do |record|
|
65
|
-
html << %Q{<tr data-colection-id="#{record.try(:id)}" #{custom_tr_class}>}
|
66
|
+
html << %Q{<tr data-colection-id="#{record.try(:id)}" #{custom_tr_class} #{row_data_link(record, options)}>}
|
66
67
|
table_for_attributes(model, options).each do |attribute|
|
67
68
|
attribute, *params = attribute.split(":")
|
68
69
|
html << table_for_cell( model, record, attribute, cell_options: params )
|
@@ -81,6 +82,16 @@ module CtTableFor
|
|
81
82
|
html.html_safe
|
82
83
|
end
|
83
84
|
|
85
|
+
def row_data_link(record, options)
|
86
|
+
return unless options[:clickable]
|
87
|
+
if options[:clickable].kind_of?(Array)
|
88
|
+
nested_resources = (options[:clickable] || []) + [record]
|
89
|
+
else
|
90
|
+
nested_resources = record
|
91
|
+
end
|
92
|
+
"data-link =" << polymorphic_url(nested_resources)
|
93
|
+
end
|
94
|
+
|
84
95
|
def table_for_cell model, record, attribute, cell_options: {}
|
85
96
|
html = ""
|
86
97
|
value = record.try(attribute.to_sym)
|
@@ -125,8 +136,8 @@ module CtTableFor
|
|
125
136
|
html << value.to_s
|
126
137
|
else
|
127
138
|
html << value.to_s.truncate(
|
128
|
-
CtTableFor.table_for_truncate_length,
|
129
|
-
separator: CtTableFor.table_for_truncate_separator,
|
139
|
+
CtTableFor.table_for_truncate_length,
|
140
|
+
separator: CtTableFor.table_for_truncate_separator,
|
130
141
|
omission: CtTableFor.table_for_truncate_omission
|
131
142
|
)
|
132
143
|
end
|
@@ -143,7 +154,7 @@ module CtTableFor
|
|
143
154
|
html << image_tag(record.send(attribute).url(size), class: CtTableFor.table_for_cell_for_image_image_class, style: "max-height: 100px;")
|
144
155
|
html.html_safe
|
145
156
|
end
|
146
|
-
|
157
|
+
|
147
158
|
def table_for_cell_for_locale model, attribute, value, cell_options: {}
|
148
159
|
html = model.human_attribute_name("#{attribute.underscore}.#{value.underscore}")
|
149
160
|
end
|
@@ -152,7 +163,7 @@ module CtTableFor
|
|
152
163
|
def table_for_actions(record, options: {} )
|
153
164
|
return "" if options[:actions].blank?
|
154
165
|
html = ""
|
155
|
-
html << %Q{<td>}
|
166
|
+
html << %Q{<td data-link-enabled="false">}
|
156
167
|
html << %Q{<div class="btn-group btn-group-sm" role="group" aria-label="#{I18n.t(:actions, scope: [:table_for]).capitalize}">}
|
157
168
|
nesting = (options[:actions][:premodel] || []) + [record]
|
158
169
|
buttons, *btn_options = options[:actions][:buttons].split(":")
|
data/lib/ct_table_for/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ct_table_for
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.13.beta
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Agustí B.R.
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2017-
|
13
|
+
date: 2017-11-13 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|
@@ -38,6 +38,7 @@ files:
|
|
38
38
|
- LICENSE
|
39
39
|
- README.md
|
40
40
|
- Rakefile
|
41
|
+
- app/assets/javascripts/table_for.js
|
41
42
|
- app/assets/stylesheets/table_for.scss.erb
|
42
43
|
- app/helpers/ct_table_for/application_helper.rb
|
43
44
|
- config/locales/ca.yml
|