Gassi: Tabs Treffen + Stamm-Gassis wie in der PWA
In der PWA ist die Seite 'Gassi-Treffen' mit drei Tabs:
- Treffen (walks.py — sich verabreden)
- Challenge (Monatsfoto)
- Stamm-Gassis (gassi_zeiten.py — regelmäßige Runden)
Mein bisheriger Mehr-Eintrag hieß 'Stamm-Gassi-Zeiten' und zeigte nur die
Stamm-Gassi-Funktion isoliert — das stimmte nicht mit der PWA überein.
Neu:
- GassiView mit Segmented Picker (Treffen / Stamm-Gassis)
- GassiTreffenList: GET /api/walks?lat&lon&radius=20000, Liste mit Datum,
Uhrzeit, Ort, Teilnehmer-Zahl
- GassiTreffenDetail: Karte mit Pin, Stats, Beitreten/Verlassen
(POST/DELETE /api/walks/{id}/join), Owner-Check
- AddWalkSheet: Titel, Datum, Uhrzeit, Treffpunkt-Name, Max-Teilnehmer,
Beschreibung — POST /api/walks
- StammGassisList = bisherige GassiZeitenView umbenannt + Nav-Title raus
(wird vom GassiView vergeben)
Im Mehr-Tab heißt der Link jetzt 'Gassi-Treffen' (pawprint-Icon) statt
'Stamm-Gassi-Zeiten' (alarm-Icon).
DTOs: WalkMeeting, WalkCreateBody, WalkJoinBody.
This commit is contained in:
parent
5c4754caff
commit
b49883ca79
9 changed files with 684 additions and 5 deletions
36
BanYaroGo/Views/GassiView.swift
Normal file
36
BanYaroGo/Views/GassiView.swift
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
import SwiftUI
|
||||
|
||||
struct GassiView: View {
|
||||
@State private var tab: Tab = .treffen
|
||||
|
||||
private enum Tab: String, CaseIterable, Identifiable {
|
||||
case treffen = "Treffen"
|
||||
case stammGassis = "Stamm-Gassis"
|
||||
var id: String { rawValue }
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
VStack(spacing: 0) {
|
||||
Picker("Bereich", selection: $tab) {
|
||||
ForEach(Tab.allCases) { t in
|
||||
Text(t.rawValue).tag(t)
|
||||
}
|
||||
}
|
||||
.pickerStyle(.segmented)
|
||||
.padding(.horizontal)
|
||||
.padding(.top, 8)
|
||||
|
||||
Divider()
|
||||
.padding(.top, 8)
|
||||
|
||||
switch tab {
|
||||
case .treffen:
|
||||
GassiTreffenList()
|
||||
case .stammGassis:
|
||||
StammGassisList()
|
||||
}
|
||||
}
|
||||
.navigationTitle("Gassi-Treffen")
|
||||
.navigationBarTitleDisplayMode(.inline)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue