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.
36 lines
924 B
Swift
36 lines
924 B
Swift
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)
|
|
}
|
|
}
|