From 51b4e6d0984d6c6f6c35db1767144b9d3f7455b2 Mon Sep 17 00:00:00 2001 From: Florian Charlier Date: Fri, 8 Jul 2022 13:30:50 +0000 Subject: [PATCH] [IMP] survey: improve validation parameters UI and logic Purpose: Showing validation parameters with an arrow on one line (when possible) is prettier. Additionally, we now - Improve data consistency by preventing saving `validation_required` without setting validation parameters (also allows to keep arrow invisible when no value is set) - Explicitly add required flags to float values as they cannot be not set (see c5ae9b38). Task-2623482 Part of odoo#78705 Part-of: odoo/odoo#78705 --- addons/survey/models/survey_question.py | 16 +++- .../src/scss/survey_question_views.scss | 7 ++ addons/survey/views/survey_question_views.xml | 78 ++++++++++++------- 3 files changed, 70 insertions(+), 31 deletions(-) diff --git a/addons/survey/models/survey_question.py b/addons/survey/models/survey_question.py index 222aa29779c..44de17b052e 100644 --- a/addons/survey/models/survey_question.py +++ b/addons/survey/models/survey_question.py @@ -124,7 +124,7 @@ class SurveyQuestion(models.Model): validation_max_date = fields.Date('Maximum Date') validation_min_datetime = fields.Datetime('Minimum Datetime') validation_max_datetime = fields.Datetime('Maximum Datetime') - validation_error_msg = fields.Char('Validation Error message', translate=True) + validation_error_msg = fields.Char('Validation Error', translate=True) constr_mandatory = fields.Boolean('Mandatory Answer') constr_error_msg = fields.Char('Error message', translate=True) # answers @@ -312,6 +312,20 @@ class SurveyQuestion(models.Model): else: question.is_scored_question = False + @api.onchange('question_type', 'validation_required') + def _onchange_validation_parameters(self): + """Ensure no value stays set but not visible on form, + preventing saving (+consistency with question type).""" + self.validation_email = False + self.validation_length_min = 0 + self.validation_length_max = 0 + self.validation_min_date = False + self.validation_max_date = False + self.validation_min_datetime = False + self.validation_max_datetime = False + self.validation_min_float_value = 0 + self.validation_max_float_value = 0 + # ------------------------------------------------------------ # VALIDATION # ------------------------------------------------------------ diff --git a/addons/survey/static/src/scss/survey_question_views.scss b/addons/survey/static/src/scss/survey_question_views.scss index fca016908ef..6c25b808d2f 100644 --- a/addons/survey/static/src/scss/survey_question_views.scss +++ b/addons/survey/static/src/scss/survey_question_views.scss @@ -23,4 +23,11 @@ .o_preview_questions_choice { line-height: 1rem; } + + .o_survey_question_validation_parameters { + @extend .oe_inline; + > div, input.o_survey_question_validation_inline { + width: 45% !important; + } + } } diff --git a/addons/survey/views/survey_question_views.xml b/addons/survey/views/survey_question_views.xml index 94259f8951e..f20622fe996 100644 --- a/addons/survey/views/survey_question_views.xml +++ b/addons/survey/views/survey_question_views.xml @@ -19,7 +19,7 @@
@@ -115,12 +115,15 @@ ]}"> - - - + + + @@ -171,35 +174,50 @@ - - - - - - - - - - - + attrs="{'invisible': [('question_type', 'not in', ['char_box', 'numerical_box', 'date', 'datetime'])]}"/> +
Min/Max Limits
+
+ + + + + + + + + + + +
+ placeholder="Displayed when the answer entered is not valid."/> - - + attrs="{'invisible': [('question_type', 'not in', ['text_box', 'char_box', 'date', 'datetime', 'numerical_box'])]}" + placeholder="Help Participants know what to write"/> + +