diff --git a/src/main/java/org/olat/ims/qti/statistics/ui/QTI12ItemStatisticsController.java b/src/main/java/org/olat/ims/qti/statistics/ui/QTI12ItemStatisticsController.java index da2b8878aff1335946d239b8a079649a60b0e1cf..8309a6d96eefbca877ed2a39f77c45d4e432fb01 100644 --- a/src/main/java/org/olat/ims/qti/statistics/ui/QTI12ItemStatisticsController.java +++ b/src/main/java/org/olat/ims/qti/statistics/ui/QTI12ItemStatisticsController.java @@ -186,7 +186,7 @@ public class QTI12ItemStatisticsController extends BasicController { .getItemStatistics(item.getIdent(), maxScore, searchParams); mainVC.contextPut("solution", item.getQuestion().getSolutionText()); - mainVC.contextPut("numOfResults", itemStats.getNumOfResults()); + int numOfResults = itemStats.getNumOfResults(); if(!survey) { mainVC.contextPut("maxScore", maxScore); } @@ -194,10 +194,17 @@ public class QTI12ItemStatisticsController extends BasicController { List<String> answers = qtiStatisticsManager.getAnswers(item.getIdent(), searchParams); - List<String> cleanedAnswers = new ArrayList<String>(); + List<String> cleanedAnswers = new ArrayList<>(); for (String string : answers) { - cleanedAnswers.add(stripAnswerText(string)); + String strippedAnswer = stripAnswerText(string); + if(strippedAnswer == null || strippedAnswer.length() == 0) { + numOfResults--; + } else { + cleanedAnswers.add(strippedAnswer); + } } + + mainVC.contextPut("numOfResults", Math.max(0, numOfResults)); mainVC.contextPut("studentAnswers", cleanedAnswers); } diff --git a/src/main/java/org/olat/ims/qti/statistics/ui/SeriesFactory.java b/src/main/java/org/olat/ims/qti/statistics/ui/SeriesFactory.java index 536cb4c7d01f151688abd804637cb11e027d9996..b6f09ad681d037090a34843535122713cdfedbf5 100644 --- a/src/main/java/org/olat/ims/qti/statistics/ui/SeriesFactory.java +++ b/src/main/java/org/olat/ims/qti/statistics/ui/SeriesFactory.java @@ -149,7 +149,11 @@ public class SeriesFactory { double rightA; double wrongA; - if (points > 0.00001f) { + + if (survey) { + rightA = answersPerAnswerOption; + wrongA = 0d; + } else if (points > 0.00001f) { rightA = answersPerAnswerOption; wrongA = numOfParticipants - notAnswered - answersPerAnswerOption; } else {