refactor(graphs): Missing iaq (#1752)

This commit is contained in:
Robert-0410 2025-05-08 08:31:07 -07:00 committed by GitHub
parent 64c13ac57d
commit 309ce27268
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 230 additions and 171 deletions

View file

@ -71,7 +71,6 @@ data class MetricsState(
val displayUnits: DisplayUnits = DisplayUnits.METRIC,
val node: Node? = null,
val deviceMetrics: List<Telemetry> = emptyList(),
val environmentMetrics: List<Telemetry> = emptyList(),
val signalMetrics: List<MeshPacket> = emptyList(),
val powerMetrics: List<Telemetry> = emptyList(),
val tracerouteRequests: List<MeshLog> = emptyList(),
@ -80,7 +79,6 @@ data class MetricsState(
val deviceHardware: DeviceHardware? = null,
) {
fun hasDeviceMetrics() = deviceMetrics.isNotEmpty()
fun hasEnvironmentMetrics() = environmentMetrics.isNotEmpty()
fun hasSignalMetrics() = signalMetrics.isNotEmpty()
fun hasPowerMetrics() = powerMetrics.isNotEmpty()
fun hasTracerouteLogs() = tracerouteRequests.isNotEmpty()
@ -91,11 +89,6 @@ data class MetricsState(
return deviceMetrics.filter { it.time >= oldestTime }
}
fun environmentMetricsFiltered(timeFrame: TimeFrame): List<Telemetry> {
val oldestTime = timeFrame.calculateOldestTime()
return environmentMetrics.filter { it.time >= oldestTime }
}
fun signalMetricsFiltered(timeFrame: TimeFrame): List<MeshPacket> {
val oldestTime = timeFrame.calculateOldestTime()
return signalMetrics.filter { it.rxTime >= oldestTime }
@ -217,6 +210,9 @@ class MetricsViewModel @Inject constructor(
private val _state = MutableStateFlow(MetricsState.Empty)
val state: StateFlow<MetricsState> = _state
private val _envState = MutableStateFlow(EnvironmentMetricsState())
val environmentState: StateFlow<EnvironmentMetricsState> = _envState
private val _timeFrame = MutableStateFlow(TimeFrame.TWENTY_FOUR_HOURS)
val timeFrame: StateFlow<TimeFrame> = _timeFrame
@ -253,12 +249,16 @@ class MetricsViewModel @Inject constructor(
_state.update { state ->
state.copy(
deviceMetrics = telemetry.filter { it.hasDeviceMetrics() },
powerMetrics = telemetry.filter { it.hasPowerMetrics() }
)
}
_envState.update { state ->
state.copy(
environmentMetrics = telemetry.filter {
it.hasEnvironmentMetrics() &&
it.environmentMetrics.relativeHumidity >= 0f &&
!it.environmentMetrics.temperature.isNaN()
},
powerMetrics = telemetry.filter { it.hasPowerMetrics() }
)
}
}.launchIn(viewModelScope)