Skip to content

Commit

Permalink
Merge pull request #14 from bluerogue251/make_datatables_a_fully_fled…
Browse files Browse the repository at this point in the history
…ged_model

Make Datatable a class instead of a module
  • Loading branch information
bluerogue251 committed Oct 27, 2014
2 parents 3ac18b5 + 3569bff commit e8883e7
Show file tree
Hide file tree
Showing 7 changed files with 69 additions and 101 deletions.
10 changes: 8 additions & 2 deletions app/controllers/expenses_controller.rb
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
class ExpensesController < ApplicationController

def index
respond_to do |format|
format.html
format.json { @expenses = ExpensesDatatable.new(params) }
format.json { @expenses = Datatable.new(params, search_scope, columns) }
end
end

Expand Down Expand Up @@ -31,4 +30,11 @@ def change_expense_status(new_status)
render "update_status"
end

def search_scope
Sunspot.new_search(Expense)
end

def columns
%i(s_user_name s_department s_job_title s_date s_category_name s_description s_currency s_amount s_status s_user_name s_user_name)
end
end
10 changes: 9 additions & 1 deletion app/controllers/user/expenses_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ class User::ExpensesController < ApplicationController
def index
respond_to do |format|
format.html
format.json { @expenses = User::ExpensesDatatable.new(params, current_user.id) }
format.json { @expenses = Datatable.new(params, search_scope, columns) }
end
end

Expand Down Expand Up @@ -36,4 +36,12 @@ def find_expense
def expense_params
params.require(:expense).permit(:date, :category_id, :description, :currency, :amount)
end

def search_scope
Sunspot.new_search(Expense) { with(:user_id, current_user.id) }
end

def columns
%i(s_user_name s_date s_category_name s_description s_currency s_amount s_status s_user_name)
end
end
31 changes: 0 additions & 31 deletions app/helpers/datatables_helper.rb

This file was deleted.

51 changes: 51 additions & 0 deletions app/models/datatable.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
class Datatable
def initialize(params, unfiltered_search, columns)
@params = params
@unfiltered_search = unfiltered_search
@columns = columns
end

def s_echo
params[:sEcho].to_i
end

def filtered_search
@filtered_search ||= @unfiltered_search.build do
fulltext params[:sSearch]
order_by(sort_column, sort_direction)
paginate page: page, per_page: per
end.execute
end

def total_record_count
@unfiltered_search.execute.total
end

def filtered_record_count
filtered_search.total
end

def data
filtered_search.results
end

private

attr_reader :params, :columns

def page
(params[:iDisplayStart].to_i / per) + 1
end

def per
params[:iDisplayLength].to_i > 0 ? params[:iDisplayLength].to_i : 10
end

def sort_direction
params[:sSortDir_0] == "desc" ? :desc : :asc
end

def sort_column
columns[params[:iSortCol_0].to_i]
end
end
29 changes: 0 additions & 29 deletions app/models/expenses_datatable.rb

This file was deleted.

37 changes: 0 additions & 37 deletions app/models/user/expenses_datatable.rb

This file was deleted.

2 changes: 1 addition & 1 deletion app/views/shared/_datatables_details.json.jbuilder
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
json.sEcho datatable.s_echo
json.iTotalRecords datatable.total_record_count
json.iTotalDisplayRecords datatable.total_display_records
json.iTotalDisplayRecords datatable.filtered_record_count
json.aaData data

0 comments on commit e8883e7

Please sign in to comment.