Browse Source

fix: ui

dev_ios
AnranYus 3 weeks ago
parent
commit
215fee1c2c
  1. 18
      shared/src/androidMain/kotlin/com/whitefish/ring/data/DeviceDataProvider.android.kt
  2. 29
      shared/src/commonMain/kotlin/com/whitefish/ring/ui/chart/RecoveryChartWithTimeLabels.kt
  3. 16
      shared/src/commonMain/kotlin/com/whitefish/ring/ui/chart/RecoveryStateCard.kt

18
shared/src/androidMain/kotlin/com/whitefish/ring/data/DeviceDataProvider.android.kt

@ -1,7 +1,9 @@
package com.whitefish.ring.data
import com.whitefish.ring.bean.ui.HeartRate
import com.whitefish.ring.bean.ui.Oximetry
import com.whitefish.ring.bean.ui.SleepState
import com.whitefish.ring.bean.ui.Temperature
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.withContext
@ -34,5 +36,19 @@ actual suspend fun getSleep(
end: Long
): SleepState {
//todo android sleep data
return SleepState(0,emptyList())
return SleepState(0,emptyList(),0,0)
}
actual suspend fun getOximetry(
start: Long,
end: Long
): List<Oximetry> {
TODO("Not yet implemented")
}
actual suspend fun getTemperature(
start: Long,
end: Long
): List<Temperature> {
TODO("Not yet implemented")
}

29
shared/src/commonMain/kotlin/com/whitefish/ring/ui/chart/RecoveryChartWithTimeLabels.kt

@ -17,6 +17,7 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.compose.foundation.Canvas
import androidx.compose.foundation.Image
import androidx.compose.material3.CardDefaults
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.text.TextMeasurer
@ -24,6 +25,7 @@ import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.drawText
import androidx.compose.ui.text.rememberTextMeasurer
import org.jetbrains.compose.resources.painterResource
import org.jetbrains.compose.ui.tooling.preview.Preview
import ring.shared.generated.resources.Res
import ring.shared.generated.resources.bg_recovery_chart
import ring.shared.generated.resources.bg_recovery_score
@ -38,18 +40,11 @@ fun RecoveryChartWithTimeLabels(
val textMeasurer = rememberTextMeasurer()
Card(
modifier = modifier
.clip(RoundedCornerShape(24.dp)),
shape = RoundedCornerShape(24.dp)
modifier = modifier,
colors = CardDefaults.cardColors().copy(containerColor = Color(0xff352764))
) {
Box(modifier = Modifier.wrapContentSize()) {
Image(
painterResource(Res.drawable.bg_recovery_chart),
contentDescription = null,
modifier = Modifier.fillMaxSize(),
contentScale = ContentScale.Crop
)
Box(modifier = Modifier.fillMaxSize().background(Color.Transparent)) {
Box(
modifier = Modifier.padding(horizontal = 24.dp)
) {
@ -433,4 +428,16 @@ private fun generateSamplePredictedData(): List<Float> {
val noise = cos(timeInHours * 0.3f).toFloat() * 0.03f
(baseValue + noise).coerceIn(0f, 1f)
}
}
}
@Preview
@Composable
fun RecoveryChartWithTimeLabelsPreview() {
RecoveryChartWithTimeLabels(
modifier = Modifier
.fillMaxWidth()
.height(300.dp),
actualData = generateSampleActualData(),
predictedData = generateSamplePredictedData()
)
}

16
shared/src/commonMain/kotlin/com/whitefish/ring/ui/chart/RecoveryStateCard.kt

@ -2,25 +2,20 @@ package com.whitefish.ring.ui.chart
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.ColumnScope
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.Card
import androidx.compose.material3.CardDefaults
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
@ -33,11 +28,8 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.whitefish.app.ui.chart.sleep.SleepChart
import com.whitefish.ring.bean.ui.SleepState
import com.whitefish.ring.utils.buildStyledText
import org.jetbrains.compose.resources.DrawableResource
import org.jetbrains.compose.resources.painterResource
import org.jetbrains.compose.ui.tooling.preview.Preview
import ring.shared.generated.resources.Res
data class RecoveryStateCardItem(
@ -60,7 +52,7 @@ sealed class RecoveryStateCardType() {
fun RecoveryStateCard(states: List<RecoveryStateCardItem>) {
Card(
shape = RoundedCornerShape(40.dp),
modifier = Modifier.fillMaxWidth().wrapContentHeight()
modifier = Modifier.fillMaxWidth().wrapContentHeight(), colors = CardDefaults.cardColors().copy(containerColor = Color.White)
) {
Spacer(modifier = Modifier.height(6.dp))
Box(modifier = Modifier.width(92.dp).height(6.dp).clip(RoundedCornerShape(15.dp)).background(Color(0xff352764)).align(
@ -81,7 +73,9 @@ fun RecoveryStateCard(states: List<RecoveryStateCardItem>) {
is RecoveryStateCardType.Oximetry -> {
ComposeMultiplatformBasicLineChart(it.type.values,modifier = modifier)
}
is RecoveryStateCardType.Pressure -> TODO()
is RecoveryStateCardType.Pressure -> {
}
is RecoveryStateCardType.Temperature -> {
ComposeMultiplatformBasicLineChart(it.type.values,modifier = modifier)
}

Loading…
Cancel
Save