Merge branch 'hotfix/survey-readonly' into develop

This commit is contained in:
Ramon Wenger 2021-04-17 13:34:59 +02:00
commit 13b067f77f
5 changed files with 79 additions and 18 deletions

View File

@ -8902,6 +8902,11 @@
"event-emitter": "~0.3.5" "event-emitter": "~0.3.5"
} }
}, },
"es6-object-assign": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz",
"integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw="
},
"es6-set": { "es6-set": {
"version": "0.1.5", "version": "0.1.5",
"resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz",
@ -21266,6 +21271,22 @@
"vue": "^2.4.4" "vue": "^2.4.4"
} }
}, },
"vuejs-logger": {
"version": "1.5.5",
"resolved": "https://registry.npmjs.org/vuejs-logger/-/vuejs-logger-1.5.5.tgz",
"integrity": "sha512-wESz1F4KWk98YANEDg2yeS+fpwk2WrR41ZslLfZgTD+EYFm/7VMMUjRThhHT8CCOLOCQdsS4Ge2C9bIs68v8Ww==",
"requires": {
"es6-object-assign": "1.1.0",
"vue": "2.6.11"
},
"dependencies": {
"vue": {
"version": "2.6.11",
"resolved": "https://registry.npmjs.org/vue/-/vue-2.6.11.tgz",
"integrity": "sha512-VfPwgcGABbGAue9+sfrD4PuwFar7gPb1yl1UK1MwXoQPAw0BKSqWfoYCT/ThFrdEVWoI51dBuyCoiNU9bZDZxQ=="
}
}
},
"vuetify": { "vuetify": {
"version": "1.1.10", "version": "1.1.10",
"resolved": "https://registry.npmjs.org/vuetify/-/vuetify-1.1.10.tgz", "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-1.1.10.tgz",

View File

@ -91,6 +91,7 @@
"vue-template-compiler": "^2.5.17", "vue-template-compiler": "^2.5.17",
"vue-toast-notification": "^0.4.1", "vue-toast-notification": "^0.4.1",
"vue-vimeo-player": "0.0.6", "vue-vimeo-player": "0.0.6",
"vuejs-logger": "1.5.5",
"vuetify": "^1.1.8", "vuetify": "^1.1.8",
"vuex": "^3.0.1", "vuex": "^3.0.1",
"webpack": "^3.6.0", "webpack": "^3.6.0",

View File

@ -20,7 +20,10 @@ import VueModal from '@/plugins/modal';
import VueRemoveEdges from '@/plugins/edges'; import VueRemoveEdges from '@/plugins/edges';
import VueMatomo from 'vue-matomo'; import VueMatomo from 'vue-matomo';
import VueToast from 'vue-toast-notification'; import VueToast from 'vue-toast-notification';
import VueLogger from 'vuejs-logger';
Vue.config.productionTip = false; Vue.config.productionTip = false;
const isProduction = process.env.NODE_ENV === 'production';
Vue.use(VueModal); Vue.use(VueModal);
Vue.use(VueRemoveEdges); Vue.use(VueRemoveEdges);
@ -28,6 +31,12 @@ Vue.use(VueApollo);
Vue.use(VueAxios, axios); Vue.use(VueAxios, axios);
Vue.use(VueVimeoPlayer); Vue.use(VueVimeoPlayer);
Vue.use(VueToast); Vue.use(VueToast);
Vue.use(VueLogger, {
isEnabled: true,
logLevel: isProduction ? 'error' : 'debug',
stringifyArguments: false,
showConsoleColors: true
});
Vue.use(VueScrollTo, { Vue.use(VueScrollTo, {
duration: 500, duration: 500,

View File

@ -35,7 +35,7 @@
components: { components: {
Solution, Solution,
Survey Survey,
}, },
data() { data() {
@ -45,9 +45,9 @@
module: {}, module: {},
completed: false, completed: false,
me: { me: {
permissions: [] permissions: [],
}, },
saveDisabled: false saveDisabled: false,
}; };
}, },
@ -80,7 +80,7 @@
<p class="solution-text__answer">${answer.answer}</p> <p class="solution-text__answer">${answer.answer}</p>
`; `;
} }
}, '') }, ''),
}; };
}, },
answers() { answers() {
@ -90,7 +90,7 @@
}, },
isTeacher() { isTeacher() {
return isTeacher(this); return isTeacher(this);
} },
}, },
methods: { methods: {
@ -100,9 +100,14 @@
for (let k in answers) { for (let k in answers) {
flatAnswers[k] = answers[k].answer; flatAnswers[k] = answers[k].answer;
} }
survey.data = flatAnswers; this.$log.debug('flatAnswers', flatAnswers);
this.$log.debug('data', survey.data);
if (Object.keys(flatAnswers).length > 0) {
// answers are not empty
survey.data = flatAnswers;
}
const saveSurvey = (sender) => { const saveSurvey = (sender, options) => {
if (this.saveDisabled) { if (this.saveDisabled) {
return; return;
} }
@ -116,21 +121,26 @@
let question = sender.getQuestionByName(k); let question = sender.getQuestionByName(k);
data[k] = { data[k] = {
answer: survey.data[k], answer: survey.data[k],
correct: question && question.correctAnswer ? question.correctAnswer : '' correct: question && question.correctAnswer ? question.correctAnswer : '',
}; };
} }
} }
if (Object.keys(data).length === 0) {
// data is empty
return;
}
const answer = { const answer = {
surveyId: this.id, surveyId: this.id,
data: JSON.stringify(data) data: JSON.stringify(data),
}; };
this.$log.debug('saving survey', answer);
this.$apollo.mutate({ this.$apollo.mutate({
mutation: UPDATE_ANSWER, mutation: UPDATE_ANSWER,
variables: { variables: {
input: { input: {
answer answer,
} },
}, },
update: (store, {data: {updateAnswer: {answer}}}) => { update: (store, {data: {updateAnswer: {answer}}}) => {
const query = SURVEY_QUERY; const query = SURVEY_QUERY;
@ -140,7 +150,7 @@
queryData.survey.answer = answer; queryData.survey.answer = answer;
store.writeQuery({query, variables, data: queryData}); store.writeQuery({query, variables, data: queryData});
} }
} },
}); });
}; };
@ -151,6 +161,7 @@
survey.locale = 'de'; survey.locale = 'de';
survey.showProgressBar = 'bottom'; survey.showProgressBar = 'bottom';
survey.pageNextText = 'Speichern & Weiter'; survey.pageNextText = 'Speichern & Weiter';
this.$log.debug(survey.data);
return survey; return survey;
}, },
reopen() { reopen() {
@ -160,7 +171,7 @@
this.survey.clear(); this.survey.clear();
this.survey.data = data; // reapply it this.survey.data = data; // reapply it
this.saveDisabled = false; this.saveDisabled = false;
} },
}, },
apollo: { apollo: {
@ -168,7 +179,7 @@
query: SURVEY_QUERY, query: SURVEY_QUERY,
variables() { variables() {
return { return {
id: this.id id: this.id,
}; };
}, },
manual: true, manual: true,
@ -190,14 +201,14 @@
this.$apollo.addSmartQuery('module', { this.$apollo.addSmartQuery('module', {
query: MODULE_QUERY, query: MODULE_QUERY,
variables: { variables: {
id: module.id id: module.id,
} },
}); });
} }
}, },
}, },
me: meQuery me: meQuery,
} },
}; };
</script> </script>

