Add solutions to survey

This commit is contained in:
Ramon Wenger 2019-09-05 15:22:01 +02:00
parent 2efe682d7e
commit aeab246aee
4 changed files with 34 additions and 6 deletions

View File

@ -5,7 +5,7 @@
<template v-else>ausblenden</template> <template v-else>ausblenden</template>
</a> </a>
<transition name="fade"> <transition name="fade">
<p class="solution__text fade" data-cy="solution-text" v-if="visible" v-html="value.text"> <p class="solution__text solution-text fade" data-cy="solution-text" v-if="visible" v-html="value.text">
</p> </p>
</transition> </transition>
</div> </div>

View File

@ -2,10 +2,8 @@
<div class="survey-page"> <div class="survey-page">
<h1 class="survey-page__title">{{title}}</h1> <h1 class="survey-page__title">{{title}}</h1>
<survey :survey='survey'></survey> <survey :survey='survey'></survey>
<div>
Answers: <solution :value="solution"></solution>
{{answers}}
</div>
<div v-if="surveyComplete"> <div v-if="surveyComplete">
<a class="button button--primary" @click="reopen">Übung bearbeiten</a> <a class="button button--primary" @click="reopen">Übung bearbeiten</a>
</div> </div>
@ -18,6 +16,7 @@
import SURVEY_QUERY from '@/graphql/gql/surveyQuery.gql'; import SURVEY_QUERY from '@/graphql/gql/surveyQuery.gql';
import UPDATE_ANSWER from '@/graphql/gql/mutations/updateAnswer.gql'; import UPDATE_ANSWER from '@/graphql/gql/mutations/updateAnswer.gql';
import Solution from '@/components/content-blocks/Solution';
const Survey = SurveyVue.Survey; const Survey = SurveyVue.Survey;
@ -25,6 +24,7 @@
props: ['id'], props: ['id'],
components: { components: {
Solution,
Survey Survey
}, },
@ -39,9 +39,25 @@
surveyComplete() { surveyComplete() {
return this.survey && this.survey.isCompleted return this.survey && this.survey.isCompleted
}, },
solution() {
return {
text: this.answers.reduce((previous, answer) => {
if (!answer.answer) {
return previous
}
return `
${previous}
<h2 class="solution-text__heading">${answer.title}</h2>
<p class="solution-text__answer">${answer.answer}</p>
`
}, '')
}
},
answers() { answers() {
return this.survey.currentPage && this.survey.currentPage.elements ? this.survey.currentPage.elements.reduce((prev, element) => { return this.survey.currentPage && this.survey.currentPage.elements ? this.survey.currentPage.elements.reduce((prev, element) => {
if (!element || !element.elements) { return prev } if (!element || !element.elements) {
return prev
}
return [...prev, ...element.elements.reduce((pr, question) => { return [...prev, ...element.elements.reduce((pr, question) => {
return [...pr, {title: question.title, answer: question.correctAnswer}]; return [...pr, {title: question.title, answer: question.correctAnswer}];
}, [])]; }, [])];

View File

@ -0,0 +1,11 @@
.solution-text {
&__heading {
@include heading-4;
color: $color-silver-dark;
}
&__answer {
@include regular-text;
margin-bottom: $medium-spacing;
}
}

View File

@ -17,3 +17,4 @@
@import "navigation"; @import "navigation";
@import "survey"; @import "survey";
@import "visibility"; @import "visibility";
@import "solutions";