Index: lams_central/web/qb/stats.jsp =================================================================== diff -u -raccfdd9d97b1e9f4db2c48861a2f5ea1d065a3cb -r4dfbbc90e3d414eaf3f4282a3a38b4ec741384d7 --- lams_central/web/qb/stats.jsp (.../stats.jsp) (revision accfdd9d97b1e9f4db2c48861a2f5ea1d065a3cb) +++ lams_central/web/qb/stats.jsp (.../stats.jsp) (revision 4dfbbc90e3d414eaf3f4282a3a38b4ec741384d7) @@ -25,6 +25,10 @@ #chartDiv { height: 220px; } + + #usage a { + text-decoration: underline; + } @@ -171,7 +175,7 @@ Usage
- +
- - + - - + - - +
Organisation @@ -208,7 +212,16 @@ - + + + + + + + + + + Index: lams_common/src/java/org/lamsfoundation/lams/commonContext.xml =================================================================== diff -u -raccfdd9d97b1e9f4db2c48861a2f5ea1d065a3cb -r4dfbbc90e3d414eaf3f4282a3a38b4ec741384d7 --- lams_common/src/java/org/lamsfoundation/lams/commonContext.xml (.../commonContext.xml) (revision accfdd9d97b1e9f4db2c48861a2f5ea1d065a3cb) +++ lams_common/src/java/org/lamsfoundation/lams/commonContext.xml (.../commonContext.xml) (revision 4dfbbc90e3d414eaf3f4282a3a38b4ec741384d7) @@ -541,6 +541,7 @@ + Index: lams_common/src/java/org/lamsfoundation/lams/qb/dto/QbStatsActivityDTO.java =================================================================== diff -u -raccfdd9d97b1e9f4db2c48861a2f5ea1d065a3cb -r4dfbbc90e3d414eaf3f4282a3a38b4ec741384d7 --- lams_common/src/java/org/lamsfoundation/lams/qb/dto/QbStatsActivityDTO.java (.../QbStatsActivityDTO.java) (revision accfdd9d97b1e9f4db2c48861a2f5ea1d065a3cb) +++ lams_common/src/java/org/lamsfoundation/lams/qb/dto/QbStatsActivityDTO.java (.../QbStatsActivityDTO.java) (revision 4dfbbc90e3d414eaf3f4282a3a38b4ec741384d7) @@ -1,13 +1,16 @@ package org.lamsfoundation.lams.qb.dto; import org.lamsfoundation.lams.learningdesign.ToolActivity; +import org.lamsfoundation.lams.qb.model.QbQuestion; public class QbStatsActivityDTO { - public ToolActivity activity; - public Integer participantCount; - public Double difficultyIndex; - public Double discriminationIndex; - public Double pointBiserial; + private ToolActivity activity; + private QbQuestion qbQuestion; + private String monitorURL; + private Integer participantCount; + private Double difficultyIndex; + private Double discriminationIndex; + private Double pointBiserial; public ToolActivity getActivity() { return activity; @@ -17,6 +20,22 @@ this.activity = activity; } + public QbQuestion getQbQuestion() { + return qbQuestion; + } + + public void setQbQuestion(QbQuestion qbQuestion) { + this.qbQuestion = qbQuestion; + } + + public String getMonitorURL() { + return monitorURL; + } + + public void setMonitorURL(String monitorURL) { + this.monitorURL = monitorURL; + } + public Integer getParticipantCount() { return participantCount; } Index: lams_common/src/java/org/lamsfoundation/lams/qb/service/QbService.java =================================================================== diff -u -rcee2752fb2ef63145dae66eba09c5c53335822e0 -r4dfbbc90e3d414eaf3f4282a3a38b4ec741384d7 --- lams_common/src/java/org/lamsfoundation/lams/qb/service/QbService.java (.../QbService.java) (revision cee2752fb2ef63145dae66eba09c5c53335822e0) +++ lams_common/src/java/org/lamsfoundation/lams/qb/service/QbService.java (.../QbService.java) (revision 4dfbbc90e3d414eaf3f4282a3a38b4ec741384d7) @@ -10,27 +10,34 @@ import java.util.Map.Entry; import java.util.Set; +import org.apache.log4j.Logger; import org.lamsfoundation.lams.gradebook.GradebookUserLesson; import org.lamsfoundation.lams.gradebook.service.IGradebookService; import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.LearningDesign; import org.lamsfoundation.lams.learningdesign.ToolActivity; +import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.qb.dao.IQbDAO; import org.lamsfoundation.lams.qb.dto.QbStatsActivityDTO; import org.lamsfoundation.lams.qb.dto.QbStatsDTO; import org.lamsfoundation.lams.qb.model.QbOption; import org.lamsfoundation.lams.qb.model.QbQuestion; +import org.lamsfoundation.lams.tool.service.ILamsCoreToolService; import org.lamsfoundation.lams.util.WebUtil; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.JsonNodeFactory; import com.fasterxml.jackson.databind.node.ObjectNode; public class QbService implements IQbService { + private static Logger log = Logger.getLogger(QbService.class); private IQbDAO qbDAO; private IGradebookService gradebookService; + private ILamsCoreToolService lamsCoreToolService; + @Override public QbQuestion getQbQuestionByUid(Long qbQuestionUid) { return qbDAO.getQbQuestionByUid(qbQuestionUid); @@ -141,14 +148,20 @@ public QbStatsActivityDTO getActivityStats(Long activityId, Long qbQuestionUid, Collection correctOptionUids) { ToolActivity activity = (ToolActivity) qbDAO.find(ToolActivity.class, activityId); - Long lessonId = activity.getLearningDesign().getLessons().iterator().next().getLessonId(); + LearningDesign learningDesign = activity.getLearningDesign(); + Lesson lesson = learningDesign.getLessons().iterator().next(); + Long lessonId = lesson.getLessonId(); List userLessonGrades = gradebookService.getGradebookUserLesson(lessonId); int participantCount = userLessonGrades.size(); QbStatsActivityDTO activityDTO = new QbStatsActivityDTO(); activityDTO.setActivity(activity); activityDTO.setParticipantCount(participantCount); + String monitorUrl = "/lams/" + lamsCoreToolService.getToolMonitoringURL(lessonId, activity) + + "&contentFolderID=" + learningDesign.getContentFolderID(); + activityDTO.setMonitorURL(monitorUrl); + // if there is only 1 participant, there is no point in calculating question indexes if (participantCount > 1) { // mapping of user ID -> option UID @@ -225,4 +238,8 @@ public void setGradebookService(IGradebookService gradebookService) { this.gradebookService = gradebookService; } + + public void setLamsCoreToolService(ILamsCoreToolService lamsCoreToolService) { + this.lamsCoreToolService = lamsCoreToolService; + } } \ No newline at end of file Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/MonitoringController.java =================================================================== diff -u -r69e2980b566d069500c2e5c07dccf96e29cc287c -r4dfbbc90e3d414eaf3f4282a3a38b4ec741384d7 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/MonitoringController.java (.../MonitoringController.java) (revision 69e2980b566d069500c2e5c07dccf96e29cc287c) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/MonitoringController.java (.../MonitoringController.java) (revision 4dfbbc90e3d414eaf3f4282a3a38b4ec741384d7) @@ -27,8 +27,8 @@ import java.util.ArrayList; import java.util.Date; import java.util.LinkedHashMap; +import java.util.LinkedList; import java.util.List; -import java.util.Map; import java.util.Set; import java.util.TimeZone; import java.util.TreeSet; @@ -571,11 +571,12 @@ sessionMap.put("sessionDtos", sessionDtos); } - Map qbStats = new LinkedHashMap<>(); + List qbStats = new LinkedList<>(); for (AssessmentQuestion question : assessment.getQuestions()) { QbStatsActivityDTO questionStats = qbService.getActivityStatsByContentId(assessment.getContentId(), question.getQbQuestion().getUid()); - qbStats.put(question.getQbQuestion().getName(), questionStats); + questionStats.setQbQuestion(question.getQbQuestion()); + qbStats.add(questionStats); } request.setAttribute("qbStats", qbStats); } Index: lams_tool_assessment/web/pages/monitoring/statisticpart.jsp =================================================================== diff -u -r69e2980b566d069500c2e5c07dccf96e29cc287c -r4dfbbc90e3d414eaf3f4282a3a38b4ec741384d7 --- lams_tool_assessment/web/pages/monitoring/statisticpart.jsp (.../statisticpart.jsp) (revision 69e2980b566d069500c2e5c07dccf96e29cc287c) +++ lams_tool_assessment/web/pages/monitoring/statisticpart.jsp (.../statisticpart.jsp) (revision 4dfbbc90e3d414eaf3f4282a3a38b4ec741384d7) @@ -194,14 +194,13 @@
${i.index + 1} - + Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/controller/McMonitoringController.java =================================================================== diff -u -rcee2752fb2ef63145dae66eba09c5c53335822e0 -r4dfbbc90e3d414eaf3f4282a3a38b4ec741384d7 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/controller/McMonitoringController.java (.../McMonitoringController.java) (revision cee2752fb2ef63145dae66eba09c5c53335822e0) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/controller/McMonitoringController.java (.../McMonitoringController.java) (revision 4dfbbc90e3d414eaf3f4282a3a38b4ec741384d7) @@ -27,10 +27,8 @@ import java.util.ArrayList; import java.util.Date; import java.util.Iterator; -import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; -import java.util.Map; import java.util.Set; import java.util.TimeZone; import java.util.TreeSet; @@ -539,11 +537,12 @@ } request.setAttribute("useSelectLeaderToolOutput", mcContent.isUseSelectLeaderToolOuput()); - Map qbStats = new LinkedHashMap<>(); + List qbStats = new LinkedList<>(); for (McQueContent question : mcContent.getMcQueContents()) { QbStatsActivityDTO questionStats = qbService.getActivityStatsByContentId(mcContent.getMcContentId(), question.getQbQuestion().getUid()); - qbStats.put(question.getName(), questionStats); + questionStats.setQbQuestion(question.getQbQuestion()); + qbStats.add(questionStats); } request.setAttribute("qbStats", qbStats); } Index: lams_tool_lamc/web/monitoring/parts/statsPart.jsp =================================================================== diff -u -rcee2752fb2ef63145dae66eba09c5c53335822e0 -r4dfbbc90e3d414eaf3f4282a3a38b4ec741384d7 --- lams_tool_lamc/web/monitoring/parts/statsPart.jsp (.../statsPart.jsp) (revision cee2752fb2ef63145dae66eba09c5c53335822e0) +++ lams_tool_lamc/web/monitoring/parts/statsPart.jsp (.../statsPart.jsp) (revision 4dfbbc90e3d414eaf3f4282a3a38b4ec741384d7) @@ -194,14 +194,13 @@
${i.index + 1} - + Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/controller/MonitoringController.java =================================================================== diff -u -re82b4549b14d551aced42d534a0b001f449f02bc -r4dfbbc90e3d414eaf3f4282a3a38b4ec741384d7 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/controller/MonitoringController.java (.../MonitoringController.java) (revision e82b4549b14d551aced42d534a0b001f449f02bc) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/controller/MonitoringController.java (.../MonitoringController.java) (revision 4dfbbc90e3d414eaf3f4282a3a38b4ec741384d7) @@ -26,8 +26,8 @@ import java.io.IOException; import java.util.Date; import java.util.LinkedHashMap; +import java.util.LinkedList; import java.util.List; -import java.util.Map; import java.util.Set; import java.util.TimeZone; import java.util.TreeSet; @@ -297,14 +297,15 @@ LeaderResultsDTO leaderDto = scratchieService.getLeaderResultsDTOForLeaders(scratchie.getContentId()); sessionMap.put("leaderDto", leaderDto); - Map qbStats = new LinkedHashMap<>(); Set items = new TreeSet<>(new ScratchieItemComparator()); items.addAll(scratchie.getScratchieItems()); + List qbStats = new LinkedList<>(); for (ScratchieItem item : items) { QbStatsActivityDTO questionStats = qbService.getActivityStatsByContentId(scratchie.getContentId(), item.getQbQuestion().getUid()); - qbStats.put(item.getQbQuestion().getName(), questionStats); + questionStats.setQbQuestion(item.getQbQuestion()); + qbStats.add(questionStats); } request.setAttribute("qbStats", qbStats); } Index: lams_tool_scratchie/web/pages/monitoring/parts/statisticpart.jsp =================================================================== diff -u -re82b4549b14d551aced42d534a0b001f449f02bc -r4dfbbc90e3d414eaf3f4282a3a38b4ec741384d7 --- lams_tool_scratchie/web/pages/monitoring/parts/statisticpart.jsp (.../statisticpart.jsp) (revision e82b4549b14d551aced42d534a0b001f449f02bc) +++ lams_tool_scratchie/web/pages/monitoring/parts/statisticpart.jsp (.../statisticpart.jsp) (revision 4dfbbc90e3d414eaf3f4282a3a38b4ec741384d7) @@ -90,14 +90,13 @@
${i.index + 1} - +