Sha256: 1435e6cb1b4c1b94cc96a65e98efa34aec19ee60422fec687f1e9992d89679c2

Contents?: true

Size: 1.86 KB

Versions: 19

Compression:

Stored size: 1.86 KB

Contents

module Effective
  module EffectiveDatatable
    module Dsl
      module Filters
        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)

          # Merge search
          if input_html.kind_of?(Hash) && input_html[:search].kind_of?(Hash)
            input_html = input_html.merge(input_html[:search])
          end

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

        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

        # This changes the filters from using an AJAX, to a POST or GET
        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

        def changes_columns_count
          form()
        end
        alias_method :changes_column_count, :changes_columns_count

      end
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
effective_datatables-3.6.3 app/models/effective/effective_datatable/dsl/filters.rb
effective_datatables-3.6.1 app/models/effective/effective_datatable/dsl/filters.rb
effective_datatables-3.6.0 app/models/effective/effective_datatable/dsl/filters.rb
effective_datatables-3.5.4 app/models/effective/effective_datatable/dsl/filters.rb
effective_datatables-3.5.3 app/models/effective/effective_datatable/dsl/filters.rb
effective_datatables-3.5.2 app/models/effective/effective_datatable/dsl/filters.rb
effective_datatables-3.5.0 app/models/effective/effective_datatable/dsl/filters.rb
effective_datatables-3.4.8 app/models/effective/effective_datatable/dsl/filters.rb
effective_datatables-3.4.7 app/models/effective/effective_datatable/dsl/filters.rb
effective_datatables-3.4.6 app/models/effective/effective_datatable/dsl/filters.rb
effective_datatables-3.4.5 app/models/effective/effective_datatable/dsl/filters.rb
effective_datatables-3.4.4 app/models/effective/effective_datatable/dsl/filters.rb
effective_datatables-3.4.3 app/models/effective/effective_datatable/dsl/filters.rb
effective_datatables-3.4.2 app/models/effective/effective_datatable/dsl/filters.rb
effective_datatables-3.4.1 app/models/effective/effective_datatable/dsl/filters.rb
effective_datatables-3.4.0 app/models/effective/effective_datatable/dsl/filters.rb
effective_datatables-3.3.14 app/models/effective/effective_datatable/dsl/filters.rb
effective_datatables-3.3.13 app/models/effective/effective_datatable/dsl/filters.rb
effective_datatables-3.3.12 app/models/effective/effective_datatable/dsl/filters.rb