Changed time interval cutoff.

This commit is contained in:
Andrew Lalis 2024-06-09 20:10:27 -04:00
parent 6e862a2709
commit d360de5d6f
1 changed files with 5 additions and 26 deletions

View File

@ -3,7 +3,6 @@ package com.andrewlalis.perfin.view.component.module;
import com.andrewlalis.perfin.data.AccountRepository; import com.andrewlalis.perfin.data.AccountRepository;
import com.andrewlalis.perfin.data.TimestampRange; import com.andrewlalis.perfin.data.TimestampRange;
import com.andrewlalis.perfin.data.TransactionRepository; import com.andrewlalis.perfin.data.TransactionRepository;
import com.andrewlalis.perfin.data.util.ColorUtil;
import com.andrewlalis.perfin.model.Profile; import com.andrewlalis.perfin.model.Profile;
import com.andrewlalis.perfin.model.Transaction; import com.andrewlalis.perfin.model.Transaction;
import javafx.application.Platform; import javafx.application.Platform;
@ -13,9 +12,11 @@ import javafx.scene.chart.*;
import javafx.scene.control.ChoiceBox; import javafx.scene.control.ChoiceBox;
import javafx.scene.layout.Pane; import javafx.scene.layout.Pane;
import java.time.*; import java.time.Duration;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.*; import java.util.*;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.function.Supplier; import java.util.function.Supplier;
@ -86,28 +87,6 @@ public class TotalAssetsGraphModule extends DashboardModule {
if (savedTimeRangeLabel != null && Arrays.stream(TIME_RANGE_OPTIONS).anyMatch(o -> o.name().equals(savedTimeRangeLabel))) { if (savedTimeRangeLabel != null && Arrays.stream(TIME_RANGE_OPTIONS).anyMatch(o -> o.name().equals(savedTimeRangeLabel))) {
timeRangeChoiceBox.getSelectionModel().select(savedTimeRangeLabel); timeRangeChoiceBox.getSelectionModel().select(savedTimeRangeLabel);
} }
// TODO: Extract logic below.
totalAssetDataPoints.clear();
String[] dateLabels = new String[12];
double[] values = new double[12];
CompletableFuture<?>[] futures = new CompletableFuture[12];
for (int i = 0; i < 12; i++) {
final int idx = i;
Instant timestamp = Instant.now().minus((12 - i - 1) * 30, ChronoUnit.DAYS);
dateLabels[i] = LocalDate.from(timestamp.atZone(ZoneId.systemDefault())).toString();
futures[i] = Profile.getCurrent().dataSource().getCombinedAccountBalances(timestamp)
.thenAccept(moneyValues -> {
values[idx] = moneyValues.getFirst().amount().doubleValue();
});
}
CompletableFuture.allOf(futures).thenRun(() -> {
List<XYChart.Data<String, Number>> dataPoints = new ArrayList<>(12);
for (int i = 0; i < 12; i++) {
dataPoints.add(new XYChart.Data<>(dateLabels[i], values[i]));
}
Platform.runLater(() -> totalAssetDataPoints.addAll(dataPoints));
});
} }
private void renderChart() { private void renderChart() {
@ -120,7 +99,7 @@ public class TotalAssetsGraphModule extends DashboardModule {
getSelectedTimestampRange().thenAccept(range -> { getSelectedTimestampRange().thenAccept(range -> {
Duration rangeDuration = Duration.between(range.start(), range.end()); Duration rangeDuration = Duration.between(range.start(), range.end());
boolean useMonths = rangeDuration.dividedBy(Duration.ofDays(1)) > 90; boolean useMonths = rangeDuration.dividedBy(Duration.ofDays(1)) > 365;
List<CompletableFuture<Number>> dataFutures = new ArrayList<>(); List<CompletableFuture<Number>> dataFutures = new ArrayList<>();