From 529a997131f55f1188497eda758c10bbcfd9b430 Mon Sep 17 00:00:00 2001 From: blafoo Date: Sat, 13 Jan 2024 13:52:19 +0100 Subject: [PATCH] Small improvements --- .../de/blafoo/bkw/views/bkw/BkwFeignView.java | 3 ++- .../blafoo/bkw/views/bkw/BkwGrowattView.java | 3 ++- .../java/de/blafoo/bkw/views/bkw/BkwView.java | 26 +++++++++++++++---- .../growatt/feign/GrowattFeignCookieJar.java | 2 +- src/main/resources/application.yml.yml | 16 ++++++++++++ 5 files changed, 42 insertions(+), 8 deletions(-) create mode 100644 src/main/resources/application.yml.yml diff --git a/src/main/java/de/blafoo/bkw/views/bkw/BkwFeignView.java b/src/main/java/de/blafoo/bkw/views/bkw/BkwFeignView.java index 8cae2da..6b6822a 100644 --- a/src/main/java/de/blafoo/bkw/views/bkw/BkwFeignView.java +++ b/src/main/java/de/blafoo/bkw/views/bkw/BkwFeignView.java @@ -16,6 +16,7 @@ import de.blafoo.growatt.feign.GrowattFeignClient; import de.blafoo.growatt.feign.GrowattFeignCookieJar; +@SuppressWarnings("serial") @PageTitle("BKW (Feign)") @Route(value = "bkwfeign", layout = MainLayout.class) public class BkwFeignView extends BkwView { @@ -40,7 +41,7 @@ protected String login() { @Override protected TotalDataResponse getTotalData(@NonNull String plantId) { - return growatt.getTotalData(new EnergyRequest(plantId, null)); + return growatt.getTotalData(new EnergyRequest(plantId)); } @Override diff --git a/src/main/java/de/blafoo/bkw/views/bkw/BkwGrowattView.java b/src/main/java/de/blafoo/bkw/views/bkw/BkwGrowattView.java index 871eadc..dd22352 100644 --- a/src/main/java/de/blafoo/bkw/views/bkw/BkwGrowattView.java +++ b/src/main/java/de/blafoo/bkw/views/bkw/BkwGrowattView.java @@ -16,6 +16,7 @@ import de.blafoo.growatt.entity.LoginRequest; import de.blafoo.growatt.entity.TotalDataResponse; +@SuppressWarnings("serial") @PageTitle("BKW (Growatt)") @Route(value = "bkwgrowatt", layout = MainLayout.class) @RouteAlias(value = "", layout = MainLayout.class) @@ -37,7 +38,7 @@ protected String login() { @Override protected TotalDataResponse getTotalData(@NonNull String plantId) { - return growatt.getTotalData(new EnergyRequest(plantId, null)); + return growatt.getTotalData(new EnergyRequest(plantId)); } @Override diff --git a/src/main/java/de/blafoo/bkw/views/bkw/BkwView.java b/src/main/java/de/blafoo/bkw/views/bkw/BkwView.java index e05408f..2ebf02c 100644 --- a/src/main/java/de/blafoo/bkw/views/bkw/BkwView.java +++ b/src/main/java/de/blafoo/bkw/views/bkw/BkwView.java @@ -11,6 +11,7 @@ import org.springframework.lang.NonNull; import com.vaadin.flow.component.Component; +import com.vaadin.flow.component.UI; import com.vaadin.flow.component.board.Board; import com.vaadin.flow.component.charts.Chart; import com.vaadin.flow.component.charts.model.ChartType; @@ -27,6 +28,9 @@ import com.vaadin.flow.component.orderedlayout.VerticalLayout; import com.vaadin.flow.component.select.Select; import com.vaadin.flow.component.textfield.TextField; +import com.vaadin.flow.router.AfterNavigationEvent; +import com.vaadin.flow.router.AfterNavigationObserver; +import com.vaadin.flow.router.PreserveOnRefresh; import com.vaadin.flow.theme.lumo.LumoUtility.BoxSizing; import com.vaadin.flow.theme.lumo.LumoUtility.FontSize; import com.vaadin.flow.theme.lumo.LumoUtility.FontWeight; @@ -37,12 +41,18 @@ import de.blafoo.growatt.entity.TotalDataResponse; import jakarta.annotation.PostConstruct; -abstract class BkwView extends Main { +@SuppressWarnings("serial") +@PreserveOnRefresh +abstract class BkwView extends Main implements AfterNavigationObserver { protected String account; protected String password; + private String plantId; + + private TotalDataResponse totalData; + private Select yearSelect; private String month; @@ -50,7 +60,7 @@ abstract class BkwView extends Main { private Chart yearChart; private Chart monthChart; - + public BkwView(String account, String password) { if ( StringUtils.isBlank(account) || StringUtils.isBlank(password) ) throw new IllegalArgumentException("account and password must not be empty - add them to the application.properites"); @@ -63,18 +73,24 @@ public BkwView(String account, String password) { protected void init() { addClassName("bkw-view"); - String plantId = login(); - var totalData = getTotalData(plantId); + plantId = login(); + totalData = getTotalData(plantId); yearSelect = new Select<>(); var gridYear = Integer.valueOf(totalData.getObj().getGridDate().split("-")[0]); yearSelect.setItems(IntStream.range(gridYear, LocalDate.now().getYear()+1).mapToObj(String::valueOf).toList()); yearSelect.setValue(String.valueOf(LocalDate.now().getYear())); + yearSelect.addValueChangeListener(e -> UI.getCurrent().navigate(this.getClass())); + } + + @Override + public void afterNavigation(AfterNavigationEvent event) { + this.removeAll(); double eTotal = totalData.getObj().getETotal(); Board board = new Board(); board.addRow( - createHighlight("Yearly production", totalData.getObj().getETotal(), null), + createHighlight("Total production", totalData.getObj().getETotal(), null), createHighlight("Monthly production", totalData.getObj().getEMonth(), null), createHighlight("Daily production", totalData.getObj().getEToday(), eTotal / Double.valueOf(totalData.getObj().getRunDay())), createHighlight("Current production", totalData.getObj().getPac(), null) diff --git a/src/main/java/de/blafoo/growatt/feign/GrowattFeignCookieJar.java b/src/main/java/de/blafoo/growatt/feign/GrowattFeignCookieJar.java index 3de94ac..f02c894 100644 --- a/src/main/java/de/blafoo/growatt/feign/GrowattFeignCookieJar.java +++ b/src/main/java/de/blafoo/growatt/feign/GrowattFeignCookieJar.java @@ -15,7 +15,7 @@ @Scope(ConfigurableBeanFactory.SCOPE_SINGLETON) public class GrowattFeignCookieJar { - Map cookies = new HashMap<>(); + private Map cookies = new HashMap<>(); public String getCookie(String cookie, String defaultValue) { return cookies.getOrDefault(cookie, defaultValue); diff --git a/src/main/resources/application.yml.yml b/src/main/resources/application.yml.yml new file mode 100644 index 0000000..0235d5f --- /dev/null +++ b/src/main/resources/application.yml.yml @@ -0,0 +1,16 @@ +server.port=${PORT:8080} +logging.level.org.atmosphere = warn +logging.level.de.blafoo = DEBUG +spring.mustache.check-template-location = false + +# Launch the default browser when starting the application in development mode +vaadin.launch-browser=true +# To improve the performance during development. +# For more information https://vaadin.com/docs/flow/spring/tutorial-spring-configuration.html#special-configuration-parameters +vaadin.whitelisted-packages = com.vaadin,org.vaadin,dev.hilla,de.blafoo.bkw +spring.jpa.defer-datasource-initialization = true + +growatt.account = +growatt.password = + +spring.cloud.openfeign.client.config.growatt-client.loggerLevel = BASIC