piste au lieu de terrains

newoffer2025
Raz 6 months ago
parent afa8b4bdf7
commit 2b3f102ac3
  1. 4
      PadelClub/Views/Club/CourtView.swift
  2. 4
      PadelClub/Views/Club/Shared/ClubCourtSetupView.swift
  3. 2
      PadelClub/Views/GroupStage/Components/GroupStageSettingsView.swift
  4. 8
      PadelClub/Views/Match/MatchDetailView.swift
  5. 6
      PadelClub/Views/Navigation/Ongoing/OngoingDestination.swift
  6. 2
      PadelClub/Views/Navigation/Ongoing/OngoingView.swift
  7. 2
      PadelClub/Views/Planning/Components/MultiCourtPickerView.swift
  8. 6
      PadelClub/Views/Planning/CourtAvailabilitySettingsView.swift
  9. 8
      PadelClub/Views/Planning/PlanningByCourtView.swift
  10. 20
      PadelClub/Views/Planning/PlanningSettingsView.swift
  11. 4
      PadelClub/Views/Planning/PlanningView.swift
  12. 4
      PadelClub/Views/Score/FollowUpMatchView.swift
  13. 10
      PadelClub/Views/Tournament/Screen/Components/TournamentClubSettingsView.swift
  14. 2
      PadelClub/Views/Tournament/Screen/TournamentSettingsView.swift
  15. 2
      PadelClub/Views/Tournament/TournamentInitView.swift

@ -44,7 +44,7 @@ struct CourtView: View {
}
}
} label: {
Text("Nom du terrain")
Text("Nom de la piste")
}
} footer: {
if court.name?.isEmpty == false {
@ -65,7 +65,7 @@ struct CourtView: View {
Text("Sortie autorisée")
}
Toggle(isOn: $court.indoor) {
Text("Terrain intérieur")
Text("Piste intérieur")
}
}
}

