diff --git a/PadelClub.xcodeproj/project.pbxproj b/PadelClub.xcodeproj/project.pbxproj index 74ca800..0023abe 100644 --- a/PadelClub.xcodeproj/project.pbxproj +++ b/PadelClub.xcodeproj/project.pbxproj @@ -130,6 +130,9 @@ FF3F74F62B919E45004CFE0E /* UmpireView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF3F74F52B919E45004CFE0E /* UmpireView.swift */; }; FF3F74FF2B91A2D4004CFE0E /* AgendaDestination.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF3F74FE2B91A2D4004CFE0E /* AgendaDestination.swift */; }; FF44421C2BE39FA2008BBF0B /* Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FFD784002B91BF79000F62A6 /* Launch Screen.storyboard */; }; + FF4623CB2D1340D200CB57B5 /* TournamentCategorySettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF4623CA2D1340D200CB57B5 /* TournamentCategorySettingsView.swift */; }; + FF4623CC2D1340D200CB57B5 /* TournamentCategorySettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF4623CA2D1340D200CB57B5 /* TournamentCategorySettingsView.swift */; }; + FF4623CD2D1340D200CB57B5 /* TournamentCategorySettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF4623CA2D1340D200CB57B5 /* TournamentCategorySettingsView.swift */; }; FF4AB6B52B9248200002987F /* NetworkManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF4AB6B42B9248200002987F /* NetworkManager.swift */; }; FF4AB6BB2B9256D50002987F /* SearchViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF4AB6BA2B9256D50002987F /* SearchViewModel.swift */; }; FF4AB6BD2B9256E10002987F /* SelectablePlayerListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF4AB6BC2B9256E10002987F /* SelectablePlayerListView.swift */; }; @@ -1072,6 +1075,7 @@ FF3B60A22BC49BBC008C2E66 /* MatchScheduler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MatchScheduler.swift; sourceTree = ""; }; FF3F74F52B919E45004CFE0E /* UmpireView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UmpireView.swift; sourceTree = ""; }; FF3F74FE2B91A2D4004CFE0E /* AgendaDestination.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AgendaDestination.swift; sourceTree = ""; }; + FF4623CA2D1340D200CB57B5 /* TournamentCategorySettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TournamentCategorySettingsView.swift; sourceTree = ""; }; FF4AB6B42B9248200002987F /* NetworkManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkManager.swift; sourceTree = ""; }; FF4AB6BA2B9256D50002987F /* SearchViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchViewModel.swift; sourceTree = ""; }; FF4AB6BC2B9256E10002987F /* SelectablePlayerListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectablePlayerListView.swift; sourceTree = ""; }; @@ -1831,6 +1835,7 @@ FF025AE02BD0EB9000A86CF8 /* TournamentClubSettingsView.swift */, FF025AE22BD0EBA900A86CF8 /* TournamentMatchFormatsSettingsView.swift */, FF025AE42BD0EBB800A86CF8 /* TournamentGeneralSettingsView.swift */, + FF4623CA2D1340D200CB57B5 /* TournamentCategorySettingsView.swift */, FF6087E92BE25EF1004E1E47 /* TournamentStatusView.swift */, FFCF76062C3BE9BC006C8C3D /* CloseDatePicker.swift */, ); @@ -2564,6 +2569,7 @@ FF70916A2B90F95E00AB08DA /* DateBoxView.swift in Sources */, FF5D0D722BB3EFA5005CB568 /* LearnMoreSheetView.swift in Sources */, FFF8ACD42B92392C008466FA /* SourceFileManager.swift in Sources */, + FF4623CC2D1340D200CB57B5 /* TournamentCategorySettingsView.swift in Sources */, C4EC6F592BE92D88000CEAB4 /* PListReader.swift in Sources */, FF0EC5222BB173E70056B6D1 /* UpdateSourceRankDateView.swift in Sources */, FF025AE72BD1111000A86CF8 /* GlobalSettingsView.swift in Sources */, @@ -2851,6 +2857,7 @@ FF4CC02C2C996C0600151637 /* DateBoxView.swift in Sources */, FF4CC02D2C996C0600151637 /* LearnMoreSheetView.swift in Sources */, FF4CC02E2C996C0600151637 /* SourceFileManager.swift in Sources */, + FF4623CB2D1340D200CB57B5 /* TournamentCategorySettingsView.swift in Sources */, FF4CC02F2C996C0600151637 /* PListReader.swift in Sources */, FF4CC0302C996C0600151637 /* UpdateSourceRankDateView.swift in Sources */, FF4CC0312C996C0600151637 /* GlobalSettingsView.swift in Sources */, @@ -3117,6 +3124,7 @@ FF70FBAB2C90584900129CC2 /* DateBoxView.swift in Sources */, FF70FBAC2C90584900129CC2 /* LearnMoreSheetView.swift in Sources */, FF70FBAD2C90584900129CC2 /* SourceFileManager.swift in Sources */, + FF4623CD2D1340D200CB57B5 /* TournamentCategorySettingsView.swift in Sources */, FF70FBAE2C90584900129CC2 /* PListReader.swift in Sources */, FF70FBAF2C90584900129CC2 /* UpdateSourceRankDateView.swift in Sources */, FF70FBB02C90584900129CC2 /* GlobalSettingsView.swift in Sources */, diff --git a/PadelClub/Views/Tournament/Screen/Components/TournamentCategorySettingsView.swift b/PadelClub/Views/Tournament/Screen/Components/TournamentCategorySettingsView.swift new file mode 100644 index 0000000..27856e1 --- /dev/null +++ b/PadelClub/Views/Tournament/Screen/Components/TournamentCategorySettingsView.swift @@ -0,0 +1,45 @@ +// +// TournamentCategorySettingsView.swift +// PadelClub +// +// Created by razmig on 18/12/2024. +// + + +import SwiftUI +import LeStorage + +struct TournamentCategorySettingsView: View { + @Environment(Tournament.self) private var tournament: Tournament + @EnvironmentObject var dataStore: DataStore + + var body: some View { + List { + TournamentLevelPickerView() + } + .onChange(of: [ + tournament.federalCategory, + ]) { + _save() + } + .onChange(of: [ + tournament.federalLevelCategory, + ]) { + _save() + } + .onChange(of: [ + tournament.federalAgeCategory, + ]) { + _save() + } + } + + private func _save() { + do { + try dataStore.tournaments.addOrUpdate(instance: tournament) + } catch { + Logger.error(error) + } + } + +} diff --git a/PadelClub/Views/Tournament/Screen/Components/TournamentGeneralSettingsView.swift b/PadelClub/Views/Tournament/Screen/Components/TournamentGeneralSettingsView.swift index 6b94b72..d000292 100644 --- a/PadelClub/Views/Tournament/Screen/Components/TournamentGeneralSettingsView.swift +++ b/PadelClub/Views/Tournament/Screen/Components/TournamentGeneralSettingsView.swift @@ -102,10 +102,6 @@ struct TournamentGeneralSettingsView: View { tournamentInformation.append("\n" + tournament.entryFeeMessage) } } - - Section { - TournamentLevelPickerView() - } Section { Picker(selection: $loserBracketMode) { @@ -226,21 +222,6 @@ struct TournamentGeneralSettingsView: View { .onChange(of: tournament.dayDuration) { _save() } - .onChange(of: [ - tournament.federalCategory, - ]) { - _save() - } - .onChange(of: [ - tournament.federalLevelCategory, - ]) { - _save() - } - .onChange(of: [ - tournament.federalAgeCategory, - ]) { - _save() - } .onChange(of: [ tournament.groupStageSortMode, ]) { diff --git a/PadelClub/Views/Tournament/Screen/TournamentSettingsView.swift b/PadelClub/Views/Tournament/Screen/TournamentSettingsView.swift index 5dc380e..2b14cc7 100644 --- a/PadelClub/Views/Tournament/Screen/TournamentSettingsView.swift +++ b/PadelClub/Views/Tournament/Screen/TournamentSettingsView.swift @@ -16,6 +16,7 @@ enum TournamentSettings: Identifiable, Selectable, Equatable { case general case club(Tournament) case matchFormats + case tournamentType var id: String { String(describing: self) } @@ -29,6 +30,8 @@ enum TournamentSettings: Identifiable, Selectable, Equatable { return "Général" case .club: return "Terrains" + case .tournamentType: + return "Type" } } @@ -55,7 +58,7 @@ struct TournamentSettingsView: View { @Environment(Tournament.self) var tournament: Tournament private func destinations() -> [TournamentSettings] { - [.general, .club(tournament), .matchFormats] + [.general, .tournamentType, .club(tournament), .matchFormats] } var body: some View { @@ -66,6 +69,8 @@ struct TournamentSettingsView: View { TournamentStatusView(tournament: tournament) case .matchFormats: TournamentMatchFormatsSettingsView() + case .tournamentType: + TournamentCategorySettingsView() case .general: TournamentGeneralSettingsView(tournament: tournament) case .club: