Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -r55d325641da6f4f7d5149c9368d47ed70cf8d7d5 -rbe118ba177d68f16232e2414606a569b398ee2a0 Binary files differ Index: lams_gradebook/conf/language/lams/ApplicationResources.properties =================================================================== diff -u -ra949c337adc53b2df9207aa1de6e500281de7c20 -rbe118ba177d68f16232e2414606a569b398ee2a0 --- lams_gradebook/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision a949c337adc53b2df9207aa1de6e500281de7c20) +++ lams_gradebook/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision be118ba177d68f16232e2414606a569b398ee2a0) @@ -2,7 +2,7 @@ #language code: en #locale code: AU - # Exported from the LAMS Community by Ernie Ghiglione on Mon Jul 10 21:30:38 CST 2017 + # Exported from the LAMS Community by Ernie Ghiglione on Fri Oct 06 17:59:14 CST 2017 #=================== labels for Gradebook =================# @@ -108,9 +108,7 @@ label.number.learners.in.mark.range =Number of learners in mark range label.show.marks.chart =Show marks chart label.hide.marks.chart =Hide marks chart - +gradebook.summary.activity.marks =Summary for activity marks label.button.show.weights =Show Weights label.button.hide.weights =Hide Weights label.weights.title =Weights on activity outputs - -#======= End labels: Exported 102 labels for en AU ===== Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java =================================================================== diff -u -r9cadc392ac9854c077a9da549309831e2c3ae7cc -rbe118ba177d68f16232e2414606a569b398ee2a0 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 9cadc392ac9854c077a9da549309831e2c3ae7cc) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision be118ba177d68f16232e2414606a569b398ee2a0) @@ -110,6 +110,10 @@ private static Logger logger = Logger.getLogger(GradebookService.class); private static final ExcelCell[] EMPTY_ROW = new ExcelCell[4]; + + private static final String TOOL_SIGNATURE_ASSESSMENT = "laasse10"; + public static final String TOOL_SIGNATURE_SCRATCHIE = "lascrt11"; + public static final String TOOL_SIGNATURE_MCQ = "lamc11"; // Services private ILamsCoreToolService toolService; @@ -1010,13 +1014,77 @@ userDataRow[5] = new ExcelCell(userMarkValue, false); rowList.add(userDataRow); } + rowList.add(GradebookService.EMPTY_ROW); + // -- Summary for activity marks (simplified) --- + + Map> activityToUserDTOMap = getDataForLessonGradebookExport(lesson); + //filter out all activities that doesn't have numeric outputs + Map> filteredActivityToUserDTOMap = new LinkedHashMap>(); + for (ToolActivity activity : activityToUserDTOMap.keySet()) { + String toolSignature = activity.getTool().getToolSignature(); + //check whether toolActivity has a NumericToolOutput + if ( activity.getEvaluation() != null && (TOOL_SIGNATURE_ASSESSMENT.equals(toolSignature) + || TOOL_SIGNATURE_MCQ.equals(toolSignature) || TOOL_SIGNATURE_SCRATCHIE.equals(toolSignature))) { + filteredActivityToUserDTOMap.put(activity, activityToUserDTOMap.get(activity)); + } + } + + //add header + ExcelCell[] headerRow = new ExcelCell[1]; + headerRow[0] = new ExcelCell(getMessage("gradebook.summary.activity.marks"), true); + rowList.add(headerRow); + headerRow = new ExcelCell[3 + filteredActivityToUserDTOMap.keySet().size()]; + int count = 3; + for (Activity activity : filteredActivityToUserDTOMap.keySet()) { + headerRow[count++] = new ExcelCell(activity.getTitle(), true); + } + rowList.add(headerRow); + headerRow = new ExcelCell[4 + filteredActivityToUserDTOMap.keySet().size()]; + count = 0; + headerRow[count++] = new ExcelCell(getMessage("gradebook.export.last.name"), true); + headerRow[count++] = new ExcelCell(getMessage("gradebook.export.first.name"), true); + headerRow[count++] = new ExcelCell(getMessage("gradebook.export.login"), true); + for (Activity activity : filteredActivityToUserDTOMap.keySet()) { + headerRow[count++] = new ExcelCell(getMessage("gradebook.columntitle.mark"), true); + } + headerRow[count] = new ExcelCell(getMessage("gradebook.export.total.mark"), true); + rowList.add(headerRow); + + //iterating through all users in a lesson + for (GBUserGridRowDTO userRow : userRows) { + ExcelCell[] userDataRow = new ExcelCell[4 + filteredActivityToUserDTOMap.keySet().size()]; + count = 0; + userDataRow[count++] = new ExcelCell(userRow.getLastName(), false); + userDataRow[count++] = new ExcelCell(userRow.getFirstName(), false); + userDataRow[count++] = new ExcelCell(userRow.getLogin(), false); + + for (Activity activity : filteredActivityToUserDTOMap.keySet()) { + + //find according userActivityMark + Double userActivityMark = null; + List userDtos = filteredActivityToUserDTOMap.get(activity); + for (GBUserGridRowDTO userDto : userDtos) { + if (userDto.getLogin().equals(userRow.getLogin())) { + userActivityMark = userDto.getMark(); + break; + } + } + userDataRow[count++] = new ExcelCell(userActivityMark, false); + } + + Object userMarkValue = userRow.getMark(); + if ( userMarkValue != null && isWeighted ) + userMarkValue = GradebookUtil.niceFormatting((Double)userMarkValue, true); + + userDataRow[count] = new ExcelCell(userMarkValue, false); + rowList.add(userDataRow); + } + ExcelCell[][] summaryData = rowList.toArray(new ExcelCell[][] {}); dataToExport.put(getMessage("gradebook.export.lesson.summary"), summaryData); // -------------------- process activity excel page -------------------------------- - - Map> activityToUserDTOMap = getDataForLessonGradebookExport(lesson); List rowList1 = new LinkedList(); for (Activity activity : activityToUserDTOMap.keySet()) { @@ -1025,7 +1093,7 @@ activityTitleRow[0] = new ExcelCell(activity.getTitle(), true); rowList1.add(activityTitleRow); - int count = 0; + count = 0; ExcelCell[] titleRow = new ExcelCell[7]; titleRow[count++] = new ExcelCell(getMessage("gradebook.export.last.name"), true); titleRow[count++] = new ExcelCell(getMessage("gradebook.export.first.name"), true);