Index: lams_common/src/java/org/lamsfoundation/lams/lesson/util/LearnerActivityCompleteFluxItem.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/lesson/util/LearnerActivityCompleteFluxItem.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/util/LearnerActivityCompleteFluxItem.java (revision 3e58e9a9a8b4b7f7d94ad65d64376f091d7502dc) @@ -0,0 +1,28 @@ +package org.lamsfoundation.lams.lesson.util; + +/** + * Flux item emitted on learner moving from one activity to another by himself + */ +public class LearnerActivityCompleteFluxItem { + private long lessonId; + private long activityId; + private int userId; + + public LearnerActivityCompleteFluxItem(long lessonId, long activityId, int userId) { + this.lessonId = lessonId; + this.activityId = activityId; + this.userId = userId; + } + + public long getLessonId() { + return lessonId; + } + + public long getActivityId() { + return activityId; + } + + public int getUserId() { + return userId; + } +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/lesson/util/LearnerLessonJoinFluxItem.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/lesson/util/LearnerLessonJoinFluxItem.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/util/LearnerLessonJoinFluxItem.java (revision 3e58e9a9a8b4b7f7d94ad65d64376f091d7502dc) @@ -0,0 +1,22 @@ +package org.lamsfoundation.lams.lesson.util; + +/** + * Flux item emitted on learner joining a lesson, for the first time or not + */ +public class LearnerLessonJoinFluxItem { + private long lessonId; + private int userId; + + public LearnerLessonJoinFluxItem(long lessonId, int userId) { + this.lessonId = lessonId; + this.userId = userId; + } + + public long getLessonId() { + return lessonId; + } + + public int getUserId() { + return userId; + } +} \ No newline at end of file Fisheye: Tag 3e58e9a9a8b4b7f7d94ad65d64376f091d7502dc refers to a dead (removed) revision in file `lams_common/src/java/org/lamsfoundation/lams/lesson/util/LearnerProgressFluxItem.java'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_common/src/java/org/lamsfoundation/lams/util/CommonConstants.java =================================================================== diff -u -rf61af352afa0ddbfb791477732cbfe80425af47d -r3e58e9a9a8b4b7f7d94ad65d64376f091d7502dc --- lams_common/src/java/org/lamsfoundation/lams/util/CommonConstants.java (.../CommonConstants.java) (revision f61af352afa0ddbfb791477732cbfe80425af47d) +++ lams_common/src/java/org/lamsfoundation/lams/util/CommonConstants.java (.../CommonConstants.java) (revision 3e58e9a9a8b4b7f7d94ad65d64376f091d7502dc) @@ -71,6 +71,8 @@ // updated when a learner completes an activity by himself public static final String ACTIVITY_COMPLETED_SINK_NAME = "activity completed by learner"; + // updated when a learner completes an activity by himself + public static final String LESSON_JOINED_SINK_NAME = "lesson joined by learner"; // updated when a there was a change to lesson progress public static final String LESSON_PROGRESSED_SINK_NAME = "lesson progress changed"; } Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/controller/CompleteActivityController.java =================================================================== diff -u -rf61af352afa0ddbfb791477732cbfe80425af47d -r3e58e9a9a8b4b7f7d94ad65d64376f091d7502dc --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/controller/CompleteActivityController.java (.../CompleteActivityController.java) (revision f61af352afa0ddbfb791477732cbfe80425af47d) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/controller/CompleteActivityController.java (.../CompleteActivityController.java) (revision 3e58e9a9a8b4b7f7d94ad65d64376f091d7502dc) @@ -39,7 +39,7 @@ import org.lamsfoundation.lams.learning.web.util.LearningWebUtil; import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.lesson.LearnerProgress; -import org.lamsfoundation.lams.lesson.util.LearnerProgressFluxItem; +import org.lamsfoundation.lams.lesson.util.LearnerActivityCompleteFluxItem; import org.lamsfoundation.lams.util.CommonConstants; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.util.AttributeNames; @@ -123,7 +123,7 @@ // notify all event subscribers that a learner finished an activity FluxRegistry.emit(CommonConstants.ACTIVITY_COMPLETED_SINK_NAME, - new LearnerProgressFluxItem(lessonId, activityId, learnerId)); + new LearnerActivityCompleteFluxItem(lessonId, activityId, learnerId)); return forward; Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/controller/LearnerController.java =================================================================== diff -u -rbfa7dfb5557d54767b137652b34dd89c13fb1227 -r3e58e9a9a8b4b7f7d94ad65d64376f091d7502dc --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/controller/LearnerController.java (.../LearnerController.java) (revision bfa7dfb5557d54767b137652b34dd89c13fb1227) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/controller/LearnerController.java (.../LearnerController.java) (revision 3e58e9a9a8b4b7f7d94ad65d64376f091d7502dc) @@ -40,6 +40,7 @@ import javax.servlet.http.HttpSession; import org.apache.log4j.Logger; +import org.lamsfoundation.lams.flux.FluxRegistry; import org.lamsfoundation.lams.gradebook.GradebookUserActivity; import org.lamsfoundation.lams.gradebook.service.IGradebookService; import org.lamsfoundation.lams.learning.presence.PresenceWebsocketServer; @@ -57,13 +58,15 @@ import org.lamsfoundation.lams.lesson.LearnerProgressArchive; import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.lesson.service.ILessonService; +import org.lamsfoundation.lams.lesson.util.LearnerLessonJoinFluxItem; import org.lamsfoundation.lams.monitoring.service.IMonitoringService; import org.lamsfoundation.lams.tool.ToolSession; import org.lamsfoundation.lams.tool.service.ILamsCoreToolService; import org.lamsfoundation.lams.tool.service.ILamsToolService; import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; +import org.lamsfoundation.lams.util.CommonConstants; import org.lamsfoundation.lams.util.Configuration; import org.lamsfoundation.lams.util.ConfigurationKeys; import org.lamsfoundation.lams.util.DateUtil; @@ -202,6 +205,8 @@ String url = "learning/" + activityMapping.getDisplayActivityAction(lessonID); redirectToURL(response, url); + FluxRegistry.emit(CommonConstants.LESSON_JOINED_SINK_NAME, new LearnerLessonJoinFluxItem(lessonID, userId)); + } catch (Exception e) { log.error("An error occurred while learner " + userId + " attempting to join the lesson.", e); return "error"; Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringController.java =================================================================== diff -u -rf61af352afa0ddbfb791477732cbfe80425af47d -r3e58e9a9a8b4b7f7d94ad65d64376f091d7502dc --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringController.java (.../MonitoringController.java) (revision f61af352afa0ddbfb791477732cbfe80425af47d) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringController.java (.../MonitoringController.java) (revision 3e58e9a9a8b4b7f7d94ad65d64376f091d7502dc) @@ -73,7 +73,8 @@ import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.lesson.dto.LessonDetailsDTO; import org.lamsfoundation.lams.lesson.service.ILessonService; -import org.lamsfoundation.lams.lesson.util.LearnerProgressFluxItem; +import org.lamsfoundation.lams.lesson.util.LearnerActivityCompleteFluxItem; +import org.lamsfoundation.lams.lesson.util.LearnerLessonJoinFluxItem; import org.lamsfoundation.lams.logevent.LogEvent; import org.lamsfoundation.lams.logevent.service.ILogEventService; import org.lamsfoundation.lams.monitoring.MonitoringConstants; @@ -158,7 +159,10 @@ public MonitoringController() { // bind sinks so a learner finishing an activity also triggers an update in lesson progress FluxRegistry.bindSink(CommonConstants.ACTIVITY_COMPLETED_SINK_NAME, CommonConstants.LESSON_PROGRESSED_SINK_NAME, - learnerProgressFluxItem -> ((LearnerProgressFluxItem) learnerProgressFluxItem).getLessonId()); + learnerProgressFluxItem -> ((LearnerActivityCompleteFluxItem) learnerProgressFluxItem).getLessonId()); + // bind sinks so a learner entering a lesson also triggers an update in lesson progress + FluxRegistry.bindSink(CommonConstants.LESSON_JOINED_SINK_NAME, CommonConstants.LESSON_PROGRESSED_SINK_NAME, + lessonJoinedFluxItem -> ((LearnerLessonJoinFluxItem) lessonJoinedFluxItem).getLessonId()); FluxRegistry.initFluxMap(MonitoringConstants.CANVAS_REFRESH_FLUX_NAME, CommonConstants.LESSON_PROGRESSED_SINK_NAME, (Function) lessonId -> "doRefresh",