fix wording

multistore
Razmig Sarkissian 1 year ago
parent bc75a1e9ea
commit 436629a24c
  1. 4
      PadelClub.xcodeproj/project.pbxproj
  2. 3
      PadelClub/Data/Club.swift
  3. 21
      PadelClub/Utils/Alphabet.swift
  4. 12
      PadelClub/Views/Club/Shared/ClubCourtSetupView.swift
  5. 37
      PadelClub/Views/GroupStage/GroupStageSettingsView.swift
  6. 15
      PadelClub/Views/Navigation/Toolbox/ToolboxView.swift
  7. 4
      PadelClub/Views/Round/RoundSettingsView.swift
  8. 4
      PadelClub/Views/Tournament/FileImportView.swift

@ -193,6 +193,7 @@
FF70916E2B9108C600AB08DA /* InscriptionManagerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF70916D2B9108C600AB08DA /* InscriptionManagerView.swift */; };
FF82CFC52B911F5B00B0CAF2 /* OrganizedTournamentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF82CFC42B911F5B00B0CAF2 /* OrganizedTournamentView.swift */; };
FF82CFC92B9132AF00B0CAF2 /* ActivityView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF82CFC82B9132AF00B0CAF2 /* ActivityView.swift */; };
FF8E1CE62C006E0200184680 /* Alphabet.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF8E1CE52C006E0200184680 /* Alphabet.swift */; };
FF8F26382BAD523300650388 /* PadelRule.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF8F26352BAD523300650388 /* PadelRule.swift */; };
FF8F263B2BAD528600650388 /* EventCreationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF8F263A2BAD528600650388 /* EventCreationView.swift */; };
FF8F263D2BAD627A00650388 /* TournamentConfiguratorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF8F263C2BAD627A00650388 /* TournamentConfiguratorView.swift */; };
@ -510,6 +511,7 @@
FF70916D2B9108C600AB08DA /* InscriptionManagerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InscriptionManagerView.swift; sourceTree = "<group>"; };
FF82CFC42B911F5B00B0CAF2 /* OrganizedTournamentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OrganizedTournamentView.swift; sourceTree = "<group>"; };
FF82CFC82B9132AF00B0CAF2 /* ActivityView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityView.swift; sourceTree = "<group>"; };
FF8E1CE52C006E0200184680 /* Alphabet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Alphabet.swift; sourceTree = "<group>"; };
FF8F26352BAD523300650388 /* PadelRule.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PadelRule.swift; sourceTree = "<group>"; };
FF8F263A2BAD528600650388 /* EventCreationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EventCreationView.swift; sourceTree = "<group>"; };
FF8F263C2BAD627A00650388 /* TournamentConfiguratorView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TournamentConfiguratorView.swift; sourceTree = "<group>"; };
@ -1293,6 +1295,7 @@
FF0EC51D2BB16F680056B6D1 /* SwiftParser.swift */,
FF1DC5582BAB767000FD8220 /* Tips.swift */,
C49EF01A2BD6A1E80077B5AA /* URLs.swift */,
FF8E1CE52C006E0200184680 /* Alphabet.swift */,
FF6EC9072B947A1E00EA7F5A /* Network */,
C4EC6F582BE92D88000CEAB4 /* PListReader.swift */,
);
@ -1645,6 +1648,7 @@
C4A47D632B6D3D6500ADC637 /* Club.swift in Sources */,
FF6EC90B2B947AC000EA7F5A /* Array+Extensions.swift in Sources */,
FF59FFB92B90EFD70061EFF9 /* ToolboxView.swift in Sources */,
FF8E1CE62C006E0200184680 /* Alphabet.swift in Sources */,
FFF8ACD92B923F3C008466FA /* String+Extensions.swift in Sources */,
FF025AE52BD0EBB800A86CF8 /* TournamentGeneralSettingsView.swift in Sources */,
FFC2DCB22BBE75D40046DB9F /* LoserRoundView.swift in Sources */,

