Index: lams_monitoring/web/timeLimit.jsp =================================================================== diff -u -rc0b0a7432face1dba3be2bffcf0332ad7e97170a -r8853aed83e14eb0e9c29c5af3c856bdc90ea0668 --- lams_monitoring/web/timeLimit.jsp (.../timeLimit.jsp) (revision c0b0a7432face1dba3be2bffcf0332ad7e97170a) +++ lams_monitoring/web/timeLimit.jsp (.../timeLimit.jsp) (revision 8853aed83e14eb0e9c29c5af3c856bdc90ea0668) @@ -477,7 +477,7 @@ row.removeClass('hidden'); - if (this.adjustment === 0){ + if (this.adjustment === 0 || this.finished){ return true; } let secondsLeft = absoluteTimeLimitFinish - Math.round(now / 1000) + this.adjustment * 60; Index: lams_monitoring/web/timeLimit5.jsp =================================================================== diff -u -rc0b0a7432face1dba3be2bffcf0332ad7e97170a -r8853aed83e14eb0e9c29c5af3c856bdc90ea0668 --- lams_monitoring/web/timeLimit5.jsp (.../timeLimit5.jsp) (revision c0b0a7432face1dba3be2bffcf0332ad7e97170a) +++ lams_monitoring/web/timeLimit5.jsp (.../timeLimit5.jsp) (revision 8853aed83e14eb0e9c29c5af3c856bdc90ea0668) @@ -465,7 +465,7 @@ $('.individual-time-limit-value', row).text(this.adjustment); row.removeClass('d-none'); - if (this.adjustment === 0){ + if (this.adjustment === 0 || this.finished){ return true; } let secondsLeft = absoluteTimeLimitFinish - Math.round(now / 1000) + this.adjustment * 60; Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java =================================================================== diff -u -r6d6bafd58b27e613ae472097129d2fede445ffd9 -r8853aed83e14eb0e9c29c5af3c856bdc90ea0668 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 6d6bafd58b27e613ae472097129d2fede445ffd9) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 8853aed83e14eb0e9c29c5af3c856bdc90ea0668) @@ -819,6 +819,11 @@ assessmentResultDao.update(result); + if (!isAutosave && assessment.getTimeLimitAdjustments().containsKey(userId.intValue())) { + // make time widget stop displaying individual extension for this user + FluxRegistry.emit(AssessmentConstants.TIME_LIMIT_PANEL_UPDATE_SINK_NAME, assessment.getContentId()); + } + // refresh non-leaders when leader changed his answers or submitted them if (assessment.isUseSelectLeaderToolOuput() && (!isAutosave || isAnswerModified)) { AssessmentSession session = getSessionBySessionId(result.getSessionId()); Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/MonitoringController.java =================================================================== diff -u -r27be1eb0b5945027c2c8f95b8a28b1803762c183 -r8853aed83e14eb0e9c29c5af3c856bdc90ea0668 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/MonitoringController.java (.../MonitoringController.java) (revision 27be1eb0b5945027c2c8f95b8a28b1803762c183) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/MonitoringController.java (.../MonitoringController.java) (revision 8853aed83e14eb0e9c29c5af3c856bdc90ea0668) @@ -1059,6 +1059,10 @@ } userJSON.put("name", name); + AssessmentResult result = service.getLastAssessmentResult(assessment.getUid(), + user.getUserId().longValue()); + userJSON.put("finished", result != null && result.getFinishDate() != null); + responseJSON.add(userJSON); } return responseJSON.toString(); Index: lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/service/DokumaranService.java =================================================================== diff -u -rd7bfc30e7d7a056b984f35c292a7abed4635c754 -r8853aed83e14eb0e9c29c5af3c856bdc90ea0668 --- lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/service/DokumaranService.java (.../DokumaranService.java) (revision d7bfc30e7d7a056b984f35c292a7abed4635c754) +++ lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/service/DokumaranService.java (.../DokumaranService.java) (revision 8853aed83e14eb0e9c29c5af3c856bdc90ea0668) @@ -442,15 +442,11 @@ user.setSessionFinished(true); dokumaranUserDao.saveObject(user); - // DokumaranSession session = dokumaranSessionDao.getSessionBySessionId(toolSessionId); - // session.setStatus(DokumaranConstants.COMPLETED); - // dokumaranSessionDao.saveObject(session); + DokumaranSession session = dokumaranSessionDao.getSessionBySessionId(toolSessionId); //finish Etherpad session. Encapsulate it in try-catch block as we don't want it to affect regular LAMS workflow. try { EPLiteClient client = etherpadService.getClient(); - - DokumaranSession session = dokumaranSessionDao.getSessionBySessionId(toolSessionId); String groupId = session.getEtherpadGroupId(); String userName = user.getFirstName() + " " + user.getLastName(); @@ -471,6 +467,11 @@ log.debug(e1.getMessage()); } + Dokumaran dokumaran = session.getDokumaran(); + if (dokumaran.getTimeLimitAdjustments().containsKey(userId.intValue())) { + FluxRegistry.emit(DokumaranConstants.TIME_LIMIT_PANEL_UPDATE_SINK_NAME, dokumaran.getContentId()); + } + String nextUrl = null; try { nextUrl = this.leaveToolSession(toolSessionId, userId); Index: lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/MonitoringController.java =================================================================== diff -u -r8c6ccd715c5bbd55bacc9a0f112d2ee9a870aa3d -r8853aed83e14eb0e9c29c5af3c856bdc90ea0668 --- lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/MonitoringController.java (.../MonitoringController.java) (revision 8c6ccd715c5bbd55bacc9a0f112d2ee9a870aa3d) +++ lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/MonitoringController.java (.../MonitoringController.java) (revision 8853aed83e14eb0e9c29c5af3c856bdc90ea0668) @@ -494,6 +494,10 @@ } userJSON.put("name", name); + DokumaranUser dokumaranUser = dokumaranService.getLearnerByIDAndContent(user.getUserId().longValue(), + toolContentId); + userJSON.put("finished", dokumaranUser != null && dokumaranUser.isSessionFinished()); + responseJSON.add(userJSON); } return responseJSON.toString(); Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java =================================================================== diff -u -rd7bfc30e7d7a056b984f35c292a7abed4635c754 -r8853aed83e14eb0e9c29c5af3c856bdc90ea0668 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java (.../ScratchieServiceImpl.java) (revision d7bfc30e7d7a056b984f35c292a7abed4635c754) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java (.../ScratchieServiceImpl.java) (revision 8853aed83e14eb0e9c29c5af3c856bdc90ea0668) @@ -781,6 +781,11 @@ scratchieSessionDao.saveObject(session); recalculateMarkForSession(toolSessionId, false); + + if (session.getTimeLimitAdjustment() != null) { + FluxRegistry.emit(ScratchieConstants.TIME_LIMIT_PANEL_UPDATE_SINK_NAME, + session.getScratchie().getContentId()); + } } @Override Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/controller/MonitoringController.java =================================================================== diff -u -reccd6838790a4369b6788e48fb5ae5851622fe35 -r8853aed83e14eb0e9c29c5af3c856bdc90ea0668 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/controller/MonitoringController.java (.../MonitoringController.java) (revision eccd6838790a4369b6788e48fb5ae5851622fe35) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/controller/MonitoringController.java (.../MonitoringController.java) (revision 8853aed83e14eb0e9c29c5af3c856bdc90ea0668) @@ -23,27 +23,9 @@ package org.lamsfoundation.lams.tool.scratchie.web.controller; -import java.io.IOException; -import java.security.InvalidParameterException; -import java.time.LocalDateTime; -import java.time.OffsetDateTime; -import java.util.Collections; -import java.util.Comparator; -import java.util.Date; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.TimeZone; -import java.util.TreeSet; -import java.util.stream.Collectors; - -import javax.servlet.ServletException; -import javax.servlet.ServletOutputStream; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; - +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.JsonNodeFactory; +import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.commons.lang.StringEscapeUtils; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; @@ -65,7 +47,14 @@ import org.lamsfoundation.lams.tool.scratchie.service.IScratchieService; import org.lamsfoundation.lams.tool.scratchie.util.ScratchieItemComparator; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; -import org.lamsfoundation.lams.util.*; +import org.lamsfoundation.lams.util.AlphanumComparator; +import org.lamsfoundation.lams.util.CommonConstants; +import org.lamsfoundation.lams.util.Configuration; +import org.lamsfoundation.lams.util.ConfigurationKeys; +import org.lamsfoundation.lams.util.DateUtil; +import org.lamsfoundation.lams.util.FileUtil; +import org.lamsfoundation.lams.util.JsonUtil; +import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.util.excel.ExcelSheet; import org.lamsfoundation.lams.util.excel.ExcelUtil; import org.lamsfoundation.lams.web.session.SessionManager; @@ -82,9 +71,25 @@ import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseStatus; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.JsonNodeFactory; -import com.fasterxml.jackson.databind.node.ObjectNode; +import javax.servlet.ServletException; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import java.io.IOException; +import java.security.InvalidParameterException; +import java.time.LocalDateTime; +import java.time.OffsetDateTime; +import java.util.Collections; +import java.util.Comparator; +import java.util.Date; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.TimeZone; +import java.util.TreeSet; +import java.util.stream.Collectors; @Controller @RequestMapping("/monitoring") @@ -367,6 +372,7 @@ userJSON.put("sessionId", session.getSessionId()); userJSON.put("adjustment", session.getTimeLimitAdjustment()); userJSON.put("name", groupLabel + session.getSessionName() + "\""); + userJSON.put("finished", session.isScratchingFinished()); responseJSON.add(userJSON); } Index: lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/WhiteboardService.java =================================================================== diff -u -rd7bfc30e7d7a056b984f35c292a7abed4635c754 -r8853aed83e14eb0e9c29c5af3c856bdc90ea0668 --- lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/WhiteboardService.java (.../WhiteboardService.java) (revision d7bfc30e7d7a056b984f35c292a7abed4635c754) +++ lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/WhiteboardService.java (.../WhiteboardService.java) (revision 8853aed83e14eb0e9c29c5af3c856bdc90ea0668) @@ -376,6 +376,12 @@ user.setSessionFinished(true); whiteboardUserDao.update(user); + // there is no Flux to update time limit panel yet, but we need to turn it on once it appears +// Whiteboard whiteboard = user.getWhiteboard(); +// if (whiteboard.getTimeLimitAdjustments().containsKey(userId.intValue())) { +// FluxRegistry.emit(WhiteboardConstants.TIME_LIMIT_PANEL_UPDATE_SINK_NAME, whiteboard.getContentId()); +// } + String nextUrl = null; try { nextUrl = this.leaveToolSession(toolSessionId, userId); Index: lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/controller/MonitoringController.java =================================================================== diff -u -r8c6ccd715c5bbd55bacc9a0f112d2ee9a870aa3d -r8853aed83e14eb0e9c29c5af3c856bdc90ea0668 --- lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/controller/MonitoringController.java (.../MonitoringController.java) (revision 8c6ccd715c5bbd55bacc9a0f112d2ee9a870aa3d) +++ lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/controller/MonitoringController.java (.../MonitoringController.java) (revision 8853aed83e14eb0e9c29c5af3c856bdc90ea0668) @@ -436,6 +436,10 @@ } userJSON.put("name", name); + WhiteboardUser whiteboardUser = whiteboardService.getLearnerByIDAndContent(user.getUserId().longValue(), + toolContentId); + userJSON.put("finished", whiteboardUser != null && whiteboardUser.isSessionFinished()); + responseJSON.add(userJSON); } return responseJSON.toString();