Remove unused model of datatables
This model is required if we were doing server side processing for fetching records however, we are not. If this needs to be set up sometime in future, checkout: https://datatables.net/examples/server_side/simple.html
This commit is contained in:
parent
34892d04c8
commit
5430510e4c
1 changed files with 0 additions and 98 deletions
|
|
@ -1,98 +0,0 @@
|
|||
# derived from http://railscasts.com/episodes/340-datatables
|
||||
# handles server side multi-column searching and sorting
|
||||
|
||||
class Datatable
|
||||
delegate :params, :h, :raw, :link_to, :number_to_currency, to: :@view
|
||||
|
||||
def initialize(klass, view)
|
||||
@klass = klass
|
||||
@view = view
|
||||
end
|
||||
|
||||
def as_json
|
||||
{
|
||||
sEcho: params[:sEcho].to_i,
|
||||
iTotalRecords: @klass.count,
|
||||
iTotalDisplayRecords: items.total_entries,
|
||||
aaData: data
|
||||
}
|
||||
end
|
||||
|
||||
def data
|
||||
[]
|
||||
end
|
||||
|
||||
def columns
|
||||
[]
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def items
|
||||
@items ||= fetch_items
|
||||
end
|
||||
|
||||
def fetch_items
|
||||
items = filtered_list
|
||||
items = selected_columns(items)
|
||||
items = items.order(sort_order)
|
||||
items = items.page(page).per_page(per_page)
|
||||
if params[:sSearch].present?
|
||||
items = items.where(quick_search)
|
||||
end
|
||||
items
|
||||
end
|
||||
|
||||
def filtered_list
|
||||
@klass.scoped
|
||||
end
|
||||
|
||||
def selected_columns items
|
||||
items
|
||||
end
|
||||
|
||||
def quick_search
|
||||
search_for = params[:sSearch].split(' ')
|
||||
terms = {}
|
||||
which_one = -1
|
||||
criteria = search_for.inject([]) do |mem, atom|
|
||||
which_one += 1
|
||||
terms["search#{which_one}".to_sym] = "%#{atom}%"
|
||||
mem << "(#{search_cols.map{|col| "#{col} like :search#{which_one}"}.join(' or ')})"
|
||||
end.join(' and ')
|
||||
[criteria, terms]
|
||||
end
|
||||
|
||||
def page
|
||||
params[:iDisplayStart].to_i/per_page + 1
|
||||
end
|
||||
|
||||
def per_page
|
||||
params[:iDisplayLength].to_i > 0 ? params[:iDisplayLength].to_i : 10
|
||||
end
|
||||
|
||||
def sort_order
|
||||
colnum = 0
|
||||
sort_by = []
|
||||
while true
|
||||
break if !sorted?(colnum)
|
||||
sort_by << "#{sort_column(colnum)} #{sort_direction(colnum)}"
|
||||
colnum += 1
|
||||
end
|
||||
sort_by.join(', ')
|
||||
end
|
||||
|
||||
def sorted? index=0
|
||||
!params["iSortCol_#{index}"].nil?
|
||||
end
|
||||
|
||||
def sort_column index=0
|
||||
index = "iSortCol_#{index}"
|
||||
columns[params[index].to_i]
|
||||
end
|
||||
|
||||
def sort_direction index=0
|
||||
index = "sSortDir_#{index}"
|
||||
params[index] == 'desc' ? 'desc' : 'asc'
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue