class Datatable::Application
Public Class Methods
new(view, model, items, order_items=nil, pre_filter=false, filter='')
click to toggle source
# File lib/datatable/application.rb, line 11 def initialize(view, model, items, order_items=nil, pre_filter=false, filter='') @view = view if pre_filter @model= model.where(filter) else @model = model end @items = items @order = order_items.blank? ? items : order_items end
Public Instance Methods
as_json(options = {})
click to toggle source
# File lib/datatable/application.rb, line 22 def as_json(options = {}) { sEcho: params[:draw].to_i, iTotalRecords: @model.count, iTotalDisplayRecords: dimension.total_entries, aaData: sanitize_data(data) } end
Private Instance Methods
dimension()
click to toggle source
# File lib/datatable/application.rb, line 37 def dimension @dimension ||= fetch_dimension end
fetch_dimension()
click to toggle source
# File lib/datatable/application.rb, line 41 def fetch_dimension dimension = @model search = '' @items.each_with_index do |val, key| search << (key == 0 ? val+' LIKE :search ' : 'OR ' + val + ' LIKE :search ') end if params[:order] params[:order].each do |key, val| column_for_order = val[:column].to_i dimension = dimension.order("#{@order[column_for_order]} #{val[:dir]}") end end if !params[:search][:value].blank? dimension = dimension.where(search, search: "%#{params[:search][:value]}%") end params[:columns].each do |key,column| if !column[:search][:value].blank? dimension = dimension.where(@items[column[:data].to_i] + ' LIKE :search ', search: "%#{column[:search][:value]}%") end end dimension = dimension.page(page).per_page(per_page) dimension end
get_asset(id)
click to toggle source
# File lib/datatable/application.rb, line 95 def get_asset id asset = AssetConsumer.new current_user.customer_id, id asset = asset.get_asset end
imagen_data(value, url, default)
click to toggle source
# File lib/datatable/application.rb, line 77 def imagen_data value, url, default if value.url(:thumb) == url image_tag default, class: "img-circle", size: "60", style: "border: 5px solid #FFF;" else image_tag value.url(:thumb), class: "img-circle", size: "60", style: "border: 5px solid #FFF;" end end
miles(value)
click to toggle source
# File lib/datatable/application.rb, line 85 def miles value number_with_delimiter(value, delimiter: ".") end
page()
click to toggle source
# File lib/datatable/application.rb, line 69 def page params[:start].to_i / per_page + 1 end
per_page()
click to toggle source
# File lib/datatable/application.rb, line 73 def per_page params[:length].to_i > 0 ? params[:length].to_i : 10 end
rut_format(value)
click to toggle source
# File lib/datatable/application.rb, line 89 def rut_format value spliter = value.split("-") formated = number_with_delimiter(spliter[0], delimiter: ".") formated.to_s+"-"+spliter[1].to_s end
sanitize_data(data)
click to toggle source
# File lib/datatable/application.rb, line 100 def sanitize_data data # sanitize data, when the persistent (or stored) Cross-site scripting vulnerability data.each do |row| row.each_with_index do |attribute, index| row[index] = sanitize(row[index]) if row[index].is_a? String end end data end