4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
# File 'app/helpers/effective_datatables_helper.rb', line 4
def render_datatable(datatable, input_js: {}, charts: true, filters: true, simple: false)
raise 'expected datatable to be present' unless datatable
datatable.view ||= self
begin
EffectiveDatatables.authorized?(controller, :index, datatable.collection_class) || raise(Effective::AccessDenied)
rescue Effective::AccessDenied => e
return content_tag(:p, "You are not authorized to view this datatable. (cannot :index, #{datatable.collection_class})")
end
charts = charts && datatable._charts.present?
filters = filters && (datatable._scopes.present? || datatable._filters.present?)
effective_datatable_params = {
id: datatable.to_param,
class: Array(datatable.table_html_class).join(' '),
data: {
'effective-form-inputs' => defined?(EffectiveFormInputs),
'bulk-actions' => datatable_bulk_actions(datatable),
'columns' => datatable_columns(datatable),
'cookie' => datatable.cookie_name,
'display-length' => datatable.display_length,
'display-order' => [datatable.order_index, datatable.order_direction].to_json().html_safe,
'display-records' => datatable.to_json[:recordsFiltered],
'display-start' => datatable.display_start,
'input-js-options' => (input_js || {}).to_json.html_safe,
'reset' => datatable_reset(datatable),
'simple' => simple.to_s,
'source' => effective_datatables.datatable_path(datatable, {format: 'json'}),
'total-records' => datatable.to_json[:recordsTotal]
}
}
if (charts || filters) && !simple
output = ''.html_safe
if charts
datatable._charts.each { |name, _| output << render_datatable_chart(datatable, name) }
end
if filters
output << render_datatable_filters(datatable)
end
output << render(partial: 'effective/datatables/datatable',
locals: { datatable: datatable, effective_datatable_params: effective_datatable_params }
)
output
else
datatable.attributes[:simple] = true if simple
render(partial: 'effective/datatables/datatable',
locals: { datatable: datatable, effective_datatable_params: effective_datatable_params }
)
end
end
|