Skip to content

Commit

Permalink
KOGITO-6703: Render DMN Text Annotations in Documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
Jozef Marko committed Mar 4, 2022
1 parent 6d0ed2e commit 122c317
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 25 deletions.
Expand Up @@ -42,8 +42,6 @@ public class DMNDocumentationDRD {

private JsArray<DMNDocumentationExternalLink> drdExternalLinks;

private boolean hasExternalLinks;

private DMNDocumentationDRD() {

}
Expand Down Expand Up @@ -89,11 +87,6 @@ public final JsArray<DMNDocumentationExternalLink> getDrdExternalLinks() {
return drdExternalLinks;
}

@JsOverlay
public final boolean getHasExternalLinks() {
return hasExternalLinks;
}

@JsOverlay
public final void setDrdName(String drdName) {
this.drdName = drdName;
Expand Down Expand Up @@ -128,9 +121,4 @@ public final void setDrdBoxedExpressionImage(String drdBoxedExpressionImage) {
public final void setDrdExternalLinks(List<DMNDocumentationExternalLink> drdExternalLinks) {
this.drdExternalLinks = asJsArray(drdExternalLinks);
}

@JsOverlay
public final void setHasExternalLinks(boolean hasExternalLinks) {
this.hasExternalLinks = hasExternalLinks;
}
}
Expand Up @@ -32,6 +32,7 @@
import org.kie.workbench.common.dmn.api.definition.HasVariable;
import org.kie.workbench.common.dmn.api.definition.model.DRGElement;
import org.kie.workbench.common.dmn.api.definition.model.Decision;
import org.kie.workbench.common.dmn.api.definition.model.TextAnnotation;
import org.kie.workbench.common.dmn.api.property.dmn.DMNExternalLink;
import org.kie.workbench.common.dmn.api.property.dmn.QName;
import org.kie.workbench.common.dmn.client.common.BoxedExpressionHelper;
Expand Down Expand Up @@ -122,6 +123,9 @@ private List<DMNDocumentationDRD> createDMNDocumentationDRDs(final Diagram diagr
final DRGElement drgElement = (DRGElement) definition;
dmnDocumentationDRDS.add(createDMNDocumentationDRD(diagram, node, drgElement));
}
if (definition instanceof TextAnnotation) {
dmnDocumentationDRDS.add(createTextAnnotationDocumentation((TextAnnotation) definition));
}
});

return dmnDocumentationDRDS;
Expand All @@ -140,7 +144,15 @@ private DMNDocumentationDRD createDMNDocumentationDRD(final Diagram diagram,
dmnDocumentationDRD.setDrdBoxedExpressionImage(getNodeImage(diagram, node));
final List<DMNDocumentationExternalLink> externalLinks = getExternalLinks(drgElement);
dmnDocumentationDRD.setDrdExternalLinks(externalLinks);
dmnDocumentationDRD.setHasExternalLinks(!externalLinks.isEmpty());

return dmnDocumentationDRD;
}

