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. 27
      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 package com.whitefish.ring.data
import com.whitefish.ring.bean.ui.HeartRate 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.SleepState
import com.whitefish.ring.bean.ui.Temperature
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
@ -34,5 +36,19 @@ actual suspend fun getSleep(
end: Long end: Long
): SleepState { ): SleepState {
//todo android sleep data //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")
} }

27
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.ui.unit.sp
import androidx.compose.foundation.Canvas import androidx.compose.foundation.Canvas
import androidx.compose.foundation.Image import androidx.compose.foundation.Image
import androidx.compose.material3.CardDefaults
import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.text.TextMeasurer 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.drawText
import androidx.compose.ui.text.rememberTextMeasurer import androidx.compose.ui.text.rememberTextMeasurer
import org.jetbrains.compose.resources.painterResource 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.Res
import ring.shared.generated.resources.bg_recovery_chart import ring.shared.generated.resources.bg_recovery_chart
import ring.shared.generated.resources.bg_recovery_score import ring.shared.generated.resources.bg_recovery_score
@ -38,18 +40,11 @@ fun RecoveryChartWithTimeLabels(
val textMeasurer = rememberTextMeasurer() val textMeasurer = rememberTextMeasurer()
Card( Card(
modifier = modifier modifier = modifier,
.clip(RoundedCornerShape(24.dp)), colors = CardDefaults.cardColors().copy(containerColor = Color(0xff352764))
shape = RoundedCornerShape(24.dp)
) { ) {
Box(modifier = Modifier.wrapContentSize()) { Box(modifier = Modifier.fillMaxSize().background(Color.Transparent)) {
Image(
painterResource(Res.drawable.bg_recovery_chart),
contentDescription = null,
modifier = Modifier.fillMaxSize(),
contentScale = ContentScale.Crop
)
Box( Box(
modifier = Modifier.padding(horizontal = 24.dp) modifier = Modifier.padding(horizontal = 24.dp)
) { ) {
@ -434,3 +429,15 @@ private fun generateSamplePredictedData(): List<Float> {
(baseValue + noise).coerceIn(0f, 1f) (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.Image
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.ColumnScope
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.wrapContentHeight 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.foundation.shape.RoundedCornerShape
import androidx.compose.material3.Card import androidx.compose.material3.Card
import androidx.compose.material3.CardDefaults
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
@ -33,11 +28,8 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import com.whitefish.app.ui.chart.sleep.SleepChart import com.whitefish.app.ui.chart.sleep.SleepChart
import com.whitefish.ring.bean.ui.SleepState import com.whitefish.ring.bean.ui.SleepState
import com.whitefish.ring.utils.buildStyledText
import org.jetbrains.compose.resources.DrawableResource import org.jetbrains.compose.resources.DrawableResource
import org.jetbrains.compose.resources.painterResource import org.jetbrains.compose.resources.painterResource
import org.jetbrains.compose.ui.tooling.preview.Preview
import ring.shared.generated.resources.Res
data class RecoveryStateCardItem( data class RecoveryStateCardItem(
@ -60,7 +52,7 @@ sealed class RecoveryStateCardType() {
fun RecoveryStateCard(states: List<RecoveryStateCardItem>) { fun RecoveryStateCard(states: List<RecoveryStateCardItem>) {
Card( Card(
shape = RoundedCornerShape(40.dp), 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)) Spacer(modifier = Modifier.height(6.dp))
Box(modifier = Modifier.width(92.dp).height(6.dp).clip(RoundedCornerShape(15.dp)).background(Color(0xff352764)).align( 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 -> { is RecoveryStateCardType.Oximetry -> {
ComposeMultiplatformBasicLineChart(it.type.values,modifier = modifier) ComposeMultiplatformBasicLineChart(it.type.values,modifier = modifier)
} }
is RecoveryStateCardType.Pressure -> TODO() is RecoveryStateCardType.Pressure -> {
}
is RecoveryStateCardType.Temperature -> { is RecoveryStateCardType.Temperature -> {
ComposeMultiplatformBasicLineChart(it.type.values,modifier = modifier) ComposeMultiplatformBasicLineChart(it.type.values,modifier = modifier)
} }

Loading…
Cancel
Save