Module: Effective::EffectiveDatatable::Ajax
- Included in:
- Datatable
- Defined in:
- app/models/effective/effective_datatable/ajax.rb
Instance Method Summary collapse
- #display_entries ⇒ Object
-
#display_table_columns ⇒ Object
This is for the ColReorder plugin It sends us a list of columns that are different than our table_columns order So this method just returns an array of column names, as per ColReorder.
- #order_direction ⇒ Object
- #order_index ⇒ Object
- #order_name ⇒ Object
- #page ⇒ Object
- #per_page ⇒ Object
- #per_page=(length) ⇒ Object
- #search_terms ⇒ Object
Instance Method Details
#display_entries ⇒ Object
48 49 50 51 52 53 54 |
# File 'app/models/effective/effective_datatable/ajax.rb', line 48 def display_entries @display_entries ||= begin entries = (@default_entries.presence || EffectiveDatatables.default_entries) entries = -1 if entries.to_s.downcase == 'all' [10, 25, 50, 100, 250, 1000, -1].include?(entries) ? entries : 25 end end |
#display_table_columns ⇒ Object
This is for the ColReorder plugin It sends us a list of columns that are different than our table_columns order So this method just returns an array of column names, as per ColReorder
10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'app/models/effective/effective_datatable/ajax.rb', line 10 def display_table_columns return nil if params[:columns].blank? @display_table_columns ||= ( {}.tap do |retval| params[:columns].each do |_, column| retval[column[:name]] = table_columns[column[:name]] # Same order as ColReordernow retval[column[:name]][:visible] = (column[:visible] == 'true') # As per ColVis end end ) end |
#order_direction ⇒ Object
38 39 40 41 42 43 44 45 46 |
# File 'app/models/effective/effective_datatable/ajax.rb', line 38 def order_direction @order_direction ||= if params[:order].present? params[:order]['0'][:dir] == 'desc' ? :desc : :asc elsif @default_order.present? @default_order.values.first.to_s.downcase == 'desc' ? :desc : :asc else :asc end end |
#order_index ⇒ Object
34 35 36 |
# File 'app/models/effective/effective_datatable/ajax.rb', line 34 def order_index (table_columns[order_name][:index] || 0) rescue 0 end |
#order_name ⇒ Object
23 24 25 26 27 28 29 30 31 32 |
# File 'app/models/effective/effective_datatable/ajax.rb', line 23 def order_name @order_name ||= begin if params[:order] && params[:columns] order_by_column_index = (params[:order]['0'][:column] rescue '0') (params[:columns][order_by_column_index] || {})[:name] elsif @default_order.present? @default_order.keys.first end || table_columns.find { |col, opts| opts[:type] != :bulk_actions_column }.first end end |
#page ⇒ Object
95 96 97 |
# File 'app/models/effective/effective_datatable/ajax.rb', line 95 def page params[:start].to_i / per_page + 1 end |
#per_page ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'app/models/effective/effective_datatable/ajax.rb', line 72 def per_page return 9999999 if simple? length = (params[:length].presence || display_entries).to_i if length == -1 9999999 elsif length > 0 length else 25 end end |
#per_page=(length) ⇒ Object
86 87 88 89 90 91 92 93 |
# File 'app/models/effective/effective_datatable/ajax.rb', line 86 def per_page=(length) case length when Integer params[:length] = length when :all params[:length] = -1 end end |
#search_terms ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'app/models/effective/effective_datatable/ajax.rb', line 56 def search_terms @search_terms ||= HashWithIndifferentAccess.new().tap do |terms| if params[:columns].present? # This is an AJAX request from the DataTable (params[:columns] || {}).each do |_, column| next if table_columns[column[:name]].blank? || (column[:search] || {})[:value].blank? terms[column[:name]] = column[:search][:value] end else # This is the initial render, and we have to apply default search terms only table_columns.each do |name, values| terms[name] = values[:filter][:selected] if values[:filter][:selected].present? end end end end |