Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java,v diff -u -r1.1.2.7 -r1.1.2.8 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java 21 Apr 2009 06:39:50 -0000 1.1.2.7 +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java 22 Apr 2009 03:30:58 -0000 1.1.2.8 @@ -318,6 +318,35 @@ } /** + * @see org.lamsfoundation.lams.gradebook.service.IGradebookService#getGradebookUserLesson(java.lang.Long, java.lang.Integer) + */ + public GradebookUserLesson getGradebookUserLesson(Long lessonID, Integer userID) { + return gradebookDAO.getGradebookUserDataForLesson(lessonID, userID); + } + + + /** + * @see org.lamsfoundation.lams.gradebook.service.IGradebookService#getGradebookUserActivity(java.lang.Long, java.lang.Integer) + */ + public GradebookUserActivity getGradebookUserActivity(Long activityID, Integer userID) { + return gradebookDAO.getGradebookUserDataForActivity(activityID, userID); + } + + /** + * @see org.lamsfoundation.lams.gradebook.service.IGradebookService#getAverageMarkForActivity(java.lang.Long) + */ + public Double getAverageMarkForActivity(Long activityID) { + return gradebookDAO.getAverageMarkForActivity(activityID); + } + + /** + * @see org.lamsfoundation.lams.gradebook.service.IGradebookService#getAverageMarkForLesson(java.lang.Long) + */ + public Double getAverageMarkForLesson(Long lessonID) { + return gradebookDAO.getAverageMarkForLesson(lessonID); + } + + /** * @see org.lamsfoundation.lams.gradebook.service.IGradebookService#updateUserLessonGradebookMark(org.lamsfoundation.lams.lesson.Lesson, * org.lamsfoundation.lams.usermanagement.User, java.lang.Double) */ Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java,v diff -u -r1.1.2.1 -r1.1.2.2 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java 16 Apr 2009 06:46:25 -0000 1.1.2.1 +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java 22 Apr 2009 03:30:58 -0000 1.1.2.2 @@ -25,6 +25,8 @@ import java.util.List; +import org.lamsfoundation.lams.gradebook.GradebookUserActivity; +import org.lamsfoundation.lams.gradebook.GradebookUserLesson; import org.lamsfoundation.lams.gradebook.dto.GBLessonGridRowDTO; import org.lamsfoundation.lams.gradebook.dto.GBUserGridRowDTO; import org.lamsfoundation.lams.gradebook.dto.GradebookGridRowDTO; @@ -124,5 +126,38 @@ */ public List getGBLessonRows(Organisation organisation, User user, GBGridView view); + /** + * Gets a gradebook lesson mark/feedback for a given user and lesson + * + * @param lessonID + * @param userID + * @return + */ + public GradebookUserLesson getGradebookUserLesson(Long lessonID, Integer userID); + + /** + * Gets a gradebook activity mark/feedback for a given activity and user + * + * @param activityID + * @param userID + * @return + */ + public GradebookUserActivity getGradebookUserActivity(Long activityID, Integer userID); + + /** + * Returns the average mark for a given activity + * + * @param activityID + * @return + */ + public Double getAverageMarkForActivity(Long activityID); + + /** + * Returns the average mark for a lesson + * + * @param lessonID + * @return + */ + public Double getAverageMarkForLesson(Long lessonID); } Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/util/GradebookConstants.java =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/util/GradebookConstants.java,v diff -u -r1.1.2.2 -r1.1.2.3 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/util/GradebookConstants.java 16 Apr 2009 06:46:25 -0000 1.1.2.2 +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/util/GradebookConstants.java 22 Apr 2009 03:30:58 -0000 1.1.2.3 @@ -84,6 +84,8 @@ // Misc public static final String CONTENT_TYPE_TEXTXML = "text/xml"; + public static final String CONTENT_TYPE_TEXTPLAIN = "text/plain"; + public static final String CELL_EMPTY = "-"; } Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookAction.java,v diff -u -r1.1.2.2 -r1.1.2.3 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookAction.java 16 Apr 2009 06:46:25 -0000 1.1.2.2 +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookAction.java 22 Apr 2009 03:30:58 -0000 1.1.2.3 @@ -36,6 +36,7 @@ import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; +import org.lamsfoundation.lams.gradebook.GradebookUserLesson; import org.lamsfoundation.lams.gradebook.dto.GBLessonGridRowDTO; import org.lamsfoundation.lams.gradebook.dto.GBUserGridRowDTO; import org.lamsfoundation.lams.gradebook.dto.GradebookGridRowDTO; @@ -44,7 +45,6 @@ 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.Group; import org.lamsfoundation.lams.learningdesign.ToolActivity; import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.lesson.service.ILessonService; @@ -328,7 +328,116 @@ return null; } + + /** + * Gets the total mark for a user's lesson and writes the result in the + * response + * + * @param mapping + * @param form + * @param request + * @param response + * @return + * @throws Exception + */ + @SuppressWarnings("unchecked") + public ActionForward getLessonMarkAggregate(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws Exception { + initServices(); + Long lessonID = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); + Integer userID = WebUtil.readIntParam(request, GradebookConstants.PARAM_USERID); + + Lesson lesson = lessonService.getLesson(lessonID); + User learner = (User) userService.findById(User.class, userID); + + + if (lesson != null && learner != null) { + GradebookUserLesson lessonMark = gradebookService.getGradebookUserLesson(lessonID, userID); + response.setContentType(GradebookConstants.CONTENT_TYPE_TEXTPLAIN); + PrintWriter out = response.getWriter(); + out.print(lessonMark.getMark().toString()); + + } else { + // Grid will handle error, just log and return null + logger.error("Error: request for course gradebook data with null user or lesson. lessonID: " + lessonID); + } + return null; + } + + /** + * Gets the average mark for an activity and writes the result in the + * response + * + * @param mapping + * @param form + * @param request + * @param response + * @return + * @throws Exception + */ + @SuppressWarnings("unchecked") + public ActionForward getActivityMarkAverage(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws Exception { + initServices(); + + Long activityID = WebUtil.readLongParam(request, AttributeNames.PARAM_ACTIVITY_ID); + Activity activity = (Activity)userService.findById(Activity.class, activityID); + + if (activity != null) { + Double averageMark = gradebookService.getAverageMarkForActivity(activityID); + + response.setContentType(GradebookConstants.CONTENT_TYPE_TEXTPLAIN); + PrintWriter out = response.getWriter(); + + if (averageMark != null) { + out.print(averageMark.toString()); + } else { + out.print(GradebookConstants.CELL_EMPTY); + } + } else { + // Grid will handle error, just log and return null + logger.error("Error: request for course gradebook data with null activity. actvity: " + activityID); + } + return null; + } + + /** + * Gets the average mark for lesson and writes the result in the response + * + * @param mapping + * @param form + * @param request + * @param response + * @return + * @throws Exception + */ + @SuppressWarnings("unchecked") + public ActionForward getLessonMarkAverage(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws Exception { + initServices(); + + Long lessonID = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); + Lesson lesson = lessonService.getLesson(lessonID); + + if (lesson != null) { + Double averageMark = gradebookService.getAverageMarkForLesson(lessonID); + + response.setContentType(GradebookConstants.CONTENT_TYPE_TEXTPLAIN); + PrintWriter out = response.getWriter(); + + if (averageMark != null) { + out.print(averageMark.toString()); + } else { + out.print(GradebookConstants.CELL_EMPTY); + } + } else { + // Grid will handle error, just log and return null + logger.error("Error: request for course gradebook data with null lesson. lesson: " + lessonID); + } + return null; + } + private UserDTO getUser() { HttpSession ss = SessionManager.getSession(); return (UserDTO) ss.getAttribute(AttributeNames.USER); Index: lams_gradebook/web/gradebookCourseMonitor.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/web/gradebookCourseMonitor.jsp,v diff -u -r1.1.2.3 -r1.1.2.4 --- lams_gradebook/web/gradebookCourseMonitor.jsp 21 Apr 2009 06:39:49 -0000 1.1.2.3 +++ lams_gradebook/web/gradebookCourseMonitor.jsp 22 Apr 2009 03:30:58 -0000 1.1.2.4 @@ -93,26 +93,12 @@ // update the lesson average mark if (cellname == "mark") { - //var ids = jQuery("#"+subgrid_table_id).getDataIDs() - //var sumMarks = 0.0; - //var count = 0; - //for (var i = 0; i < ids.length; i++) { - // var rowData = jQuery("#"+subgrid_table_id).getRowData(ids[i]); - // var lessonMark = rowData["mark"]; - // - // if (lessonMark != "-") { - // sumMarks += parseFloat(lessonMark); - // count ++; - // } - //} - //var average; - //if (count>0) { - // average = sumMarks / count; - //} else { - // average = value; - //} - // - //jQuery("#organisationGrid").setCell(row_id, "mark", average, "", ""); + // Update the average activity mark + $.get("/gradebook/gradebook.do", {dispatch:"getLessonMarkAverage", lessonID:lessonID}, function(xml) { + if (xml!=null) { + jQuery("#organisationGrid").setCell(row_id, "avgMark", xml, "", ""); + } + }); } }, gridComplete: function(){ Index: lams_gradebook/web/gradebookMonitor.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/web/gradebookMonitor.jsp,v diff -u -r1.1.2.6 -r1.1.2.7 --- lams_gradebook/web/gradebookMonitor.jsp 21 Apr 2009 07:00:28 -0000 1.1.2.6 +++ lams_gradebook/web/gradebookMonitor.jsp 22 Apr 2009 03:30:58 -0000 1.1.2.7 @@ -19,7 +19,6 @@ var marksReleased = ${marksReleased}; - function toggleRelease() { var conf; @@ -56,7 +55,6 @@ } } - jQuery(document).ready(function(){ displayReleaseOption(); @@ -186,28 +184,22 @@ }, afterSaveCell: function(rowid, cellname,value, iRow, iCol) { + var currRowData = jQuery("#"+subgrid_table_id).getRowData(rowid); if (cellname == "mark") { if (cellname == "mark") { - var currRowData = jQuery("#"+subgrid_table_id).getRowData(rowid); if (currRowData['marksAvailable'] != null && currRowData['marksAvailable'] != "") { var markStr = "" + value + "/" + currRowData['marksAvailable'] + ""; jQuery("#"+subgrid_table_id).setCell(rowid, "mark", markStr, "", ""); } } - - //var ids = jQuery("#"+subgrid_table_id).getDataIDs() - //var totalMark = 0.0; - //for (var i=0; i < ids.length; i++) { - // var rowData = jQuery("#"+subgrid_table_id).getRowData(ids[i]); - // var userMark = rowData["mark"]; - // - // if (userMark != "-") { - // totalMark += parseFloat(userMark); - // } - //} - //jQuery("#userView").setCell(row_id, "mark", totalMark, "", ""); + // Update the aggregated lesson mark + $.get("/gradebook/gradebook.do", {dispatch:"getLessonMarkAggregate", lessonID:"${lessonDetails.lessonID}", userID:row_id}, function(xml) { + if (xml!=null) { + jQuery("#userView").setCell(row_id, "mark", xml, "", ""); + } + }); } }, errorCell: function(serverresponse, status) { @@ -387,6 +379,13 @@ var markStr = "" + value + "/" + currRowData['marksAvailable'] + ""; jQuery("#"+subgrid_table_id).setCell(rowid, "mark", markStr, "", ""); } + + // Update the average activity mark + $.get("/gradebook/gradebook.do", {dispatch:"getActivityMarkAverage", activityID:row_id}, function(xml) { + if (xml!=null) { + jQuery("#activityView").setCell(row_id, "avgMark", xml, "", ""); + } + }); } }, errorCell: function(serverresponse, status) {