fix(map): clip chart sensor selector ripple to pill shape
Made-with: Cursor
This commit is contained in:
@@ -23,6 +23,7 @@ import androidx.compose.foundation.verticalScroll
|
|||||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
import androidx.compose.material3.Card
|
import androidx.compose.material3.Card
|
||||||
import androidx.compose.material3.CardDefaults
|
import androidx.compose.material3.CardDefaults
|
||||||
|
import androidx.compose.material3.CircularProgressIndicator
|
||||||
import androidx.compose.material3.FilterChip
|
import androidx.compose.material3.FilterChip
|
||||||
import androidx.compose.material3.HorizontalDivider
|
import androidx.compose.material3.HorizontalDivider
|
||||||
import androidx.compose.material3.Icon
|
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.AirMQButtonStyle
|
||||||
import org.db3.airmq.features.common.chart.AirMQChart
|
import org.db3.airmq.features.common.chart.AirMQChart
|
||||||
import org.db3.airmq.features.common.chart.ChartConfig
|
import org.db3.airmq.features.common.chart.ChartConfig
|
||||||
import org.db3.airmq.features.common.chart.ChartDataset
|
import org.db3.airmq.features.common.metric.SensorType as MetricSensorType
|
||||||
import org.db3.airmq.features.common.chart.generateSineWaveData
|
import org.db3.airmq.features.dashboard.DashboardChartMapper
|
||||||
import org.db3.airmq.features.map.MapScreenContract.DevicePanelState
|
import org.db3.airmq.features.map.MapScreenContract.DevicePanelState
|
||||||
import org.db3.airmq.features.map.MapScreenContract.DeviceSensorType
|
import org.db3.airmq.features.map.MapScreenContract.DeviceSensorType
|
||||||
import org.db3.airmq.features.map.MapScreenContract.SearchResult
|
import org.db3.airmq.features.map.MapScreenContract.SearchResult
|
||||||
@@ -520,7 +521,7 @@ fun MapDevicePanelContent(
|
|||||||
.height(256.dp)
|
.height(256.dp)
|
||||||
) {
|
) {
|
||||||
AirMQChart(
|
AirMQChart(
|
||||||
data = ChartDataset.Single(generateSineWaveData()),
|
data = data.chartDataset,
|
||||||
config = chartConfigForSensor(
|
config = chartConfigForSensor(
|
||||||
data.selectedSensor,
|
data.selectedSensor,
|
||||||
leftTimeLabel = stringResource(R.string.filter_hour),
|
leftTimeLabel = stringResource(R.string.filter_hour),
|
||||||
@@ -533,6 +534,23 @@ fun MapDevicePanelContent(
|
|||||||
.align(Alignment.TopCenter)
|
.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(
|
DeviceSensorDropdown(
|
||||||
selectedSensor = data.selectedSensor,
|
selectedSensor = data.selectedSensor,
|
||||||
supportedSensors = data.supportedSensors,
|
supportedSensors = data.supportedSensors,
|
||||||
@@ -696,6 +714,7 @@ private fun DeviceSensorDropdown(
|
|||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.height(36.dp)
|
.height(36.dp)
|
||||||
|
.clip(triggerShape)
|
||||||
.clickable { isExpanded = !isExpanded },
|
.clickable { isExpanded = !isExpanded },
|
||||||
shape = triggerShape,
|
shape = triggerShape,
|
||||||
shadowElevation = 10.dp,
|
shadowElevation = 10.dp,
|
||||||
@@ -858,7 +877,12 @@ private fun PreviewMapDevicePanelDust() {
|
|||||||
status = "Online",
|
status = "Online",
|
||||||
selectedRange = TimeRange.DAY,
|
selectedRange = TimeRange.DAY,
|
||||||
displayedDateRange = "Today",
|
displayedDateRange = "Today",
|
||||||
selectedSensor = DeviceSensorType.DUST
|
selectedSensor = DeviceSensorType.DUST,
|
||||||
|
chartDataset = DashboardChartMapper.chartDataset(
|
||||||
|
DashboardChartMapper.previewStaticRows(),
|
||||||
|
MetricSensorType.DUST
|
||||||
|
),
|
||||||
|
isChartLoading = false
|
||||||
),
|
),
|
||||||
onOpenDevice = {},
|
onOpenDevice = {},
|
||||||
onRangeSelected = {},
|
onRangeSelected = {},
|
||||||
@@ -880,7 +904,12 @@ private fun PreviewMapDevicePanelRadioactivity() {
|
|||||||
status = "Offline",
|
status = "Offline",
|
||||||
selectedRange = TimeRange.WEEK,
|
selectedRange = TimeRange.WEEK,
|
||||||
displayedDateRange = "Last 7 days",
|
displayedDateRange = "Last 7 days",
|
||||||
selectedSensor = DeviceSensorType.RADIOACTIVITY
|
selectedSensor = DeviceSensorType.RADIOACTIVITY,
|
||||||
|
chartDataset = DashboardChartMapper.chartDataset(
|
||||||
|
DashboardChartMapper.previewStaticRows(),
|
||||||
|
MetricSensorType.RADIOACTIVITY
|
||||||
|
),
|
||||||
|
isChartLoading = false
|
||||||
),
|
),
|
||||||
onOpenDevice = {},
|
onOpenDevice = {},
|
||||||
onRangeSelected = {},
|
onRangeSelected = {},
|
||||||
|
|||||||
Reference in New Issue
Block a user