Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

SurveyCompleteView.vue 3.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <template lang="pug">
  2. main.view--surveycomplete
  3. article(style='display: flex; flex-direction: column; align-items: center; text-align: center;')
  4. h2 Thanks for Completing Our Survey!!
  5. h1 Please review your answers and let us know if you need to change anything.
  6. div(v-for='response in responses')
  7. p Your {{ response.stage }}:
  8. p {{ response.val }}
  9. br
  10. div.survey-spacer
  11. div(v-for='aspectResponse in aspectResponses')
  12. p {{ aspectResponse.question }} :
  13. br
  14. p {{ aspectResponse.response }}
  15. br
  16. br
  17. w-button.ma1(@click="changeAnswers") Change Answers
  18. </template>
  19. <script>
  20. import { currentProfile } from '../services'
  21. export default {
  22. props: {
  23. surveySteps: {
  24. type: Array,
  25. default: () => [],
  26. },
  27. },
  28. data: () => ({
  29. responses: {},
  30. aspectQuestions: {},
  31. surveyStages: {},
  32. aspectResponses: [],
  33. }),
  34. created() {
  35. this.parseSurvey(this.surveySteps)
  36. this.aspectResponses = this.grabAspectResponses(
  37. currentProfile._profile.responses,
  38. this.aspectQuestions,
  39. )
  40. const responses = this.grabResponsesFromProfile(this.aspectQuestions)
  41. this.responses = this.appendStagesToResponses(
  42. responses,
  43. this.surveyStages,
  44. )
  45. },
  46. methods: {
  47. parseSurvey(surveySteps) {
  48. surveySteps.forEach(step => {
  49. const isAspect = step.category === 'aspect'
  50. if (isAspect) {
  51. this.aspectQuestions[`${step.response_key_id}`] =
  52. step.response_key_prompt
  53. } else {
  54. this.surveyStages[`${step.response_key_id}`] =
  55. step.survey_stage
  56. }
  57. })
  58. },
  59. grabResponsesFromProfile(aspectQuestions) {
  60. const aspectQuestionsKeys = Object.keys(aspectQuestions).map(Number)
  61. const responses = currentProfile._profile.responses
  62. .map(response => {
  63. if (
  64. !aspectQuestionsKeys.includes(response.response_key_id)
  65. ) {
  66. return response
  67. }
  68. })
  69. .filter(res => {
  70. return typeof res === 'object'
  71. })
  72. return responses
  73. },
  74. appendStagesToResponses(responses, surveyStages) {
  75. const responsesWithStages = responses.map(response => {
  76. return {
  77. ...response,
  78. stage: surveyStages[`${response.response_key_id}`],
  79. }
  80. })
  81. return responsesWithStages
  82. },
  83. grabAspectResponses(responses, questions) {
  84. return responses
  85. .map(response => {
  86. const prompt = questions[`${response.response_key_id}`]
  87. if (prompt) {
  88. return {
  89. question: questions[`${response.response_key_id}`],
  90. response: response.val,
  91. }
  92. }
  93. })
  94. .filter(res => {
  95. return typeof res === 'object'
  96. })
  97. },
  98. },
  99. }
  100. </script>
  101. <style>
  102. .survey-spacer {
  103. height: 1.25rem;
  104. }
  105. </style>