Module: Effective::EffectiveDatatable::Dsl::Filters
- Included in:
- DatatableDslTool
- Defined in:
- app/models/effective/effective_datatable/dsl/filters.rb
Instance Method Summary collapse
- #changes_columns_count ⇒ Object (also: #changes_column_count)
- #filter(name = nil, value = :_no_value, as: nil, label: nil, parse: nil, required: false, **input_html) ⇒ Object
-
#form(url: nil, verb: nil) ⇒ Object
This changes the filters from using an AJAX, to a POST or GET.
- #scope(name = nil, *args, default: nil, label: nil) ⇒ Object
Instance Method Details
#changes_columns_count ⇒ Object Also known as: changes_column_count
55 56 57 |
# File 'app/models/effective/effective_datatable/dsl/filters.rb', line 55 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 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# 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. the default value for this filter.' if value == :_no_value raise 'parse must be a Proc' if parse.present? && !parse.kind_of?(Proc) # Merge search if input_html.kind_of?(Hash) && input_html[:search].kind_of?(Hash) input_html = input_html.merge(input_html[:search]) end # Try to guess as value as ||= ( if input_html.key?(:collection) :select elsif value != nil Effective::Attribute.new(value).type end ) || :string datatable._filters[name.to_sym] = { value: value, as: as, label: label, name: name.to_sym, parse: parse, required: required, }.compact.reverse_merge(input_html) end |
#form(url: nil, verb: nil) ⇒ Object
This changes the filters from using an AJAX, to a POST or GET
47 48 49 50 51 52 53 |
# File 'app/models/effective/effective_datatable/dsl/filters.rb', line 47 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
35 36 37 38 39 40 41 42 43 44 |
# File 'app/models/effective/effective_datatable/dsl/filters.rb', line 35 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 |