From 83a2b2a5653d38e81fd196f8f47f4b802ed41c6e Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Tue, 30 Apr 2024 17:25:54 +0200 Subject: [PATCH] fix stuff --- PadelClub.xcodeproj/project.pbxproj | 6 +- PadelClub/Data/GroupStage.swift | 6 +- PadelClub/Data/Tournament.swift | 2 +- .../{Manager => Utils}/CloudConvert.swift | 0 .../{Manager => Utils}/ContactManager.swift | 0 .../{Manager => Utils}/DisplayContext.swift | 0 .../FileImportManager.swift | 0 .../{Manager => Utils}/LocationManager.swift | 0 .../Network/NetworkFederalService.swift | 0 .../Network/NetworkManager.swift | 0 .../Network/NetworkManagerError.swift | 0 .../{Manager => Utils}/NetworkMonitor.swift | 0 PadelClub/{Manager => Utils}/PadelRule.swift | 0 .../SourceFileManager.swift | 0 .../{Manager => Utils}/SwiftParser.swift | 0 PadelClub/{Manager => Utils}/Tips.swift | 0 PadelClub/{Manager => Utils}/URLs.swift | 0 .../Views/Cashier/CashierDetailView.swift | 2 +- .../GenericDestinationPickerView.swift | 6 +- .../Views/Components/MatchListView.swift | 2 +- PadelClub/Views/Match/MatchDetailView.swift | 128 +++++++++--------- .../TournamentGeneralSettingsView.swift | 23 ++++ .../Views/Tournament/TournamentView.swift | 2 +- 23 files changed, 98 insertions(+), 79 deletions(-) rename PadelClub/{Manager => Utils}/CloudConvert.swift (100%) rename PadelClub/{Manager => Utils}/ContactManager.swift (100%) rename PadelClub/{Manager => Utils}/DisplayContext.swift (100%) rename PadelClub/{Manager => Utils}/FileImportManager.swift (100%) rename PadelClub/{Manager => Utils}/LocationManager.swift (100%) rename PadelClub/{Manager => Utils}/Network/NetworkFederalService.swift (100%) rename PadelClub/{Manager => Utils}/Network/NetworkManager.swift (100%) rename PadelClub/{Manager => Utils}/Network/NetworkManagerError.swift (100%) rename PadelClub/{Manager => Utils}/NetworkMonitor.swift (100%) rename PadelClub/{Manager => Utils}/PadelRule.swift (100%) rename PadelClub/{Manager => Utils}/SourceFileManager.swift (100%) rename PadelClub/{Manager => Utils}/SwiftParser.swift (100%) rename PadelClub/{Manager => Utils}/Tips.swift (100%) rename PadelClub/{Manager => Utils}/URLs.swift (100%) diff --git a/PadelClub.xcodeproj/project.pbxproj b/PadelClub.xcodeproj/project.pbxproj index 2f7369e..e612230 100644 --- a/PadelClub.xcodeproj/project.pbxproj +++ b/PadelClub.xcodeproj/project.pbxproj @@ -613,7 +613,7 @@ C4A47D722B72881500ADC637 /* Views */, FF3F74FD2B91A087004CFE0E /* ViewModel */, C4A47D5F2B6D3B2D00ADC637 /* Data */, - FFF8ACD02B9238A2008466FA /* Manager */, + FFF8ACD02B9238A2008466FA /* Utils */, FFF8ACD72B923F26008466FA /* Extensions */, C425D4042B6D249E002A7B48 /* Assets.xcassets */, FF0EC54D2BB195CA0056B6D1 /* CSV */, @@ -1166,7 +1166,7 @@ path = Components; sourceTree = ""; }; - FFF8ACD02B9238A2008466FA /* Manager */ = { + FFF8ACD02B9238A2008466FA /* Utils */ = { isa = PBXGroup; children = ( FFA6D7862BB0B7A2003A31F3 /* CloudConvert.swift */, @@ -1182,7 +1182,7 @@ C49EF01A2BD6A1E80077B5AA /* URLs.swift */, FF6EC9072B947A1E00EA7F5A /* Network */, ); - path = Manager; + path = Utils; sourceTree = ""; }; FFF8ACD72B923F26008466FA /* Extensions */ = { diff --git a/PadelClub/Data/GroupStage.swift b/PadelClub/Data/GroupStage.swift index b1ac29f..ccb0baf 100644 --- a/PadelClub/Data/GroupStage.swift +++ b/PadelClub/Data/GroupStage.swift @@ -95,7 +95,7 @@ class GroupStage: ModelObject, Storable { } func scoreLabel(forGroupStagePosition groupStagePosition: Int) -> (wins: String, losses: String, setsDifference: String?, gamesDifference: String?)? { - if let scoreData = _score(forGroupStagePosition: groupStagePosition) { + if let scoreData = _score(forGroupStagePosition: groupStagePosition, nilIfEmpty: true) { let hideSetDifference = matchFormat.setsToWin == 1 let setDifference = scoreData.setDifference.formatted(.number.sign(strategy: .always(includingZero: false))) let gameDifference = scoreData.gameDifference.formatted(.number.sign(strategy: .always(includingZero: false))) @@ -106,10 +106,10 @@ class GroupStage: ModelObject, Storable { } } - fileprivate func _score(forGroupStagePosition groupStagePosition: Int) -> TeamGroupStageScore? { + fileprivate func _score(forGroupStagePosition groupStagePosition: Int, nilIfEmpty: Bool = false) -> TeamGroupStageScore? { guard let team = teamAt(groupStagePosition: groupStagePosition) else { return nil } let matches = matches(forGroupStagePosition: groupStagePosition).filter({ $0.hasEnded() }) - if matches.isEmpty { return nil } + if matches.isEmpty && nilIfEmpty { return nil } let wins = matches.filter { $0.winningTeamId == team.id }.count let loses = matches.filter { $0.losingTeamId == team.id }.count let differences = matches.compactMap { $0.scoreDifference(groupStagePosition) } diff --git a/PadelClub/Data/Tournament.swift b/PadelClub/Data/Tournament.swift index d2a4904..a28ed74 100644 --- a/PadelClub/Data/Tournament.swift +++ b/PadelClub/Data/Tournament.swift @@ -550,7 +550,7 @@ class Tournament : ModelObject, Storable { func registrationIssues() -> Int { let players : [PlayerRegistration] = unsortedPlayers() let selectedTeams : [TeamRegistration] = selectedSortedTeams() - let callDateIssue : [TeamRegistration] = selectedTeams.filter { isStartDateIsDifferentThanCallDate($0) } + let callDateIssue : [TeamRegistration] = selectedTeams.filter { $0.callDate != nil && isStartDateIsDifferentThanCallDate($0) } let duplicates : [PlayerRegistration] = duplicates(in: players) let problematicPlayers : [PlayerRegistration] = players.filter({ $0.sex == -1 }) let inadequatePlayers : [PlayerRegistration] = inadequatePlayers(in: players) diff --git a/PadelClub/Manager/CloudConvert.swift b/PadelClub/Utils/CloudConvert.swift similarity index 100% rename from PadelClub/Manager/CloudConvert.swift rename to PadelClub/Utils/CloudConvert.swift diff --git a/PadelClub/Manager/ContactManager.swift b/PadelClub/Utils/ContactManager.swift similarity index 100% rename from PadelClub/Manager/ContactManager.swift rename to PadelClub/Utils/ContactManager.swift diff --git a/PadelClub/Manager/DisplayContext.swift b/PadelClub/Utils/DisplayContext.swift similarity index 100% rename from PadelClub/Manager/DisplayContext.swift rename to PadelClub/Utils/DisplayContext.swift diff --git a/PadelClub/Manager/FileImportManager.swift b/PadelClub/Utils/FileImportManager.swift similarity index 100% rename from PadelClub/Manager/FileImportManager.swift rename to PadelClub/Utils/FileImportManager.swift diff --git a/PadelClub/Manager/LocationManager.swift b/PadelClub/Utils/LocationManager.swift similarity index 100% rename from PadelClub/Manager/LocationManager.swift rename to PadelClub/Utils/LocationManager.swift diff --git a/PadelClub/Manager/Network/NetworkFederalService.swift b/PadelClub/Utils/Network/NetworkFederalService.swift similarity index 100% rename from PadelClub/Manager/Network/NetworkFederalService.swift rename to PadelClub/Utils/Network/NetworkFederalService.swift diff --git a/PadelClub/Manager/Network/NetworkManager.swift b/PadelClub/Utils/Network/NetworkManager.swift similarity index 100% rename from PadelClub/Manager/Network/NetworkManager.swift rename to PadelClub/Utils/Network/NetworkManager.swift diff --git a/PadelClub/Manager/Network/NetworkManagerError.swift b/PadelClub/Utils/Network/NetworkManagerError.swift similarity index 100% rename from PadelClub/Manager/Network/NetworkManagerError.swift rename to PadelClub/Utils/Network/NetworkManagerError.swift diff --git a/PadelClub/Manager/NetworkMonitor.swift b/PadelClub/Utils/NetworkMonitor.swift similarity index 100% rename from PadelClub/Manager/NetworkMonitor.swift rename to PadelClub/Utils/NetworkMonitor.swift diff --git a/PadelClub/Manager/PadelRule.swift b/PadelClub/Utils/PadelRule.swift similarity index 100% rename from PadelClub/Manager/PadelRule.swift rename to PadelClub/Utils/PadelRule.swift diff --git a/PadelClub/Manager/SourceFileManager.swift b/PadelClub/Utils/SourceFileManager.swift similarity index 100% rename from PadelClub/Manager/SourceFileManager.swift rename to PadelClub/Utils/SourceFileManager.swift diff --git a/PadelClub/Manager/SwiftParser.swift b/PadelClub/Utils/SwiftParser.swift similarity index 100% rename from PadelClub/Manager/SwiftParser.swift rename to PadelClub/Utils/SwiftParser.swift diff --git a/PadelClub/Manager/Tips.swift b/PadelClub/Utils/Tips.swift similarity index 100% rename from PadelClub/Manager/Tips.swift rename to PadelClub/Utils/Tips.swift diff --git a/PadelClub/Manager/URLs.swift b/PadelClub/Utils/URLs.swift similarity index 100% rename from PadelClub/Manager/URLs.swift rename to PadelClub/Utils/URLs.swift diff --git a/PadelClub/Views/Cashier/CashierDetailView.swift b/PadelClub/Views/Cashier/CashierDetailView.swift index 8942073..7070584 100644 --- a/PadelClub/Views/Cashier/CashierDetailView.swift +++ b/PadelClub/Views/Cashier/CashierDetailView.swift @@ -54,7 +54,7 @@ struct CashierDetailView: View { Text(count.formatted()) } } - } label: { + } label: { Text("Voir le détail") } diff --git a/PadelClub/Views/Components/GenericDestinationPickerView.swift b/PadelClub/Views/Components/GenericDestinationPickerView.swift index fd936a8..07edd1e 100644 --- a/PadelClub/Views/Components/GenericDestinationPickerView.swift +++ b/PadelClub/Views/Components/GenericDestinationPickerView.swift @@ -26,8 +26,7 @@ struct GenericDestinationPickerView: View { .padding() .background { Circle() - .fill(Color.master) - .opacity(selectedDestination == nil ? 1.0 : 0.2) + .fill(selectedDestination == nil ? .master : .beige) } .buttonStyle(.plain) } @@ -42,8 +41,7 @@ struct GenericDestinationPickerView: View { .padding() .background { Capsule() - .fill(Color.master) - .opacity(selectedDestination?.id == destination.id ? 1.0 : 0.2) + .fill(selectedDestination?.id == destination.id ? .master : .beige) } .buttonStyle(.plain) .overlay(alignment: .bottomTrailing) { diff --git a/PadelClub/Views/Components/MatchListView.swift b/PadelClub/Views/Components/MatchListView.swift index f78d29c..e54e5af 100644 --- a/PadelClub/Views/Components/MatchListView.swift +++ b/PadelClub/Views/Components/MatchListView.swift @@ -22,7 +22,7 @@ struct MatchListView: View { DisclosureGroup(isExpanded: $isExpanded) { ForEach(matches) { match in MatchRowView(match: match, matchViewStyle: matchViewStyle) - .listRowInsets(EdgeInsets()) + .listRowInsets(EdgeInsets(top: 0, leading: -2, bottom: 0, trailing: 8)) } } label: { LabeledContent { diff --git a/PadelClub/Views/Match/MatchDetailView.swift b/PadelClub/Views/Match/MatchDetailView.swift index 72887eb..4ef7c77 100644 --- a/PadelClub/Views/Match/MatchDetailView.swift +++ b/PadelClub/Views/Match/MatchDetailView.swift @@ -382,68 +382,67 @@ struct MatchDetailView: View { } } + @ViewBuilder var startingOptionView: some View { - Section { - - if match.hasEnded() == false { - let rotationDuration = match.getDuration() - Picker(selection: $startDateSetup) { - if match.isReady() { - Text("Dans 5 minutes").tag(MatchDateSetup.inMinutes(5)) - Text("Dans 15 minutes").tag(MatchDateSetup.inMinutes(15)) - Text("Tout de suite").tag(MatchDateSetup.now) - } - Text("Précédente rotation").tag(MatchDateSetup.inMinutes(-rotationDuration)) - Text("Prochaine rotation").tag(MatchDateSetup.inMinutes(rotationDuration)) - Text("À").tag(MatchDateSetup.customDate) - } label: { - Text("Horaire") + if match.hasEnded() == false { + let rotationDuration = match.getDuration() + Picker(selection: $startDateSetup) { + if match.isReady() { + Text("Dans 5 minutes").tag(MatchDateSetup.inMinutes(5)) + Text("Dans 15 minutes").tag(MatchDateSetup.inMinutes(15)) + Text("Tout de suite").tag(MatchDateSetup.now) } - .onChange(of: startDateSetup, perform: { value in - switch startDateSetup { - case .customDate: - break - case .now: - startDate = Date() - case .inMinutes(let minutes): - startDate = Date().addingTimeInterval(Double(minutes) * 60) - } - }) + Text("Précédente rotation").tag(MatchDateSetup.inMinutes(-rotationDuration)) + Text("Prochaine rotation").tag(MatchDateSetup.inMinutes(rotationDuration)) + Text("À").tag(MatchDateSetup.customDate) + } label: { + Text("Horaire") } - - if match.startDate != nil || startDateSetup == .customDate { - DatePicker(selection: $startDate) { - Label("Début", systemImage: "calendar").labelStyle(.titleOnly) + .onChange(of: startDateSetup, perform: { value in + switch startDateSetup { + case .customDate: + break + case .now: + startDate = Date() + case .inMinutes(let minutes): + startDate = Date().addingTimeInterval(Double(minutes) * 60) } - .datePickerStyle(.compact) + }) + } + + if match.startDate != nil || startDateSetup == .customDate { + DatePicker(selection: $startDate) { + Label("Début", systemImage: "calendar").labelStyle(.titleOnly) } - - if match.endDate != nil { - DatePicker(selection: $endDate) { - Label("Fin", systemImage: "calendar").labelStyle(.titleOnly) - } - .datePickerStyle(.compact) + .datePickerStyle(.compact) + } + + if match.endDate != nil { + DatePicker(selection: $endDate) { + Label("Fin", systemImage: "calendar").labelStyle(.titleOnly) } + .datePickerStyle(.compact) + } - Picker(selection: $fieldSetup) { - Text("Au hasard").tag(MatchFieldSetup.random) - //Text("Premier disponible").tag(MatchFieldSetup.firstAvailable) - if let tournament = match.currentTournament() { - ForEach(0..