Index: lams_central/src/java/org/lamsfoundation/lams/gradebook/service/GradeBookService.java =================================================================== diff -u -ra8e4961c9f59aedf7bbc548462f658ecc539d0ca -rafc316b2f5873df7ad8c5c2fc50b6a8802a02c81 --- lams_central/src/java/org/lamsfoundation/lams/gradebook/service/GradeBookService.java (.../GradeBookService.java) (revision a8e4961c9f59aedf7bbc548462f658ecc539d0ca) +++ lams_central/src/java/org/lamsfoundation/lams/gradebook/service/GradeBookService.java (.../GradeBookService.java) (revision afc316b2f5873df7ad8c5c2fc50b6a8802a02c81) @@ -47,12 +47,14 @@ import org.lamsfoundation.lams.tool.ToolSession; import org.lamsfoundation.lams.tool.service.ILamsCoreToolService; import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.util.Configuration; +import org.lamsfoundation.lams.util.ConfigurationKeys; /** * @author lfoxton * * This service handles all gradebook-related service calls - * + * */ public class GradeBookService implements IGradeBookService { @@ -70,6 +72,7 @@ * @param learner * @return Collection */ + @SuppressWarnings("unchecked") public Collection getUserGradeBookActivityDTOs(Lesson lesson, User learner) { logger.debug("Getting gradebook data for lesson: " + lesson.getLessonId() + ". For user: " @@ -170,7 +173,12 @@ Set toolOutputs = new HashSet(); - // TODO: Work out a way to do multiple outputs, for now just the first, then break + // Set the activityLearner URL for this gradebook activity + gactivityDTO.setActivityUrl(Configuration.get(ConfigurationKeys.SERVER_URL) + + toolAct.getTool().getLearnerProgressUrl() + "&userID=" + learner.getUserId() + + "&toolSessionID=" + toolSession.getToolSessionId().toString()); + + // Setting the tool outputs String toolOutputsStr = ""; for (String outputName : map.keySet()) { @@ -204,6 +212,7 @@ * @param lesson * @return ArrayList */ + @SuppressWarnings("unchecked") public ArrayList getGradeBookLessonData(Lesson lesson) { ArrayList gradeBookUserDTOs = new ArrayList(); @@ -215,8 +224,23 @@ for (User learner : learners) { GradeBookUserDTO gradeBookUserDTO = new GradeBookUserDTO(); - gradeBookUserDTO.setUserDTO(learner.getUserDTO()); + gradeBookUserDTO.setLogin(learner.getLogin()); + gradeBookUserDTO.setFirstName(learner.getFirstName()); + gradeBookUserDTO.setLastName(learner.getLastName()); + // Setting the status for the user's lesson + gradeBookUserDTO.setStatus("NOT STARTED"); + LearnerProgress learnerProgress = monitoringService.getLearnerProgress(learner.getUserId(), lesson + .getLessonId()); + if (learnerProgress != null) { + if (learnerProgress.isComplete()) { + gradeBookUserDTO.setStatus("FINISHED"); + } else if (learnerProgress.getAttemptedActivities() != null + && learnerProgress.getAttemptedActivities().size() > 0) { + gradeBookUserDTO.setStatus("STARTED"); + } + } + GradeBookUserLesson gradeBookUserLesson = gradeBookDAO.getGradeBookUserDataForLesson(lesson .getLessonId(), learner.getUserId()); if (gradeBookUserLesson != null && gradeBookUserLesson.getMark() != null) { @@ -266,6 +290,8 @@ */ public void updateUserActivityGradeBookData(Lesson lesson, User learner, Activity activity, Double mark) { if (lesson != null && activity != null && learner != null && activity.isToolActivity()) { + + // First, update the mark for the activity GradeBookUserActivity gradeBookUserActivity = gradeBookDAO.getGradeBookUserDataForActivity(activity .getActivityId(), learner.getUserId()); @@ -274,8 +300,6 @@ gradeBookUserActivity.setLearner(learner); gradeBookUserActivity.setActivity((ToolActivity) activity); } - Double currentActivityMark = (gradeBookUserActivity.getMark() != null) ? gradeBookUserActivity.getMark() - : 0.0; gradeBookUserActivity.setMark(mark); gradeBookDAO.insertOrUpdate(gradeBookUserActivity); @@ -284,37 +308,19 @@ GradeBookUserLesson gradeBookUserLesson = gradeBookDAO.getGradeBookUserDataForLesson(lesson.getLessonId(), learner.getUserId()); - Double newLessonMark = null; if (gradeBookUserLesson == null) { gradeBookUserLesson = new GradeBookUserLesson(); gradeBookUserLesson.setLearner(learner); gradeBookUserLesson.setLesson(lesson); - newLessonMark = mark; - } else { - -// Double currentLessonMark = gradeBookUserLesson.getMark(); -// -// // If the lesson exists, but has no mark, simply set it to the activity mark -// if (currentLessonMark == null) { -// newLessonMark = mark; -// } else { -// // If there is an existing activity mark, add the difference -// if (currentActivityMark == null) { -// newLessonMark = currentLessonMark + mark; -// } else { -// newLessonMark = currentLessonMark - currentActivityMark + mark; -// } -// } - - aggregateTotalMarkForLesson(gradeBookUserLesson); - - } - + } + + aggregateTotalMarkForLesson(gradeBookUserLesson); } } - + private void aggregateTotalMarkForLesson(GradeBookUserLesson gradeBookUserLesson) { - Double totalMark = gradeBookDAO.getGradeBookUserActivityMarkSum(gradeBookUserLesson.getLesson().getLessonId(), gradeBookUserLesson.getLearner().getUserId()); + Double totalMark = gradeBookDAO.getGradeBookUserActivityMarkSum(gradeBookUserLesson.getLesson().getLessonId(), + gradeBookUserLesson.getLearner().getUserId()); gradeBookUserLesson.setMark(totalMark); gradeBookDAO.insertOrUpdate(gradeBookUserLesson); } Index: lams_central/src/java/org/lamsfoundation/lams/gradebook/web/action/GradeBookAction.java =================================================================== diff -u -ra8e4961c9f59aedf7bbc548462f658ecc539d0ca -rafc316b2f5873df7ad8c5c2fc50b6a8802a02c81 --- lams_central/src/java/org/lamsfoundation/lams/gradebook/web/action/GradeBookAction.java (.../GradeBookAction.java) (revision a8e4961c9f59aedf7bbc548462f658ecc539d0ca) +++ lams_central/src/java/org/lamsfoundation/lams/gradebook/web/action/GradeBookAction.java (.../GradeBookAction.java) (revision afc316b2f5873df7ad8c5c2fc50b6a8802a02c81) @@ -24,9 +24,7 @@ package org.lamsfoundation.lams.gradebook.web.action; import java.io.PrintWriter; -import java.util.ArrayList; import java.util.Collection; -import java.util.Set; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; @@ -37,20 +35,12 @@ import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; -import org.lamsfoundation.lams.gradebook.GradeBookUserActivity; -import org.lamsfoundation.lams.gradebook.GradeBookUserLesson; -import org.lamsfoundation.lams.gradebook.dao.IGradeBookDAO; -import org.lamsfoundation.lams.gradebook.dto.GradeBookActivityDTO; import org.lamsfoundation.lams.gradebook.dto.GradeBookGridRow; import org.lamsfoundation.lams.gradebook.service.IGradeBookService; import org.lamsfoundation.lams.gradebook.util.GradeBookConstants; import org.lamsfoundation.lams.gradebook.util.GradeBookUtil; -import org.lamsfoundation.lams.learningdesign.Activity; -import org.lamsfoundation.lams.learningdesign.ToolActivity; -import org.lamsfoundation.lams.lesson.LearnerProgress; import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.lesson.service.ILessonService; -import org.lamsfoundation.lams.monitoring.service.IMonitoringService; import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; Index: lams_central/src/java/org/lamsfoundation/lams/gradebook/web/action/GradeBookMonitoringAction.java =================================================================== diff -u -ra8e4961c9f59aedf7bbc548462f658ecc539d0ca -rafc316b2f5873df7ad8c5c2fc50b6a8802a02c81 --- lams_central/src/java/org/lamsfoundation/lams/gradebook/web/action/GradeBookMonitoringAction.java (.../GradeBookMonitoringAction.java) (revision a8e4961c9f59aedf7bbc548462f658ecc539d0ca) +++ lams_central/src/java/org/lamsfoundation/lams/gradebook/web/action/GradeBookMonitoringAction.java (.../GradeBookMonitoringAction.java) (revision afc316b2f5873df7ad8c5c2fc50b6a8802a02c81) @@ -77,8 +77,6 @@ private static Logger logger = Logger.getLogger(GradeBookMonitoringAction.class); - private static final String PARAM_MARK = "mark"; - private static IGradeBookService gradeBookService; private static IUserManagementService userService; private static ILessonService lessonService; Index: lams_central/web/gradebook/gradeBookMonitor.jsp =================================================================== diff -u -ra8e4961c9f59aedf7bbc548462f658ecc539d0ca -rafc316b2f5873df7ad8c5c2fc50b6a8802a02c81 --- lams_central/web/gradebook/gradeBookMonitor.jsp (.../gradeBookMonitor.jsp) (revision a8e4961c9f59aedf7bbc548462f658ecc539d0ca) +++ lams_central/web/gradebook/gradeBookMonitor.jsp (.../gradeBookMonitor.jsp) (revision afc316b2f5873df7ad8c5c2fc50b6a8802a02c81) @@ -6,10 +6,6 @@ <%@ taglib uri="tags-fmt" prefix="fmt"%> <%@ taglib uri="tags-core" prefix="c"%> - - gradebook - - GradeBook Monitor @@ -38,11 +34,12 @@ rowList:[5,20,30], rowNum:5, cellurl: "/gradebook/gradebookMonitoring.do?dispatch=updateUserLessonGradeBookData&lessonID=${lessonDetails.lessonID}&login=test1", - colNames:["", 'Last Name','First Name', 'Total Mark'], + colNames:["", 'Last Name','First Name', 'Progress', 'Total Mark'], colModel:[ {name:'login', index:'login', sortable:false, editable:false, hidden:true}, {name:'lastName',index:'lastName', sortable:true, editable:false}, {name:'firstName',index:'firstName', sortable:true, editable:false}, + {name:'status',index:'status', sortable:false, editable:false}, {name:'totalMark',index:'totalMark', sortable:true, editable:true, editrules:{number:true}} ], imgpath: 'themes/basic/images', @@ -88,9 +85,19 @@ }) - } - }) - }); + } + }) + }); + + + function launchPopup(url,title) { + var wd = null; + if(wd && wd.open && !wd.closed){ + wd.close(); + } + wd = window.open(url,title,'resizable,width=796,height=570,scrollbars'); + wd.window.focus(); + } @@ -100,11 +107,13 @@
-

${lessonDetails.lessonName} GradeBook

- -
-
- +

GradeBook for ${lessonDetails.lessonName}

+
+
+
+
+
+
Index: lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/GradeBookActivityDTO.java =================================================================== diff -u -ra8e4961c9f59aedf7bbc548462f658ecc539d0ca -rafc316b2f5873df7ad8c5c2fc50b6a8802a02c81 --- lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/GradeBookActivityDTO.java (.../GradeBookActivityDTO.java) (revision a8e4961c9f59aedf7bbc548462f658ecc539d0ca) +++ lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/GradeBookActivityDTO.java (.../GradeBookActivityDTO.java) (revision afc316b2f5873df7ad8c5c2fc50b6a8802a02c81) @@ -28,6 +28,7 @@ public class GradeBookActivityDTO extends GradeBookGridRow{ long activityId; String activityTitle; + String activityUrl; //String toolString; String status; String output; @@ -36,14 +37,24 @@ //double timeTaken; Double mark; + // http://172.20.100.188:8080/lams//tool/lamc11/learningStarter.do?mode=teacher&userID=5&toolSessionID=1 + public GradeBookActivityDTO() {} @Override public ArrayList toStringArray() { ArrayList ret = new ArrayList(); ret.add("" + activityId); - ret.add(activityTitle); + + + if (activityUrl != null && activityUrl.length() != 0) { + ret.add("" +activityTitle +""); + } else { + ret.add(activityTitle); + } + + ret.add(status); ret.add(output); ret.add(competences); @@ -114,5 +125,13 @@ public void setCompetences(String competences) { this.competences = competences; } + + public String getActivityUrl() { + return activityUrl; + } + + public void setActivityUrl(String activityUrl) { + this.activityUrl = activityUrl; + } } \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/GradeBookUserDTO.java =================================================================== diff -u -ra8e4961c9f59aedf7bbc548462f658ecc539d0ca -rafc316b2f5873df7ad8c5c2fc50b6a8802a02c81 --- lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/GradeBookUserDTO.java (.../GradeBookUserDTO.java) (revision a8e4961c9f59aedf7bbc548462f658ecc539d0ca) +++ lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/GradeBookUserDTO.java (.../GradeBookUserDTO.java) (revision afc316b2f5873df7ad8c5c2fc50b6a8802a02c81) @@ -25,11 +25,13 @@ import java.util.ArrayList; -import org.lamsfoundation.lams.usermanagement.dto.UserDTO; +import org.lamsfoundation.lams.lesson.LearnerProgress; public class GradeBookUserDTO extends GradeBookGridRow { - - UserDTO userDTO; + String login; + String firstName; + String lastName; + String status; Double totalLessonMark; public GradeBookUserDTO() { @@ -39,9 +41,10 @@ public ArrayList toStringArray() { ArrayList ret = new ArrayList(); - ret.add(userDTO.getLogin()); - ret.add(userDTO.getLastName()); - ret.add(userDTO.getFirstName()); + ret.add(login); + ret.add(firstName); + ret.add(lastName); + ret.add(status); if (totalLessonMark != null && totalLessonMark != 0.0) { ret.add(totalLessonMark.toString()); @@ -54,22 +57,46 @@ @Override public String getRowId() { - return userDTO.getLogin(); + return login; } - public UserDTO getUserDTO() { - return userDTO; - } - - public void setUserDTO(UserDTO userDTO) { - this.userDTO = userDTO; - } - public Double getTotalLessonMark() { return totalLessonMark; } public void setTotalLessonMark(Double totalLessonMark) { this.totalLessonMark = totalLessonMark; } + + public String getLogin() { + return login; + } + + public void setLogin(String login) { + this.login = login; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } } Index: lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GradeBookUserFirstNameComparator.java =================================================================== diff -u -ra8e4961c9f59aedf7bbc548462f658ecc539d0ca -rafc316b2f5873df7ad8c5c2fc50b6a8802a02c81 --- lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GradeBookUserFirstNameComparator.java (.../GradeBookUserFirstNameComparator.java) (revision a8e4961c9f59aedf7bbc548462f658ecc539d0ca) +++ lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GradeBookUserFirstNameComparator.java (.../GradeBookUserFirstNameComparator.java) (revision afc316b2f5873df7ad8c5c2fc50b6a8802a02c81) @@ -33,13 +33,13 @@ public int compare(Object gradeBookUserDTO, Object anotherGradeBookUserDTO) { if (gradeBookUserDTO instanceof GradeBookUserDTO && anotherGradeBookUserDTO instanceof GradeBookUserDTO) { - String firstName1 = ((GradeBookUserDTO) gradeBookUserDTO).getUserDTO().getFirstName().toUpperCase(); - String firstName2 = ((GradeBookUserDTO) anotherGradeBookUserDTO).getUserDTO().getFirstName().toUpperCase(); + String firstName1 = ((GradeBookUserDTO) gradeBookUserDTO).getFirstName().toUpperCase(); + String firstName2 = ((GradeBookUserDTO) anotherGradeBookUserDTO).getFirstName().toUpperCase(); int ret; if (firstName1.equals(firstName2)) { - String lastName1 = ((GradeBookUserDTO) gradeBookUserDTO).getUserDTO().getLastName().toUpperCase(); - String lastName2 = ((GradeBookUserDTO) anotherGradeBookUserDTO).getUserDTO().getLastName().toUpperCase(); + String lastName1 = ((GradeBookUserDTO) gradeBookUserDTO).getLastName().toUpperCase(); + String lastName2 = ((GradeBookUserDTO) anotherGradeBookUserDTO).getLastName().toUpperCase(); ret = lastName1.compareTo(lastName2); } else { Index: lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GradeBookUserLastNameComparator.java =================================================================== diff -u -ra8e4961c9f59aedf7bbc548462f658ecc539d0ca -rafc316b2f5873df7ad8c5c2fc50b6a8802a02c81 --- lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GradeBookUserLastNameComparator.java (.../GradeBookUserLastNameComparator.java) (revision a8e4961c9f59aedf7bbc548462f658ecc539d0ca) +++ lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GradeBookUserLastNameComparator.java (.../GradeBookUserLastNameComparator.java) (revision afc316b2f5873df7ad8c5c2fc50b6a8802a02c81) @@ -33,15 +33,14 @@ public int compare(Object gradeBookUserDTO, Object anotherGradeBookUserDTO) { if (gradeBookUserDTO instanceof GradeBookUserDTO && anotherGradeBookUserDTO instanceof GradeBookUserDTO) { - String lastName1 = ((GradeBookUserDTO) gradeBookUserDTO).getUserDTO().getLastName().toUpperCase(); - String lastName2 = ((GradeBookUserDTO) anotherGradeBookUserDTO).getUserDTO().getLastName().toUpperCase(); + String lastName1 = ((GradeBookUserDTO) gradeBookUserDTO).getLastName().toUpperCase(); + String lastName2 = ((GradeBookUserDTO) anotherGradeBookUserDTO).getLastName().toUpperCase(); int ret; if (lastName1.equals(lastName2)) { - String firstName1 = ((GradeBookUserDTO) gradeBookUserDTO).getUserDTO().getFirstName().toUpperCase(); - String firstName2 = ((GradeBookUserDTO) anotherGradeBookUserDTO).getUserDTO().getFirstName().toUpperCase(); + String firstName1 = ((GradeBookUserDTO) gradeBookUserDTO).getFirstName().toUpperCase(); + String firstName2 = ((GradeBookUserDTO) anotherGradeBookUserDTO).getFirstName().toUpperCase(); ret = firstName1.compareTo(firstName2); - } else { ret = lastName1.compareTo(lastName2);