Index: lams_tool_doku/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== diff -u -r3a4e0fbc4b00ff567f1dc7561cf9596fedab7c8e -r3c67ff837c0fe3595c3e06e9f3e1d396fcc2c0d5 --- lams_tool_doku/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 3a4e0fbc4b00ff567f1dc7561cf9596fedab7c8e) +++ lams_tool_doku/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 3c67ff837c0fe3595c3e06e9f3e1d396fcc2c0d5) @@ -89,6 +89,12 @@ label.time.left =Time left label.time.is.over =Time is over. No more editing is allowed. +label.monitoring.learner.marks.header =Marks +label.monitoring.learner.marks.first.name =First name +label.monitoring.learner.marks.last.name =Last name +label.monitoring.learner.marks.mark =Mark +messsage.monitoring.learner.marks.no.data = No learner data found + outcome.authoring.title =Learning outcomes outcome.authoring.input =Search and select by outcome name or code outcome.authoring.existing =Added outcomes Index: lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/MonitoringController.java =================================================================== diff -u -rf2ad75cef0c507a64877942631fee13efbc6ed50 -r3c67ff837c0fe3595c3e06e9f3e1d396fcc2c0d5 --- lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/MonitoringController.java (.../MonitoringController.java) (revision f2ad75cef0c507a64877942631fee13efbc6ed50) +++ lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/MonitoringController.java (.../MonitoringController.java) (revision 3c67ff837c0fe3595c3e06e9f3e1d396fcc2c0d5) @@ -26,7 +26,10 @@ import java.io.IOException; import java.io.PrintWriter; import java.net.URISyntaxException; +import java.util.Collections; +import java.util.Comparator; import java.util.List; +import java.util.stream.Collectors; import javax.servlet.ServletException; import javax.servlet.http.Cookie; @@ -41,6 +44,7 @@ import org.lamsfoundation.lams.tool.dokumaran.model.Dokumaran; import org.lamsfoundation.lams.tool.dokumaran.model.DokumaranConfigItem; import org.lamsfoundation.lams.tool.dokumaran.model.DokumaranSession; +import org.lamsfoundation.lams.tool.dokumaran.model.DokumaranUser; import org.lamsfoundation.lams.tool.dokumaran.service.DokumaranConfigurationException; import org.lamsfoundation.lams.tool.dokumaran.service.IDokumaranService; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; @@ -51,13 +55,23 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.JsonNodeFactory; +import com.fasterxml.jackson.databind.node.ObjectNode; + @Controller @RequestMapping("/monitoring") public class MonitoringController { public static Logger log = Logger.getLogger(MonitoringController.class); + public static final int LEARNER_MARKS_SORTING_FIRST_NAME_ASC = 0; + public static final int LEARNER_MARKS_SORTING_FIRST_NAME_DESC = 1; + public static final int LEARNER_MARKS_SORTING_LAST_NAME_ASC = 2; + public static final int LEARNER_MARKS_SORTING_LAST_NAME_DESC = 3; + @Autowired private IDokumaranService dokumaranService; @@ -123,6 +137,59 @@ return "pages/monitoring/monitoring"; } + @RequestMapping("/getLearnerMarks") + @ResponseBody + public String getLearnerMarks(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + + Long toolSessionId = WebUtil.readLongParam(request, "toolSessionId"); + + // paging parameters of tablesorter + int size = WebUtil.readIntParam(request, "size"); + int page = WebUtil.readIntParam(request, "page"); + Integer isSortFirstName = WebUtil.readIntParam(request, "column[0]", true); + Integer isSortLastName = WebUtil.readIntParam(request, "column[1]", true); + + // identify sorting type + int sorting = LEARNER_MARKS_SORTING_FIRST_NAME_ASC; + if (isSortFirstName != null) { + sorting = isSortFirstName.equals(1) ? LEARNER_MARKS_SORTING_FIRST_NAME_DESC + : LEARNER_MARKS_SORTING_FIRST_NAME_ASC; + } else if (isSortLastName != null) { + sorting = isSortLastName.equals(1) ? LEARNER_MARKS_SORTING_LAST_NAME_DESC + : LEARNER_MARKS_SORTING_LAST_NAME_ASC; + } + + // get all session users and sort them according to the parameter from tablesorter + List users = dokumaranService.getUsersBySession(toolSessionId).stream() + .sorted(Comparator.comparing(sorting <= 1 ? DokumaranUser::getFirstName : DokumaranUser::getLastName)) + .collect(Collectors.toList()); + // reverse if sorting is descending + if (sorting == LEARNER_MARKS_SORTING_FIRST_NAME_DESC || sorting == LEARNER_MARKS_SORTING_LAST_NAME_DESC) { + Collections.reverse(users); + } + + // paging + int endIndex = (page + 1) * size; + users = users.subList(page * size, users.size() > endIndex ? endIndex : users.size()); + + ArrayNode rows = JsonNodeFactory.instance.arrayNode(); + ObjectNode responsedata = JsonNodeFactory.instance.objectNode(); + responsedata.put("total_rows", users.size()); + + for (DokumaranUser user : users) { + ObjectNode responseRow = JsonNodeFactory.instance.objectNode(); + + responseRow.put("firstName", user.getFirstName()); + responseRow.put("lastName", user.getLastName()); + + rows.add(responseRow); + } + responsedata.set("rows", rows); + response.setContentType("application/json;charset=utf-8"); + return responsedata.toString(); + } + @RequestMapping("/fixFaultySession") private void fixFaultySession(HttpServletRequest request, HttpServletResponse response) throws DokumaranConfigurationException, ServletException, IOException { @@ -148,7 +215,7 @@ /** * Stores date when user has started activity with time limit - * + * * @throws IOException * @throws JSONException */ @@ -161,7 +228,7 @@ /** * Stores date when user has started activity with time limit - * + * * @throws IOException * @throws JSONException */ Index: lams_tool_doku/web/pages/monitoring/summary.jsp =================================================================== diff -u -r1cef918442124e8d987a285095a7504e3bc00461 -r3c67ff837c0fe3595c3e06e9f3e1d396fcc2c0d5 --- lams_tool_doku/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision 1cef918442124e8d987a285095a7504e3bc00461) +++ lams_tool_doku/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision 3c67ff837c0fe3595c3e06e9f3e1d396fcc2c0d5) @@ -4,8 +4,12 @@ <%@ page import="org.lamsfoundation.lams.tool.dokumaran.DokumaranConstants"%> + + + +