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
ActiveScaffold::DataStructures::ActionLink.new('index', :label => :click_to_reset, :type => :collection, :position => false, :parameters => {:search => ''})
@@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

Instance Method Summary collapse

Methods inherited from Base

#crud_type, 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.



5
6
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
# File 'lib/active_scaffold/config/list.rb', line 5

def initialize(core_config)
  super
  # inherit from global scope
  # full configuration path is: defaults => global table => local table
  @per_page = self.class.per_page
  @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
  @reset_link = self.class.reset_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



201
202
203
# File 'lib/active_scaffold/config/list.rb', line 201

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

#always_show_searchObject



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

def always_show_search
  @always_show_search && search_partial.present?
end

#association_join_textObject

what string to use to join records from plural associations



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

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



132
133
134
# File 'lib/active_scaffold/config/list.rb', line 132

def auto_pagination
  @auto_pagination
end

#auto_select_columnsObject

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



216
217
218
# File 'lib/active_scaffold/config/list.rb', line 216

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



220
221
222
# File 'lib/active_scaffold/config/list.rb', line 220

def calculate_etag
  @calculate_etag
end

#count_includesObject

overwrite the includes used for the count sql query



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

def count_includes
  @count_includes
end

#empty_field_textObject

what string to use when a field is empty



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

def empty_field_text
  @empty_field_text
end

#filtered_messageObject



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

def filtered_message
  @filtered_message ? @filtered_message : :filtered
end

#hide_nested_columnObject



207
208
209
# File 'lib/active_scaffold/config/list.rb', line 207

def hide_nested_column
  @hide_nested_column.nil? ? true : @hide_nested_column
end

#labelObject



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

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

#messages_above_headerObject

display messages above table header



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

def messages_above_header
  @messages_above_header
end

#no_entries_messageObject



172
173
174
# File 'lib/active_scaffold/config/list.rb', line 172

def no_entries_message
  @no_entries_message ? @no_entries_message : :no_entries
end

how many page links around current page to show



118
119
120
# File 'lib/active_scaffold/config/list.rb', line 118

def page_links_inner_window
  @page_links_inner_window
end

how many page links around current page to show



121
122
123
# File 'lib/active_scaffold/config/list.rb', line 121

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



127
128
129
# File 'lib/active_scaffold/config/list.rb', line 127

def pagination
  @pagination
end

#per_pageObject

how many rows to show at once



115
116
117
# File 'lib/active_scaffold/config/list.rb', line 115

def per_page
  @per_page
end

#refresh_with_headerObject

include list header on refresh



112
113
114
# File 'lib/active_scaffold/config/list.rb', line 112

def refresh_with_header
  @refresh_with_header
end

the ActionLink to reset search



147
148
149
# File 'lib/active_scaffold/config/list.rb', line 147

def reset_link
  @reset_link
end

#show_search_resetObject

show a link to reset the search next to filtered message



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

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



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

def wrap_tag
  @wrap_tag
end

Instance Method Details

#auto_search_partialObject



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

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

#search_partialObject



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

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



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

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’.



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

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