From 6d2d77b5037d314db2f7a06141146bc9753a3bf7 Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Mon, 25 Aug 2025 10:13:21 +0200 Subject: [PATCH 1/7] fix issue with groupstage possible crash when calculating score add the ability to always create a final table structure --- PadelClub/Views/Tournament/Screen/TableStructureView.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PadelClub/Views/Tournament/Screen/TableStructureView.swift b/PadelClub/Views/Tournament/Screen/TableStructureView.swift index 43805d5..652f4d9 100644 --- a/PadelClub/Views/Tournament/Screen/TableStructureView.swift +++ b/PadelClub/Views/Tournament/Screen/TableStructureView.swift @@ -265,7 +265,7 @@ struct TableStructureView: View { } } - if tournament.rounds().isEmpty, tournament.state() == .build { + if tournament.rounds().isEmpty { Section { RowButtonView("Ajouter un tableau", role: .destructive) { tournament.buildBracket(minimalBracketTeamCount: 4) From 077a56b8bbce3356a725904ca16619406368cb83 Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Mon, 25 Aug 2025 10:13:45 +0200 Subject: [PATCH 2/7] v1.2.47 --- PadelClub.xcodeproj/project.pbxproj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/PadelClub.xcodeproj/project.pbxproj b/PadelClub.xcodeproj/project.pbxproj index e19e850..51d8b5c 100644 --- a/PadelClub.xcodeproj/project.pbxproj +++ b/PadelClub.xcodeproj/project.pbxproj @@ -3118,7 +3118,7 @@ CODE_SIGN_ENTITLEMENTS = PadelClub/PadelClub.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DEVELOPMENT_ASSET_PATHS = "\"PadelClub/Preview Content\""; @@ -3145,7 +3145,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.2.46; + MARKETING_VERSION = 1.2.47; PRODUCT_BUNDLE_IDENTIFIER = app.padelclub; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -3166,7 +3166,7 @@ CODE_SIGN_ENTITLEMENTS = PadelClub/PadelClub.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEFINES_MODULE = YES; DEVELOPMENT_ASSET_PATHS = "\"PadelClub/Preview Content\""; DEVELOPMENT_TEAM = BQ3Y44M3Q6; @@ -3191,7 +3191,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.2.46; + MARKETING_VERSION = 1.2.47; PRODUCT_BUNDLE_IDENTIFIER = app.padelclub; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; From f6076a423060d8869fecbbca6eb206ef3da44152 Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Tue, 2 Sep 2025 17:24:00 +0200 Subject: [PATCH 3/7] v1.2.48 fix p1000 dates --- PadelClub.xcodeproj/project.pbxproj | 4 ++-- PadelClub/Views/Cashier/Event/EventCreationView.swift | 2 +- .../Views/Cashier/Event/EventTournamentsView.swift | 11 +++++++++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/PadelClub.xcodeproj/project.pbxproj b/PadelClub.xcodeproj/project.pbxproj index 51d8b5c..e2a615c 100644 --- a/PadelClub.xcodeproj/project.pbxproj +++ b/PadelClub.xcodeproj/project.pbxproj @@ -3145,7 +3145,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.2.47; + MARKETING_VERSION = 1.2.48; PRODUCT_BUNDLE_IDENTIFIER = app.padelclub; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -3191,7 +3191,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.2.47; + MARKETING_VERSION = 1.2.48; PRODUCT_BUNDLE_IDENTIFIER = app.padelclub; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; diff --git a/PadelClub/Views/Cashier/Event/EventCreationView.swift b/PadelClub/Views/Cashier/Event/EventCreationView.swift index b63e77b..ef14271 100644 --- a/PadelClub/Views/Cashier/Event/EventCreationView.swift +++ b/PadelClub/Views/Cashier/Event/EventCreationView.swift @@ -154,7 +154,7 @@ struct EventCreationView: View { tournament.courtCount = selectedClub?.courtCount ?? 2 tournament.startDate = startingDate tournament.dayDuration = duration - tournament.initSettings(templateTournament: templateTournament) + tournament.initSettings(templateTournament: templateTournament, overrideTeamCount: false) } do { diff --git a/PadelClub/Views/Cashier/Event/EventTournamentsView.swift b/PadelClub/Views/Cashier/Event/EventTournamentsView.swift index 3924aab..2d554fc 100644 --- a/PadelClub/Views/Cashier/Event/EventTournamentsView.swift +++ b/PadelClub/Views/Cashier/Event/EventTournamentsView.swift @@ -35,6 +35,14 @@ struct EventTournamentsView: View { } label: { TournamentCellView(tournament: tournament) .contextMenu { + + NavigationLink { + TournamentSettingsView() + .environment(tournament) + } label: { + Label("Paramètres", systemImage: "gearshape.fill") + } + Button { navigation.openTournamentInOrganizer(tournament) } label: { @@ -134,8 +142,7 @@ struct EventTournamentsView: View { newTournament.courtCount = event.eventCourtCount() newTournament.startDate = event.eventStartDate() newTournament.dayDuration = event.eventDayDuration() - newTournament.initSettings(templateTournament: Tournament.getTemplateTournament()) - + newTournament.initSettings(templateTournament: Tournament.getTemplateTournament(), overrideTeamCount: false) dataStore.tournaments.addOrUpdate(instance: newTournament) self.newTournament = nil From dd98548a15dead5f6175feb537290191f3967098 Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Thu, 4 Sep 2025 12:35:44 +0200 Subject: [PATCH 4/7] fix csv export birth year FFT new system --- PadelClub/Data/Federal/FederalPlayer.swift | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/PadelClub/Data/Federal/FederalPlayer.swift b/PadelClub/Data/Federal/FederalPlayer.swift index 3573a3e..141c613 100644 --- a/PadelClub/Data/Federal/FederalPlayer.swift +++ b/PadelClub/Data/Federal/FederalPlayer.swift @@ -80,7 +80,12 @@ class FederalPlayer: Decodable { let ageSportif = try container.decodeIfPresent(Int.self, forKey: .ageSportif) if let ageSportif { - birthYear = Calendar.current.component(.year, from: Date()) - ageSportif + let month = Calendar.current.component(.month, from: Date()) + if month > 8 { + birthYear = Calendar.current.component(.year, from: Date()) + 1 - ageSportif + } else { + birthYear = Calendar.current.component(.year, from: Date()) - ageSportif + } } clubCode = try container.decodeIfPresent(String.self, forKey: .codeClub) ?? "" club = try container.decodeIfPresent(String.self, forKey: .nomClub) ?? "" From b8bf7f99e87bc24cda3771c6715449c26fa42960 Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Fri, 5 Sep 2025 14:05:40 +0200 Subject: [PATCH 5/7] fix editscoreview yes add menu to change name --- PadelClub/Views/Match/MatchDetailView.swift | 27 +++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/PadelClub/Views/Match/MatchDetailView.swift b/PadelClub/Views/Match/MatchDetailView.swift index c03425d..5e59ccb 100644 --- a/PadelClub/Views/Match/MatchDetailView.swift +++ b/PadelClub/Views/Match/MatchDetailView.swift @@ -354,6 +354,33 @@ struct MatchDetailView: View { Text("Remise-à-zéro") } + Menu { + Button("Effacer le nom") { + match.name = nil + tournamentStore?.matches.addOrUpdate(instance: match) + } + + if let tournament = match.currentTournament() { + Menu { + ForEach(tournament.generateSeedGroups(base: 16, teamCount: 8), id: \.self) { seedGroup in + Button { + match.name = seedGroup.localizedInterval() + tournamentStore?.matches.addOrUpdate(instance: match) + } label: { + Text(seedGroup.localizedInterval()) + } + } + } label: { + Text("Choisir un nom") + } + } + } label: { + Text("[Site] Nom du match") + if let name = match.name { + Text("(\(name))") + } + } + if match.teamScores.isEmpty == false { Divider() Menu { From 6237502cec7fc070a866b7939f1763477ac489be Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Fri, 5 Sep 2025 14:23:44 +0200 Subject: [PATCH 6/7] fix playerblock view --- PadelClub.xcodeproj/project.pbxproj | 4 ++-- PadelClub/Views/Match/Components/PlayerBlockView.swift | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/PadelClub.xcodeproj/project.pbxproj b/PadelClub.xcodeproj/project.pbxproj index b9369ed..f153323 100644 --- a/PadelClub.xcodeproj/project.pbxproj +++ b/PadelClub.xcodeproj/project.pbxproj @@ -3398,7 +3398,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.2.40; + MARKETING_VERSION = 1.2.49; PRODUCT_BUNDLE_IDENTIFIER = app.padelclub.beta; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -3441,7 +3441,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.2.40; + MARKETING_VERSION = 1.2.49; PRODUCT_BUNDLE_IDENTIFIER = app.padelclub.beta; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; diff --git a/PadelClub/Views/Match/Components/PlayerBlockView.swift b/PadelClub/Views/Match/Components/PlayerBlockView.swift index c1a6a5c..56d88c9 100644 --- a/PadelClub/Views/Match/Components/PlayerBlockView.swift +++ b/PadelClub/Views/Match/Components/PlayerBlockView.swift @@ -77,7 +77,7 @@ struct PlayerBlockView: View { VStack(alignment: .leading) { ZStack(alignment: .leading) { VStack { - if let teamName = team?.name { + if let teamName = team?.name, teamName.isEmpty == false { Text(teamName).foregroundStyle(.secondary).font(.footnote) } Text("longLabelPlayerOne").lineLimit(1) @@ -91,7 +91,7 @@ struct PlayerBlockView: View { Text("Repêchée").italic().font(.caption) } - if let teamName = team.name { + if let teamName = team.name, teamName.isEmpty == false { Text(teamName).foregroundStyle(.secondary).font(.footnote) } else if team.players().isEmpty { if team.isWildCard() { From 8b7202b0ebf9096b01b39b1f368fc0bbc0aa54b4 Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Sat, 6 Sep 2025 13:05:35 +0200 Subject: [PATCH 7/7] fix issue with import session fix naming --- PadelClub.xcodeproj/project.pbxproj | 4 ++-- .../Views/Tournament/ConsolationTournamentImportView.swift | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/PadelClub.xcodeproj/project.pbxproj b/PadelClub.xcodeproj/project.pbxproj index f153323..015c73a 100644 --- a/PadelClub.xcodeproj/project.pbxproj +++ b/PadelClub.xcodeproj/project.pbxproj @@ -3375,7 +3375,7 @@ CODE_SIGN_ENTITLEMENTS = PadelClub/PadelClub.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DEVELOPMENT_ASSET_PATHS = "\"PadelClub/Preview Content\""; @@ -3419,7 +3419,7 @@ CODE_SIGN_ENTITLEMENTS = PadelClub/PadelClub.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEFINES_MODULE = YES; DEVELOPMENT_ASSET_PATHS = "\"PadelClub/Preview Content\""; DEVELOPMENT_TEAM = BQ3Y44M3Q6; diff --git a/PadelClub/Views/Tournament/ConsolationTournamentImportView.swift b/PadelClub/Views/Tournament/ConsolationTournamentImportView.swift index d26cddc..1dd587e 100644 --- a/PadelClub/Views/Tournament/ConsolationTournamentImportView.swift +++ b/PadelClub/Views/Tournament/ConsolationTournamentImportView.swift @@ -218,8 +218,8 @@ struct ConsolationTournamentImportView: View { case .losers: if selectedGroupStagePosition.isEmpty { return $0.qualified == false - } else if let position = $0.groupStagePosition { - return $0.qualified == false && selectedGroupStagePosition.contains(position) + } else if let position = $0.groupStageObject()?.finalPosition(ofTeam: $0) { + return $0.qualified == false && selectedGroupStagePosition.contains(position + 1) } else { return $0.qualified == false }