From 3b8117c51c644b050b87811f1a923f6b7e5b7916 Mon Sep 17 00:00:00 2001
From: Benjamin Auder <benjamin.auder@somewhere>
Date: Mon, 5 Feb 2018 15:10:37 +0100
Subject: [PATCH] Bugs fixes

---
 TODO                                        | 2 --
 public/javascripts/assessment.js            | 5 ++++-
 public/javascripts/components/statements.js | 3 +++
 public/stylesheets/assessment.css           | 2 +-
 views/assessment.pug                        | 6 ++++--
 5 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/TODO b/TODO
index 73f669e..2c7a5b2 100644
--- a/TODO
+++ b/TODO
@@ -1,5 +1,3 @@
-Debug exam mode (and open too...): Vue.js warning + shift questions (not showing solution)
-
 Replace underscore by lodash (or better: ES6)
 Replace socket.io by Websockets ( https://www.npmjs.com/package/websocket )
 
diff --git a/public/javascripts/assessment.js b/public/javascripts/assessment.js
index 09caf12..9858643 100644
--- a/public/javascripts/assessment.js
+++ b/public/javascripts/assessment.js
@@ -129,7 +129,8 @@ let V = new Vue({
 					this.answers.indices = indices.concat( _.shuffle(remainingIndices) );
 				}
 				this.answers.index = !!paper ? paper.inputs.length : 0;
-				Vue.nextTick(statementsLibsRefresh);
+				this.answers.displayAll = assessment.display == "all";
+				this.answers.showSolution = false;
 				this.stage = 2;
 			};
 			if (assessment.mode == "open")
@@ -223,6 +224,7 @@ let V = new Vue({
 			if (assessment.mode == "open")
 			{
 				this.stage = 4;
+				this.answers.showSolution = true;
 				return;
 			}
 			$.ajax("/end/assessment", {
@@ -248,6 +250,7 @@ let V = new Vue({
 		setAnswers: function(m) {
 			for (let i=0; i<m.answers.length; i++)
 				assessment.questions[i].answer = m.answers[i];
+			this.answers.showSolution = true;
 			this.stage = 4;
 		},
 	},
diff --git a/public/javascripts/components/statements.js b/public/javascripts/components/statements.js
index 5bf6bdb..8cfbde3 100644
--- a/public/javascripts/components/statements.js
+++ b/public/javascripts/components/statements.js
@@ -109,6 +109,9 @@ Vue.component("statements", {
 			domTree
 		);
 	},
+	mounted: function() {
+		statementsLibsRefresh();
+	},
 	updated: function() {
 		// TODO: next line shouldn't be required: questions wordings + answer + options
 		// are processed earlier; their content should be updated at this time.
diff --git a/public/stylesheets/assessment.css b/public/stylesheets/assessment.css
index 2143f40..26d9d75 100644
--- a/public/stylesheets/assessment.css
+++ b/public/stylesheets/assessment.css
@@ -4,7 +4,7 @@ a#rightButton {
 	right: 0;
 }
 
-button#sendAnswer {
+button.sendAnswer {
 	display: block;
 	margin: 0 auto;
 }
diff --git a/views/assessment.pug b/views/assessment.pug
index 26221d8..5c573d7 100644
--- a/views/assessment.pug
+++ b/views/assessment.pug
@@ -44,11 +44,13 @@ block content
 						.introduction(v-html="assessment.introduction")
 				#stage2_4(v-if="[2,4].includes(stage)")
 					if assessment.time > 0
-						.card(v-if="stage==2")
+						.card(v-show="stage==2")
 							.timer.center {{ countdown }}
 					.card
-						button#sendAnswer.waves-effect.waves-light.btn(@click="sendAnswer") Send
+						button.sendAnswer.waves-effect.waves-light.btn(@click="sendAnswer") Send
 						statements(:questions="assessment.questions" :answers="answers")
+						if assessment.display == "all"
+							button.sendAnswer.waves-effect.waves-light.btn(@click="sendAnswer") Send
 				#stage3(v-show="stage==3")
 					.card
 						.finish Exam completed &#9786; ...don't close the window!
-- 
2.44.0