Sha256: 5e054970d7fa5c5419901ed6de1f391fee9be8f2a353fe7701bd8c2bd4b8c50b

Contents?: true

Size: 1.99 KB

Versions: 4

Compression:

Stored size: 1.99 KB

Contents

# encoding: utf-8
module Wice
  module Columns #:nodoc:
    class ViewColumnInteger < ViewColumn #:nodoc:
      def render_filter_internal(params) #:nodoc:
        @contains_a_text_input = true

        @query, _, parameter_name, @dom_id = form_parameter_name_id_and_query(eq: '')

        opts = { size: 3, id: @dom_id, class: 'range-start' }

        opts[:class] += ' form-control input-sm'

        if auto_reload
          opts[:class] += ' auto-reload'
        end

        text_field_tag(parameter_name,  params[:eq], opts)
      end

      def yield_declaration_of_column_filter #:nodoc:
        {
          templates: [@query],
          ids:       [@dom_id]
        }
      end

      def has_auto_reloading_input? #:nodoc:
        auto_reload
      end
    end

    class ConditionsGeneratorColumnInteger < ConditionsGeneratorColumn  #:nodoc:
      def get_op_and_value(val) #:nodoc:
        num = nil
        op  = nil

        # remove spaces
        val = val.gsub(' ', '')

        start_of_num = val =~ /[0-9.-]/ # first digit, dot or negative sign
        if start_of_num
          op = val[0...start_of_num]
          op = '=' if op == ''
          num = Float(val[start_of_num..-1]) rescue nil

          op = nil unless ['<', '>', '<=', '>=', '='].include?(op)
        end
        [op, num]
      end

      def generate_conditions(table_alias, opts)   #:nodoc:
        unless opts.is_a? Hash
          Wice.log 'invalid parameters for the grid integer filter - must be a hash'
          return false
        end
        conditions = [[]]
        if opts[:eq]
          op, num = get_op_and_value(opts[:eq])
          if op && num
            conditions[0] << " #{@column_wrapper.alias_or_table_name(table_alias)}.#{@column_wrapper.name} " + op + ' ? '
            conditions << num
          else
            opts.delete(:eq)
          end
        end

        if conditions.size == 1
          return false
        end

        conditions[0] = conditions[0].join(' and ')

        conditions
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
wice_grid_ms-3.6.2 lib/wice/columns/column_integer.rb
wice_grid_ms-3.6.1 lib/wice/columns/column_integer.rb
wice_grid_ms-3.6.0 lib/wice/columns/column_integer.rb
wice_grid-3.6.0 lib/wice/columns/column_integer.rb