fix(map): clip chart sensor selector ripple to pill shape

Made-with: Cursor
This commit is contained in:
2026-04-06 22:13:27 +02:00
parent ac334db940
commit 3057d9c2d4

View File

@@ -23,6 +23,7 @@ import androidx.compose.foundation.verticalScroll
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.Card
import androidx.compose.material3.CardDefaults
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.FilterChip
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon
@@ -61,8 +62,8 @@ import org.db3.airmq.features.common.AirMQButton
import org.db3.airmq.features.common.AirMQButtonStyle
import org.db3.airmq.features.common.chart.AirMQChart
import org.db3.airmq.features.common.chart.ChartConfig
import org.db3.airmq.features.common.chart.ChartDataset
import org.db3.airmq.features.common.chart.generateSineWaveData
import org.db3.airmq.features.common.metric.SensorType as MetricSensorType
import org.db3.airmq.features.dashboard.DashboardChartMapper
import org.db3.airmq.features.map.MapScreenContract.DevicePanelState
import org.db3.airmq.features.map.MapScreenContract.DeviceSensorType
import org.db3.airmq.features.map.MapScreenContract.SearchResult
@@ -520,7 +521,7 @@ fun MapDevicePanelContent(
.height(256.dp)
) {
AirMQChart(
data = ChartDataset.Single(generateSineWaveData()),
data = data.chartDataset,
config = chartConfigForSensor(
data.selectedSensor,
leftTimeLabel = stringResource(R.string.filter_hour),
@@ -533,6 +534,23 @@ fun MapDevicePanelContent(
.align(Alignment.TopCenter)
)
if (data.isChartLoading) {
CircularProgressIndicator(
modifier = Modifier.align(Alignment.Center)
)
}
data.chartErrorMessage?.let { err ->
Text(
text = err,
style = MaterialTheme.typography.bodySmall,
color = Color(0xFFB00020),
modifier = Modifier
.align(Alignment.TopCenter)
.padding(top = 4.dp)
)
}
DeviceSensorDropdown(
selectedSensor = data.selectedSensor,
supportedSensors = data.supportedSensors,
@@ -696,6 +714,7 @@ private fun DeviceSensorDropdown(
modifier = Modifier
.fillMaxWidth()
.height(36.dp)
.clip(triggerShape)
.clickable { isExpanded = !isExpanded },
shape = triggerShape,
shadowElevation = 10.dp,
@@ -858,7 +877,12 @@ private fun PreviewMapDevicePanelDust() {
status = "Online",
selectedRange = TimeRange.DAY,
displayedDateRange = "Today",
selectedSensor = DeviceSensorType.DUST
selectedSensor = DeviceSensorType.DUST,
chartDataset = DashboardChartMapper.chartDataset(
DashboardChartMapper.previewStaticRows(),
MetricSensorType.DUST
),
isChartLoading = false
),
onOpenDevice = {},
onRangeSelected = {},
@@ -880,7 +904,12 @@ private fun PreviewMapDevicePanelRadioactivity() {
status = "Offline",
selectedRange = TimeRange.WEEK,
displayedDateRange = "Last 7 days",
selectedSensor = DeviceSensorType.RADIOACTIVITY
selectedSensor = DeviceSensorType.RADIOACTIVITY,
chartDataset = DashboardChartMapper.chartDataset(
DashboardChartMapper.previewStaticRows(),
MetricSensorType.RADIOACTIVITY
),
isChartLoading = false
),
onOpenDevice = {},
onRangeSelected = {},