Class: Lolita::Configuration::List
- Includes:
- Builder, Observable
- Defined in:
- lib/lolita/configuration/list.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#initialized_attributes ⇒ Object
readonly
Returns the value of attribute initialized_attributes.
-
#page_criteria ⇒ Object
readonly
Returns the value of attribute page_criteria.
- #title(new_title = nil) ⇒ Object
Attributes inherited from Base
Instance Method Summary collapse
- #action(name, options = {}, &block) ⇒ Object
- #by_path(path) ⇒ Object
-
#column(*args, &block) ⇒ Object
Block setter for columns.
-
#columns(*args, &block) ⇒ Object
Define columns for list.
-
#columns=(possible_columns) ⇒ Object
Set columns.
-
#filter(*args, &block) ⇒ Object
Create or return filter.
-
#filter? ⇒ Boolean
checks if filter defined.
-
#initialize(dbp, *args, &block) ⇒ List
constructor
A new instance of List.
-
#list(*args, &block) ⇒ Object
Allow to crate nested list for list.
-
#paginate(current_page, request = nil) ⇒ Object
Return page for list display.
-
#search(*args, &block) ⇒ Object
For details see Lolita::Configuration::Search.
Methods included from Builder
#build, #builder, #builder=, #builder_default_name, #builder_default_options, #builder_default_state
Constructor Details
#initialize(dbp, *args, &block) ⇒ List
Returns a new instance of List.
12 13 14 15 16 17 18 |
# File 'lib/lolita/configuration/list.rb', line 12 def initialize(dbp,*args,&block) set_and_validate_dbp(dbp) set_list_attributes do set_attributes(*args) self.instance_eval(&block) if block_given? end end |
Instance Attribute Details
#initialized_attributes ⇒ Object (readonly)
Returns the value of attribute initialized_attributes.
7 8 9 |
# File 'lib/lolita/configuration/list.rb', line 7 def initialized_attributes @initialized_attributes end |
#page_criteria ⇒ Object (readonly)
Returns the value of attribute page_criteria.
7 8 9 |
# File 'lib/lolita/configuration/list.rb', line 7 def page_criteria @page_criteria end |
#title(new_title = nil) ⇒ Object
20 21 22 23 24 25 |
# File 'lib/lolita/configuration/list.rb', line 20 def title(new_title = nil) if new_title @title = new_title end Lolita::Utils.dynamic_string(@title, :default => dbp.klass.lolita_model_name.human(:count => 2)) end |
Instance Method Details
#action(name, options = {}, &block) ⇒ Object
27 28 29 30 |
# File 'lib/lolita/configuration/list.rb', line 27 def action name, = {}, &block @actions << decide_and_create_action(name, , &block) @actions.flatten! end |
#by_path(path) ⇒ Object
105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/lolita/configuration/list.rb', line 105 def by_path(path) path = path.dup object = self while path.any? part = path.pop.match(/(l|c)_(\w+)/) object = if part[1] == "l" object.list else object.columns.by_name(part[2]).list end end object end |
#column(*args, &block) ⇒ Object
Block setter for columns
87 88 89 |
# File 'lib/lolita/configuration/list.rb', line 87 def column(*args,&block) columns.column(*args, &block) end |
#columns(*args, &block) ⇒ Object
Define columns for list. On first read if there is no columns they will be created.
79 80 81 82 83 84 |
# File 'lib/lolita/configuration/list.rb', line 79 def columns(*args,&block) if (args && args.any?) || block_given? || !@columns self.columns = Lolita::Configuration::Columns.new(dbi,*args,&block) end @columns end |
#columns=(possible_columns) ⇒ Object
Set columns. Allowed classes are Lolita::Configuration::Columns or Array.
65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/lolita/configuration/list.rb', line 65 def columns=(possible_columns) if possible_columns.is_a?(Lolita::Configuration::Columns) @columns = possible_columns @columns.parent = self elsif possible_columns.respond_to?(:each) possible_columns.each{|possible_column| column(possible_column) } else raise ArgumentError.new("Accepts only Enumerable or Lolita::Configuration::Columns.") end end |
#filter(*args, &block) ⇒ Object
Create or return filter
97 98 99 100 101 102 103 |
# File 'lib/lolita/configuration/list.rb', line 97 def filter(*args,&block) if args && args.any? || block_given? @filter = Lolita::Configuration::Filter.new(dbi,*args,&block) add_observer(@filter) end @filter end |
#filter? ⇒ Boolean
checks if filter defined
92 93 94 |
# File 'lib/lolita/configuration/list.rb', line 92 def filter? @filter.is_a?(Lolita::Configuration::Filter) end |
#list(*args, &block) ⇒ Object
Allow to crate nested list for list
33 34 35 36 37 38 39 40 41 42 |
# File 'lib/lolita/configuration/list.rb', line 33 def list(*args, &block) if args && args.any? || block_given? association = dbi.associations[args[0].to_s] association_dbi = association && Lolita::DBI::Base.create(association.klass) raise Lolita::UnknownDBPError.new("No DBI specified for list sublist") unless association_dbi Lolita::LazyLoader.lazy_load(self,:@list,Lolita::Configuration::NestedList,association_dbi, self, :association_name => association.name,&block) else @list end end |
#paginate(current_page, request = nil) ⇒ Object
Return page for list display. Method requires two arguments:
-
current_page
- number of current page -
request (optional)
- request that is passed to adapter that passes this to model when #pagination_method is defined
56 57 58 59 60 61 |
# File 'lib/lolita/configuration/list.rb', line 56 def paginate(current_page, request = nil) changed @page_criteria = dbi.paginate(current_page,@per_page,:request => request, :pagination_method => @pagination_method) notify_observers(:paginate,self,request) @page_criteria end |
#search(*args, &block) ⇒ Object
For details see Lolita::Configuration::Search
45 46 47 48 49 50 51 |
# File 'lib/lolita/configuration/list.rb', line 45 def search *args, &block if (args && args.any?) || block_given? @search = Lolita::Configuration::Search.new(self.dbi,*args,&block) add_observer(@search) end @search end |