use of uk.ac.ed.ph.jqtiplus.node.content.basic.Block in project openolat by klemens.
the class UploadAssessmentItemBuilder method getQuestionBlocks.
/**
* @return A copy of the list of blocks which make the question.
* The list is a copy and modification will not be persisted.
*/
public List<Block> getQuestionBlocks() {
List<Block> blocks = assessmentItem.getItemBody().getBlocks();
List<Block> questionBlocks = new ArrayList<>(blocks.size());
for (Block block : blocks) {
if (block instanceof UploadInteraction) {
break;
} else {
questionBlocks.add(block);
}
}
return questionBlocks;
}
use of uk.ac.ed.ph.jqtiplus.node.content.basic.Block in project openolat by klemens.
the class QTI21WordExport method renderAssessmentItem.
public static void renderAssessmentItem(AssessmentItem item, File itemFile, File mediaDir, OpenXMLDocument document, boolean withResponses, Translator translator, AssessmentHtmlBuilder htmlBuilder) {
StringBuilder addText = new StringBuilder();
QTI21QuestionType type = QTI21QuestionType.getType(item);
String typeDescription = "";
switch(type) {
case sc:
typeDescription = translator.translate("form.choice");
break;
case mc:
typeDescription = translator.translate("form.choice");
break;
case fib:
typeDescription = translator.translate("form.fib");
break;
case numerical:
typeDescription = translator.translate("form.fib");
break;
case kprim:
typeDescription = translator.translate("form.kprim");
break;
case hotspot:
typeDescription = translator.translate("form.hotspot");
break;
case essay:
typeDescription = translator.translate("form.essay");
break;
case upload:
typeDescription = translator.translate("form.upload");
break;
case drawing:
typeDescription = translator.translate("form.drawing");
break;
case match:
typeDescription = translator.translate("form.match");
break;
default:
typeDescription = null;
break;
}
Double maxScore = QtiNodesExtractor.extractMaxScore(item);
if (StringHelper.containsNonWhitespace(typeDescription) || maxScore != null) {
if (StringHelper.containsNonWhitespace(typeDescription)) {
addText.append("(").append(typeDescription).append(")");
}
if (maxScore != null) {
addText.append(" - ").append(AssessmentHelper.getRoundedScore(maxScore));
}
}
String title = item.getTitle();
document.appendHeading1(title, addText.toString());
List<Block> itemBodyBlocks = item.getItemBody().getBlocks();
String html = htmlBuilder.blocksString(itemBodyBlocks);
document.appendHtmlText(html, true, new QTI21AndHTMLToOpenXMLHandler(document, item, itemFile, mediaDir, withResponses, htmlBuilder, translator));
if (withResponses && (type == QTI21QuestionType.essay || type == QTI21QuestionType.upload || type == QTI21QuestionType.drawing)) {
renderCorrectSolutionForWord(item, document, translator, htmlBuilder);
}
}
use of uk.ac.ed.ph.jqtiplus.node.content.basic.Block in project openolat by klemens.
the class DrawingAssessmentItemBuilder method extractExtendedTextInteraction.
private void extractExtendedTextInteraction() {
try (StringOutput sb = new StringOutput()) {
List<Block> blocks = assessmentItem.getItemBody().getBlocks();
for (Block block : blocks) {
if (block instanceof DrawingInteraction) {
drawingInteraction = (DrawingInteraction) block;
responseIdentifier = drawingInteraction.getResponseIdentifier();
break;
} else {
serializeJqtiObject(block, sb);
}
}
question = sb.toString();
} catch (IOException e) {
log.error("", e);
}
}
use of uk.ac.ed.ph.jqtiplus.node.content.basic.Block in project openolat by klemens.
the class EssayAssessmentItemBuilder method getQuestionBlocks.
/**
* @return A copy of the list of blocks which make the question.
* The list is a copy and modification will not be persisted.
*/
public List<Block> getQuestionBlocks() {
List<Block> blocks = assessmentItem.getItemBody().getBlocks();
List<Block> questionBlocks = new ArrayList<>(blocks.size());
for (Block block : blocks) {
if (block instanceof ExtendedTextInteraction) {
break;
} else {
questionBlocks.add(block);
}
}
return questionBlocks;
}
use of uk.ac.ed.ph.jqtiplus.node.content.basic.Block in project openolat by klemens.
the class InteractionResultComponentRenderer method render.
@Override
public void render(Renderer renderer, StringOutput sb, Component source, URLBuilder ubu, Translator translator, RenderResult renderResult, String[] args) {
InteractionResultComponent cmp = (InteractionResultComponent) source;
Interaction interaction = cmp.getInteraction();
ResolvedAssessmentItem resolvedAssessmentItem = cmp.getResolvedAssessmentItem();
ItemSessionState itemSessionState = cmp.getItemSessionState();
AssessmentRenderer assessmentRenderer = new AssessmentRenderer(renderer);
if (cmp.isShowSolution()) {
assessmentRenderer.setSolutionAllowed(true);
assessmentRenderer.setSolutionMode(true);
} else {
assessmentRenderer.setReviewMode(true);
}
if (interaction instanceof Block) {
renderBlock(assessmentRenderer, sb, cmp, resolvedAssessmentItem, itemSessionState, (Block) interaction, ubu, translator);
} else if (interaction instanceof Flow) {
renderFlow(assessmentRenderer, sb, cmp, resolvedAssessmentItem, itemSessionState, (Flow) interaction, ubu, translator);
}
}
Aggregations