Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GBUserGridRowDTO.java =================================================================== diff -u -re7df9c322cd3d1d3c84c2117419750a34c3cdab8 -r1aed494b3b9aeb79f7837c12b15cd1330b3020fa --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GBUserGridRowDTO.java (.../GBUserGridRowDTO.java) (revision e7df9c322cd3d1d3c84c2117419750a34c3cdab8) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GBUserGridRowDTO.java (.../GBUserGridRowDTO.java) (revision 1aed494b3b9aeb79f7837c12b15cd1330b3020fa) @@ -24,6 +24,7 @@ package org.lamsfoundation.lams.gradebook.dto; import java.util.ArrayList; +import java.util.Date; import org.lamsfoundation.lams.gradebook.util.GBGridView; @@ -33,6 +34,7 @@ String feedback; // For activity view + Date startDate; String output; String activityUrl; @@ -69,6 +71,7 @@ ret.add(rowName); } ret.add(status); + ret.add(startDate != null ? convertDateToString(startDate, DEFAULT_DATE_FORMAT) : CELL_EMPTY); ret.add((timeTaken != null) ? convertTimeToString(timeTaken) : CELL_EMPTY); ret.add((output != null) ? output.toString() : CELL_EMPTY); ret.add(feedback); @@ -143,4 +146,12 @@ this.currentActivity = currentActivity; } + public Date getStartDate() { + return startDate; + } + + public void setStartDate(Date startTime) { + this.startDate = startTime; + } + } Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GradebookGridRowDTO.java =================================================================== diff -u -racc8d2acf5b6b0002e0c8129947040a779ab4077 -r1aed494b3b9aeb79f7837c12b15cd1330b3020fa --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GradebookGridRowDTO.java (.../GradebookGridRowDTO.java) (revision acc8d2acf5b6b0002e0c8129947040a779ab4077) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GradebookGridRowDTO.java (.../GradebookGridRowDTO.java) (revision 1aed494b3b9aeb79f7837c12b15cd1330b3020fa) @@ -23,8 +23,11 @@ /* $Id$ */ package org.lamsfoundation.lams.gradebook.dto; +import java.text.DateFormat; import java.text.DecimalFormat; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import org.lamsfoundation.lams.gradebook.util.GBGridView; @@ -34,6 +37,9 @@ public static final String CELL_EMPTY = "-"; + public static final DateFormat DEFAULT_DATE_FORMAT = DateFormat.getDateTimeInstance(DateFormat.SHORT, + DateFormat.SHORT); + // The id for a row, might be activityId, userId, lessonID etc public String id; @@ -95,6 +101,20 @@ } } + /** + * A shared function to convert date into a readable string + * + * @param date to format + * @return formatted date + */ + protected String convertDateToString(Date date, DateFormat format) { + if (date != null) { + DateFormat usedFormat = format == null ? DEFAULT_DATE_FORMAT : format; + return usedFormat.format(date); + } + return null; + } + protected String markToString() { if (mark != null) { if (marksAvailable != null) { Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java =================================================================== diff -u -rc908ebed08eb519235a7b4e2866e58b630962efa -r1aed494b3b9aeb79f7837c12b15cd1330b3020fa --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision c908ebed08eb519235a7b4e2866e58b630962efa) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 1aed494b3b9aeb79f7837c12b15cd1330b3020fa) @@ -256,6 +256,7 @@ // Set the progress LearnerProgress learnerProgress = getLearnerProgress(lesson, learner); gUserDTO.setStatus(getActivityStatusStr(learnerProgress, activity)); + gUserDTO.setStartDate(getActivityStartDate(learnerProgress, activity)); gUserDTO.setTimeTaken(getActivityDuration(learnerProgress, activity)); // Get the tool outputs for this user if there are any @@ -1113,6 +1114,24 @@ return gactivityDTO; } + /** + * Gets activity start time, either attempted or completed + * @param learnerProgress + * @param activity + * @return + */ + private Date getActivityStartDate(LearnerProgress learnerProgress, Activity activity) { + Date startDate = null; + if (learnerProgress != null) { + startDate = learnerProgress.getAttemptedActivities().get(activity); + if (startDate == null) { + CompletedActivityProgress compProg = learnerProgress.getCompletedActivities().get(activity); + startDate = compProg.getStartDate(); + } + } + return startDate; + } + private Long getActivityDuration(LearnerProgress learnerProgress, Activity activity) { if (learnerProgress != null) { if (learnerProgress.getCompletedActivities().get(activity) != null) { Index: lams_gradebook/web/gradebookMonitor.jsp =================================================================== diff -u -rce3e782fd6844641f7298e09104f8d7554f073ff -r1aed494b3b9aeb79f7837c12b15cd1330b3020fa --- lams_gradebook/web/gradebookMonitor.jsp (.../gradebookMonitor.jsp) (revision ce3e782fd6844641f7298e09104f8d7554f073ff) +++ lams_gradebook/web/gradebookMonitor.jsp (.../gradebookMonitor.jsp) (revision 1aed494b3b9aeb79f7837c12b15cd1330b3020fa) @@ -324,6 +324,7 @@ '', "", "", + "", "", "", "", @@ -333,7 +334,8 @@ {name:'id', index:'id', sortable:false, editable:false, hidden:true, search:false, hidedlg:true}, {name:'marksAvailable',index:'marksAvailable', 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, width:50, align:"center"}, + {name:'status', index:'status', sortable:false, editable:false, search:false, width:30, align:"center"}, + {name:'startDate', index:'startDate', sortable:true, editable: false, hidden:true, width:60, align:"center"}, {name:'timeTaken', index:'timeTaken', sortable:true, editable: false, width:80, align:"center"}, {name:'output', index:'output', sortable:false, editable: false, search:false, width:200, hidden:true}, {name:'feedback',index:'feedback', sortable:false, editable:true, edittype:'textarea', editoptions:{rows:'4',cols:'20'} , search:false, width:200, hidden:true},