module ActiveScaffold::Bridges::Shared::DateBridge::Finder::ClassMethods
Public Instance Methods
condition_for_date_bridge_type(column, value, like_pattern)
click to toggle source
# File lib/active_scaffold/bridges/shared/date_bridge.rb, line 115 def condition_for_date_bridge_type(column, value, like_pattern) operator = ActiveScaffold::Finder::NUMERIC_COMPARATORS.include?(value['opt']) && value['opt'] != 'BETWEEN' ? value['opt'] : nil from_value, to_value = date_bridge_from_to(column, value) if column.search_sql.is_a? Proc column.search_sql.call(from_value, to_value, operator) else if operator.nil? ['%{search_sql} BETWEEN ? AND ?', from_value.to_s(:db), to_value.to_s(:db)] unless from_value.nil? || to_value.nil? else ["%{search_sql} #{value['opt']} ?", from_value.to_s(:db)] unless from_value.nil? end end end
date_bridge_column_date?(column)
click to toggle source
# File lib/active_scaffold/bridges/shared/date_bridge.rb, line 203 def date_bridge_column_date?(column) if [:date_picker, :datetime_picker].include? column.form_ui column.form_ui == :date_picker else (!column.column.nil? && [:date].include?(column.column.type)) end end
date_bridge_from_to(column, value)
click to toggle source
# File lib/active_scaffold/bridges/shared/date_bridge.rb, line 130 def date_bridge_from_to(column, value) conversion = datetime_conversion_for_condition(column) case value['opt'] when 'RANGE' values = date_bridge_from_to_for_range(column, value) # Avoid calling to_time, not needed and broken on rails >= 4, because return local time instead of UTC values.collect!(&conversion) if conversion != :to_time values when 'PAST', 'FUTURE' values = date_bridge_from_to_for_trend(column, value) # Avoid calling to_time, not needed and broken on rails >= 4, because return local time instead of UTC values.collect!(&conversion) if conversion != :to_time values else %w(from to).collect { |field| condition_value_for_datetime(column, value[field], conversion) } end end
date_bridge_from_to_for_range(column, value)
click to toggle source
# File lib/active_scaffold/bridges/shared/date_bridge.rb, line 179 def date_bridge_from_to_for_range(column, value) case value['range'] when 'TODAY' return date_bridge_now.beginning_of_day, date_bridge_now.end_of_day when 'YESTERDAY' return date_bridge_now.ago(1.day).beginning_of_day, date_bridge_now.ago(1.day).end_of_day when 'TOMORROW' return date_bridge_now.in(1.day).beginning_of_day, date_bridge_now.in(1.day).end_of_day else range_type, range = value['range'].downcase.split('_') raise ArgumentError unless %w(week month year).include?(range) case range_type when 'this' return date_bridge_now.send("beginning_of_#{range}".to_sym), date_bridge_now.send("end_of_#{range}") when 'prev' return date_bridge_now.ago(1.send(range.to_sym)).send("beginning_of_#{range}".to_sym), date_bridge_now.ago(1.send(range.to_sym)).send("end_of_#{range}".to_sym) when 'next' return date_bridge_now.in(1.send(range.to_sym)).send("beginning_of_#{range}".to_sym), date_bridge_now.in(1.send(range.to_sym)).send("end_of_#{range}".to_sym) else return nil, nil end end end
date_bridge_from_to_for_trend(column, value)
click to toggle source
# File lib/active_scaffold/bridges/shared/date_bridge.rb, line 152 def date_bridge_from_to_for_trend(column, value) case value['opt'] when 'PAST' trend_number = [value['number'].to_i, 1].max now = date_bridge_now if date_bridge_column_date?(column) from = now.beginning_of_day.ago((trend_number).send(value['unit'].downcase.singularize.to_sym)) to = now.end_of_day else from = now.ago((trend_number).send(value['unit'].downcase.singularize.to_sym)) to = now end return from, to when 'FUTURE' trend_number = [value['number'].to_i, 1].max now = date_bridge_now if date_bridge_column_date?(column) from = now.beginning_of_day to = now.end_of_day.in((trend_number).send(value['unit'].downcase.singularize.to_sym)) else from = now to = now.in((trend_number).send(value['unit'].downcase.singularize.to_sym)) end return from, to end end
date_bridge_now()
click to toggle source
# File lib/active_scaffold/bridges/shared/date_bridge.rb, line 148 def date_bridge_now Time.zone.now end