Module: EffectiveDatatablesHelper
- Defined in:
- app/helpers/effective_datatables_helper.rb
Overview
These are expected to be called by a developer. They are part of the datatables DSL.
Instance Method Summary collapse
- #render_datatable(datatable, input_js: {}, buttons: true, charts: true, filters: true, simple: false) ⇒ Object
- #render_datatable_chart(datatable, name) ⇒ Object
- #render_datatable_charts(datatable) ⇒ Object
- #render_datatable_filters(datatable) ⇒ Object
- #render_simple_datatable(datatable) ⇒ Object
Instance Method Details
#render_datatable(datatable, input_js: {}, buttons: true, charts: true, filters: true, simple: false) ⇒ Object
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 |
# File 'app/helpers/effective_datatables_helper.rb', line 4 def render_datatable(datatable, input_js: {}, buttons: true, charts: true, filters: true, simple: false) raise 'expected datatable to be present' unless datatable datatable.view ||= self unless EffectiveDatatables.(controller, :index, datatable.collection_class) 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?) datatable.attributes[:simple] = true if simple input_js[:buttons] = false if simple || ! effective_datatable_params = { id: datatable.to_param, class: ('effective-datatable ' + Array(datatable.table_html_class).join(' ')), data: { 'bulk-actions' => datatable_bulk_actions(datatable), 'columns' => datatable_columns(datatable), 'cookie' => datatable., '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, 'options' => (input_js || {}).to_json.html_safe, 'reset' => datatable_reset(datatable), 'simple' => datatable.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 render(partial: 'effective/datatables/datatable', locals: { datatable: datatable, effective_datatable_params: effective_datatable_params } ) end end |
#render_datatable_chart(datatable, name) ⇒ Object
104 105 106 107 108 109 110 111 112 113 114 |
# File 'app/helpers/effective_datatables_helper.rb', line 104 def render_datatable_chart(datatable, name) raise 'expected datatable to be present' unless datatable datatable.view ||= self return unless datatable._charts[name].present? chart = datatable._charts[name] chart_data = datatable.to_json[:charts][name][:data] render partial: chart[:partial], locals: { datatable: datatable, chart: chart, chart_data: chart_data } end |
#render_datatable_charts(datatable) ⇒ Object
95 96 97 98 99 100 101 102 |
# File 'app/helpers/effective_datatables_helper.rb', line 95 def render_datatable_charts(datatable) raise 'expected datatable to be present' unless datatable datatable.view ||= self return unless datatable._charts.present? datatable._charts.map { |name, _| render_datatable_chart(datatable, name) }.join.html_safe end |
#render_datatable_filters(datatable) ⇒ Object
81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'app/helpers/effective_datatables_helper.rb', line 81 def render_datatable_filters(datatable) raise 'expected datatable to be present' unless datatable datatable.view ||= self return unless datatable._scopes.present? || datatable._filters.present? if datatable._filters_form_required? render partial: 'effective/datatables/filters', locals: { datatable: datatable } else render(partial: 'effective/datatables/filters', locals: { datatable: datatable }).gsub('<form', '<div').gsub('/form>', '/div>').html_safe end end |
#render_simple_datatable(datatable) ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'app/helpers/effective_datatables_helper.rb', line 61 def render_simple_datatable(datatable) raise 'expected datatable to be present' unless datatable datatable.view ||= self unless EffectiveDatatables.(controller, :index, datatable.collection_class) return content_tag(:p, "You are not authorized to view this datatable. (cannot :index, #{datatable.collection_class})") end effective_datatable_params = { id: datatable.to_param, class: ('effective-datatable simple ' + Array(datatable.table_html_class).join(' ')), data: {} } render(partial: 'effective/datatables/datatable', locals: { datatable: datatable, effective_datatable_params: effective_datatable_params } ) end |