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.
58 lines
2.3 KiB
58 lines
2.3 KiB
//
|
|
// RoundSettingsView.swift
|
|
// PadelClub
|
|
//
|
|
// Created by Razmig Sarkissian on 31/03/2024.
|
|
//
|
|
|
|
import SwiftUI
|
|
|
|
struct RoundSettingsView: View {
|
|
@EnvironmentObject var dataStore: DataStore
|
|
@Environment(\.isEditingTournamentSeed) private var isEditingTournamentSeed
|
|
@Environment(Tournament.self) var tournament: Tournament
|
|
|
|
var body: some View {
|
|
List {
|
|
Section {
|
|
RowButtonView("Retirer toutes les têtes de séries", role: .destructive) {
|
|
tournament.unsortedTeams().forEach({ $0.bracketPosition = nil })
|
|
try? dataStore.teamRegistrations.addOrUpdate(contentOfs: tournament.unsortedTeams())
|
|
tournament.allRounds().forEach({ round in
|
|
round.enableRound()
|
|
})
|
|
self.isEditingTournamentSeed.wrappedValue = true
|
|
}
|
|
}
|
|
|
|
Section {
|
|
let roundIndex = tournament.rounds().count
|
|
RowButtonView("Ajouter " + RoundRule.roundName(fromRoundIndex: roundIndex)) {
|
|
let round = Round(tournament: tournament.id, index: roundIndex, matchFormat: tournament.matchFormat)
|
|
let matchCount = RoundRule.numberOfMatches(forRoundIndex: roundIndex)
|
|
let matchStartIndex = RoundRule.matchIndex(fromRoundIndex: roundIndex)
|
|
let matches = (0..<matchCount).map { //0 is final match
|
|
return Match(round: round.id, index: $0 + matchStartIndex, matchFormat: round.matchFormat)
|
|
}
|
|
try? dataStore.rounds.addOrUpdate(instance: round)
|
|
try? dataStore.matches.addOrUpdate(contentOfs: matches)
|
|
round.buildLoserBracket()
|
|
}
|
|
}
|
|
|
|
Section {
|
|
if let lastRound = tournament.rounds().first { // first is final, last round
|
|
RowButtonView("Supprimer " + lastRound.roundTitle(), role: .destructive) {
|
|
try? dataStore.rounds.delete(instance: lastRound)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#Preview {
|
|
RoundSettingsView()
|
|
.environment(Tournament.mock())
|
|
.environmentObject(DataStore.shared)
|
|
}
|
|
|