common/app/views/fragments/atoms/quiz.scala.html
@import _root_.quiz.form._ @import _root_.quiz.{postUrl, Question, Answer} @import views.html.fragments.inlineSvg @import layout.ContentWidths.BodyMedia @import views.support.RenderClasses @(quiz: model.content.QuizAtom, maybeResults: Option[QuizResults], showResults: Boolean, sharelinks: model.ShareLinkMeta)(implicit request: RequestHeader)
@renderHeader(maybeResults) @quiz.content.questions.zipWithIndex.map { case (question, index) => @renderQuestion(question, playForm(s"answers[$index]"), maybeResults.flatMap(_.getAnswerFor(question)) ) } @renderFooter(maybeResults) @if(maybeResults.isEmpty) { Submit answers }@renderQuestion(question: Question, field: play.api.data.Field, maybeUserAnswer: Option[Answer]) = { @question.text @question.imageMedia.map { image => @fragments.imageFigure(image.imageMedia, widthsByBreakpoint = BodyMedia.inline, image_figureClasses = image.imageClasses) } @question.answers.zipWithIndex.map { case(answer, index) => @defining(answer.imageMedia.isDefined) { hasImage => @renderAnswer(question, answer, index + 1, field, hasImage, maybeUserAnswer, showResults) } } } @renderAnswer(question: Question, answer: Answer, index: Int, field: play.api.data.Field, hasImage: Boolean, maybeUserAnswer: Option[Answer], showResults: Boolean) = { @if(hasImage) { @answer.imageMedia.map { image => @fragments.imageFigure(image.imageMedia, widthsByBreakpoint = BodyMedia.inline, image_figureClasses = image.imageClasses) } @renderIcon(question, answer, maybeUserAnswer, "atom-quiz__answer__icon--image") } else { @renderIcon(question, answer, maybeUserAnswer, "atom-quiz__answer__icon--text") @{answer.text} } @renderAnswerRevealText(answer) } @renderIcon(question: Question, answer: Answer, maybeUserAnswer: Option[Answer], iconType: String) = { @isCorrectAnswer(question, answer).map { correct => @inlineSvg(if (correct) { "tick" } else { "cross" }, "icon", List("atom-quiz__answer__icon", iconType)) } } @renderAnswerRevealText(answer: Answer) = { @answer.revealText.map { revealText => @revealText } } @renderHeader(maybeResults: Option[QuizResults]) = { @maybeResults.map { results => @if(results.isPersonality) {
@results.resultBucket.map(_.title)
@results.resultBucket.map(_.description)
Challenge your friends @fragments.social(sharelinks)
} } } @renderFooter(maybeResults: Option[QuizResults]) = { @maybeResults.map { results => @if(results.isKnowledge) { You got… @results.knowledgeScore/@quiz.content.questions.size } @if(results.isPersonality) { @results.resultBucket.map(_.title)
@results.resultBucket.map(_.description) } @results.resultGroup.map { resultGroup => @resultGroup.title } }.getOrElse { You got… @quiz.content.resultGroups.map { resultGroup => @resultGroup.title } }
Challenge your friends @fragments.social(sharelinks)
}