Phase 1 fixes: broken dialogs, score width, status badge, MSK date round-trip
- group/lab/labs: move dialogs/scripts INSIDE the #content fragment (they were outside — the layout fragment dropped them, which is why 'add student' did nothing) - group.html toast had swallowed the dialog (th:if createdStudent) — split properly - .input-score width no longer overridden by .inline-form .input-sm (10rem min) - lab page: remove separate 'change status' button — status badge is now a toggle button itself (confirm dialog kept) - DateUtils.localInput/toUtcIso: dates entered in datetime-local are Moscow-local, stored as UTC instant, shown back MSK — correct round-trip both ways - academic parseInstant: naive local datetimes treated as Europe/Moscow - README/module docs left as-is
This commit is contained in:
@@ -17,7 +17,7 @@ import java.math.BigDecimal
|
||||
import java.time.Instant
|
||||
import java.time.LocalDateTime
|
||||
import java.time.OffsetDateTime
|
||||
import java.time.ZoneOffset
|
||||
import java.time.ZoneId
|
||||
import java.util.UUID
|
||||
|
||||
@Service
|
||||
@@ -291,7 +291,7 @@ class LabService(
|
||||
val v = value?.takeIf { it.isNotBlank() } ?: return null
|
||||
return runCatching { Instant.parse(v) }
|
||||
.recoverCatching { OffsetDateTime.parse(v).toInstant() }
|
||||
.recoverCatching { LocalDateTime.parse(v).atOffset(ZoneOffset.UTC).toInstant() }
|
||||
.recoverCatching { LocalDateTime.parse(v).atZone(ZoneId.of("Europe/Moscow")).toInstant() }
|
||||
.getOrNull()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user