Module: SurveyMetamodel::ViewElement::ClassModule

Defined in:
lib/generators/survey/metamodels/view.rb

Instance Method Summary collapse

Instance Method Details

#get_formObject



135
136
137
138
139
140
141
142
143
144
145
# File 'lib/generators/survey/metamodels/view.rb', line 135

def get_form
  cont = self
  while true
    if !cont.container.nil?
      cont = cont.container
    else
      break
    end
  end
  return cont.form
end

#has_label?Boolean

Returns:

  • (Boolean)


77
78
79
# File 'lib/generators/survey/metamodels/view.rb', line 77

def has_label?
  return self.is_a?(Input)
end

#has_model_element?Boolean

Returns:

  • (Boolean)


81
82
83
# File 'lib/generators/survey/metamodels/view.rb', line 81

def has_model_element?
  return (model_element? and !is_layout_element?)
end

#has_valid_model_element?Boolean

Returns:

  • (Boolean)


85
86
87
# File 'lib/generators/survey/metamodels/view.rb', line 85

def has_valid_model_element?
  return (model_element? or is_layout_element?)
end

#is_layout_element?Boolean

Returns:

  • (Boolean)


73
74
75
# File 'lib/generators/survey/metamodels/view.rb', line 73

def is_layout_element?
  return (self.is_a?(Group) or self.is_a?(Page) or self.is_a?(Image))
end

#is_mandatory?Boolean

Returns:

  • (Boolean)


89
90
91
# File 'lib/generators/survey/metamodels/view.rb', line 89

def is_mandatory?
  return (!model_element.nil? and model_element.rules.any? { |r| r.is_a?(PresenceRule) })
end

#model_element?Boolean

Returns:

  • (Boolean)


69
70
71
# File 'lib/generators/survey/metamodels/view.rb', line 69

def model_element?
  return !model_element.nil?
end

#number_title(i) ⇒ Object



128
129
130
131
132
133
# File 'lib/generators/survey/metamodels/view.rb', line 128

def number_title(i)
  suffix = (is_mandatory?)? " *": ""
  real_title = "#{title}#{suffix}"
  num_title = (i > 0)? ("#{i}. #{real_title}"): real_title
  return num_title
end

#rulesObject



93
94
95
# File 'lib/generators/survey/metamodels/view.rb', line 93

def rules
  model_element.rules if !model_element.nil?
end

#set_model_elementObject



97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# File 'lib/generators/survey/metamodels/view.rb', line 97

def set_model_element
  if self.is_a?(Group) or (self.is_a?(Page) and !self.elements.empty?)
    elements.each do |element|
      element.set_model_element
    end
  end
  
  if self.is_a?(Input) and !self.for.nil?
    self.name = self.for.name
    self.title = self.for.title
    self.for.model_element = nil
  end
  
  cont = get_form
  cont.set_model_element if !cont.model_element?
  view = cont.view
  survey = view.app.model.surveys.select { |s| s.name == cont.name }.first
  model_elements = survey.questions.select { |q| q.name == self.name or q.name == self.snake_class }
  
  if !model_elements.nil? and model_elements.count == 1
    self.model_element = model_elements.first.dup
    self.title = model_element.title if !title? and model_element.title?
  end
  if !model_element.nil? and model_element.name == self.snake_class
    self.name = self.snake_class
    self.class_name = self.snake_base_class
  end
  
  raise "Names cannot be nil and can only consist of letters, numbers and underscore (name='#{name}')!" if has_name? and !(self.name.scan(/\w+/).count == 1)
end