Skip to content

Commit d71c528

Browse files
authored
Merge branch 'main' into 685-nad-css-tables-in-text-boxes
2 parents 1f0d2c4 + 8a3a2a8 commit d71c528

63 files changed

Lines changed: 845 additions & 1772 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

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

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -628,12 +628,20 @@ private void drawHighlightedNode(XMLStreamWriter writer, VoltageLevelNode vlNode
628628
}
629629

630630
private void drawTextNodes(Graph graph, XMLStreamWriter writer) throws XMLStreamException {
631-
writer.writeStartElement(GROUP_ELEMENT_NAME);
632-
writer.writeAttribute(CLASS_ATTRIBUTE, StyleProvider.TEXT_NODES_CLASS);
633-
for (Pair<VoltageLevelNode, TextNode> nodePair : graph.getVoltageLevelTextPairs()) {
634-
writeTextNode(writer, nodePair.getSecond(), nodePair.getFirst(), labelProvider);
631+
List<Pair<VoltageLevelNode, TextNode>> textNodes = graph.getVoltageLevelTextPairs().stream()
632+
.filter(nodePair -> nodePair.getSecond() != null)
633+
.toList();
634+
635+
if (!textNodes.isEmpty()) {
636+
writeForeignObject(writer);
637+
writer.writeStartElement("", DIV_ELEMENT_NAME, XHTML_NAMESPACE_URI);
638+
writer.writeDefaultNamespace(XHTML_NAMESPACE_URI);
639+
for (Pair<VoltageLevelNode, TextNode> nodePair : textNodes) {
640+
writeDetailedTextNode(writer, nodePair.getSecond(), nodePair.getFirst());
641+
}
642+
writer.writeEndElement();
643+
writer.writeEndElement();
635644
}
636-
writer.writeEndElement();
637645
}
638646

639647
private String getTranslateString(Node node) {
@@ -648,24 +656,22 @@ private String getTranslateString(double x, double y) {
648656
return "translate(" + getFormattedValue(x) + "," + getFormattedValue(y) + ")";
649657
}
650658

651-
private void writeTextNode(XMLStreamWriter writer, TextNode textNode, VoltageLevelNode vlNode, LabelProvider labelProvider) throws XMLStreamException {
652-
if (textNode == null) {
653-
return;
654-
}
655-
659+
private void writeForeignObject(XMLStreamWriter writer) throws XMLStreamException {
656660
writer.writeStartElement(FOREIGN_OBJECT_ELEMENT_NAME);
657-
writeId(writer, textNode);
658-
writer.writeAttribute(Y_ATTRIBUTE, getFormattedValue(textNode.getY()));
659-
writer.writeAttribute(X_ATTRIBUTE, getFormattedValue(textNode.getX()));
660-
661-
// width and height cannot be set to auto, and object is of width and height 0 if not specified
661+
// width and height can be set neither to auto nor 0, due to firefox not displaying it in those cases
662662
// using a fixed size of 1x1 and CSS {overflow: visible} to display it
663663
writer.writeAttribute(HEIGHT_ATTRIBUTE, "1");
664664
writer.writeAttribute(WIDTH_ATTRIBUTE, "1");
665+
writeStyleClasses(writer, StyleProvider.TEXT_NODES_CLASS);
666+
}
665667

668+
private void writeDetailedTextNode(XMLStreamWriter writer, TextNode textNode, VoltageLevelNode vlNode) throws XMLStreamException {
666669
writer.writeStartElement("", DIV_ELEMENT_NAME, XHTML_NAMESPACE_URI);
667-
writer.writeDefaultNamespace(XHTML_NAMESPACE_URI);
668670
writer.writeAttribute(CLASS_ATTRIBUTE, StyleProvider.LABEL_BOX_CLASS);
671+
long top = Math.round(textNode.getY());
672+
long left = Math.round(textNode.getX());
673+
writeStyleAttribute(writer, String.format("position: absolute; top: %spx; left: %spx", top, left));
674+
writeId(writer, textNode);
669675

670676
List<String> vlDescription = labelProvider.getVoltageLevelDescription(vlNode);
671677
writeLines(vlDescription, writer);
@@ -676,7 +682,6 @@ private void writeTextNode(XMLStreamWriter writer, TextNode textNode, VoltageLev
676682
writeLines(vlDetails, writer);
677683

678684
writer.writeEndElement();
679-
writer.writeEndElement();
680685
}
681686

682687
private void writeLines(List<String> lines, XMLStreamWriter writer) throws XMLStreamException {

network-area-diagram/src/main/resources/customStyle.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ path.nad-arrow-out:not(.nad-state-out .nad-arrow-out) {visibility: hidden}
1010
path.nad-arrow-in:not(.nad-state-in .nad-arrow-in) {visibility: hidden}
1111
.nad-text-background {flood-color: #90a4aeaa}
1212
.nad-text-nodes {font: 25px serif; fill: black; dominant-baseline: central}
13-
.nad-text-nodes foreignObject {overflow: visible; color: black}
13+
foreignObject.nad-text-nodes {overflow: visible; color: black}
1414
.nad-label-box {background-color: #6c6c6c20; width: max-content; padding: 10px; border-radius: 10px;}
1515
.nad-legend-square {display: inline-block; margin-right: 10px; width: 20px; height: 20px; background: var(--nad-vl-color, lightgrey);}
1616
.nad-edge-infos text, .nad-edge-label text {font: 20px serif; dominant-baseline:middle; stroke: #FFFFFFAA; stroke-width: 10; stroke-linejoin:round; paint-order: stroke}

network-area-diagram/src/main/resources/nominalStyle.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ path.nad-arrow-in:not(.nad-state-in .nad-arrow-in) {visibility: hidden}
1414
.nad-current {fill: #bd4802}
1515
.nad-text-background {flood-color: #90a4aeaa}
1616
.nad-text-nodes {font: 25px serif; fill: black; dominant-baseline: central}
17-
.nad-text-nodes foreignObject {overflow: visible; color: black}
17+
foreignObject.nad-text-nodes {overflow: visible; color: black}
1818
.nad-label-box {background-color: #6c6c6c20; width: max-content; padding: 10px; border-radius: 10px;}
1919
.nad-edge-infos text, .nad-edge-label text {font: 20px serif; dominant-baseline:middle; stroke: #FFFFFFAA; stroke-width: 10; stroke-linejoin:round; paint-order: stroke}
2020
.nad-vl0to30 {--nad-vl-color: #AFB42B}

network-area-diagram/src/main/resources/topologicalStyle.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ path.nad-arrow-in:not(.nad-state-in .nad-arrow-in) {visibility: hidden}
1414
.nad-current {fill: #bd4802}
1515
.nad-text-background {flood-color: #90a4aeaa}
1616
.nad-text-nodes {font: 25px serif; fill: black; dominant-baseline: central}
17-
.nad-text-nodes foreignObject {overflow: visible; color: black}
17+
foreignObject.nad-text-nodes {overflow: visible; color: black}
1818
.nad-label-box {background-color: #6c6c6c20; width: max-content; padding: 10px; border-radius: 10px;}
1919
.nad-legend-square {display: inline-block; margin-right: 10px; width: 20px; height: 20px; background: var(--nad-vl-color, black);}
2020
.nad-edge-infos text, .nad-edge-label text {font: 20px serif; dominant-baseline:middle; stroke: #FFFFFFAA; stroke-width: 10; stroke-linejoin:round; paint-order: stroke}

network-area-diagram/src/test/resources/3wt.svg

Lines changed: 8 additions & 12 deletions
Loading

network-area-diagram/src/test/resources/3wt_disconnected.svg

Lines changed: 8 additions & 12 deletions
Loading

network-area-diagram/src/test/resources/3wt_disconnected_topological.svg

Lines changed: 8 additions & 12 deletions
Loading

network-area-diagram/src/test/resources/3wt_overridden_styles.svg

Lines changed: 8 additions & 12 deletions
Loading

network-area-diagram/src/test/resources/3wt_partial.svg

Lines changed: 6 additions & 6 deletions
Loading

network-area-diagram/src/test/resources/3wt_pst.svg

Lines changed: 6 additions & 6 deletions
Loading

0 commit comments

Comments
 (0)