Module: Surveyor::Models::QuestionMethods

Extended by:
ActiveSupport::Concern
Includes:
ActiveModel::ForbiddenAttributesProtection, ActiveModel::Validations, Surveyor::MustacheContext
Included in:
Question
Defined in:
lib/surveyor/models/question_methods.rb

Instance Method Summary collapse

Methods included from Surveyor::MustacheContext

#in_context

Instance Method Details

#css_class(response_set) ⇒ Object



57
58
59
# File 'lib/surveyor/models/question_methods.rb', line 57

def css_class(response_set)
  [(dependent? ? "q_dependent" : nil), (triggered?(response_set) ? nil : "q_hidden"), custom_class].compact.join(" ")
end

#default_argsObject



31
32
33
34
35
36
37
38
# File 'lib/surveyor/models/question_methods.rb', line 31

def default_args
  self.is_mandatory ||= false
  self.display_type ||= "default"
  self.pick ||= "none"
  self.data_export_identifier ||= Surveyor::Common.normalize(text)
  self.short_text ||= text
  self.api_id ||= Surveyor::Common.generate_api_id
end

#dependent?Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/surveyor/models/question_methods.rb', line 51

def dependent?
  self.dependency != nil
end

#display_type=(val) ⇒ Object



43
44
45
# File 'lib/surveyor/models/question_methods.rb', line 43

def display_type=(val)
  write_attribute(:display_type, val.nil? ? nil : val.to_s)
end

#help_text_for(context = nil, locale = nil) ⇒ Object



72
73
74
# File 'lib/surveyor/models/question_methods.rb', line 72

def help_text_for(context = nil, locale = nil)
  in_context(translation(locale)[:help_text], context)
end

#initialize(*args) ⇒ Object

Instance Methods



26
27
28
29
# File 'lib/surveyor/models/question_methods.rb', line 26

def initialize(*args)
  super(*args)
  default_args
end

#mandatory?Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/surveyor/models/question_methods.rb', line 47

def mandatory?
  self.is_mandatory == true
end

#part_of_group?Boolean

Returns:

  • (Boolean)


61
62
63
# File 'lib/surveyor/models/question_methods.rb', line 61

def part_of_group?
  !self.question_group.nil?
end

#pick=(val) ⇒ Object



40
41
42
# File 'lib/surveyor/models/question_methods.rb', line 40

def pick=(val)
  write_attribute(:pick, val.nil? ? nil : val.to_s)
end

#renderer(g = question_group) ⇒ Object



85
86
87
88
# File 'lib/surveyor/models/question_methods.rb', line 85

def renderer(g = question_group)
  r = [g ? g.renderer.to_s : nil, display_type].compact.join("_")
  r.blank? ? :default : r.to_sym
end

#solo?Boolean

Returns:

  • (Boolean)


64
65
66
# File 'lib/surveyor/models/question_methods.rb', line 64

def solo?
  self.question_group.nil?
end

#split(text, position = nil) ⇒ Object



75
76
77
78
79
80
81
82
83
84
# File 'lib/surveyor/models/question_methods.rb', line 75

def split(text, position=nil)
  case position
  when :pre
    text.split("|",2)[0]
  when :post
    text.split("|",2)[1]
  else
    text
  end.to_s
end

#text_for(position = nil, context = nil, locale = nil) ⇒ Object



68
69
70
71
# File 'lib/surveyor/models/question_methods.rb', line 68

def text_for(position = nil, context = nil, locale = nil)
  return "" if display_type == "hidden_label"
  imaged(split(in_context(translation(locale)[:text], context), position))
end

#translation(locale) ⇒ Object



89
90
91
92
93
# File 'lib/surveyor/models/question_methods.rb', line 89

def translation(locale)
  {:text => self.text, :help_text => self.help_text}.with_indifferent_access.merge(
    (self.survey_section.survey.translation(locale)[:questions] || {})[self.reference_identifier] || {}
  )
end

#triggered?(response_set) ⇒ Boolean

Returns:

  • (Boolean)


54
55
56
# File 'lib/surveyor/models/question_methods.rb', line 54

def triggered?(response_set)
  dependent? ? self.dependency.is_met?(response_set) : true
end