Index: lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/web/controller/LearningWebsocketServer.java =================================================================== diff -u -r5ad13513778d4ef1ced37eaa30fb2286705d22a7 -r639c5ec2598f0c148ceeb7d4bc8d7e9033dfccf3 --- lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/web/controller/LearningWebsocketServer.java (.../LearningWebsocketServer.java) (revision 5ad13513778d4ef1ced37eaa30fb2286705d22a7) +++ lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/web/controller/LearningWebsocketServer.java (.../LearningWebsocketServer.java) (revision 639c5ec2598f0c148ceeb7d4bc8d7e9033dfccf3) @@ -1,6 +1,7 @@ package org.lamsfoundation.lams.tool.leaderselection.web.controller; import java.io.IOException; +import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; @@ -51,7 +52,7 @@ Iterator>> entryIterator = LearningWebsocketServer.websockets.entrySet() .iterator(); - // go through activities and update registered learners with reports and vote count + // go through activities and update registered learners with selected leader while (entryIterator.hasNext()) { Entry> entry = entryIterator.next(); Long toolSessionId = entry.getKey(); @@ -62,9 +63,14 @@ continue; } - boolean finished = LearningWebsocketServer.getLeaderService() - .getSessionBySessionId(toolSessionId).getGroupLeader() != null; - if (finished) { + LeaderselectionUser leader = LearningWebsocketServer.getLeaderService() + .getSessionBySessionId(toolSessionId).getGroupLeader(); + Long existingLeaderUid = leaders.get(toolSessionId); + + // check if a leader has been selected or it has changed + if ((existingLeaderUid == null && leader != null) || (existingLeaderUid != null + && (leader == null || !leader.getUid().equals(existingLeaderUid)))) { + leaders.put(toolSessionId, leader == null ? null : leader.getUid()); LearningWebsocketServer.sendPageRefreshRequest(toolSessionId); } } @@ -90,6 +96,7 @@ private static final SendWorker sendWorker = new SendWorker(); private static final Map> websockets = new ConcurrentHashMap<>(); + private static final Map leaders = new HashMap<>(); private static ILeaderselectionService leaderService; static { Index: lams_tool_leader/web/pages/learning/leaderselection.jsp =================================================================== diff -u -rea8629a2ce87bf6bf4b91e1b1d47b908a3dd2e74 -r639c5ec2598f0c148ceeb7d4bc8d7e9033dfccf3 --- lams_tool_leader/web/pages/learning/leaderselection.jsp (.../leaderselection.jsp) (revision ea8629a2ce87bf6bf4b91e1b1d47b908a3dd2e74) +++ lams_tool_leader/web/pages/learning/leaderselection.jsp (.../leaderselection.jsp) (revision 639c5ec2598f0c148ceeb7d4bc8d7e9033dfccf3) @@ -25,84 +25,82 @@ - - - + + + +