diff --git a/koin/src/main/java/in/koreatech/koin/ui/timetablev2/component/SidebarLabel.kt b/koin/src/main/java/in/koreatech/koin/ui/timetablev2/component/SidebarLabel.kt index 021e4fdb6..032d893ba 100644 --- a/koin/src/main/java/in/koreatech/koin/ui/timetablev2/component/SidebarLabel.kt +++ b/koin/src/main/java/in/koreatech/koin/ui/timetablev2/component/SidebarLabel.kt @@ -25,7 +25,7 @@ fun SidebarLabel( .fillMaxSize() .padding(4.dp), textAlign = TextAlign.End, - fontSize = 12.sp + fontSize = 14.sp ) } diff --git a/koin/src/main/java/in/koreatech/koin/ui/timetablev2/view/Timetable.kt b/koin/src/main/java/in/koreatech/koin/ui/timetablev2/view/Timetable.kt index 53cb13cec..bcb99f4b2 100644 --- a/koin/src/main/java/in/koreatech/koin/ui/timetablev2/view/Timetable.kt +++ b/koin/src/main/java/in/koreatech/koin/ui/timetablev2/view/Timetable.kt @@ -12,6 +12,11 @@ import androidx.compose.material.BottomSheetState import androidx.compose.material.BottomSheetValue import androidx.compose.material.ExperimentalMaterialApi import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext @@ -37,13 +42,25 @@ fun Timetable( TimetableEventTime(event = event, eventType = eventType, onEventClick = onEventClick) }, ) { - val days = 5 - val dayWidth = 68.dp - val hourSidebarWidth = - (LocalContext.current.resources.displayMetrics.widthPixels / LocalContext.current.resources.displayMetrics.density).dp - (dayWidth * days) + val screenWidth = (LocalContext.current.resources.displayMetrics.widthPixels / LocalContext.current.resources.displayMetrics.density).dp +// val days = 5 +// val dayWidth = 68.dp + val dayWidth = screenWidth / 6 +// val hourSidebarWidth = +// (LocalContext.current.resources.displayMetrics.widthPixels / LocalContext.current.resources.displayMetrics.density).dp - (dayWidth * days) + val hourSidebarWidth = dayWidth val hourHeight = 64.dp + var scrollValue by remember { + mutableStateOf(0) + } val verticalScrollState = rememberScrollState() + LaunchedEffect(key1 = scrollValue) { + if (clickEvent.isNotEmpty()) { + verticalScrollState.scrollTo(scrollValue) + } + } + Column( modifier = modifier .background(Color.White) @@ -94,6 +111,11 @@ fun Timetable( events = events, dayWidth = dayWidth, hourHeight = hourHeight, + onEventY = { eventY -> + if (scrollValue != eventY) { + scrollValue = eventY + } + }, onEventClick = onEventClick ) } diff --git a/koin/src/main/java/in/koreatech/koin/ui/timetablev2/view/TimetableContent.kt b/koin/src/main/java/in/koreatech/koin/ui/timetablev2/view/TimetableContent.kt index 17e1ff0a2..1295bce42 100644 --- a/koin/src/main/java/in/koreatech/koin/ui/timetablev2/view/TimetableContent.kt +++ b/koin/src/main/java/in/koreatech/koin/ui/timetablev2/view/TimetableContent.kt @@ -27,6 +27,7 @@ fun TimetableContent( events: List, modifier: Modifier = Modifier, clickEvent: List = emptyList(), + onEventY: (Int) -> Unit, onEventClick: (event: TimetableEvent) -> Unit, eventContent: @Composable (event: TimetableEvent, eventType: TimetableEventType, onEventClick: (TimetableEvent) -> Unit) -> Unit = { event, eventType, onClick -> TimetableEventTime(event = event, eventType = eventType, onEventClick = onClick) @@ -103,7 +104,7 @@ fun TimetableContent( } layout(width, height) { - placeablesWithEvents.forEach { (placeable, event) -> + placeablesWithEvents.forEachIndexed { index, (placeable, event) -> val initStartTime = LocalTime.of(9, 0) val eventOffsetMinutes = ChronoUnit.MINUTES.between(initStartTime, event.start) @@ -118,6 +119,9 @@ fun TimetableContent( else -> -1 } val eventX = eventOffsetDays * dayWidth.roundToPx() + if (index == placeablesWithEvents.size - 1) { + onEventY(eventY) + } placeable.place(eventX, eventY) } } @@ -162,8 +166,7 @@ private fun TimetableContentPreview() { events = samples, dayWidth = 68.dp, hourHeight = 64.dp, - onEventClick = { - - } + onEventY = {}, + onEventClick = {} ) } \ No newline at end of file diff --git a/koin/src/main/java/in/koreatech/koin/ui/timetablev2/view/TimetableHeader.kt b/koin/src/main/java/in/koreatech/koin/ui/timetablev2/view/TimetableHeader.kt index d569a5df1..08f7f6b38 100644 --- a/koin/src/main/java/in/koreatech/koin/ui/timetablev2/view/TimetableHeader.kt +++ b/koin/src/main/java/in/koreatech/koin/ui/timetablev2/view/TimetableHeader.kt @@ -1,6 +1,7 @@ package `in`.koreatech.koin.ui.timetablev2.view import androidx.compose.foundation.background +import androidx.compose.foundation.border import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.padding @@ -20,7 +21,8 @@ fun TimetableHeader( ) { Row( modifier = modifier - .background(Color.LightGray) + .background(Color.White) + .border(width = (0.5).dp, color = Color.LightGray) .padding(start = dayStartPadding) ) { val days = listOf("월", "화", "수", "목", "금")