Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java =================================================================== diff -u -r07bcc61910818da9a91481b71b90fba5f9020587 -rb140d07f5673be1ca39ed3fb06e9a51173e2c620 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 07bcc61910818da9a91481b71b90fba5f9020587) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision b140d07f5673be1ca39ed3fb06e9a51173e2c620) @@ -684,24 +684,25 @@ result.setMaximumGrade(maximumGrade); result.setGrade(grade); - if (isAutosave) { - if (isAnswerModified && assessment.isUseSelectLeaderToolOuput()) { - AssessmentSession session = getSessionBySessionId(result.getSessionId()); - Long leaderUid = session.getGroupLeader() == null ? null : session.getGroupLeader().getUid(); - Set userIds = session.getAssessmentUsers().stream().filter(u -> !u.getUid().equals(leaderUid)) - .collect(Collectors.mapping(assessmentUser -> assessmentUser.getUserId().intValue(), - Collectors.toSet())); - - ObjectNode jsonCommand = JsonNodeFactory.instance.objectNode(); - jsonCommand.put("hookTrigger", "assessment-leader-triggered-refresh-" + result.getSessionId()); - learnerService.createCommandForLearners(assessment.getContentId(), userIds, jsonCommand.toString()); - } - } else { + if (!isAutosave) { result.setFinishDate(new Timestamp(new Date().getTime())); } assessmentResultDao.update(result); + // refresh non-leaders when leader changed his answers or submitted them + if (assessment.isUseSelectLeaderToolOuput() && (!isAutosave || isAnswerModified)) { + AssessmentSession session = getSessionBySessionId(result.getSessionId()); + Long leaderUid = session.getGroupLeader() == null ? null : session.getGroupLeader().getUid(); + Set userIds = session.getAssessmentUsers().stream().filter(u -> !u.getUid().equals(leaderUid)) + .collect(Collectors.mapping(assessmentUser -> assessmentUser.getUserId().intValue(), + Collectors.toSet())); + + ObjectNode jsonCommand = JsonNodeFactory.instance.objectNode(); + jsonCommand.put("hookTrigger", "assessment-leader-triggered-refresh-" + result.getSessionId()); + learnerService.createCommandForLearners(assessment.getContentId(), userIds, jsonCommand.toString()); + } + return true; } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/LearningController.java =================================================================== diff -u -r0f91c5ccc4cb27ccd6afa12a7be94f071247c99f -rb140d07f5673be1ca39ed3fb06e9a51173e2c620 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/LearningController.java (.../LearningController.java) (revision 0f91c5ccc4cb27ccd6afa12a7be94f071247c99f) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/LearningController.java (.../LearningController.java) (revision b140d07f5673be1ca39ed3fb06e9a51173e2c620) @@ -447,28 +447,6 @@ } /** - * Checks Leader Progress - */ - @RequestMapping("/checkLeaderProgress") - @ResponseBody - public String checkLeaderProgress(HttpServletRequest request, HttpServletResponse response) throws IOException { - Long toolSessionId = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID); - - AssessmentSession session = service.getSessionBySessionId(toolSessionId); - AssessmentUser leader = session.getGroupLeader(); - - //in case of time limit - prevent user from seeing questions page longer than time limit allows - boolean isTimeLimitExceeded = service.checkTimeLimitExceeded(session.getAssessment().getContentId(), - leader.getUserId().intValue()); - boolean isLeaderResponseFinalized = service.isLastAttemptFinishedByUser(leader); - - ObjectNode responseJSON = JsonNodeFactory.instance.objectNode(); - responseJSON.put("isPageRefreshRequested", isLeaderResponseFinalized || isTimeLimitExceeded); - response.setContentType("application/json;charset=utf-8"); - return responseJSON.toString(); - } - - /** * Shows next page. It's available only to leaders as non-leaders see all questions on one page. */ @RequestMapping("/nextPage") Index: lams_tool_assessment/web/pages/learning/learning.jsp =================================================================== diff -u -rff6537798655584102f5dba4dd2fc293f7186118 -rb140d07f5673be1ca39ed3fb06e9a51173e2c620 --- lams_tool_assessment/web/pages/learning/learning.jsp (.../learning.jsp) (revision ff6537798655584102f5dba4dd2fc293f7186118) +++ lams_tool_assessment/web/pages/learning/learning.jsp (.../learning.jsp) (revision b140d07f5673be1ca39ed3fb06e9a51173e2c620) @@ -346,7 +346,7 @@ }); } - var autosaveInterval = "30000"; // 30 seconds interval + var autosaveInterval = "10000"; // 30 seconds interval window.setInterval(learnerAutosave, autosaveInterval); function onLearnerAutosaveError() { @@ -415,25 +415,6 @@ }); } - if (${!hasEditRight && mode != "teacher"}) { - setInterval("checkLeaderProgress();", 15000);// Auto-Refresh every 15 seconds for non-leaders - } - - function checkLeaderProgress() { - $.ajax({ - async: false, - url: '', - data: 'toolSessionID=${toolSessionID}', - dataType: 'json', - type: 'post', - success: function (json) { - if (json.isPageRefreshRequested) { - location.reload(); - } - } - }); - } - function validateAnswers() { if (${!hasEditRight}) { return true;