Compare commits

...

3 commits

Author SHA1 Message Date
8d95c3271c
remove unused imports 2024-07-27 15:55:25 +02:00
2ba20d415f
add instances to dashboard and change arrangement 2024-07-27 15:55:06 +02:00
2a868aaa00
gitignore releases 2024-07-27 15:54:28 +02:00
2 changed files with 46 additions and 33 deletions

3
app/.gitignore vendored
View file

@ -1 +1,2 @@
/build /build
/release

View file

@ -2,11 +2,14 @@ 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.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
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
@ -33,9 +36,8 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import eu.m724.vastapp.R import eu.m724.vastapp.R
import eu.m724.vastapp.activity.dashboard.DashboardViewModel import eu.m724.vastapp.activity.dashboard.DashboardViewModel
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 +65,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 +96,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 +123,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
)
}
}
} }
} }
} }