Index: lams_learning/src/java/org/lamsfoundation/lams/learning/discussion/dao/hibernate/DiscussionSentimentDAO.java =================================================================== diff -u -r0d458a161ee50dd2db8283520b80b5cc559705bf -rca273b5530c1fead65c271da891dcdd3cb5709f7 --- lams_learning/src/java/org/lamsfoundation/lams/learning/discussion/dao/hibernate/DiscussionSentimentDAO.java (.../DiscussionSentimentDAO.java) (revision 0d458a161ee50dd2db8283520b80b5cc559705bf) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/discussion/dao/hibernate/DiscussionSentimentDAO.java (.../DiscussionSentimentDAO.java) (revision ca273b5530c1fead65c271da891dcdd3cb5709f7) @@ -16,7 +16,7 @@ private static final String FIND_ACTIVE_DISCUSSION = "FROM " + DiscussionSentimentVote.class.getName() + " WHERE lessonId = :lessonId AND userId IS NULL"; - private static final String FIND_ALL_LESSON_DISCUSSIONS = "SELECT toolQuestionUid FROM " + private static final String FIND_ALL_LESSON_DISCUSSIONS = "SELECT toolQuestionUid, burningQuestionUid FROM " + DiscussionSentimentVote.class.getName() + " WHERE lessonId = :lessonId GROUP BY toolQuestionUid"; @Override @@ -28,12 +28,13 @@ @Override @SuppressWarnings("unchecked") public Set getDiscussions(long lessonId) { - List queryResult = getSession().createQuery(FIND_ALL_LESSON_DISCUSSIONS) + List queryResult = getSession().createQuery(FIND_ALL_LESSON_DISCUSSIONS) .setParameter("lessonId", lessonId).getResultList(); Set result = new HashSet<>(); - for (Long toolQuestionUid : queryResult) { - DiscussionSentimentVote token = new DiscussionSentimentVote(lessonId, toolQuestionUid, null); + for (Object[] discussionDetails : queryResult) { + DiscussionSentimentVote token = new DiscussionSentimentVote(lessonId, (Long) discussionDetails[0], + (Long) discussionDetails[1]); result.add(token); } return result; Index: lams_learning/src/java/org/lamsfoundation/lams/learning/discussion/service/DiscussionSentimentService.java =================================================================== diff -u -r0d458a161ee50dd2db8283520b80b5cc559705bf -rca273b5530c1fead65c271da891dcdd3cb5709f7 --- lams_learning/src/java/org/lamsfoundation/lams/learning/discussion/service/DiscussionSentimentService.java (.../DiscussionSentimentService.java) (revision 0d458a161ee50dd2db8283520b80b5cc559705bf) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/discussion/service/DiscussionSentimentService.java (.../DiscussionSentimentService.java) (revision ca273b5530c1fead65c271da891dcdd3cb5709f7) @@ -93,13 +93,13 @@ userId); if (learnerVote != null) { discussionSentimentDAO.delete(learnerVote); + discussionSentimentDAO.flush(); } // add the vote // it is different to discussion token as it contains user ID learnerVote = new DiscussionSentimentVote(lessonId, cachedActiveDiscussionToken.getToolQuestionUid(), cachedActiveDiscussionToken.getBurningQuestionUid()); - learnerVote.setBurningQuestionUid(cachedActiveDiscussionToken.getBurningQuestionUid()); learnerVote.setUserId(userId); learnerVote.setSelectedOption(selectedOption); Index: lams_learning/web/discussion/monitor.jsp =================================================================== diff -u -rf54e28a0fccea0011b2e580ff5afb9abd4acc96b -rca273b5530c1fead65c271da891dcdd3cb5709f7 --- lams_learning/web/discussion/monitor.jsp (.../monitor.jsp) (revision f54e28a0fccea0011b2e580ff5afb9abd4acc96b) +++ lams_learning/web/discussion/monitor.jsp (.../monitor.jsp) (revision ca273b5530c1fead65c271da891dcdd3cb5709f7) @@ -1,4 +1,5 @@ <%@include file="/common/taglibs.jsp"%> + +
+ id="discussion-sentiment-chart-panel-heading-${idSuffix}">
- ( + ( )
-
+
-
+
-
+
-
+
- - + @@ -275,13 +282,13 @@ - - + Index: lams_tool_assessment/web/pages/learning/results/allquestions.jsp =================================================================== diff -u -r8ffb8a4e0269d5abfca9f435911e6b38c5287bdb -rca273b5530c1fead65c271da891dcdd3cb5709f7 --- lams_tool_assessment/web/pages/learning/results/allquestions.jsp (.../allquestions.jsp) (revision 8ffb8a4e0269d5abfca9f435911e6b38c5287bdb) +++ lams_tool_assessment/web/pages/learning/results/allquestions.jsp (.../allquestions.jsp) (revision ca273b5530c1fead65c271da891dcdd3cb5709f7) @@ -77,7 +77,9 @@ } - function startDiscussionSentiment(toolQuestionUid, markAsActive) { + function startDiscussionSentiment(toolQuestionUid, burningQuestionUid, markAsActive) { + // burningQuestionUid is not used in Assessment, but must be added for function signature consistency + $('#discussion-sentiment-chart-panel-container-' + toolQuestionUid).load( '${lams}learning/discussionSentiment/startMonitor.do', { @@ -111,18 +113,20 @@ }; - $.ajax({ - url : '${lams}learning/discussionSentiment/checkMonitor.do', - data : { - toolContentId : ${assessment.contentId} - }, - dataType : 'json', - success : function(result){ - result.forEach(function(discussion){ - startDiscussionSentiment(discussion.toolQuestionUid, false); - }); - } - }); + + $.ajax({ + url : '${lams}learning/discussionSentiment/checkMonitor.do', + data : { + toolContentId : ${assessment.contentId} + }, + dataType : 'json', + success : function(result){ + result.forEach(function(discussion){ + startDiscussionSentiment(discussion.toolQuestionUid, null, false); + }); + } + }); + }); @@ -158,7 +162,7 @@
+ onClick="javascript:startDiscussionSentiment(${question.uid}, null, true)">
Index: lams_tool_scratchie/conf/language/lams/ApplicationResources.properties =================================================================== diff -u -rfda4332af5bb7bc2f0dcae0db3c5b5fe1a1ed92d -rca273b5530c1fead65c271da891dcdd3cb5709f7 --- lams_tool_scratchie/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision fda4332af5bb7bc2f0dcae0db3c5b5fe1a1ed92d) +++ lams_tool_scratchie/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision ca273b5530c1fead65c271da891dcdd3cb5709f7) @@ -312,3 +312,4 @@ label.monitoring.summary.time.limit.finish.now.confirm = Are you sure you want to make all groups finish their work right now? label.monitoring.summary.time.limit.individual.placeholder = Type name label.monitoring.summary.time.limit.expired = Expired +label.monitoring.discussion.start = Start discussion \ No newline at end of file Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/controller/TblMonitorController.java =================================================================== diff -u -r01914e84eaec252cea509f1990122a58b555cbd5 -rca273b5530c1fead65c271da891dcdd3cb5709f7 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/controller/TblMonitorController.java (.../TblMonitorController.java) (revision 01914e84eaec252cea509f1990122a58b555cbd5) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/controller/TblMonitorController.java (.../TblMonitorController.java) (revision ca273b5530c1fead65c271da891dcdd3cb5709f7) @@ -193,6 +193,8 @@ } request.setAttribute("isTbl", true); + request.setAttribute(AttributeNames.PARAM_TOOL_CONTENT_ID, scratchie.getContentId()); + request.setAttribute("discussionSentimentEnabled", scratchie.isDiscussionSentimentEnabled()); return "pages/monitoring/parts/burningQuestions"; } Index: lams_tool_scratchie/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r973a921a8f59a78026f54c84d6b04e2378bac517 -rca273b5530c1fead65c271da891dcdd3cb5709f7 --- lams_tool_scratchie/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 973a921a8f59a78026f54c84d6b04e2378bac517) +++ lams_tool_scratchie/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision ca273b5530c1fead65c271da891dcdd3cb5709f7) @@ -217,22 +217,41 @@ } else { alert(command.message); } - } + // if learner's currently displayed page has hookTrigger same as in the JSON // then a function also defined on that page will run if (command.hookTrigger && command.hookTrigger == commandWebsocketHookTrigger && typeof commandWebsocketHook === 'function') { commandWebsocketHook(command.hookParams); } + if (command.redirectURL) { window.location.href = command.redirectURL; } + if (command.discussion) { + var discussionCommand = $('#discussion-sentiment-command'); + if (discussionCommand.length === 0) { + discussionCommand = $('
').attr('id', 'discussion-sentiment-command').appendTo('body'); + } + discussionCommand.load(LEARNING_URL + "discussionSentiment/" + command.discussion + ".do", { + lessonId : lessonId + }); + } + // reset ping timer clearTimeout(commandWebsocketPingTimeout); commandWebsocketPingFunc(true); }; + + // check if there is a running discussion; if so, a websocket command will come to display the widget + $.ajax({ + url : LEARNING_URL + "discussionSentiment/checkLearner.do", + data: { + lessonId : lessonId + } + }); } $(document).ready(function() { Index: lams_tool_scratchie/web/pages/monitoring/parts/burningQuestions.jsp =================================================================== diff -u -r67eb97d89e2400b6dfba6b978f608c376a25a00d -rca273b5530c1fead65c271da891dcdd3cb5709f7 --- lams_tool_scratchie/web/pages/monitoring/parts/burningQuestions.jsp (.../burningQuestions.jsp) (revision 67eb97d89e2400b6dfba6b978f608c376a25a00d) +++ lams_tool_scratchie/web/pages/monitoring/parts/burningQuestions.jsp (.../burningQuestions.jsp) (revision ca273b5530c1fead65c271da891dcdd3cb5709f7) @@ -1,4 +1,20 @@ <%@ include file="/common/taglibs.jsp"%> + + @@ -78,14 +129,21 @@ + <%-- toolQuestionUid, i.e. item UID, is required for discussion token. + It is missing for general burning questions as they are not bound to any question. + In this case we use first question's UID, as burning question UID will uniquely identify the discussion anyway + --%> + +
- ( ) + ( ) +
- ( ) + ( ) +
${burningQuestionDto.likeCount}   +
+ +
+
+
+