Index: lams_tool_assessment/conf/language/lams/ApplicationResources.properties =================================================================== diff -u -r0b845931db55d90f0dcabc0b33cce5c7df688153 -r85ea0d76fb9294ce3b52e20d6f23fae1678b24c6 --- lams_tool_assessment/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 0b845931db55d90f0dcabc0b33cce5c7df688153) +++ lams_tool_assessment/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 85ea0d76fb9294ce3b52e20d6f23fae1678b24c6) @@ -276,6 +276,9 @@ label.notifications = Notifications label.ask.for.hedging.justification = Ask for hedging justification? label.number.learners.per.session = Number of learners per session +label.number.learners.per.activity = Total number of learners +label.activity.stats = Activity stats +label.group.stats = Group stats label.tool.output = Tool Output output.desc.best.score = Best score label.tool.output.has.been.changed = Tool Output has been changed Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentUserDAO.java =================================================================== diff -u -r50e336123ddaab4628f5f94f795340c8e845c6df -r85ea0d76fb9294ce3b52e20d6f23fae1678b24c6 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentUserDAO.java (.../AssessmentUserDAO.java) (revision 50e336123ddaab4628f5f94f795340c8e845c6df) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentUserDAO.java (.../AssessmentUserDAO.java) (revision 85ea0d76fb9294ce3b52e20d6f23fae1678b24c6) @@ -55,7 +55,12 @@ Object[] getStatsMarksBySession(Long sessionId); + Object[] getStatsMarksByContentId(Long toolContentId); + + List getRawUserMarksByToolContentId(Long toolContentId); + List getRawLeaderMarksByToolContentId(Long toolContentId); Object[] getStatsMarksForLeaders(Long toolContentId); + } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentUserDAOHibernate.java =================================================================== diff -u -r50e336123ddaab4628f5f94f795340c8e845c6df -r85ea0d76fb9294ce3b52e20d6f23fae1678b24c6 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentUserDAOHibernate.java (.../AssessmentUserDAOHibernate.java) (revision 50e336123ddaab4628f5f94f795340c8e845c6df) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentUserDAOHibernate.java (.../AssessmentUserDAOHibernate.java) (revision 85ea0d76fb9294ce3b52e20d6f23fae1678b24c6) @@ -49,19 +49,29 @@ 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 " + " WHERE r.finish_date IS NOT NULL AND r.latest = 1 AND a.content_id = :toolContentId"; + + private static final String LOAD_MARKS_FOR_CONTENT = "SELECT r.grade 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"; + 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) { @@ -221,6 +231,21 @@ @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) @@ -315,6 +340,15 @@ } @Override + public List getRawUserMarksByToolContentId(Long toolContentId) { + @SuppressWarnings("unchecked") + NativeQuery query = getSession().createNativeQuery(LOAD_MARKS_FOR_CONTENT); + query.setParameter("toolContentId", toolContentId); + List list = query.list(); + return list; + } + + @Override public List getRawLeaderMarksByToolContentId(Long toolContentId) { @SuppressWarnings("unchecked") NativeQuery query = getSession().createNativeQuery(LOAD_MARKS_FOR_LEADERS); Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java =================================================================== diff -u -r0b845931db55d90f0dcabc0b33cce5c7df688153 -r85ea0d76fb9294ce3b52e20d6f23fae1678b24c6 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 0b845931db55d90f0dcabc0b33cce5c7df688153) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 85ea0d76fb9294ce3b52e20d6f23fae1678b24c6) @@ -1234,6 +1234,25 @@ } @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; + } + + @Override public LeaderResultsDTO getLeaderResultsDTOForLeaders(Long contentId) { LeaderResultsDTO newDto = new LeaderResultsDTO(contentId); Object[] markStats = assessmentUserDao.getStatsMarksForLeaders(contentId); @@ -2832,6 +2851,11 @@ } @Override + public List getMarksArrayByContentId(Long toolContentId) { + return assessmentUserDao.getRawUserMarksByToolContentId(toolContentId); + } + + @Override 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 -rd295cb9148c3c8cbe2e98de79ae41f7eba704fe9 -r85ea0d76fb9294ce3b52e20d6f23fae1678b24c6 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java (.../IAssessmentService.java) (revision d295cb9148c3c8cbe2e98de79ae41f7eba704fe9) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java (.../IAssessmentService.java) (revision 85ea0d76fb9294ce3b52e20d6f23fae1678b24c6) @@ -400,6 +400,8 @@ */ List getSessionDtos(Long contentId, boolean includeStatistics); + SessionDTO getSessionDtoForActivity(Long contentId); + /** * Prepares question results to be displayed in "Learner Summary" table. Shows all of them in case there is at least * one random question present, and just questions from the question list if no random questions. @@ -471,12 +473,11 @@ /** * Prepares data for the marks summary graph on the statistics page * - * @param assessment - * @param sessionDtos - * @return */ List getMarksArray(Long sessionId); + 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. Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/MonitoringController.java =================================================================== diff -u -r2db58f73e88ecef930d486c60cc53fb3fa483415 -r85ea0d76fb9294ce3b52e20d6f23fae1678b24c6 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/MonitoringController.java (.../MonitoringController.java) (revision 2db58f73e88ecef930d486c60cc53fb3fa483415) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/MonitoringController.java (.../MonitoringController.java) (revision 85ea0d76fb9294ce3b52e20d6f23fae1678b24c6) @@ -755,8 +755,9 @@ if (assessment.isUseSelectLeaderToolOuput()) { results = service.getMarksArrayForLeaders(contentId); } else { - Long sessionId = WebUtil.readLongParam(request, AssessmentConstants.ATTR_TOOL_SESSION_ID); - results = service.getMarksArray(sessionId); + Long sessionId = WebUtil.readLongParam(request, AssessmentConstants.ATTR_TOOL_SESSION_ID, true); + results = sessionId == null ? service.getMarksArrayByContentId(contentId) + : service.getMarksArray(sessionId); } } @@ -837,6 +838,9 @@ } else { List sessionDtos = service.getSessionDtos(contentId, true); sessionMap.put("sessionDtos", sessionDtos); + + SessionDTO activityDto = service.getSessionDtoForActivity(contentId); + sessionMap.put("activityDto", activityDto); } List qbStats = new LinkedList<>(); Index: lams_tool_assessment/web/pages/monitoring/statisticpart.jsp =================================================================== diff -u -r89279cb44b252167269043889b3c3c0a4164e0bb -r85ea0d76fb9294ce3b52e20d6f23fae1678b24c6 --- lams_tool_assessment/web/pages/monitoring/statisticpart.jsp (.../statisticpart.jsp) (revision 89279cb44b252167269043889b3c3c0a4164e0bb) +++ lams_tool_assessment/web/pages/monitoring/statisticpart.jsp (.../statisticpart.jsp) (revision 85ea0d76fb9294ce3b52e20d6f23fae1678b24c6) @@ -2,6 +2,7 @@ +