class SurveyGizmo::API::Survey
Public Instance Methods
actual_questions()
click to toggle source
# File lib/survey_gizmo/api/survey.rb, line 44 def actual_questions questions.reject { |q| q.type =~ /^(instructions|urlredirect|logic|media|script|javascript)$/ } end
belongs_to?(team)
click to toggle source
# File lib/survey_gizmo/api/survey.rb, line 83 def belongs_to?(team) team_names.any? { |t| t == team } end
campaigns()
click to toggle source
# File lib/survey_gizmo/api/survey.rb, line 87 def campaigns @campaigns ||= Campaign.all(children_params.merge(all_pages: true)).to_a end
number_of_completed_responses()
click to toggle source
Statistics array of arrays looks like:
- [“Partial”, 2], [“Disqualified”, 28], [“Complete”, 15]
# File lib/survey_gizmo/api/survey.rb, line 54 def number_of_completed_responses if statistics && !statistics.empty? && (completed_data = statistics.find { |a| a[0] == 'Complete' }) completed_data[1] else 0 end end
pages()
click to toggle source
# File lib/survey_gizmo/api/survey.rb, line 29 def pages # SurveyGizmo sends down the page info to .first requests but NOT to .all requests, so we must load pages # manually. We should be able to just .reload this Survey BUT we can't make :pages a Virtus attribute without # requiring a call to this method during Survey.save @pages ||= Page.all(children_params.merge(all_pages: true)).to_a @pages.each { |p| p.attributes = children_params } end
questions()
click to toggle source
Sub question handling is in resource.rb and page.rb. It should probably be here instead but if it gets moved here and people try to request all the questions for a specific page directly from a ::API::Question request or from Page.questions
, sub questions will not be included! So I left it there for least astonishment.
# File lib/survey_gizmo/api/survey.rb, line 40 def questions @questions ||= pages.flat_map { |p| p.questions } end
responses(conditions = {})
click to toggle source
# File lib/survey_gizmo/api/survey.rb, line 48 def responses(conditions = {}) Response.all(conditions.merge(children_params).merge(all_pages: !conditions[:page])) end
server_has_new_results_since?(time, filters = [])
click to toggle source
# File lib/survey_gizmo/api/survey.rb, line 62 def server_has_new_results_since?(time, filters = []) Response.all( children_params.merge( page: 1, resultsperpage: 1, filters: filters + [Response.submitted_since_filter(time)] ) ).to_a.size > 0 end
team_names()
click to toggle source
# File lib/survey_gizmo/api/survey.rb, line 79 def team_names teams.map { |t| t['name'] } end
teams()
click to toggle source
As of 2015-12-18, when you request data on multiple surveys from /survey, the team variable comes back as “0”. If you request one survey at a time from /survey/{id}, it is populated correctly.
# File lib/survey_gizmo/api/survey.rb, line 74 def teams @individual_survey ||= self.reload @individual_survey.team end