add instances to dashboard and change arrangement

This commit is contained in:
Minecon724 2024-07-27 15:55:06 +02:00
parent 2a868aaa00
commit 2ba20d415f
Signed by: Minecon724
GPG key ID: 3CCC4D267742C8E8

View file

@ -2,11 +2,17 @@ package eu.m724.vastapp.activity.dashboard.screen
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.ExperimentalLayoutApi
import androidx.compose.foundation.layout.FlowRow
import androidx.compose.foundation.layout.IntrinsicSize
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.aspectRatio
import androidx.compose.foundation.layout.fillMaxHeight
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.width import androidx.compose.foundation.layout.width
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
@ -35,7 +41,7 @@ import eu.m724.vastapp.R
import eu.m724.vastapp.activity.dashboard.DashboardViewModel import eu.m724.vastapp.activity.dashboard.DashboardViewModel
import org.json.JSONObject import org.json.JSONObject
@OptIn(ExperimentalMaterial3Api::class) // for pullRefresh @OptIn(ExperimentalMaterial3Api::class, ExperimentalLayoutApi::class) // for pullRefresh
@Composable @Composable
fun DashboardScreen(dashboardViewModel: DashboardViewModel) { fun DashboardScreen(dashboardViewModel: DashboardViewModel) {
val uiState by dashboardViewModel.uiState.collectAsState() val uiState by dashboardViewModel.uiState.collectAsState()
@ -63,29 +69,29 @@ fun DashboardScreen(dashboardViewModel: DashboardViewModel) {
Text("Hello ${user.username}!", fontSize = 28.sp) Text("Hello ${user.username}!", fontSize = 28.sp)
} }
Row( FlowRow {
modifier = Modifier.width(340.dp) // balance card
) {
Card( Card(
modifier = Modifier modifier = Modifier
.fillMaxWidth() .width(160.dp)
.padding(16.dp) .padding(16.dp),
.weight(1f),
colors = CardDefaults.cardColors( colors = CardDefaults.cardColors(
containerColor = balanceCardColor(user.credit) containerColor = balanceCardColor(user.credit)
) )
) { ) {
Row( Row(
modifier = Modifier.padding(horizontal = 16.dp, vertical = 8.dp), modifier = Modifier.padding(16.dp, 8.dp),
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically
) { ) {
Icon( Icon(
modifier = Modifier.size(24.dp),
painter = painterResource(id = R.drawable.baseline_monetization_on_24), painter = painterResource(id = R.drawable.baseline_monetization_on_24),
contentDescription = "Balance" contentDescription = "Balance"
) )
Spacer(modifier = Modifier Spacer(
.fillMaxWidth() modifier = Modifier
.weight(1f) .fillMaxWidth()
.weight(1f)
) )
Text( Text(
text = "$%.2f".format(user.credit), text = "$%.2f".format(user.credit),
@ -94,17 +100,19 @@ fun DashboardScreen(dashboardViewModel: DashboardViewModel) {
) )
} }
} }
// time card
Card( Card(
modifier = Modifier modifier = Modifier
.fillMaxWidth() .width(160.dp)
.padding(16.dp) .padding(16.dp)
.weight(1f),
) { ) {
Row( Row(
modifier = Modifier.padding(horizontal = 16.dp, vertical = 8.dp), modifier = Modifier.padding(16.dp, 8.dp),
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically
) { ) {
Icon( Icon(
modifier = Modifier.size(24.dp),
painter = painterResource(id = R.drawable.baseline_access_time_filled_24), painter = painterResource(id = R.drawable.baseline_access_time_filled_24),
contentDescription = "Remaining time" contentDescription = "Remaining time"
) )
@ -119,24 +127,32 @@ fun DashboardScreen(dashboardViewModel: DashboardViewModel) {
) )
} }
} }
}
// TODO maybe reuse that from Instances? // instances
Card(
val instance = JSONObject() modifier = Modifier
instance.put("id", 234523) .width(160.dp)
instance.put("machine_id", 1121323) .padding(16.dp)
instance.put("host_id", 5924) ) {
instance.put("gpu_name", "RTX 4090") Row(
instance.put("num_gpus", 2) modifier = Modifier.padding(16.dp, 8.dp),
instance.put("gpu_util", 70) verticalAlignment = Alignment.CenterVertically
instance.put("gpu_ram", 24564) ) {
instance.put("vmem_usage", 0.339843) Icon(
modifier = Modifier.size(24.dp),
Column( painter = painterResource(id = R.drawable.server_solid),
modifier = Modifier.width(340.dp) contentDescription = "Rented"
) { )
InstanceCard(instance = instance, modifier = Modifier.padding(16.dp)) Spacer(modifier = Modifier
.fillMaxWidth()
.weight(1f)
)
Text(
text = "4",
fontSize = 22.sp
)
}
}
} }
} }
} }