feat(connector): add TestRun screen

This commit is contained in:
Anthony 2024-05-01 15:29:51 +01:00
parent c5e20d6363
commit 77ecc4dc5a
2 changed files with 68 additions and 2 deletions

View File

@ -14,9 +14,9 @@ class TestContent : Screen {
val state by screenModel.state.collectAsState()
when (val s = state) {
is ActionsState.Loading -> LoadingScreen("Simulator Test")
is ActionsState.Loading -> LoadingScreen("Simulator Test").Content()
is ActionsState.Idle -> { /* TODO implement error? */ }
is ActionsState.Result -> TODO("Not yet implemented")
is ActionsState.Result -> TestRun(s.actions).Content()
}
LaunchedEffect(currentCompositeKeyHash) {

View File

@ -0,0 +1,66 @@
package tab.test
import androidx.compose.foundation.VerticalScrollbar
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.rememberScrollbarAdapter
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Info
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon
import androidx.compose.material3.ListItem
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import cafe.adriel.voyager.core.screen.Screen
import io.anthonyberg.connector.shared.entity.Action
class TestRun (
private val actions: List<Action>
) : Screen {
@Composable
override fun Content() {
val lazyState = rememberLazyListState(0)
Column(
modifier = Modifier.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally,
) {
Box(
modifier = Modifier.fillMaxWidth(0.7F)
) {
LazyColumn {
items(actions) { action ->
ActionItem(action)
}
}
VerticalScrollbar(
modifier = Modifier
.align(Alignment.CenterEnd)
.fillMaxHeight(),
adapter = rememberScrollbarAdapter(
scrollState = lazyState,
),
)
}
}
}
@Composable
private fun ActionItem(action: Action) {
ListItem(
headlineContent = { Text(action.type) },
supportingContent = { Text("Goal: ${action.goal}") },
leadingContent = { Icon(Icons.Outlined.Info, null) }
)
HorizontalDivider()
}
}