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



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

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

#always_show_searchObject



185
186
187
# File 'lib/active_scaffold/config/list.rb', line 185

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



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

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



229
230
231
# File 'lib/active_scaffold/config/list.rb', line 229

def calculate_etag
  @calculate_etag
end

#count_includesObject

overwrite the includes used for the count sql query



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

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



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

def filtered_message
  @filtered_message ? @filtered_message : :filtered
end

#hide_nested_columnObject



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

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

#labelObject



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

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

#nested_auto_openObject

might be set to open nested_link automatically in view conf.nested.add_link(:players) conf.list.nested_auto_open = => 2 will open nested players view if there are 2 or less records in parent



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

def nested_auto_open
  @nested_auto_open
end

#no_entries_messageObject



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

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



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

def wrap_tag
  @wrap_tag
end

Instance Method Details

#auto_search_partialObject



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

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



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

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



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

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

#sorting=(val) ⇒ Object

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



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

def sorting=(val)
  val = [val] if val.is_a? Hash
  sorting.clear
  val.each { |clause| sorting.add *Array(clause).first }
end