Class: QueryCustomFieldColumn

Inherits:
QueryColumn show all
Defined in:
app/models/query.rb

Overview

Since:

  • 0.6.1

Direct Known Subclasses

QueryAssociationCustomFieldColumn

Instance Attribute Summary

Attributes inherited from QueryColumn

#default_order, #groupable, #name, #sortable, #totalable

Instance Method Summary collapse

Methods inherited from QueryColumn

#frozen?, #inline?, #sortable?

Methods included from Redmine::I18n

#current_language, #day_letter, #day_name, #find_language, #format_date, #format_time, #l, #l_hours, #l_hours_short, #l_or_humanize, #languages_options, #ll, #lu, #month_name, #set_language_if_valid, #valid_languages

Constructor Details

#initialize(custom_field) ⇒ QueryCustomFieldColumn

Returns a new instance of QueryCustomFieldColumn



79
80
81
82
83
84
85
86
# File 'app/models/query.rb', line 79

def initialize(custom_field)
  self.name = "cf_#{custom_field.id}".to_sym
  self.sortable = custom_field.order_statement || false
  self.groupable = custom_field.group_statement || false
  self.totalable = custom_field.totalable?
  @inline = true
  @cf = custom_field
end

Instance Method Details

#captionObject



88
89
90
# File 'app/models/query.rb', line 88

def caption
  @cf.name
end

#css_classesObject

Since:

  • 1.2.0



116
117
118
# File 'app/models/query.rb', line 116

def css_classes
  @css_classes ||= "#{name} #{@cf.field_format}"
end

#custom_fieldObject



92
93
94
# File 'app/models/query.rb', line 92

def custom_field
  @cf
end

#value(object) ⇒ Object

Since:

  • 0.9.0



105
106
107
108
109
110
111
112
113
114
# File 'app/models/query.rb', line 105

def value(object)
  raw = value_object(object)
  if raw.is_a?(Array)
    raw.map {|r| @cf.cast_value(r.value)}
  elsif raw
    @cf.cast_value(raw.value)
  else
    nil
  end
end

#value_object(object) ⇒ Object

Since:

  • 2.6.0



96
97
98
99
100
101
102
103
# File 'app/models/query.rb', line 96

def value_object(object)
  if custom_field.visible_by?(object.project, User.current)
    cv = object.custom_values.select {|v| v.custom_field_id == @cf.id}
    cv.size > 1 ? cv.sort {|a,b| a.value.to_s <=> b.value.to_s} : cv.first
  else
    nil
  end
end