diff --git a/PadelClubData/Data/TeamRegistration.swift b/PadelClubData/Data/TeamRegistration.swift index 865dfaf..cb3ef5c 100644 --- a/PadelClubData/Data/TeamRegistration.swift +++ b/PadelClubData/Data/TeamRegistration.swift @@ -256,7 +256,7 @@ final public class TeamRegistration: BaseTeamRegistration, SideStorable { public func teamLabel( _ displayStyle: DisplayStyle = .wide, twoLines: Bool = false, separator: String = "&" ) -> String { - if let name { return name } + if let name, name.isEmpty == false { return name } return players().map { $0.playerLabel(displayStyle) }.joined( separator: twoLines ? "\n" : " \(separator) ") } diff --git a/PadelClubData/Data/Tournament.swift b/PadelClubData/Data/Tournament.swift index 0fab86a..4d328c2 100644 --- a/PadelClubData/Data/Tournament.swift +++ b/PadelClubData/Data/Tournament.swift @@ -345,6 +345,7 @@ defer { public func availableSeedOpponentSpot(inRoundIndex roundIndex: Int) -> [Match] { return getRound(atRoundIndex: roundIndex)?.playedMatches().filter { $0.hasSpaceLeft() } ?? [] } + public func availableSeedGroups(includeAll: Bool = false) -> [SeedInterval] { let seeds = seeds() var availableSeedGroup = Set() @@ -362,6 +363,24 @@ defer { return availableSeedGroup.sorted(by: <) } + public func generateSeedGroups(base: Int, teamCount: Int) -> [SeedInterval] { + let start = base + 1 + let root = SeedInterval(first: start, last: start + teamCount - 1) + var groups: [SeedInterval] = [] + + func split(interval: SeedInterval) { + groups.append(interval) + if let chunks = interval.chunks() { + for chunk in chunks { + split(interval: chunk) + } + } + } + + split(interval: root) + return groups.sorted(by: <) + } + public func chunksBy(in chunks: [SeedInterval], availableSeedGroup: inout Set) { chunks.forEach { chunk in availableSeedGroup.insert(chunk)