Module: Effective::EffectiveDatatable::Dsl

Included in:
Datatable
Defined in:
app/models/effective/effective_datatable/dsl.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#actions_column(options = {}, proc = nil, &block) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'app/models/effective/effective_datatable/dsl.rb', line 37

def actions_column(options = {}, proc = nil, &block)
  show = options.fetch(:show, (EffectiveDatatables.actions_column[:show] rescue false))
  edit = options.fetch(:edit, (EffectiveDatatables.actions_column[:edit] rescue false))
  destroy = options.fetch(:destroy, (EffectiveDatatables.actions_column[:destroy] rescue false))
  unarchive = options.fetch(:unarchive, (EffectiveDatatables.actions_column[:unarchive] rescue false))
  name = options.fetch(:name, 'actions')

  opts = {
    sortable: false,
    filter: false,
    responsivePriority: 0,
    partial_locals: { show_action: show, edit_action: edit, destroy_action: destroy, unarchive_action: unarchive }
  }.merge(options)

  opts[:partial_local] ||= :resource unless opts[:partial].present?
  opts[:partial] ||= '/effective/datatables/actions_column' unless (block_given? || proc.present?)

  table_column(name, opts, proc, &block)
end

#array_column(name, options = {}, proc = nil, &block) ⇒ Object



33
34
35
# File 'app/models/effective/effective_datatable/dsl.rb', line 33

def array_column(name, options = {}, proc = nil, &block)
  table_column(name, options.merge!(array_column: true), proc, &block)
end

#bulk_actions_column(options = {}, proc = nil, &block) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'app/models/effective/effective_datatable/dsl.rb', line 57

def bulk_actions_column(options = {}, proc = nil, &block)
  name = options.fetch(:name, 'bulk_actions')
  resource_method = options.fetch(:resource_method, :to_param)

  opts = {
    bulk_actions_column: true,
    label: '',
    partial_local: :resource,
    partial: '/effective/datatables/bulk_actions_column',
    partial_locals: { resource_method: resource_method },
    sortable: false,
    dropdown_partial: '/effective/datatables/bulk_actions_dropdown',
    dropdown_block: block
  }.merge(options)

  table_column(name, opts, proc)
end

#default_entries(entries) ⇒ Object



18
19
20
# File 'app/models/effective/effective_datatable/dsl.rb', line 18

def default_entries(entries)
  @default_entries = entries
end

#default_order(name, direction = :asc) ⇒ Object

Instance Methods inside the datatable do .. end block



14
15
16
# File 'app/models/effective/effective_datatable/dsl.rb', line 14

def default_order(name, direction = :asc)
  @default_order = {name => direction}
end

#table_column(name, options = {}, proc = nil, &block) ⇒ Object



22
23
24
25
26
27
28
29
30
31
# File 'app/models/effective/effective_datatable/dsl.rb', line 22

def table_column(name, options = {}, proc = nil, &block)
  if block_given?
    raise "You cannot use partial: ... with the block syntax" if options[:partial]
    raise "You cannot use proc: ... with the block syntax" if options[:proc]
    options[:block] = block
  end
  raise "You cannot use both partial: ... and proc: ..." if options[:partial] && options[:proc]

  (@table_columns ||= HashWithIndifferentAccess.new())[name] = options
end