diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 1a70468..7e7d24f 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.0-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/src/main/java/org/llschall/control/board/UiRestController.java b/src/main/java/org/llschall/control/board/UiRestController.java index c91a800..ec76e76 100644 --- a/src/main/java/org/llschall/control/board/UiRestController.java +++ b/src/main/java/org/llschall/control/board/UiRestController.java @@ -4,12 +4,14 @@ import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; @RestController @RequestMapping("/api") public class UiRestController { private final CounterViewModel viewModel; + private final AtomicInteger echoCallCount = new AtomicInteger(0); public UiRestController(CounterViewModel viewModel) { this.viewModel = viewModel; @@ -43,6 +45,17 @@ public List getMeasurements() { return toDtoList(viewModel.getAllMeasurements()); } + @GetMapping("/echo") + public ResponseEntity echo() { + int i = echoCallCount.incrementAndGet(); + return ResponseEntity.ok(new EchoDto(i)); + } + + @GetMapping("/echo-count") + public ResponseEntity getEchoCount() { + return ResponseEntity.ok(new EchoCountDto(echoCallCount.get())); + } + private List toDtoList(Iterable measurements) { return ((List) ((measurements instanceof List) ? measurements : toList(measurements))) .stream() @@ -51,32 +64,19 @@ private List toDtoList(Iterable measurements) { } private List toList(Iterable iterable) { - return (List) ((List) - java.util.stream.StreamSupport.stream(iterable.spliterator(), false).collect(Collectors.toList())); + return java.util.stream.StreamSupport.stream(iterable.spliterator(), false).collect(Collectors.toList()); } - static class CounterDto { - public final int value; - public final String display; - public final boolean switchOn; + record CounterDto(int value, String display, boolean switchOn) { + } - public CounterDto(int value, String display, boolean switchOn) { - this.value = value; - this.display = display; - this.switchOn = switchOn; - } + record MeasurementDto(Long id, int value, String timestamp) { } - static class MeasurementDto { - public final Long id; - public final int value; - public final String timestamp; + record EchoDto(int count) { + } - public MeasurementDto(Long id, int value, String timestamp) { - this.id = id; - this.value = value; - this.timestamp = timestamp; - } + record EchoCountDto(int count) { } } diff --git a/src/main/resources/static/index.html b/src/main/resources/static/index.html index 9ea84ef..047ee17 100644 --- a/src/main/resources/static/index.html +++ b/src/main/resources/static/index.html @@ -21,6 +21,7 @@ + Echo Calls: 0
@@ -55,11 +56,19 @@

Measurements

return res.json(); } + async function fetchEchoCount() { + const res = await fetch('/api/echo-count'); + return res.json(); + } + async function refreshUi() { const counter = await fetchCounter(); document.getElementById('display').textContent = counter.display; document.getElementById('led').checked = counter.switchOn; + const echoCounter = await fetchEchoCount(); + document.getElementById('echoCount').textContent = 'Echo Calls: ' + echoCounter.count; + const measurements = await fetchMeasurements(); const series = measurements.map((m, idx) => m.value); const x = measurements.map((m, idx) => idx);