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: {}, charts: true, filters: true, simple: false) ⇒ Object
- #render_datatable_chart(datatable, name) ⇒ Object
- #render_datatable_charts(datatable) ⇒ Object
- #render_datatable_filters(datatable) ⇒ Object
Instance Method Details
#render_datatable(datatable, input_js: {}, 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 60 |
# 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.(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: datatable.table_html_class, data: { 'effective-form-inputs' => defined?(EffectiveFormInputs), 'bulk-actions' => datatable_bulk_actions(datatable), 'columns' => datatable_columns(datatable), 'display-length' => datatable.display_length, 'display-order' => [datatable.order_index, datatable.order_direction].to_json(), 'display-records' => datatable.to_json[:recordsFiltered], 'display-start' => datatable.display_start, 'input-js-options' => (input_js || {}).to_json, '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 datatable.attributes[:simple] = true if simple render(partial: 'effective/datatables/datatable', locals: { datatable: datatable, effective_datatable_params: effective_datatable_params } ) end end |
#render_datatable_chart(datatable, name) ⇒ Object
85 86 87 88 89 90 91 92 93 94 95 |
# File 'app/helpers/effective_datatables_helper.rb', line 85 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
76 77 78 79 80 81 82 83 |
# File 'app/helpers/effective_datatables_helper.rb', line 76 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
62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'app/helpers/effective_datatables_helper.rb', line 62 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 |