From 5d47ca2e3ae7e6091c7f55121e2e1d4c31a8486a Mon Sep 17 00:00:00 2001 From: johan12345 Date: Sat, 8 Oct 2022 13:29:11 +0200 Subject: [PATCH] add note that predictions are only for DC plugs (in case it is relevant) --- .../vonforst/evmap/viewmodel/MapViewModel.kt | 36 ++++++++++++++++--- app/src/main/res/layout/detail_view.xml | 22 ++++++++++-- app/src/main/res/layout/fragment_map.xml | 1 + app/src/main/res/values-de/strings.xml | 2 ++ app/src/main/res/values/strings.xml | 2 ++ 5 files changed, 55 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/net/vonforst/evmap/viewmodel/MapViewModel.kt b/app/src/main/java/net/vonforst/evmap/viewmodel/MapViewModel.kt index ea4c0082..b6f5e6f6 100644 --- a/app/src/main/java/net/vonforst/evmap/viewmodel/MapViewModel.kt +++ b/app/src/main/java/net/vonforst/evmap/viewmodel/MapViewModel.kt @@ -19,6 +19,7 @@ import net.vonforst.evmap.api.fronyx.FronyxApi import net.vonforst.evmap.api.fronyx.FronyxEvseIdResponse import net.vonforst.evmap.api.fronyx.FronyxStatus import net.vonforst.evmap.api.goingelectric.GEChargepoint +import net.vonforst.evmap.api.nameForPlugType import net.vonforst.evmap.api.openchargemap.OCMConnection import net.vonforst.evmap.api.openchargemap.OCMReferenceData import net.vonforst.evmap.api.stringProvider @@ -279,12 +280,37 @@ class MapViewModel(application: Application, private val state: SavedStateHandle } } + private val predictedChargepoints = charger.map { + it.data?.let { charger -> + charger.chargepoints.filter { FronyxApi.isChargepointSupported(charger, it) } + } + } + val predictionMaxValue: LiveData by lazy { - charger.map { - it.data?.let { charger -> - charger.chargepoints.filter { FronyxApi.isChargepointSupported(charger, it) } - .sumOf { it.count } - } ?: 0 + predictedChargepoints.map { + it?.sumOf { it.count } ?: 0 + } + } + + val predictionDescription: LiveData by lazy { + predictedChargepoints.map { predictedChargepoints -> + if (predictedChargepoints == null) return@map null + val allChargepoints = charger.value?.data?.chargepoints ?: return@map null + + val predictedChargepointTypes = predictedChargepoints.map { it.type }.distinct() + if (allChargepoints == predictedChargepoints) { + null + } else if (predictedChargepointTypes.size == 1) { + application.getString( + R.string.prediction_only, + nameForPlugType(application.stringProvider(), predictedChargepointTypes[0]) + ) + } else { + application.getString( + R.string.prediction_only, + application.getString(R.string.prediction_dc_plugs_only) + ) + } } } diff --git a/app/src/main/res/layout/detail_view.xml b/app/src/main/res/layout/detail_view.xml index 2597aec8..eadc9789 100644 --- a/app/src/main/res/layout/detail_view.xml +++ b/app/src/main/res/layout/detail_view.xml @@ -51,6 +51,10 @@ name="predictionMaxValue" type="Integer" /> + + @@ -357,18 +361,30 @@ + +