Index: lams_tool_assessment/conf/language/lams/ApplicationResources.properties =================================================================== diff -u -r85ea0d76fb9294ce3b52e20d6f23fae1678b24c6 -r6cda19702eb2790fece3c55bddb223147417af5d --- lams_tool_assessment/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 85ea0d76fb9294ce3b52e20d6f23fae1678b24c6) +++ lams_tool_assessment/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 6cda19702eb2790fece3c55bddb223147417af5d) @@ -296,6 +296,8 @@ label.graph.help = In the graph(s) below, click on a bar in the graph and then use your mouse wheel to zoom in and out of the graph. Once you zoom in, the grey selection in the bottom graph can be dragged left or right to show a different set of marks. label.lowest.mark = Lowest mark: label.highest.mark = Highest mark: +label.median.mark = Median mark: +label.modes.mark = Mark modes: label.number.learners = Number of learners label.percentage = Percentage label.operation.failed = Operation failed. Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentUserDAO.java =================================================================== diff -u -r85ea0d76fb9294ce3b52e20d6f23fae1678b24c6 -r6cda19702eb2790fece3c55bddb223147417af5d --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentUserDAO.java (.../AssessmentUserDAO.java) (revision 85ea0d76fb9294ce3b52e20d6f23fae1678b24c6) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentUserDAO.java (.../AssessmentUserDAO.java) (revision 6cda19702eb2790fece3c55bddb223147417af5d) @@ -51,16 +51,9 @@ List getPagedUsersBySessionAndQuestion(Long sessionId, Long questionUid, int page, int size, String sortBy, String sortOrder, String searchString, IUserManagementService userManagementService); - List getRawUserMarksBySession(Long sessionId); + List getRawUserMarksBySession(Long sessionId); - Object[] getStatsMarksBySession(Long sessionId); + List getRawUserMarksByToolContentId(Long toolContentId); - Object[] getStatsMarksByContentId(Long toolContentId); - - List getRawUserMarksByToolContentId(Long toolContentId); - - List getRawLeaderMarksByToolContentId(Long toolContentId); - - Object[] getStatsMarksForLeaders(Long toolContentId); - -} + List getRawLeaderMarksByToolContentId(Long toolContentId); +} \ No newline at end of file Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentUserDAOHibernate.java =================================================================== diff -u -r85ea0d76fb9294ce3b52e20d6f23fae1678b24c6 -r6cda19702eb2790fece3c55bddb223147417af5d --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentUserDAOHibernate.java (.../AssessmentUserDAOHibernate.java) (revision 85ea0d76fb9294ce3b52e20d6f23fae1678b24c6) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentUserDAOHibernate.java (.../AssessmentUserDAOHibernate.java) (revision 6cda19702eb2790fece3c55bddb223147417af5d) @@ -30,8 +30,6 @@ import org.hibernate.query.NativeQuery; import org.hibernate.query.Query; -import org.hibernate.type.FloatType; -import org.hibernate.type.IntegerType; import org.lamsfoundation.lams.dao.hibernate.LAMSBaseDAO; import org.lamsfoundation.lams.tool.assessment.dao.AssessmentUserDAO; import org.lamsfoundation.lams.tool.assessment.dto.AssessmentUserDTO; @@ -50,9 +48,6 @@ private static final String LOAD_MARKS_FOR_SESSION = "SELECT grade FROM tl_laasse10_assessment_result " + " WHERE finish_date IS NOT NULL AND latest = 1 AND session_id = :sessionId"; - private static final String FIND_MARK_STATS_FOR_SESSION = "SELECT MIN(grade) min_grade, AVG(grade) avg_grade, MAX(grade) max_grade FROM tl_laasse10_assessment_result " - + " WHERE finish_date IS NOT NULL AND latest = 1 AND session_id = :sessionId"; - private static final String LOAD_MARKS_FOR_LEADERS = "SELECT r.grade FROM tl_laasse10_assessment_result r " + " JOIN tl_laasse10_session s ON r.session_id = s.session_id AND r.user_uid = s.group_leader_uid " + " JOIN tl_laasse10_assessment a ON s.assessment_uid = a.uid " @@ -62,16 +57,6 @@ + " JOIN tl_laasse10_assessment a ON r.assessment_uid = a.uid " + " WHERE r.finish_date IS NOT NULL AND r.latest = 1 AND a.content_id = :toolContentId"; - private static final String FIND_MARK_STATS_FOR_LEADERS = "SELECT MIN(grade) min_grade, AVG(grade) avg_grade, MAX(grade) max_grade, COUNT(grade) num_complete " - + " FROM tl_laasse10_assessment_result r " - + " JOIN tl_laasse10_session s ON r.session_id = s.session_id AND r.user_uid = s.group_leader_uid " - + " JOIN tl_laasse10_assessment a ON s.assessment_uid = a.uid " - + " WHERE r.finish_date IS NOT NULL AND r.latest = 1 AND a.content_id = :toolContentId"; - - private static final String FIND_MARK_STATS_FOR_CONTENT = "SELECT MIN(grade) min_grade, AVG(grade) avg_grade, MAX(grade) max_grade, COUNT(grade) num_complete " - + " FROM tl_laasse10_assessment_result r " + " JOIN tl_laasse10_assessment a ON r.assessment_uid = a.uid " - + " WHERE r.finish_date IS NOT NULL AND r.latest = 1 AND a.content_id = :toolContentId"; - @SuppressWarnings("rawtypes") @Override public AssessmentUser getUserByUserIDAndSessionID(Long userID, Long sessionId) { @@ -214,51 +199,6 @@ return query.uniqueResult().intValue(); } - @SuppressWarnings("rawtypes") - @Override - public Object[] getStatsMarksBySession(Long sessionId) { - Query query = getSession().createNativeQuery(FIND_MARK_STATS_FOR_SESSION) - .addScalar("min_grade", FloatType.INSTANCE).addScalar("avg_grade", FloatType.INSTANCE) - .addScalar("max_grade", FloatType.INSTANCE); - query.setParameter("sessionId", sessionId); - List list = query.list(); - if ((list == null) || (list.size() == 0)) { - return null; - } else { - return (Object[]) list.get(0); - } - } - - @SuppressWarnings("unchecked") - @Override - public Object[] getStatsMarksByContentId(Long toolContentId) { - NativeQuery query = getSession().createNativeQuery(FIND_MARK_STATS_FOR_CONTENT) - .addScalar("min_grade", FloatType.INSTANCE).addScalar("avg_grade", FloatType.INSTANCE) - .addScalar("max_grade", FloatType.INSTANCE).addScalar("num_complete", IntegerType.INSTANCE); - query.setParameter("toolContentId", toolContentId); - List list = query.list(); - if ((list == null) || (list.size() == 0)) { - return null; - } else { - return (Object[]) list.get(0); - } - } - - @SuppressWarnings("unchecked") - @Override - public Object[] getStatsMarksForLeaders(Long toolContentId) { - NativeQuery query = getSession().createNativeQuery(FIND_MARK_STATS_FOR_LEADERS) - .addScalar("min_grade", FloatType.INSTANCE).addScalar("avg_grade", FloatType.INSTANCE) - .addScalar("max_grade", FloatType.INSTANCE).addScalar("num_complete", IntegerType.INSTANCE); - query.setParameter("toolContentId", toolContentId); - List list = query.list(); - if ((list == null) || (list.size() == 0)) { - return null; - } else { - return (Object[]) list.get(0); - } - } - private static String LOAD_USERS_ORDERED_BY_SESSION_QUESTION_SELECT = "SELECT DISTINCT question_result.uid, user.last_name, user.first_name, user.login_name, question_result.mark"; private static String LOAD_USERS_ORDERED_BY_SESSION_QUESTION_FROM = " FROM tl_laasse10_user user"; private static String LOAD_USERS_ORDERED_BY_SESSION_QUESTION_JOIN = " INNER JOIN tl_laasse10_session session" @@ -330,30 +270,27 @@ return userDtos; } + @SuppressWarnings("unchecked") @Override - public List getRawUserMarksBySession(Long sessionId) { - @SuppressWarnings("unchecked") - NativeQuery query = getSession().createNativeQuery(LOAD_MARKS_FOR_SESSION); + public List getRawUserMarksBySession(Long sessionId) { + NativeQuery query = getSession().createNativeQuery(LOAD_MARKS_FOR_SESSION); query.setParameter("sessionId", sessionId); - List list = query.list(); - return list; + return query.list(); } + @SuppressWarnings("unchecked") @Override - public List getRawUserMarksByToolContentId(Long toolContentId) { - @SuppressWarnings("unchecked") - NativeQuery query = getSession().createNativeQuery(LOAD_MARKS_FOR_CONTENT); + public List getRawUserMarksByToolContentId(Long toolContentId) { + NativeQuery query = getSession().createNativeQuery(LOAD_MARKS_FOR_CONTENT); query.setParameter("toolContentId", toolContentId); - List list = query.list(); - return list; + return query.list(); } + @SuppressWarnings("unchecked") @Override - public List getRawLeaderMarksByToolContentId(Long toolContentId) { - @SuppressWarnings("unchecked") - NativeQuery query = getSession().createNativeQuery(LOAD_MARKS_FOR_LEADERS); + public List getRawLeaderMarksByToolContentId(Long toolContentId) { + NativeQuery query = getSession().createNativeQuery(LOAD_MARKS_FOR_LEADERS); query.setParameter("toolContentId", toolContentId); - List list = query.list(); - return list; + return query.list(); } } \ No newline at end of file Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dto/GradeStatsDTO.java =================================================================== diff -u --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dto/GradeStatsDTO.java (revision 0) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dto/GradeStatsDTO.java (revision 6cda19702eb2790fece3c55bddb223147417af5d) @@ -0,0 +1,148 @@ +package org.lamsfoundation.lams.tool.assessment.dto; + +import java.util.Collection; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.TreeMap; +import java.util.TreeSet; +import java.util.function.Function; +import java.util.stream.Collectors; + +import org.lamsfoundation.lams.tool.assessment.model.AssessmentResult; +import org.lamsfoundation.lams.util.NumberUtil; + +public class GradeStatsDTO { + private Long sessionId; + private String sessionName; + + private int count; + private Float min; + private Float max; + private Float average; + private Float median; + private Collection modes; + + //used for export purposes only + private List assessmentResults; + + public GradeStatsDTO(Long sessionId, String sessionName) { + this.sessionId = sessionId; + this.sessionName = sessionName; + } + + public GradeStatsDTO(Long sessionId, String sessionName, List grades) { + this(grades); + this.sessionId = sessionId; + this.sessionName = sessionName; + } + + public GradeStatsDTO(List grades) { + if (grades == null || grades.isEmpty()) { + return; + } + + float sum = 0; + min = Float.MAX_VALUE; + max = Float.MIN_VALUE; + for (Float grade : grades) { + if (grade < min) { + min = grade; + } + if (grade > max) { + max = grade; + } + sum += grade; + } + + count = grades.size(); + average = sum / count; + + Collections.sort(grades); + median = grades.get(count / 2); + if (count % 2 == 0) { + median = (median + grades.get(count / 2 - 1)) / 2; + } + + modes = grades.stream().collect(Collectors.groupingBy(Function.identity(), Collectors.counting())) // grade -> its count + .entrySet().stream().collect(Collectors.groupingBy(Map.Entry::getValue, // convert to count -> grades that have this count (can be many) + TreeMap::new, Collectors.mapping(Map.Entry::getKey, Collectors.toCollection(TreeSet::new)))) + .lastEntry().getValue(); // get top count + } + + public Long getSessionId() { + return sessionId; + } + + public String getSessionName() { + return sessionName; + } + + public List getAssessmentResults() { + return assessmentResults; + } + + public void setAssessmentResults(List assessmentResults) { + this.assessmentResults = assessmentResults; + } + + public int getCount() { + return count; + } + + public Float getMin() { + return min; + } + + public String getMinString() { + return GradeStatsDTO.format(min); + } + + public Float getMax() { + return max; + } + + public String getMaxString() { + return GradeStatsDTO.format(max); + } + + public Float getAverage() { + return average; + } + + public String getAverageString() { + return GradeStatsDTO.format(average); + } + + public Float getMedian() { + return median; + + } + + public String getMedianString() { + return GradeStatsDTO.format(median); + } + + public Collection getModes() { + return modes; + } + + public String getModesString() { + if (modes == null || modes.isEmpty()) { + return "-"; + } + + Iterator modeIterator = modes.iterator(); + StringBuilder result = new StringBuilder(GradeStatsDTO.format(modeIterator.next())); + while (modeIterator.hasNext()) { + result.append(", ").append(GradeStatsDTO.format(modeIterator.next())); + } + return result.toString(); + } + + private static String format(Float input) { + return input == null ? "-" : NumberUtil.formatLocalisedNumber(input, (Locale) null, 2); + } +} \ No newline at end of file Fisheye: Tag 6cda19702eb2790fece3c55bddb223147417af5d refers to a dead (removed) revision in file `lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dto/LeaderResultsDTO.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6cda19702eb2790fece3c55bddb223147417af5d refers to a dead (removed) revision in file `lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dto/SessionDTO.java'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java =================================================================== diff -u -r85ea0d76fb9294ce3b52e20d6f23fae1678b24c6 -r6cda19702eb2790fece3c55bddb223147417af5d --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 85ea0d76fb9294ce3b52e20d6f23fae1678b24c6) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 6cda19702eb2790fece3c55bddb223147417af5d) @@ -97,12 +97,11 @@ import org.lamsfoundation.lams.tool.assessment.dao.AssessmentUserDAO; import org.lamsfoundation.lams.tool.assessment.dto.AssessmentResultDTO; import org.lamsfoundation.lams.tool.assessment.dto.AssessmentUserDTO; -import org.lamsfoundation.lams.tool.assessment.dto.LeaderResultsDTO; +import org.lamsfoundation.lams.tool.assessment.dto.GradeStatsDTO; import org.lamsfoundation.lams.tool.assessment.dto.OptionDTO; import org.lamsfoundation.lams.tool.assessment.dto.QuestionDTO; import org.lamsfoundation.lams.tool.assessment.dto.QuestionSummary; import org.lamsfoundation.lams.tool.assessment.dto.ReflectDTO; -import org.lamsfoundation.lams.tool.assessment.dto.SessionDTO; import org.lamsfoundation.lams.tool.assessment.dto.UserSummary; import org.lamsfoundation.lams.tool.assessment.dto.UserSummaryItem; import org.lamsfoundation.lams.tool.assessment.model.Assessment; @@ -1201,74 +1200,37 @@ } @Override - public List getSessionDtos(Long contentId, boolean includeStatistics) { - List sessionDtos = new ArrayList<>(); + public List getSessionDtos(Long contentId, boolean includeStatistics) { + List sessionDtos = new ArrayList<>(); List sessionList = assessmentSessionDao.getByContentId(contentId); for (AssessmentSession session : sessionList) { Long sessionId = session.getSessionId(); - SessionDTO sessionDto = new SessionDTO(sessionId, session.getSessionName()); + GradeStatsDTO sessionDto = null; - //for statistics tab if (includeStatistics) { - int countUsers = assessmentUserDao.getCountUsersBySession(sessionId, ""); - sessionDto.setNumberLearners(countUsers); - Object[] markStats = assessmentUserDao.getStatsMarksBySession(sessionId); - if (markStats != null) { - sessionDto.setMinMark(markStats[0] != null - ? NumberUtil.formatLocalisedNumber((Float) markStats[0], (Locale) null, 2) - : "0.00"); - sessionDto.setAvgMark(markStats[1] != null - ? NumberUtil.formatLocalisedNumber((Float) markStats[1], (Locale) null, 2) - : "0.00"); - sessionDto.setMaxMark(markStats[2] != null - ? NumberUtil.formatLocalisedNumber((Float) markStats[2], (Locale) null, 2) - : "0.00"); - } - } + List grades = assessmentUserDao.getRawUserMarksBySession(sessionId); + sessionDto = new GradeStatsDTO(sessionId, session.getSessionName(), grades); + } else { + sessionDto = new GradeStatsDTO(sessionId, session.getSessionName()); + } sessionDtos.add(sessionDto); } return sessionDtos; } @Override - public SessionDTO getSessionDtoForActivity(Long contentId) { - SessionDTO activityDto = new SessionDTO(); - Object[] markStats = assessmentUserDao.getStatsMarksByContentId(contentId); - if (markStats != null) { - activityDto.setMinMark( - markStats[0] != null ? NumberUtil.formatLocalisedNumber((Float) markStats[0], (Locale) null, 2) - : "0.00"); - activityDto.setAvgMark( - markStats[1] != null ? NumberUtil.formatLocalisedNumber((Float) markStats[1], (Locale) null, 2) - : "0.00"); - activityDto.setMaxMark( - markStats[2] != null ? NumberUtil.formatLocalisedNumber((Float) markStats[2], (Locale) null, 2) - : "0.00"); - activityDto.setNumberLearners((Integer) markStats[3]); - } - return activityDto; + public GradeStatsDTO getStatsDtoForActivity(Long contentId) { + List grades = assessmentUserDao.getRawUserMarksByToolContentId(contentId); + return new GradeStatsDTO(grades); } @Override - public LeaderResultsDTO getLeaderResultsDTOForLeaders(Long contentId) { - LeaderResultsDTO newDto = new LeaderResultsDTO(contentId); - Object[] markStats = assessmentUserDao.getStatsMarksForLeaders(contentId); - if (markStats != null) { - newDto.setMinMark( - markStats[0] != null ? NumberUtil.formatLocalisedNumber((Float) markStats[0], (Locale) null, 2) - : "0.00"); - newDto.setAvgMark( - markStats[1] != null ? NumberUtil.formatLocalisedNumber((Float) markStats[1], (Locale) null, 2) - : "0.00"); - newDto.setMaxMark( - markStats[2] != null ? NumberUtil.formatLocalisedNumber((Float) markStats[2], (Locale) null, 2) - : "0.00"); - newDto.setNumberGroupsLeaderFinished((Integer) markStats[3]); - } - return newDto; + public GradeStatsDTO getStatsDtoForLeaders(Long contentId) { + List grades = assessmentUserDao.getRawLeaderMarksByToolContentId(contentId); + return new GradeStatsDTO(grades); } @Override @@ -1668,15 +1630,15 @@ } @Override - public List exportSummary(Assessment assessment, List sessionDtos) { + public List exportSummary(Assessment assessment, List sessionDtos) { List sheets = new LinkedList<>(); // -------------- First tab: Summary ---------------------------------------------------- ExcelSheet summarySheet = new ExcelSheet(getMessage("label.export.summary")); sheets.add(summarySheet); if (sessionDtos != null) { - for (SessionDTO sessionDTO : sessionDtos) { + for (GradeStatsDTO sessionDTO : sessionDtos) { Long sessionId = sessionDTO.getSessionId(); summarySheet.addEmptyRow(); @@ -1703,7 +1665,7 @@ } } else { - int countSessionUsers = sessionDTO.getNumberLearners(); + int countSessionUsers = getCountUsersBySession(sessionId, null); // Get the user list from the db userDtos = getPagedUsersBySession(sessionId, 0, countSessionUsers, "userName", "ASC", ""); @@ -2237,7 +2199,7 @@ Map userUidToResultMap = assessmentResults.stream() .collect(Collectors.toMap(r -> r.getUser().getUid(), r -> r)); - for (SessionDTO sessionDTO : sessionDtos) { + for (GradeStatsDTO sessionDTO : sessionDtos) { AssessmentSession assessmentSession = getSessionBySessionId(sessionDTO.getSessionId()); Set assessmentUsers = assessmentSession.getAssessmentUsers(); for (AssessmentUser assessmentUser : assessmentUsers) { @@ -2846,17 +2808,17 @@ } @Override - public List getMarksArray(Long sessionId) { + public List getMarksArray(Long sessionId) { return assessmentUserDao.getRawUserMarksBySession(sessionId); } @Override - public List getMarksArrayByContentId(Long toolContentId) { + public List getMarksArrayByContentId(Long toolContentId) { return assessmentUserDao.getRawUserMarksByToolContentId(toolContentId); } @Override - public List getMarksArrayForLeaders(Long toolContentId) { + public List getMarksArrayForLeaders(Long toolContentId) { return assessmentUserDao.getRawLeaderMarksByToolContentId(toolContentId); } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java =================================================================== diff -u -r85ea0d76fb9294ce3b52e20d6f23fae1678b24c6 -r6cda19702eb2790fece3c55bddb223147417af5d --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java (.../IAssessmentService.java) (revision 85ea0d76fb9294ce3b52e20d6f23fae1678b24c6) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java (.../IAssessmentService.java) (revision 6cda19702eb2790fece3c55bddb223147417af5d) @@ -34,11 +34,10 @@ import org.lamsfoundation.lams.notebook.model.NotebookEntry; import org.lamsfoundation.lams.tool.assessment.dto.AssessmentResultDTO; import org.lamsfoundation.lams.tool.assessment.dto.AssessmentUserDTO; -import org.lamsfoundation.lams.tool.assessment.dto.LeaderResultsDTO; +import org.lamsfoundation.lams.tool.assessment.dto.GradeStatsDTO; import org.lamsfoundation.lams.tool.assessment.dto.QuestionDTO; import org.lamsfoundation.lams.tool.assessment.dto.QuestionSummary; import org.lamsfoundation.lams.tool.assessment.dto.ReflectDTO; -import org.lamsfoundation.lams.tool.assessment.dto.SessionDTO; import org.lamsfoundation.lams.tool.assessment.dto.UserSummary; import org.lamsfoundation.lams.tool.assessment.model.Assessment; import org.lamsfoundation.lams.tool.assessment.model.AssessmentQuestion; @@ -398,9 +397,9 @@ * @param contentId * @return */ - List getSessionDtos(Long contentId, boolean includeStatistics); + List getSessionDtos(Long contentId, boolean includeStatistics); - SessionDTO getSessionDtoForActivity(Long contentId); + GradeStatsDTO getStatsDtoForActivity(Long contentId); /** * Prepares question results to be displayed in "Learner Summary" table. Shows all of them in case there is at least @@ -459,34 +458,28 @@ * @param sessionDtos * @return */ - List exportSummary(Assessment assessment, List sessionDtos); + List exportSummary(Assessment assessment, List sessionDtos); /** * Gets the basic statistics for the grades for the Leaders when an Assessment is done using * Group Leaders. So the averages, etc are for the whole Assessment, not for a Group. - * - * @param contentId - * @return */ - LeaderResultsDTO getLeaderResultsDTOForLeaders(Long contentId); + GradeStatsDTO getStatsDtoForLeaders(Long contentId); /** * Prepares data for the marks summary graph on the statistics page * */ - List getMarksArray(Long sessionId); + List getMarksArray(Long sessionId); - List getMarksArrayByContentId(Long toolContentId); + List getMarksArrayByContentId(Long toolContentId); /** * Prepares data for the marks summary graph on the statistics page, using the grades for the Leaders * when an Assessment is done using Group Leaders. So the grades are for the whole Assessment, not for a Group. * - * @param assessment - * @param sessionDtos - * @return */ - List getMarksArrayForLeaders(Long contentId); + List getMarksArrayForLeaders(Long contentId); void changeQuestionResultMark(Long questionResultUid, float newMark); Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/MonitoringController.java =================================================================== diff -u -r85ea0d76fb9294ce3b52e20d6f23fae1678b24c6 -r6cda19702eb2790fece3c55bddb223147417af5d --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/MonitoringController.java (.../MonitoringController.java) (revision 85ea0d76fb9294ce3b52e20d6f23fae1678b24c6) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/MonitoringController.java (.../MonitoringController.java) (revision 6cda19702eb2790fece3c55bddb223147417af5d) @@ -66,12 +66,11 @@ import org.lamsfoundation.lams.tool.assessment.AssessmentConstants; import org.lamsfoundation.lams.tool.assessment.dto.AssessmentResultDTO; import org.lamsfoundation.lams.tool.assessment.dto.AssessmentUserDTO; -import org.lamsfoundation.lams.tool.assessment.dto.LeaderResultsDTO; +import org.lamsfoundation.lams.tool.assessment.dto.GradeStatsDTO; import org.lamsfoundation.lams.tool.assessment.dto.OptionDTO; import org.lamsfoundation.lams.tool.assessment.dto.QuestionDTO; import org.lamsfoundation.lams.tool.assessment.dto.QuestionSummary; import org.lamsfoundation.lams.tool.assessment.dto.ReflectDTO; -import org.lamsfoundation.lams.tool.assessment.dto.SessionDTO; import org.lamsfoundation.lams.tool.assessment.dto.UserSummary; import org.lamsfoundation.lams.tool.assessment.model.Assessment; import org.lamsfoundation.lams.tool.assessment.model.AssessmentQuestion; @@ -147,7 +146,7 @@ request.setAttribute(AssessmentConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); Long contentId = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); - List sessionDtos = service.getSessionDtos(contentId, false); + List sessionDtos = service.getSessionDtos(contentId, false); Assessment assessment = service.getAssessmentByContentId(contentId); @@ -749,7 +748,7 @@ Long contentId = (Long) sessionMap.get(AttributeNames.PARAM_TOOL_CONTENT_ID); Assessment assessment = service.getAssessmentByContentId(contentId); - List results = null; + List results = null; if (assessment != null) { if (assessment.isUseSelectLeaderToolOuput()) { @@ -785,13 +784,13 @@ String fileName = null; Long contentId = null; - List sessionDtos; + List sessionDtos; if (sessionMapID != null) { SessionMap sessionMap = (SessionMap) request.getSession() .getAttribute(sessionMapID); request.setAttribute(AssessmentConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); contentId = (Long) sessionMap.get(AssessmentConstants.ATTR_TOOL_CONTENT_ID); - sessionDtos = (List) sessionMap.get("sessionDtos"); + sessionDtos = (List) sessionMap.get("sessionDtos"); } else { contentId = WebUtil.readLongParam(request, "toolContentID"); @@ -833,13 +832,13 @@ Assessment assessment = service.getAssessmentByContentId(contentId); if (assessment != null) { if (assessment.isUseSelectLeaderToolOuput()) { - LeaderResultsDTO leaderDto = service.getLeaderResultsDTOForLeaders(contentId); + GradeStatsDTO leaderDto = service.getStatsDtoForLeaders(contentId); sessionMap.put("leaderDto", leaderDto); } else { - List sessionDtos = service.getSessionDtos(contentId, true); + List sessionDtos = service.getSessionDtos(contentId, true); sessionMap.put("sessionDtos", sessionDtos); - SessionDTO activityDto = service.getSessionDtoForActivity(contentId); + GradeStatsDTO activityDto = service.getStatsDtoForActivity(contentId); sessionMap.put("activityDto", activityDto); } Index: lams_tool_assessment/web/pages/monitoring/statisticpart.jsp =================================================================== diff -u -r85ea0d76fb9294ce3b52e20d6f23fae1678b24c6 -r6cda19702eb2790fece3c55bddb223147417af5d --- lams_tool_assessment/web/pages/monitoring/statisticpart.jsp (.../statisticpart.jsp) (revision 85ea0d76fb9294ce3b52e20d6f23fae1678b24c6) +++ lams_tool_assessment/web/pages/monitoring/statisticpart.jsp (.../statisticpart.jsp) (revision 6cda19702eb2790fece3c55bddb223147417af5d) @@ -82,30 +82,44 @@ : - + : - + - + - + + + + + + + + + + + + + + +
@@ -127,31 +141,45 @@ : - + : - + - + - + + + + + + + + + + + + + + +
@@ -176,31 +204,45 @@ : - + : - + - + - + + + + + + + + + + + + + + +