diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml index f05b47c..1cd9ddd 100644 --- a/.idea/deploymentTargetSelector.xml +++ b/.idea/deploymentTargetSelector.xml @@ -13,6 +13,9 @@ + + \ No newline at end of file diff --git a/app/src/main/java/com/example/kocelainterview/domain/model/ShipDetail.kt b/app/src/main/java/com/example/kocelainterview/domain/model/ShipDetail.kt index af3a726..d9cfc72 100644 --- a/app/src/main/java/com/example/kocelainterview/domain/model/ShipDetail.kt +++ b/app/src/main/java/com/example/kocelainterview/domain/model/ShipDetail.kt @@ -3,15 +3,9 @@ package com.example.kocelainterview.domain.model data class ShipDetail( val active: Boolean, val home_port: String, - //val image: String, val ship_id: String, - //val ship_model: Any, val ship_name: String, val ship_type: String, - //val speed_kn: Int, - //val status: String, - //val successful_landings: Any, val weight_kg: Int, - //val weight_lbs: Int, val year_built: Int ) diff --git a/app/src/main/java/com/example/kocelainterview/presentation/ship_details_screen/ShipDetailScreen.kt b/app/src/main/java/com/example/kocelainterview/presentation/ship_details_screen/ShipDetailScreen.kt index b2dfba7..9f3112b 100644 --- a/app/src/main/java/com/example/kocelainterview/presentation/ship_details_screen/ShipDetailScreen.kt +++ b/app/src/main/java/com/example/kocelainterview/presentation/ship_details_screen/ShipDetailScreen.kt @@ -10,7 +10,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.foundation.lazy.items import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text @@ -24,11 +23,11 @@ import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel - @Composable fun ShipDetailScreen( viewModel: ShipDetailViewModel = hiltViewModel() ) { + val state = viewModel.state.value Box (modifier = Modifier.fillMaxSize()){ @@ -37,46 +36,46 @@ fun ShipDetailScreen( modifier = Modifier.fillMaxSize(), contentPadding = PaddingValues(20.dp) ) { - item{ - Row ( - modifier = Modifier.fillMaxWidth(), - horizontalArrangement = Arrangement.SpaceBetween - ){ - Text( - text = "${shipDetail.ship_name}. ${shipDetail.weight_kg} (${shipDetail.year_built})", - style = MaterialTheme.typography.bodyMedium, - modifier = Modifier.weight(8f) - ) - Text( - text = if (shipDetail.active) "active" else "inactive", - color = if (shipDetail.active) Color.Green else Color.Red, - fontStyle = FontStyle.Italic, - textAlign = TextAlign.End, - style = MaterialTheme.typography.bodyMedium, - modifier = Modifier - .align(Alignment.CenterVertically) - .weight(2f) - ) - Spacer(modifier = Modifier.height(15.dp)) - Text( - text = "More Details", - style = MaterialTheme.typography.bodyMedium - ) - Spacer(modifier = Modifier.height(15.dp)) - Text( - text = "$shipDetail.ship_type " , - fontStyle = FontStyle.Italic, - style = MaterialTheme.typography.bodyMedium, - ) - Spacer(modifier = Modifier.height(4.dp)) - Text( - text = "$shipDetail.home_port", - fontStyle = FontStyle.Italic, - style = MaterialTheme.typography.bodyMedium - ) - } + item{ + Row ( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween + ){ + Text( + text = "$shipDetail.ship_name. $shipDetail.weight_kg ($shipDetail.year_built)", + style = MaterialTheme.typography.bodyMedium, + modifier = Modifier.weight(8f) + ) + Text( + text = if (shipDetail.active) "active" else "inactive", + color = if (shipDetail.active) Color.Green else Color.Red, + fontStyle = FontStyle.Italic, + textAlign = TextAlign.End, + style = MaterialTheme.typography.bodyMedium, + modifier = Modifier + .align(Alignment.CenterVertically) + .weight(2f) + ) + Spacer(modifier = Modifier.height(15.dp)) + Text( + text = "More Details", + style = MaterialTheme.typography.bodyMedium + ) + Spacer(modifier = Modifier.height(15.dp)) + Text( + text = "$shipDetail.ship_type " , + fontStyle = FontStyle.Italic, + style = MaterialTheme.typography.bodyMedium, + ) + Spacer(modifier = Modifier.height(4.dp)) + Text( + text = "$shipDetail.home_port", + fontStyle = FontStyle.Italic, + style = MaterialTheme.typography.bodyMedium + ) + } - } + } diff --git a/app/src/main/java/com/example/kocelainterview/presentation/ships_screen/ShipListScreen.kt b/app/src/main/java/com/example/kocelainterview/presentation/ships_screen/ShipListScreen.kt index 8f78b65..6cc3b6f 100644 --- a/app/src/main/java/com/example/kocelainterview/presentation/ships_screen/ShipListScreen.kt +++ b/app/src/main/java/com/example/kocelainterview/presentation/ships_screen/ShipListScreen.kt @@ -36,6 +36,7 @@ import androidx.navigation.NavController import coil.annotation.ExperimentalCoilApi import coil.compose.rememberAsyncImagePainter import com.example.kocelainterview.domain.model.Ship +import com.example.kocelainterview.presentation.navigation.Screen import com.example.kocelainterview.presentation.search_controller.search_view_model.SearchViewModel @@ -88,7 +89,9 @@ fun ShipListScreen( } items(state.ships) { ship -> - ShipImageCard(ships = ship) + ShipImageCard(ships = ship, onItemClick = { + navController.navigate(Screen.ShipDetailScreen.route) + }) } } if (state.error.isNotBlank()) { @@ -107,7 +110,7 @@ fun ShipListScreen( @OptIn(ExperimentalCoilApi::class) @Composable -fun ShipImageCard(ships: Ship){ +fun ShipImageCard(ships: Ship,onItemClick:(Ship)->Unit){ val imagePainter = rememberAsyncImagePainter(model = ships.image) Card( shape = MaterialTheme.shapes.medium,