Class: Ez::Resources::CollectionCell
- Inherits:
-
ApplicationCell
show all
- Includes:
- Pagy::Frontend, Ransack::Helpers::FormHelper
- Defined in:
- app/cells/ez/resources/collection_cell.rb
Constant Summary
ApplicationCell::CSS_SCOPE
Instance Method Summary
collapse
#css_for, #custom_css_map, #div_for, form, #t
Instance Method Details
#as_a_link(record, column) ⇒ Object
74
75
76
77
78
79
|
# File 'app/cells/ez/resources/collection_cell.rb', line 74
def as_a_link(record, column)
return unless model.actions.include?(:show)
return unless Manager::Hooks.can?(:can_read?, model, record)
link_to record.public_send(column.name), model.path_for(action: :show, id: record.id)
end
|
#collection ⇒ Object
19
20
21
|
# File 'app/cells/ez/resources/collection_cell.rb', line 19
def collection
@collection ||= model.data
end
|
#column_title(column) ⇒ Object
118
119
120
|
# File 'app/cells/ez/resources/collection_cell.rb', line 118
def column_title(column)
column.sortable ? sort_link(search, column.name, column.title) : column.title
end
|
#edit_link(record) ⇒ Object
81
82
83
84
85
86
87
|
# File 'app/cells/ez/resources/collection_cell.rb', line 81
def edit_link(record)
return unless model.actions.include?(:edit)
return unless Manager::Hooks.can?(:can_read?, model, record)
link_to t('actions.edit'), model.path_for(action: :edit, id: record.id),
class: css_for('collection-table-td-action-item')
end
|
23
24
25
|
# File 'app/cells/ez/resources/collection_cell.rb', line 23
def
resources_name
end
|
#new_link ⇒ Object
59
60
61
62
63
64
|
# File 'app/cells/ez/resources/collection_cell.rb', line 59
def new_link
return unless model.actions.include?(:new)
return unless Manager::Hooks.can?(:can_create?, model)
link_to t('actions.add'), model.path_for(action: :new), class: css_for('actions-new-link')
end
|
98
99
100
101
102
103
104
|
# File 'app/cells/ez/resources/collection_cell.rb', line 98
def
if Ez::Resources.config.
instance_exec paginator, &Ez::Resources.config.
else
pagy_nav(paginator)
end
end
|
#record_column_value(record, column) ⇒ Object
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# File 'app/cells/ez/resources/collection_cell.rb', line 27
def record_column_value(record, column)
result = case column.type
when :association
column.getter.call(record)
when :boolean
maybe_use_custom_boolean_presenter(record.public_send(column.name))
when :custom
column.builder.call(record)
when :image
url = column.getter.call(record)
image_tag url, column.options if url
when :link
as_a_link(record, column)
else
record.public_send(column.name)
end
result = column.presenter.call(record) if column.presenter
result
end
|
#record_tr(record, &block) ⇒ Object
49
50
51
52
53
54
55
56
57
|
# File 'app/cells/ez/resources/collection_cell.rb', line 49
def record_tr(record, &block)
if model.actions.include?(:show) && Manager::Hooks.can?(:can_read?, model, record)
content_tag :tr,
class: css_for('collection-table-tr'), id: "#{model.model.name.demodulize.pluralize.downcase}-#{record.id}", data: { link: model.path_for(action: :show, id: record.id).to_s }, &block
else
content_tag :tr,
class: css_for('collection-table-tr'), id: "#{model.model.name.demodulize.pluralize.downcase}-#{record.id}", &block
end
end
|
#remove_link(record) ⇒ Object
89
90
91
92
93
94
95
96
|
# File 'app/cells/ez/resources/collection_cell.rb', line 89
def remove_link(record)
return unless model.actions.include?(:destroy)
return unless Manager::Hooks.can?(:can_destroy?, model, record)
link_to t('actions.remove'), model.path_for(action: :destroy, id: record.id),
method: :delete,
class: css_for('collection-table-td-action-item')
end
|
#show ⇒ Object
11
12
13
14
15
16
17
|
# File 'app/cells/ez/resources/collection_cell.rb', line 11
def show
if model.params[:view]
render params[:view]
else
render :table
end
end
|
#show_link(record) ⇒ Object
66
67
68
69
70
71
72
|
# File 'app/cells/ez/resources/collection_cell.rb', line 66
def show_link(record)
return unless model.actions.include?(:show)
return unless Manager::Hooks.can?(:can_read?, model, record)
link_to t('actions.show'), model.path_for(action: :show, id: record.id),
class: css_for('collection-table-td-action-item')
end
|
#view_switch_link(view_name) ⇒ Object
106
107
108
109
110
111
112
113
114
115
116
|
# File 'app/cells/ez/resources/collection_cell.rb', line 106
def view_switch_link(view_name)
return unless model.collection_views.present?
params = model.params.to_unsafe_hash.slice(:q, :page, :s).symbolize_keys.merge(view: view_name)
selected = css_for('collection-view-selected-link') if model.params[:view] == view_name.to_s
link_to model.path_for(action: :index, params: params), id: "ez-view-#{view_name}",
class: css_for("collection-view-link-#{view_name}", selected) do
content_tag :i, nil, class: css_for("collection-view-link-#{view_name}-icon")
end
end
|