diff --git a/PadelClub/Data/Tournament.swift b/PadelClub/Data/Tournament.swift index 1c98977..e11d868 100644 --- a/PadelClub/Data/Tournament.swift +++ b/PadelClub/Data/Tournament.swift @@ -1732,6 +1732,26 @@ class Tournament : ModelObject, Storable { } } + func replacementRangeExtended(groupStagePosition: Int) -> TeamRegistration.TeamRange? { + let selectedSortedTeams = selectedSortedTeams() + var left: TeamRegistration? = nil + if groupStagePosition == 0 { + left = seeds().last + } else { + let previousHat = selectedSortedTeams.filter({ $0.groupStagePosition == groupStagePosition - 1 }).sorted(by: \.weight) + left = previousHat.last + } + var right: TeamRegistration? = nil + if groupStagePosition == teamsPerGroupStage - 1 { + right = nil + } else { + let previousHat = selectedSortedTeams.filter({ $0.groupStagePosition == groupStagePosition + 1 }).sorted(by: \.weight) + right = previousHat.first + } + return (left: left, right: right) + } + + // MARK: - func insertOnServer() throws { diff --git a/PadelClub/Views/Calling/SeedsCallingView.swift b/PadelClub/Views/Calling/SeedsCallingView.swift index 3f4a33d..806bc30 100644 --- a/PadelClub/Views/Calling/SeedsCallingView.swift +++ b/PadelClub/Views/Calling/SeedsCallingView.swift @@ -26,6 +26,10 @@ struct SeedsCallingView: View { } } header: { Text(round.roundTitle()) + } footer: { + if let startDate = round.startDate ?? round.playedMatches().first?.startDate { + CallView(teams: seeds, callDate: startDate, matchFormat: round.matchFormat, roundLabel: round.roundTitle()) + } } } } diff --git a/PadelClub/Views/GroupStage/GroupStageView.swift b/PadelClub/Views/GroupStage/GroupStageView.swift index 67f2687..577a042 100644 --- a/PadelClub/Views/GroupStage/GroupStageView.swift +++ b/PadelClub/Views/GroupStage/GroupStageView.swift @@ -171,7 +171,7 @@ struct GroupStageView: View { VStack(alignment: .leading, spacing: 0) { Text("#\(index + 1)") .font(.caption) - TeamPickerView(teamPicked: { team in + TeamPickerView(groupStagePosition: index, teamPicked: { team in print(team.pasteData()) team.groupStage = groupStage.id team.groupStagePosition = index diff --git a/PadelClub/Views/Match/MatchSetupView.swift b/PadelClub/Views/Match/MatchSetupView.swift index 4031257..08071b8 100644 --- a/PadelClub/Views/Match/MatchSetupView.swift +++ b/PadelClub/Views/Match/MatchSetupView.swift @@ -71,7 +71,7 @@ struct MatchSetupView: View { } HStack { let luckyLosers = walkOutSpot ? match.luckyLosers() : [] - TeamPickerView(luckyLosers: luckyLosers, teamPicked: { team in + TeamPickerView(groupStagePosition: nil, luckyLosers: luckyLosers, teamPicked: { team in print(team.pasteData()) if walkOutSpot { match.setLuckyLoser(team: team, teamPosition: teamPosition) diff --git a/PadelClub/Views/Team/TeamPickerView.swift b/PadelClub/Views/Team/TeamPickerView.swift index b4d6ab8..8b7b578 100644 --- a/PadelClub/Views/Team/TeamPickerView.swift +++ b/PadelClub/Views/Team/TeamPickerView.swift @@ -13,9 +13,10 @@ struct TeamPickerView: View { @Environment(\.dismiss) private var dismiss @State private var presentTeamPickerView: Bool = false @State private var searchField: String = "" + var groupStagePosition: Int? = nil var luckyLosers: [TeamRegistration] = [] let teamPicked: ((TeamRegistration) -> (Void)) - + var body: some View { Button { presentTeamPickerView = true @@ -26,6 +27,13 @@ struct TeamPickerView: View { .sheet(isPresented: $presentTeamPickerView) { NavigationStack { List { + if let groupStagePosition, let replacementRangeExtended = tournament.replacementRangeExtended(groupStagePosition: groupStagePosition) { + Section { + GroupStageTeamReplacementView.TeamRangeView(teamRange: replacementRangeExtended, playerWeight: 0) + } header: { + Text("Même ligne en poule") + } + } let teams = tournament.selectedSortedTeams() if luckyLosers.isEmpty == false { Section {