Skip to content

Commit

Permalink
DROOLS-3843: [DMN Editor] Decision Navigator differentiate icons for …
Browse files Browse the repository at this point in the history
…DRGElement (#3257)

DROOLS-3843: [DMN Editor] Decision Navigator differentiate icons for DRGElement (#3257)
  • Loading branch information
Valentino Pellegrino committed Apr 3, 2020
1 parent fc47a9b commit cb5c65e
Show file tree
Hide file tree
Showing 5 changed files with 136 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@

package org.kie.workbench.common.dmn.client.docks.navigator;

import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.TreeSet;

Expand Down Expand Up @@ -134,14 +136,38 @@ String getOrderingName() {
}

public enum Type {
ROOT,
ITEM,
CONTEXT,
DECISION_TABLE,
FUNCTION_DEFINITION,
INVOCATION,
LIST,
LITERAL_EXPRESSION,
RELATION
ROOT("Root"),
ITEM("Item"),
CONTEXT("Context"),
DECISION_TABLE("DecisionTable"),
FUNCTION_DEFINITION("FunctionDefinition"),
INVOCATION("Invocation"),
LIST("List"),
LITERAL_EXPRESSION("LiteralExpression"),
RELATION("Relation"),
TEXT_ANNOTATION("TextAnnotation"),
BUSINESS_KNOWLEDGE_MODEL("BusinessKnowledgeModel"),
INPUT_DATA("InputData"),
DECISION_SERVICE("DecisionService"),
KNOWLEDGE_SOURCE("KnowledgeSource"),
DECISION("Decision");

private static final Map<String, Type> BY_CLASS_NAME = new HashMap<>();

static {
for (final Type type : values()) {
BY_CLASS_NAME.put(type.navigatorItemClassName, type);
}
}

private final String navigatorItemClassName;

Type(final String navigatorItemClassName) {
this.navigatorItemClassName = navigatorItemClassName;
}

public static Type ofExpressionNodeClassName(final String nodeClassName) {
return BY_CLASS_NAME.getOrDefault(nodeClassName, ITEM);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,18 @@

package org.kie.workbench.common.dmn.client.docks.navigator.factories;

import java.util.Optional;

import javax.enterprise.context.Dependent;
import javax.inject.Inject;

import org.kie.workbench.common.dmn.client.docks.navigator.DecisionNavigatorItem;
import org.kie.workbench.common.dmn.client.docks.navigator.DecisionNavigatorItem.Type;
import org.kie.workbench.common.stunner.core.graph.Edge;
import org.kie.workbench.common.stunner.core.graph.Node;
import org.kie.workbench.common.stunner.core.graph.content.view.View;
import org.kie.workbench.common.stunner.core.util.DefinitionUtils;

import static org.kie.workbench.common.dmn.client.docks.navigator.DecisionNavigatorItem.Type.ITEM;
import static org.kie.workbench.common.dmn.client.docks.navigator.DecisionNavigatorItem.Type.ROOT;

@Dependent
Expand All @@ -42,6 +45,10 @@ public DecisionNavigatorItem makeRoot(final Node<View, Edge> node) {
}

public DecisionNavigatorItem makeItem(final Node<View, Edge> node) {
return baseItemFactory.makeItem(node, ITEM);
final String nodeClassName = Optional.ofNullable(DefinitionUtils.getElementDefinition(node))
.map(elementDefinition -> elementDefinition.getClass().getSimpleName())
.orElse(Node.class.getSimpleName());

return baseItemFactory.makeItem(node, Type.ofExpressionNodeClassName(nodeClassName));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -92,31 +92,31 @@
content: "\f0da";
}

li.kie-root div > span:before {
li.kie-root > div > span:before {
content: "\f1e0";
}

li.kie-item div > span:before {
li.kie-item > div > span:before {
content: "\f111";
}

li.kie-context div > span:before {
li.kie-context > div > span:before {
content: "\f192";
}

li.kie-decision-table div > span:before {
li.kie-decision-table > div > span:before {
content: "\f0ce";
}

li.kie-invocation div > span:before {
li.kie-invocation > div > span:before {
content: "\f0a1";
}

li.kie-list div > span:before {
li.kie-list > div > span:before {
content: "\f0ca";
}

li.kie-function-definition div > span:before {
li.kie-function-definition > div > span:before {
content: "f ( )";
font-family: serif;
font-style: italic;
Expand All @@ -125,19 +125,55 @@
margin: -0.1em 0 0 -1.8em;
}

li.kie-literal-expression div > span:before {
li.kie-literal-expression > div > span:before {
content: "Σ";
font-family: sans-serif;
font-weight: bold;
font-size: 1.2em;
margin: 0 0 0 -1.15em;
}

li.kie-relation div > span:before {
li.kie-relation > div > span:before {
content: "\f0c1";
font-size: 1.2em;
transform: rotate(-45deg);
margin: -0.15em 0 0 -1.45em;
}

li.kie-text-annotation > div > span:before {
width: 1.8em;
height: 1.8em;
content: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIzLjAuNCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA0MjAgNDIwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0MjAgNDIwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6IzRENTI1ODt9Cjwvc3R5bGU+CjxwYXRoIGlkPSJJY29uIiBjbGFzcz0ic3QwIiBkPSJNNDAsMTIwaDgwVjgwSDQwQzE3LjksODAsMCw5Ny45LDAsMTIwdjE4MGMwLDIyLjEsMTcuOSw0MCw0MCw0MGg4MHYtNDBINDBWMTIweiBNNDIwLDIyMGgtMjB2LTYwCgloLTQwdjQwaC0yMHYyMGgtMjB2LTYwaC00MHY2MGgtMjB2LTQwaC0zOS43djIwSDIwMHYtMjBoLTQwdjIwaC0yMHYyMGgtMjB2LTYwSDgwdjgwaDYwdjIwaDQwdi0yMGgyNDBWMjIweiIvPgo8L3N2Zz4K");
}

li.kie-business-knowledge-model > div > span:before {
width: 1.8em;
height: 1.8em;
content: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIxLjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA0MjAgNDIwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0MjAgNDIwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6IzRENTI1ODt9Cjwvc3R5bGU+CjxwYXRoIGlkPSJJY29uXzFfIiBjbGFzcz0ic3QwIiBkPSJNMzgwLDEyMHYxNDMuNEwzNDMuNCwzMDBINDBWMTU2LjZMNzYuNiwxMjBIMzgwIE00MDAsODBINjguM2MtNS4zLDAtMTAuNCwyLjEtMTQuMSw1LjlMNS45LDEzNC4xCglDMi4xLDEzNy45LDAsMTQzLDAsMTQ4LjNWMzIwYzAsMTEsOSwyMCwyMCwyMGgzMzEuN2M1LjMsMCwxMC40LTIuMSwxNC4xLTUuOWw0OC4zLTQ4LjNjMy44LTMuOCw1LjktOC44LDUuOS0xNC4xVjEwMAoJQzQyMCw4OSw0MTEsODAsNDAwLDgwTDQwMCw4MHoiLz4KPC9zdmc+Cg==");
}

li.kie-input-data > div > span:before {
width: 1.8em;
height: 1.8em;
content: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIxLjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA0MjAgNDIwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0MjAgNDIwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6IzRENTI1ODt9Cjwvc3R5bGU+CjxwYXRoIGlkPSJJY29uIiBjbGFzcz0ic3QwIiBkPSJNMjkyLDEyMGM0OC41LDAsODgsMzkuNSw4OCw4OHY0YzAsNDguNS0zOS41LDg4LTg4LDg4SDEyOGMtNDguNSwwLTg4LTM5LjUtODgtODh2LTQKCWMwLTQ4LjUsMzkuNS04OCw4OC04OEgyOTIgTTI5Miw4MEgxMjhDNTcuMyw4MCwwLDEzNy4zLDAsMjA4djRjMCw3MC43LDU3LjMsMTI4LDEyOCwxMjhoMTY0YzcwLjcsMCwxMjgtNTcuMywxMjgtMTI4di00CglDNDIwLDEzNy4zLDM2Mi43LDgwLDI5Miw4MEwyOTIsODB6Ii8+Cjwvc3ZnPgo=");
}

li.kie-decision-service > div > span:before {
width: 1.8em;
height: 1.8em;
content: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIyLjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA0MjAgNDIwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0MjAgNDIwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6IzRENTI1ODt9Cjwvc3R5bGU+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0zNTAsODBINzBjLTM4LjcsMC03MCwzMS4zLTcwLDcwdjEyMGMwLDM4LjcsMzEuMyw3MCw3MCw3MGgyODBjMzguNywwLDcwLTMxLjMsNzAtNzBWMTUwCglDNDIwLDExMS4zLDM4OC43LDgwLDM1MCw4MHogTTc4LDExOS45aDI2NGMyMSwwLDM4LDE3LDM4LDM4VjIwMEg0MHYtNDIuMUM0MCwxMzYuOSw1NywxMTkuOSw3OCwxMTkuOXogTTM0MiwyOTkuOUg3OAoJYy0yMSwwLTM4LTE3LTM4LTM4VjIyMGgzNDB2NDEuOUMzODAsMjgyLjksMzYzLDI5OS45LDM0MiwyOTkuOXoiLz4KPC9zdmc+Cg==");
}

li.kie-knowledge-source > div > span:before {
width: 1.8em;
height: 1.8em;
content: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIxLjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA0MjAgNDIwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0MjAgNDIwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6IzRENTI1ODt9Cjwvc3R5bGU+CjxwYXRoIGlkPSJJY29uIiBjbGFzcz0ic3QwIiBkPSJNMzgwLjMsMTIwLjF2MTA5LjRjLTI0LjYtOS41LTQ5LjEtMTQuMy03My0xNC4zYy0yMiwwLTQzLjIsNC4xLTYzLjMsMTIuMmMtMjIuNCw5LjEtNDMuMiwyMy4yLTYyLDQyCgljLTIwLjgsMjAuOC00My4yLDMwLjgtNjguNywzMC44Yy0yOS42LDAtNTcuMS0xMy43LTczLTIzLjRWMTIwLjFIMzgwLjMgTTQwMC4zLDgwLjFoLTM4MGMtMTEsMC0yMCw5LTIwLDIwdjE5NS4yCgljMCwxLjUsMC43LDMsMS45LDMuOWM5LjgsNy42LDU2LDQxLDExMS4xLDQxYzMxLjEsMCw2NS4xLTEwLjYsOTctNDIuNmMzMS45LTMxLjksNjUuOS00Mi42LDk3LTQyLjZjNDcuNiwwLDg4LjYsMjQuOSwxMDUuMSwzNi42CgljMC45LDAuNiwxLjksMC45LDIuOSwwLjljMi42LDAsNS0yLjEsNS01VjEwMC4xQzQyMC4zLDg5LDQxMS4zLDgwLjEsNDAwLjMsODAuMUw0MDAuMyw4MC4xeiIvPgo8L3N2Zz4K");
}

li.kie-decision > div > span:before {
width: 1.8em;
height: 1.8em;
content: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIyLjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA0MjAgNDIwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0MjAgNDIwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6IzRENTI1ODt9Cjwvc3R5bGU+CjxwYXRoIGlkPSJJY29uIiBjbGFzcz0ic3QwIiBkPSJNMzk1LDgwSDI1QzExLjIsODAsMCw5MS4yLDAsMTA1djIxMGMwLDEzLjgsMTEuMiwyNSwyNSwyNWgzNzBjMTMuOCwwLDI1LTExLjIsMjUtMjVWMTA1CglDNDIwLDkxLjIsNDA4LjgsODAsMzk1LDgweiBNNDAsMzAwVjEyMGgzNDB2MTgwSDQweiIvPgo8L3N2Zz4K");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,10 @@
import java.util.TreeSet;

import org.junit.Test;
import org.kie.workbench.common.dmn.client.docks.navigator.DecisionNavigatorItem.Type;
import org.uberfire.mvp.Command;

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertTrue;
Expand Down Expand Up @@ -158,4 +160,24 @@ public void testCompareToWhenItemOrderingNameIsLessThanObjectOrderingName() {

assertTrue(result > 0);
}

@Test
public void testTypeEnumWhenRetrievingByExistingItemClassName() {
assertThat(Type.ofExpressionNodeClassName("InputData")).isEqualTo(Type.INPUT_DATA);
}

@Test
public void testTypeEnumWhenRetrievingByNotExistingItemClassName() {
assertThat(Type.ofExpressionNodeClassName("NOT_EXISTING")).isEqualTo(ITEM);
}

@Test
public void testTypeEnumWhenRetrievingByEmptyClassName() {
assertThat(Type.ofExpressionNodeClassName("")).isEqualTo(ITEM);
}

@Test
public void testTypeEnumWhenRetrievingByNullClassName() {
assertThat(Type.ofExpressionNodeClassName(null)).isEqualTo(ITEM);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,15 @@
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.kie.workbench.common.dmn.api.definition.model.DecisionService;
import org.kie.workbench.common.dmn.client.docks.navigator.DecisionNavigatorItem;
import org.kie.workbench.common.stunner.core.graph.Edge;
import org.kie.workbench.common.stunner.core.graph.Node;
import org.kie.workbench.common.stunner.core.graph.content.view.View;
import org.mockito.Mock;

import static org.junit.Assert.assertEquals;
import static org.kie.workbench.common.dmn.client.docks.navigator.DecisionNavigatorItem.Type.DECISION_SERVICE;
import static org.kie.workbench.common.dmn.client.docks.navigator.DecisionNavigatorItem.Type.ITEM;
import static org.kie.workbench.common.dmn.client.docks.navigator.DecisionNavigatorItem.Type.ROOT;
import static org.mockito.Mockito.spy;
Expand All @@ -41,6 +43,9 @@ public class DecisionNavigatorItemFactoryTest {
@Mock
private Node<View, Edge> node;

@Mock
private View content;

@Mock
private DecisionNavigatorItem item;

Expand All @@ -66,4 +71,24 @@ public void testMakeItem() {

assertEquals(item, factory.makeItem(node));
}

@Test
public void testMakeItemWhenTypeIsDecisionService() {

when(baseItemFactory.makeItem(node, DECISION_SERVICE)).thenReturn(item);
when(node.getContent()).thenReturn(content);
when(content.getDefinition()).thenReturn(new DecisionService());

assertEquals(item, factory.makeItem(node));
}

@Test
public void testMakeItemWhenTypeIsNotMapped() {

when(baseItemFactory.makeItem(node, ITEM)).thenReturn(item);
when(node.getContent()).thenReturn(content);
when(content.getDefinition()).thenReturn(new Object());

assertEquals(item, factory.makeItem(node));
}
}

0 comments on commit cb5c65e

Please sign in to comment.