Class: Symphonia::ModelFilters::DateFilter
- Defined in:
- lib/symphonia/model_filters/date_filter.rb
Instance Attribute Summary collapse
-
#available_values ⇒ Object
Returns the value of attribute available_values.
Attributes inherited from Base
#caption, #name, #operator, #options, #query, #type, #value
Instance Method Summary collapse
-
#apply(scope) ⇒ Object
def operator=(o) if o == ‘!’ @operator = ‘not_in’ end end.
- #form_field(_c) ⇒ Object
-
#initialize(name, query, options = {}) ⇒ DateFilter
constructor
A new instance of DateFilter.
- #value=(q) ⇒ Object
Methods inherited from Base
Constructor Details
#initialize(name, query, options = {}) ⇒ DateFilter
Returns a new instance of DateFilter.
6 7 8 9 |
# File 'lib/symphonia/model_filters/date_filter.rb', line 6 def initialize(name, query, ={}) super @operator = 'in' end |
Instance Attribute Details
#available_values ⇒ Object
Returns the value of attribute available_values.
4 5 6 |
# File 'lib/symphonia/model_filters/date_filter.rb', line 4 def available_values @available_values end |
Instance Method Details
#apply(scope) ⇒ Object
def operator=(o)
if o == '!'
@operator = 'not_in'
end
end
28 29 30 31 32 |
# File 'lib/symphonia/model_filters/date_filter.rb', line 28 def apply(scope) super t = scope.arel_table scope.where(t[name].send(operator, value)) end |
#form_field(_c) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/symphonia/model_filters/date_filter.rb', line 53 def form_field(_c) groups = available_values.inject({}) do |mem, (time, values)| mem[_c.t("time.#{time}")] = values.collect do |(k, _val)| [_c.t("query_options.filter_date.values.#{k}"), k] end mem end selected = Array(@query.active_filters[name]) _c.content_tag(:div, class: 'row') do _c.select_tag("#{form_field_name}", _c.(groups, selected), { class: 'form-control', include_blank: true, onchange: 'symphoniaFiltersForm.dateFilterCallback(this)' }) + _c.content_tag(:div, class: 'filter-custom-date clearfix input-daterange input-group inline', style: 'display: none') do _c.date_field_tag("#{form_field_name}_custom[to]", '', { placeholder: _c.t('query_options.filter_date.to'), class: 'form-control datepicker pull-right' }) + # _c.content_tag(:span, _c.t('query_options.filter_date.to'), class: 'input-group-addon')+ _c.date_field_tag("#{form_field_name}_custom[from]", '', { placeholder: _c.t('query_options.filter_date.from'), class: 'form-control datepicker' }) end end end |
#value=(q) ⇒ Object
11 12 13 14 15 16 17 18 19 20 |
# File 'lib/symphonia/model_filters/date_filter.rb', line 11 def value=(q) v = available_values.values.reduce(:merge)[q.to_sym] @operator = 'between' unless q == 'today' @value = if q == 'custom' data = self.query.controller.params.require(:date_from_custom).permit(:from, :to) v.call(data) else v.call end end |