class Quby::Compiler::DSL::QuestionnaireBuilder
Public Class Methods
new(target_instance, lookup_tables:)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 22 def initialize(target_instance, lookup_tables:) @questionnaire = target_instance @lookup_tables = lookup_tables @default_question_options = {} @custom_methods = {} end
Public Instance Methods
abortable()
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 88 def abortable @questionnaire.abortable = true end
add_lookup_tree(key, levels:, tree:)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 166 def add_lookup_tree(key, levels:, tree:) @questionnaire.lookup_tables[key] = {levels: levels, tree: tree} end
alarm(**options, &block)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 229 def alarm(**options, &block) variable(:alarm, action: true, **options, &block) end
allow_hotkeys(type = :all)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 92 def allow_hotkeys(type = :all) @questionnaire.allow_hotkeys = type end
allow_switch_to_bulk(value=true)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 142 def allow_switch_to_bulk(value=true) @questionnaire.allow_switch_to_bulk = value end
attention(**options, &block)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 225 def attention(**options, &block) variable(:attention, action: true, **options, &block) end
bar_chart(*args, &block)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 248 def bar_chart(*args, &block) builder = BarChartBuilder.new(@questionnaire, *args) @questionnaire.add_chart(builder.build(&block)) end
completion(**options, &block)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 233 def completion(**options, &block) variable(:completion, completion: true, **options, &block) end
css(value)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 138 def css(value) @questionnaire.extra_css += value end
custom_method(key, &block)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 155 def custom_method(key, &block) if PanelBuilder.new(nil, custom_methods: @custom_methods).respond_to? key fail 'Custom method trying to override existing method' end @custom_methods[key] = block end
deactivate_answers_requested_at(timestamp)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 126 def deactivate_answers_requested_at(timestamp) @questionnaire.deactivate_answers_requested_at = timestamp end
default_answer_value(value)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 146 def default_answer_value(value) @questionnaire.default_answer_value = value end
default_question_options(**options)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 170 def default_question_options(**options) @default_question_options.merge!(options) end
description(description)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 61 def description(description) @questionnaire.description = description end
do_not_check_key_clashes()
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 45 def do_not_check_key_clashes @questionnaire.check_key_clashes = false end
do_not_check_score_keys_consistency()
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 49 def do_not_check_score_keys_consistency @questionnaire.check_score_keys_consistency = false end
do_not_validate_html()
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 53 def do_not_validate_html @questionnaire.validate_html = false end
flag(**flag_options)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 258 def flag(**flag_options) @questionnaire.add_flag flag_options end
import_lookup_tree(key)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 162 def import_lookup_tree(key) @questionnaire.lookup_tables[key] = @lookup_tables.fetch(key) end
key(key)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 33 def key(key) # no-op, key is now passed in to Questionnaire constructor end
language(language)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 101 def language(language) @questionnaire.language = language end
leave_page_alert(text)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 29 def leave_page_alert(text) @questionnaire.leave_page_alert = text end
license(type, licensor: nil)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 96 def license(type, licensor: nil) @questionnaire.license = type @questionnaire.licensor = licensor end
line_chart(*args, &block)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 243 def line_chart(*args, &block) builder = LineChartBuilder.new(@questionnaire, *args) @questionnaire.add_chart(builder.build(&block)) end
outcome_description(description)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 65 def outcome_description(description) @questionnaire.outcome_description = description end
outcome_regeneration_requested_at(timestamp)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 122 def outcome_regeneration_requested_at(timestamp) @questionnaire.outcome_regeneration_requested_at = timestamp end
outcome_table(**table_options)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 266 def outcome_table(**table_options) @questionnaire.add_outcome_table table_options end
overview_chart(*args, &block)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 237 def overview_chart(*args, &block) raise "Cannot define more than one overview chart" if @questionnaire.charts.overview.present? builder = OverviewChartBuilder.new(@questionnaire, *args) @questionnaire.charts.overview = builder.build(&block) end
panel(title = nil, options = {}, &block)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 150 def panel(title = nil, options = {}, &block) panel = PanelBuilder.build(title, **options, **default_panel_options, &block) @questionnaire.add_panel(panel) end
question(key, **options, &block)
click to toggle source
Short-circuit the question command to perform an implicit panel
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 175 def question(key, **options, &block) panel(nil, default_panel_options) do question(key, questionnaire: @questionnaire, **@default_question_options, **options, &block) end end
radar_chart(*args, &block)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 253 def radar_chart(*args, &block) builder = RadarChartBuilder.new(@questionnaire, *args) @questionnaire.add_chart(builder.build(&block)) end
renderer_version(version)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 134 def renderer_version(version) @questionnaire.renderer_version = version end
respondent_types(*respondent_types)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 105 def respondent_types(*respondent_types) @questionnaire.respondent_types = respondent_types end
roqua_keys(*keys)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 37 def roqua_keys(*keys) @questionnaire.roqua_keys = keys end
sbg_domain(sbg_code, outcome:, from: nil, till: nil, sbg_key: nil, primary: false)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 77 def sbg_domain(sbg_code, outcome:, from: nil, till: nil, sbg_key: nil, primary: false) @questionnaire.sbg_domains << { sbg_code: sbg_code, from: from, till: till, outcome: outcome, sbg_key: sbg_key || @questionnaire.sbg_key, primary: primary } end
sbg_key(sbg_key)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 73 def sbg_key(sbg_key) @questionnaire.sbg_key = sbg_key end
score(key, **options, &block)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 204 def score(key, **options, &block) @questionnaire.errors.add "Score #{key}", 'misses label in score call' if options[:label].blank? schema = options.delete(:schema) score_schema(key, options[:label], schema) if schema.present? variable(key, score: true, **options, &block) end
score_schema(key, label, options = nil, &block)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 211 def score_schema(key, label, options = nil, &block) if block schema, calculations = ScoreSchemaBuilder.build(key: key, label: label, &block) @questionnaire.add_score_schema schema calculations.each do |calculation| @questionnaire.add_score_calculation calculation end else @questionnaire.add_score_schema Entities::ScoreSchema.new key: key, label: label, subscore_schemas: options end end
seeds_patch(value)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 41 def seeds_patch(value) @questionnaire.seeds_patch = value end
short_description(description)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 69 def short_description(description) @questionnaire.short_description = description end
table(**options, &block)
click to toggle source
Short-circuit the table command to perform an implicit panel
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 189 def table(**options, &block) panel(nil, **default_panel_options) do table(**options, &block) end end
text(value, **options)
click to toggle source
Short-circuit the text command to perform an implicit panel
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 182 def text(value, **options) panel(nil, **default_panel_options) do text(value, **options) end end
textvar(**textvar_options)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 262 def textvar(**textvar_options) @questionnaire.add_textvar textvar_options end
title(title)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 57 def title(title) @questionnaire.title = title end
variable(key, **options, &block)
click to toggle source
variable :totaal do
# Plain old Ruby code here, executed in the scope of the answer # variables are private to the score calculation q01 + q02 + q03
end
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 200 def variable(key, **options, &block) @questionnaire.add_score_calculation ScoreBuilder.new(key, **options, &block).build end
version(number, release_notes:, regenerate_outcome: false, deactivate_answers: false)
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 113 def version(number, release_notes:, regenerate_outcome: false, deactivate_answers: false) @questionnaire.versions << Entities::Version.new( number: number, release_notes: release_notes, regenerate_outcome: regenerate_outcome, deactivate_answers: deactivate_answers ) end
Private Instance Methods
default_panel_options()
click to toggle source
# File lib/quby/compiler/dsl/questionnaire_builder.rb, line 272 def default_panel_options {questionnaire: @questionnaire, default_question_options: @default_question_options, custom_methods: @custom_methods} end