19
package-lock.json generated
View File

@ -35,6 +35,11 @@
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
"integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==" "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw=="
}, },
"es6-object-assign": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz",
"integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw="
},
"regenerator-runtime": { "regenerator-runtime": {
"version": "0.10.5", "version": "0.10.5",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz",
@ -44,6 +49,20 @@
"version": "3.1.1", "version": "3.1.1",
"resolved": "https://registry.npmjs.org/unfetch/-/unfetch-3.1.1.tgz", "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-3.1.1.tgz",
"integrity": "sha512-syDl3htvM56w0HC0PTVA5jEEknOCJ3dWgWGDuaEtQUno8ORDCfZQbm12RzfWO3AC3YhWDoP61dlgmo8Z05Y97g==" "integrity": "sha512-syDl3htvM56w0HC0PTVA5jEEknOCJ3dWgWGDuaEtQUno8ORDCfZQbm12RzfWO3AC3YhWDoP61dlgmo8Z05Y97g=="
},
"vue": {
"version": "2.6.11",
"resolved": "https://registry.npmjs.org/vue/-/vue-2.6.11.tgz",
"integrity": "sha512-VfPwgcGABbGAue9+sfrD4PuwFar7gPb1yl1UK1MwXoQPAw0BKSqWfoYCT/ThFrdEVWoI51dBuyCoiNU9bZDZxQ=="
},
"vuejs-logger": {
"version": "1.5.5",
"resolved": "https://registry.npmjs.org/vuejs-logger/-/vuejs-logger-1.5.5.tgz",
"integrity": "sha512-wESz1F4KWk98YANEDg2yeS+fpwk2WrR41ZslLfZgTD+EYFm/7VMMUjRThhHT8CCOLOCQdsS4Ge2C9bIs68v8Ww==",
"requires": {
"es6-object-assign": "1.1.0",
"vue": "2.6.11"
}
} }
} }
} }