Class: ActiveScaffold::Config::List

Inherits:
Base show all
Defined in:
lib/active_scaffold/config/list.rb

Defined Under Namespace

Classes: UserSettings

Constant Summary collapse

@@refresh_with_header =
false
@@per_page =
15
2
0
@@empty_field_text =
'-'
@@messages_above_header =
false
@@association_join_text =
', '
@@pagination =
true
@@auto_pagination =
false
@@show_search_reset =
true
@@show_filter_reset =
true
@@filter_human_message =
false
ActiveScaffold::DataStructures::ActionLink.new('index', label: :click_to_reset, type: :collection, position: false, parameters: {search: ''})
ActiveScaffold::DataStructures::ActionLink.new('index', label: :click_to_reset, type: :collection, position: false, dynamic_parameters: -> { clear_filters_params })
@@wrap_tag =
nil
@@always_show_search =
false
@@always_show_create =
false
@@auto_select_columns =
false
@@calculate_etag =
false

Constants inherited from Base

Base::NO_FORMATS

Instance Attribute Summary collapse

Attributes inherited from Base

#action_group, #core, #formats, #user_settings_key

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

inherited, #model_id, #new_user_settings, #setup_user_setting_key, #user

Methods included from ActiveScaffold::Configurable

#configure, #method_missing, #respond_to_missing?

Constructor Details

#initialize(core_config) ⇒ List

Returns a new instance of List.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/active_scaffold/config/list.rb', line 7

def initialize(core_config)
  super
  # inherit from global scope
  # full configuration path is: defaults => global table => local table
  @per_page = self.class.per_page
  @filters = ActiveScaffold::DataStructures::Filters.new
  @page_links_inner_window = self.class.page_links_inner_window
  @page_links_outer_window = self.class.page_links_outer_window

  # originates here
  @sorting = ActiveScaffold::DataStructures::Sorting.new(@core.columns, @core.model)
  @sorting.set_default_sorting

  # inherit from global scope
  @empty_field_text = self.class.empty_field_text
  @association_join_text = self.class.association_join_text
  @pagination = self.class.pagination
  @auto_pagination = self.class.auto_pagination
  @show_search_reset = self.class.show_search_reset
  @show_filter_reset = self.class.show_filter_reset
  @filter_human_message = self.class.filter_human_message
  @reset_link = self.class.reset_link.clone
  @reset_filter_link = self.class.reset_filter_link.clone
  @wrap_tag = self.class.wrap_tag
  @always_show_search = self.class.always_show_search
  @always_show_create = self.class.always_show_create
  @messages_above_header = self.class.messages_above_header
  @auto_select_columns = self.class.auto_select_columns
  @refresh_with_header = self.class.refresh_with_header
  @calculate_etag = self.class.calculate_etag
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class ActiveScaffold::Configurable

Instance Attribute Details

#always_show_createObject



241
242
243
# File 'lib/active_scaffold/config/list.rb', line 241

def always_show_create
  @always_show_create && @core.actions.include?(:create)
end

#always_show_searchObject



218
219
220
# File 'lib/active_scaffold/config/list.rb', line 218

def always_show_search
  @always_show_search && search_partial.present?
end

#association_join_textObject

what string to use to join records from plural associations



164
165
166
# File 'lib/active_scaffold/config/list.rb', line 164

def association_join_text
  @association_join_text
end

#auto_paginationObject

Auto paginate, only can be used with pagination enabled

  • true: First page will be loaded on first request, next pages will be requested by AJAX until all items are loaded

  • false: Disable auto pagination



155
156
157
# File 'lib/active_scaffold/config/list.rb', line 155

def auto_pagination
  @auto_pagination
end

#auto_select_columnsObject

Enable auto select columns on list, so only columns needed for list columns are selected



257
258
259
# File 'lib/active_scaffold/config/list.rb', line 257

def auto_select_columns
  @auto_select_columns
end

#calculate_etagObject

Enable ETag calculation (when conditional_get_support is enabled), it requires to load records for page, when is disabled query can be avoided when page is cached in browser order clause will be used for ETag when calculate_etag is disabled, so query for records can be avoided



261
262
263
# File 'lib/active_scaffold/config/list.rb', line 261

def calculate_etag
  @calculate_etag
end

#count_includesObject

overwrite the includes used for the count sql query



199
200
201
# File 'lib/active_scaffold/config/list.rb', line 199

def count_includes
  @count_includes
end

#empty_field_textObject

what string to use when a field is empty



158
159
160
# File 'lib/active_scaffold/config/list.rb', line 158

def empty_field_text
  @empty_field_text
end

#filter_human_messageObject

