fix 2198 - graphs scale to farenheit (#2384)

This commit is contained in:
DaneEvans 2025-07-08 22:22:06 +10:00 committed by GitHub
parent eadf0ffc75
commit 9884229a7b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 11 additions and 4 deletions

View file

@ -21,6 +21,7 @@ import androidx.compose.ui.graphics.Color
import com.geeksville.mesh.TelemetryProtos.Telemetry
import com.geeksville.mesh.ui.common.theme.InfantryBlue
import com.geeksville.mesh.ui.common.theme.Orange
import com.geeksville.mesh.util.UnitConversions
enum class Environment(val color: Color) {
TEMPERATURE(Color.Red) {
@ -75,7 +76,7 @@ data class EnvironmentMetricsState(
* @return [EnvironmentGraphingData]
*/
@Suppress("LongMethod")
fun environmentMetricsFiltered(timeFrame: TimeFrame): EnvironmentGraphingData {
fun environmentMetricsFiltered(timeFrame: TimeFrame, useFahrenheit: Boolean = false): EnvironmentGraphingData {
val oldestTime = timeFrame.calculateOldestTime()
val telemetries = environmentMetrics.filter { it.time >= oldestTime }
val shouldPlot = BooleanArray(Environment.entries.size) { false }
@ -90,9 +91,15 @@ data class EnvironmentMetricsState(
telemetries.minBy { it.environmentMetrics.temperature },
telemetries.maxBy { it.environmentMetrics.temperature }
)
var minTempValue = minTemp.environmentMetrics.temperature
var maxTempValue = maxTemp.environmentMetrics.temperature
if (useFahrenheit) {
minTempValue = UnitConversions.celsiusToFahrenheit(minTempValue)
maxTempValue = UnitConversions.celsiusToFahrenheit(maxTempValue)
}
if (minTemp.environmentMetrics.temperature != 0f || maxTemp.environmentMetrics.temperature != 0f) {
minValues.add(minTemp.environmentMetrics.temperature)
maxValues.add(maxTemp.environmentMetrics.temperature)
minValues.add(minTempValue)
maxValues.add(maxTempValue)
shouldPlot[Environment.TEMPERATURE.ordinal] = true
}

View file

@ -120,7 +120,7 @@ fun EnvironmentMetricsScreen(
val state by viewModel.state.collectAsStateWithLifecycle()
val environmentState by viewModel.environmentState.collectAsStateWithLifecycle()
val selectedTimeFrame by viewModel.timeFrame.collectAsState()
val graphData = environmentState.environmentMetricsFiltered(selectedTimeFrame)
val graphData = environmentState.environmentMetricsFiltered(selectedTimeFrame, state.isFahrenheit)
val data = graphData.metrics
val processedTelemetries: List<Telemetry> = if (state.isFahrenheit) {