Class: QueryCustomFieldColumn

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

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?, #group_value, #inline?, #sortable?

Methods included from Redmine::I18n

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

Constructor Details

#initialize(custom_field, options = {}) ⇒ QueryCustomFieldColumn

Returns a new instance of QueryCustomFieldColumn.



136
137
138
139
140
141
142
143
144
145
# File 'app/models/query.rb', line 136

def initialize(custom_field, options={})
  name = :"cf_#{custom_field.id}"
  super(
    name,
    :sortable => custom_field.order_statement || false,
    :totalable =>  options.key?(:totalable) ? !!options[:totalable] : custom_field.totalable?,
    :inline => custom_field.full_width_layout? ? false : true
  )
  @cf = custom_field
end

Instance Method Details

#captionObject



155
156
157
# File 'app/models/query.rb', line 155

def caption
  @cf.name
end

#css_classesObject



184
185
186
# File 'app/models/query.rb', line 184

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

#custom_fieldObject



159
160
161
# File 'app/models/query.rb', line 159

def custom_field
  @cf
end

#group_by_statementObject



151
152
153
# File 'app/models/query.rb', line 151

def group_by_statement
  @cf.group_statement
end

#groupable?Boolean

Returns:

  • (Boolean)


147
148
149
# File 'app/models/query.rb', line 147

def groupable?
  group_by_statement.present?
end

#value(object) ⇒ Object



173
174
175
176
177
178
179
180
181
182
# File 'app/models/query.rb', line 173

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



163
164
165
166
167
168
169
170
171
# File 'app/models/query.rb', line 163

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