Index: lams_central/src/java/org/lamsfoundation/lams/gradebook/service/GradeBookService.java =================================================================== diff -u -r741b4aeae881d6df027beb62bb672402eb45afd3 -r771e53ce121281172ff7101bd9f4eac1b02d674c --- lams_central/src/java/org/lamsfoundation/lams/gradebook/service/GradeBookService.java (.../GradeBookService.java) (revision 741b4aeae881d6df027beb62bb672402eb45afd3) +++ lams_central/src/java/org/lamsfoundation/lams/gradebook/service/GradeBookService.java (.../GradeBookService.java) (revision 771e53ce121281172ff7101bd9f4eac1b02d674c) @@ -204,13 +204,13 @@ .getActivityId()); if (firstActivity.isToolActivity() && firstActivity instanceof ToolActivity) { - GBActivityGridRowDTO activityDTO = getGradeBookActivityDTO(firstActivity, lesson); + GBActivityGridRowDTO activityDTO = getGradeBookActivityDTO((ToolActivity)firstActivity, lesson); gradeBookActivityDTOs.add(activityDTO); } for (Activity activity : activities) { - if (activity.getActivityId().longValue() != firstActivity.getActivityId().longValue()) { - GBActivityGridRowDTO activityDTO = getGradeBookActivityDTO(activity, lesson); + if (activity.getActivityId().longValue() != firstActivity.getActivityId().longValue() && activity instanceof ToolActivity) { + GBActivityGridRowDTO activityDTO = getGradeBookActivityDTO((ToolActivity)activity, lesson); gradeBookActivityDTOs.add(activityDTO); } } @@ -421,55 +421,52 @@ * @param lesson * @return */ - private GBActivityGridRowDTO getGradeBookActivityDTO(Activity activity, Lesson lesson) { + private GBActivityGridRowDTO getGradeBookActivityDTO(ToolActivity activity, Lesson lesson) { GBActivityGridRowDTO gactivityDTO = new GBActivityGridRowDTO(); gactivityDTO.setId(activity.getActivityId()); gactivityDTO.setRowName(activity.getTitle()); + + // setting the average time + gactivityDTO.setTimeTaken(gradeBookDAO.getAverageDurationForActivity(activity.getActivityId())); - if (activity.isToolActivity() && activity instanceof ToolActivity) { - ToolActivity toolAct = (ToolActivity) activity; + String monitorUrl = Configuration.get(ConfigurationKeys.SERVER_URL) + activity.getTool().getMonitorUrl() + "?" + + AttributeNames.PARAM_CONTENT_FOLDER_ID + "=" + lesson.getLearningDesign().getContentFolderID() + "&" + + AttributeNames.PARAM_TOOL_CONTENT_ID + "=" + activity.getToolContentId(); + gactivityDTO.setMonitorUrl(monitorUrl); - String monitorUrl = Configuration.get(ConfigurationKeys.SERVER_URL) + toolAct.getTool().getMonitorUrl() - + "?" + AttributeNames.PARAM_CONTENT_FOLDER_ID + "=" - + lesson.getLearningDesign().getContentFolderID() + "&" + AttributeNames.PARAM_TOOL_CONTENT_ID - + "=" + toolAct.getToolContentId(); - gactivityDTO.setMonitorUrl(monitorUrl); + // Get the competences for this activity + Set competenceMappings = activity.getCompetenceMappings(); + String competenceMappingsStr = ""; + if (competenceMappings != null) { + for (CompetenceMapping mapping : competenceMappings) { + competenceMappingsStr += mapping.getCompetence().getTitle() + ", "; + } - // Get the competences for this activity - Set competenceMappings = toolAct.getCompetenceMappings(); - String competenceMappingsStr = ""; - if (competenceMappings != null) { - for (CompetenceMapping mapping : competenceMappings) { - competenceMappingsStr += mapping.getCompetence().getTitle() + ", "; - } - - // trim the last comma off - if (competenceMappingsStr.length() > 0) { - competenceMappingsStr = competenceMappingsStr.substring(0, competenceMappingsStr.lastIndexOf(",")); - } + // trim the last comma off + if (competenceMappingsStr.length() > 0) { + competenceMappingsStr = competenceMappingsStr.substring(0, competenceMappingsStr.lastIndexOf(",")); } - gactivityDTO.setCompetences(competenceMappingsStr); + } + gactivityDTO.setCompetences(competenceMappingsStr); - List gradeBookUserActivities = gradeBookDAO - .getAllGradeBookUserActivitiesForActivity(activity.getActivityId()); + List gradeBookUserActivities = gradeBookDAO + .getAllGradeBookUserActivitiesForActivity(activity.getActivityId()); - if (gradeBookUserActivities != null) { + if (gradeBookUserActivities != null) { - double sum = 0; - double count = 0; - for (GradeBookUserActivity gact : gradeBookUserActivities) { - if (gact.getMark() != null) { - count++; - sum += gact.getMark(); - } + double sum = 0; + double count = 0; + for (GradeBookUserActivity gact : gradeBookUserActivities) { + if (gact.getMark() != null) { + count++; + sum += gact.getMark(); } - - // Settting the mark as an average for the class as this is not a specific user view - if (count != 0) { - gactivityDTO.setMark(sum / count); - } } + // Settting the mark as an average for the class as this is not a specific user view + if (count != 0) { + gactivityDTO.setMark(sum / count); + } } return gactivityDTO; Index: lams_central/web/gradebook/gradeBookMonitor.jsp =================================================================== diff -u -r0e1f26c5dd0feb65f9387191c66811c4ca8aa584 -r771e53ce121281172ff7101bd9f4eac1b02d674c --- lams_central/web/gradebook/gradeBookMonitor.jsp (.../gradeBookMonitor.jsp) (revision 0e1f26c5dd0feb65f9387191c66811c4ca8aa584) +++ lams_central/web/gradebook/gradeBookMonitor.jsp (.../gradeBookMonitor.jsp) (revision 771e53ce121281172ff7101bd9f4eac1b02d674c) @@ -158,11 +158,12 @@ rowNum:10, sortorder: "asc", sortname: "activityId", - colNames:["", 'Activity Name', 'Competences', 'Average Mark'], + colNames:["", 'Activity Name', 'Average Time Taken', 'Competences', 'Average Mark'], colModel:[ {name:'id', width:10, index:'id', sortable:false, hidden:true, hidedlg:true}, {name:'rowName', width:60, index:'rowName', sortable:true, editable: false}, - {name:'competences', width:250, index:'competences', sortable:false, editable: false, hidden:true}, + {name:'timeTaken', index:'timeTaken', sortable:true, editable: false}, + {name:'competences', width:250, index:'competences', sortable:false, editable: false, hidden:true}, {name:'mark',index:'mark', sortable:true, editable:false} ], loadError: function(xhr,st,err) { @@ -189,11 +190,12 @@ pager: subgrid_table_id + "_pager", rowList:[5,10,20,30], rowNum:10, - colNames: ['','Full Name','Progress','Outputs', 'Activity Feedback', 'Mark'], + colNames: ['','Full Name','Progress', 'Time Taken', 'Outputs', 'Activity Feedback', 'Mark'], colModel:[ {name:'id', index:'id', sortable:false, editable:false, hidden:true, search:false, hidedlg:true}, {name:'rowName',index:'rowName', sortable:true, editable:false}, {name:'status', align:'center', width:30, index:'status', sortable:false, editable:false, search:false}, + {name:'timeTaken', width:50, index:'timeTaken', sortable:true, editable: false}, {name:'output', width:220, index:'output', sortable:false, editable: false, search:false}, {name:'feedback',index:'feedback', sortable:false, editable:true, edittype:'textarea', editoptions:{rows:'4',cols:'20'} , search:false}, {name:'mark',index:'mark', sortable:true, editable:true, editrules:{number:true}, search:false} Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/lesson/CompletedActivityProgress.hbm.xml =================================================================== diff -u --- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/lesson/CompletedActivityProgress.hbm.xml (revision 0) +++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/lesson/CompletedActivityProgress.hbm.xml (revision 771e53ce121281172ff7101bd9f4eac1b02d674c) @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/commonContext.xml =================================================================== diff -u -rb02e79fc24c3d4f870d66a4a0386717f8093bc43 -r771e53ce121281172ff7101bd9f4eac1b02d674c --- lams_common/src/java/org/lamsfoundation/lams/commonContext.xml (.../commonContext.xml) (revision b02e79fc24c3d4f870d66a4a0386717f8093bc43) +++ lams_common/src/java/org/lamsfoundation/lams/commonContext.xml (.../commonContext.xml) (revision 771e53ce121281172ff7101bd9f4eac1b02d674c) @@ -56,6 +56,7 @@ classpath:org/lamsfoundation/lams/lesson/LearnerProgress.hbm.xml classpath:org/lamsfoundation/lams/lesson/Lesson.hbm.xml + classpath:org/lamsfoundation/lams/lesson/CompletedActivityProgress.hbm.xml classpath:org/lamsfoundation/lams/workspace/WorkspaceFolderContent.hbm.xml Index: lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/IGradeBookDAO.java =================================================================== diff -u -rfc2b6751efa103ff475378442632b752c01c2736 -r771e53ce121281172ff7101bd9f4eac1b02d674c --- lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/IGradeBookDAO.java (.../IGradeBookDAO.java) (revision fc2b6751efa103ff475378442632b752c01c2736) +++ lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/IGradeBookDAO.java (.../IGradeBookDAO.java) (revision 771e53ce121281172ff7101bd9f4eac1b02d674c) @@ -42,6 +42,8 @@ public Double getAverageMarkForLesson(Long lessonID); public long getAverageDurationLesson(Long lessonID); + + public long getAverageDurationForActivity(Long activityID); } \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/hibernate/GradeBookDAO.java =================================================================== diff -u -rfc2b6751efa103ff475378442632b752c01c2736 -r771e53ce121281172ff7101bd9f4eac1b02d674c --- lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/hibernate/GradeBookDAO.java (.../GradeBookDAO.java) (revision fc2b6751efa103ff475378442632b752c01c2736) +++ lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/hibernate/GradeBookDAO.java (.../GradeBookDAO.java) (revision 771e53ce121281172ff7101bd9f4eac1b02d674c) @@ -48,8 +48,11 @@ private static final String GET_AVERAGE_MARK_FOR_LESSON = "select avg(gles.mark) from GradeBookUserLesson gles where " + "gles.lesson.lessonId=:lessonID"; - private static final String GET_AVERAGE_COMPLETION_TIME = "select prog.finishDate, prog.startDate as x from LearnerProgress prog where " + private static final String GET_AVERAGE_COMPLETION_TIME = "select prog.finishDate, prog.startDate from LearnerProgress prog where " + "prog.lesson.lessonId=:lessonID"; + + private static final String GET_AVERAGE_COMPLETION_TIME_ACTIVITY = "select compProg.finishDate, compProg.startDate from CompletedActivityProgress compProg, Activity act where " + + "compProg.activity.activityId=:activityID"; @SuppressWarnings("unchecked") public GradeBookUserActivity getGradeBookUserDataForActivity(Long activityID, Integer userID) { @@ -144,4 +147,36 @@ } return 0; } + + @SuppressWarnings("unchecked") + public long getAverageDurationForActivity(Long activityID) { + List result = (List) getSession().createQuery(GET_AVERAGE_COMPLETION_TIME_ACTIVITY).setLong( + "activityID", activityID.longValue()).list(); + + if (result != null) { + if (result.size() > 0) { + + long sum = 0; + long count = 0; + for (Object[] dateObjs : result) { + if (dateObjs != null && dateObjs.length == 2) { + Date finishDate = (Date) dateObjs[0]; + Date startDate = (Date) dateObjs[1]; + + if (startDate != null && finishDate != null) { + + sum += finishDate.getTime() - startDate.getTime(); + count++; + } + } + } + + if (count > 0) { + return sum / count; + } + } + + } + return 0; + } } Index: lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/GBActivityGridRowDTO.java =================================================================== diff -u -r0e1f26c5dd0feb65f9387191c66811c4ca8aa584 -r771e53ce121281172ff7101bd9f4eac1b02d674c --- lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/GBActivityGridRowDTO.java (.../GBActivityGridRowDTO.java) (revision 0e1f26c5dd0feb65f9387191c66811c4ca8aa584) +++ lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/GBActivityGridRowDTO.java (.../GBActivityGridRowDTO.java) (revision 771e53ce121281172ff7101bd9f4eac1b02d674c) @@ -83,6 +83,12 @@ } else { ret.add(rowName); } + + if (timeTaken != null) { + ret.add(convertTimeToString(timeTaken)); + } else { + ret.add("-"); + } ret.add(competences); Index: lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/GBUserGridRowDTO.java =================================================================== diff -u -r0e1f26c5dd0feb65f9387191c66811c4ca8aa584 -r771e53ce121281172ff7101bd9f4eac1b02d674c --- lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/GBUserGridRowDTO.java (.../GBUserGridRowDTO.java) (revision 0e1f26c5dd0feb65f9387191c66811c4ca8aa584) +++ lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/GBUserGridRowDTO.java (.../GBUserGridRowDTO.java) (revision 771e53ce121281172ff7101bd9f4eac1b02d674c) @@ -66,6 +66,12 @@ } ret.add(status); + if (timeTaken != null) { + ret.add(convertTimeToString(timeTaken)); + } else { + ret.add("-"); + } + ret.add(output); ret.add(feedback); } else if (view.equals(VIEW_COURSE_MONITOR)){