Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaUsrRespDAO.java =================================================================== diff -u -r2f725f8ef2aa09a2663b2335bf67213074426d11 -r6668d717bec2c56125019a19b256013f5c05269e --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaUsrRespDAO.java (.../IQaUsrRespDAO.java) (revision 2f725f8ef2aa09a2663b2335bf67213074426d11) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaUsrRespDAO.java (.../IQaUsrRespDAO.java) (revision 6668d717bec2c56125019a19b256013f5c05269e) @@ -49,8 +49,8 @@ List getResponseBySessionAndQuestion(final Long qaSessionId, final Long questionId); List getResponsesForTablesorter(final Long toolContentId, final Long qaSessionId, final Long questionId, - final Long userId, int page, int size, int sorting, String searchString); + final Long excludeUserId, boolean isOnlyLeadersIncluded, int page, int size, int sorting, String searchString); int getCountResponsesBySessionAndQuestion(final Long qaSessionId, final Long questionId, final Long excludeUserId, - String searchString); + boolean isOnlyLeadersIncluded, String searchString); } Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaUsrRespDAO.java =================================================================== diff -u -r2f725f8ef2aa09a2663b2335bf67213074426d11 -r6668d717bec2c56125019a19b256013f5c05269e --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaUsrRespDAO.java (.../QaUsrRespDAO.java) (revision 2f725f8ef2aa09a2663b2335bf67213074426d11) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaUsrRespDAO.java (.../QaUsrRespDAO.java) (revision 6668d717bec2c56125019a19b256013f5c05269e) @@ -119,12 +119,13 @@ private static final String LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH1 = "from qaUsrResp in class QaUsrResp " + " WHERE qaUsrResp.answer IS NOT NULL AND qaUsrResp.qaQueUser.qaSession.qaSessionId=:qaSessionId AND qaUsrResp.qaQuestion.uid=:questionId AND qaUsrResp.qaQueUser.queUsrId!=:excludeUserId "; - private static final String LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH2 = " order by "; + private static final String LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH2 = " AND qaUsrResp.qaQueUser.qaSession.groupLeader.queUsrId=qaUsrResp.qaQueUser.queUsrId "; + private static final String LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH3 = " order by "; @SuppressWarnings("unchecked") @Override public List getResponsesForTablesorter(final Long toolContentId, final Long qaSessionId, - final Long questionId, final Long excludeUserId, int page, int size, int sorting, String searchString) { + final Long questionId, final Long excludeUserId, boolean isOnlyLeadersIncluded, int page, int size, int sorting, String searchString) { String sortingOrder; boolean useAverageRatingSort = false; switch (sorting) { @@ -172,7 +173,8 @@ String filteredSearchString = buildNameSearch(searchString, "qaUsrResp.qaQueUser"); String queryText = LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH1 + (filteredSearchString != null ? filteredSearchString : "") - + LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH2 + sortingOrder; + + (isOnlyLeadersIncluded ? LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH2 : "") + + LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH3 + sortingOrder; query = getSessionFactory().getCurrentSession().createQuery(queryText); } @@ -208,13 +210,14 @@ private static final String GET_COUNT_RESPONSES_FOR_SESSION_AND_QUESTION_WITH_NAME_SEARCH = "SELECT COUNT(*) FROM " + QaUsrResp.class.getName() + " AS r WHERE r.answer IS NOT NULL AND r.qaQueUser.qaSession.qaSessionId=? AND r.qaQuestion.uid=? AND r.qaQueUser.queUsrId!=?"; - + private static final String GET_COUNT_RESPONSES_FOR_SESSION_AND_QUESTION_WITH_NAME_SEARCH2 = " AND r.qaQueUser.qaSession.groupLeader.queUsrId=r.qaQueUser.queUsrId "; @Override public int getCountResponsesBySessionAndQuestion(final Long qaSessionId, final Long questionId, - final Long excludeUserId, String searchString) { + final Long excludeUserId, boolean isOnlyLeadersIncluded, String searchString) { String filteredSearchString = buildNameSearch(searchString, "r.qaQueUser"); - String queryText = GET_COUNT_RESPONSES_FOR_SESSION_AND_QUESTION_WITH_NAME_SEARCH; + String queryText = GET_COUNT_RESPONSES_FOR_SESSION_AND_QUESTION_WITH_NAME_SEARCH + + (isOnlyLeadersIncluded ? GET_COUNT_RESPONSES_FOR_SESSION_AND_QUESTION_WITH_NAME_SEARCH2 : ""); if (filteredSearchString != null) { queryText += filteredSearchString; } Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/IQaService.java =================================================================== diff -u -r2f725f8ef2aa09a2663b2335bf67213074426d11 -r6668d717bec2c56125019a19b256013f5c05269e --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/IQaService.java (.../IQaService.java) (revision 2f725f8ef2aa09a2663b2335bf67213074426d11) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/IQaService.java (.../IQaService.java) (revision 6668d717bec2c56125019a19b256013f5c05269e) @@ -106,10 +106,11 @@ List getResponseBySessionAndQuestion(final Long qaSessionId, final Long questionId); List getResponsesForTablesorter(final Long toolContentId, final Long qaSessionId, final Long questionId, - final Long excludeUserId, int page, int size, int sorting, String searchString); + final Long excludeUserId, boolean isOnlyLeadersIncluded, int page, int size, int sorting, + String searchString); int getCountResponsesBySessionAndQuestion(final Long qaSessionId, final Long questionId, final Long excludeUserId, - String searchString); + boolean isOnlyLeadersIncluded, String searchString); /** * Creates or updates response with answer submitted by user. Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java =================================================================== diff -u -r845f86723057fa2bdfaad640915c07b60e18b27b -r6668d717bec2c56125019a19b256013f5c05269e --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java (.../QaServicePOJO.java) (revision 845f86723057fa2bdfaad640915c07b60e18b27b) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java (.../QaServicePOJO.java) (revision 6668d717bec2c56125019a19b256013f5c05269e) @@ -295,15 +295,17 @@ @Override public List getResponsesForTablesorter(final Long toolContentId, final Long qaSessionId, - final Long questionId, final Long excludeUserId, int page, int size, int sorting, String searchString) { - return qaUsrRespDAO.getResponsesForTablesorter(toolContentId, qaSessionId, questionId, excludeUserId, page, - size, sorting, searchString); + final Long questionId, final Long excludeUserId, boolean isOnlyLeadersIncluded, int page, int size, + int sorting, String searchString) { + return qaUsrRespDAO.getResponsesForTablesorter(toolContentId, qaSessionId, questionId, excludeUserId, + isOnlyLeadersIncluded, page, size, sorting, searchString); } @Override public int getCountResponsesBySessionAndQuestion(final Long qaSessionId, final Long questionId, - final Long excludeUserId, String searchString) { - return qaUsrRespDAO.getCountResponsesBySessionAndQuestion(qaSessionId, questionId, excludeUserId, searchString); + final Long excludeUserId, boolean isOnlyLeadersIncluded, String searchString) { + return qaUsrRespDAO.getCountResponsesBySessionAndQuestion(qaSessionId, questionId, excludeUserId, + isOnlyLeadersIncluded, searchString); } @Override Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QaLearningAction.java =================================================================== diff -u -r13bd2bbd4fb43e5bb39e3a3883632dfd0b64ba25 -r6668d717bec2c56125019a19b256013f5c05269e --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QaLearningAction.java (.../QaLearningAction.java) (revision 13bd2bbd4fb43e5bb39e3a3883632dfd0b64ba25) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QaLearningAction.java (.../QaLearningAction.java) (revision 6668d717bec2c56125019a19b256013f5c05269e) @@ -1037,6 +1037,7 @@ boolean isAllowRateAnswers = WebUtil.readBooleanParam(request, "isAllowRateAnswers"); boolean isAllowRichEditor = WebUtil.readBooleanParam(request, "isAllowRichEditor"); + boolean isOnlyLeadersIncluded = WebUtil.readBooleanParam(request, "isOnlyLeadersIncluded", false); Long qaContentId = WebUtil.readLongParam(request, "qaContentId"); Long questionUid = WebUtil.readLongParam(request, "questionUid"); @@ -1067,13 +1068,13 @@ } List responses = QaLearningAction.qaService.getResponsesForTablesorter(qaContentId, qaSessionId, - questionUid, userId, page, size, sorting, searchString); + questionUid, userId, isOnlyLeadersIncluded, page, size, sorting, searchString); JSONObject responcedata = new JSONObject(); JSONArray rows = new JSONArray(); responcedata.put("total_rows", QaLearningAction.qaService.getCountResponsesBySessionAndQuestion(qaSessionId, - questionUid, userId, searchString)); + questionUid, userId, isOnlyLeadersIncluded, searchString)); // handle rating criterias - even though we may have searched on ratings earlier we can't use the average ratings // calculated as they may have been averages over more than one criteria. Index: lams_tool_laqa/web/monitoring/MonitoringMaincontent.jsp =================================================================== diff -u -r84f6a2003265dbadd4de5a08ebf0e158af1e331f -r6668d717bec2c56125019a19b256013f5c05269e --- lams_tool_laqa/web/monitoring/MonitoringMaincontent.jsp (.../MonitoringMaincontent.jsp) (revision 84f6a2003265dbadd4de5a08ebf0e158af1e331f) +++ lams_tool_laqa/web/monitoring/MonitoringMaincontent.jsp (.../MonitoringMaincontent.jsp) (revision 6668d717bec2c56125019a19b256013f5c05269e) @@ -122,7 +122,7 @@ // {sortList:col} adds the sortList to the url into a "col" array, and {filterList:fcol} adds // the filterList to the url into an "fcol" array. // So a sortList = [[2,0],[3,0]] becomes "&col[2]=0&col[3]=0" in the url - ajaxUrl : "?method=getResponses&page={page}&size={size}&{sortList:column}&{filterList:fcol}&isMonitoring=true&isAllowRateAnswers=${qaContent.allowRateAnswers}&isAllowRichEditor=${qaContent.allowRichEditor}&qaContentId=${qaContent.qaContentId}&qaSessionId=" + $(this).attr('data-session-id') + "&questionUid=" + $(this).attr('data-question-uid') + "&userId=" + $("#userID").val() + "&reqID=" + (new Date()).getTime(), + ajaxUrl : "?method=getResponses&page={page}&size={size}&{sortList:column}&{filterList:fcol}&isMonitoring=true&isAllowRateAnswers=${qaContent.allowRateAnswers}&isAllowRichEditor=${qaContent.allowRichEditor}&isOnlyLeadersIncluded=${qaContent.useSelectLeaderToolOuput}&qaContentId=${qaContent.qaContentId}&qaSessionId=" + $(this).attr('data-session-id') + "&questionUid=" + $(this).attr('data-question-uid') + "&userId=" + $("#userID").val() + "&reqID=" + (new Date()).getTime(), ajaxProcessing: function (data) { if (data && data.hasOwnProperty('rows')) { var rows = [],