Fix rendering of QuestionnaireResponses - render items in answers properly
This commit is contained in:
parent
4ce07531ef
commit
bb78aeea8e
|
@ -62,7 +62,7 @@ public class QuestionnaireResponseRenderer extends ResourceRenderer {
|
||||||
|
|
||||||
public boolean render(XhtmlNode x, ResourceWrapper qr) throws UnsupportedEncodingException, IOException {
|
public boolean render(XhtmlNode x, ResourceWrapper qr) throws UnsupportedEncodingException, IOException {
|
||||||
switch (context.getQuestionnaireMode()) {
|
switch (context.getQuestionnaireMode()) {
|
||||||
case FORM: return renderForm(x, qr);
|
case FORM: return renderTree(x, qr);
|
||||||
case LINKS: return renderLinks(x, qr);
|
case LINKS: return renderLinks(x, qr);
|
||||||
// case LOGIC: return renderLogic(x, q);
|
// case LOGIC: return renderLogic(x, q);
|
||||||
// case DEFNS: return renderDefns(x, q);
|
// case DEFNS: return renderDefns(x, q);
|
||||||
|
@ -74,7 +74,7 @@ public class QuestionnaireResponseRenderer extends ResourceRenderer {
|
||||||
|
|
||||||
public boolean renderTree(XhtmlNode x, ResourceWrapper qr) throws UnsupportedEncodingException, IOException {
|
public boolean renderTree(XhtmlNode x, ResourceWrapper qr) throws UnsupportedEncodingException, IOException {
|
||||||
HierarchicalTableGenerator gen = new HierarchicalTableGenerator(context.getDestDir(), context.isInlineGraphics(), true);
|
HierarchicalTableGenerator gen = new HierarchicalTableGenerator(context.getDestDir(), context.isInlineGraphics(), true);
|
||||||
TableModel model = gen.new TableModel("qtree="+qr.getId(), true);
|
TableModel model = gen.new TableModel("qtree="+qr.getId(), false);
|
||||||
model.setAlternating(true);
|
model.setAlternating(true);
|
||||||
model.setDocoImg(context.getSpecificationLink() +"help16.png");
|
model.setDocoImg(context.getSpecificationLink() +"help16.png");
|
||||||
model.setDocoRef(context.getSpecificationLink()+"formats.html#table");
|
model.setDocoRef(context.getSpecificationLink()+"formats.html#table");
|
||||||
|
@ -175,26 +175,44 @@ public class QuestionnaireResponseRenderer extends ResourceRenderer {
|
||||||
}
|
}
|
||||||
} else if (answers.size() == 1) {
|
} else if (answers.size() == 1) {
|
||||||
BaseWrapper ans = answers.get(0);
|
BaseWrapper ans = answers.get(0);
|
||||||
Base b = ans.get("value[x]");
|
renderAnswer(gen, q, r, ans);
|
||||||
if (b == null) {
|
|
||||||
r.getCells().add(gen.new Cell(null, null, "null!", null, null));
|
|
||||||
} else if (b.isPrimitive()) {
|
|
||||||
r.getCells().add(gen.new Cell(null, null, b.primitiveValue(), null, null));
|
|
||||||
} else {
|
|
||||||
XhtmlNode x = new XhtmlNode(NodeType.Element, "span");
|
|
||||||
Cell cell = gen.new Cell(null, null, null, null, null);
|
|
||||||
Piece p = gen.new Piece("span");
|
|
||||||
p.getChildren().add(x);
|
|
||||||
cell.addPiece(p);
|
|
||||||
render(x, (DataType) b);
|
|
||||||
r.getCells().add(cell);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
r.getCells().add(gen.new Cell(null, null, "{todo #2}", null, null));
|
r.getCells().add(gen.new Cell(null, null, null, null, null));
|
||||||
|
for (BaseWrapper ans : answers) {
|
||||||
|
Row ar = gen.new Row();
|
||||||
|
ar.setIcon("icon-q-string.png", "Item");
|
||||||
|
ar.getSubRows().add(ar);
|
||||||
|
ar.getCells().add(gen.new Cell(null, null, null, null, null));
|
||||||
|
ar.getCells().add(gen.new Cell(null, null, text, null, null));
|
||||||
|
ar.getCells().add(gen.new Cell(null, null, null, null, null));
|
||||||
|
renderAnswer(gen, q, ar, ans);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return hasExt;
|
return hasExt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void renderAnswer(HierarchicalTableGenerator gen, ResourceWrapper q, Row r, BaseWrapper ans) throws UnsupportedEncodingException, IOException {
|
||||||
|
List<BaseWrapper> items;
|
||||||
|
Base b = ans.get("value[x]");
|
||||||
|
if (b == null) {
|
||||||
|
r.getCells().add(gen.new Cell(null, null, "null!", null, null));
|
||||||
|
} else if (b.isPrimitive()) {
|
||||||
|
r.getCells().add(gen.new Cell(null, null, b.primitiveValue(), null, null));
|
||||||
|
} else {
|
||||||
|
XhtmlNode x = new XhtmlNode(NodeType.Element, "span");
|
||||||
|
Cell cell = gen.new Cell(null, null, null, null, null);
|
||||||
|
Piece p = gen.new Piece("span");
|
||||||
|
p.getChildren().add(x);
|
||||||
|
cell.addPiece(p);
|
||||||
|
render(x, (DataType) b);
|
||||||
|
r.getCells().add(cell);
|
||||||
|
}
|
||||||
|
items = ans.children("item");
|
||||||
|
for (BaseWrapper si : items) {
|
||||||
|
renderTreeItem(gen, r.getSubRows(), q, si);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private boolean renderTreeItem(HierarchicalTableGenerator gen, List<Row> rows, QuestionnaireResponse q, QuestionnaireResponseItemComponent i) throws IOException {
|
private boolean renderTreeItem(HierarchicalTableGenerator gen, List<Row> rows, QuestionnaireResponse q, QuestionnaireResponseItemComponent i) throws IOException {
|
||||||
Row r = gen.new Row();
|
Row r = gen.new Row();
|
||||||
|
|
Loading…
Reference in New Issue