Index: lams_common/src/java/org/lamsfoundation/lams/flux/FluxMap.java =================================================================== diff -u -r88e06a551e39097393f1716da6eb5b7774752568 -re88a78540d7b5e9e6cdbe66d04fc861f647dc121 --- lams_common/src/java/org/lamsfoundation/lams/flux/FluxMap.java (.../FluxMap.java) (revision 88e06a551e39097393f1716da6eb5b7774752568) +++ lams_common/src/java/org/lamsfoundation/lams/flux/FluxMap.java (.../FluxMap.java) (revision e88a78540d7b5e9e6cdbe66d04fc861f647dc121) @@ -26,7 +26,7 @@ public static final int SHORT_THROTTLE = 5; public static final int STANDARD_THROTTLE = 10; public static final int LONG_THROTTLE = 30; - public static final int STANDARD_TIMEOUT = 60; + public static final int STANDARD_TIMEOUT = 3 * 60; private final Map> map; Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringController.java =================================================================== diff -u -r716e8f6d2a43093e93f1a0e8b96894e9535e96d7 -re88a78540d7b5e9e6cdbe66d04fc861f647dc121 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringController.java (.../MonitoringController.java) (revision 716e8f6d2a43093e93f1a0e8b96894e9535e96d7) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringController.java (.../MonitoringController.java) (revision e88a78540d7b5e9e6cdbe66d04fc861f647dc121) @@ -34,8 +34,22 @@ import org.lamsfoundation.lams.flux.FluxRegistry; import org.lamsfoundation.lams.integration.ExtCourseClassMap; import org.lamsfoundation.lams.learning.service.ILearnerService; -import org.lamsfoundation.lams.learningdesign.*; +import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.ActivityOrderComparator; +import org.lamsfoundation.lams.learningdesign.BranchingActivity; +import org.lamsfoundation.lams.learningdesign.ChosenBranchingActivity; +import org.lamsfoundation.lams.learningdesign.ComplexActivity; +import org.lamsfoundation.lams.learningdesign.ContributionTypes; +import org.lamsfoundation.lams.learningdesign.GateActivity; +import org.lamsfoundation.lams.learningdesign.Group; +import org.lamsfoundation.lams.learningdesign.GroupingActivity; +import org.lamsfoundation.lams.learningdesign.LearningDesign; +import org.lamsfoundation.lams.learningdesign.OptionsWithSequencesActivity; +import org.lamsfoundation.lams.learningdesign.SequenceActivity; +import org.lamsfoundation.lams.learningdesign.ToolActivity; +import org.lamsfoundation.lams.learningdesign.Transition; import org.lamsfoundation.lams.learningdesign.dao.IActivityDAO; +import org.lamsfoundation.lams.learningdesign.dao.ILearningDesignDAO; import org.lamsfoundation.lams.learningdesign.exception.LearningDesignException; import org.lamsfoundation.lams.learningdesign.service.ILearningDesignService; import org.lamsfoundation.lams.lesson.LearnerProgress; @@ -61,15 +75,25 @@ import org.lamsfoundation.lams.usermanagement.WorkspaceFolder; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.usermanagement.exception.UserException; +import org.lamsfoundation.lams.usermanagement.exception.WorkspaceFolderException; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; -import org.lamsfoundation.lams.util.*; +import org.lamsfoundation.lams.util.CommonConstants; +import org.lamsfoundation.lams.util.DateUtil; +import org.lamsfoundation.lams.util.JsonUtil; +import org.lamsfoundation.lams.util.MessageService; +import org.lamsfoundation.lams.util.ValidationUtil; +import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.session.SessionManager; import org.lamsfoundation.lams.web.util.AttributeNames; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.util.HtmlUtils; import reactor.core.publisher.Flux; @@ -83,8 +107,22 @@ import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Locale; +import java.util.Map; import java.util.Map.Entry; +import java.util.Set; +import java.util.TreeSet; +import java.util.Vector; /** * The action servlet that provide all the monitoring functionalities. It interact with the teacher via JSP monitoring @@ -146,8 +184,8 @@ FluxMap.STANDARD_TIMEOUT); FluxRegistry.initFluxMap(MonitoringConstants.TIME_LIMIT_REFRESH_FLUX_NAME, CommonConstants.ACTIVITY_TIME_LIMIT_CHANGED_SINK_NAME, - (Collection key, Collection item) -> key.containsAll(item), toolContentIds -> "doRefresh", - FluxMap.SHORT_THROTTLE, FluxMap.STANDARD_TIMEOUT); + (Collection key, Collection item) -> !Collections.disjoint(key, item), + toolContentIds -> "doRefresh", FluxMap.SHORT_THROTTLE, FluxMap.STANDARD_TIMEOUT); } private Integer getUserId() { Index: lams_monitoring/web/includes/javascript/monitorLesson.js =================================================================== diff -u -re1f4bc88064ebab3efee85e7993a0f6dc0df773f -re88a78540d7b5e9e6cdbe66d04fc861f647dc121 --- lams_monitoring/web/includes/javascript/monitorLesson.js (.../monitorLesson.js) (revision e1f4bc88064ebab3efee85e7993a0f6dc0df773f) +++ lams_monitoring/web/includes/javascript/monitorLesson.js (.../monitorLesson.js) (revision e88a78540d7b5e9e6cdbe66d04fc861f647dc121) @@ -1446,6 +1446,8 @@ * Updates learner progress in sequence tab */ function updateSequenceTab() { + clearEventSources(); + drawLessonCompletionChart(); sequenceCanvas = $('#sequenceCanvas'); @@ -3089,6 +3091,7 @@ const eventSource = new EventSource(url); eventSources.push(eventSource); eventSource.onmessage = onMessageFunction; + return eventSource; } function clearEventSources() {