From 83d8dec332f755d8c17d52fbd810ed3e2e5b165c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20Ha=C3=9Fel?= Date: Mon, 5 May 2025 15:54:35 +0200 Subject: [PATCH] FIX: Graph used wrong outerAlignment instead of inner --- .../angular/src/app/history/history.component.html | 4 ++-- src/main/java/de/ph87/data/series/graph/Graph.java | 13 +++++++++---- .../de/ph87/data/series/graph/GraphController.java | 1 + .../de/ph87/data/series/graph/GraphService.java | 2 +- .../de/ph87/data/series/meter/MeterService.java | 4 ++-- .../de/ph87/data/series/varying/VaryingService.java | 1 + 6 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/main/angular/src/app/history/history.component.html b/src/main/angular/src/app/history/history.component.html index eb28787..97b7efc 100644 --- a/src/main/angular/src/app/history/history.component.html +++ b/src/main/angular/src/app/history/history.component.html @@ -54,11 +54,11 @@ - +
Zisterne
- +
diff --git a/src/main/java/de/ph87/data/series/graph/Graph.java b/src/main/java/de/ph87/data/series/graph/Graph.java index 5e9b32e..fe5ef51 100644 --- a/src/main/java/de/ph87/data/series/graph/Graph.java +++ b/src/main/java/de/ph87/data/series/graph/Graph.java @@ -1,6 +1,7 @@ package de.ph87.data.series.graph; import de.ph87.data.series.Aligned; +import de.ph87.data.series.Alignment; import de.ph87.data.series.SeriesDto; import de.ph87.data.series.SeriesType; import de.ph87.data.value.Autoscale; @@ -24,6 +25,9 @@ public class Graph { @NonNull public final SeriesDto series; + @NonNull + public final Alignment innerAlignment; + @NonNull public final Aligned begin; @@ -62,10 +66,11 @@ public class Graph { public final int maxLabelWidth; - private final Autoscale autoscale; + public final Autoscale autoscale; - public Graph(@NonNull final SeriesDto series, @NonNull final List points, @NonNull final Aligned begin, @NonNull final Aligned end, final int width, final int height, final int border) { + public Graph(@NonNull final SeriesDto series, @NonNull final List points, @NonNull final Alignment innerAlignment, @NonNull final Aligned begin, @NonNull final Aligned end, final int width, final int height, final int border) { this.series = series; + this.innerAlignment = innerAlignment; this.begin = begin; this.end = end; this.width = width; @@ -102,7 +107,7 @@ public class Graph { minuteMin = begin.date.toEpochSecond() / 60; minuteMax = end.date.toEpochSecond() / 60; minuteRange = minuteMax - minuteMin; - minuteScale = (double) widthInner / (minuteRange + begin.alignment.maxDuration.toMinutes()); + minuteScale = (double) widthInner / (minuteRange + innerAlignment.maxDuration.toMinutes()); valueMin = vMin; valueMax = vMax; @@ -132,7 +137,7 @@ public class Graph { g.setColor(Color.WHITE); if (series.type == SeriesType.METER) { - final int space = (int) (minuteScale * begin.alignment.maxDuration.toMinutes()); + final int space = (int) (minuteScale * innerAlignment.maxDuration.toMinutes()); final int width = (int) (space * 0.95); for (final Point point : points) { g.fillRect(point.x + (space - width), 0, width, point.y); diff --git a/src/main/java/de/ph87/data/series/graph/GraphController.java b/src/main/java/de/ph87/data/series/graph/GraphController.java index 555d0e3..551591a 100644 --- a/src/main/java/de/ph87/data/series/graph/GraphController.java +++ b/src/main/java/de/ph87/data/series/graph/GraphController.java @@ -29,6 +29,7 @@ public class GraphController { final Alignment innerAlignment = Alignment.valueOf(innerAlignmentName); final Aligned end = outerAlignment.align(ZonedDateTime.now()).plus(1).minus(offset); final Aligned begin = end.minus(duration); + log.warn("Graph: outer={}, offset={}, duration={}, begin={}, end={}, inner={}", outerAlignment, offset, duration, begin.date.toLocalDateTime(), end.date.toLocalDateTime(), innerAlignment); final Graph graph = graphService.getGraph(seriesId, innerAlignment, begin, end, width, height, 10); final BufferedImage image = graph.draw(); response.setContentType("image/png"); diff --git a/src/main/java/de/ph87/data/series/graph/GraphService.java b/src/main/java/de/ph87/data/series/graph/GraphService.java index 948969b..3d9c202 100644 --- a/src/main/java/de/ph87/data/series/graph/GraphService.java +++ b/src/main/java/de/ph87/data/series/graph/GraphService.java @@ -31,7 +31,7 @@ public class GraphService { case METER -> meterService.getPoints(series, innerAlignment, begin, end); case VARYING -> varyingService.getPoints(series, innerAlignment, begin, end); }; - return new Graph(series, entries, begin, end, width, height, border); + return new Graph(series, entries, innerAlignment, begin, end, width, height, border); } } diff --git a/src/main/java/de/ph87/data/series/meter/MeterService.java b/src/main/java/de/ph87/data/series/meter/MeterService.java index 06081b9..4d02fdb 100644 --- a/src/main/java/de/ph87/data/series/meter/MeterService.java +++ b/src/main/java/de/ph87/data/series/meter/MeterService.java @@ -80,8 +80,8 @@ public class MeterService { } @NonNull - public List getPoints(@NonNull final SeriesDto series, @NonNull final Alignment innerAlignment, @NonNull final Aligned begin, @NonNull final Aligned end) { - final List graphPoints = findRepository(innerAlignment).findAllByIdMeterSeriesIdAndIdDateGreaterThanEqualAndIdDateLessThanEqualOrderByIdDate(series.id, begin.date, end.date); + public List getPoints(@NonNull final SeriesDto series, @NonNull final Alignment alignment, @NonNull final Aligned begin, @NonNull final Aligned end) { + final List graphPoints = findRepository(alignment).findAllByIdMeterSeriesIdAndIdDateGreaterThanEqualAndIdDateLessThanEqualOrderByIdDate(series.id, begin.date, end.date); final List points = graphPoints.stream().map(meterValue -> new GraphPoint(meterValue.getId().getDate(), meterValue.getMax() - meterValue.getMin())).collect(Collectors.toCollection(LinkedList::new)); for (int i = 0; i < points.size() - 1; i++) { if (points.get(i).date.compareTo(points.get(i + 1).date) == 0) { diff --git a/src/main/java/de/ph87/data/series/varying/VaryingService.java b/src/main/java/de/ph87/data/series/varying/VaryingService.java index 41f149c..6a355dc 100644 --- a/src/main/java/de/ph87/data/series/varying/VaryingService.java +++ b/src/main/java/de/ph87/data/series/varying/VaryingService.java @@ -73,6 +73,7 @@ public class VaryingService { @NonNull public List getPoints(@NonNull final SeriesDto series, @NonNull final Alignment innerAlignment, @NonNull final Aligned begin, @NonNull final Aligned end) { + log.info("getPoints: innerAlignment={}, begin={}, end={}", innerAlignment, begin, end); return findRepository(innerAlignment) .findAllByIdSeriesIdAndIdDateGreaterThanEqualAndIdDateLessThanEqual(series.id, begin.date, end.date) .stream()