Skip to content

Commit

Permalink
Bump powsybl-dependencies to 2024.3.1 (#118)
Browse files Browse the repository at this point in the history
* Update dependencies to 2024.3.1
* AddNodesInfo renamed
* Add svgParameters to TopologcicalStyleProvider
* Add LimitHighlightStyleProvider checkbox
* Add metadata result for NAD
* Add metadata tab
* Add unify voltage level colors checkbox

Signed-off-by: Florian Dupuy <[email protected]>
  • Loading branch information
flo-dup authored Nov 18, 2024
1 parent bc84ee2 commit 6b1b627
Show file tree
Hide file tree
Showing 8 changed files with 85 additions and 52 deletions.
2 changes: 1 addition & 1 deletion diagram-viewer/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
<junit.version>4.13.1</junit.version>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<powsybl.dependencies.version>2024.2.0</powsybl.dependencies.version>
<powsybl.dependencies.version>2024.3.1</powsybl.dependencies.version>
</properties>

<build>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ public abstract class AbstractDiagramController {
public WebView diagramWebView;

private StringProperty svgContent;
private StringProperty metadataContent;

@FXML
public TextArea info;
Expand Down Expand Up @@ -80,15 +81,20 @@ protected void init(String prefix) throws IOException {
js = new String(ByteStreams.toByteArray(Objects.requireNonNull(getClass().getResourceAsStream("/" + prefix + "/svg.js"))));

svgContent = addAdditionalTab("SVG", "SVG file", "*.svg");
metadataContent = addAdditionalTab("Metadata", "JSON file", "*.json");
}

public void createDiagram(Container<?> container,
StringProperty svgContentProperty) {
ContainerResult containerResult) {
info.setText(String.join(System.lineSeparator(), "id: " + container.getId(), "name: " + container.getNameOrId()));

// SVG content listener & binding
StringProperty svgContentProperty = containerResult.svgContentProperty();
svgContentProperty.addListener((obs, oldV, newV) -> updateSVGContent(newV));
svgContent.bind(svgContentProperty);

// Metadata binding
metadataContent.bind(containerResult.metadataContentProperty());
}

protected void updateSVGContent(String newContent) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,34 +42,43 @@ private void initialize() throws IOException {
}

public void createDiagram(Network network, NetworkAreaDiagramModel model, ContainerResult containerResult, Container<?> container) {
super.createDiagram(container, containerResult.svgContentProperty());

super.createDiagram(container, containerResult);
updateDiagram(network, model, containerResult, container);
}

public static void updateDiagram(Network network, NetworkAreaDiagramModel model, ContainerResult containerResult, Container<?> container) {
StringWriter writer = new StringWriter();
Service<String> nadService = new Service<>() {
Service<ContainerResult> nadService = new Service<>() {
@Override
protected Task<String> createTask() {
protected Task<ContainerResult> createTask() {
return new Task<>() {
@Override
protected String call() {
Predicate<VoltageLevel> vls = getVoltageLevelFilter(network, model, container);
NadParameters nadParameters = new NadParameters();
nadParameters.setLayoutParameters(model.getLayoutParameters());
nadParameters.setSvgParameters(model.getSvgParameters());
nadParameters.setLayoutFactory(model.getLayoutFactory(network));
nadParameters.setStyleProviderFactory(model.getStyleProviderFactory());
nadParameters.setLabelProviderFactory(model.getLabelProviderFactory());
NetworkAreaDiagram.draw(network, writer, nadParameters, vls);
return writer.toString();
protected ContainerResult call() throws IOException {
ContainerResult result = new ContainerResult();
try (StringWriter svgWriter = new StringWriter();
StringWriter metadataWriter = new StringWriter()) {

Predicate<VoltageLevel> vls = getVoltageLevelFilter(network, model, container);
NadParameters nadParameters = new NadParameters();
nadParameters.setLayoutParameters(model.getLayoutParameters());
nadParameters.setSvgParameters(model.getSvgParameters());
nadParameters.setLayoutFactory(model.getLayoutFactory(network));
nadParameters.setStyleProviderFactory(model.getStyleProviderFactory());
nadParameters.setLabelProviderFactory(model.getLabelProviderFactory());
NetworkAreaDiagram.draw(network, svgWriter, metadataWriter, nadParameters, vls);

svgWriter.flush();
metadataWriter.flush();

result.svgContentProperty().set(svgWriter.toString());
result.metadataContentProperty().set(metadataWriter.toString());
}
return result;
}
};
}
};

nadService.setOnSucceeded(event -> containerResult.svgContentProperty().setValue((String) event.getSource().getValue()));
nadService.setOnSucceeded(event -> containerResult.setValue((ContainerResult) event.getSource().getValue()));
nadService.setOnFailed(event -> {
Throwable exception = event.getSource().getException();
LOGGER.error(exception.toString(), exception);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,11 @@ public class SingleLineDiagramController extends AbstractDiagramController {

private static final Logger LOGGER = LoggerFactory.getLogger(SingleLineDiagramController.class);

private StringProperty metadataContent;
private StringProperty graphContent;

@FXML
private void initialize() throws IOException {
super.init("sld");

metadataContent = addAdditionalTab("Metadata", "JSON file", "*.json");
graphContent = addAdditionalTab("Graph", "JSON file", "*.json");
}

Expand All @@ -50,14 +47,14 @@ public void createDiagram(SingleLineDiagramJsHandler jsHandler,
ContainerResult containerResult,
Container<?> container,
VoltageLevelLayoutFactoryCreator voltageLevelLayoutFactoryCreator) {
super.createDiagram(container, containerResult.svgContentProperty());
super.createDiagram(container, containerResult);

// JSHandler management
jsHandler.setOperateSwitch(swId -> {
Switch sw = network.getSwitch(swId);
if (sw != null) {
sw.setOpen(!sw.isOpen());
StyleProvider styleProvider = model.getStyleProvider(network);
StyleProvider styleProvider = model.getStyleProvider(network, model.getSvgParameters());
styleProvider.reset();
updateDiagram(network, model, containerResult, container, voltageLevelLayoutFactoryCreator);
}
Expand All @@ -66,7 +63,6 @@ public void createDiagram(SingleLineDiagramJsHandler jsHandler,
containerResult.metadataContentProperty().addListener((obs, oldV, newV) -> jsHandler.setMetadata(containerResult.metadataContentProperty().get()));

// Metadata & Graph binding
metadataContent.bind(containerResult.metadataContentProperty());
graphContent.bind(containerResult.jsonContentProperty());

updateDiagram(network, model, containerResult, container, voltageLevelLayoutFactoryCreator);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,8 @@ public String toString() {
private final BooleanProperty animatedStyleProvider = new SimpleBooleanProperty();
private final Property<Double> animationThreshold1 = new SimpleObjectProperty<>();
private final Property<Double> animationThreshold2 = new SimpleObjectProperty<>();
private final BooleanProperty highlightStyleProvider = new SimpleBooleanProperty();
private final BooleanProperty highlightLineStateStyleProvider = new SimpleBooleanProperty();
private final BooleanProperty highlightLimitStyleProvider = new SimpleBooleanProperty();
private final BooleanProperty topologicalStyleProvider = new SimpleBooleanProperty();

// Substation layout provider
Expand All @@ -88,7 +89,8 @@ public SingleLineDiagramModel(// Providers
BooleanProperty animatedStyleProvider,
Property<Double> animationThreshold1,
Property<Double> animationThreshold2,
BooleanProperty highlightStyleProvider,
BooleanProperty highlightLineStateStyleProvider,
BooleanProperty highlightLimitStyleProvider,
BooleanProperty topologicalStyleProvider,
// LayoutParameters
Property<Double> diagramPaddingTopBottom,
Expand Down Expand Up @@ -117,10 +119,10 @@ public SingleLineDiagramModel(// Providers
BooleanProperty displayEquipmentNodesLabel,
BooleanProperty displayConnectivityNodesId,
Property<Double> angleLabel,
BooleanProperty addNodesInfos,
BooleanProperty busesLegendAdded,
BooleanProperty feederInfoSymmetry,
BooleanProperty avoidSVGComponentsDuplication,
Property<Double> feederInfosOuterMargin,
BooleanProperty unifyVlColors, Property<Double> feederInfosOuterMargin,
Property<Double> feederInfosIntraMargin
) {
// Update providers observable lists
Expand All @@ -137,7 +139,8 @@ public SingleLineDiagramModel(// Providers
this.animatedStyleProvider.bindBidirectional(animatedStyleProvider);
this.animationThreshold1.bindBidirectional(animationThreshold1);
this.animationThreshold2.bindBidirectional(animationThreshold2);
this.highlightStyleProvider.bindBidirectional(highlightStyleProvider);
this.highlightLineStateStyleProvider.bindBidirectional(highlightLineStateStyleProvider);
this.highlightLimitStyleProvider.bindBidirectional(highlightLimitStyleProvider);
this.topologicalStyleProvider.bindBidirectional(topologicalStyleProvider);

// LayoutParameters
Expand Down Expand Up @@ -168,10 +171,11 @@ public SingleLineDiagramModel(// Providers
displayEquipmentNodesLabel,
displayConnectivityNodesId,
angleLabel,
addNodesInfos,
busesLegendAdded,
feederInfoSymmetry,
feederInfosOuterMargin,
feederInfosIntraMargin);
unifyVlColors, feederInfosOuterMargin,
feederInfosIntraMargin
);
}

public void initProviders() {
Expand Down Expand Up @@ -221,7 +225,7 @@ public ComponentLibrary getComponentLibrary() {
return currentComponentLibrary.getValue();
}

public StyleProvider getStyleProvider(Network network) {
public StyleProvider getStyleProvider(Network network, SvgParameters svgParameters) {
List<StyleProvider> styles = new ArrayList<>();
if (this.basicStyleProvider.get()) {
styles.add(new BasicStyleProvider());
Expand All @@ -232,11 +236,14 @@ public StyleProvider getStyleProvider(Network network) {
if (this.animatedStyleProvider.get()) {
styles.add(new AnimatedFeederInfoStyleProvider(this.animationThreshold1.getValue(), this.animationThreshold2.getValue()));
}
if (this.highlightStyleProvider.get()) {
if (this.highlightLineStateStyleProvider.get()) {
styles.add(new HighlightLineStateStyleProvider(network));
}
if (this.highlightLimitStyleProvider.get()) {
styles.add(new LimitHighlightStyleProvider(network));
}
if (this.topologicalStyleProvider.get()) {
styles.add(new TopologicalStyleProvider(network));
styles.add(new TopologicalStyleProvider(network, svgParameters));
}
if (styles.isEmpty()) {
styles.add(new EmptyStyleProvider());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,10 @@ public class SingleLineDiagramViewController extends AbstractDiagramViewControll
public Spinner<Double> animationThreshold2Spinner;

@FXML
public CheckBox highlightStyleProviderCheckBox;
public CheckBox highlightLineStateStyleProviderCheckBox;

@FXML
public CheckBox highlightLimitStyleProviderCheckBox;

@FXML
public CheckBox topologicalStyleProviderCheckBox;
Expand Down Expand Up @@ -172,11 +175,14 @@ public class SingleLineDiagramViewController extends AbstractDiagramViewControll
public Spinner<Double> angleLabelSpinner;

@FXML
public CheckBox addNodesInfosCheckBox;
public CheckBox busesLegendAddedCheckBox;

@FXML
public CheckBox feederInfoSymmetryCheckBox;

@FXML
public CheckBox unifyVlColorsCheckBox;

@FXML
public Spinner<Double> spaceForFeederInfosSpinner;

Expand Down Expand Up @@ -204,7 +210,8 @@ private void initialize() {
animatedStyleProviderCheckBox.selectedProperty(),
animationThreshold1Spinner.getValueFactory().valueProperty(),
animationThreshold2Spinner.getValueFactory().valueProperty(),
highlightStyleProviderCheckBox.selectedProperty(),
highlightLineStateStyleProviderCheckBox.selectedProperty(),
highlightLimitStyleProviderCheckBox.selectedProperty(),
topologicalStyleProviderCheckBox.selectedProperty(),
// LayoutParameters
diagramPaddingTopBottomSpinner.getValueFactory().valueProperty(),
Expand Down Expand Up @@ -234,10 +241,10 @@ private void initialize() {
displayEquipmentNodesLabelCheckBox.selectedProperty(),
displayConnectivityNodesIdCheckBox.selectedProperty(),
angleLabelSpinner.getValueFactory().valueProperty(),
addNodesInfosCheckBox.selectedProperty(),
busesLegendAddedCheckBox.selectedProperty(),
feederInfoSymmetryCheckBox.selectedProperty(),
avoidSVGComponentsDuplicationCheckBox.selectedProperty(),
feederInfosOuterMarginSpinner.getValueFactory().valueProperty(),
unifyVlColorsCheckBox.selectedProperty(), feederInfosOuterMarginSpinner.getValueFactory().valueProperty(),
feederInfosIntraMarginSpinner.getValueFactory().valueProperty()
);

Expand Down Expand Up @@ -278,7 +285,7 @@ public void addListener(ChangeListener<Object> changeListener) {
basicStyleProviderCheckBox.selectedProperty().addListener(changeListener);
nominalStyleProviderCheckBox.selectedProperty().addListener(changeListener);
animatedStyleProviderCheckBox.selectedProperty().addListener(changeListener);
highlightStyleProviderCheckBox.selectedProperty().addListener(changeListener);
highlightLineStateStyleProviderCheckBox.selectedProperty().addListener(changeListener);
topologicalStyleProviderCheckBox.selectedProperty().addListener(changeListener);

voltageLevelLayoutComboBox.valueProperty().addListener(changeListener);
Expand Down Expand Up @@ -348,12 +355,12 @@ public void updateFrom(final ObjectProperty<Network> networkProperty) {
// Topology selection by default
basicStyleProviderCheckBox.setSelected(false);
animatedStyleProviderCheckBox.setSelected(false);
highlightStyleProviderCheckBox.setSelected(false);
highlightLineStateStyleProviderCheckBox.setSelected(false);
nominalStyleProviderCheckBox.setSelected(networkProperty.get() == null);
topologicalStyleProviderCheckBox.setSelected(networkProperty.get() != null);
// Only available if network
highlightStyleProviderCheckBox.disableProperty().unbind();
highlightStyleProviderCheckBox.disableProperty().bind(Bindings.createBooleanBinding(() -> networkProperty.get() != null, networkProperty).not());
highlightLineStateStyleProviderCheckBox.disableProperty().unbind();
highlightLineStateStyleProviderCheckBox.disableProperty().bind(Bindings.createBooleanBinding(() -> networkProperty.get() != null, networkProperty).not());
topologicalStyleProviderCheckBox.disableProperty().unbind();
topologicalStyleProviderCheckBox.disableProperty().bind(Bindings.createBooleanBinding(() -> networkProperty.get() != null, networkProperty).not());
// Horizontal selection
Expand Down
Loading

0 comments on commit 6b1b627

Please sign in to comment.