Index: lams_common/src/java/org/lamsfoundation/lams/qb/dao/hibernate/QbDAO.java =================================================================== diff -u -r8bdf2c81e6073c5bde35413e62767e4804b638d7 -r8ba5fc977a902ebf0d18050ad8defcbd96be9548 --- lams_common/src/java/org/lamsfoundation/lams/qb/dao/hibernate/QbDAO.java (.../QbDAO.java) (revision 8bdf2c81e6073c5bde35413e62767e4804b638d7) +++ lams_common/src/java/org/lamsfoundation/lams/qb/dao/hibernate/QbDAO.java (.../QbDAO.java) (revision 8ba5fc977a902ebf0d18050ad8defcbd96be9548) @@ -434,7 +434,7 @@ Map> questionsToOptionsMap = new LinkedHashMap<>(); // it contains all UID of correct answers Set correctOptionUids = new HashSet<>(); - + // build a map of question ID -> option ID -> answer count for (Object[] answerEntry : result) { Long qbQuestionUid = ((Number) answerEntry[0]).longValue(); @@ -462,12 +462,12 @@ for (Entry answersForOptionEntry : questionToOptionEntry.getValue().entrySet()) { Long qbOptionUid = answersForOptionEntry.getKey(); if (totalAnswers == 0) { - dto.getOptionAnswerPercent().put(qbOptionUid, -1); + dto.getOptionAnswerPercent().add(-1); continue; } Long answerPercent = Math.round(answersForOptionEntry.getValue() / totalAnswers * 100); - dto.getOptionAnswerPercent().put(qbOptionUid, answerPercent.intValue()); + dto.getOptionAnswerPercent().add(answerPercent.intValue()); if (correctOptionUids.contains(qbOptionUid)) { dto.setCorrectAnswerPercent(answerPercent.intValue()); } Index: lams_common/src/java/org/lamsfoundation/lams/qb/dto/QbAnswersForOptionDTO.java =================================================================== diff -u -reaf86cc891c4a0dbcc71fa7bd87f0657a250c730 -r8ba5fc977a902ebf0d18050ad8defcbd96be9548 --- lams_common/src/java/org/lamsfoundation/lams/qb/dto/QbAnswersForOptionDTO.java (.../QbAnswersForOptionDTO.java) (revision eaf86cc891c4a0dbcc71fa7bd87f0657a250c730) +++ lams_common/src/java/org/lamsfoundation/lams/qb/dto/QbAnswersForOptionDTO.java (.../QbAnswersForOptionDTO.java) (revision 8ba5fc977a902ebf0d18050ad8defcbd96be9548) @@ -1,20 +1,20 @@ package org.lamsfoundation.lams.qb.dto; -import java.util.LinkedHashMap; -import java.util.Map; +import java.util.LinkedList; +import java.util.List; public class QbAnswersForOptionDTO { private long qbQuestionUid; private int displayOrder; private Integer correctAnswerPercent; - private Map optionAnswerPercent; + private List optionAnswerPercent; public QbAnswersForOptionDTO(long qbQuestionUid, int displayOrder) { this.qbQuestionUid = qbQuestionUid; this.displayOrder = displayOrder; this.correctAnswerPercent = -1; - this.optionAnswerPercent = new LinkedHashMap<>(); + this.optionAnswerPercent = new LinkedList<>(); } public int getCorrectAnswerPercent() { @@ -33,7 +33,7 @@ return displayOrder; } - public Map getOptionAnswerPercent() { + public List getOptionAnswerPercent() { return optionAnswerPercent; } } \ No newline at end of file Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/TblMonitoringController.java =================================================================== diff -u -reaf86cc891c4a0dbcc71fa7bd87f0657a250c730 -r8ba5fc977a902ebf0d18050ad8defcbd96be9548 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/TblMonitoringController.java (.../TblMonitoringController.java) (revision eaf86cc891c4a0dbcc71fa7bd87f0657a250c730) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/TblMonitoringController.java (.../TblMonitoringController.java) (revision 8ba5fc977a902ebf0d18050ad8defcbd96be9548) @@ -297,49 +297,46 @@ averageAnswers = new LinkedList<>(); model.addAttribute("averageAnswerCountForOptions", averageAnswers); - for (QbAnswersForOptionDTO iraDto : iraAnswers) { + for (int iraDtoIndex = 0; iraDtoIndex < iraAnswers.size(); iraDtoIndex++) { + QbAnswersForOptionDTO iraDto = iraAnswers.get(iraDtoIndex); QbAnswersForOptionDTO averageDto = new QbAnswersForOptionDTO(iraDto.getQbQuestionUid(), iraDto.getDisplayOrder()); averageAnswers.add(averageDto); // there can be no answers for iRAT yet boolean iraHasAnswers = iraDto.getCorrectAnswerPercent() >= 0; - for (QbAnswersForOptionDTO traDto : traAnswers) { - if (traDto.getQbQuestionUid() == iraDto.getQbQuestionUid()) { - boolean traHasAnswers = traDto.getCorrectAnswerPercent() >= 0; - if (iraHasAnswers) { - if (traHasAnswers) { - // both RATs have answers present, count average - averageDto.setCorrectAnswerPercent( - (iraDto.getCorrectAnswerPercent() + traDto.getCorrectAnswerPercent()) / 2); - } else { - // just iRAT has answers - averageDto.setCorrectAnswerPercent(iraDto.getCorrectAnswerPercent()); - } - } else if (traHasAnswers) { - // just tRAT has answers - averageDto.setCorrectAnswerPercent(traDto.getCorrectAnswerPercent()); - } + QbAnswersForOptionDTO traDto = traAnswers.get(iraDtoIndex); + boolean traHasAnswers = traDto.getCorrectAnswerPercent() >= 0; + if (iraHasAnswers) { + if (traHasAnswers) { + // both RATs have answers present, count average + averageDto.setCorrectAnswerPercent( + (iraDto.getCorrectAnswerPercent() + traDto.getCorrectAnswerPercent()) / 2); + } else { + // just iRAT has answers + averageDto.setCorrectAnswerPercent(iraDto.getCorrectAnswerPercent()); + } + } else if (traHasAnswers) { + // just tRAT has answers + averageDto.setCorrectAnswerPercent(traDto.getCorrectAnswerPercent()); + } - // count average for each option - for (Long qbOptionUid : iraDto.getOptionAnswerPercent().keySet()) { - int iraOptionAnswers = iraDto.getOptionAnswerPercent().get(qbOptionUid); - int traOptionAnswers = traDto.getOptionAnswerPercent().get(qbOptionUid); + // count average for each option + for (int optionIndex = 0; optionIndex < iraDto.getOptionAnswerPercent().size(); optionIndex++) { + int iraOptionAnswers = iraDto.getOptionAnswerPercent().get(optionIndex); + int traOptionAnswers = traDto.getOptionAnswerPercent().get(optionIndex); - if (iraHasAnswers) { - if (traHasAnswers) { - averageDto.getOptionAnswerPercent().put(qbOptionUid, - (iraOptionAnswers + traOptionAnswers) / 2); - } else { - averageDto.getOptionAnswerPercent().put(qbOptionUid, iraOptionAnswers); - } - } else if (traHasAnswers) { - averageDto.getOptionAnswerPercent().put(qbOptionUid, traOptionAnswers); - } else { - averageDto.getOptionAnswerPercent().put(qbOptionUid, -1); - } + if (iraHasAnswers) { + if (traHasAnswers) { + averageDto.getOptionAnswerPercent().add((iraOptionAnswers + traOptionAnswers) / 2); + } else { + averageDto.getOptionAnswerPercent().add(iraOptionAnswers); } + } else if (traHasAnswers) { + averageDto.getOptionAnswerPercent().add(traOptionAnswers); + } else { + averageDto.getOptionAnswerPercent().add(-1); } } } @@ -390,12 +387,12 @@ questions.put(dto.getDisplayOrder(), question); } - // sort remaining collections according to sor order + // sort remaining collections according to sort order for (List dtos : sortTargets) { List sortedTarget = new LinkedList<>(); for (QbAnswersForOptionDTO sourceDto : sortSource) { for (QbAnswersForOptionDTO targetDto : dtos) { - if (sourceDto.getQbQuestionUid() == targetDto.getQbQuestionUid()) { + if (sourceDto.getDisplayOrder() == targetDto.getDisplayOrder()) { sortedTarget.add(targetDto); break; } Fisheye: Tag 8ba5fc977a902ebf0d18050ad8defcbd96be9548 refers to a dead (removed) revision in file `lams_monitoring/web/tblmonitor/teamsOptionResultsCell.jsp'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_monitoring/web/tblmonitor/teamsQuestionResults.jsp =================================================================== diff -u -reaf86cc891c4a0dbcc71fa7bd87f0657a250c730 -r8ba5fc977a902ebf0d18050ad8defcbd96be9548 --- lams_monitoring/web/tblmonitor/teamsQuestionResults.jsp (.../teamsQuestionResults.jsp) (revision eaf86cc891c4a0dbcc71fa7bd87f0657a250c730) +++ lams_monitoring/web/tblmonitor/teamsQuestionResults.jsp (.../teamsQuestionResults.jsp) (revision 8ba5fc977a902ebf0d18050ad8defcbd96be9548) @@ -47,23 +47,25 @@ - + ${questionEntry.key}.  + - + <%@ include file="teamsQuestionResultsCell.jsp"%> - + <%@ include file="teamsQuestionResultsCell.jsp"%> - + <%@ include file="teamsQuestionResultsCell.jsp"%> @@ -75,19 +77,21 @@ ${ALPHABET[optionStatus.index]}. + + - - <%@ include file="teamsOptionResultsCell.jsp"%> + + <%@ include file="teamsQuestionResultsCell.jsp"%> - - <%@ include file="teamsOptionResultsCell.jsp"%> + + <%@ include file="teamsQuestionResultsCell.jsp"%> - - <%@ include file="teamsOptionResultsCell.jsp"%> + + <%@ include file="teamsQuestionResultsCell.jsp"%> Index: lams_monitoring/web/tblmonitor/teamsQuestionResultsCell.jsp =================================================================== diff -u -reaf86cc891c4a0dbcc71fa7bd87f0657a250c730 -r8ba5fc977a902ebf0d18050ad8defcbd96be9548 --- lams_monitoring/web/tblmonitor/teamsQuestionResultsCell.jsp (.../teamsQuestionResultsCell.jsp) (revision eaf86cc891c4a0dbcc71fa7bd87f0657a250c730) +++ lams_monitoring/web/tblmonitor/teamsQuestionResultsCell.jsp (.../teamsQuestionResultsCell.jsp) (revision 8ba5fc977a902ebf0d18050ad8defcbd96be9548) @@ -1,25 +1,23 @@ <%@ include file="/taglibs.jsp"%> - - - - - - - bg-success text-white - bg-danger text-white - bg-warning - - - - - - ${answerPercent}% - - - - - - - - - \ No newline at end of file + + + + + + bg-success text-white + bg-danger text-white + bg-warning + + + + + + + ${answerPercent}% + + + - + + + \ No newline at end of file