Merge branch 'main'

#Conflicts:
#	PadelClub/Views/Tournament/TournamentView.swift
sync3
Razmig Sarkissian 1 month ago
commit 4441554881
  1. 18
      PadelClub/Views/GroupStage/RankingGroupStageSetupView.swift
  2. 10
      PadelClub/Views/Match/Components/MatchDateView.swift
  3. 1
      PadelClub/Views/Tournament/Screen/RegistrationSetupView.swift
  4. 60
      PadelClub/Views/Tournament/Screen/TableStructureView.swift
  5. 21
      PadelClub/Views/Tournament/TournamentView.swift

@ -0,0 +1,18 @@
//
// RankingGroupStageSetupView.swift
// PadelClub
//
// Created by Razmig Sarkissian on 30/09/2025.
//
import SwiftUI
struct RankingGroupStageSetupView: View {
var body: some View {
Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/)
}
}
#Preview {
RankingGroupStageSetupView()
}

@ -42,6 +42,16 @@ struct MatchDateView: View {
let estimatedDuration = match.getDuration()
if isReady {
Section {
Button("Démarrer il y a 5 minutes") {
if let updatedField {
match.setCourt(updatedField)
}
match.updateStartDate(Calendar.current.date(byAdding: .minute, value: -5, to: currentDate), keepPlannedStartDate: true)
match.endDate = nil
match.confirmed = true
_save()
}
Button("Démarrer maintenant") {
if let updatedField {
match.setCourt(updatedField)

@ -355,7 +355,6 @@ struct RegistrationSetupView: View {
}, message: {
Text(ValidationError.onlinePaymentNotEnabled.localizedDescription)
})
.toolbarRole(.editor)
.headerProminence(.increased)
.navigationTitle("Inscription en ligne")
.ifAvailableiOS26 {

@ -23,6 +23,7 @@ struct TableStructureView: View {
@State private var structurePreset: PadelTournamentStructurePreset = .manual
@State private var buildWildcards: Bool = true
@FocusState private var stepperFieldIsFocused: Bool
@State private var confirmReset: Bool = false
func displayWarning() -> Bool {
let unsortedTeamsCount = tournament.unsortedTeamsCount()
@ -297,27 +298,7 @@ struct TableStructureView: View {
Section {
RowButtonView("Remise-à-zéro", role: .destructive) {
tournament.removeWildCards()
tournament.deleteGroupStages()
tournament.deleteStructure()
if structurePreset != .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)
}
_reset()
}
}
}
@ -376,6 +357,24 @@ struct TableStructureView: View {
}
}
.toolbar {
if tournament.state() != .initial {
ToolbarItem(placement: .topBarTrailing) {
Button("Remise-à-zéro", systemImage: "trash", role: .destructive) {
confirmReset.toggle()
}
.confirmationDialog("Remise-à-zéro", isPresented: $confirmReset, titleVisibility: .visible, actions: {
Button("Tout effacer") {
_reset()
}
Button("Annuler") {
}
}, message: {
Text("Vous êtes sur le point d'effacer le tableau et les poules déjà créés et perdre les matchs et scores correspondant.")
})
}
}
ToolbarItem(placement: .confirmationAction) {
if tournament.state() == .initial {
ButtonValidateView {
@ -420,6 +419,25 @@ struct TableStructureView: View {
}
private func _reset() {
tournament.removeWildCards()
tournament.deleteGroupStages()
tournament.deleteStructure()
if structurePreset != .manual {
structurePreset = PadelTournamentStructurePreset.manual
} else {
_updatePreset()
}
tournament.teamCount = teamCount
tournament.groupStageCount = groupStageCount
tournament.teamsPerGroupStage = teamsPerGroupStage
tournament.qualifiedPerGroupStage = qualifiedPerGroupStage
tournament.groupStageAdditionalQualified = groupStageAdditionalQualified
dataStore.tournaments.addOrUpdate(instance: tournament)
}
private func _saveWithoutRebuild() {
tournament.teamCount = teamCount

@ -172,7 +172,8 @@ struct TournamentView: View {
TeamRestingView()
case .stateSettings:
TournamentStatusView(tournament: tournament)
case .rankingGroupStageSetup:
RankingGroupStageSetupView()
}
}
.environment(tournament)
@ -277,6 +278,7 @@ struct TournamentView: View {
} label: {
Label("Réglages", systemImage: "wrench.and.screwdriver")
Text("Événement, tournoi, structure")
}
@ -334,20 +336,21 @@ struct TournamentView: View {
Label("Partager", systemImage: "square.and.arrow.up")
}
if self.tournament.sharing == nil {
Divider()
NavigationLink(value: Screen.stateSettings) {
Text("Gestion du tournoi")
Text("Annuler, supprimer ou terminer le tournoi")
}
}
Divider()
NavigationLink(value: Screen.stateSettings) {
Label("Tournoi", systemImage: "trash")
}
Button {
navigation.path.append(Screen.stateSettings)
} label: {
Label("Clôture du tournoi", systemImage: "stop.fill")
Text("Annuler, supprimer ou terminer le tournoi")
}
} label: {
LabelOptions()
.popoverTip(tournamentRunningTip)

Loading…
Cancel
Save