feat: read "Занятия в Полоцке" as a day's town, show it in all clients
- Parser 14 (server/places.js): "Занятия в Полоцке/Новополоцке/г. Новополоцк" over a day's first row is no longer a lesson but a note of the day for its column (`places`); lessons of that day get `place`. A lesson below the note in the same cell keeps its own subject.
- A town on its own line ("Новополоцк", "г.Новополоцк") or after a room ("246(Новополоцк)") becomes the lesson's `place` and leaves the subject and room. "История Полоцка" is not a town.
- API 14: `place` on lessons and `places` on days of /api/timetable, `place` in the directory. The day notes are shared by the server and the PWA (shared/places.js); the same note in every subgroup reads as the whole group's.
- Android, PWA and iOS: a "Занятия в Полоцке" card above the day's lessons (day pages, calendar, overview, week view, desk stand), "Полоцк" under the date in the week grid, "249Ж · Полоцк" on lesson cards, a "Город" row in details, the town in widgets, tile, reminders and change lists.
- Snapshot lines show the town and the day notes; tests for notes, towns in cells and the API.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -153,6 +153,7 @@ private struct DayPage: View {
|
||||
EmptyState(title: "Занятий нет", text: "По таблице недель в этот день свободно — можно отдохнуть.", symbol: "sofa")
|
||||
.padding(.top, 60)
|
||||
}
|
||||
DayPlaces(places: model.places(timetable, on: date))
|
||||
ForEach(slots) { slot in
|
||||
let running = isToday && clock >= slot.start && clock < slot.end
|
||||
let status: String? = running
|
||||
@@ -281,6 +282,7 @@ private struct WordRows: View {
|
||||
let lessons = day.lessons
|
||||
.filter { model.subgroup == nil || $0.subgroup == nil || $0.subgroup == model.subgroup }
|
||||
.filter { !model.hidden.contains($0.hideKey) }
|
||||
if !lessons.isEmpty { DayPlaces(places: day.places.forSubgroup(model.subgroup)) }
|
||||
ForEach(lessons, id: \.key) { lesson in
|
||||
Button { onOpen(lesson) } label: {
|
||||
LessonCard(lesson: lesson, time: lesson.start + (lesson.end.map { " → \($0)" } ?? ""), date: nil)
|
||||
|
||||
Reference in New Issue
Block a user