fix table reset

sync
Raz 8 months ago
parent 51395b60a4
commit 0a6d7fe797
  1. 11
      PadelClub/Data/Tournament.swift
  2. 37
      PadelClub/Views/Tournament/Screen/TableStructureView.swift

@ -2063,10 +2063,19 @@ defer {
} }
} }
func removeWildCards() {
let wcs = unsortedTeams().filter({ $0.isWildCard() && $0.unsortedPlayers().isEmpty })
do {
try tournamentStore.teamRegistrations.delete(contentOfs: wcs)
} catch {
Logger.error(error)
}
}
func setGroupStageTeams(randomize: Bool) { func setGroupStageTeams(randomize: Bool) {
let groupStages = groupStages() let groupStages = groupStages()
let max = groupStages.map { $0.size }.reduce(0,+) let max = groupStages.map { $0.size }.reduce(0,+)
var chunks = selectedSortedTeams().suffix(max).chunked(into: groupStageCount) var chunks = selectedSortedTeams().filter({ $0.wildCardBracket == false }).suffix(max).chunked(into: groupStageCount)
for (index, _) in chunks.enumerated() { for (index, _) in chunks.enumerated() {
if randomize { if randomize {
chunks[index].shuffle() chunks[index].shuffle()

@ -81,12 +81,7 @@ struct TableStructureView: View {
Text(structurePreset.localizedDescriptionStructurePresetTitle()) Text(structurePreset.localizedDescriptionStructurePresetTitle())
} }
.onChange(of: structurePreset) { .onChange(of: structurePreset) {
teamCount = structurePreset.tableDimension() + structurePreset.teamsInQualifiers() - structurePreset.qualifiedPerGroupStage() * structurePreset.groupStageCount() _updatePreset()
groupStageCount = structurePreset.groupStageCount()
teamsPerGroupStage = structurePreset.teamsPerGroupStage()
qualifiedPerGroupStage = structurePreset.qualifiedPerGroupStage()
groupStageAdditionalQualified = 0
buildWildcards = tournament.level.wildcardArePossible()
} }
} }
@ -293,9 +288,27 @@ struct TableStructureView: View {
Section { Section {
RowButtonView("Remise-à-zéro", role: .destructive) { RowButtonView("Remise-à-zéro", role: .destructive) {
tournament.removeWildCards()
tournament.deleteGroupStages() tournament.deleteGroupStages()
tournament.deleteStructure() tournament.deleteStructure()
if structurePreset != .manual {
structurePreset = PadelTournamentStructurePreset.manual structurePreset = PadelTournamentStructurePreset.manual
} else {
_updatePreset()
}
tournament.teamCount = teamCount
tournament.groupStageCount = groupStageCount
tournament.teamsPerGroupStage = teamsPerGroupStage
tournament.qualifiedPerGroupStage = qualifiedPerGroupStage
tournament.groupStageAdditionalQualified = groupStageAdditionalQualified
do {
try dataStore.tournaments.addOrUpdate(instance: tournament)
} catch {
Logger.error(error)
}
} }
} }
} }
@ -444,11 +457,12 @@ struct TableStructureView: View {
tournament.groupStageAdditionalQualified = groupStageAdditionalQualified tournament.groupStageAdditionalQualified = groupStageAdditionalQualified
if rebuildEverything { if rebuildEverything {
tournament.deleteAndBuildEverything(preset: structurePreset) tournament.removeWildCards()
if structurePreset.hasWildcards(), buildWildcards { if structurePreset.hasWildcards(), buildWildcards {
tournament.addWildCardIfNeeded(structurePreset.wildcardBrackets(), .bracket) tournament.addWildCardIfNeeded(structurePreset.wildcardBrackets(), .bracket)
tournament.addWildCardIfNeeded(structurePreset.wildcardQualifiers(), .groupStage) tournament.addWildCardIfNeeded(structurePreset.wildcardQualifiers(), .groupStage)
} }
tournament.deleteAndBuildEverything(preset: structurePreset)
} else if (rebuildEverything == false && requirements.contains(.groupStage)) { } else if (rebuildEverything == false && requirements.contains(.groupStage)) {
tournament.deleteGroupStages() tournament.deleteGroupStages()
tournament.buildGroupStages() tournament.buildGroupStages()
@ -467,6 +481,15 @@ struct TableStructureView: View {
} }
} }
private func _updatePreset() {
teamCount = structurePreset.tableDimension() + structurePreset.teamsInQualifiers() - structurePreset.qualifiedPerGroupStage() * structurePreset.groupStageCount()
groupStageCount = structurePreset.groupStageCount()
teamsPerGroupStage = structurePreset.teamsPerGroupStage()
qualifiedPerGroupStage = structurePreset.qualifiedPerGroupStage()
groupStageAdditionalQualified = 0
buildWildcards = tournament.level.wildcardArePossible()
}
private func _verifyValueIntegrity() { private func _verifyValueIntegrity() {
if teamCount > 128 { if teamCount > 128 {
teamCount = 128 teamCount = 128

Loading…
Cancel
Save