/** * This method is used to print scored questions data * * @param scoredQuestionsData */ void setQuestionsPrintData(ArrayList<UserDataDo> scoredQuestionsData) { scoredPrintWidget.clear(); final SortTable sortableTable = new SortTable(); sortableTable.setStyleName(res.css().tableMain()); sortableTable.getElement().setId("results"); sortableTable.setBorderWidth(1); sortableTable.setCellPadding(4); sortableTable.setCellSpacing(1); sortableTable.addColumnHeader(i18n.GL3259(), 0); sortableTable.addColumnHeader(i18n.GL0308(), 1); sortableTable.addColumnHeader(i18n.GL2229(), 2); sortableTable.addColumnHeader(i18n.GL3269(), 3); sortableTable.addColumnHeader(i18n.GL2084(), 4); sortableTable.addColumnHeader(i18n.GL3261(), 5); sortableTable.getRowFormatter().addStyleName(0, res.css().tableHeader()); // To add scored questions scoredQuestionHeading.setText(i18n.GL2282()); scoredQuestionHeading.getElement().getStyle().setClear(Clear.BOTH); scoredQuestionHeading.getElement().getStyle().setPaddingTop(15, Unit.PX); scoredQuestionHeading.getElement().getStyle().setPaddingBottom(20, Unit.PX); scoredQuestionHeading.getElement().getStyle().setTextAlign(TextAlign.LEFT); printWidget.add(scoredQuestionHeading); scoredPrintWidget.add(sortableTable); scoredPrintWidget.getElement().getStyle().setPaddingTop(15, Unit.PX); if (scoredQuestionsData.size() != 0) { setSortedData(scoredQuestionsData, sortableTable, true); } else { Label erroeMsg = new Label(); erroeMsg.setStyleName(res.css().displayMessageTextForScoredQuestions()); erroeMsg.setText(i18n.GL3265()); scoredPrintWidget.add(erroeMsg); } scoredPrintWidget.setVisible(false); }
/** * This method is used to set scored questions data. * * @param scoredQuestionsData * @param sortableTable * @param isPrint */ void setSortedData( ArrayList<UserDataDo> scoredQuestionsData, SortTable sortableTable, boolean isPrint) { for (int i = 1; i <= scoredQuestionsData.size(); i++) { sortableTable.setValue(i, 0, scoredQuestionsData.get(i - 1).getItemSequence()); Label questionTitle = new Label( AnalyticsUtil.html2text( scoredQuestionsData.get(i - 1).getTitle() != null ? scoredQuestionsData.get(i - 1).getTitle() : "")); questionTitle.setStyleName(res.css().alignCenterAndBackground()); questionTitle.addStyleName(res.css().alignLeft()); sortableTable.setWidget(i, 1, questionTitle); VerticalPanel answerBreakDownpnl = new VerticalPanel(); if (scoredQuestionsData.get(i - 1).getType() != null) { String getQuestionType = scoredQuestionsData.get(i - 1).getType(); if (MC.equalsIgnoreCase(getQuestionType) || TF.equalsIgnoreCase(getQuestionType) || TSLASHF.equalsIgnoreCase(getQuestionType)) { if ((scoredQuestionsData.get(i - 1).getMetaData() != null) && (scoredQuestionsData.get(i - 1).getMetaData().size() != 0)) { int metaDataSize = scoredQuestionsData.get(i - 1).getMetaData().size(); int totalcount = scoredQuestionsData.get(i - 1).getAttempts(); for (int j = 0; j < metaDataSize; j++) { MetaDataDo metaData = scoredQuestionsData.get(i - 1).getMetaData().get(j); HorizontalPanel datagrap = new HorizontalPanel(); Label tickmarklbl = new Label(); tickmarklbl.setStyleName(res.css().tickMarkImgCss()); datagrap.add(tickmarklbl); String questionSequence = AnalyticsUtil.getCharForNumber(metaData.getSequence() - 1); int attemptCount = 0; Label sequenceCharlbl = new Label(questionSequence + ")"); sequenceCharlbl.setStyleName(res.css().barGraphCharacter()); datagrap.add(sequenceCharlbl); if (scoredQuestionsData.get(i - 1).getOptions() != null) { Map<String, Integer> authorObject = scoredQuestionsData.get(i - 1).getOptions(); /*JSONValue value = JSONParser.parseStrict(scoredQuestionsData.get(i-1).getOptions().toString()); JSONObject authorObject = value.isObject();*/ if (authorObject.keySet().size() != 0 && authorObject.get(questionSequence) != null) { attemptCount = (int) authorObject.get(questionSequence).doubleValue(); } } Label progressBarlbl = new Label(""); if (metaData.getIsCorrect() == 1) { tickmarklbl.addStyleName(res.css().tickMarkImg()); progressBarlbl.addStyleName(res.css().assignment_quesiton_ans_bar()); } else { progressBarlbl.addStyleName(res.css().wrongSelectStyle()); } float setWidth = ((float) attemptCount / (float) totalcount) * 100; setWidth = (setWidth == 0.0 ? 1 : setWidth); progressBarlbl.getElement().getStyle().setWidth(setWidth, Unit.PX); datagrap.add(progressBarlbl); Label countlbl = new Label("(" + attemptCount + ")"); datagrap.add(countlbl); answerBreakDownpnl.add(datagrap); } } } else if ((OE.equalsIgnoreCase(getQuestionType) || FIB.equalsIgnoreCase(getQuestionType) || MA.equalsIgnoreCase(getQuestionType)) && !isPrint) { Label viewResponselbl = new Label(i18n.GL2286()); viewResponselbl.getElement().setAttribute("labelType", "View Response"); viewResponselbl .getElement() .setAttribute( "resourceGooruId", scoredQuestionsData.get(i - 1).getResourceGooruOId()); viewResponselbl .getElement() .setAttribute("questionType", scoredQuestionsData.get(i - 1).getType()); viewResponselbl.setStyleName(res.css().viewResponseTextOpended()); viewResponselbl.addClickHandler(new ClickOnTableCell()); answerBreakDownpnl.add(viewResponselbl); } sortableTable.setWidget(i, 3, answerBreakDownpnl); sortableTable.setValue( i, 4, AnalyticsUtil.getTimeStampLabel(scoredQuestionsData.get(i - 1).getAvgTimeSpent()) .getText()); sortableTable.setWidget( i, 5, new AnalyticsReactionWidget(scoredQuestionsData.get(i - 1).getAvgReaction())); int[] pieChatValues = new int[4]; pieChatValues[0] = scoredQuestionsData.get(i - 1).getTotalInCorrectCount(); pieChatValues[1] = scoredQuestionsData.get(i - 1).getTotalCorrectCount(); pieChatValues[2] = scoredQuestionsData.get(i - 1).getSkip(); pieChatValues[3] = pieChatValues[0] + pieChatValues[1] + pieChatValues[2]; // set row style if (i % 2 == 0) { sortableTable.getRowFormatter().addStyleName(i, res.css().tableRowOdd()); sortableTable.setWidget( i, 2, new HCBarChart().pieChart("#fafafa", pieChatValues, isPrint)); } else { sortableTable.getRowFormatter().addStyleName(i, res.css().tableRowEven()); sortableTable.setWidget(i, 2, new HCBarChart().pieChart("#fff", pieChatValues, isPrint)); } } } }
/** * This method is used to display scored data * * @param scoredQuestionsData */ void setScoredQuestionsData(ArrayList<UserDataDo> scoredQuestionsData) { teacherScoredData.clear(); final SortTable sortableTable = new SortTable(); sortableTable.setStyleName(res.css().tableMain()); sortableTable.getElement().setId("results"); sortableTable.setBorderWidth(1); sortableTable.setCellPadding(4); sortableTable.setCellSpacing(1); sortableTable.setWidth("800"); sortableTable.addColumnHeader(i18n.GL3259(), 0); sortableTable.addColumnHeader(i18n.GL0308(), 1); sortableTable.addColumnHeader(i18n.GL3276(), 2); sortableTable.addColumnHeader(i18n.GL3277(), 3); sortableTable.addColumnHeader(i18n.GL2084(), 4); sortableTable.addColumnHeader(i18n.GL3261(), 5); sortableTable.getRowFormatter().addStyleName(0, res.css().tableHeader()); teacherScoredData.add(sortableTable); if (scoredQuestionsData.size() != 0) { setSortedData(scoredQuestionsData, sortableTable, false); } else { Label erroeMsg = new Label(); erroeMsg.setStyleName(res.css().displayMessageTextForScoredQuestions()); erroeMsg.setText(i18n.GL3265()); teacherScoredData.add(erroeMsg); } }
/** * This method is used to display collection break down data. * * @param result * @param loadingImage */ void setCollectionBreakDown(ArrayList<UserDataDo> result, final HTMLPanel loadingImage) { UserDataDo maxAvgValue = Collections.max( result, new Comparator<UserDataDo>() { public int compare(UserDataDo o1, UserDataDo o2) { Long obj1 = new Long(o1.getTimeSpent()); Long obj2 = new Long(o2.getTimeSpent()); return obj1.compareTo(obj2); } }); final SortTable sortableTable = new SortTable(); sortableTable.setStyleName(res.css().tableMain()); sortableTable.getElement().setId("collectionbreak"); sortableTable.setBorderWidth(1); sortableTable.setCellPadding(4); sortableTable.setCellSpacing(1); sortableTable.setWidth("800"); sortableTable.getElement().getStyle().setBackgroundColor("#fff"); sortableTable.addColumnHeader(i18n.GL3259(), 0); sortableTable.addColumnHeader(i18n.GL3267(), 1); sortableTable.addColumnHeader(i18n.GL3182(), 2); sortableTable.addColumnHeader(i18n.GL3268(), 3); sortableTable.addColumnHeader(i18n.GL0934(), 4); sortableTable.addColumnHeader(i18n.GL3261(), 5); sortableTable.getRowFormatter().addStyleName(0, res.css().tableHeader()); int rowVal = 1; for (int i = 0; i < result.size(); i++) { Label number = new Label(String.valueOf(result.get(i).getItemSequence())); number.setStyleName(res.css().alignCenterAndBackground()); sortableTable.setWidget(rowVal, 0, number); // set Format String resourceCategory = result.get(i).getResourceFormat() != null ? result.get(i).getResourceFormat().trim() : ""; String categoryStyle = ""; if (resourceCategory.equalsIgnoreCase("website") || resourceCategory.equalsIgnoreCase("webpage")) { resourceCategory = "webpage"; categoryStyle = res.css().category_new_type_webpage(); } else if (resourceCategory.equalsIgnoreCase("slide") || resourceCategory.equalsIgnoreCase("image")) { resourceCategory = "image"; categoryStyle = res.css().category_new_type_image(); } else if (resourceCategory.equalsIgnoreCase("handout") || resourceCategory.equalsIgnoreCase("lesson") || resourceCategory.equalsIgnoreCase("textbook") || resourceCategory.equalsIgnoreCase("text")) { resourceCategory = "text"; categoryStyle = res.css().category_new_type_text(); } else if (resourceCategory.equalsIgnoreCase("exam")) { resourceCategory = "webpage"; categoryStyle = res.css().category_new_type_webpage(); } else if (resourceCategory.equalsIgnoreCase("video")) { resourceCategory = "video"; categoryStyle = res.css().category_new_type_video(); } else if (resourceCategory.equalsIgnoreCase("interactive")) { resourceCategory = "webpage"; categoryStyle = res.css().category_new_type_interactive(); } else if (resourceCategory.equalsIgnoreCase("audio")) { resourceCategory = "audio"; categoryStyle = res.css().category_new_type_audio(); } else { categoryStyle = res.css().category_new_type_other(); } Label categorylbl = new Label(); categorylbl.setStyleName(res.css().alignCenterAndBackground()); categorylbl.addStyleName(categoryStyle); categorylbl.addStyleName(res.css().setMarginAuto()); sortableTable.setWidget(rowVal, 1, categorylbl); // Set Question Title Label questionTitle = new Label( AnalyticsUtil.html2text( result.get(i).getTitle() != null ? result.get(i).getTitle() : "")); questionTitle.setStyleName(res.css().alignCenterAndBackground()); questionTitle.addStyleName(res.css().alignLeft()); sortableTable.setWidget(rowVal, 2, questionTitle); // Set time spent HorizontalPanel timeSpentpnl = new HorizontalPanel(); timeSpentpnl.add(AnalyticsUtil.getTimeStampLabel(result.get(i).getAvgTimeSpent())); Label progressBar = new Label(); progressBar.setStyleName(res.css().setProgressBar()); timeSpentpnl.add(progressBar); double maxAvgVal = ((double) result.get(i).getAvgTimeSpent()) / ((double) maxAvgValue.getTimeSpent()); progressBar.getElement().getStyle().setWidth(maxAvgVal * 100, Unit.PX); sortableTable.setWidget(rowVal, 3, timeSpentpnl); // set Views label Label viewlbl = new Label(Integer.toString(result.get(i).getViews())); viewlbl.setStyleName(res.css().alignCenterAndBackground()); sortableTable.setWidget(rowVal, 4, viewlbl); // Set reactions int reaction = result.get(i).getAvgReaction(); HTMLPanel reactionpnl = new HTMLPanel(""); reactionpnl.add(new AnalyticsReactionWidget(reaction)); Label reactioncount = new Label(); reactionpnl.add(reactioncount); reactioncount.setText(reaction + "/5"); reactioncount.setStyleName(res.css().alignCenterAndBackground()); sortableTable.setWidget(rowVal, 5, reactionpnl); if (rowVal % 2 == 0) { sortableTable .getRowFormatter() .getElement(rowVal) .setAttribute("style", "background-color: #fafafa"); } rowVal++; } if (result.size() == 0) { Label erroeMsg = new Label(); erroeMsg.setStyleName(res.css().displayMessageTextForScoredQuestions()); erroeMsg.setText(i18n.GL3467()); teacherResourceBreakdownData.add(erroeMsg); } teacherResourceBreakdownData.add(sortableTable); filterDropDown.addChangeHandler( new ChangeHandler() { @Override public void onChange(ChangeEvent event) { teacherResourceBreakdownData.clear(); int selectedIndex = filterDropDown.getSelectedIndex(); sortableTable.setStyleName("collectionProgressTable"); sortableTable.getElement().setId("collectionbreak"); if (selectedIndex == 1) { if (questionsData.size() > 0) { setCollectionBreakDown(questionsData, loadingImage); } else { Label erroeMsg = new Label(); erroeMsg.setStyleName(res.css().displayMessageTextForOEQuestions()); erroeMsg.setText(i18n.GL3274()); teacherResourceBreakdownData.add(erroeMsg); } } else if (selectedIndex == 2) { if (resourceData.size() > 0) { setCollectionBreakDown(resourceData, loadingImage); } else { Label erroeMsg = new Label(); erroeMsg.setStyleName(res.css().displayMessageTextForOEQuestions()); erroeMsg.setText(i18n.GL3467()); teacherResourceBreakdownData.add(erroeMsg); } } else { if (allData.size() > 0) { setCollectionBreakDown(allData, loadingImage); } else { Label erroeMsg = new Label(); erroeMsg.setStyleName(res.css().displayMessageTextForOEQuestions()); erroeMsg.setText(i18n.GL3467()); teacherResourceBreakdownData.add(erroeMsg); } } sortableTable.addDomHandler(new ClickOnTableCell(), ClickEvent.getType()); } }); loadingImage.setVisible(false); }