Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaUsrRespDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaUsrRespDAO.java,v diff -u -r1.21 -r1.22 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaUsrRespDAO.java 11 May 2016 07:53:40 -0000 1.21 +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaUsrRespDAO.java 13 Jul 2016 11:25:33 -0000 1.22 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaUsrRespDAO.java,v diff -u -r1.30 -r1.31 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaUsrRespDAO.java 11 May 2016 07:53:41 -0000 1.30 +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaUsrRespDAO.java 13 Jul 2016 11:25:33 -0000 1.31 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/IQaService.java,v diff -u -r1.78 -r1.79 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/IQaService.java 11 May 2016 07:53:40 -0000 1.78 +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/IQaService.java 13 Jul 2016 11:25:33 -0000 1.79 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java,v diff -u -r1.139 -r1.140 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java 4 Jul 2016 09:27:54 -0000 1.139 +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java 13 Jul 2016 11:25:33 -0000 1.140 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QaLearningAction.java,v diff -u -r1.78 -r1.79 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QaLearningAction.java 6 Jul 2016 05:51:13 -0000 1.78 +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QaLearningAction.java 13 Jul 2016 11:25:33 -0000 1.79 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_tool_laqa/web/monitoring/MonitoringMaincontent.jsp,v diff -u -r1.51 -r1.52 --- lams_tool_laqa/web/monitoring/MonitoringMaincontent.jsp 8 Apr 2016 13:05:53 -0000 1.51 +++ lams_tool_laqa/web/monitoring/MonitoringMaincontent.jsp 13 Jul 2016 11:25:33 -0000 1.52 @@ -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 = [],