module LatoCore::Interface::Cells

This module contains a list of functions used by controllers to interact with widgets cells.

Public Instance Methods

core__cells_initialize() click to toggle source

This function must be executed before every action and set metadata used by cells.

# File lib/lato_core/interfaces/cells.rb, line 9
def core__cells_initialize
  @core__cells_authenticity_token = form_authenticity_token
end
core__widgets_index(records, search: nil, pagination: 50) click to toggle source

This function manage the widget index from front end.

# File lib/lato_core/interfaces/cells.rb, line 14
def core__widgets_index(records, search: nil, pagination: 50)
  response = {
    records: records,
    total: records.length,
    per_page: pagination,
    search: '',
    search_key: search,
    sort: '',
    sort_dir: 'ASC',
    pagination: 1,
  }

  # manage search
  if search && params[:widget_index] && params[:widget_index][:search] && !params[:widget_index][:search].blank?
    search_array = search.is_a?(Array) ? search : [search]
    query1 = ''
    query2 = []
    search_array.each do |s|
      query1 += "#{s} like ? OR "
      query2.push("%#{params[:widget_index][:search]}%")
    end
    query1 = query1[0...-4]
    query = [query1] + query2
    response[:records] = response[:records].where(query)
    response[:total] = response[:records].length
    response[:search] = params[:widget_index][:search]
  end
  # manage sort
  if params[:widget_index] && !params[:widget_index][:sort].blank? && !params[:widget_index][:sort_dir].blank?
    response[:sort] = params[:widget_index][:sort]
    response[:sort_dir] = params[:widget_index][:sort_dir]
    response[:records] = response[:records].order("#{params[:widget_index][:sort]} #{params[:widget_index][:sort_dir]}")
  end
  # manage pagination
  if pagination
    if params[:widget_index] && params[:widget_index][:pagination]
      response[:pagination] = params[:widget_index][:pagination].to_i
    end
    response[:records] = core__paginate_array(response[:records], pagination, response[:pagination])
  end
  # return response
  response
end