Index: lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/MonitoringController.java =================================================================== diff -u -r0ebaba46f0ce87b5138e8e70cc1965887c1c7787 -r1324c32fc07460a47b0b53b25a2b43d77fbd500c --- lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/MonitoringController.java (.../MonitoringController.java) (revision 0ebaba46f0ce87b5138e8e70cc1965887c1c7787) +++ lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/MonitoringController.java (.../MonitoringController.java) (revision 1324c32fc07460a47b0b53b25a2b43d77fbd500c) @@ -204,38 +204,44 @@ 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()); + if (!users.isEmpty()) { + // reverse if sorting is descending + if (sorting == LEARNER_MARKS_SORTING_FIRST_NAME_DESC || sorting == LEARNER_MARKS_SORTING_LAST_NAME_DESC) { + Collections.reverse(users); + } - ToolSession toolSession = toolService.getToolSessionById(toolSessionId); - Map gradebookUserActivities = gradebookService - .getGradebookUserActivities(toolSession.getToolActivity().getActivityId()).stream() - .filter(g -> g.getMark() != null) - .collect(Collectors.toMap(g -> g.getLearner().getUserId(), GradebookUserActivity::getMark)); + // paging + int endIndex = (page + 1) * size; + users = users.subList(page * size, users.size() > endIndex ? endIndex : users.size()); - for (DokumaranUser user : users) { - ObjectNode responseRow = JsonNodeFactory.instance.objectNode(); + ArrayNode rows = JsonNodeFactory.instance.arrayNode(); - responseRow.put("userId", user.getUserId()); - responseRow.put("firstName", user.getFirstName()); - responseRow.put("lastName", user.getLastName()); - Double mark = gradebookUserActivities.get(user.getUserId().intValue()); - responseRow.put("mark", mark == null ? "" : String.valueOf(mark)); + responsedata.put("total_rows", users.size()); - rows.add(responseRow); + ToolSession toolSession = toolService.getToolSessionById(toolSessionId); + Map gradebookUserActivities = gradebookService + .getGradebookUserActivities(toolSession.getToolActivity().getActivityId()).stream() + .filter(g -> g.getMark() != null) + .collect(Collectors.toMap(g -> g.getLearner().getUserId(), GradebookUserActivity::getMark)); + + DokumaranUser leader = users.get(0).getSession().getGroupLeader(); + for (DokumaranUser user : users) { + ObjectNode responseRow = JsonNodeFactory.instance.objectNode(); + + responseRow.put("userId", user.getUserId()); + responseRow.put("firstName", user.getFirstName()); + responseRow.put("lastName", user.getLastName()); + Double mark = gradebookUserActivities.get(user.getUserId().intValue()); + responseRow.put("mark", mark == null ? "" : String.valueOf(mark)); + responseRow.put("isLeader", leader != null && leader.getUid().equals(user.getUid())); + + rows.add(responseRow); + } + responsedata.set("rows", rows); } - responsedata.set("rows", rows); response.setContentType("application/json;charset=utf-8"); return responsedata.toString(); } Index: lams_tool_doku/web/pages/monitoring/summary.jsp =================================================================== diff -u -r2db54768ed82bc5868fa55c0bfb46445fdb06770 -r1324c32fc07460a47b0b53b25a2b43d77fbd500c --- lams_tool_doku/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision 2db54768ed82bc5868fa55c0bfb46445fdb06770) +++ lams_tool_doku/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision 1324c32fc07460a47b0b53b25a2b43d77fbd500c) @@ -166,14 +166,14 @@ sortInitialOrder: 'asc', sortList: [[0]], widgets: [ "uitheme", "resizable", "editable" ], - headers: { 0: { sorter: true}, 1: { sorter: true}, 2: { sorter: false} }, + headers: { 0: { sorter: true}, 1: { sorter: true} }, sortList : [[0,1]], showProcessing: false, widgetOptions: { resizable: true, // only marks is editable - editable_columns : [2], + editable_columns : [1], editable_enterToAccept : true, // press enter to accept content, or click outside if false editable_autoAccept : false, // accepts any changes made to the table cell automatically editable_autoResort : false, // auto resort after the content has changed. @@ -248,13 +248,18 @@ var rows = [], json = {}; + for (i = 0; i < data.rows.length; i++){ - var userData = data.rows[i]; + var userData = data.rows[i], + isLeader = userData['isLeader']; - rows += ''; + rows += ''; - rows += ''; + rows += ''; rows += userData['firstName'] + ' ' +userData['lastName']; + if (isLeader) { + rows += ' " class="text-primary fa fa-star">'; + } rows += ''; rows += ''; Index: lams_tool_scratchie/web/pages/monitoring/summary.jsp =================================================================== diff -u -rff20afa3731086e746fd4e06bc83be6a457195a2 -r1324c32fc07460a47b0b53b25a2b43d77fbd500c --- lams_tool_scratchie/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision ff20afa3731086e746fd4e06bc83be6a457195a2) +++ lams_tool_scratchie/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision 1324c32fc07460a47b0b53b25a2b43d77fbd500c) @@ -217,7 +217,7 @@ var icon = ''; if (rowObject.isLeader == 'true') { - icon = ' '; + icon = ' " class="text-primary fa fa-star">'; } else if (rowObject.reachedActivity == 'true') { icon = ' '; } @@ -229,7 +229,7 @@ name = name.replace('', icon + ''); } } - + return name; }