@ -36,6 +36,7 @@ class Club : ModelObject, Storable, Hashable {
var latitude: Double?
var longitude: Double?
var courtCount: Int = 2
// var alphabeticalName: Bool = false
internal init(creator: String? = nil, name: String, acronym: String? = nil, phone: String? = nil, code: String? = nil, address: String? = nil, city: String? = nil, zipCode: String? = nil, latitude: Double? = nil, longitude: Double? = nil, courtCount: Int = 2) {
self.creator = creator
@ -85,6 +86,7 @@ class Club : ModelObject, Storable, Hashable {
case _latitude = "latitude"
case _longitude = "longitude"
case _courtCount = "courtCount"
// case _alphabeticalName = "alphabeticalName"
}
func encode(to encoder: Encoder) throws {
@ -144,6 +146,7 @@ class Club : ModelObject, Storable, Hashable {
}
try container.encode(courtCount, forKey: ._courtCount)
// try container.encode(alphabeticalName, forKey: ._alphabeticalName)
}
}

@ -0,0 +1,21 @@
//
// Alphabet.swift
// PadelClub
//
// Created by Razmig Sarkissian on 24/05/2024.
//
import Foundation
enum Alphabet {
static let alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
static func letterForIndex(index: Int) -> String? {
let uppercaseAlphabet = Array(alphabet)
if let letter = uppercaseAlphabet[safe: index] {
return String(letter)
} else {
return nil
}
}
}

@ -28,6 +28,18 @@ struct ClubCourtSetupView: View {
}
}
}
// Toggle(isOn: $club.alphabeticalName) {
// Text("Nommer les terrains alphabétiquement")
// }
// .disabled(displayContext == .lockedForEditing)
// .onChange(of: club.alphabeticalName) {
// do {
// try dataStore.clubs.addOrUpdate(instance: club)
// } catch {
// Logger.error(error)
// }
// }
} footer: {
if displayContext == .lockedForEditing {
Text("Édition impossible, vous n'êtes pas le créateur de ce club.").foregroundStyle(.logoRed)

@ -13,24 +13,13 @@ struct GroupStageSettingsView: View {
@Environment(Tournament.self) var tournament: Tournament
@State private var nameAlphabetical: Bool = false
@State private var generationDone: Bool = false
let alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
private func _letterForIndex(index: Int) -> String? {
let uppercaseAlphabet = Array(alphabet)
if let letter = uppercaseAlphabet[safe: index] {
return String(letter)
} else {
return nil
}
}
var body: some View {
List {
if tournament.shouldVerifyGroupStage {
Section {
RowButtonView("Valider les poules", role: .destructive) {
RowButtonView("Valider les poules en l'état", role: .destructive) {
tournament.shouldVerifyGroupStage = false
do {
try dataStore.tournaments.addOrUpdate(instance: tournament)
@ -39,7 +28,7 @@ struct GroupStageSettingsView: View {
}
}
} footer: {
Text("Suite à changement dans votre liste d'inscrits, veuillez vérifier l'intégrité de vos poules et valider que tout est ok.")
Text("Suite à un changement dans votre liste d'inscrits, veuillez vérifier l'intégrité de vos poules et valider que tout est ok.")
}
}
@ -54,31 +43,23 @@ struct GroupStageSettingsView: View {
if tournament.unsortedTeams().filter({ $0.groupStagePosition != nil }).isEmpty == false {
Section {
menuBuildAllGroupStages
} footer: {
Text("efface et recréé les poules, les horaires et les résultats existants seront perdus")
}
}
Section {
menuGenerateGroupStage(.random)
} footer: {
Text("Redistribue les équipes par tirage au sort par chapeau")
}
Section {
menuGenerateGroupStage(.snake)
} footer: {
Text("Redistribue les équipes par la méthode du serpentin")
}
if tournament.missingQualifiedFromGroupStages().isEmpty == false && tournament.qualifiedTeams().count >= tournament.qualifiedFromGroupStage() && tournament.groupStageAdditionalQualified > 0 {
NavigationLink {
//DrawView(tournament: tournament)
} label: {
LabeledContent {
Text(tournament.moreQualifiedToDraw().formatted() + "/" + tournament.groupStageAdditionalQualified.formatted())
} label: {
Text("Qualifié\(tournament.groupStageAdditionalQualified.pluralSuffix) supplémentaire\(tournament.groupStageAdditionalQualified.pluralSuffix)")
let message = [tournament.groupStageAdditionalQualified.formatted(), " meilleur", tournament.groupStageAdditionalQualified.pluralSuffix, " ", (tournament.qualifiedPerGroupStage + 1).ordinalFormatted()].joined()
Text(message)
}
}
}
Toggle(isOn: $nameAlphabetical) {
Text("Nommer les poules alphabétiquement")
}
@ -94,7 +75,7 @@ struct GroupStageSettingsView: View {
let groupStages = tournament.groupStages()
if nameAlphabetical {
groupStages.forEach { groupStage in
groupStage.name = _letterForIndex(index: groupStage.index)
groupStage.name = Alphabet.letterForIndex(index: groupStage.index)
}
} else {
groupStages.forEach { groupStage in

@ -17,6 +17,21 @@ struct ToolboxView: View {
NavigationStack(path: $navigation.toolboxPath) {
List {
#if DEBUG
// Section {
// RowButtonView("Reset ALL API Calls") {
// dataStore.courts.resetApiCalls()
// dataStore.matches.resetApiCalls()
// dataStore.tournaments.resetApiCalls()
// dataStore.teamRegistrations.resetApiCalls()
// dataStore.playerRegistrations.resetApiCalls()
// dataStore.teamScores.resetApiCalls()
// dataStore.rounds.resetApiCalls()
// dataStore.groupStages.resetApiCalls()
// dataStore.clubs.resetApiCalls()
// dataStore.events.resetApiCalls()
// dataStore.dateIntervals.resetApiCalls()
// }
// }
Section {
RowButtonView("Fix Names") {
let playerRegistrations = dataStore.playerRegistrations

@ -17,7 +17,7 @@ struct RoundSettingsView: View {
List {
if tournament.shouldVerifyBracket {
Section {
RowButtonView("Valider le tableau", role: .destructive) {
RowButtonView("Valider l'état du tableau", role: .destructive) {
tournament.shouldVerifyBracket = false
do {
try dataStore.tournaments.addOrUpdate(instance: tournament)
@ -26,7 +26,7 @@ struct RoundSettingsView: View {
}
}
} footer: {
Text("Suite à changement dans votre liste d'inscrits, veuillez vérifier l'intégrité de votre tableau et valider que tout est ok.")
Text("Suite à un changement dans votre liste d'inscrits, veuillez vérifier l'intégrité de votre tableau et valider que tout est ok.")
}
}

@ -159,7 +159,9 @@ struct FileImportView: View {
Text("Équipe\(_filteredTeams.count.pluralSuffix) \(tournament.tournamentCategory.importingRawValue) détectée\(_filteredTeams.count.pluralSuffix)")
}
} footer: {
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)
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)
}
}
ForEach(_filteredTeams) { team in

Loading…
Cancel
Save