private DMNDocumentationDRD createTextAnnotationDocumentation(final TextAnnotation textAnnotation) {

DMNDocumentationDRD dmnDocumentationDRD = DMNDocumentationDRD.create();
dmnDocumentationDRD.setDrdName(textAnnotation.getText().getValue());
dmnDocumentationDRD.setDrdDescription(textAnnotation.getDescription().getValue());

return dmnDocumentationDRD;
}
Expand Down
Expand Up @@ -379,18 +379,18 @@ <h4>
<p>{{drdAllowedAnswers}}</p>
{{/drdAllowedAnswers}}
<ul class="data-types">
{{#hasExternalLinks}}
<p class="node-detail-title">{{i18n.externalLinks}}</p>
{{/hasExternalLinks}}
{{#drdExternalLinks}}
<p class="node-detail-title">{{i18n.externalLinks}}</p>
<li style="padding-left: calc(30px * {{level}})">
<span class="normal">{{description}}</span>
<a href="{{url}}">({{url}})</a>
</li>
{{/drdExternalLinks}}
{{^drdExternalLinks}}
{{/drdExternalLinks}} {{^drdExternalLinks}}
<!-- recheck drdType presence -->
<!-- if not present, it is TextAnnotation -->
{{#drdType}}
<li class="no-results">{{i18n.noExternalLinks}}</li>
{{/drdExternalLinks}}
{{/drdType}} {{/drdExternalLinks}}
</ul>
{{#drdBoxedExpressionImage}}
<img src="{{drdBoxedExpressionImage}}" alt="{{drdName}}" class="diagram-image"/>
Expand Down
Expand Up @@ -30,11 +30,13 @@
import org.kie.workbench.common.dmn.api.definition.model.InformationItemPrimary;
import org.kie.workbench.common.dmn.api.definition.model.InputData;
import org.kie.workbench.common.dmn.api.definition.model.LiteralExpression;
import org.kie.workbench.common.dmn.api.definition.model.TextAnnotation;
import org.kie.workbench.common.dmn.api.property.dmn.DMNExternalLink;
import org.kie.workbench.common.dmn.api.property.dmn.Description;
import org.kie.workbench.common.dmn.api.property.dmn.DocumentationLinksHolder;
import org.kie.workbench.common.dmn.api.property.dmn.Name;
import org.kie.workbench.common.dmn.api.property.dmn.QName;
import org.kie.workbench.common.dmn.api.property.dmn.Text;
import org.kie.workbench.common.dmn.client.common.BoxedExpressionHelper;
import org.kie.workbench.common.dmn.client.editors.expressions.ExpressionContainerGrid;
import org.kie.workbench.common.dmn.client.editors.expressions.ExpressionEditorView;
Expand All @@ -53,11 +55,10 @@
import org.mockito.Mock;
import org.uberfire.ext.wires.core.grids.client.model.GridData;

import static freemarker.template.utility.Collections12.singletonList;
import static java.util.Arrays.asList;
import static java.util.Collections.singletonList;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.kie.workbench.common.dmn.api.property.dmn.types.BuiltInType.BOOLEAN;
import static org.kie.workbench.common.dmn.api.property.dmn.types.BuiltInType.UNDEFINED;
import static org.kie.workbench.common.dmn.client.editors.documentation.common.DMNDocumentationDRDsFactory.NONE;
Expand Down Expand Up @@ -180,12 +181,38 @@ public void testCreate() {
assertEquals(name2, documentationDRD2.getDrdName());
assertEquals(NONE, documentationDRD2.getDrdBoxedExpressionImage());

assertFalse(documentationDRD1.getHasExternalLinks());
assertTrue(documentationDRD2.getHasExternalLinks());

verify(factory).setExpressionContainerGrid(diagram, nodeUUID2);
}

@Test
public void testCreateTextAnnotation() {

final String nodeUUID1 = "1111-1111-1111-1111";
final Node<View, Edge> node1 = new NodeImpl<>(nodeUUID1);
final View view1 = mock(View.class);
final List<Node<View, Edge>> nodes = asList(node1);
final TextAnnotation drgElement1 = new TextAnnotation();
final String name1 = "Text Annotation";
final String description1 = "Description...";

node1.setContent(view1);
when(view1.getDefinition()).thenReturn(drgElement1);
when(graph.nodes()).thenReturn(nodes);

drgElement1.setDescription(new Description(description1));
drgElement1.setText(new Text(name1));

final List<DMNDocumentationDRD> drds = factory.create(diagram);

assertThat(drds)
.hasSize(1)
.first()
.satisfies(ta -> {
assertThat(ta).extracting("drdName").isEqualTo(name1);
assertThat(ta).extracting("drdDescription").isEqualTo(description1);
});
}

@Test
public void testGetNodeImage() {

Expand Down

0 comments on commit 122c317

Please sign in to comment.