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

Instance Attribute Summary collapse

Attributes inherited from Base

#action_group, #core, #user

Instance Method Summary collapse

Methods inherited from Base

#crud_type, #formats, #formats=, inherited

Methods included from ActiveScaffold::Configurable

#configure, #method_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)
  @sorting.set_default_sorting(@core.model)

  # 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



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

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

#always_show_searchObject



187
188
189
# File 'lib/active_scaffold/config/list.rb', line 187

def always_show_search
  @always_show_search && !search_partial.blank?
end

#association_join_textObject

what string to use to join records from plural associations



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

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



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

def auto_pagination
  @auto_pagination
end

#auto_select_columnsObject

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



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

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



225
226
227
# File 'lib/active_scaffold/config/list.rb', line 225

def calculate_etag
  @calculate_etag
end

#count_includesObject

overwrite the includes used for the count sql query



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

def count_includes
  @count_includes
end

#empty_field_textObject

what string to use when a field is empty



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

def empty_field_text
  @empty_field_text
end

#filtered_messageObject



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

def filtered_message
  @filtered_message ? @filtered_message : :filtered
end

#hide_nested_columnObject



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

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

#labelObject



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

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

#messages_above_headerObject

display messages above table header



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

def messages_above_header
  @messages_above_header
end

#no_entries_messageObject



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

def no_entries_message
  @no_entries_message ? @no_entries_message : :no_entries
end

how many page links around current page to show



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

def page_links_inner_window
  @page_links_inner_window
end

how many page links around current page to show



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

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



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

def pagination
  @pagination
end

#per_pageObject

how many rows to show at once



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

def per_page
  @per_page
end

#refresh_with_headerObject

include list header on refresh



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

def refresh_with_header
  @refresh_with_header
end

the ActionLink to reset search



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

def reset_link
  @reset_link
end

#show_search_resetObject

show a link to reset the search next to filtered message



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

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



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

def wrap_tag
  @wrap_tag
end

Instance Method Details

#auto_search_partialObject



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

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

#columnsObject

provides access to the list of columns specifically meant for the Table to use



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

def columns
  self.columns = @core.columns._inheritable unless @columns # lazy evaluation
  @columns
end

#search_partialObject



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

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

#sortingObject



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

def sorting
  @sorting ||= ActiveScaffold::DataStructures::Sorting.new(@core.columns)
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’.



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

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