Module: SurveyorGui::Models::QuestionTypeMethods::ClassMethods

Defined in:
lib/surveyor_gui/models/question_type_methods.rb

Overview

—————————– end instance methods —————————————————————

Constant Summary collapse

AllTypes =
[
   #                                                                                             group       answer
   #                                                                   part_of_         display  display     response
   #id               #text                                             group?    pick   type     type        class
   [:pick_one,       "Multiple Choice (only one answer)"               , false,  :one,  "default", nil,      :all],
   [:pick_any,       "Multiple Choice (multiple answers)"              , false,  :any,  "default", nil,      :all],
   [:box,            "Text Box (for extended text, like notes, etc.)"  , false,  :none, "default", nil,      :text],
   [:dropdown,       "Dropdown List"                                   , false,  :one,  :dropdown, nil,      :all],
   [:string,         "Text"                                            , false,  :none, "default", nil,      :string],
   [:number,         "Number"                                          , false,  :none, "default", nil,      :float],
   [:number,         "Number"                                          , false,  :none, "default", nil,      :integer],
   [:date,           "Date"                                            , false,  :none, "default", nil,      :date],
   [:datetime,       "Date and Time"                                   , false,  :none, "default", nil,      :datetime],
   [:time,           "Time"                                            , false,  :none, "default", nil,      :time],
   [:slider,         "Slider"                                          , false,  :one,  :slider,   nil,      :all],
   [:stars,          "1-5 Stars"                                       , false,  :one,  :stars,    nil,      :all],
   [:label,          "Label"                                           , false,  :none, :label,    nil,      :all],
   [:file,           "File Upload"                                     , false,  :none, "default", nil,      :blob],
   [:grid_one,       "Grid (pick one)"                                 , true,   :one,  "default", :grid,    :all],
   [:grid_any,       "Grid (pick any)"                                 , true,   :any,  "default", :grid,    :all],
   [:grid_dropdown,  "Grid (dropdowns)"                                , true,   :one,  :dropdown, :grid,    :all],
   [:group_inline,   "Inline Question Group"                           , true,   nil,   nil,       :inline,  :all],
   [:group_default,  "Question Group"                                  , true,   nil,   nil,       :default, :all],
   [:repeater,       "Repeater (multiple responses)"                   , true,   nil,  :all,       :repeater, :all],
   #nothing below here shows up on the question builder choices for question type
   [:pick_one,       "Multiple Choice (only one answer)"               , true,   :one,  "default", :inline,  :all],
   [:pick_any,       "Multiple Choice (multiple answers)"              , true,   :any,  "default", :inline,  :all],
   [:box,            "Text Box (for extended text, like notes, etc.)"  , true,  :none, "default", :inline,  :text],
   [:dropdown,       "Dropdown List"                                   , true,  :one,  :dropdown, :inline,  :all],
   [:string,         "Text"                                            , true,  :none, "default", :inline,  :string],
   [:number,         "Number"                                          , true,  :none, "default", :inline,  :float],
   [:number,         "Number"                                          , true,  :none, "default", :inline,  :integer],
   [:date,           "Date"                                            , true,  :none, "default", :inline,  :date],
   [:datetime,       "Date and Time"                                   , true,  :none, "default", :inline,  :datetime],
   [:time,           "Time"                                            , true,  :none, "default", :inline,  :time],
   [:slider,         "Slider"                                          , true,  :one,  :slider,   :inline,  :all],
   [:stars,          "1-5 Stars"                                       , true,  :one,  :stars,    :inline,  :all],
   [:label,          "Label"                                           , true,  :none, :label,    :inline,  :all],
   [:file,           "File Upload"                                     , true,  :none, "default", :inline,  :blob],
   [:string,         "Text"                                            , true,  :none, :default,  :grid,    :all],
   
   
   [:pick_one,       "Multiple Choice (only one answer)"               , true,   :one,  "default",:default,  :all],
   [:pick_any,       "Multiple Choice (multiple answers)"              , true,   :any,  "default",:default,  :all],
   [:box,            "Text Box (for extended text, like notes, etc.)"  , true,  :none, "default", :default,  :text],
   [:dropdown,       "Dropdown List"                                   , true,  :one,  :dropdown, :default,  :all],
   [:string,         "Text"                                            , true,  :none, "default", :default,  :string],
   [:number,         "Number"                                          , true,  :none, "default", :default,  :float],
   [:number,         "Number"                                          , true,  :none, "default", :default,  :integer],
   [:date,           "Date"                                            , true,  :none, "default", :default,  :date],
   [:datetime,       "Date and Time"                                   , true,  :none, "default", :default,  :datetime],
   [:time,           "Time"                                            , true,  :none, "default", :default,  :time],
   [:slider,         "Slider"                                          , true,  :one,  :slider,   :default,  :all],
   [:stars,          "1-5 Stars"                                       , true,  :one,  :stars,    :default,  :all],
   [:label,          "Label"                                           , true,  :none, :label,    :default,  :all],
   [:file,           "File Upload"                                     , true,  :none, "default", :default,  :blob],
   
   [:pick_one,       "Multiple Choice (only one answer)"               , true,   :one,  "default",:repeater,  :all],
   [:pick_any,       "Multiple Choice (multiple answers)"              , true,   :any,  "default",:repeater,  :all],
   [:box,            "Text Box (for extended text, like notes, etc.)"  , true,  :none, "default", :repeater,  :text],
   [:dropdown,       "Dropdown List"                                   , true,  :one,  :dropdown, :repeater,  :all],
   [:string,         "Text"                                            , true,  :none, "default", :repeater,  :string],
   [:number,         "Number"                                          , true,  :none, "default", :repeater,  :float],
   [:number,         "Number"                                          , true,  :none, "default", :repeater,  :integer],
   [:date,           "Date"                                            , true,  :none, "default", :repeater,  :date],
   [:datetime,       "Date and Time"                                   , true,  :none, "default", :repeater,  :datetime],
   [:time,           "Time"                                            , true,  :none, "default", :repeater,  :time],
   [:slider,         "Slider"                                          , true,  :one,  :slider,   :repeater,  :all],
   [:stars,          "1-5 Stars"                                       , true,  :one,  :stars,    :repeater,  :all],
   [:label,          "Label"                                           , true,  :none, :label,    :repeater,  :all],
   [:file,           "File Upload"                                     , true,  :none, "default", :repeater,  :blob],
   
   [:string,         "Text"                                            , true,  :none, :default,  :grid,    :all],
   #surveyor seems to have an inline option that doesn't actually render inline yet.  Recognize it
   #but don't treat it differently.  See question 16 and 17 in kitchen_sink_survey.rb.
   [:pick_one,       "Multiple Choice (only one answer)"               , true,  :one,  "inline",  nil,      :answer],
   [:pick_any,       "Multiple Choice (multiple answers)"              , true,  :any,  "inline",  nil,      :answer],
   [:pick_one,       "Multiple Choice (only one answer)"               , false, :one,  "inline",  nil,      :answer],
   [:pick_any,       "Multiple Choice (multiple answers)"              , false, :any,  "inline",  nil,      :answer]
]

Instance Method Summary collapse

Instance Method Details

#allObject



383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
# File 'lib/surveyor_gui/models/question_type_methods.rb', line 383

def all
  arr = []
  type = Struct.new(:id, :text, :part_of_group, :pick, :display_type, :group_display_type, :response_class)
  AllTypes.each do |t|
    arr << QuestionType.new(id:                 t[0],
                            text:               t[1],
                            part_of_group:      t[2],
                            pick:               t[3],
                            display_type:       t[4],
                            group_display_type: t[5],
                            response_class:     t[6]
                            )
  end
  arr
end

#categorize_question(question) ⇒ Object



374
375
376
377
378
379
380
381
# File 'lib/surveyor_gui/models/question_type_methods.rb', line 374

def categorize_question(question)
  question_group_display_type = question.part_of_group? ? question.question_group.display_type : ""
  answer = question.answers.first
  all.each do |question_type|
    return question_type.id if _match_found(question, question_type, question_group_display_type, answer)
  end
  raise "No question_type matches question #{question.id}"
end

#find(id) ⇒ Object



399
400
401
# File 'lib/surveyor_gui/models/question_type_methods.rb', line 399

def find(id)
  all.select{|qt| qt.id == id}[0]
end