From 3971b5847247b36144f5251a79f9ec564d0bae89 Mon Sep 17 00:00:00 2001 From: sathwikcs <85106054+sathwikcs@users.noreply.github.com> Date: Wed, 16 Oct 2024 17:47:27 +0530 Subject: [PATCH] attendence --- .../history/components/AttendenceCard.kt | 77 +++++++++++++++++++ .../screens/history/data/Attendance.kt | 8 ++ 2 files changed, 85 insertions(+) create mode 100644 app/src/main/java/in/sminnovations/attendanceapp/screens/history/components/AttendenceCard.kt create mode 100644 app/src/main/java/in/sminnovations/attendanceapp/screens/history/data/Attendance.kt diff --git a/app/src/main/java/in/sminnovations/attendanceapp/screens/history/components/AttendenceCard.kt b/app/src/main/java/in/sminnovations/attendanceapp/screens/history/components/AttendenceCard.kt new file mode 100644 index 0000000..c6b7dfe --- /dev/null +++ b/app/src/main/java/in/sminnovations/attendanceapp/screens/history/components/AttendenceCard.kt @@ -0,0 +1,77 @@ +package `in`.sminnovations.attendanceapp.screens.history.components + +import androidx.compose.animation.animateContentSize +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.ArrowDropDown +import androidx.compose.material.icons.filled.Check +import androidx.compose.material.icons.filled.Close +import androidx.compose.material3.* +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import `in`.sminnovations.attendanceapp.screens.history.data.Attendance + +@Composable +fun EnhancedAttendanceCard(attendance: Attendance) { + var isExpanded by remember { mutableStateOf(false) } + + Card( + modifier = Modifier + .fillMaxWidth() + .padding(vertical = 8.dp, horizontal = 16.dp) + .animateContentSize(), // Animate the size change for a smooth expand/collapse + shape = RoundedCornerShape(12.dp), + elevation = CardDefaults.cardElevation(6.dp) + ) { + Column( + modifier = Modifier + .background(MaterialTheme.colorScheme.primaryContainer) + .padding(16.dp) + ) { + Row( + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier.fillMaxWidth() + ) { + Text( + text = attendance.date, + fontWeight = FontWeight.Bold, + fontSize = 18.sp, + color = MaterialTheme.colorScheme.onPrimaryContainer, + modifier = Modifier.weight(1f) + ) + Icon( + imageVector = if (attendance.isPresent) Icons.Default.Check else Icons.Default.Close, + contentDescription = if (attendance.isPresent) "Present" else "Absent", + tint = if (attendance.isPresent) Color(0xFF4CAF50) else Color(0xFFF44336) + ) + IconButton( + onClick = { isExpanded = !isExpanded } + ) { + Icon( + imageVector = Icons.Default.ArrowDropDown, + contentDescription = "Expand or Collapse", + tint = MaterialTheme.colorScheme.onPrimaryContainer + ) + } + } + if (isExpanded) { + Spacer(modifier = Modifier.height(8.dp)) + Text( + text = "Check In: ${attendance.checkInTime ?: "N/A"}", + color = MaterialTheme.colorScheme.onPrimaryContainer + ) + Text( + text = "Check Out: ${attendance.checkOutTime ?: "N/A"}", + color = MaterialTheme.colorScheme.onPrimaryContainer + ) + } + } + } +} diff --git a/app/src/main/java/in/sminnovations/attendanceapp/screens/history/data/Attendance.kt b/app/src/main/java/in/sminnovations/attendanceapp/screens/history/data/Attendance.kt new file mode 100644 index 0000000..8fc1cf1 --- /dev/null +++ b/app/src/main/java/in/sminnovations/attendanceapp/screens/history/data/Attendance.kt @@ -0,0 +1,8 @@ +package `in`.sminnovations.attendanceapp.screens.history.data + +data class Attendance( + val date: String, + val isPresent: Boolean, + val checkInTime: String?, + val checkOutTime: String? +)