@ -19,7 +19,7 @@ struct ClubCourtSetupView: View {
@ViewBuilder
var body: some View {
Section {
TournamentFieldsManagerView(localizedStringKey: "Terrains du club", count: $club.courtCount)
TournamentFieldsManagerView(localizedStringKey: "Pistes du club", count: $club.courtCount)
.disabled(displayContext == .lockedForEditing)
.onChange(of: club.courtCount) {
if displayContext != .addition {
@ -53,7 +53,7 @@ struct ClubCourtSetupView: View {
_courtView(atIndex: courtIndex, tournamentClub: club)
}
} header: {
Text("Nom des terrains")
Text("Nom des pistes")
} footer: {
if displayContext == .lockedForEditing && hideLockForEditingMessage == false {
Text("Édition impossible, vous n'êtes pas le créateur de ce club.").foregroundStyle(.logoRed)

@ -64,7 +64,7 @@ struct GroupStageSettingsView: View {
}
Section {
CourtPicker(title: "Terrain dédié", selection: $courtIndex, maxCourt: tournament.courtCount)
CourtPicker(title: "Piste dédié", selection: $courtIndex, maxCourt: tournament.courtCount)
RowButtonView("Confirmer", role: .destructive) {
groupStage._matches().forEach { match in
match.setCourt(courtIndex)

@ -325,7 +325,7 @@ struct MatchDetailView: View {
match.removeCourt()
save()
} label: {
Text("Supprimer le terrain")
Text("Supprimer la piste")
}
}
Button(role: .destructive) {
@ -405,7 +405,7 @@ struct MatchDetailView: View {
}
} label: {
VStack(alignment: .leading) {
Text("terrain").font(.footnote).foregroundStyle(.secondary)
Text("piste").font(.footnote).foregroundStyle(.secondary)
if let courtName = match.courtName() {
Text(courtName)
.foregroundStyle(Color.master)
@ -472,7 +472,7 @@ struct MatchDetailView: View {
DisclosureGroup(isExpanded: $isEditing) {
startingOptionView
} label: {
Text("Modifier l'horaire et le terrain")
Text("Modifier l'horaire et la piste")
}
}
@ -536,7 +536,7 @@ struct MatchDetailView: View {
}
}
} label: {
Text("Terrain")
Text("Piste")
}
.onChange(of: fieldSetup) {
if let courtIndex = fieldSetup.courtIndex {

@ -58,9 +58,9 @@ enum OngoingDestination: Int, CaseIterable, Identifiable, Selectable, Equatable
case .followUp:
ContentUnavailableView("Aucun match à suivre", systemImage: "figure.tennis", description: Text("Tous vos matchs planifiés et confirmés, seront visibles ici, quelque soit le tournoi."))
case .court:
ContentUnavailableView("Aucun match en cours", systemImage: "sportscourt", description: Text("Tous vos terrains correspondant aux matchs en cours seront visibles ici, quelque soit le tournoi."))
ContentUnavailableView("Aucun match en cours", systemImage: "sportscourt", description: Text("Toutes vos pistes correspondant aux matchs en cours seront visibles ici, quelque soit le tournoi."))
case .free:
ContentUnavailableView("Aucun terrain libre", systemImage: "sportscourt", description: Text("Les terrains libres seront visibles ici, quelque soit le tournoi."))
ContentUnavailableView("Aucune piste libre", systemImage: "sportscourt", description: Text("Les pistes libres seront visibles ici, quelque soit le tournoi."))
case .over:
ContentUnavailableView("Aucun match terminé", systemImage: "clock.badge.xmark", description: Text("Les matchs terminés seront visibles ici, quelque soit le tournoi."))
}
@ -73,7 +73,7 @@ enum OngoingDestination: Int, CaseIterable, Identifiable, Selectable, Equatable
case .followUp:
return "À suivre"
case .court:
return "Terrains"
return "Pistes"
case .free:
return "Libres"
case .over:

@ -89,7 +89,7 @@ struct OngoingCourtView: View {
List {
ForEach(filterMode.sortedCourtIndex, id: \.self) { index in
let courtFilteredMatches = filteredMatches.filter({ $0.courtIndex == index })
let title : String = (index == nil ? "Aucun terrain défini" : "Terrain #\(index! + 1)")
let title : String = (index == nil ? "Aucune piste définie" : "Piste #\(index! + 1)")
if (filterMode == .free && courtFilteredMatches.isEmpty) || (filterMode == .court && courtFilteredMatches.isEmpty == false) {
Section {
MatchListView(section: "En cours", matches: courtFilteredMatches, hideWhenEmpty: true, isExpanded: false)

@ -32,7 +32,7 @@ struct MultiCourtPickerView: View {
}
}
}
.navigationTitle("Terrains disponibles")
.navigationTitle("Pistes disponibles")
.toolbarBackground(.visible, for: .navigationBar)
.environment(\.editMode, Binding.constant(EditMode.active))
}

@ -99,9 +99,9 @@ struct CourtAvailabilitySettingsView: View {
.overlay {
if courtsUnavailability.isEmpty {
ContentUnavailableView {
Label("Tous les terrains sont disponibles", systemImage: "checkmark.circle.fill").tint(.green)
Label("Tous les pistes sont disponibles", systemImage: "checkmark.circle.fill").tint(.green)
} description: {
Text("Vous pouvez précisez l'indisponibilité d'une ou plusieurs terrains, que ce soit pour une journée entière ou un créneau précis.")
Text("Vous pouvez précisez l'indisponibilité d'une ou plusieurs pistes, que ce soit pour une journée entière ou un créneau précis.")
} actions: {
RowButtonView("Ajouter une indisponibilité", systemImage: "plus.circle.fill") {
showingPopover = true
@ -175,7 +175,7 @@ struct CourtAvailabilityEditorView: View {
NavigationStack {
Form {
Section {
CourtPicker(title: "Terrain", selection: $courtIndex, maxCourt: tournament.courtCount)
CourtPicker(title: "Piste", selection: $courtIndex, maxCourt: tournament.courtCount)
}
Section {

@ -91,13 +91,13 @@ struct PlanningByCourtView: View {
Picker(selection: $selectedCourt) {
ForEach(courts, id: \.self) { courtIndex in
if courtIndex == Int.max {
Label("Sans terrain", systemImage: "rectangle.slash").tag(Int.max)
Label("Sans piste", systemImage: "rectangle.slash").tag(Int.max)
} else {
Text(tournament.courtName(atIndex: courtIndex)).tag(courtIndex)
}
}
} label: {
Text("Terrain")
Text("Piste")
}
.pickerStyle(.automatic)
}
@ -135,7 +135,7 @@ struct PlanningByCourtView: View {
ContentUnavailableView {
Label("Aucun match planifié", systemImage: "clock.badge.questionmark")
} description: {
Text("Aucun match n'a été planifié sur ce terrain et au jour sélectionné")
Text("Aucun match n'a été planifié sur cette piste et au jour sélectionné")
} actions: {
}
}
@ -143,7 +143,7 @@ struct PlanningByCourtView: View {
ContentUnavailableView {
Label("Aucun match planifié", systemImage: "clock.badge.questionmark")
} description: {
Text("Aucun match n'a été planifié sur ce terrain et au jour sélectionné")
Text("Aucun match n'a été planifié sur cette piste et au jour sélectionné")
} actions: {
}
}

@ -63,7 +63,7 @@ struct PlanningSettingsView: View {
Text("\(tournament.dayDuration) jour" + tournament.dayDuration.pluralSuffix)
}
TournamentFieldsManagerView(localizedStringKey: "Terrains maximum", count: $tournament.courtCount)
TournamentFieldsManagerView(localizedStringKey: "Pistes maximum", count: $tournament.courtCount)
if let event = tournament.eventObject() {
NavigationLink {
@ -85,7 +85,7 @@ struct PlanningSettingsView: View {
LabeledContent {
Text(matchScheduler.courtsAvailable.count.formatted() + "/" + tournament.courtCount.formatted())
} label: {
Text("Sélection des terrains")
Text("Sélection des pistes")
if matchScheduler.courtsAvailable.count > tournament.courtCount {
Text("Attention !")
.tint(.red)
@ -97,7 +97,7 @@ struct PlanningSettingsView: View {
if tournament.courtCount < club.courtCount {
let plural = tournament.courtCount.pluralSuffix
let verb = tournament.courtCount > 1 ? "seront" : "sera"
Text("En réduisant les terrains maximum, seul\(plural) le\(plural) \(tournament.courtCount) premier\(plural) terrain\(plural) \(verb) utilisé\(plural)") + Text(", par contre, si vous gardez le nombre de terrains du club, vous pourrez plutôt préciser quel terrain n'est pas disponible.")
Text("En réduisant les pistes maximum, seule\(plural) le\(plural) \(tournament.courtCount) première\(plural) piste\(plural) \(verb) utilisée\(plural)") + Text(", par contre, si vous gardez le nombre de pistes du club, vous pourrez plutôt préciser quelle piste n'est pas disponible.")
} else if tournament.courtCount > club.courtCount {
let isCreatedByUser = club.hasBeenCreated(by: StoreCenter.main.userId)
Button {
@ -109,10 +109,10 @@ struct PlanningSettingsView: View {
}
} label: {
if isCreatedByUser {
Text("Vous avez indiqué plus de terrains dans ce tournoi que dans le club. ")
Text("Vous avez indiqué plus de pistes dans ce tournoi que dans le club. ")
+ Text("Mettre à jour le club ?").underline().foregroundStyle(.master)
} else {
Label("Vous avez indiqué plus de terrains dans ce tournoi que dans le club.", systemImage: "exclamationmark.triangle.fill").foregroundStyle(.logoRed)
Label("Vous avez indiqué plus de pistes dans ce tournoi que dans le club.", systemImage: "exclamationmark.triangle.fill").foregroundStyle(.logoRed)
}
}
.buttonStyle(.plain)
@ -122,7 +122,7 @@ struct PlanningSettingsView: View {
}
if issueFound {
Text("Padel Club n'a pas réussi à définir un horaire pour tous les matchs de ce tournoi, à cause de la programmation d'autres tournois ou de l'indisponibilité des terrains.")
Text("Padel Club n'a pas réussi à définir un horaire pour tous les matchs de ce tournoi, à cause de la programmation d'autres tournois ou de l'indisponibilité des pistes.")
.foregroundStyle(.logoRed)
}
@ -141,7 +141,7 @@ struct PlanningSettingsView: View {
}
} footer: {
if let event, event.tournaments.count > 1 {
Text("Cette option fait en sorte qu'un terrain pris par un match d'un autre tournoi de cet événement soit toujours considéré comme libre.")
Text("Cette option fait en sorte qu'une piste prise par un match d'un autre tournoi de cet événement soit toujours considéré comme libre.")
}
}
@ -421,13 +421,13 @@ struct PlanningSettingsView: View {
Section {
Toggle(isOn: $matchScheduler.randomizeCourts) {
Text("Distribuer les terrains au hasard")
Text("Distribuer les pistes au hasard")
}
}
Section {
Toggle(isOn: $matchScheduler.shouldTryToFillUpCourtsAvailable) {
Text("Remplir au maximum les terrains d'une rotation")
Text("Remplir au maximum les pistes d'une rotation")
}
} footer: {
Text("Tout en tenant compte de l'option ci-dessous, Padel Club essaiera de remplir les créneaux à chaque rotation.")
@ -438,7 +438,7 @@ struct PlanningSettingsView: View {
Text("Équilibrer les matchs d'une manche")
}
} footer: {
Text("Cette option permet de programmer une manche sur plusieurs rotation de manière équilibrée dans le cas où il y a plus de matchs à jouer dans cette manche que de terrains.")
Text("Cette option permet de programmer une manche sur plusieurs rotation de manière équilibrée dans le cas où il y a plus de matchs à jouer dans cette manche que de pistes.")
}
Section {

@ -651,7 +651,7 @@ struct PlanningView: View {
_save()
}
} label: {
Text("Terrains")
Text("Pistes")
.underline(underlined)
}
@ -812,7 +812,7 @@ enum PlanningFilterOption: Int, CaseIterable, Identifiable {
func localizedPlanningLabel() -> String {
switch self {
case .byCourt:
return "Par terrain"
return "Par piste"
case .byDefault:
return "Par ordre des matchs"
}

@ -69,7 +69,7 @@ struct FollowUpMatchView: View {
case .index:
return "Ordre prévu"
case .court:
return "Terrain"
return "Piste"
case .restingTime:
return "Temps de repos"
case .winner:
@ -285,7 +285,7 @@ struct FollowUpMatchView: View {
}
}
} label: {
Text("Sur le terrain")
Text("Sur la piste")
}
.labelsHidden()
.underline()

@ -22,7 +22,7 @@ struct TournamentClubSettingsView: View {
let selectedClub = event?.clubObject()
Section {
TournamentFieldsManagerView(localizedStringKey: "Terrains pour le tournoi", count: $tournament.courtCount)
TournamentFieldsManagerView(localizedStringKey: "Pistes pour le tournoi", count: $tournament.courtCount)
.onChange(of: tournament.courtCount) {
do {
try dataStore.tournaments.addOrUpdate(instance: tournament)
@ -36,7 +36,7 @@ struct TournamentClubSettingsView: View {
CourtAvailabilitySettingsView(event: event)
.environment(tournament)
} label: {
Text("Indisponibilités des terrains")
Text("Indisponibilités des pistes")
}
}
} footer: {
@ -44,7 +44,7 @@ struct TournamentClubSettingsView: View {
if tournament.courtCount < club.courtCount {
let plural = tournament.courtCount.pluralSuffix
let verb = tournament.courtCount > 1 ? "seront" : "sera"
Text("En réduisant les terrains maximum, seul\(plural) le\(plural) \(tournament.courtCount) premier\(plural) terrain\(plural) \(verb) utilisé\(plural)") + Text(", par contre, si vous gardez le nombre de terrains du club, vous pourrez plutôt préciser quel terrain n'est pas disponible.")
Text("En réduisant les pistes maximum, seule\(plural) le\(plural) \(tournament.courtCount) première\(plural) piste\(plural) \(verb) utilisée\(plural)") + Text(", par contre, si vous gardez le nombre de pistes du club, vous pourrez plutôt préciser quelle piste n'est pas disponible.")
} else if tournament.courtCount > club.courtCount {
let isCreatedByUser = club.hasBeenCreated(by: StoreCenter.main.userId)
Button {
@ -56,10 +56,10 @@ struct TournamentClubSettingsView: View {
}
} label: {
if isCreatedByUser {
Text("Vous avez indiqué plus de terrains dans ce tournoi que dans le club.")
Text("Vous avez indiqué plus de pistes dans ce tournoi que dans le club.")
+ Text("Mettre à jour le club ?").underline().foregroundStyle(.master)
} else {
Label("Vous avez indiqué plus de terrains dans ce tournoi que dans le club.", systemImage: "exclamationmark.triangle.fill").foregroundStyle(.logoRed)
Label("Vous avez indiqué plus de pistes dans ce tournoi que dans le club.", systemImage: "exclamationmark.triangle.fill").foregroundStyle(.logoRed)
}
}
.buttonStyle(.plain)

@ -30,7 +30,7 @@ enum TournamentSettings: Identifiable, Selectable, Equatable {
case .general:
return "Général"
case .club:
return "Terrains"
return "Pistes"
case .tournamentType:
return "Type"
}

@ -78,7 +78,7 @@ struct TournamentInitView: View {
Text(tournament.localizedTournamentType())
} label: {
Text("Réglages du tournoi")
Text("Formats, terrains, prix et plus")
Text("Formats, pistes, prix et plus")
}
}

Loading…
Cancel
Save