From cbc80857610779d563284a68db8426f8a5e40953 Mon Sep 17 00:00:00 2001 From: David Beguin Date: Thu, 9 Apr 2020 09:13:13 +0000 Subject: [PATCH] [FIX] survey: don't show leaderboards if no nickname question in survey Before this commit, after each scored question, a intermediate leaderboard was shown, before going to the next question, even if no 'nickname' question was present in the survey. So that the leaderboards were display only 'anonymous' attendees, which is not really useful. Also, after last question, the final leaderbaord was not shown and the survey was closed immediatelly, which was not really coherent (show intermediate leaderboards but not the final one). After this commit, the leaderboards and the final one are shown only if a nickname question is present on the survey, so attendees can identify themselves and retreive their ranking on each leaderboards. Task ID: 2230980 X-original-commit: dd409de096c48f22476aff3f37526bc76c1cde12 --- .../static/src/js/survey_session_manage.js | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/addons/survey/static/src/js/survey_session_manage.js b/addons/survey/static/src/js/survey_session_manage.js index 79d53a2db91..4a9412cf2ad 100644 --- a/addons/survey/static/src/js/survey_session_manage.js +++ b/addons/survey/static/src/js/survey_session_manage.js @@ -255,14 +255,14 @@ publicWidget.registry.SurveySessionManage = publicWidget.Widget.extend({ return 'userInputs'; } else if (this.hasCorrectAnswers && ['question', 'userInputs'].includes(this.currentScreen)) { return 'results'; - } else if (['question', 'userInputs', 'results'].includes(this.currentScreen) && - this.isScoredQuestion) { - return 'leaderboard'; - } else if (this.sessionShowLeaderboard && this.isLastQuestion) { - return 'leaderboardFinal'; - } else { - return 'nextQuestion'; + } else if (this.sessionShowLeaderboard) { + if (['question', 'userInputs', 'results'].includes(this.currentScreen) && this.isScoredQuestion) { + return 'leaderboard'; + } else if (this.isLastQuestion) { + return 'leaderboardFinal'; + } } + return 'nextQuestion'; }, /** @@ -327,8 +327,8 @@ publicWidget.registry.SurveySessionManage = publicWidget.Widget.extend({ self.$el.fadeIn(self.fadeInOutTime, function () { self._startTimer(); }); - } else { - // Display last screen + } else if (self.sessionShowLeaderboard) { + // Display last screen if leaderboard activated self.isLastQuestion = true; self._setupLeaderboard().then(function () { self.$('.o_survey_session_leaderboard_title').text(_('Final Leaderboard')); @@ -336,6 +336,8 @@ publicWidget.registry.SurveySessionManage = publicWidget.Widget.extend({ self.$('.o_survey_leaderboard_buttons').removeClass('d-none'); self.leaderBoard.showLeaderboard(false); }); + } else { + self.$('.o_survey_session_close').click(); } }); },