You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
2.3 KiB
67 lines
2.3 KiB
//
|
|
// RoundView.swift
|
|
// PadelClub
|
|
//
|
|
// Created by Razmig Sarkissian on 30/03/2024.
|
|
//
|
|
|
|
import SwiftUI
|
|
|
|
struct RoundView: View {
|
|
@Environment(\.isEditingTournamentSeed) private var isEditingTournamentSeed
|
|
@Environment(Tournament.self) var tournament: Tournament
|
|
@EnvironmentObject var dataStore: DataStore
|
|
|
|
var round: Round
|
|
|
|
var body: some View {
|
|
List {
|
|
|
|
if isEditingTournamentSeed.wrappedValue == false {
|
|
let loserRounds = round.loserRounds()
|
|
if loserRounds.isEmpty == false, let first = loserRounds.first(where: { $0.isDisabled() == false }) {
|
|
Section {
|
|
NavigationLink {
|
|
LoserRoundsView(upperBracketRound: round)
|
|
.environment(tournament)
|
|
.navigationTitle(first.roundTitle())
|
|
} label: {
|
|
Text(first.roundTitle())
|
|
}
|
|
}
|
|
}
|
|
} else if let availableSeedGroup = tournament.seedGroupAvailable(atRoundIndex: round.index) {
|
|
|
|
RowButtonView("Placer \(availableSeedGroup.localizedLabel())") {
|
|
tournament.setSeeds(inRoundIndex: round.index, inSeedGroup: availableSeedGroup)
|
|
try? dataStore.teamRegistrations.addOrUpdate(contentOfs: tournament.seeds())
|
|
|
|
if tournament.availableSeeds().isEmpty {
|
|
self.isEditingTournamentSeed.wrappedValue = false
|
|
}
|
|
}
|
|
}
|
|
|
|
ForEach(round.playedMatches()) { match in
|
|
Section {
|
|
MatchRowView(match: match, matchViewStyle: .sectionedStandardStyle)
|
|
} header: {
|
|
Text(round.roundTitle(.wide) + " " + match.matchTitle(.short))
|
|
}
|
|
}
|
|
}
|
|
.headerProminence(.increased)
|
|
.toolbar {
|
|
ToolbarItem(placement: .topBarTrailing) {
|
|
Button(isEditingTournamentSeed.wrappedValue == true ? "Valider" : "Modifier") {
|
|
isEditingTournamentSeed.wrappedValue.toggle()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#Preview {
|
|
RoundView(round: Round.mock())
|
|
.environment(Tournament.mock())
|
|
}
|
|
|