Method: CustomTableConcern#custom_table

Defined in:
app/controllers/concerns/custom_table_concern.rb

#custom_table(collection, variant = nil, default_sorts: "created_at desc", default_search: {}) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'app/controllers/concerns/custom_table_concern.rb', line 18

def custom_table collection, variant = nil, default_sorts: "created_at desc", default_search: {}

  @q = collection.ransack(params[:q])
  @q = collection.ransack((params[:q] || {}).merge(default_search)) if params[:q].nil?

  customization = helpers.custom_table_user_customization_for(collection.model, variant)
  @q.sorts = customization&.dig(:sorts).presence || default_sorts if @q.sorts.empty?

  collection = @q.result(distinct: true)
  # collection = collection.page(params[:page]).per(per_page) if format_web && paginate

  if !current_user.nil?
    current_user.save_custom_table_settings(collection.model, variant, per_page: params[:per]) if !params[:per].nil? && params[:do_not_save_settings].nil?
    if !params[:q].nil? && !params[:q][:s].nil? && !@q.nil? && !@q.sorts[0].nil? && !@q.sorts[0].name.nil? && params[:do_not_save_settings].nil?
      current_user.save_custom_table_settings(collection.model, variant, sorts: "#{@q.sorts[0].name} #{@q.sorts[0].dir}")
    end
  end

  return collection
end