filter human message you may show the user a humanized applied filters, not the default ones



174
175
176
# File 'lib/active_scaffold/config/list.rb', line 174

def filter_human_message
  @filter_human_message
end

#filtered_messageObject



214
215
216
# File 'lib/active_scaffold/config/list.rb', line 214

def filtered_message
  @filtered_message || :filtered
end

#filtersObject (readonly)

the filters for this controller



183
184
185
# File 'lib/active_scaffold/config/list.rb', line 183

def filters
  @filters
end

#hide_nested_columnObject



248
249
250
# File 'lib/active_scaffold/config/list.rb', line 248

def hide_nested_column
  @hide_nested_column.nil? || @hide_nested_column
end

#label(core: @core) ⇒ Object



204
205
206
# File 'lib/active_scaffold/config/list.rb', line 204

def label(core: @core)
  @label ? as_(@label, count: 2) : core.label(count: 2)
end

#messages_above_headerObject

display messages above table header



161
162
163
# File 'lib/active_scaffold/config/list.rb', line 161

def messages_above_header
  @messages_above_header
end

#no_entries_messageObject



210
211
212
# File 'lib/active_scaffold/config/list.rb', line 210

def no_entries_message
  @no_entries_message || :no_entries
end

how many page links around current page to show



141
142
143
# File 'lib/active_scaffold/config/list.rb', line 141

def page_links_inner_window
  @page_links_inner_window
end

how many page links around current page to show



144
145
146
# File 'lib/active_scaffold/config/list.rb', line 144

def page_links_outer_window
  @page_links_outer_window
end

#paginationObject

What kind of pagination to use:

  • true: The usual pagination

  • :infinite: Treat the source as having an infinite number of pages (i.e. don’t count the records; useful for large tables where counting is slow and we don’t really care anyway)

  • false: Disable pagination



150
151
152
# File 'lib/active_scaffold/config/list.rb', line 150

def pagination
  @pagination
end

#per_pageObject

how many rows to show at once



138
139
140
# File 'lib/active_scaffold/config/list.rb', line 138

def per_page
  @per_page
end

#refresh_with_headerObject

include list header on refresh



135
136
137
# File 'lib/active_scaffold/config/list.rb', line 135

def refresh_with_header
  @refresh_with_header
end

the ActionLink to reset the filters



180
181
182
# File 'lib/active_scaffold/config/list.rb', line 180

def reset_filter_link
  @reset_filter_link
end

the ActionLink to reset search



177
178
179
# File 'lib/active_scaffold/config/list.rb', line 177

def reset_link
  @reset_link
end

#show_filter_resetObject

show a link to reset the filter next to filter human message



170
171
172
# File 'lib/active_scaffold/config/list.rb', line 170

def show_filter_reset
  @show_filter_reset
end

#show_search_resetObject

show a link to reset the search next to filtered message



167
168
169
# File 'lib/active_scaffold/config/list.rb', line 167

def show_search_reset
  @show_search_reset
end

#wrap_tagObject

wrap normal cells (not inplace editable columns or with link) with a tag it allows for more css styling



254
255
256
# File 'lib/active_scaffold/config/list.rb', line 254

def wrap_tag
  @wrap_tag
end

Class Method Details

.filtersObject



125
126
127
# File 'lib/active_scaffold/config/list.rb', line 125

def self.filters
  ActiveScaffold::DataStructures::Filters
end

Instance Method Details

#auto_search_partialObject



230
231
232
233
234
235
236
# File 'lib/active_scaffold/config/list.rb', line 230

def auto_search_partial
  if @core.actions.include?(:search)
    'search'
  elsif @core.actions.include?(:field_search)
    'field_search'
  end
end

#search_partialObject



222
223
224
225
226
227
228
# File 'lib/active_scaffold/config/list.rb', line 222

def search_partial
  if @always_show_search == true
    auto_search_partial
  elsif @core.actions.include? @always_show_search
    @always_show_search.to_s
  end
end

#sortingObject



194
195
196
# File 'lib/active_scaffold/config/list.rb', line 194

def sorting
  @sorting ||= ActiveScaffold::DataStructures::Sorting.new(@core.columns, @core.model)
end

#sorting=(val) ⇒ Object

the default sorting. should be a hash of => direction, e.g. ‘desc’, b: ‘asc’. for backwards compatibility, it may be an array of hashes of => direction, e.g. [‘desc’, ‘asc’]. to just sort on one column, you can simply provide a hash, e.g. ‘desc’.



189
190
191
192
# File 'lib/active_scaffold/config/list.rb', line 189

def sorting=(val)
  val = [val] if val.is_a? Hash
  sorting.set(*val)
end