From 919afc0d81a8434c2c9c54b50576e3eb8120cc65 Mon Sep 17 00:00:00 2001 From: Oszkar Semerath Date: Fri, 8 May 2020 03:01:30 +0200 Subject: Visualization fix for attributes with same value --- .../PartialInterpretation2Graphviz.xtend | 49 +++++++++++++++------- 1 file changed, 33 insertions(+), 16 deletions(-) (limited to 'Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.visualisation/src/hu/bme') diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.visualisation/src/hu/bme/mit/inf/dslreasoner/visualisation/pi2graphviz/PartialInterpretation2Graphviz.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.visualisation/src/hu/bme/mit/inf/dslreasoner/visualisation/pi2graphviz/PartialInterpretation2Graphviz.xtend index 05a4e6c2..cd0b3e00 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.visualisation/src/hu/bme/mit/inf/dslreasoner/visualisation/pi2graphviz/PartialInterpretation2Graphviz.xtend +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.visualisation/src/hu/bme/mit/inf/dslreasoner/visualisation/pi2graphviz/PartialInterpretation2Graphviz.xtend @@ -30,6 +30,7 @@ import org.eclipse.xtext.xbase.lib.Functions.Function1 import static guru.nidi.graphviz.model.Factory.* import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.* +import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PrimitiveElement class GraphvizVisualiser implements PartialInterpretationVisualiser { @@ -106,10 +107,10 @@ class GraphvizVisualiser implements PartialInterpretationVisualiser { // elements2Node.put(newElement,image) // } - partialInterpretation.newElements.filter(BooleanElement).drawDataTypes([it.value.toString],elements2Node,elements2ID) - partialInterpretation.newElements.filter(IntegerElement).drawDataTypes([it.value.toString],elements2Node,elements2ID) - partialInterpretation.newElements.filter(StringElement).drawDataTypes(['''"«it.value.toString»"'''],elements2Node,elements2ID) - partialInterpretation.newElements.filter(RealElement).drawDataTypes([it.value.toString],elements2Node,elements2ID) + //partialInterpretation.newElements.filter(BooleanElement).drawDataTypes([it.value.toString],elements2Node,elements2ID) + //partialInterpretation.newElements.filter(IntegerElement).drawDataTypes([it.value.toString],elements2Node,elements2ID) + //partialInterpretation.newElements.filter(StringElement).drawDataTypes(['''"«it.value.toString»"'''],elements2Node,elements2ID) + //partialInterpretation.newElements.filter(RealElement).drawDataTypes([it.value.toString],elements2Node,elements2ID) // Drawing the edges val edges = new HashMap @@ -135,35 +136,51 @@ class GraphvizVisualiser implements PartialInterpretationVisualiser { return new GraphvizVisualisation(graph) } - def protected void drawDataTypes(Iterable collection, Function1 namer, HashMap elements2Node, HashMap elements2ID) { - for(booleanElementIndex: 0.. void drawDataTypes(Iterable collection, Function1 namer, HashMap elements2Node, HashMap elements2ID) { +// for(booleanElementIndex: 0.. mustTypes, Set mayTypes) { var tableStyle = ''' CELLSPACING="0" BORDER="2" CELLBORDER="0" CELLPADDING="1" STYLE="ROUNDED"''' if(typeColoringStyle==TypeColoringStyle::AVERAGE) { tableStyle += ''' BGCOLOR="#«typePredicateColor(mustTypes).toBackgroundColorString»"''' } - val mainLabel = if(element.name !== null) { + val mainLabel = if(element instanceof PrimitiveElement) { + if(element.isValueSet) { + if(element instanceof BooleanElement) { element.value.toString } + else if(element instanceof IntegerElement) { element.value.toString } + else if(element instanceof RealElement) { element.value.toString } + else if(element instanceof StringElement) { "\""+element.value.toString+"\"" } + } else { + "?" + } + }else if(element.name !== null) { val parts = element.name.split("\\s+") textWithSubSup(parts.getOrNull(0),parts.getOrNull(1),parts.getOrNull(2),null) } else { val parts = ID.split("\\s+") textWithSubSup(parts.getOrNull(0),parts.getOrNull(1),parts.getOrNull(2),null) } - val label = Label.html( + val hasNoCompexType = (mustTypes.empty) && (mayTypes.empty) + + val label = if(hasNoCompexType) { + Label.html( + ''''''+ + ''' «mainLabel» '''+ + '''''') + } else { + Label.html( ''''''+ '''«mainLabel»'''+ '''«FOR mustTypeName : mustTypes.map[it.name].sort»«typePredicateDescription(mustTypeName,true)»«ENDFOR»'''+ '''«FOR mayTypeName : mayTypes.map[it.name].sort»«typePredicateDescription(mayTypeName,false)»«ENDFOR»'''+ '''''') - + } val node = node(ID).with(label).with( Shape.NONE //, -- cgit v1.2.3-54-g00ecf