{"version":3,"sources":["components/ProjectSurvey.js"],"names":["_typeof","Symbol","iterator","obj","constructor","prototype","Vue","component","data","surveyNboId","surveyNodeIdHtml","surveyItems","jsonSurveyItems","currentGivenAnswer","allQuestions","allDependencies","progressPercentage","start","finished","currentQuestionIndex","selectOtherQuestion","openQuestion","gender","name","infix","lastName","email","phone","newsletter","created","this","Content","Questions","mounted","forEach","question","set","Answers","answer","Other","undefined","otherAnswer","computed","currentQuestion","thisQuestion","Type","givenAnswers","length","givenAnswersCheck","i","methods","startSurvey","submitSurvey","e","preventDefault","finishedJson","finishedAnswers","surveyForm","$","validate","valid","Gender","FirstName","Infix","LastName","Email","Phone","SurveyNodeId","Newsletter","Array","isArray","object","NboUUId","NboId","push","Text","fetch","method","headers","Content-Type","Accept-Language","document","documentElement","lang","credentials","body","JSON","stringify","then","response","json","window","location","href","calculateProgress","progressBar","querySelector","Math","floor","style","width","checkQuestion","DependencyAnswers","DependencyType","result","_loop","some","v","_ret","dAnswer","getPrevQuestion","counter","questionFound","innerWidth","scrollTop","getNextQuestion","updated","$nextTick","querySelectorAll","modal"],"mappings":"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","file":"../../components/ProjectSurvey.js","sourcesContent":["Vue.component('ProjectSurvey', {\r\n data() {\r\n return {\r\n surveyNboId: surveyNodeIdHtml,\r\n surveyItems: jsonSurveyItems,\r\n\r\n currentGivenAnswer: [],\r\n allQuestions: null,\r\n allDependencies: null,\r\n\r\n progressPercentage: 0,\r\n\r\n start: true,\r\n finished: false,\r\n currentQuestionIndex: 0,\r\n selectOtherQuestion: false,\r\n openQuestion: false,\r\n\r\n gender: 'Man',\r\n name: '',\r\n infix: '',\r\n lastName: '',\r\n email: '',\r\n phone: '',\r\n newsletter: ''\r\n }\r\n },\r\n created() {\r\n this.allQuestions = this.surveyItems.Content.Questions;\r\n },\r\n mounted() {\r\n this.allQuestions.forEach((question) => {\r\n Vue.set(question, 'givenAnswers', []);\r\n\r\n question.Answers.forEach(answer => {\r\n if (answer.Other && question.otherAnswer === undefined) {\r\n Vue.set(question, 'otherAnswer', null);\r\n }\r\n });\r\n });\r\n },\r\n computed: {\r\n currentQuestion() {\r\n this.selectOtherQuestion = false;\r\n const thisQuestion = this.allQuestions[this.currentQuestionIndex];\r\n\r\n if (thisQuestion.Type === 'Select' \r\n && thisQuestion.givenAnswers !== undefined\r\n && thisQuestion.givenAnswers.length === 0) \r\n {\r\n thisQuestion.givenAnswers = 'preSelected';\r\n }\r\n\r\n if (thisQuestion.Type === 'OpenVraag' \r\n && thisQuestion.givenAnswers !== undefined) \r\n {\r\n thisQuestion.givenAnswers = 'preSelected';\r\n }\r\n\r\n if (thisQuestion.Type === 'Check') { \r\n const givenAnswersCheck = thisQuestion.givenAnswers;\r\n if (givenAnswersCheck !== undefined) {\r\n for (let i = 0; i < givenAnswersCheck.length; i++) {\r\n if (givenAnswersCheck[i].Other == true) {\r\n this.selectOtherQuestion = true;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (thisQuestion.Type === 'OpenVraag') {\r\n this.selectOtherQuestion = true;\r\n this.openQuestion = true;\r\n } else {\r\n this.openQuestion = false;\r\n }\r\n\r\n if (thisQuestion.Type === 'Radio' \r\n && thisQuestion.givenAnswers !== undefined\r\n && thisQuestion.givenAnswers.Other === true) \r\n {\r\n this.selectOtherQuestion = true;\r\n }\r\n\r\n return thisQuestion;\r\n }\r\n },\r\n methods: {\r\n startSurvey() {\r\n this.start = false;\r\n },\r\n submitSurvey(e) {\r\n e.preventDefault();\r\n\r\n let finishedJson = {}\r\n let finishedAnswers = [];\r\n\r\n const surveyForm = $( \"#survey-form\");\r\n surveyForm.validate();\r\n\r\n if(surveyForm.valid()) {\r\n finishedJson.Gender = this.gender;\r\n finishedJson.FirstName = this.name;\r\n finishedJson.Infix = this.infix;\r\n finishedJson.LastName = this.lastName;\r\n finishedJson.Email = this.email;\r\n finishedJson.Phone = this.phone;\r\n finishedJson.SurveyNodeId = this.surveyNboId;\r\n finishedJson.Newsletter = this.newsletter;\r\n\r\n this.allQuestions.forEach((question) => {\r\n if (Array.isArray(question.givenAnswers)) {\r\n question.givenAnswers.forEach((answer) => {\r\n let object = {};\r\n object.NboUUId = answer.NboId;\r\n if (answer.Other !== undefined && answer.Other == true) object.Other = question.otherAnswer;\r\n finishedAnswers.push(object);\r\n });\r\n }\r\n else if (question.Type === 'OpenVraag') {\r\n let object = {};\r\n object.NboUUId = question.Answers[0].NboId;\r\n if (question.otherAnswer) object.Other = question.otherAnswer;\r\n\r\n finishedAnswers.push(object);\r\n } else {\r\n if(question.givenAnswers.Text !== undefined) {\r\n let object = {};\r\n object.NboUUId = question.givenAnswers.NboId;\r\n if (question.otherAnswer) object.Other = question.otherAnswer;\r\n \r\n finishedAnswers.push(object);\r\n }\r\n }\r\n });\r\n\r\n finishedJson.Answers = finishedAnswers;\r\n\r\n fetch('/umbraco/api/ProjectSurvey/post', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept-Language': document.documentElement.lang,\r\n },\r\n credentials: 'same-origin',\r\n body: JSON.stringify(finishedJson)\r\n }).then((response) => {\r\n return response.json();\r\n }).then((response) => {\r\n if (response !== null && response !== '') {\r\n window.location.href = response;\r\n }\r\n });\r\n }\r\n },\r\n calculateProgress() {\r\n const progressBar = document.querySelector('.js-progress-bar');\r\n\r\n this.progressPercentage = Math.floor((this.currentQuestionIndex/this.allQuestions.length) * 100);\r\n progressBar.style.width = this.progressPercentage + '%';\r\n\r\n if(this.finished) {\r\n this.progressPercentage = 100;\r\n progressBar.style.width = '100%';\r\n }\r\n },\r\n checkQuestion(question) {\r\n //Not a dependency question so return true (show next question)\r\n if (question.DependencyAnswers.length === 0) {\r\n return true;\r\n }\r\n\r\n //Dependency question\r\n let givenAnswers = [];\r\n //save all given answers in seperate array to loop through\r\n this.allQuestions.forEach((question) => {\r\n if (Array.isArray(question.givenAnswers)) {\r\n question.givenAnswers.forEach((answer) => {\r\n if(answer.Text !== undefined) {\r\n givenAnswers.push(answer);\r\n }\r\n });\r\n }\r\n else {\r\n if(question.givenAnswers !== undefined && question.givenAnswers.Text !== undefined) {\r\n givenAnswers.push(question.givenAnswers);\r\n }\r\n }\r\n\r\n if (question.givenAnswers !== undefined && question.givenAnswers.Other === false) {\r\n question.otherAnswer = null;\r\n }\r\n });\r\n\r\n if (question.DependencyType === 'OR') {\r\n let result;\r\n\r\n for(let i = 0; i < question.DependencyAnswers.length; i+=1) {\r\n result = givenAnswers.some(answer => answer.NboId === question.DependencyAnswers[i]);\r\n if(result) {\r\n return true;\r\n }\r\n }\r\n\r\n } else {\r\n //TODO not the best solution but it works for now\r\n let result = [];\r\n givenAnswers.forEach((answer) => {\r\n question.DependencyAnswers.forEach((dAnswer) => {\r\n if (dAnswer === answer.NboId) {\r\n result.push(true);\r\n }\r\n });\r\n });\r\n\r\n if(result.length === question.DependencyAnswers.length) {\r\n return true;\r\n }\r\n }\r\n\r\n //als je de vraag hebt overgeslagen het antwoord verwijderen\r\n question.givenAnswers = [];\r\n return false;\r\n },\r\n getPrevQuestion() {\r\n let counter = this.currentQuestionIndex;\r\n let questionFound = false;\r\n\r\n if (this.finished) {\r\n counter+=1;\r\n }\r\n\r\n while(!questionFound && counter > 0) {\r\n counter-=1;\r\n questionFound = this.checkQuestion(this.allQuestions[counter]);\r\n }\r\n\r\n if(questionFound) {\r\n this.currentQuestionIndex = counter;\r\n if (this.finished) {\r\n this.finished = false;\r\n }\r\n\r\n this.calculateProgress();\r\n if (window.innerWidth < 765) {\r\n document.body.scrollTop = document.documentElement.scrollTop = 0;\r\n }\r\n }\r\n },\r\n getNextQuestion() {\r\n let counter = this.currentQuestionIndex;\r\n let questionFound = false;\r\n\r\n while (!questionFound && counter < this.allQuestions.length - 1) {\r\n counter+=1;\r\n questionFound = this.checkQuestion(this.allQuestions[counter]);\r\n\r\n }\r\n\r\n if (!questionFound) {\r\n this.finished = true;\r\n } else {\r\n this.currentQuestionIndex = counter;\r\n }\r\n\r\n this.calculateProgress();\r\n if (window.innerWidth < 765) {\r\n document.body.scrollTop = document.documentElement.scrollTop = 0;\r\n }\r\n }\r\n },\r\n updated: function () {\r\n this.$nextTick(function () {\r\n if (document.querySelectorAll('.js-modal-open').length) { modal(); }\r\n })\r\n }\r\n});"]}