X: NFT - Add regions

This commit is contained in:
2026-10-16 21:19:03 +02:00
parent d057b0f3e6
commit f1f31ab8f0
@@ -32,6 +32,7 @@ public final class EvelynMissionControlImpl implements
EvelynMissionControl, EvelynMissionControl,
NenjimProcess { NenjimProcess {
// region Constructors
public EvelynMissionControlImpl( public EvelynMissionControlImpl(
@NotNull EvelynStatusService evelynStatusServiceProd, @NotNull EvelynStatusService evelynStatusServiceProd,
@NotNull EvelynStatusService evelynStatusServiceTest, @NotNull EvelynStatusService evelynStatusServiceTest,
@@ -44,13 +45,17 @@ public final class EvelynMissionControlImpl implements
"javaFxRuntimeService"); "javaFxRuntimeService");
refreshTimeline.setCycleCount(Timeline.INDEFINITE); refreshTimeline.setCycleCount(Timeline.INDEFINITE);
} }
// endregion
// region Interface implementations
@Override @Override
public void start() { public void start() {
javaFxRuntimeService.runLater(this::showWindow); javaFxRuntimeService.runLater(this::showWindow);
} }
// endregion
static StatusIndexChart createStatusIndexChart() { // region Private methods
private static StatusIndexChart createStatusIndexChart() {
NumberAxis xAxis = new NumberAxis(0, 1, 1); NumberAxis xAxis = new NumberAxis(0, 1, 1);
xAxis.setLabel("Time"); xAxis.setLabel("Time");
xAxis.setTickLabelFormatter(TIMESTAMP_FORMATTER); xAxis.setTickLabelFormatter(TIMESTAMP_FORMATTER);
@@ -129,43 +134,7 @@ public final class EvelynMissionControlImpl implements
updateAxisBounds(statusIndexChart, history); updateAxisBounds(statusIndexChart, history);
} }
static final class StatusIndexChart { static BigDecimal max(BigDecimal currentMaximum, BigDecimal candidate) {
private StatusIndexChart(
LineChart<Number, Number> chart,
NumberAxis xAxis,
NumberAxis yAxis,
XYChart.Series<Number, Number> priceIndexSeries
) {
this.chart = chart;
this.xAxis = xAxis;
this.yAxis = yAxis;
this.priceIndexSeries = priceIndexSeries;
}
LineChart<Number, Number> chart() {
return chart;
}
NumberAxis xAxis() {
return xAxis;
}
NumberAxis yAxis() {
return yAxis;
}
XYChart.Series<Number, Number> priceIndexSeries() {
return priceIndexSeries;
}
private final LineChart<Number, Number> chart;
private final NumberAxis xAxis;
private final NumberAxis yAxis;
private final XYChart.Series<Number, Number> priceIndexSeries;
private List<EvelynStatusIndexPoint> renderedHistory = List.of();
}
private static BigDecimal max(BigDecimal currentMaximum, BigDecimal candidate) {
return currentMaximum.max(candidate.abs()); return currentMaximum.max(candidate.abs());
} }
@@ -292,7 +261,47 @@ public final class EvelynMissionControlImpl implements
refreshChart(productionChart, evelynStatusProd.getStatusIndexHistory()); refreshChart(productionChart, evelynStatusProd.getStatusIndexHistory());
refreshChart(testChart, evelynStatusTest.getStatusIndexHistory()); refreshChart(testChart, evelynStatusTest.getStatusIndexHistory());
} }
// endregion
// region Inner classes
static final class StatusIndexChart {
private StatusIndexChart(
LineChart<Number, Number> chart,
NumberAxis xAxis,
NumberAxis yAxis,
XYChart.Series<Number, Number> priceIndexSeries
) {
this.chart = chart;
this.xAxis = xAxis;
this.yAxis = yAxis;
this.priceIndexSeries = priceIndexSeries;
}
LineChart<Number, Number> chart() {
return chart;
}
NumberAxis xAxis() {
return xAxis;
}
NumberAxis yAxis() {
return yAxis;
}
XYChart.Series<Number, Number> priceIndexSeries() {
return priceIndexSeries;
}
private final LineChart<Number, Number> chart;
private final NumberAxis xAxis;
private final NumberAxis yAxis;
private final XYChart.Series<Number, Number> priceIndexSeries;
private List<EvelynStatusIndexPoint> renderedHistory = List.of();
}
// endregion
// region Constants
private static final String PRODUCTION_COLOR = "#ffd6d6"; private static final String PRODUCTION_COLOR = "#ffd6d6";
private static final String TEST_COLOR = "#d8f3dc"; private static final String TEST_COLOR = "#d8f3dc";
private static final double EMPTY_Y_BOUND = 1.0; private static final double EMPTY_Y_BOUND = 1.0;
@@ -314,14 +323,21 @@ public final class EvelynMissionControlImpl implements
} }
}; };
private final EvelynStatusService evelynStatusProd;
private final EvelynStatusService evelynStatusTest;
private final JavaFxRuntimeService javaFxRuntimeService;
private final Timeline refreshTimeline = new Timeline(new KeyFrame( private final Timeline refreshTimeline = new Timeline(new KeyFrame(
Duration.seconds(CHART_REFRESH_SECONDS), Duration.seconds(CHART_REFRESH_SECONDS),
event -> refreshCharts() event -> refreshCharts()
)); ));
// endregion
// region Dependencies
private final EvelynStatusService evelynStatusProd;
private final EvelynStatusService evelynStatusTest;
private final JavaFxRuntimeService javaFxRuntimeService;
// endregion
// region State
private Stage window; private Stage window;
private StatusIndexChart productionChart; private StatusIndexChart productionChart;
private StatusIndexChart testChart; private StatusIndexChart testChart;
// endregion
} }