class ActiveScaffold::Config::List::UserSettings

don’t inherit, defined with columns_accessor, class_eval would complain about block too long

Attributes

label[W]
nested_default_sorting[R]
sorting[W]

change list sorting for this request, unless sorting is defined {column => direction, column => direction}

Public Class Methods

new(conf, storage, params) click to toggle source
Calls superclass method
# File lib/active_scaffold/config/list.rb, line 229
def initialize(conf, storage, params)
  super(conf, storage, params, :list)
  @_sorting = nil
end

Public Instance Methods

count_includes() click to toggle source
# File lib/active_scaffold/config/list.rb, line 304
def count_includes
  @conf.count_includes
end
default_sorting() click to toggle source
# File lib/active_scaffold/config/list.rb, line 269
def default_sorting
  nested_default_sorting.nil? || @sorting.present? ? sorting_dup : nested_default_sorting
end
embedded_label() click to toggle source
# File lib/active_scaffold/config/list.rb, line 240
def embedded_label
  @params.dig :embedded, :label
end
label() click to toggle source

This label has already been localized.

# File lib/active_scaffold/config/list.rb, line 236
def label
  self['label'] || embedded_label || @label || @conf.label
end
nested_default_sorting=(options) click to toggle source
# File lib/active_scaffold/config/list.rb, line 264
def nested_default_sorting=(options)
  @nested_default_sorting ||= sorting_dup
  @nested_default_sorting.set_nested_sorting(options[:table_name], options[:default_sorting])
end
page() click to toggle source
# File lib/active_scaffold/config/list.rb, line 253
def page
  self['page'] = @params['page'] || 1 if @params.key?('page') || @conf.auto_pagination
  self['page'] || 1
end
page=(value = nil) click to toggle source
# File lib/active_scaffold/config/list.rb, line 258
def page=(value = nil)
  self['page'] = value
end
per_page() click to toggle source
# File lib/active_scaffold/config/list.rb, line 244
def per_page
  self['per_page'] = @params['limit'].to_i if @params.key? 'limit'
  self['per_page'] || @conf.per_page
end
per_page=(value) click to toggle source
# File lib/active_scaffold/config/list.rb, line 249
def per_page=(value)
  self['per_page'] = value
end
sorting() click to toggle source
# File lib/active_scaffold/config/list.rb, line 283
def sorting
  if @_sorting.nil?
    # we want to store as little as possible in the session, but we want to return a Sorting data structure. so we recreate it each page load based on session data.
    self['sort'] = [@params['sort'], @params['sort_direction']] if @params['sort'] && @params['sort_direction']
    self['sort'] = nil if @params['sort_direction'] == 'reset'

    if self['sort'] && @conf.core.columns[self['sort'][0]]
      sorting = sorting_dup
      sorting.set(*self['sort'])
      @_sorting = sorting
    else
      @_sorting = default_sorting
      @_sorting.set(*@sorting) if @sorting
      if @conf.columns.constraint_columns.present?
        @_sorting.constraint_columns = @conf.columns.constraint_columns
      end
    end
  end
  @_sorting
end
user_sorting?() click to toggle source

TODO: programatically set sorting, for per-request configuration, priority @params, then @sort

# File lib/active_scaffold/config/list.rb, line 275
def user_sorting?
  @params['sort'] && @params['sort_direction'] != 'reset'
end

Protected Instance Methods

sorting_dup() click to toggle source
# File lib/active_scaffold/config/list.rb, line 310
def sorting_dup
  sorting = @conf.sorting.dup
  # access to config instance columns instead of config class columns, in case columns are changed in this request
  sorting.instance_variable_set :@columns, core.columns
  sorting
end