From cdd1e712e087a1d16fdbb2207649c945eac0e561 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20G=C3=A4rtner?= <andreas.gaertner@mni.thm.de> Date: Wed, 28 Sep 2016 02:08:15 +0200 Subject: [PATCH] Fix question import and export feature --- .../webapp/app/controller/QuestionExport.js | 19 ++++++++- .../webapp/app/controller/QuestionImport.js | 41 ++++++++----------- 2 files changed, 33 insertions(+), 27 deletions(-) diff --git a/src/main/webapp/app/controller/QuestionExport.js b/src/main/webapp/app/controller/QuestionExport.js index 57d9d3ef0..ef3820b5f 100644 --- a/src/main/webapp/app/controller/QuestionExport.js +++ b/src/main/webapp/app/controller/QuestionExport.js @@ -29,6 +29,16 @@ Ext.define("ARSnova.controller.QuestionExport", { this.saveFileOnFileSystem(csv, this.filename()); }, + exportQuestions: function (controller) { + var me = this; + controller.getQuestions(sessionStorage.getItem('keyword'), { + success: function (response) { + var questions = Ext.decode(response.responseText); + me.parseJsonToCsv(questions); + } + }); + }, + getActualDate: function () { var d = new Date(); return ('0' + d.getFullYear()).slice(-2) + '-' @@ -74,9 +84,14 @@ Ext.define("ARSnova.controller.QuestionExport", { question.answer7 = options[6]; question.answer8 = options[7]; if (questionTypeModel === 'yesno') { - correctAnswer = 'n'; - if (questionModel.possibleAnswers[0].correct) { + correctAnswer = ''; + if (!questionModel.possibleAnswers[0].correct && + !questionModel.possibleAnswers[1].correct) { + correctAnswer = ''; + } else if (questionModel.possibleAnswers[0].correct) { correctAnswer = 'y'; + } else if (questionModel.possibleAnswers[1].correct) { + correctAnswer = 'n'; } question.correctAnswer = correctAnswer; } else if (questionTypeModel === 'freetext') { diff --git a/src/main/webapp/app/controller/QuestionImport.js b/src/main/webapp/app/controller/QuestionImport.js index ce564af32..ddf86e108 100644 --- a/src/main/webapp/app/controller/QuestionImport.js +++ b/src/main/webapp/app/controller/QuestionImport.js @@ -147,10 +147,13 @@ Ext.define("ARSnova.controller.QuestionImport", { if (correctAnswers === 'y') { return [this.getYesNoAnswerObj(true, Messages.YES), this.getYesNoAnswerObj(false, Messages.NO)]; - } else { + } else if (correctAnswers === 'n') { return [this.getYesNoAnswerObj(true, Messages.NO), this.getYesNoAnswerObj(false, Messages.YES)]; } + + return [this.getYesNoAnswerObj(false, Messages.YES), + this.getYesNoAnswerObj(false, Messages.NO)]; }, getYesNoAnswerObj: function (isCorrect, text) { @@ -191,10 +194,10 @@ Ext.define("ARSnova.controller.QuestionImport", { } }); } else { - this.refreshPanel(); + refreshPanel(); } } else { - this.refreshPanel(); + refreshPanel(); } }, @@ -244,7 +247,7 @@ Ext.define("ARSnova.controller.QuestionImport", { var correctAnswers = []; var answers = []; var i; - var questionType = ''; + var questionType = row[QUESTION_TYPE]; var hasRightAnswers = true; // check if subject and text is set. @@ -269,17 +272,7 @@ Ext.define("ARSnova.controller.QuestionImport", { } } - questionType = row[QUESTION_TYPE]; - - // Check if values for right answers are set, for all questions except txt - if (row[QUESTION_TYPE] && questionType === 'sc') { - if (!valuesRightAnswers) { - error = true; - answersError = true; - hasRightAnswers = false; - } - } - switch (questionType){ + switch (questionType) { case 'mc' : for (i = INDEX_FIRST_ANSWER; i <= INDEX_LAST_ANSWER; i++) { if (row[i].trim() !== '') { @@ -296,13 +289,12 @@ Ext.define("ARSnova.controller.QuestionImport", { * Check if we have at minimum 2 answers * and check if the colums according to a answers numbers exists */ - if (valuesRightAnswers.length < 1 || valuesRightAnswers.length !== correctAnswers.length) { + if (answers.length < 2 || answers.length < correctAnswers.length) { error = true; answersError = true; } - break; - case 'sc' : + case 'abcd' : for (i = INDEX_FIRST_ANSWER; i <= INDEX_LAST_ANSWER; i++) { if (row[i].trim() !== '') { answers.push(row[i]); @@ -318,13 +310,12 @@ Ext.define("ARSnova.controller.QuestionImport", { * Check if we have exactly 1 answer * and check if the colums according to a answers numbers exists */ - if (answers <= 1 || valuesRightAnswers.length !== 1) { + if (answers.length < 2 || correctAnswers.length > 1) { error = true; answersError = true; } - break; - case 'yn' : + case 'yesno' : if (row[RIGHT_ANSWER]) { if (!(row[RIGHT_ANSWER].toLowerCase() === 'y' || row[RIGHT_ANSWER].toLowerCase() === 'n')) { error = true; @@ -350,7 +341,7 @@ Ext.define("ARSnova.controller.QuestionImport", { showErrMsg: function (lineCnt, error, answersError, subjectError, questionError, questionTypeError, abstentionError) { if (error) { - var message = Messages.QUESTIONS_CSV_IMPORT_INVALID_FORMAT + ':<ul class="newQuestionWarning"><br>'; + var message = Messages.QUESTIONS_IMPORT_INVALID_FORMAT + ':<ul class="newQuestionWarning"><br>'; if (answersError) { message += '<li>' + Messages.MISSING_ANSWERS + '</li>'; @@ -362,13 +353,13 @@ Ext.define("ARSnova.controller.QuestionImport", { message += '<li>' + Messages.MISSING_QUESTION + '</li>'; } if (questionTypeError) { - message += '<li>' + Messages.QUESTIONS_CSV_IMPORT_TYPE_ERROR + '</li>'; + message += '<li>' + Messages.QUESTIONS_IMPORT_TYPE_ERROR + '</li>'; } if (abstentionError) { - message += '<li>' + Messages.QUESTIONS_CSV_IMPORT_ABSTENTION_ERROR + '</li>'; + message += '<li>' + Messages.QUESTIONS_IMPORT_ABSTENTION_ERROR + '</li>'; } - Ext.Msg.alert(Messages.NOTIFICATION, message + Messages.QUESTIONS_CSV_IMPORT_ERR_IN_ROW + " " + lineCnt + '</ul>'); + Ext.Msg.alert(Messages.NOTIFICATION, message + Messages.QUESTIONS_IMPORT_ERR_IN_ROW + " " + lineCnt + '</ul>'); return; } } -- GitLab