diff --git a/microsetta_private_api/model/vue/vue_field.py b/microsetta_private_api/model/vue/vue_field.py index 903b27ec5..b6479ff0d 100644 --- a/microsetta_private_api/model/vue/vue_field.py +++ b/microsetta_private_api/model/vue/vue_field.py @@ -148,6 +148,36 @@ def __init__(self, question_id, question_text, valid_responses, } +class VueRadiosField(VueField): + def __init__(self, question_id, question_text, valid_responses, + question_shortname=None): + super().__init__( + type_="radios", + label=question_text, + model=str(question_id), + id_=str(question_id), + input_name=str(question_id), + featured=False, + visible=True, + disabled=False, + required=False, + multi=False, + default=valid_responses[0], + hint=None, + help_=None, + validator=None, + validate_debounce_time=None, + style_classes=None, + buttons=None, + attributes=None, + shortname=question_shortname + ) + self.values = valid_responses + self.radiosOptions = { + "value": valid_responses[0] + } + + class VueChecklistField(VueField): def __init__(self, question_id, question_text, valid_responses, question_shortname=None): diff --git a/microsetta_private_api/util/vue_adapter.py b/microsetta_private_api/util/vue_adapter.py index 977048c2b..7666a8bb8 100644 --- a/microsetta_private_api/util/vue_adapter.py +++ b/microsetta_private_api/util/vue_adapter.py @@ -1,6 +1,7 @@ from microsetta_private_api.model.vue.vue_field import (VueInputField, VueTextAreaField, VueSelectField, + VueRadiosField, VueChecklistField) from microsetta_private_api.model.vue.vue_group import VueGroup from microsetta_private_api.model.vue.vue_schema import VueSchema @@ -9,10 +10,16 @@ def to_vue_field(question, triggered_by=None): if question.response_type == "SINGLE": - vue_field = VueSelectField(question.id, - question.localized_text, - question.valid_responses, - question.short_name) + if len(question.valid_responses) < 7: + vue_field = VueRadiosField(question.id, + question.localized_text, + question.valid_responses, + question.short_name) + else: + vue_field = VueSelectField(question.id, + question.localized_text, + question.valid_responses, + question.short_name) elif question.response_type == "MULTIPLE": vue_field = VueChecklistField(question.id, question.localized_text,