Class: QueryFilter::Utils::DatePeriod

Inherits:
Object
  • Object
show all
Defined in:
lib/query_filter/utils/date_period.rb

Constant Summary collapse

TIME_FORMAT =
'%Y-%m-%d %H:%M:%S'

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(date_from = nil, date_to = nil, format = nil) ⇒ DatePeriod

Returns a new instance of DatePeriod.



10
11
12
13
14
# File 'lib/query_filter/utils/date_period.rb', line 10

def initialize(date_from = nil, date_to = nil, format = nil)
  @format = (format.blank? ? QueryFilter.date_period_format : format)
  @date_from_raw = date_from
  @date_to_raw = date_to
end

Instance Attribute Details

#date_from_rawObject (readonly)

Returns the value of attribute date_from_raw.



6
7
8
# File 'lib/query_filter/utils/date_period.rb', line 6

def date_from_raw
  @date_from_raw
end

#date_to_rawObject (readonly)

Returns the value of attribute date_to_raw.



6
7
8
# File 'lib/query_filter/utils/date_period.rb', line 6

def date_to_raw
  @date_to_raw
end

#formatObject (readonly)

Returns the value of attribute format.



6
7
8
# File 'lib/query_filter/utils/date_period.rb', line 6

def format
  @format
end

Class Method Details

.parse_from_string(value, format = nil) ⇒ Object



71
72
73
74
75
76
77
78
79
80
# File 'lib/query_filter/utils/date_period.rb', line 71

def self.parse_from_string(value, format = nil)
  return value if value.is_a?(DatePeriod)

  if value.blank?
    new(nil, nil, format)
  else
    dates = value.to_s.split(QueryFilter.date_period_splitter).map(&:strip)
    new(dates[0], dates[1], format)
  end
end

Instance Method Details

#as_json(options = nil) ⇒ Object



64
65
66
67
68
69
# File 'lib/query_filter/utils/date_period.rb', line 64

def as_json(options = nil)
  {
    date_from: datefrom,
    date_to: dateto
  }.merge(options || {})
end

#date_fromObject



24
25
26
# File 'lib/query_filter/utils/date_period.rb', line 24

def date_from
  @date_from ||= date_from_original.beginning_of_day
end

#date_from_originalObject



32
33
34
# File 'lib/query_filter/utils/date_period.rb', line 32

def date_from_original
  @date_from_original ||= normalize_date(@date_from_raw)
end

#date_toObject



28
29
30
# File 'lib/query_filter/utils/date_period.rb', line 28

def date_to
  @date_to ||= date_to_original.end_of_day
end

#date_to_originalObject



36
37
38
# File 'lib/query_filter/utils/date_period.rb', line 36

def date_to_original
  @date_to_original ||= normalize_date(@date_to_raw)
end

#datefromObject



44
45
46
# File 'lib/query_filter/utils/date_period.rb', line 44

def datefrom
  @datefrom ||= I18n.l(date_from, format: @format)
end

#datetoObject



48
49
50
# File 'lib/query_filter/utils/date_period.rb', line 48

def dateto
  @dateto ||= I18n.l(date_to, format: @format)
end

#default?Boolean

Returns:

  • (Boolean)


60
61
62
# File 'lib/query_filter/utils/date_period.rb', line 60

def default?
  @date_from_raw.blank? && @date_to_raw.blank?
end

#rangeObject



16
17
18
# File 'lib/query_filter/utils/date_period.rb', line 16

def range
  @range ||= date_from..date_to
end

#range_originalObject



20
21
22
# File 'lib/query_filter/utils/date_period.rb', line 20

def range_original
  @range_original ||= date_from_original..date_to_original
end

#titleObject



40
41
42
# File 'lib/query_filter/utils/date_period.rb', line 40

def title
  @title ||= to_human
end

#to_humanObject



56
57
58
# File 'lib/query_filter/utils/date_period.rb', line 56

def to_human
  [datefrom, dateto].join(" #{QueryFilter.date_period_splitter} ")
end

#to_paramObject



52
53
54
# File 'lib/query_filter/utils/date_period.rb', line 52

def to_param
  [datefrom, dateto].join(QueryFilter.date_period_splitter)
end