Index: lams_tool_scratchie/conf/language/lams/ApplicationResources.properties =================================================================== RCS file: /usr/local/cvsroot/lams_tool_scratchie/conf/language/lams/ApplicationResources.properties,v diff -u -r1.5.2.11 -r1.5.2.12 --- lams_tool_scratchie/conf/language/lams/ApplicationResources.properties 9 Mar 2017 00:11:21 -0000 1.5.2.11 +++ lams_tool_scratchie/conf/language/lams/ApplicationResources.properties 9 Jun 2017 03:44:42 -0000 1.5.2.12 @@ -202,6 +202,12 @@ label.waiting.for.leader.submit.burning.questions =Time limit set by teacher is expired. Please wait until a group leader submits burning questions. label.authoring.advanced.shuffle.items =Shuffle questions label.summary.downloaded =Excel file downloaded. +label.number.groups.finished=Number of Groups Finished +label.graph.help=In the graph(s) below, click on a bar in the graph and then use your mouse wheel to zoom in and out of the graph. Once you zoom in, the grey selection in the bottom graph can be dragged left or right to show a different set of marks. +label.lowest.mark=Lowest Mark: +label.highest.mark=Highest Mark: +label.marks=Marks +label.number.groups.in.mark.range=Number of Groups in Mark Range +label.average.mark =Average mark - #======= End labels: Exported 196 labels for en AU ===== Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dao/ScratchieSessionDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dao/ScratchieSessionDAO.java,v diff -u -r1.1.4.3 -r1.1.4.4 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dao/ScratchieSessionDAO.java 11 May 2016 07:38:00 -0000 1.1.4.3 +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dao/ScratchieSessionDAO.java 9 Jun 2017 03:44:41 -0000 1.1.4.4 @@ -42,5 +42,10 @@ void delete(ScratchieSession session); void deleteBySessionId(Long toolSessionId); + + List getRawLeaderMarksByToolContentId(Long toolContentId); + Object[] getStatsMarksForLeaders(Long toolContentId); + + } Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dao/hibernate/ScratchieSessionDAOHibernate.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dao/hibernate/ScratchieSessionDAOHibernate.java,v diff -u -r1.2.2.5 -r1.2.2.6 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dao/hibernate/ScratchieSessionDAOHibernate.java 11 May 2016 07:38:01 -0000 1.2.2.5 +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dao/hibernate/ScratchieSessionDAOHibernate.java 9 Jun 2017 03:44:42 -0000 1.2.2.6 @@ -28,6 +28,10 @@ import java.util.Set; import java.util.TreeSet; +import org.hibernate.Query; +import org.hibernate.SQLQuery; +import org.hibernate.type.FloatType; +import org.hibernate.type.IntegerType; import org.lamsfoundation.lams.dao.hibernate.LAMSBaseDAO; import org.lamsfoundation.lams.tool.scratchie.dao.ScratchieSessionDAO; import org.lamsfoundation.lams.tool.scratchie.model.ScratchieSession; @@ -42,6 +46,15 @@ private static final String FIND_BY_CONTENT_ID = "from " + ScratchieSession.class.getName() + " as p where p.scratchie.contentId=? order by p.sessionName asc"; + private static final String LOAD_MARKS = "SELECT mark FROM tl_lascrt11_session session " + + " JOIN tl_lascrt11_scratchie scratchie ON session.scratchie_uid = scratchie.uid " + + " WHERE session.scratching_finished = 1 AND scratchie.content_id = :toolContentId"; + private static final String FIND_MARK_STATS = "SELECT MIN(mark) min_grade, AVG(mark) avg_grade, MAX(mark) max_grade, COUNT(mark) num_complete " + + " FROM tl_lascrt11_session session " + + " JOIN tl_lascrt11_scratchie scratchie ON session.scratchie_uid = scratchie.uid " + + " WHERE session.scratching_finished = 1 AND scratchie.content_id = :toolContentId"; + + @SuppressWarnings("rawtypes") @Override public ScratchieSession getSessionBySessionId(Long sessionId) { List list = doFind(FIND_BY_SESSION_ID, sessionId); @@ -71,5 +84,33 @@ public void deleteBySessionId(Long toolSessionId) { this.removeObject(ScratchieSession.class, toolSessionId); } + + @SuppressWarnings("unchecked") + @Override + public List getRawLeaderMarksByToolContentId(Long toolContentId) { + SQLQuery query = getSession().createSQLQuery(LOAD_MARKS); + query.setLong("toolContentId", toolContentId); + List list = query.list(); + return list; + } + + @Override + public Object[] getStatsMarksForLeaders(Long toolContentId) { + Query query = getSession().createSQLQuery(FIND_MARK_STATS) + .addScalar("min_grade", FloatType.INSTANCE) + .addScalar("avg_grade", FloatType.INSTANCE) + .addScalar("max_grade", FloatType.INSTANCE) + .addScalar("num_complete", IntegerType.INSTANCE); + query.setLong("toolContentId", toolContentId); + @SuppressWarnings("rawtypes") + List list = query.list(); + if ((list == null) || (list.size() == 0)) { + return null; + } else { + return (Object[]) list.get(0); + } + } + + } Fisheye: Tag 1.1 refers to a dead (removed) revision in file `lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dto/LeaderResultsDTO.java'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/IScratchieService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/IScratchieService.java,v diff -u -r1.29.2.9 -r1.29.2.10 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/IScratchieService.java 4 Apr 2017 12:25:41 -0000 1.29.2.9 +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/IScratchieService.java 9 Jun 2017 03:44:42 -0000 1.29.2.10 @@ -34,6 +34,7 @@ import org.lamsfoundation.lams.notebook.model.NotebookEntry; import org.lamsfoundation.lams.tool.scratchie.dto.BurningQuestionItemDTO; import org.lamsfoundation.lams.tool.scratchie.dto.GroupSummary; +import org.lamsfoundation.lams.tool.scratchie.dto.LeaderResultsDTO; import org.lamsfoundation.lams.tool.scratchie.dto.ReflectDTO; import org.lamsfoundation.lams.tool.scratchie.model.Scratchie; import org.lamsfoundation.lams.tool.scratchie.model.ScratchieAnswer; @@ -369,4 +370,11 @@ ScratchieConfigItem getConfigItem(String key); void saveOrUpdateScratchieConfigItem(ScratchieConfigItem item); + + /** Get the raw marks for display in a graph in monitoring */ + List getMarksArray(Long contentId); + + /** Get the statistics such as average, max, min for the marks. Used in monitoring */ + LeaderResultsDTO getLeaderResultsDTOForLeaders(Long contentId); + } Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java,v diff -u -r1.51.2.29 -r1.51.2.30 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java 4 Apr 2017 12:25:41 -0000 1.51.2.29 +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java 9 Jun 2017 03:44:42 -0000 1.51.2.30 @@ -38,6 +38,7 @@ import java.util.LinkedHashSet; import java.util.LinkedList; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.SortedMap; @@ -82,6 +83,7 @@ import org.lamsfoundation.lams.tool.scratchie.dto.BurningQuestionDTO; import org.lamsfoundation.lams.tool.scratchie.dto.BurningQuestionItemDTO; import org.lamsfoundation.lams.tool.scratchie.dto.GroupSummary; +import org.lamsfoundation.lams.tool.scratchie.dto.LeaderResultsDTO; import org.lamsfoundation.lams.tool.scratchie.dto.ReflectDTO; import org.lamsfoundation.lams.tool.scratchie.model.Scratchie; import org.lamsfoundation.lams.tool.scratchie.model.ScratchieAnswer; @@ -102,6 +104,7 @@ import org.lamsfoundation.lams.util.ExcelCell; import org.lamsfoundation.lams.util.JsonUtil; import org.lamsfoundation.lams.util.MessageService; +import org.lamsfoundation.lams.util.NumberUtil; import org.lamsfoundation.lams.util.audit.IAuditService; import org.quartz.JobBuilder; import org.quartz.JobDetail; @@ -1585,6 +1588,24 @@ return dataToExport; } + @Override + public List getMarksArray(Long toolContentId) { + return scratchieSessionDao.getRawLeaderMarksByToolContentId(toolContentId); + } + + @Override + public LeaderResultsDTO getLeaderResultsDTOForLeaders(Long contentId) { + LeaderResultsDTO newDto = new LeaderResultsDTO(contentId); + Object[] markStats = scratchieSessionDao.getStatsMarksForLeaders(contentId); + if ( markStats != null ) { + newDto.setMinMark(markStats[0] != null ? NumberUtil.formatLocalisedNumber((Float)markStats[0], (Locale)null, 2) : "0.00"); + newDto.setAvgMark(markStats[1] != null ? NumberUtil.formatLocalisedNumber((Float)markStats[1], (Locale)null, 2) : "0.00"); + newDto.setMaxMark(markStats[2] != null ? NumberUtil.formatLocalisedNumber((Float)markStats[2], (Locale)null, 2) : "0.00"); + newDto.setNumberGroupsLeaderFinished((Integer)markStats[3]); + } + return newDto; + } + // ***************************************************************************** // private methods // ***************************************************************************** Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/MonitoringAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/MonitoringAction.java,v diff -u -r1.21.2.7 -r1.21.2.8 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/MonitoringAction.java 8 Mar 2017 12:49:51 -0000 1.21.2.7 +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/MonitoringAction.java 9 Jun 2017 03:44:42 -0000 1.21.2.8 @@ -45,9 +45,12 @@ import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; +import org.apache.tomcat.util.json.JSONException; +import org.apache.tomcat.util.json.JSONObject; import org.lamsfoundation.lams.tool.scratchie.ScratchieConstants; import org.lamsfoundation.lams.tool.scratchie.dto.BurningQuestionItemDTO; import org.lamsfoundation.lams.tool.scratchie.dto.GroupSummary; +import org.lamsfoundation.lams.tool.scratchie.dto.LeaderResultsDTO; import org.lamsfoundation.lams.tool.scratchie.dto.ReflectDTO; import org.lamsfoundation.lams.tool.scratchie.model.Scratchie; import org.lamsfoundation.lams.tool.scratchie.model.ScratchieAnswer; @@ -73,7 +76,7 @@ @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, - HttpServletResponse response) throws IOException, ServletException { + HttpServletResponse response) throws IOException, ServletException, JSONException { String param = mapping.getParameter(); request.setAttribute("initialTabId", WebUtil.readLongParam(request, AttributeNames.PARAM_CURRENT_TAB, true)); @@ -93,6 +96,12 @@ if (param.equals("exportExcel")) { return exportExcel(mapping, form, request, response); } + if (param.equals("getMarkChartData")) { + return getMarkChartData(mapping, form, request, response); + } + if (param.equals("statistic")) { + return statistic(mapping, form, request, response); + } return mapping.findForward(ScratchieConstants.ERROR); } @@ -269,6 +278,54 @@ return null; } + /** + * Get the mark summary with data arranged in bands. Can be displayed graphically or in a table. + */ + private ActionForward getMarkChartData(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse res) throws IOException, ServletException, JSONException { + + initializeScratchieService(); + String sessionMapID = request.getParameter(ScratchieConstants.ATTR_SESSION_MAP_ID); + SessionMap sessionMap = (SessionMap) request.getSession() + .getAttribute(sessionMapID); + request.setAttribute(ScratchieConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); + + Scratchie scratchie = (Scratchie) sessionMap.get(ScratchieConstants.ATTR_SCRATCHIE); + List results = null; + + if ( scratchie != null ) { + results = service.getMarksArray(scratchie.getContentId()); + } + + JSONObject responseJSON = new JSONObject(); + if ( results != null ) + responseJSON.put("data", results); + else + responseJSON.put("data", new Float[0]); + + res.setContentType("application/json;charset=utf-8"); + res.getWriter().write(responseJSON.toString()); + return null; + + } + + private ActionForward statistic(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + + initializeScratchieService(); + String sessionMapID = request.getParameter(ScratchieConstants.ATTR_SESSION_MAP_ID); + SessionMap sessionMap = (SessionMap) request.getSession() + .getAttribute(sessionMapID); + request.setAttribute(ScratchieConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); + + Scratchie scratchie = (Scratchie) sessionMap.get(ScratchieConstants.ATTR_SCRATCHIE); + if ( scratchie != null ) { + LeaderResultsDTO leaderDto = service.getLeaderResultsDTOForLeaders(scratchie.getContentId()); + sessionMap.put("leaderDto", leaderDto); + } + return mapping.findForward(ScratchieConstants.SUCCESS); + } + // ************************************************************************************* // Private method // ************************************************************************************* Index: lams_tool_scratchie/web/WEB-INF/struts-config.xml =================================================================== RCS file: /usr/local/cvsroot/lams_tool_scratchie/web/WEB-INF/Attic/struts-config.xml,v diff -u -r1.1.2.3 -r1.1.2.4 --- lams_tool_scratchie/web/WEB-INF/struts-config.xml 6 Dec 2016 09:02:25 -0000 1.1.2.3 +++ lams_tool_scratchie/web/WEB-INF/struts-config.xml 9 Jun 2017 03:44:42 -0000 1.1.2.4 @@ -296,6 +296,16 @@ type="org.lamsfoundation.lams.tool.scratchie.web.action.MonitoringAction" parameter="exportExcel" > + + + + + + + @@ -30,6 +31,10 @@ + + + + + - + Index: lams_tool_scratchie/web/pages/monitoring/statistic.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_scratchie/web/pages/monitoring/statistic.jsp,v diff -u -r1.5.2.1 -r1.5.2.2 --- lams_tool_scratchie/web/pages/monitoring/statistic.jsp 1 Jun 2016 04:21:36 -0000 1.5.2.1 +++ lams_tool_scratchie/web/pages/monitoring/statistic.jsp 9 Jun 2017 03:44:41 -0000 1.5.2.2 @@ -1,60 +1,5 @@ <%@ include file="/common/taglibs.jsp"%> - - - - - - - - - - - - - - -
-
- - ${summary.sessionName} - -
- - - - - - - - - - - - - - - - -
- # - - - - -
- ${status.index + 1} - - - - - - - ${summary.mark} - -
- - -
-
- -
- +
+<%-- Do not include anything to start with as we do not want to display the charts yet. +--%> +
\ No newline at end of file Fisheye: Tag 1.1 refers to a dead (removed) revision in file `lams_tool_scratchie/web/pages/monitoring/parts/statisticpart.jsp'. Fisheye: No comparison available. Pass `N' to diff?