Module: Effective::EffectiveDatatable::Dsl::Filters

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

Instance Method Summary collapse

Instance Method Details

#changes_columns_countObject Also known as: changes_column_count



42
43
44
# File 'app/models/effective/effective_datatable/dsl/filters.rb', line 42

def changes_columns_count
  form()
end

#filter(name = nil, value = :_no_value, as: nil, label: nil, parse: nil, required: false, **input_html) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'app/models/effective/effective_datatable/dsl/filters.rb', line 5

def filter(name = nil, value = :_no_value, as: nil, label: nil, parse: nil, required: false, **input_html)
  return datatable.filter if (name == nil && value == :_no_value) # This lets block methods call 'filter' and get the values

  raise 'expected second argument to be a value' if value == :_no_value
  raise 'parse must be a Proc' if parse.present? && !parse.kind_of?(Proc)

  datatable._filters[name.to_sym] = {
    value: value,
    as: as,
    label: label || name.to_s.titleize,
    name: name.to_sym,
    parse: parse,
    required: required,
    input_html: input_html
  }
end

#form(url: nil, verb: nil) ⇒ Object

This changes the filters from using an AJAX, to a POST or GET



34
35
36
37
38
39
40
# File 'app/models/effective/effective_datatable/dsl/filters.rb', line 34

def form(url: nil, verb: nil)
  url ||= request.path
  verb ||= (Rails.application.routes.recognize_path(url, method: :post).present? rescue false) ? :post : :get

  datatable._form[:url] = url
  datatable._form[:verb] = verb
end

#scope(name = nil, *args, default: nil, label: nil) ⇒ Object



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

def scope(name = nil, *args, default: nil, label: nil)
  return datatable.scope unless name # This lets block methods call 'scope' and get the values

  datatable._scopes[name.to_sym] = {
    default: default,
    label: label || name.to_s.titleize,
    name: name.to_sym,
    args: args.presence
  }
end