@ -13,24 +13,13 @@ struct GroupStageSettingsView: View {
@ Environment ( Tournament . self ) var tournament : Tournament
@ State private var nameAlphabetical : Bool = false
@ State private var generationDone : Bool = false
let alphabet = " ABCDEFGHIJKLMNOPQRSTUVWXYZ "
private func _letterForIndex ( index : Int ) -> String ? {
let uppercaseAlphabet = Array ( alphabet )
if let letter = uppercaseAlphabet [ safe : index ] {
return String ( letter )
} else {
return nil
}
}
var body : some View {
List {
if tournament . shouldVerifyGroupStage {
Section {
RowButtonView ( " Valider les poules " , role : . destructive ) {
RowButtonView ( " Valider les poules en l'état " , role : . destructive ) {
tournament . shouldVerifyGroupStage = false
do {
try dataStore . tournaments . addOrUpdate ( instance : tournament )
@ -39,7 +28,7 @@ struct GroupStageSettingsView: View {
}
}
} footer : {
Text ( " Suite à changement dans votre liste d'inscrits, veuillez vérifier l'intégrité de vos poules et valider que tout est ok. " )
Text ( " Suite à un changement dans votre liste d'inscrits, veuillez vérifier l'intégrité de vos poules et valider que tout est ok. " )
}
}
@ -54,31 +43,23 @@ struct GroupStageSettingsView: View {
if tournament . unsortedTeams ( ) . filter ( { $0 . groupStagePosition != nil } ) . isEmpty = = false {
Section {
menuBuildAllGroupStages
} footer : {
Text ( " efface et recréé les poules, les horaires et les résultats existants seront perdus " )
}
}
Section {
menuGenerateGroupStage ( . random )
} footer : {
Text ( " Redistribue les équipes par tirage au sort par chapeau " )
}
Section {
menuGenerateGroupStage ( . snake )
} footer : {
Text ( " Redistribue les équipes par la méthode du serpentin " )
}
if tournament . missingQualifiedFromGroupStages ( ) . isEmpty = = false && tournament . qualifiedTeams ( ) . count >= tournament . qualifiedFromGroupStage ( ) && tournament . groupStageAdditionalQualified > 0 {
NavigationLink {
// D r a w V i e w ( t o u r n a m e n t : t o u r n a m e n t )
} label : {
LabeledContent {
Text ( tournament . moreQualifiedToDraw ( ) . formatted ( ) + " / " + tournament . groupStageAdditionalQualified . formatted ( ) )
} label : {
Text ( " Qualifié \( tournament . groupStageAdditionalQualified . pluralSuffix ) supplémentaire \( tournament . groupStageAdditionalQualified . pluralSuffix ) " )
let message = [ tournament . groupStageAdditionalQualified . formatted ( ) , " meilleur " , tournament . groupStageAdditionalQualified . pluralSuffix , " " , ( tournament . qualifiedPerGroupStage + 1 ) . ordinalFormatted ( ) ] . joined ( )
Text ( message )
}
}
}
Toggle ( isOn : $ nameAlphabetical ) {
Text ( " Nommer les poules alphabétiquement " )
}
@ -94,7 +75,7 @@ struct GroupStageSettingsView: View {
let groupStages = tournament . groupStages ( )
if nameAlphabetical {
groupStages . forEach { groupStage in
groupStage . name = _ letterForIndex( index : groupStage . index )
groupStage . name = Alphabet . letterForIndex ( index : groupStage . index )
}
} else {
groupStages . forEach { groupStage in