Skip to content

Commit

Permalink
Improved visuazliations
Browse files Browse the repository at this point in the history
  • Loading branch information
michbarsinai committed Aug 15, 2017
1 parent c0f0380 commit 63f3876
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import static java.util.stream.Collectors.joining;

/**
* Base class for {@link DecisionGraph} visualizers, that use Graphviz.
Expand All @@ -36,7 +37,6 @@ public abstract class AbstractGraphvizDecisionGraphVisualizer extends GraphvizVi
protected DecisionGraph theGraph;

Set<String> visitedIds = new TreeSet<>();


protected abstract class AbstracctNodePainter extends Node.VoidVisitor {
PrintWriter out;
Expand Down Expand Up @@ -177,7 +177,18 @@ public void visitImpl(EndNode nd) throws DataTagsRuntimeException {
}
return candidates;
}


protected void drawCallLinks(PrintWriter out) {
for ( Node nd : getDecisionGraph().nodes() ) {
out.println("edge [constraint=false];");
if ( nd instanceof CallNode ) {
CallNode cn = (CallNode) nd;
out.println( GvEdge.edge(nodeId(cn), nodeId(cn.getCalleeNode())).gv() );
}
}
}


public DecisionGraph getDecisionGraph() {
return theGraph;
}
Expand All @@ -193,5 +204,13 @@ String nodeId(Node nd) {
String sanitizeIdDisplay(String s){
return s.replaceAll("\\\\", "\\\\\\\\");
}


protected String makeSameRank( Set<Node> nodes ) {
StringBuilder sb = new StringBuilder();
sb.append( "{rank=same ");
sb.append( nodes.stream().map( nd->sanitizeId(nd.getId()) ).collect( joining(", ")));
sb.append("}");

return sb.toString();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -194,8 +194,12 @@ void printChart(DecisionGraph fc, PrintWriter wrt) throws IOException {
chartHead.accept(np);
wrt.println("}");
});



wrt.println( makeSameRank(subchartHeads) );

wrt.println("edge [color=\"#CCCCFF\", penwidth=2, style=dotted, arrowhead=open]");
drawCallLinks(wrt);

wrt.println("}");

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,8 +94,8 @@ public void visitImpl(AskNode nd) throws DataTagsRuntimeException {
.gv());

for ( Answer ans : nd.getAnswers() ) {
String ansId = nodeId(nd) + "_" + sanitizeId(ans.getAnswerText());
out.println( answerNodeGv(ansId, ans.getAnswerText()) );
String ansId = nodeId(nd) + "_to_" + nodeId(nd.getNodeFor(ans));
out.println( answerNodeGv(ansId, wrapAt(ans.getAnswerText(), 35)) );
out.println( edge(nodeId(nd), ansId).arrowhead(GvEdge.ArrowType.None).gv() );

Node nextNode = nd.getNodeFor(ans);
Expand All @@ -116,7 +116,8 @@ private String considerAnswerNodeGv( String nodeId, String ans ) {
private String answerNodeGv( String nodeId, String ans ) {
String answerText = ans.toLowerCase();
GvNode nodeBld = node(nodeId).label(ans)
.shape(GvNode.Shape.circle);
.shape(GvNode.Shape.circle)
.width(0.7);
switch( answerText ) {
case "yes":
return nodeBld.label("Yes").fontColor(NO_NODE_FILL_COLOR)
Expand Down Expand Up @@ -267,6 +268,7 @@ void printChart( DecisionGraph fc, PrintWriter wrt ) throws IOException {
wrt.println("}");
});

wrt.println( makeSameRank(subchartHeads) );
wrt.println("}");

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,13 +46,18 @@ public GvNode shape( Shape aShape ) {
public GvNode fillColor( String aColor ) {
return add( "fillcolor", aColor );
}

public GvNode style( Style aStyle ) {
return add( "style", aStyle.name() );
}

public GvNode peripheries( int count ) {
return add( "peripheries", Integer.toString(count) );
}

public GvNode width( double sz ) {
return add("width", Double.toString(sz) );
}

@Override
protected String gvTitle() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import edu.harvard.iq.datatags.parser.exceptions.DataTagsParseException;
import edu.harvard.iq.datatags.tools.ValidationMessage.Level;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.junit.After;
Expand Down

0 comments on commit 63f3876

Please sign in to comment.