Class: Coalla::TableBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/coalla/builders/table_builder.rb

Instance Method Summary collapse

Constructor Details

#initialize(context, model_class, options = {}) ⇒ TableBuilder

Returns a new instance of TableBuilder.



7
8
9
10
11
12
# File 'lib/coalla/builders/table_builder.rb', line 7

def initialize(context, model_class, options = {})
  @context, @model_class = context, model_class
  @options = options
  @columns = []
  @table_formatter = TableFormatter.for(@model_class)
end

Instance Method Details

#action(value, options = {}) ⇒ Object

Метод добавляет кнопку в столбец действий



42
43
44
# File 'lib/coalla/builders/table_builder.rb', line 42

def action(value, options = {})
  add_action(value, options)
end

#column(method, options = {}) ⇒ Object

Метод добавляет столбец к таблице



21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/coalla/builders/table_builder.rb', line 21

def column(method, options = {})
  helper = @table_formatter[method]
  cd = ColumnDefinition.new
  cd.title = options[:title] || I18n.t("activerecord.attributes.#{@model_class.model_name.singular}.#{method}")
  cd.cols = options[:cols]
  cd.col_class = options[:class]
  cd.sort = sort_value(method, options.fetch(:sort, false))
  cd.edit = edit_options(method, options.fetch(:edit, false))
  cd.value_extractor = ->(item) { helper.format_value(item, options[:format]) }
  cd.align = options[:align] || helper.respond_to?(:align) && helper.align
  @columns << cd
end

#content(collection, &block) ⇒ Object



14
15
16
17
18
# File 'lib/coalla/builders/table_builder.rb', line 14

def content(collection, &block)
  @collection = collection
  block.call(self) if block_given?
  create_content
end

#delete(options = {}) ⇒ Object

Метод добавляет кнопку удаления сущности в столбец действий



52
53
54
# File 'lib/coalla/builders/table_builder.rb', line 52

def delete(options = {})
  add_action(:delete, options)
end

#edit(options = {}) ⇒ Object

Метод добавляет кнопку редактирования сущности в столбец действий



47
48
49
# File 'lib/coalla/builders/table_builder.rb', line 47

def edit(options = {})
  add_action(:edit, options)
end

#edit_and_delete(options = {}) ⇒ Object

Метод добавляет кнопки добавления и удаления сущностей в столбец действий



57
58
59
60
# File 'lib/coalla/builders/table_builder.rb', line 57

def edit_and_delete(options = {})
  self.edit(options)
  self.delete(options)
end

#row_class(lmb) ⇒ Object

Метод позволяет передать блок, который должен вычислять класс для строки. В этот блок передается объект, по которому данная строка рендерится. Таким образом, можно управлять, например, цветом строки в зависимости от состояния объекта (статусы заказов и прочее).



37
38
39
# File 'lib/coalla/builders/table_builder.rb', line 37

def row_class(lmb)
  @row_class = lmb
end