Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McAppConstants.java =================================================================== diff -u -r2f725f8ef2aa09a2663b2335bf67213074426d11 -r1d3ff83fba3454c6e0e4139dc15ad6cecdfa389c --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McAppConstants.java (.../McAppConstants.java) (revision 2f725f8ef2aa09a2663b2335bf67213074426d11) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McAppConstants.java (.../McAppConstants.java) (revision 1d3ff83fba3454c6e0e4139dc15ad6cecdfa389c) @@ -271,6 +271,12 @@ public static final String MODE = "mode"; public static final String LEARNING_MODE = "learningMode"; public static final String REFLECT = "reflect"; + + //output definitions + public static final String ATTR_ACTIVITY_EVALUATION = "activityEvaluation"; + public static final String ATTR_TOOL_OUTPUT_DEFINITIONS = "toolOutputDefinitions"; + public static final String OUTPUT_NAME_LEARNER_MARK = "learner.mark"; + public static final String OUTPUT_NAME_LEARNER_ALL_CORRECT = "learner.all.correct"; /* * exception constants Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/IMcUsrAttemptDAO.java =================================================================== diff -u -r2f725f8ef2aa09a2663b2335bf67213074426d11 -r1d3ff83fba3454c6e0e4139dc15ad6cecdfa389c --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/IMcUsrAttemptDAO.java (.../IMcUsrAttemptDAO.java) (revision 2f725f8ef2aa09a2663b2335bf67213074426d11) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/IMcUsrAttemptDAO.java (.../IMcUsrAttemptDAO.java) (revision 1d3ff83fba3454c6e0e4139dc15ad6cecdfa389c) @@ -24,6 +24,7 @@ import java.util.List; +import org.lamsfoundation.lams.tool.mc.dto.ToolOutputDTO; import org.lamsfoundation.lams.tool.mc.pojos.McUsrAttempt; /** @@ -101,5 +102,13 @@ int getUserTotalMark(final Long userUid); McUsrAttempt getUserAttemptByUid(Long uid); + + /** + * Returns all existing total marks for users belonging to tool content. + * + * @param toolContentId + * @return + */ + List getLearnerMarksByContentId(Long toolContentId); } Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/hibernate/McUsrAttemptDAO.java =================================================================== diff -u -r2f725f8ef2aa09a2663b2335bf67213074426d11 -r1d3ff83fba3454c6e0e4139dc15ad6cecdfa389c --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/hibernate/McUsrAttemptDAO.java (.../McUsrAttemptDAO.java) (revision 2f725f8ef2aa09a2663b2335bf67213074426d11) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/hibernate/McUsrAttemptDAO.java (.../McUsrAttemptDAO.java) (revision 1d3ff83fba3454c6e0e4139dc15ad6cecdfa389c) @@ -22,11 +22,14 @@ package org.lamsfoundation.lams.tool.mc.dao.hibernate; +import java.util.ArrayList; import java.util.List; import org.hibernate.FlushMode; import org.lamsfoundation.lams.dao.hibernate.LAMSBaseDAO; import org.lamsfoundation.lams.tool.mc.dao.IMcUsrAttemptDAO; +import org.lamsfoundation.lams.tool.mc.dto.ToolOutputDTO; +import org.lamsfoundation.lams.tool.mc.pojos.McQueUsr; import org.lamsfoundation.lams.tool.mc.pojos.McUsrAttempt; import org.springframework.stereotype.Repository; @@ -132,5 +135,32 @@ } return ((Number) list.get(0)).intValue(); } + + @Override + public List getLearnerMarksByContentId(Long toolContentId) { + + final String FIND_MARKS_FOR_CONTENT_ID = "SELECT user.queUsrId, user.lastAttemptTotalMark FROM " + + McQueUsr.class.getName() + + " user WHERE user.mcSession.mcContent.mcContentId = ? AND user.responseFinalised = true"; + List list = (List) doFind(FIND_MARKS_FOR_CONTENT_ID, new Object[] { toolContentId }); + + List toolOutputDtos = new ArrayList(); + if (list != null && list.size() > 0) { + for (Object[] element : list) { + + Long userId = ((Number) element[0]).longValue(); + Integer grade = (Integer) element[1]; + + ToolOutputDTO toolOutputDto = new ToolOutputDTO(); + toolOutputDto.setUserId(userId.intValue()); + toolOutputDto.setMark(grade); + toolOutputDtos.add(toolOutputDto); + } + + } + + return toolOutputDtos; + } + } \ No newline at end of file Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dto/ToolOutputDTO.java =================================================================== diff -u --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dto/ToolOutputDTO.java (revision 0) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dto/ToolOutputDTO.java (revision 1d3ff83fba3454c6e0e4139dc15ad6cecdfa389c) @@ -0,0 +1,29 @@ +package org.lamsfoundation.lams.tool.mc.dto; + +import org.lamsfoundation.lams.tool.ToolOutputValue; + +/** + * An output for a tool. + */ +public class ToolOutputDTO { + + private Integer userId; + private Integer mark; + + public Integer getMark() { + return mark; + } + + public void setMark(Integer mark) { + this.mark = mark; + } + + public Integer getUserId() { + return userId; + } + + public void setUserId(Integer userId) { + this.userId = userId; + } +} + Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/mcApplicationContext.xml =================================================================== diff -u -r9e03de2ca9f74e42402a76b8d45e0a13b637d9de -r1d3ff83fba3454c6e0e4139dc15ad6cecdfa389c --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/mcApplicationContext.xml (.../mcApplicationContext.xml) (revision 9e03de2ca9f74e42402a76b8d45e0a13b637d9de) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/mcApplicationContext.xml (.../mcApplicationContext.xml) (revision 1d3ff83fba3454c6e0e4139dc15ad6cecdfa389c) @@ -96,6 +96,7 @@ PROPAGATION_REQUIRED,-McApplicationException PROPAGATION_REQUIRED,-McApplicationException PROPAGATION_REQUIRED, -McApplicationException + PROPAGATION_REQUIRED,-McApplicationException PROPAGATION_REQUIRED,-McApplicationException PROPAGATION_REQUIRED, -MccpApplicationException PROPAGATION_REQUIRED,-McApplicationException Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/IMcService.java =================================================================== diff -u -r2f725f8ef2aa09a2663b2335bf67213074426d11 -r1d3ff83fba3454c6e0e4139dc15ad6cecdfa389c --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/IMcService.java (.../IMcService.java) (revision 2f725f8ef2aa09a2663b2335bf67213074426d11) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/IMcService.java (.../IMcService.java) (revision 1d3ff83fba3454c6e0e4139dc15ad6cecdfa389c) @@ -38,6 +38,7 @@ import org.lamsfoundation.lams.tool.mc.McSessionMarkDTO; import org.lamsfoundation.lams.tool.mc.McUserMarkDTO; import org.lamsfoundation.lams.tool.mc.ReflectionDTO; +import org.lamsfoundation.lams.tool.mc.dto.ToolOutputDTO; import org.lamsfoundation.lams.tool.mc.pojos.McContent; import org.lamsfoundation.lams.tool.mc.pojos.McOptsContent; import org.lamsfoundation.lams.tool.mc.pojos.McQueContent; @@ -131,6 +132,8 @@ void updateMcOptionsContent(McOptsContent mcOptsContent) throws McApplicationException; McUsrAttempt getUserAttemptByQuestion(Long queUsrUid, Long mcQueContentId) throws McApplicationException; + + List getLearnerMarksByContentId(Long toolContentId); void copyToolContent(Long fromContentId, Long toContentId) throws ToolException; @@ -173,6 +176,18 @@ boolean isGroupedActivity(long toolContentID); /** + * Get the definitions for possible output for an activity, based on the toolContentId. These may be definitions + * that are always available for the tool (e.g. number of marks for Multiple Choice) or a custom definition created + * for a particular activity such as the answer to the third question contains the word Koala and hence the need for + * the toolContentId + * + * @return SortedMap of ToolOutputDefinitions with the key being the name of each definition + */ + String getActivityEvaluation(Long toolContentId); + + void setActivityEvaluation(Long toolContentId, String toolOutputDefinition); + + /** * @param mcContent * @param user * user; pass null if there is no need to populate previous answers Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/MCOutputFactory.java =================================================================== diff -u -r2f725f8ef2aa09a2663b2335bf67213074426d11 -r1d3ff83fba3454c6e0e4139dc15ad6cecdfa389c --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/MCOutputFactory.java (.../MCOutputFactory.java) (revision 2f725f8ef2aa09a2663b2335bf67213074426d11) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/MCOutputFactory.java (.../MCOutputFactory.java) (revision 1d3ff83fba3454c6e0e4139dc15ad6cecdfa389c) @@ -23,14 +23,18 @@ package org.lamsfoundation.lams.tool.mc.service; +import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Set; import java.util.SortedMap; import java.util.TreeMap; import org.lamsfoundation.lams.tool.OutputFactory; import org.lamsfoundation.lams.tool.ToolOutput; import org.lamsfoundation.lams.tool.ToolOutputDefinition; +import org.lamsfoundation.lams.tool.mc.McAppConstants; +import org.lamsfoundation.lams.tool.mc.dto.ToolOutputDTO; import org.lamsfoundation.lams.tool.mc.pojos.McContent; import org.lamsfoundation.lams.tool.mc.pojos.McOptsContent; import org.lamsfoundation.lams.tool.mc.pojos.McQueContent; @@ -40,9 +44,6 @@ public class MCOutputFactory extends OutputFactory { - protected static final String OUTPUT_NAME_LEARNER_MARK = "learner.mark"; - protected static final String OUTPUT_NAME_LEARNER_ALL_CORRECT = "learner.all.correct"; - /** * @see org.lamsfoundation.lams.tool.OutputDefinitionFactory#getToolOutputDefinitions(java.lang.Object) */ @@ -51,15 +52,15 @@ int definitionType) { TreeMap definitionMap = new TreeMap(); - ToolOutputDefinition definition = buildBooleanOutputDefinition(OUTPUT_NAME_LEARNER_ALL_CORRECT); - definitionMap.put(OUTPUT_NAME_LEARNER_ALL_CORRECT, definition); + ToolOutputDefinition definition = buildBooleanOutputDefinition(McAppConstants.OUTPUT_NAME_LEARNER_ALL_CORRECT); + definitionMap.put(McAppConstants.OUTPUT_NAME_LEARNER_ALL_CORRECT, definition); if (toolContentObject != null) { McContent content = (McContent) toolContentObject; - definition = buildRangeDefinition(OUTPUT_NAME_LEARNER_MARK, new Long(0), + definition = buildRangeDefinition(McAppConstants.OUTPUT_NAME_LEARNER_MARK, new Long(0), new Long(content.getTotalMarksPossible().longValue()), true); - definitionMap.put(OUTPUT_NAME_LEARNER_MARK, definition); + definitionMap.put(McAppConstants.OUTPUT_NAME_LEARNER_MARK, definition); } else { log.error( "Unable to build content based output definitions for Multiple Choice as no tool content object supplied. Only including the definitions that do not need any content."); @@ -79,11 +80,12 @@ McQueUsr queUser = mcService.getMcUserBySession(learnerId, session.getUid()); if (queUser != null) { - if (names == null || names.contains(OUTPUT_NAME_LEARNER_MARK)) { - output.put(OUTPUT_NAME_LEARNER_MARK, getLearnerMark(queUser)); + if (names == null || names.contains(McAppConstants.OUTPUT_NAME_LEARNER_MARK)) { + output.put(McAppConstants.OUTPUT_NAME_LEARNER_MARK, getLearnerMark(queUser)); } - if (names == null || names.contains(OUTPUT_NAME_LEARNER_ALL_CORRECT)) { - output.put(OUTPUT_NAME_LEARNER_ALL_CORRECT, getLearnerAllCorrect(mcService, queUser)); + if (names == null || names.contains(McAppConstants.OUTPUT_NAME_LEARNER_ALL_CORRECT)) { + output.put(McAppConstants.OUTPUT_NAME_LEARNER_ALL_CORRECT, + getLearnerAllCorrect(mcService, queUser)); } } } @@ -98,17 +100,64 @@ McQueUsr queUser = mcService.getMcUserBySession(learnerId, session.getUid()); if (queUser != null) { - if (name.equals(OUTPUT_NAME_LEARNER_MARK)) { + if (name.equals(McAppConstants.OUTPUT_NAME_LEARNER_MARK)) { return getLearnerMark(queUser); - } else if (name.equals(OUTPUT_NAME_LEARNER_ALL_CORRECT)) { + } else if (name.equals(McAppConstants.OUTPUT_NAME_LEARNER_ALL_CORRECT)) { return getLearnerAllCorrect(mcService, queUser); } } } } return null; } + + public List getToolOutputs(String name, IMcService assessmentService, Long toolContentId) { + if ((name != null) && (toolContentId != null)) { + if (name.equals(McAppConstants.OUTPUT_NAME_LEARNER_MARK)) { + List toolOutputDtos = assessmentService.getLearnerMarksByContentId(toolContentId); + + //convert toolOutputDtos to toolOutputs + List toolOutputs = new ArrayList(); + for (ToolOutputDTO toolOutputDto : toolOutputDtos) { + float totalMark = toolOutputDto.getMark() == null ? 0 : toolOutputDto.getMark().floatValue(); + + ToolOutput toolOutput = new ToolOutput(McAppConstants.OUTPUT_NAME_LEARNER_MARK, + getI18NText(McAppConstants.OUTPUT_NAME_LEARNER_MARK, true), totalMark); + toolOutput.setUserId(toolOutputDto.getUserId().intValue()); + toolOutputs.add(toolOutput); + } + + return toolOutputs; + + } else if (name.equals(McAppConstants.OUTPUT_NAME_LEARNER_ALL_CORRECT)) { + List toolOutputDtos = assessmentService.getLearnerMarksByContentId(toolContentId); + + //calculate max possible total mark + int maxMark = 0; + McContent mcContent = assessmentService.getMcContent(toolContentId); + for (McQueContent question : (Set)mcContent.getMcQueContents()) { + maxMark += question.getMark(); + } + + //convert toolOutputDtos to toolOutputs + List toolOutputs = new ArrayList(); + for (ToolOutputDTO toolOutputDto : toolOutputDtos) { + float totalMark = toolOutputDto.getMark() == null ? 0 : toolOutputDto.getMark().floatValue(); + boolean isAllQuestionAnswersCorrect = totalMark == maxMark; + + ToolOutput toolOutput = new ToolOutput(McAppConstants.OUTPUT_NAME_LEARNER_ALL_CORRECT, + getI18NText(McAppConstants.OUTPUT_NAME_LEARNER_ALL_CORRECT, true), isAllQuestionAnswersCorrect); + toolOutput.setUserId(toolOutputDto.getUserId().intValue()); + toolOutputs.add(toolOutput); + } + + return toolOutputs; + } + } + return null; + } + /** * Get the mark for a specific user. This gets the mark associated with the last attempt. Will always return a * ToolOutput object. @@ -120,8 +169,8 @@ } else { mark = new Long(0); } - return new ToolOutput(MCOutputFactory.OUTPUT_NAME_LEARNER_MARK, - getI18NText(MCOutputFactory.OUTPUT_NAME_LEARNER_MARK, true), mark); + return new ToolOutput(McAppConstants.OUTPUT_NAME_LEARNER_MARK, + getI18NText(McAppConstants.OUTPUT_NAME_LEARNER_MARK, true), mark); } /** @@ -130,8 +179,8 @@ */ private ToolOutput getLearnerAllCorrect(IMcService mcService, McQueUsr queUser) { boolean allCorrect = allQuestionsCorrect(mcService, queUser); - return new ToolOutput(MCOutputFactory.OUTPUT_NAME_LEARNER_ALL_CORRECT, - getI18NText(MCOutputFactory.OUTPUT_NAME_LEARNER_ALL_CORRECT, true), allCorrect); + return new ToolOutput(McAppConstants.OUTPUT_NAME_LEARNER_ALL_CORRECT, + getI18NText(McAppConstants.OUTPUT_NAME_LEARNER_ALL_CORRECT, true), allCorrect); } // written to cope with more than one correct option for each question but only tested with Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java =================================================================== diff -u -r2f725f8ef2aa09a2663b2335bf67213074426d11 -r1d3ff83fba3454c6e0e4139dc15ad6cecdfa389c --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java (.../McServicePOJO.java) (revision 2f725f8ef2aa09a2663b2335bf67213074426d11) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java (.../McServicePOJO.java) (revision 1d3ff83fba3454c6e0e4139dc15ad6cecdfa389c) @@ -93,6 +93,7 @@ import org.lamsfoundation.lams.tool.mc.dao.IMcSessionDAO; import org.lamsfoundation.lams.tool.mc.dao.IMcUserDAO; import org.lamsfoundation.lams.tool.mc.dao.IMcUsrAttemptDAO; +import org.lamsfoundation.lams.tool.mc.dto.ToolOutputDTO; import org.lamsfoundation.lams.tool.mc.pojos.McContent; import org.lamsfoundation.lams.tool.mc.pojos.McOptsContent; import org.lamsfoundation.lams.tool.mc.pojos.McQueContent; @@ -673,6 +674,11 @@ e); } } + + @Override + public List getLearnerMarksByContentId(Long toolContentId) { + return mcUsrAttemptDAO.getLearnerMarksByContentId(toolContentId); + } @Override public List getQuestionsByContentUid(final Long contentUid) throws McApplicationException { @@ -1618,6 +1624,11 @@ public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId) { return mcOutputFactory.getToolOutput(name, this, toolSessionId, learnerId); } + + @Override + public List getToolOutputs(String name, Long toolContentId) { + return mcOutputFactory.getToolOutputs(name, this, toolContentId); + } @Override public void forceCompleteUser(Long toolSessionId, User user) { @@ -1673,6 +1684,16 @@ return toolService.isGroupedActivity(toolContentID); } + @Override + public String getActivityEvaluation(Long toolContentId) { + return toolService.getActivityEvaluation(toolContentId); + } + + @Override + public void setActivityEvaluation(Long toolContentId, String toolOutputDefinition) { + toolService.setActivityEvaluation(toolContentId, toolOutputDefinition); + } + /** * @param mcContentDAO * The mcContentDAO to set. Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McMonitoringAction.java =================================================================== diff -u -r2f725f8ef2aa09a2663b2335bf67213074426d11 -r1d3ff83fba3454c6e0e4139dc15ad6cecdfa389c --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McMonitoringAction.java (.../McMonitoringAction.java) (revision 2f725f8ef2aa09a2663b2335bf67213074426d11) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McMonitoringAction.java (.../McMonitoringAction.java) (revision 1d3ff83fba3454c6e0e4139dc15ad6cecdfa389c) @@ -261,6 +261,32 @@ } /** + * Set tool's activityEvaluation + * + * @param mapping + * @param form + * @param request + * @param response + * @return + * @throws JSONException + * @throws IOException + */ + public ActionForward setActivityEvaluation(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws JSONException, IOException { + IMcService service = McServiceProxy.getMcService(getServlet().getServletContext()); + + Long contentID = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); + String activityEvaluation = WebUtil.readStrParam(request, McAppConstants.ATTR_ACTIVITY_EVALUATION); + service.setActivityEvaluation(contentID, activityEvaluation); + + JSONObject responseJSON = new JSONObject(); + responseJSON.put("success", "true"); + response.setContentType("application/json;charset=utf-8"); + response.getWriter().print(new String(responseJSON.toString())); + return null; + } + + /** * Populate user jqgrid table on summary page. */ public ActionForward userMasterDetail(ActionMapping mapping, ActionForm form, HttpServletRequest request, Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/MonitoringUtil.java =================================================================== diff -u -r2f725f8ef2aa09a2663b2335bf67213074426d11 -r1d3ff83fba3454c6e0e4139dc15ad6cecdfa389c --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/MonitoringUtil.java (.../MonitoringUtil.java) (revision 2f725f8ef2aa09a2663b2335bf67213074426d11) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/MonitoringUtil.java (.../MonitoringUtil.java) (revision 1d3ff83fba3454c6e0e4139dc15ad6cecdfa389c) @@ -22,6 +22,7 @@ package org.lamsfoundation.lams.tool.mc.web; +import java.util.ArrayList; import java.util.Date; import java.util.Iterator; import java.util.LinkedList; @@ -174,6 +175,14 @@ request.setAttribute("submissionDeadline", tzSubmissionDeadline.getTime()); } + //prepare toolOutputDefinitions and activityEvaluation + List toolOutputDefinitions = new ArrayList(); + toolOutputDefinitions.add(McAppConstants.OUTPUT_NAME_LEARNER_MARK); + toolOutputDefinitions.add(McAppConstants.OUTPUT_NAME_LEARNER_ALL_CORRECT); + String activityEvaluation = mcService.getActivityEvaluation(content.getMcContentId()); + request.setAttribute(McAppConstants.ATTR_TOOL_OUTPUT_DEFINITIONS, toolOutputDefinitions); + request.setAttribute(McAppConstants.ATTR_ACTIVITY_EVALUATION, activityEvaluation); + boolean isGroupedActivity = mcService.isGroupedActivity(new Long(content.getMcContentId())); request.setAttribute("isGroupedActivity", isGroupedActivity); } Index: lams_tool_lamc/web/monitoring/Stats.jsp =================================================================== diff -u -r00937d78dacc0993260d5ed7b39e4376e432cf45 -r1d3ff83fba3454c6e0e4139dc15ad6cecdfa389c --- lams_tool_lamc/web/monitoring/Stats.jsp (.../Stats.jsp) (revision 00937d78dacc0993260d5ed7b39e4376e432cf45) +++ lams_tool_lamc/web/monitoring/Stats.jsp (.../Stats.jsp) (revision 1d3ff83fba3454c6e0e4139dc15ad6cecdfa389c) @@ -1,8 +1,36 @@ <%@ include file="/common/taglibs.jsp"%> - + + -
@@ -21,4 +49,6 @@
\ No newline at end of file + + +<%@ include file="parts/toolOutput.jsp"%> Index: lams_tool_lamc/web/monitoring/parts/toolOutput.jsp =================================================================== diff -u --- lams_tool_lamc/web/monitoring/parts/toolOutput.jsp (revision 0) +++ lams_tool_lamc/web/monitoring/parts/toolOutput.jsp (revision 1d3ff83fba3454c6e0e4139dc15ad6cecdfa389c) @@ -0,0 +1,30 @@ +<%@ include file="/common/taglibs.jsp"%> + +
+
+
+ + + +
+ + +
+