Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -321,15 +321,15 @@ public static void applyStyle(Graph graph, StyleProvider styleProvider) {
// Bus nodes depend on bus index assigned during layout
graph.getBusNodesStream().forEach(busNode -> {
busNode.setStyleClasses(styleProvider.getBusNodeStyleClasses(busNode));
busNode.setStyleClass(styleProvider.getBusNodeStyle(busNode));
busNode.setStyle(styleProvider.getBusNodeStyle(busNode));
});

graph.getThreeWtNodesStream().forEach(tn ->
tn.setStyleClasses(styleProvider.getNodeStyleClasses(tn)));

graph.getInjections().forEach(injection -> {
injection.setStyleClasses(styleProvider.getInjectionStyleClasses(injection));
injection.setStyleClass(styleProvider.getInjectionStyle(injection));
injection.setStyle(styleProvider.getInjectionStyle(injection));
injection.getSvgEdgeInfo().ifPresent(sei ->
sei.edgeInfo().setStyleClassesAB(styleProvider::getEdgeInfoStyleClasses));
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public class BusNode extends AbstractNode {
private final List<Injection> injections = new ArrayList<>();
private final String legend;
private List<String> styleClasses = Collections.emptyList();
private String styleClass;
private String style;

public BusNode(IdProvider idProvider, String id, List<Injection> injections, String legend) {
this(idProvider.createSvgId(id), id, injections, legend);
Expand Down Expand Up @@ -83,12 +83,12 @@ public void setStyleClasses(List<String> styleClasses) {
this.styleClasses = styleClasses;
}

public String getStyleClass() {
return styleClass;
public String getStyle() {
return style;
}

public void setStyleClass(String styleClass) {
this.styleClass = styleClass;
public void setStyle(String style) {
this.style = style;
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@
/**
* @author Christian Biasuzzi {@literal <christian.biasuzzi at soft.it>}
*/
public record EdgeStyleInfo(List<String> styleClasses, String styleClass, List<String> highlightStyleClasses) {
public record EdgeStyleInfo(List<String> styleClasses, String style, List<String> highlightStyleClasses) {

public EdgeStyleInfo(List<String> styleClasses, String styleClass) {
this(styleClasses, styleClass, Collections.emptyList());
public EdgeStyleInfo(List<String> styleClasses, String style) {
this(styleClasses, style, Collections.emptyList());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public enum Type {
private Point arrowPoint;
private final SvgEdgeInfo svgEdgeInfo;
private List<String> styleClasses = Collections.emptyList();
private String styleClass;
private String style;

public Injection(IdProvider idProvider, String equipmentId, String nameOrId, Type type, EdgeInfo edgeInfo) {
super(idProvider.createSvgId(equipmentId), equipmentId, nameOrId);
Expand Down Expand Up @@ -105,11 +105,11 @@ public void setStyleClasses(List<String> styleClasses) {
this.styleClasses = styleClasses;
}

public String getStyleClass() {
return styleClass;
public String getStyle() {
return style;
}

public void setStyleClass(String styleClass) {
this.styleClass = styleClass;
public void setStyle(String style) {
this.style = style;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ private void drawInjections(BusNode busNode, XMLStreamWriter writer) throws XMLS
writer.writeStartElement(GROUP_ELEMENT_NAME);
writeId(writer, injection);
writeStyleClasses(writer, injection.getStyleClasses());
writeStyleAttribute(writer, injection.getStyleClass());
writeStyleAttribute(writer, injection.getStyle());
insertName(writer, injection::getName);
drawInjectionEdge(injection, writer);
drawInjectionIcon(injection, writer);
Expand Down Expand Up @@ -396,7 +396,7 @@ private void drawHalfEdge(XMLStreamWriter writer, BranchEdge edge, BranchEdge.Si
writer.writeEmptyElement(POLYLINE_ELEMENT_NAME);

writeStyleClasses(writer, edge.getEdgeStyleInfo(side).styleClasses(), StyleProvider.EDGE_PATH_CLASS);
writeStyleAttribute(writer, edge.getEdgeStyleInfo(side).styleClass());
writeStyleAttribute(writer, edge.getEdgeStyleInfo(side).style());

writer.writeAttribute(POINTS_ATTRIBUTE, getPolylinePointsString(edge, side));
}
Expand All @@ -417,7 +417,7 @@ private void drawLoopEdge(XMLStreamWriter writer, BranchEdge edge, BranchEdge.Si
writer.writeEmptyElement(PATH_ELEMENT_NAME);
writeStyleClasses(writer, edge.getEdgeStyleInfo(side).styleClasses(), StyleProvider.EDGE_PATH_CLASS);
writer.writeAttribute(PATH_D_ATTRIBUTE, getLoopPathString(edge, side));
writeStyleAttribute(writer, edge.getEdgeStyleInfo(side).styleClass());
writeStyleAttribute(writer, edge.getEdgeStyleInfo(side).style());
}

private String getPolylinePointsString(BranchEdge edge, BranchEdge.Side side) {
Expand Down Expand Up @@ -449,7 +449,7 @@ private void drawThreeWtEdge(XMLStreamWriter writer, ThreeWtEdge edge) throws XM
insertName(writer, edge::getName);
writer.writeEmptyElement(POLYLINE_ELEMENT_NAME);
writeStyleClasses(writer, StyleProvider.EDGE_PATH_CLASS);
writeStyleAttribute(writer, edge.getEdgeStyleInfo().styleClass());
writeStyleAttribute(writer, edge.getEdgeStyleInfo().style());
writer.writeAttribute(POINTS_ATTRIBUTE, getPolylinePointsString(edge));
writer.writeEndElement();
}
Expand Down Expand Up @@ -496,7 +496,7 @@ private void draw3WtWinding(ThreeWtEdge edge, ThreeWtNode threeWtNode, XMLStream
Point circleCenter = edge.getPoints().get(1).atDistance(radius, threeWtNode.getPosition());
writer.writeEmptyElement(CIRCLE_ELEMENT_NAME);
writeStyleClasses(writer, edge.getEdgeStyleInfo().styleClasses(), StyleProvider.WINDING_CLASS);
writeStyleAttribute(writer, edge.getEdgeStyleInfo().styleClass());
writeStyleAttribute(writer, edge.getEdgeStyleInfo().style());
writer.writeAttribute("cx", getFormattedValue(circleCenter.x() - threeWtNode.getX()));
writer.writeAttribute("cy", getFormattedValue(circleCenter.y() - threeWtNode.getY()));
writer.writeAttribute(CIRCLE_RADIUS_ATTRIBUTE, getFormattedValue(svgParameters.getTransformerCircleRadius()));
Expand All @@ -522,7 +522,7 @@ private void drawPstArrow(XMLStreamWriter writer, ThreeWtNode threeWtNode, Three
writer.writeAttribute(PATH_D_ATTRIBUTE, getPstArrowPath(arrowSize));
writer.writeAttribute(TRANSFORM_ATTRIBUTE, getMatrixString(matrix));
writeStyleClasses(writer, edge.getEdgeStyleInfo().styleClasses(), StyleProvider.WINDING_CLASS);
writeStyleAttribute(writer, edge.getEdgeStyleInfo().styleClass());
writeStyleAttribute(writer, edge.getEdgeStyleInfo().style());
}

private void drawEdgeInfos(Graph graph, XMLStreamWriter writer) throws XMLStreamException {
Expand Down Expand Up @@ -807,7 +807,7 @@ private void draw2WtWinding(XMLStreamWriter writer, BranchEdge edge, BranchEdge.
writer.writeEmptyElement(CIRCLE_ELEMENT_NAME);

writeStyleClasses(writer, edge.getEdgeStyleInfo(side).styleClasses(), StyleProvider.WINDING_CLASS);
writeStyleAttribute(writer, edge.getEdgeStyleInfo(side).styleClass());
writeStyleAttribute(writer, edge.getEdgeStyleInfo(side).style());

List<Point> halfPoints = edge.getPoints(side);
Point point1 = halfPoints.getLast(); // point near 2wt
Expand Down Expand Up @@ -936,7 +936,7 @@ private void writeBusNodeLegend(XMLStreamWriter writer, VoltageLevelNode vlNode)
writer.writeStartElement(SPAN_ELEMENT_NAME);

writeStyleClasses(writer, busNode.getStyleClasses(), StyleProvider.LEGEND_SQUARE_CLASS);
writeStyleAttribute(writer, busNode.getStyleClass());
writeStyleAttribute(writer, busNode.getStyle());
writer.writeEndElement();

writer.writeCharacters(busNode.getLegend());
Expand Down Expand Up @@ -981,7 +981,7 @@ private void drawNode(Graph graph, XMLStreamWriter writer, VoltageLevelNode vlNo
writeId(writer, busNode);

writeStyleClasses(writer, busNode.getStyleClasses(), StyleProvider.BUSNODE_CLASS);
writeStyleAttribute(writer, busNode.getStyleClass());
writeStyleAttribute(writer, busNode.getStyle());

traversingEdges.addAll(graph.getBusEdges(busNode));
traversingInjections.addAll(busNode.getInjections());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,20 +23,23 @@
private final String vlNodeId;
private final String legend;
private final List<String> classes;
private final String style;

public BusNodeMetadata(@JsonProperty("svgId") String svgId,

Check warning on line 28 in network-area-diagram/src/main/java/com/powsybl/nad/svg/metadata/BusNodeMetadata.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Constructor has 8 parameters, which is greater than 7 authorized.

See more on https://sonarcloud.io/project/issues?id=com.powsybl%3Apowsybl-diagram&issues=AZ0_W_tdfRHen9maIzxX&open=AZ0_W_tdfRHen9maIzxX&pullRequest=799
@JsonProperty("equipmentId") String equipmentId,
@JsonProperty("nbNeighbours") int nbNeighbours,
@JsonProperty("index") int index,
@JsonProperty("vlNode") String vlNodeId,
@JsonProperty("legend") String legend,
@JsonProperty("classes") List<String> classes) {
@JsonProperty("classes") List<String> classes,
@JsonProperty("style") String style) {
super(svgId, equipmentId);
this.nbNeighbours = nbNeighbours;
this.index = index;
this.vlNodeId = vlNodeId;
this.legend = legend;
this.classes = classes;
this.style = style;
}

@JsonProperty("nbNeighbours")
Expand Down Expand Up @@ -64,4 +67,10 @@
public List<String> getClasses() {
return classes;
}

@JsonInclude(JsonInclude.Include.NON_DEFAULT)
@JsonProperty("style")
public String getStyle() {
return style;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,8 @@ public DiagramMetadata addMetadata(Graph graph) {
busNode.getRingIndex(),
getPrefixedId(vlNode.getSvgId()),
busNode.getLegend(),
busNode.getStyleClasses()
busNode.getStyleClasses(),
busNode.getStyle()
))));
graph.getNodesStream().forEach(node -> nodesMetadata.add(createNodeMetadata(node)));
graph.getVoltageLevelNodesStream().forEach(
Expand All @@ -135,7 +136,8 @@ public DiagramMetadata addMetadata(Graph graph) {
busNode.getSvgId(),
vlNode.getSvgId(),
injection.getSvgEdgeInfo().map(DiagramMetadata::createEdgeInfoMetadata).orElse(null),
injection.getStyleClasses()
injection.getStyleClasses(),
injection.getStyle()
)))));
graph.getBranchEdgeStream().forEach(edge -> edgesMetadata.add(new EdgeMetadata(
getPrefixedId(edge.getSvgId()),
Expand All @@ -152,7 +154,9 @@ public DiagramMetadata addMetadata(Graph graph) {
edge.getSvgEdgeInfo(BranchEdge.Side.TWO).map(DiagramMetadata::createEdgeInfoMetadata).orElse(null),
edge.getSvgEdgeInfoMiddle().map(DiagramMetadata::createEdgeInfoMetadata).orElse(null),
edge.getEdgeStyleInfo(BranchEdge.Side.ONE).styleClasses(),
edge.getEdgeStyleInfo(BranchEdge.Side.TWO).styleClasses()
edge.getEdgeStyleInfo(BranchEdge.Side.TWO).styleClasses(),
edge.getEdgeStyleInfo(BranchEdge.Side.ONE).style(),
edge.getEdgeStyleInfo(BranchEdge.Side.TWO).style()
)));
graph.getThreeWtEdgesStream().forEach(edge -> {
String threeWtNodeSvgId = graph.getThreeWtNode(edge).getSvgId();
Expand All @@ -171,6 +175,8 @@ public DiagramMetadata addMetadata(Graph graph) {
null,
null,
edge.getEdgeStyleInfo().styleClasses(),
null,
edge.getEdgeStyleInfo().style(),
null
));
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ public class EdgeMetadata extends AbstractMetadataItem {
private final EdgeInfoMetadata edgeInfoMiddle;
private final List<String> classes1;
private final List<String> classes2;
private final String style1;
private final String style2;

public EdgeMetadata(@JsonProperty("svgId") String svgId,
@JsonProperty("equipmentId") String equipmentId,
Expand All @@ -46,7 +48,9 @@ public EdgeMetadata(@JsonProperty("svgId") String svgId,
@JsonProperty("edgeInfo2") EdgeInfoMetadata edgeInfo2,
@JsonProperty("edgeInfoMiddle") EdgeInfoMetadata edgeInfoMiddle,
@JsonProperty("classes1") List<String> classes1,
@JsonProperty("classes2") List<String> classes2
@JsonProperty("classes2") List<String> classes2,
@JsonProperty("style1") String style1,
@JsonProperty("style2") String style2
) {
super(svgId, equipmentId);
this.node1SvgId = node1SvgId;
Expand All @@ -62,6 +66,8 @@ public EdgeMetadata(@JsonProperty("svgId") String svgId,
this.edgeInfoMiddle = edgeInfoMiddle;
this.classes1 = classes1;
this.classes2 = classes2;
this.style1 = style1;
this.style2 = style2;
}

@JsonProperty("node1")
Expand Down Expand Up @@ -132,4 +138,16 @@ public List<String> getClasses1() {
public List<String> getClasses2() {
return classes2;
}

@JsonInclude(JsonInclude.Include.NON_DEFAULT)
@JsonProperty("style1")
public String getStyle1() {
return style1;
}

@JsonInclude(JsonInclude.Include.NON_DEFAULT)
@JsonProperty("style2")
public String getStyle2() {
return style2;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,20 +23,23 @@
private final String busNodeId;
private final String vlNodeId;
private final List<String> classes;
private final String style;

public InjectionMetadata(@JsonProperty("svgId") String svgId,

Check warning on line 28 in network-area-diagram/src/main/java/com/powsybl/nad/svg/metadata/InjectionMetadata.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Constructor has 8 parameters, which is greater than 7 authorized.

See more on https://sonarcloud.io/project/issues?id=com.powsybl%3Apowsybl-diagram&issues=AZ0_W_wMfRHen9maIzxY&open=AZ0_W_wMfRHen9maIzxY&pullRequest=799
@JsonProperty("equipmentId") String equipmentId,
@JsonProperty("componentType") String componentType,
@JsonProperty("busNodeId") String busNodeId,
@JsonProperty("vlNodeId") String vlNodeId,
@JsonProperty("edgeInfo") EdgeInfoMetadata edgeInfo,
@JsonProperty("classes") List<String> classes) {
@JsonProperty("classes") List<String> classes,
@JsonProperty("style") String style) {
super(svgId, equipmentId);
this.componentType = componentType;
this.busNodeId = busNodeId;
this.vlNodeId = vlNodeId;
this.edgeInfo = edgeInfo;
this.classes = classes;
this.style = style;
}

@JsonProperty("componentType")
Expand Down Expand Up @@ -64,4 +67,10 @@
public List<String> getClasses() {
return classes;
}

@JsonInclude(JsonInclude.Include.NON_DEFAULT)
@JsonProperty("style")
public String getStyle() {
return style;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@
import java.nio.file.FileSystem;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;

/**
Expand Down Expand Up @@ -145,11 +147,11 @@ void testOverUnderVoltage() {
void testEdgeInfoMetadata() {
Network network = Networks.createTwoVoltageLevels();
labelProvider = new DefaultLabelProvider.Builder()
.setInfoSideExternal(DefaultLabelProvider.EdgeInfoEnum.CURRENT)
.setInfoSideInternal(DefaultLabelProvider.EdgeInfoEnum.ACTIVE_POWER)
.setInfoMiddleSide1(DefaultLabelProvider.EdgeInfoEnum.NAME)
.setInfoMiddleSide2(DefaultLabelProvider.EdgeInfoEnum.EMPTY)
.build(network, getSvgParameters());
.setInfoSideExternal(DefaultLabelProvider.EdgeInfoEnum.CURRENT)
.setInfoSideInternal(DefaultLabelProvider.EdgeInfoEnum.ACTIVE_POWER)
.setInfoMiddleSide1(DefaultLabelProvider.EdgeInfoEnum.NAME)
.setInfoMiddleSide2(DefaultLabelProvider.EdgeInfoEnum.EMPTY)
.build(network, getSvgParameters());
Line line = network.getLine("l1");
line.getTerminal1().setP(1400.0).setQ(400.0);
line.getTerminal2().setP(1410.0).setQ(410.0);
Expand All @@ -158,8 +160,39 @@ void testEdgeInfoMetadata() {
roundTrip(network, "/edge_info_metadata.json", new LayoutParameters().setInjectionsAdded(true));
}

@Test
void testCustomStyleProviderMetadata() {
Network network = Networks.createNodeBreakerNetworkWithBranchStatus("TestNodeDecorators", "test");

Map<String, CustomStyleProvider.BusNodeStyles> busNodesStyles = new HashMap<>();
busNodesStyles.put("VL1_10", new CustomStyleProvider.BusNodeStyles("yellow", null, "2px"));
busNodesStyles.put("VL2_30", new CustomStyleProvider.BusNodeStyles("red", "black", "4px"));

Map<String, CustomStyleProvider.EdgeStyles> edgesStyles = new HashMap<>();
edgesStyles.put("L11", new CustomStyleProvider.EdgeStyles("blue", "2px", null, "blue", "2px", null));
edgesStyles.put("L12", new CustomStyleProvider.EdgeStyles("green", "4px", "8,4", "green", "4px", "4,2"));
edgesStyles.put("T11", new CustomStyleProvider.EdgeStyles("red", "8px", null, "brown", "8px", null));
edgesStyles.put("T12", new CustomStyleProvider.EdgeStyles("orange", null, null, "orange", null, null));

Map<String, CustomStyleProvider.ThreeWtStyles> threeWtsStyles = new HashMap<>();
threeWtsStyles.put("T3_12",
new CustomStyleProvider.ThreeWtStyles(
"gray", "1px", null,
"purple", "2px", "2,2",
"pink", "3px", null
)
);

labelProvider = new DefaultLabelProvider(network, getSvgParameters());
StyleProvider styleProvider = new CustomStyleProvider(busNodesStyles, edgesStyles, threeWtsStyles);
roundTrip(network, "/custom_style_metadata.json", new LayoutParameters().setInjectionsAdded(true), styleProvider);
}

private DiagramMetadata roundTrip(Network network, String referenceMetadata, LayoutParameters layoutParameters) {
StyleProvider styleProvider = new TopologicalStyleProvider(network);
return roundTrip(network, referenceMetadata, layoutParameters, getStyleProvider(network));
}

private DiagramMetadata roundTrip(Network network, String referenceMetadata, LayoutParameters layoutParameters, StyleProvider styleProvider) {
Graph graph = new NetworkGraphBuilder(network, VoltageLevelFilter.NO_FILTER, getLabelProvider(network), layoutParameters, new IntIdProvider()).buildGraph();
new BasicForceLayout().run(graph, layoutParameters);
NetworkGraphBuilder.applyStyle(graph, styleProvider);
Expand Down
Loading