Sha256: f0b6215aa33185c80db3eaf6468e9507013963813c0e8d9d288fe1c9166229ba

Contents?: true

Size: 1.9 KB

Versions: 1

Compression:

Stored size: 1.9 KB

Contents

# Author::    A.K.M. Ashrafuzzaman  (mailto:ashrafuzzaman.g2@gmail.com)
# License::   MIT-LICENSE

module QueryReport
  module FilterModule
    class Comparator
      attr_reader :filter, :type, :name, :default

      def initialize(filter, type, name, default=nil)
        @filter, @type, @name, @default = filter, type, name, default
      end

      def search_key
        "#{@filter.column.to_s}_#{@type}".to_sym
      end

      def search_tag_name
        "#{@filter.params_key}[#{search_key.to_s}]"
      end

      def param_value
        @filter.params[@filter.params_key] ? @filter.params[@filter.params_key][search_key] : stringified_default
      end

      def has_default?
        !@default.nil?
      end

      def stringified_default
        @stringified_default ||= case @filter.type
                                   when :date
                                     @default.kind_of?(String) ? @default : I18n.l(@default, format: QueryReport.config.date_format)
                                   when :datetime
                                     @default.kind_of?(String) ? @default : I18n.l(@default, format: QueryReport.config.datetime_format)
                                   else
                                     @default.to_s
                                 end
      end

      #convert param value which is a string to object like date and boolean
      def objectified_param_value
        @stringified_default ||= case @filter.type
                                   when :date
                                     Date.current.parse(@default)
                                   when :datetime
                                     Time.zone.parse(@default)
                                   when :boolean
                                     @default.to_boolean
                                   else
                                     @default
                                 end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
query_report-1.0.3 lib/query_report/comparator.rb