wip: group highlight

This commit is contained in:
2026-09-22 17:29:48 +03:00
parent 44b0edf721
commit eb97371309
3 changed files with 29 additions and 10 deletions
@@ -44,6 +44,7 @@ import androidx.compose.ui.zIndex
import androidx.lifecycle.viewmodel.compose.viewModel
import kotlinx.coroutines.delay
import ru.sweetbread.unn.R
import ru.sweetbread.unn.app.UNNApp
import ru.sweetbread.unn.feature.schedule.components.BoundedWeekPicker
import ru.sweetbread.unn.feature.schedule.components.GroupsNameText
import ru.sweetbread.unn.model.Auditorium
@@ -53,7 +54,10 @@ import ru.sweetbread.unn.model.KindOfWork
import ru.sweetbread.unn.model.Lecturer
import ru.sweetbread.unn.model.LecturerRank
import ru.sweetbread.unn.model.ScheduleUnit
import ru.sweetbread.unn.model.Student
import ru.sweetbread.unn.model.Type
import ru.sweetbread.unn.ui.theme.UNNTheme
import splitties.init.appCtx
import splitties.resources.appStr
import java.time.LocalDate
import java.time.LocalDateTime
@@ -113,6 +117,9 @@ fun ScheduleDay(modifier: Modifier = Modifier, viewModel: ScheduleViewModel) {
@Composable
fun ScheduleItem(modifier: Modifier = Modifier, unit: ScheduleUnit, expanded: Boolean = false) {
val me = (appCtx as UNNApp).container.sessionManager.user.collectAsState().value
val currentGroup = if (me?.type == Type.Student) (me as Student).group else null
fun getRatio(): Float {
val begin = LocalDateTime.of(unit.date, unit.begin).atZone(ZoneId.of("Europe/Moscow")).toEpochSecond()
val end = LocalDateTime.of(unit.date, unit.end).atZone(ZoneId.of("Europe/Moscow")).toEpochSecond()
@@ -202,7 +209,9 @@ fun ScheduleItem(modifier: Modifier = Modifier, unit: ScheduleUnit, expanded: Bo
AnimatedVisibility (expanded) {
GroupsNameText(
unit.stream,
highlightColor = MaterialTheme.colorScheme.inversePrimary
highlightColor = MaterialTheme.colorScheme.inversePrimary,
currentGroupName = currentGroup,
currentGroupColor = MaterialTheme.colorScheme.inverseSurface
)
}
}
@@ -20,9 +20,11 @@ import androidx.compose.ui.unit.dp
fun GroupsNameText(
text: String,
modifier: Modifier = Modifier,
highlightColor: Color = MaterialTheme.colorScheme.secondaryContainer,
highlightColor: Color = MaterialTheme.colorScheme.tertiaryContainer,
highlightPadding: PaddingValues = PaddingValues(horizontal = 6.dp, vertical = 2.dp),
highlightShape: Shape = MaterialTheme.shapes.small,
currentGroupName: String? = null,
currentGroupColor: Color = MaterialTheme.colorScheme.secondaryContainer,
horizontalArrangement: Arrangement.Horizontal = Arrangement.Start,
) {
val suffix = if (text.endsWith("-В-OUP")) "-В-OUP" else null
@@ -47,7 +49,10 @@ fun GroupsNameText(
Box(
modifier = Modifier
.padding(end = 2.dp)
.background(highlightColor, highlightShape)
.background(
if (currentGroupName == block) currentGroupColor
else highlightColor, highlightShape
)
.padding(highlightPadding)
) {
Text(text = block)
@@ -46,17 +46,17 @@ open class User(
companion object {
fun fromProfile(json: JSONObject): User {
val user = json.getJSONObject("user")
return User(
user.getInt("id"),
val userField = json.getJSONObject("user")
val user = User(
userField.getInt("id"),
when (json.getString("type")) {
"student" -> Type.Student
else -> Type.Employee
},
user.getString("email"),
user.getString("fullname"),
user.getString("fullname_en"),
user.getJSONObject("photo").let {
userField.getString("email"),
userField.getString("fullname"),
userField.getString("fullname_en"),
userField.getJSONObject("photo").let {
AvatarSet(
it.getString("orig"),
it.getString("thumbnail"),
@@ -64,6 +64,11 @@ open class User(
)
}
)
if (user.type == Type.Student)
user = Student()
return user
}
fun getPlaceholder() = User(