Skip to content

Commit d0c3c52

Browse files
CBiasuzziflo-dup
authored andcommitted
adds inline custom style to the json metadata; fixes naming
Signed-off-by: Christian Biasuzzi <christian.biasuzzi@soft.it>
1 parent 26e2de7 commit d0c3c52

11 files changed

Lines changed: 346 additions & 36 deletions

File tree

network-area-diagram/src/main/java/com/powsybl/nad/build/iidm/NetworkGraphBuilder.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -321,15 +321,15 @@ public static void applyStyle(Graph graph, StyleProvider styleProvider) {
321321
// Bus nodes depend on bus index assigned during layout
322322
graph.getBusNodesStream().forEach(busNode -> {
323323
busNode.setStyleClasses(styleProvider.getBusNodeStyleClasses(busNode));
324-
busNode.setStyleClass(styleProvider.getBusNodeStyle(busNode));
324+
busNode.setStyle(styleProvider.getBusNodeStyle(busNode));
325325
});
326326

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

330330
graph.getInjections().forEach(injection -> {
331331
injection.setStyleClasses(styleProvider.getInjectionStyleClasses(injection));
332-
injection.setStyleClass(styleProvider.getInjectionStyle(injection));
332+
injection.setStyle(styleProvider.getInjectionStyle(injection));
333333
injection.getSvgEdgeInfo().ifPresent(sei ->
334334
sei.edgeInfo().setStyleClassesAB(styleProvider::getEdgeInfoStyleClasses));
335335
});

network-area-diagram/src/main/java/com/powsybl/nad/model/BusNode.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public class BusNode extends AbstractNode {
2626
private final List<Injection> injections = new ArrayList<>();
2727
private final String legend;
2828
private List<String> styleClasses = Collections.emptyList();
29-
private String styleClass;
29+
private String style;
3030

3131
public BusNode(IdProvider idProvider, String id, List<Injection> injections, String legend) {
3232
this(idProvider.createSvgId(id), id, injections, legend);
@@ -83,12 +83,12 @@ public void setStyleClasses(List<String> styleClasses) {
8383
this.styleClasses = styleClasses;
8484
}
8585

86-
public String getStyleClass() {
87-
return styleClass;
86+
public String getStyle() {
87+
return style;
8888
}
8989

90-
public void setStyleClass(String styleClass) {
91-
this.styleClass = styleClass;
90+
public void setStyle(String style) {
91+
this.style = style;
9292
}
9393
}
9494

network-area-diagram/src/main/java/com/powsybl/nad/model/EdgeStyleInfo.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
/**
1414
* @author Christian Biasuzzi {@literal <christian.biasuzzi at soft.it>}
1515
*/
16-
public record EdgeStyleInfo(List<String> styleClasses, String styleClass, List<String> highlightStyleClasses) {
16+
public record EdgeStyleInfo(List<String> styleClasses, String style, List<String> highlightStyleClasses) {
1717

18-
public EdgeStyleInfo(List<String> styleClasses, String styleClass) {
19-
this(styleClasses, styleClass, Collections.emptyList());
18+
public EdgeStyleInfo(List<String> styleClasses, String style) {
19+
this(styleClasses, style, Collections.emptyList());
2020
}
2121
}

network-area-diagram/src/main/java/com/powsybl/nad/model/Injection.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public enum Type {
3838
private Point arrowPoint;
3939
private final SvgEdgeInfo svgEdgeInfo;
4040
private List<String> styleClasses = Collections.emptyList();
41-
private String styleClass;
41+
private String style;
4242

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

108-
public String getStyleClass() {
109-
return styleClass;
108+
public String getStyle() {
109+
return style;
110110
}
111111

112-
public void setStyleClass(String styleClass) {
113-
this.styleClass = styleClass;
112+
public void setStyle(String style) {
113+
this.style = style;
114114
}
115115
}

network-area-diagram/src/main/java/com/powsybl/nad/svg/SvgWriter.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ private void drawInjections(BusNode busNode, XMLStreamWriter writer) throws XMLS
187187
writer.writeStartElement(GROUP_ELEMENT_NAME);
188188
writeId(writer, injection);
189189
writeStyleClasses(writer, injection.getStyleClasses());
190-
writeStyleAttribute(writer, injection.getStyleClass());
190+
writeStyleAttribute(writer, injection.getStyle());
191191
insertName(writer, injection::getName);
192192
drawInjectionEdge(injection, writer);
193193
drawInjectionIcon(injection, writer);
@@ -396,7 +396,7 @@ private void drawHalfEdge(XMLStreamWriter writer, BranchEdge edge, BranchEdge.Si
396396
writer.writeEmptyElement(POLYLINE_ELEMENT_NAME);
397397

398398
writeStyleClasses(writer, edge.getEdgeStyleInfo(side).styleClasses(), StyleProvider.EDGE_PATH_CLASS);
399-
writeStyleAttribute(writer, edge.getEdgeStyleInfo(side).styleClass());
399+
writeStyleAttribute(writer, edge.getEdgeStyleInfo(side).style());
400400

401401
writer.writeAttribute(POINTS_ATTRIBUTE, getPolylinePointsString(edge, side));
402402
}
@@ -417,7 +417,7 @@ private void drawLoopEdge(XMLStreamWriter writer, BranchEdge edge, BranchEdge.Si
417417
writer.writeEmptyElement(PATH_ELEMENT_NAME);
418418
writeStyleClasses(writer, edge.getEdgeStyleInfo(side).styleClasses(), StyleProvider.EDGE_PATH_CLASS);
419419
writer.writeAttribute(PATH_D_ATTRIBUTE, getLoopPathString(edge, side));
420-
writeStyleAttribute(writer, edge.getEdgeStyleInfo(side).styleClass());
420+
writeStyleAttribute(writer, edge.getEdgeStyleInfo(side).style());
421421
}
422422

423423
private String getPolylinePointsString(BranchEdge edge, BranchEdge.Side side) {
@@ -449,7 +449,7 @@ private void drawThreeWtEdge(XMLStreamWriter writer, ThreeWtEdge edge) throws XM
449449
insertName(writer, edge::getName);
450450
writer.writeEmptyElement(POLYLINE_ELEMENT_NAME);
451451
writeStyleClasses(writer, StyleProvider.EDGE_PATH_CLASS);
452-
writeStyleAttribute(writer, edge.getEdgeStyleInfo().styleClass());
452+
writeStyleAttribute(writer, edge.getEdgeStyleInfo().style());
453453
writer.writeAttribute(POINTS_ATTRIBUTE, getPolylinePointsString(edge));
454454
writer.writeEndElement();
455455
}
@@ -496,7 +496,7 @@ private void draw3WtWinding(ThreeWtEdge edge, ThreeWtNode threeWtNode, XMLStream
496496
Point circleCenter = edge.getPoints().get(1).atDistance(radius, threeWtNode.getPosition());
497497
writer.writeEmptyElement(CIRCLE_ELEMENT_NAME);
498498
writeStyleClasses(writer, edge.getEdgeStyleInfo().styleClasses(), StyleProvider.WINDING_CLASS);
499-
writeStyleAttribute(writer, edge.getEdgeStyleInfo().styleClass());
499+
writeStyleAttribute(writer, edge.getEdgeStyleInfo().style());
500500
writer.writeAttribute("cx", getFormattedValue(circleCenter.x() - threeWtNode.getX()));
501501
writer.writeAttribute("cy", getFormattedValue(circleCenter.y() - threeWtNode.getY()));
502502
writer.writeAttribute(CIRCLE_RADIUS_ATTRIBUTE, getFormattedValue(svgParameters.getTransformerCircleRadius()));
@@ -522,7 +522,7 @@ private void drawPstArrow(XMLStreamWriter writer, ThreeWtNode threeWtNode, Three
522522
writer.writeAttribute(PATH_D_ATTRIBUTE, getPstArrowPath(arrowSize));
523523
writer.writeAttribute(TRANSFORM_ATTRIBUTE, getMatrixString(matrix));
524524
writeStyleClasses(writer, edge.getEdgeStyleInfo().styleClasses(), StyleProvider.WINDING_CLASS);
525-
writeStyleAttribute(writer, edge.getEdgeStyleInfo().styleClass());
525+
writeStyleAttribute(writer, edge.getEdgeStyleInfo().style());
526526
}
527527

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

809809
writeStyleClasses(writer, edge.getEdgeStyleInfo(side).styleClasses(), StyleProvider.WINDING_CLASS);
810-
writeStyleAttribute(writer, edge.getEdgeStyleInfo(side).styleClass());
810+
writeStyleAttribute(writer, edge.getEdgeStyleInfo(side).style());
811811

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

938938
writeStyleClasses(writer, busNode.getStyleClasses(), StyleProvider.LEGEND_SQUARE_CLASS);
939-
writeStyleAttribute(writer, busNode.getStyleClass());
939+
writeStyleAttribute(writer, busNode.getStyle());
940940
writer.writeEndElement();
941941

942942
writer.writeCharacters(busNode.getLegend());
@@ -981,7 +981,7 @@ private void drawNode(Graph graph, XMLStreamWriter writer, VoltageLevelNode vlNo
981981
writeId(writer, busNode);
982982

983983
writeStyleClasses(writer, busNode.getStyleClasses(), StyleProvider.BUSNODE_CLASS);
984-
writeStyleAttribute(writer, busNode.getStyleClass());
984+
writeStyleAttribute(writer, busNode.getStyle());
985985

986986
traversingEdges.addAll(graph.getBusEdges(busNode));
987987
traversingInjections.addAll(busNode.getInjections());

network-area-diagram/src/main/java/com/powsybl/nad/svg/metadata/BusNodeMetadata.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,23 @@ public class BusNodeMetadata extends AbstractMetadataItem {
2323
private final String vlNodeId;
2424
private final String legend;
2525
private final List<String> classes;
26+
private final String style;
2627

2728
public BusNodeMetadata(@JsonProperty("svgId") String svgId,
2829
@JsonProperty("equipmentId") String equipmentId,
2930
@JsonProperty("nbNeighbours") int nbNeighbours,
3031
@JsonProperty("index") int index,
3132
@JsonProperty("vlNode") String vlNodeId,
3233
@JsonProperty("legend") String legend,
33-
@JsonProperty("classes") List<String> classes) {
34+
@JsonProperty("classes") List<String> classes,
35+
@JsonProperty("style") String style) {
3436
super(svgId, equipmentId);
3537
this.nbNeighbours = nbNeighbours;
3638
this.index = index;
3739
this.vlNodeId = vlNodeId;
3840
this.legend = legend;
3941
this.classes = classes;
42+
this.style = style;
4043
}
4144

4245
@JsonProperty("nbNeighbours")
@@ -64,4 +67,10 @@ public String getLegend() {
6467
public List<String> getClasses() {
6568
return classes;
6669
}
70+
71+
@JsonInclude(JsonInclude.Include.NON_DEFAULT)
72+
@JsonProperty("style")
73+
public String getStyle() {
74+
return style;
75+
}
6776
}

network-area-diagram/src/main/java/com/powsybl/nad/svg/metadata/DiagramMetadata.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,8 @@ public DiagramMetadata addMetadata(Graph graph) {
122122
busNode.getRingIndex(),
123123
getPrefixedId(vlNode.getSvgId()),
124124
busNode.getLegend(),
125-
busNode.getStyleClasses()
125+
busNode.getStyleClasses(),
126+
busNode.getStyle()
126127
))));
127128
graph.getNodesStream().forEach(node -> nodesMetadata.add(createNodeMetadata(node)));
128129
graph.getVoltageLevelNodesStream().forEach(
@@ -135,7 +136,8 @@ public DiagramMetadata addMetadata(Graph graph) {
135136
busNode.getSvgId(),
136137
vlNode.getSvgId(),
137138
injection.getSvgEdgeInfo().map(DiagramMetadata::createEdgeInfoMetadata).orElse(null),
138-
injection.getStyleClasses()
139+
injection.getStyleClasses(),
140+
injection.getStyle()
139141
)))));
140142
graph.getBranchEdgeStream().forEach(edge -> edgesMetadata.add(new EdgeMetadata(
141143
getPrefixedId(edge.getSvgId()),
@@ -152,7 +154,9 @@ public DiagramMetadata addMetadata(Graph graph) {
152154
edge.getSvgEdgeInfo(BranchEdge.Side.TWO).map(DiagramMetadata::createEdgeInfoMetadata).orElse(null),
153155
edge.getSvgEdgeInfoMiddle().map(DiagramMetadata::createEdgeInfoMetadata).orElse(null),
154156
edge.getEdgeStyleInfo(BranchEdge.Side.ONE).styleClasses(),
155-
edge.getEdgeStyleInfo(BranchEdge.Side.TWO).styleClasses()
157+
edge.getEdgeStyleInfo(BranchEdge.Side.TWO).styleClasses(),
158+
edge.getEdgeStyleInfo(BranchEdge.Side.ONE).style(),
159+
edge.getEdgeStyleInfo(BranchEdge.Side.TWO).style()
156160
)));
157161
graph.getThreeWtEdgesStream().forEach(edge -> {
158162
String threeWtNodeSvgId = graph.getThreeWtNode(edge).getSvgId();
@@ -171,6 +175,8 @@ public DiagramMetadata addMetadata(Graph graph) {
171175
null,
172176
null,
173177
edge.getEdgeStyleInfo().styleClasses(),
178+
null,
179+
edge.getEdgeStyleInfo().style(),
174180
null
175181
));
176182
});

network-area-diagram/src/main/java/com/powsybl/nad/svg/metadata/EdgeMetadata.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ public class EdgeMetadata extends AbstractMetadataItem {
3131
private final EdgeInfoMetadata edgeInfoMiddle;
3232
private final List<String> classes1;
3333
private final List<String> classes2;
34+
private final String style1;
35+
private final String style2;
3436

3537
public EdgeMetadata(@JsonProperty("svgId") String svgId,
3638
@JsonProperty("equipmentId") String equipmentId,
@@ -46,7 +48,9 @@ public EdgeMetadata(@JsonProperty("svgId") String svgId,
4648
@JsonProperty("edgeInfo2") EdgeInfoMetadata edgeInfo2,
4749
@JsonProperty("edgeInfoMiddle") EdgeInfoMetadata edgeInfoMiddle,
4850
@JsonProperty("classes1") List<String> classes1,
49-
@JsonProperty("classes2") List<String> classes2
51+
@JsonProperty("classes2") List<String> classes2,
52+
@JsonProperty("style1") String style1,
53+
@JsonProperty("style2") String style2
5054
) {
5155
super(svgId, equipmentId);
5256
this.node1SvgId = node1SvgId;
@@ -62,6 +66,8 @@ public EdgeMetadata(@JsonProperty("svgId") String svgId,
6266
this.edgeInfoMiddle = edgeInfoMiddle;
6367
this.classes1 = classes1;
6468
this.classes2 = classes2;
69+
this.style1 = style1;
70+
this.style2 = style2;
6571
}
6672

6773
@JsonProperty("node1")
@@ -132,4 +138,16 @@ public List<String> getClasses1() {
132138
public List<String> getClasses2() {
133139
return classes2;
134140
}
141+
142+
@JsonInclude(JsonInclude.Include.NON_DEFAULT)
143+
@JsonProperty("style1")
144+
public String getStyle1() {
145+
return style1;
146+
}
147+
148+
@JsonInclude(JsonInclude.Include.NON_DEFAULT)
149+
@JsonProperty("style2")
150+
public String getStyle2() {
151+
return style2;
152+
}
135153
}

network-area-diagram/src/main/java/com/powsybl/nad/svg/metadata/InjectionMetadata.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,23 @@ public class InjectionMetadata extends AbstractMetadataItem {
2323
private final String busNodeId;
2424
private final String vlNodeId;
2525
private final List<String> classes;
26+
private final String style;
2627

2728
public InjectionMetadata(@JsonProperty("svgId") String svgId,
2829
@JsonProperty("equipmentId") String equipmentId,
2930
@JsonProperty("componentType") String componentType,
3031
@JsonProperty("busNodeId") String busNodeId,
3132
@JsonProperty("vlNodeId") String vlNodeId,
3233
@JsonProperty("edgeInfo") EdgeInfoMetadata edgeInfo,
33-
@JsonProperty("classes") List<String> classes) {
34+
@JsonProperty("classes") List<String> classes,
35+
@JsonProperty("style") String style) {
3436
super(svgId, equipmentId);
3537
this.componentType = componentType;
3638
this.busNodeId = busNodeId;
3739
this.vlNodeId = vlNodeId;
3840
this.edgeInfo = edgeInfo;
3941
this.classes = classes;
42+
this.style = style;
4043
}
4144

4245
@JsonProperty("componentType")
@@ -64,4 +67,10 @@ public EdgeInfoMetadata getEdgeInfoMetadata() {
6467
public List<String> getClasses() {
6568
return classes;
6669
}
70+
71+
@JsonInclude(JsonInclude.Include.NON_DEFAULT)
72+
@JsonProperty("style")
73+
public String getStyle() {
74+
return style;
75+
}
6776
}

network-area-diagram/src/test/java/com/powsybl/nad/svg/DiagramMetadataTest.java

Lines changed: 39 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737
import java.nio.file.FileSystem;
3838
import java.nio.file.Files;
3939
import java.nio.file.Path;
40+
import java.util.HashMap;
41+
import java.util.Map;
4042
import java.util.Objects;
4143

4244
/**
@@ -145,11 +147,11 @@ void testOverUnderVoltage() {
145147
void testEdgeInfoMetadata() {
146148
Network network = Networks.createTwoVoltageLevels();
147149
labelProvider = new DefaultLabelProvider.Builder()
148-
.setInfoSideExternal(DefaultLabelProvider.EdgeInfoEnum.CURRENT)
149-
.setInfoSideInternal(DefaultLabelProvider.EdgeInfoEnum.ACTIVE_POWER)
150-
.setInfoMiddleSide1(DefaultLabelProvider.EdgeInfoEnum.NAME)
151-
.setInfoMiddleSide2(DefaultLabelProvider.EdgeInfoEnum.EMPTY)
152-
.build(network, getSvgParameters());
150+
.setInfoSideExternal(DefaultLabelProvider.EdgeInfoEnum.CURRENT)
151+
.setInfoSideInternal(DefaultLabelProvider.EdgeInfoEnum.ACTIVE_POWER)
152+
.setInfoMiddleSide1(DefaultLabelProvider.EdgeInfoEnum.NAME)
153+
.setInfoMiddleSide2(DefaultLabelProvider.EdgeInfoEnum.EMPTY)
154+
.build(network, getSvgParameters());
153155
Line line = network.getLine("l1");
154156
line.getTerminal1().setP(1400.0).setQ(400.0);
155157
line.getTerminal2().setP(1410.0).setQ(410.0);
@@ -158,8 +160,39 @@ void testEdgeInfoMetadata() {
158160
roundTrip(network, "/edge_info_metadata.json", new LayoutParameters().setInjectionsAdded(true));
159161
}
160162

163+
@Test
164+
void testCustomStyleProviderMetadata() {
165+
Network network = Networks.createNodeBreakerNetworkWithBranchStatus("TestNodeDecorators", "test");
166+
167+
Map<String, CustomStyleProvider.BusNodeStyles> busNodesStyles = new HashMap<>();
168+
busNodesStyles.put("VL1_10", new CustomStyleProvider.BusNodeStyles("yellow", null, "2px"));
169+
busNodesStyles.put("VL2_30", new CustomStyleProvider.BusNodeStyles("red", "black", "4px"));
170+
171+
Map<String, CustomStyleProvider.EdgeStyles> edgesStyles = new HashMap<>();
172+
edgesStyles.put("L11", new CustomStyleProvider.EdgeStyles("blue", "2px", null, "blue", "2px", null));
173+
edgesStyles.put("L12", new CustomStyleProvider.EdgeStyles("green", "4px", "8,4", "green", "4px", "4,2"));
174+
edgesStyles.put("T11", new CustomStyleProvider.EdgeStyles("red", "8px", null, "brown", "8px", null));
175+
edgesStyles.put("T12", new CustomStyleProvider.EdgeStyles("orange", null, null, "orange", null, null));
176+
177+
Map<String, CustomStyleProvider.ThreeWtStyles> threeWtsStyles = new HashMap<>();
178+
threeWtsStyles.put("T3_12",
179+
new CustomStyleProvider.ThreeWtStyles(
180+
"gray", "2px", null,
181+
"purple", "2px", "2,2",
182+
"pink", "3px", null
183+
)
184+
);
185+
186+
labelProvider = new DefaultLabelProvider(network, getSvgParameters());
187+
StyleProvider styleProvider = new CustomStyleProvider(busNodesStyles, edgesStyles, threeWtsStyles);
188+
roundTrip(network, "/custom_style_metadata.json", new LayoutParameters().setInjectionsAdded(true), styleProvider);
189+
}
190+
161191
private DiagramMetadata roundTrip(Network network, String referenceMetadata, LayoutParameters layoutParameters) {
162-
StyleProvider styleProvider = new TopologicalStyleProvider(network);
192+
return roundTrip(network, referenceMetadata, layoutParameters, getStyleProvider(network));
193+
}
194+
195+
private DiagramMetadata roundTrip(Network network, String referenceMetadata, LayoutParameters layoutParameters, StyleProvider styleProvider) {
163196
Graph graph = new NetworkGraphBuilder(network, VoltageLevelFilter.NO_FILTER, getLabelProvider(network), layoutParameters, new IntIdProvider()).buildGraph();
164197
new BasicForceLayout().run(graph, layoutParameters);
165198
NetworkGraphBuilder.applyStyle(graph, styleProvider);

0 commit comments

Comments
 (0)