Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaUsrRespDAO.java =================================================================== diff -u -r26ea61eae29934bddf4595c3c1aededeeeaca933 -rb36769f296c331b5d767e03f579068c7a1df5541 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaUsrRespDAO.java (.../IQaUsrRespDAO.java) (revision 26ea61eae29934bddf4595c3c1aededeeeaca933) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaUsrRespDAO.java (.../IQaUsrRespDAO.java) (revision b36769f296c331b5d767e03f579068c7a1df5541) @@ -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 -r26ea61eae29934bddf4595c3c1aededeeeaca933 -rb36769f296c331b5d767e03f579068c7a1df5541 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaUsrRespDAO.java (.../QaUsrRespDAO.java) (revision 26ea61eae29934bddf4595c3c1aededeeeaca933) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaUsrRespDAO.java (.../QaUsrRespDAO.java) (revision b36769f296c331b5d767e03f579068c7a1df5541) @@ -122,12 +122,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) { @@ -176,7 +177,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 = getSession().createQuery(queryText); } @@ -212,13 +214,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 -r26ea61eae29934bddf4595c3c1aededeeeaca933 -rb36769f296c331b5d767e03f579068c7a1df5541 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/IQaService.java (.../IQaService.java) (revision 26ea61eae29934bddf4595c3c1aededeeeaca933) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/IQaService.java (.../IQaService.java) (revision b36769f296c331b5d767e03f579068c7a1df5541) @@ -108,10 +108,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 -r09cfa0aadc57850149bb4c6fda51a23c053df2a6 -rb36769f296c331b5d767e03f579068c7a1df5541 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java (.../QaServicePOJO.java) (revision 09cfa0aadc57850149bb4c6fda51a23c053df2a6) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java (.../QaServicePOJO.java) (revision b36769f296c331b5d767e03f579068c7a1df5541) @@ -309,15 +309,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 -r05cbfc53d322e13bf63d56ea4f3892833029453c -rb36769f296c331b5d767e03f579068c7a1df5541 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QaLearningAction.java (.../QaLearningAction.java) (revision 05cbfc53d322e13bf63d56ea4f3892833029453c) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QaLearningAction.java (.../QaLearningAction.java) (revision b36769f296c331b5d767e03f579068c7a1df5541) @@ -1039,6 +1039,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"); @@ -1069,13 +1070,13 @@ } List responses = qaService.getResponsesForTablesorter(qaContentId, qaSessionId, questionUid, userId, - page, size, sorting, searchString); + isOnlyLeadersIncluded, page, size, sorting, searchString); JSONObject responcedata = new JSONObject(); JSONArray rows = new JSONArray(); - responcedata.put("total_rows", - qaService.getCountResponsesBySessionAndQuestion(qaSessionId, questionUid, userId, searchString)); + responcedata.put("total_rows", qaService.getCountResponsesBySessionAndQuestion(qaSessionId, 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 -rfc9ea4d27882b0a15cfae1d3fc5983ecb0f71020 -rb36769f296c331b5d767e03f579068c7a1df5541 --- lams_tool_laqa/web/monitoring/MonitoringMaincontent.jsp (.../MonitoringMaincontent.jsp) (revision fc9ea4d27882b0a15cfae1d3fc5983ecb0f71020) +++ lams_tool_laqa/web/monitoring/MonitoringMaincontent.jsp (.../MonitoringMaincontent.jsp) (revision b36769f296c331b5d767e03f579068c7a1df5541) @@ -171,7 +171,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 = [],