Index: lams_monitoring/conf/language/lams/ApplicationResources.properties =================================================================== diff -u -r51254ff2df01d1941265996bbc17c7a31f4942ef -r4fedcb4cf4ff6424821847b4280f18fa25a17f22 --- lams_monitoring/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 51254ff2df01d1941265996bbc17c7a31f4942ef) +++ lams_monitoring/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 4fedcb4cf4ff6424821847b4280f18fa25a17f22) @@ -275,6 +275,8 @@ learner.group.forward.10 = 10 pages forward learner.group.backward.1 = Previous page learner.group.backward.10 = 10 pages back +learner.completed.activity.count = Completed activities +learner.completed.lesson = Lesson finished lesson.presence.count = users email.notify.students.that = Notify students that email.notifications.delete = Delete notification Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringController.java =================================================================== diff -u -r2248205b48075ca3c0700b2c3c8c2944691278c3 -r4fedcb4cf4ff6424821847b4280f18fa25a17f22 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringController.java (.../MonitoringController.java) (revision 2248205b48075ca3c0700b2c3c8c2944691278c3) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringController.java (.../MonitoringController.java) (revision 4fedcb4cf4ff6424821847b4280f18fa25a17f22) @@ -1076,6 +1076,7 @@ ObjectNode responseJSON = JsonNodeFactory.instance.objectNode(); Integer searchedLearnerId = WebUtil.readIntParam(request, "searchedLearnerID", true); + List learners = null; if (searchedLearnerId == null) { Integer pageNumber = WebUtil.readIntParam(request, "pageNumber", true); if (pageNumber == null || pageNumber < 1) { @@ -1085,22 +1086,28 @@ boolean isProgressSorted = WebUtil.readBooleanParam(request, "isProgressSorted", false); // either sort by name or how much a learner progressed into the lesson - List learners = isProgressSorted + learners = isProgressSorted ? monitoringService.getLearnersByMostProgress(lessonId, null, 10, (pageNumber - 1) * 10) : lessonService.getLessonLearners(lessonId, null, 10, (pageNumber - 1) * 10, true); - for (User learner : learners) { - responseJSON.withArray("learners").add(WebUtil.userToJSON(learner)); - } - // get all possible learners matching the given phrase, if any; used for max page number responseJSON.put("learnerPossibleNumber", lessonService.getCountLessonLearners(lessonId, null)); } else { // only one learner is searched User learner = userManagementService.getUserById(searchedLearnerId); - responseJSON.withArray("learners").add(WebUtil.userToJSON(learner)); + learners = List.of(learner); responseJSON.put("learnerPossibleNumber", 1); } + + for (User learner : learners) { + ObjectNode learnerJSON = WebUtil.userToJSON(learner); + LearnerProgress learnerProgress = lessonService.getUserProgressForLesson(learner.getUserId(), lessonId); + learnerJSON.put("completedActivityCount", + learnerProgress == null ? 0 : learnerProgress.getCompletedActivities().size()); + learnerJSON.put("completedLesson", learnerProgress != null && learnerProgress.isComplete()); + responseJSON.withArray("learners").add(learnerJSON); + } + response.setContentType("application/json;charset=utf-8"); return responseJSON.toString(); } Index: lams_monitoring/web/css/components-monitoring.css =================================================================== diff -u -r2b8a05c1e8e4099eda87248ef05181058c833797 -r4fedcb4cf4ff6424821847b4280f18fa25a17f22 --- lams_monitoring/web/css/components-monitoring.css (.../components-monitoring.css) (revision 2b8a05c1e8e4099eda87248ef05181058c833797) +++ lams_monitoring/web/css/components-monitoring.css (.../components-monitoring.css) (revision 4fedcb4cf4ff6424821847b4280f18fa25a17f22) @@ -340,6 +340,10 @@ text-align: center; } +.monitoring-page-wrapper #learners-accordion .accordion-item .accordion-button:after { + margin-left: 0; +} + .monitoring-page-wrapper #learners-accordion .no-progress { display: none; text-align: center; Index: lams_monitoring/web/includes/javascript/monitorLesson.js =================================================================== diff -u -r2689f873824ab9ff1d5aa515d17fb7587442f284 -r4fedcb4cf4ff6424821847b4280f18fa25a17f22 --- lams_monitoring/web/includes/javascript/monitorLesson.js (.../monitorLesson.js) (revision 2689f873824ab9ff1d5aa515d17fb7587442f284) +++ lams_monitoring/web/includes/javascript/monitorLesson.js (.../monitorLesson.js) (revision 4fedcb4cf4ff6424821847b4280f18fa25a17f22) @@ -2502,15 +2502,17 @@ itemCollapseId = 'learners-accordion-collapse-' + learner.id, item = itemTemplate.clone().data('user-id', learner.id).attr('id', 'learners-accordion-item-' + learner.id).appendTo(learnersAccordion), portraitSmall = $(definePortrait(learner.portraitId, learner.id, STYLE_SMALL, true, LAMS_URL)).addClass('me-2'), - portraitLarge = learner.portraitId ? $(definePortrait(learner.portraitId, learner.id, STYLE_LARGE, false, LAMS_URL)) : null; - + portraitLarge = learner.portraitId ? $(definePortrait(learner.portraitId, learner.id, STYLE_LARGE, false, LAMS_URL)) : null, + itemHeader = $('.accordion-header', item).attr('id', itemHeaderId); - $('.accordion-header', item).attr('id', itemHeaderId) - .find('.accordion-button') - .attr('data-bs-target', '#' + itemCollapseId) - .attr('aria-controls', itemCollapseId) - .html('' + learner.firstName + ' ' + learner.lastName + '') - .prepend(portraitSmall); + $('.accordion-button', itemHeader) + .attr('data-bs-target', '#' + itemCollapseId) + .attr('aria-controls', itemCollapseId) + .prepend('' + learner.firstName + ' ' + learner.lastName + '') + .prepend(portraitSmall); + $('.accordion-completed-activity-count', itemHeader).text(learner.completedActivityCount).tooltip(); + $('.accordion-completed-lesson', itemHeader).toggle(learner.completedLesson).tooltip(); + $('.learners-accordion-name', item).text(learner.firstName + ' ' + learner.lastName); $('.learners-accordion-login', item).html('' + learner.login); $('.learners-accordion-email', item).html('' Index: lams_monitoring/web/monitor-learners-tab.jsp =================================================================== diff -u -r2689f873824ab9ff1d5aa515d17fb7587442f284 -r4fedcb4cf4ff6424821847b4280f18fa25a17f22 --- lams_monitoring/web/monitor-learners-tab.jsp (.../monitor-learners-tab.jsp) (revision 2689f873824ab9ff1d5aa515d17fb7587442f284) +++ lams_monitoring/web/monitor-learners-tab.jsp (.../monitor-learners-tab.jsp) (revision 4fedcb4cf4ff6424821847b4280f18fa25a17f22) @@ -31,10 +31,16 @@
-

- -

+
+ +