You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
2.0 KiB
63 lines
2.0 KiB
//
|
|
// LoserRoundsView.swift
|
|
// PadelClub
|
|
//
|
|
// Created by Razmig Sarkissian on 04/04/2024.
|
|
//
|
|
|
|
import SwiftUI
|
|
|
|
struct LoserRoundsView: View {
|
|
var upperBracketRound: Round
|
|
@State private var selectedRound: Round?
|
|
let loserRounds: [Round]
|
|
|
|
init(upperBracketRound: Round) {
|
|
self.upperBracketRound = upperBracketRound
|
|
self.loserRounds = upperBracketRound.loserRounds()
|
|
_selectedRound = State(wrappedValue: upperBracketRound.getActiveLoserRound())
|
|
}
|
|
|
|
var body: some View {
|
|
VStack(spacing: 0) {
|
|
GenericDestinationPickerView(selectedDestination: $selectedRound, destinations: loserRounds, nilDestinationIsValid: true)
|
|
switch selectedRound {
|
|
case .none:
|
|
List {
|
|
}
|
|
case .some(let selectedRound):
|
|
LoserRoundView(loserRounds: upperBracketRound.loserRounds(forRoundIndex: selectedRound.index))
|
|
}
|
|
}
|
|
.navigationBarTitleDisplayMode(.inline)
|
|
.toolbarBackground(.visible, for: .navigationBar)
|
|
}
|
|
}
|
|
|
|
struct LoserRoundView: View {
|
|
let loserRounds: [Round]
|
|
|
|
var body: some View {
|
|
List {
|
|
ForEach(loserRounds) { loserRound in
|
|
Section {
|
|
ForEach(loserRound.playedMatches()) { match in
|
|
MatchRowView(match: match, matchViewStyle: .sectionedStandardStyle)
|
|
.overlay {
|
|
if match.disabled {
|
|
Image(systemName: "xmark")
|
|
.resizable()
|
|
.scaledToFit()
|
|
.opacity(0.8)
|
|
}
|
|
}
|
|
.disabled(match.disabled)
|
|
}
|
|
} header: {
|
|
Text(loserRound.roundTitle(.wide))
|
|
}
|
|
}
|
|
}
|
|
.headerProminence(.increased)
|
|
}
|
|
}
|
|
|