diff --git a/package.json b/package.json index a034365..a960dd8 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "lint": "vue-cli-service lint" }, "dependencies": { + "axios": "^0.19.2", "core-js": "^3.6.4", "vue": "^2.6.11", "vue-router": "^3.1.5", diff --git a/src/components/Question.vue b/src/components/Question.vue index 7cc3f75..97fbe51 100644 --- a/src/components/Question.vue +++ b/src/components/Question.vue @@ -15,10 +15,20 @@ @@ -26,9 +36,55 @@ export default { name: "Question", props: { + type: String, question: String, answers: Array - } + }, + data() { + return { + selection: 0 + } + }, + methods: { + answerQuestion(value) { + this.$store.commit('answerQuestion', value) + this.$store.commit('nextQuestion') + } + }, } + diff --git a/src/router/index.js b/src/router/index.js index ec883aa..af30137 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -1,8 +1,9 @@ import Vue from 'vue' import VueRouter from 'vue-router' import Home from '../views/Home.vue' -import Warning from '../views/Warning.vue' -import Questionnaire from "@/views/Questionnaire.vue"; +import Warning from '../views/Warning' +import Questionnaire from "@/views/Questionnaire"; +import Results from "@/views/Results"; Vue.use(VueRouter) @@ -21,6 +22,11 @@ const routes = [ path: '/questionnaire', name: 'Fragebogen', component: Questionnaire + }, + { + path: '/results', + name: 'Ergebnisse', + component: Results } ] diff --git a/src/store/index.js b/src/store/index.js index 356dfc8..73153c1 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -1,31 +1,49 @@ import Vue from 'vue' import Vuex from 'vuex' +import axios from 'axios'; +import router from "@/router"; + Vue.use(Vuex) export default new Vuex.Store({ - state: { - currentQuestion: 0, - answers: [], - questions: [{ - question: "Mit wie vielen Menschen haben Sie täglich Kontakt?", - answers: ["Answer 1", "Answer 2", "Answer 3"] - }] - }, - mutations: { - nextQuestion() { - if(this.state.currentQuestion <= - this.state.questions.length - 1) - this.state.currentQuestion += 1 + state: { + currentQuestion: 0, + answers: [], + questions: [] }, - previousQuestion() { - if(this.state.currentQuestion > 0) { - this.state.currentQuestion -= 1 - } - } - }, - actions: { - }, - modules: { - } + mutations: { + nextQuestion() { + if (this.state.currentQuestion < + this.state.questions.length - 1) + this.state.currentQuestion += 1 + else { + router.push('/results') + } + }, + previousQuestion() { + if (this.state.currentQuestion > 0) { + this.state.currentQuestion -= 1 + } + }, + answerQuestion(state, value) { + this.state.answers[this.state.currentQuestion] = value + }, + init() { + axios.get('https://avian-safeguard-214619.firebaseio.com/questions.json') + .then(res => { + console.log(res) + this.state.questions = res.data + this.state.answers = Array.apply(0, Array(res.data.length)).map(function () {}) + }) + } + }, + getters: { + numberQuestions: (state) => { + return state.questions.length + } + }, + actions: { + }, + modules: {} }) diff --git a/src/views/Questionnaire.vue b/src/views/Questionnaire.vue index 3d40ca0..b4061e4 100644 --- a/src/views/Questionnaire.vue +++ b/src/views/Questionnaire.vue @@ -1,7 +1,9 @@ @@ -9,7 +11,10 @@ import Question from "@/components/Question"; export default { name: "Questionnaire", - components: {Question} + components: {Question}, + mounted() { + this.$store.commit("init") + } } diff --git a/src/views/Results.vue b/src/views/Results.vue new file mode 100644 index 0000000..6fc8747 --- /dev/null +++ b/src/views/Results.vue @@ -0,0 +1,24 @@ + + + + + diff --git a/yarn.lock b/yarn.lock index ba313e6..497c8c1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1580,6 +1580,13 @@ aws4@^1.8.0: resolved "https://registry.npm.taobao.org/aws4/download/aws4-1.9.1.tgz?cache=0&sync_timestamp=1578958168482&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Faws4%2Fdownload%2Faws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" integrity sha1-fjPY99RJs/ZzzXLeuavcVS2+Uo4= +axios@^0.19.2: + version "0.19.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" + integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== + dependencies: + follow-redirects "1.5.10" + babel-eslint@^10.0.3: version "10.1.0" resolved "https://registry.npm.taobao.org/babel-eslint/download/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" @@ -2676,6 +2683,13 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3: dependencies: ms "2.0.0" +debug@=3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + debug@^3.0.0, debug@^3.1.1, debug@^3.2.5: version "3.2.6" resolved "https://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" @@ -3579,6 +3593,13 @@ flush-write-stream@^1.0.0: inherits "^2.0.3" readable-stream "^2.3.6" +follow-redirects@1.5.10: + version "1.5.10" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== + dependencies: + debug "=3.1.0" + follow-redirects@^1.0.0: version "1.10.0" resolved "https://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.10.0.tgz#01f5263aee921c6a54fb91667f08f4155ce169eb"