From 393069ec459eb385f941a6e6c055604927d5e3eb Mon Sep 17 00:00:00 2001 From: Raz Date: Tue, 17 Sep 2024 21:12:32 +0200 Subject: [PATCH] fix stuff in file import --- PadelClub.xcodeproj/project.pbxproj | 2 ++ PadelClub/Data/PlayerRegistration.swift | 4 ++-- PadelClub/Views/Components/Labels.swift | 2 +- .../Player/Components/PlayerPopoverView.swift | 10 +++++----- PadelClub/Views/Player/PlayerDetailView.swift | 2 ++ PadelClub/Views/Team/EditingTeamView.swift | 2 +- PadelClub/Views/Tournament/FileImportView.swift | 16 +++++++++++++--- .../Views/Tournament/Screen/AddTeamView.swift | 9 ++++++--- .../Screen/TournamentSettingsView.swift | 2 +- .../Views/Tournament/TournamentInitView.swift | 4 ++-- 10 files changed, 35 insertions(+), 18 deletions(-) diff --git a/PadelClub.xcodeproj/project.pbxproj b/PadelClub.xcodeproj/project.pbxproj index a506e45..59d9ba6 100644 --- a/PadelClub.xcodeproj/project.pbxproj +++ b/PadelClub.xcodeproj/project.pbxproj @@ -3156,6 +3156,7 @@ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -3198,6 +3199,7 @@ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; diff --git a/PadelClub/Data/PlayerRegistration.swift b/PadelClub/Data/PlayerRegistration.swift index b53db2f..da256cf 100644 --- a/PadelClub/Data/PlayerRegistration.swift +++ b/PadelClub/Data/PlayerRegistration.swift @@ -160,8 +160,8 @@ final class PlayerRegistration: ModelObject, Storable { } func isSameAs(_ player: PlayerRegistration) -> Bool { - firstName.localizedCaseInsensitiveCompare(player.firstName) == .orderedSame && - lastName.localizedCaseInsensitiveCompare(player.lastName) == .orderedSame + firstName.trimmedMultiline.localizedCaseInsensitiveCompare(player.firstName.trimmedMultiline) == .orderedSame && + lastName.trimmedMultiline.localizedCaseInsensitiveCompare(player.lastName.trimmedMultiline) == .orderedSame } func tournament() -> Tournament? { diff --git a/PadelClub/Views/Components/Labels.swift b/PadelClub/Views/Components/Labels.swift index 5d2ed00..7049334 100644 --- a/PadelClub/Views/Components/Labels.swift +++ b/PadelClub/Views/Components/Labels.swift @@ -21,7 +21,7 @@ struct LabelStructure: View { struct LabelSettings: View { var body: some View { - Label("Réglages", systemImage: "slider.horizontal.3").labelStyle(.titleOnly) + Label("Réglages du tournoi", systemImage: "slider.horizontal.3").labelStyle(.titleOnly) } } diff --git a/PadelClub/Views/Player/Components/PlayerPopoverView.swift b/PadelClub/Views/Player/Components/PlayerPopoverView.swift index 55ff56c..f1dbe6e 100644 --- a/PadelClub/Views/Player/Components/PlayerPopoverView.swift +++ b/PadelClub/Views/Player/Components/PlayerPopoverView.swift @@ -99,7 +99,7 @@ struct PlayerPopoverView: View { .textInputAutocapitalization(.words) .focused($firstNameIsFocused) .onSubmit { - firstName = firstName.trimmed + firstName = firstName.trimmedMultiline lastNameIsFocused = true } .fixedSize() @@ -114,7 +114,7 @@ struct PlayerPopoverView: View { .keyboardType(.alphabet) .focused($lastNameIsFocused) .onSubmit { - lastName = lastName.trimmed + lastName = lastName.trimmedMultiline licenseIsFocused = true } .fixedSize() @@ -128,7 +128,7 @@ struct PlayerPopoverView: View { .keyboardType(.numberPad) .submitLabel(.next) .onSubmit { - license = license.trimmed + license = license.trimmedMultiline if requiredField.contains(.license) { if license.isLicenseNumber { amountIsFocused = true @@ -206,7 +206,7 @@ struct PlayerPopoverView: View { Spacer() Button("Confirmer") { if licenseIsFocused { - license = license.trimmed + license = license.trimmedMultiline if requiredField.contains(.license) { if license.isLicenseNumber { amountIsFocused = true @@ -251,7 +251,7 @@ struct PlayerPopoverView: View { } func createManualPlayer() { - let playerRegistration = PlayerRegistration(firstName: firstName, lastName: lastName, licenceId: license.trimmed.isEmpty ? nil : license, rank: rank, sex: PlayerRegistration.PlayerSexType(rawValue: sex)) + let playerRegistration = PlayerRegistration(firstName: firstName.trimmedMultiline, lastName: lastName.trimmedMultiline, licenceId: license.trimmedMultiline.isEmpty ? nil : license, rank: rank, sex: PlayerRegistration.PlayerSexType(rawValue: sex)) self.creationCompletionHandler(playerRegistration) } diff --git a/PadelClub/Views/Player/PlayerDetailView.swift b/PadelClub/Views/Player/PlayerDetailView.swift index 938a7ac..3d65b72 100644 --- a/PadelClub/Views/Player/PlayerDetailView.swift +++ b/PadelClub/Views/Player/PlayerDetailView.swift @@ -41,6 +41,7 @@ struct PlayerDetailView: View { .multilineTextAlignment(.trailing) .frame(maxWidth: .infinity) .onSubmit(of: .text) { + player.lastName = player.lastName.trimmedMultiline _save() } } label: { @@ -53,6 +54,7 @@ struct PlayerDetailView: View { .multilineTextAlignment(.trailing) .frame(maxWidth: .infinity) .onSubmit(of: .text) { + player.firstName = player.firstName.trimmedMultiline _save() } } label: { diff --git a/PadelClub/Views/Team/EditingTeamView.swift b/PadelClub/Views/Team/EditingTeamView.swift index 2c017db..bee37c6 100644 --- a/PadelClub/Views/Team/EditingTeamView.swift +++ b/PadelClub/Views/Team/EditingTeamView.swift @@ -147,7 +147,7 @@ struct EditingTeamView: View { .frame(maxWidth: .infinity) .submitLabel(.done) .onSubmit(of: .text) { - let trimmed = name.trimmed + let trimmed = name.trimmedMultiline if trimmed.isEmpty { team.name = nil } else { diff --git a/PadelClub/Views/Tournament/FileImportView.swift b/PadelClub/Views/Tournament/FileImportView.swift index f7e9c42..8147fdf 100644 --- a/PadelClub/Views/Tournament/FileImportView.swift +++ b/PadelClub/Views/Tournament/FileImportView.swift @@ -311,6 +311,11 @@ struct FileImportView: View { } label: { Text("Équipe\(_filteredTeams.count.pluralSuffix) \(tournament.tournamentCategory.importingRawValue) \(tournament.federalTournamentAge.importingRawValue) détectée\(_filteredTeams.count.pluralSuffix)") } + LabeledContent { + Text(_filteredTeams.count.formatted()) + } label: { + Text("Équipe\(_filteredTeams.count.pluralSuffix) \(tournament.tournamentCategory.importingRawValue) \(tournament.federalTournamentAge.importingRawValue) détectée\(_filteredTeams.count.pluralSuffix)") + } } footer: { if previousTeams.isEmpty == false { Text("La liste ci-dessous n'est qu'une indication d'évolution par rapport au seul poids d'équipe. Cela ne tient pas compte des dates d'inscriptions, WCs et autres éléments.").foregroundStyle(.logoRed) @@ -442,11 +447,16 @@ struct FileImportView: View { .disabled(validationInProgress) } + private func _getUnfound(tournament: Tournament, fromTeams filteredTeams: [FileImportManager.TeamHolder]) -> Set { + let previousTeams = filteredTeams.compactMap({ $0.previousTeam }) + let unfound = Set(tournament.unsortedTeams()).subtracting(Set(previousTeams)) + return unfound + } + private func _validate(tournament: Tournament) async { let filteredTeams = filteredTeams(tournament: tournament) - let previousTeams = filteredTeams.compactMap({ $0.previousTeam }) - let unfound = Set(tournament.unsortedTeams()).subtracting(Set(previousTeams)) + let unfound = _getUnfound(tournament: tournament, fromTeams: filteredTeams) unfound.forEach { team in team.resetPositions() team.wildCardBracket = false @@ -455,7 +465,7 @@ struct FileImportView: View { } do { - try self.tournamentStore.teamRegistrations.addOrUpdate(contentOfs: unfound) + try tournament.tournamentStore.teamRegistrations.addOrUpdate(contentOfs: unfound) } catch { Logger.error(error) } diff --git a/PadelClub/Views/Tournament/Screen/AddTeamView.swift b/PadelClub/Views/Tournament/Screen/AddTeamView.swift index 9b200ae..01575a4 100644 --- a/PadelClub/Views/Tournament/Screen/AddTeamView.swift +++ b/PadelClub/Views/Tournament/Screen/AddTeamView.swift @@ -164,7 +164,7 @@ struct AddTeamView: View { } } } - .navigationBarBackButtonHidden(_isEditingTeam()) + .navigationBarBackButtonHidden(true) .toolbarBackground(.visible, for: .navigationBar) .toolbarBackground(.visible, for: .bottomBar) .navigationBarTitleDisplayMode(.inline) @@ -336,6 +336,7 @@ struct AddTeamView: View { if let pasteString { Section { TextEditor(text: $editableTextField) + .frame(minHeight: 120, maxHeight: .infinity) .focused($focusedField, equals: .pasteField) .toolbar { ToolbarItemGroup(placement: .keyboard) { @@ -355,15 +356,17 @@ struct AddTeamView: View { Text("Contenu du presse-papier") } footer: { HStack { + FooterButtonView("éditer") { + self.focusedField = .pasteField + } Spacer() - Button("effacer", role: .destructive) { + FooterButtonView("effacer", role: .destructive) { self.focusedField = nil self.editableTextField = "" self.pasteString = nil self.createdPlayers.removeAll() self.createdPlayerIds.removeAll() } - .buttonStyle(.borderless) } } } diff --git a/PadelClub/Views/Tournament/Screen/TournamentSettingsView.swift b/PadelClub/Views/Tournament/Screen/TournamentSettingsView.swift index 98837ad..5dc380e 100644 --- a/PadelClub/Views/Tournament/Screen/TournamentSettingsView.swift +++ b/PadelClub/Views/Tournament/Screen/TournamentSettingsView.swift @@ -74,7 +74,7 @@ struct TournamentSettingsView: View { } .navigationBarTitleDisplayMode(.inline) .toolbarBackground(.visible, for: .navigationBar) - .navigationTitle("Réglages") + .navigationTitle("Réglages du tournoi") } } diff --git a/PadelClub/Views/Tournament/TournamentInitView.swift b/PadelClub/Views/Tournament/TournamentInitView.swift index 969f6ff..2f36a05 100644 --- a/PadelClub/Views/Tournament/TournamentInitView.swift +++ b/PadelClub/Views/Tournament/TournamentInitView.swift @@ -40,7 +40,7 @@ struct TournamentInitView: View { Image(systemName: "checkmark").foregroundStyle(.green) } } label: { - LabelStructure() + Text("Structure") Text(tournament.structureDescriptionLocalizedLabel()) } } @@ -49,7 +49,7 @@ struct TournamentInitView: View { LabeledContent { Text(tournament.localizedTournamentType()) } label: { - LabelSettings() + Text("Réglages du tournoi") Text("Formats, terrains, prix et plus") } }