Skip to content

Instantly share code, notes, and snippets.

Created June 3, 2016 11:11
Show Gist options
  • Save anonymous/823ce636c5f4fb8cdc8e42557ec6353b to your computer and use it in GitHub Desktop.
Save anonymous/823ce636c5f4fb8cdc8e42557ec6353b to your computer and use it in GitHub Desktop.
module Datatable::User
class Feedbacks
delegate :params, :h, :link_to, :image_tag, :content_tag, :current_user, :tag, to: :@view
def initialize(view, user)
@view = view
@current_user = user
end
def as_json(options = {})
{
sEcho: params[:sEcho].to_i,
iTotalRecords: feedbacks.count,
iTotalDisplayRecords: feedbacks.total_entries,
aaData: data
}
end
private
def data
feedbacks.map do |feedback|
[
feedback.id,
feedback.title,
feedback.detail,
if feedback.photo.present?
image_tag(feedback.photo.square)
else
"No photo"
end
]
end
end
def feedbacks
@feedbacks ||= fetch_feedbacks
end
def fetch_feedbacks
puts "SORT COLUMN"
if sort_column == "id"
puts "EMPTY"
feedbacks = @current_user.feedbacks.order(created_at: :desc)
else
puts sort_column
feedbacks = @current_user.feedbacks.order("#{sort_column} #{sort_direction}")
end
feedbacks = feedbacks.page(page).per_page(per_page)
if params[:sSearch].present?
feedbacks = feedbacks.where("
id like :search
or title like :search
or detail like :search",
search: "%#{params[:sSearch]}%")
end
feedbacks
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_column
columns = %w[id title detail]
columns[params[:iSortCol_0].to_i]
end
def sort_direction
params[:sSortDir_0] == "desc" ? "desc" : "asc"
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment