refactor: Conducting time filter at the component lvl to avoid metric nav cards from being disabled when we don't have recent data (#1402)

This commit is contained in:
Robert-0410 2024-11-13 02:24:40 -08:00 committed by GitHub
parent f6af9b8782
commit 013e3de792
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 54 additions and 50 deletions

View file

@ -65,6 +65,8 @@ fun DeviceMetricsScreen(
) {
val state by viewModel.state.collectAsStateWithLifecycle()
var displayInfoDialog by remember { mutableStateOf(false) }
val selectedTimeFrame by viewModel.timeFrame.collectAsState()
val data = state.deviceMetricsFiltered(selectedTimeFrame)
Column {
@ -82,11 +84,10 @@ fun DeviceMetricsScreen(
modifier = Modifier
.fillMaxWidth()
.fillMaxHeight(fraction = 0.33f),
state.deviceMetrics.reversed(),
data.reversed(),
promptInfoDialog = { displayInfoDialog = true }
)
val selectedTimeFrame by viewModel.timeFrame.collectAsState()
MetricsTimeSelector(
selectedTimeFrame,
onOptionSelected = { viewModel.setTimeFrame(it) }
@ -98,7 +99,7 @@ fun DeviceMetricsScreen(
LazyColumn(
modifier = Modifier.fillMaxSize()
) {
items(state.deviceMetrics) { telemetry -> DeviceMetricsCard(telemetry) }
items(data) { telemetry -> DeviceMetricsCard(telemetry) }
}
}
}

View file

@ -77,6 +77,8 @@ fun EnvironmentMetricsScreen(
viewModel: MetricsViewModel = hiltViewModel(),
) {
val state by viewModel.state.collectAsStateWithLifecycle()
val selectedTimeFrame by viewModel.timeFrame.collectAsState()
val data = state.environmentMetricsFiltered(selectedTimeFrame)
/* Convert Celsius to Fahrenheit */
@Suppress("MagicNumber")
@ -85,7 +87,7 @@ fun EnvironmentMetricsScreen(
}
val processedTelemetries: List<Telemetry> = if (state.isFahrenheit) {
state.environmentMetrics.map { telemetry ->
data.map { telemetry ->
val temperatureFahrenheit =
celsiusToFahrenheit(telemetry.environmentMetrics.temperature)
telemetry.copy {
@ -94,7 +96,7 @@ fun EnvironmentMetricsScreen(
}
}
} else {
state.environmentMetrics
data
}
var displayInfoDialog by remember { mutableStateOf(false) }
@ -118,7 +120,6 @@ fun EnvironmentMetricsScreen(
promptInfoDialog = { displayInfoDialog = true }
)
val selectedTimeFrame by viewModel.timeFrame.collectAsState()
MetricsTimeSelector(
selectedTimeFrame,
onOptionSelected = { viewModel.setTimeFrame(it) }

View file

@ -71,6 +71,8 @@ fun SignalMetricsScreen(
) {
val state by viewModel.state.collectAsStateWithLifecycle()
var displayInfoDialog by remember { mutableStateOf(false) }
val selectedTimeFrame by viewModel.timeFrame.collectAsState()
val data = state.signalMetricsFiltered(selectedTimeFrame)
Column {
@ -88,11 +90,10 @@ fun SignalMetricsScreen(
modifier = Modifier
.fillMaxWidth()
.fillMaxHeight(fraction = 0.33f),
meshPackets = state.signalMetrics.reversed(),
meshPackets = data.reversed(),
promptInfoDialog = { displayInfoDialog = true }
)
val selectedTimeFrame by viewModel.timeFrame.collectAsState()
MetricsTimeSelector(
selectedTimeFrame,
onOptionSelected = { viewModel.setTimeFrame(it) }
@ -103,7 +104,7 @@ fun SignalMetricsScreen(
LazyColumn(
modifier = Modifier.fillMaxSize()
) {
items(state.signalMetrics) { meshPacket -> SignalMetricsCard(meshPacket) }
items(data) { meshPacket -> SignalMetricsCard(meshPacket) }
}
}
}