|
|
|
|
@ -489,103 +489,7 @@ struct MySearchView: View { |
|
|
|
|
} else { |
|
|
|
|
Section { |
|
|
|
|
ForEach(players, id: \.self) { player in |
|
|
|
|
let index : Int? = nil |
|
|
|
|
|
|
|
|
|
VStack(alignment: .leading) { |
|
|
|
|
HStack { |
|
|
|
|
if player.isAnonymous() { |
|
|
|
|
Text("Joueur Anonyme") |
|
|
|
|
} else { |
|
|
|
|
Text(player.getLastName().capitalized) |
|
|
|
|
Text(player.getFirstName().capitalized) |
|
|
|
|
} |
|
|
|
|
if index == nil { |
|
|
|
|
Text(player.male ? "♂︎" : "♀︎") |
|
|
|
|
} |
|
|
|
|
Spacer() |
|
|
|
|
if let index { |
|
|
|
|
HStack(alignment: .top, spacing: 0) { |
|
|
|
|
Text(index.formatted()) |
|
|
|
|
.foregroundStyle(.secondary) |
|
|
|
|
.font(.title3) |
|
|
|
|
Text(index.ordinalFormattedSuffix()) |
|
|
|
|
.foregroundStyle(.secondary) |
|
|
|
|
.font(.caption) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
.font(.title3) |
|
|
|
|
.lineLimit(1) |
|
|
|
|
HStack { |
|
|
|
|
HStack(alignment: .top, spacing: 0) { |
|
|
|
|
Text(player.formattedRank()).italic(player.isAssimilated) |
|
|
|
|
.font(.title3) |
|
|
|
|
.background { |
|
|
|
|
if player.isNotFromCurrentDate() { |
|
|
|
|
UnderlineView() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if let rank = player.getRank() { |
|
|
|
|
Text(rank.ordinalFormattedSuffix()).italic(player.isAssimilated) |
|
|
|
|
.font(.caption) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if showProgression, player.getProgression() != 0 { |
|
|
|
|
HStack(alignment: .top, spacing: 2) { |
|
|
|
|
Text("(") |
|
|
|
|
Text(player.getProgression().formatted(.number.sign(strategy: .always()))) |
|
|
|
|
.foregroundStyle(player.getProgressionColor(progression: player.getProgression())) |
|
|
|
|
Text(")") |
|
|
|
|
}.font(.title3) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if let pts = player.getPoints(), pts > 0 { |
|
|
|
|
HStack(alignment: .lastTextBaseline, spacing: 0) { |
|
|
|
|
Text(pts.formatted()).font(.title3) |
|
|
|
|
Text(" pts").font(.caption) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if let tournamentPlayed = player.tournamentPlayed, tournamentPlayed > 0 { |
|
|
|
|
HStack(alignment: .lastTextBaseline, spacing: 0) { |
|
|
|
|
Text(tournamentPlayed.formatted()).font(.title3) |
|
|
|
|
Text(" tournoi" + tournamentPlayed.pluralSuffix).font(.caption) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
.lineLimit(1) |
|
|
|
|
.truncationMode(.tail) |
|
|
|
|
|
|
|
|
|
if showFemaleInMaleAssimilation, let assimilatedAsMaleRank = player.getAssimilatedAsMaleRank() { |
|
|
|
|
HStack(alignment: .top, spacing: 2) { |
|
|
|
|
Text("(") |
|
|
|
|
Text(assimilatedAsMaleRank.formatted()) |
|
|
|
|
VStack(alignment: .leading, spacing: 0) { |
|
|
|
|
Text("équivalence") |
|
|
|
|
Text("messieurs") |
|
|
|
|
} |
|
|
|
|
.font(.caption) |
|
|
|
|
Text(")").font(.title3) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
HStack { |
|
|
|
|
Text(player.formattedLicense()) |
|
|
|
|
if let computedAge = player.computedAge { |
|
|
|
|
Text(computedAge.formatted() + " ans") |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
.font(.caption) |
|
|
|
|
if let clubName = player.clubName { |
|
|
|
|
Text(clubName) |
|
|
|
|
.font(.caption) |
|
|
|
|
} |
|
|
|
|
if let ligueName = player.ligueName { |
|
|
|
|
Text(ligueName) |
|
|
|
|
.font(.caption) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
ImportedPlayerView(player: player, index: nil, showFemaleInMaleAssimilation: searchViewModel.showFemaleInMaleAssimilation, showProgression: true) |
|
|
|
|
} |
|
|
|
|
} header: { |
|
|
|
|
if players.isEmpty == false { |
|
|
|
|
@ -601,106 +505,10 @@ struct MySearchView: View { |
|
|
|
|
if searchViewModel.allowSingleSelection { |
|
|
|
|
Section { |
|
|
|
|
ForEach(players) { player in |
|
|
|
|
let index : Int? = nil |
|
|
|
|
|
|
|
|
|
Button { |
|
|
|
|
searchViewModel.selectedPlayers.insert(player) |
|
|
|
|
} label: { |
|
|
|
|
VStack(alignment: .leading) { |
|
|
|
|
HStack { |
|
|
|
|
if player.isAnonymous() { |
|
|
|
|
Text("Joueur Anonyme") |
|
|
|
|
} else { |
|
|
|
|
Text(player.getLastName().capitalized) |
|
|
|
|
Text(player.getFirstName().capitalized) |
|
|
|
|
} |
|
|
|
|
if index == nil { |
|
|
|
|
Text(player.male ? "♂︎" : "♀︎") |
|
|
|
|
} |
|
|
|
|
Spacer() |
|
|
|
|
if let index { |
|
|
|
|
HStack(alignment: .top, spacing: 0) { |
|
|
|
|
Text(index.formatted()) |
|
|
|
|
.foregroundStyle(.secondary) |
|
|
|
|
.font(.title3) |
|
|
|
|
Text(index.ordinalFormattedSuffix()) |
|
|
|
|
.foregroundStyle(.secondary) |
|
|
|
|
.font(.caption) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
.font(.title3) |
|
|
|
|
.lineLimit(1) |
|
|
|
|
HStack { |
|
|
|
|
HStack(alignment: .top, spacing: 0) { |
|
|
|
|
Text(player.formattedRank()).italic(player.isAssimilated) |
|
|
|
|
.font(.title3) |
|
|
|
|
.background { |
|
|
|
|
if player.isNotFromCurrentDate() { |
|
|
|
|
UnderlineView() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if let rank = player.getRank() { |
|
|
|
|
Text(rank.ordinalFormattedSuffix()).italic(player.isAssimilated) |
|
|
|
|
.font(.caption) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if showProgression, player.getProgression() != 0 { |
|
|
|
|
HStack(alignment: .top, spacing: 2) { |
|
|
|
|
Text("(") |
|
|
|
|
Text(player.getProgression().formatted(.number.sign(strategy: .always()))) |
|
|
|
|
.foregroundStyle(player.getProgressionColor(progression: player.getProgression())) |
|
|
|
|
Text(")") |
|
|
|
|
}.font(.title3) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if let pts = player.getPoints(), pts > 0 { |
|
|
|
|
HStack(alignment: .lastTextBaseline, spacing: 0) { |
|
|
|
|
Text(pts.formatted()).font(.title3) |
|
|
|
|
Text(" pts").font(.caption) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if let tournamentPlayed = player.tournamentPlayed, tournamentPlayed > 0 { |
|
|
|
|
HStack(alignment: .lastTextBaseline, spacing: 0) { |
|
|
|
|
Text(tournamentPlayed.formatted()).font(.title3) |
|
|
|
|
Text(" tournoi" + tournamentPlayed.pluralSuffix).font(.caption) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
.lineLimit(1) |
|
|
|
|
.truncationMode(.tail) |
|
|
|
|
|
|
|
|
|
if showFemaleInMaleAssimilation, let assimilatedAsMaleRank = player.getAssimilatedAsMaleRank() { |
|
|
|
|
HStack(alignment: .top, spacing: 2) { |
|
|
|
|
Text("(") |
|
|
|
|
Text(assimilatedAsMaleRank.formatted()) |
|
|
|
|
VStack(alignment: .leading, spacing: 0) { |
|
|
|
|
Text("équivalence") |
|
|
|
|
Text("messieurs") |
|
|
|
|
} |
|
|
|
|
.font(.caption) |
|
|
|
|
Text(")").font(.title3) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
HStack { |
|
|
|
|
Text(player.formattedLicense()) |
|
|
|
|
if let computedAge = player.computedAge { |
|
|
|
|
Text(computedAge.formatted() + " ans") |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
.font(.caption) |
|
|
|
|
if let clubName = player.clubName { |
|
|
|
|
Text(clubName) |
|
|
|
|
.font(.caption) |
|
|
|
|
} |
|
|
|
|
if let ligueName = player.ligueName { |
|
|
|
|
Text(ligueName) |
|
|
|
|
.font(.caption) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
ImportedPlayerView(player: player, showFemaleInMaleAssimilation: searchViewModel.showFemaleInMaleAssimilation, showProgression: true) |
|
|
|
|
} |
|
|
|
|
.buttonStyle(.plain) |
|
|
|
|
} |
|
|
|
|
@ -712,105 +520,9 @@ struct MySearchView: View { |
|
|
|
|
.id(UUID()) |
|
|
|
|
} else { |
|
|
|
|
Section { |
|
|
|
|
ForEach(players.indices, id: \.self) { playerIndex in |
|
|
|
|
let player = players[playerIndex] |
|
|
|
|
let index: Int? = searchViewModel.showIndex() ? (playerIndex + 1) : nil |
|
|
|
|
|
|
|
|
|
VStack(alignment: .leading) { |
|
|
|
|
HStack { |
|
|
|
|
if player.isAnonymous() { |
|
|
|
|
Text("Joueur Anonyme") |
|
|
|
|
} else { |
|
|
|
|
Text(player.getLastName().capitalized) |
|
|
|
|
Text(player.getFirstName().capitalized) |
|
|
|
|
} |
|
|
|
|
if index == nil { |
|
|
|
|
Text(player.male ? "♂︎" : "♀︎") |
|
|
|
|
} |
|
|
|
|
Spacer() |
|
|
|
|
if let index { |
|
|
|
|
HStack(alignment: .top, spacing: 0) { |
|
|
|
|
Text(index.formatted()) |
|
|
|
|
.foregroundStyle(.secondary) |
|
|
|
|
.font(.title3) |
|
|
|
|
Text(index.ordinalFormattedSuffix()) |
|
|
|
|
.foregroundStyle(.secondary) |
|
|
|
|
.font(.caption) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
.font(.title3) |
|
|
|
|
.lineLimit(1) |
|
|
|
|
HStack { |
|
|
|
|
HStack(alignment: .top, spacing: 0) { |
|
|
|
|
Text(player.formattedRank()).italic(player.isAssimilated) |
|
|
|
|
.font(.title3) |
|
|
|
|
.background { |
|
|
|
|
if player.isNotFromCurrentDate() { |
|
|
|
|
UnderlineView() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if let rank = player.getRank() { |
|
|
|
|
Text(rank.ordinalFormattedSuffix()).italic(player.isAssimilated) |
|
|
|
|
.font(.caption) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if showProgression, player.getProgression() != 0 { |
|
|
|
|
HStack(alignment: .top, spacing: 2) { |
|
|
|
|
Text("(") |
|
|
|
|
Text(player.getProgression().formatted(.number.sign(strategy: .always()))) |
|
|
|
|
.foregroundStyle(player.getProgressionColor(progression: player.getProgression())) |
|
|
|
|
Text(")") |
|
|
|
|
}.font(.title3) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if let pts = player.getPoints(), pts > 0 { |
|
|
|
|
HStack(alignment: .lastTextBaseline, spacing: 0) { |
|
|
|
|
Text(pts.formatted()).font(.title3) |
|
|
|
|
Text(" pts").font(.caption) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if let tournamentPlayed = player.tournamentPlayed, tournamentPlayed > 0 { |
|
|
|
|
HStack(alignment: .lastTextBaseline, spacing: 0) { |
|
|
|
|
Text(tournamentPlayed.formatted()).font(.title3) |
|
|
|
|
Text(" tournoi" + tournamentPlayed.pluralSuffix).font(.caption) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
.lineLimit(1) |
|
|
|
|
.truncationMode(.tail) |
|
|
|
|
|
|
|
|
|
if showFemaleInMaleAssimilation, let assimilatedAsMaleRank = player.getAssimilatedAsMaleRank() { |
|
|
|
|
HStack(alignment: .top, spacing: 2) { |
|
|
|
|
Text("(") |
|
|
|
|
Text(assimilatedAsMaleRank.formatted()) |
|
|
|
|
VStack(alignment: .leading, spacing: 0) { |
|
|
|
|
Text("équivalence") |
|
|
|
|
Text("messieurs") |
|
|
|
|
} |
|
|
|
|
.font(.caption) |
|
|
|
|
Text(")").font(.title3) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
HStack { |
|
|
|
|
Text(player.formattedLicense()) |
|
|
|
|
if let computedAge = player.computedAge { |
|
|
|
|
Text(computedAge.formatted() + " ans") |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
.font(.caption) |
|
|
|
|
if let clubName = player.clubName { |
|
|
|
|
Text(clubName) |
|
|
|
|
.font(.caption) |
|
|
|
|
} |
|
|
|
|
if let ligueName = player.ligueName { |
|
|
|
|
Text(ligueName) |
|
|
|
|
.font(.caption) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
ForEach(players.indices, id: \.self) { index in |
|
|
|
|
let player = players[index] |
|
|
|
|
ImportedPlayerView(player: player, index: searchViewModel.showIndex() ? (index + 1) : nil, showFemaleInMaleAssimilation: searchViewModel.showFemaleInMaleAssimilation, showProgression: true) |
|
|
|
|
} |
|
|
|
|
} header: { |
|
|
|
|
if players.isEmpty == false { |
|
|
|
|
@ -821,207 +533,19 @@ struct MySearchView: View { |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
Section { |
|
|
|
|
ForEach(players.indices, id: \.self) { playerIndex in |
|
|
|
|
let player = players[playerIndex] |
|
|
|
|
let index: Int? = searchViewModel.showIndex() ? (playerIndex + 1) : nil |
|
|
|
|
ForEach(players.indices, id: \.self) { index in |
|
|
|
|
let player = players[index] |
|
|
|
|
if searchViewModel.allowSingleSelection { |
|
|
|
|
Button { |
|
|
|
|
searchViewModel.selectedPlayers.insert(player) |
|
|
|
|
} label: { |
|
|
|
|
VStack(alignment: .leading) { |
|
|
|
|
HStack { |
|
|
|
|
if player.isAnonymous() { |
|
|
|
|
Text("Joueur Anonyme") |
|
|
|
|
} else { |
|
|
|
|
Text(player.getLastName().capitalized) |
|
|
|
|
Text(player.getFirstName().capitalized) |
|
|
|
|
} |
|
|
|
|
if index == nil { |
|
|
|
|
Text(player.male ? "♂︎" : "♀︎") |
|
|
|
|
} |
|
|
|
|
Spacer() |
|
|
|
|
if let index { |
|
|
|
|
HStack(alignment: .top, spacing: 0) { |
|
|
|
|
Text(index.formatted()) |
|
|
|
|
.foregroundStyle(.secondary) |
|
|
|
|
.font(.title3) |
|
|
|
|
Text(index.ordinalFormattedSuffix()) |
|
|
|
|
.foregroundStyle(.secondary) |
|
|
|
|
.font(.caption) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
.font(.title3) |
|
|
|
|
.lineLimit(1) |
|
|
|
|
HStack { |
|
|
|
|
HStack(alignment: .top, spacing: 0) { |
|
|
|
|
Text(player.formattedRank()).italic(player.isAssimilated) |
|
|
|
|
.font(.title3) |
|
|
|
|
.background { |
|
|
|
|
if player.isNotFromCurrentDate() { |
|
|
|
|
UnderlineView() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if let rank = player.getRank() { |
|
|
|
|
Text(rank.ordinalFormattedSuffix()).italic(player.isAssimilated) |
|
|
|
|
.font(.caption) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if showProgression, player.getProgression() != 0 { |
|
|
|
|
HStack(alignment: .top, spacing: 2) { |
|
|
|
|
Text("(") |
|
|
|
|
Text(player.getProgression().formatted(.number.sign(strategy: .always()))) |
|
|
|
|
.foregroundStyle(player.getProgressionColor(progression: player.getProgression())) |
|
|
|
|
Text(")") |
|
|
|
|
}.font(.title3) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if let pts = player.getPoints(), pts > 0 { |
|
|
|
|
HStack(alignment: .lastTextBaseline, spacing: 0) { |
|
|
|
|
Text(pts.formatted()).font(.title3) |
|
|
|
|
Text(" pts").font(.caption) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if let tournamentPlayed = player.tournamentPlayed, tournamentPlayed > 0 { |
|
|
|
|
HStack(alignment: .lastTextBaseline, spacing: 0) { |
|
|
|
|
Text(tournamentPlayed.formatted()).font(.title3) |
|
|
|
|
Text(" tournoi" + tournamentPlayed.pluralSuffix).font(.caption) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
.lineLimit(1) |
|
|
|
|
.truncationMode(.tail) |
|
|
|
|
|
|
|
|
|
if showFemaleInMaleAssimilation, let assimilatedAsMaleRank = player.getAssimilatedAsMaleRank() { |
|
|
|
|
HStack(alignment: .top, spacing: 2) { |
|
|
|
|
Text("(") |
|
|
|
|
Text(assimilatedAsMaleRank.formatted()) |
|
|
|
|
VStack(alignment: .leading, spacing: 0) { |
|
|
|
|
Text("équivalence") |
|
|
|
|
Text("messieurs") |
|
|
|
|
} |
|
|
|
|
.font(.caption) |
|
|
|
|
Text(")").font(.title3) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
HStack { |
|
|
|
|
Text(player.formattedLicense()) |
|
|
|
|
if let computedAge = player.computedAge { |
|
|
|
|
Text(computedAge.formatted() + " ans") |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
.font(.caption) |
|
|
|
|
if let clubName = player.clubName { |
|
|
|
|
Text(clubName) |
|
|
|
|
.font(.caption) |
|
|
|
|
} |
|
|
|
|
if let ligueName = player.ligueName { |
|
|
|
|
Text(ligueName) |
|
|
|
|
.font(.caption) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
ImportedPlayerView(player: player, index: searchViewModel.showIndex() ? (index + 1) : nil, showFemaleInMaleAssimilation: searchViewModel.showFemaleInMaleAssimilation, showProgression: true) |
|
|
|
|
.contentShape(Rectangle()) |
|
|
|
|
} |
|
|
|
|
.frame(maxWidth: .infinity) |
|
|
|
|
.buttonStyle(.plain) |
|
|
|
|
} else { |
|
|
|
|
VStack(alignment: .leading) { |
|
|
|
|
HStack { |
|
|
|
|
if player.isAnonymous() { |
|
|
|
|
Text("Joueur Anonyme") |
|
|
|
|
} else { |
|
|
|
|
Text(player.getLastName().capitalized) |
|
|
|
|
Text(player.getFirstName().capitalized) |
|
|
|
|
} |
|
|
|
|
if index == nil { |
|
|
|
|
Text(player.male ? "♂︎" : "♀︎") |
|
|
|
|
} |
|
|
|
|
Spacer() |
|
|
|
|
if let index { |
|
|
|
|
HStack(alignment: .top, spacing: 0) { |
|
|
|
|
Text(index.formatted()) |
|
|
|
|
.foregroundStyle(.secondary) |
|
|
|
|
.font(.title3) |
|
|
|
|
Text(index.ordinalFormattedSuffix()) |
|
|
|
|
.foregroundStyle(.secondary) |
|
|
|
|
.font(.caption) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
.font(.title3) |
|
|
|
|
.lineLimit(1) |
|
|
|
|
HStack { |
|
|
|
|
HStack(alignment: .top, spacing: 0) { |
|
|
|
|
Text(player.formattedRank()).italic(player.isAssimilated) |
|
|
|
|
.font(.title3) |
|
|
|
|
.background { |
|
|
|
|
if player.isNotFromCurrentDate() { |
|
|
|
|
UnderlineView() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if let rank = player.getRank() { |
|
|
|
|
Text(rank.ordinalFormattedSuffix()).italic(player.isAssimilated) |
|
|
|
|
.font(.caption) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if showProgression, player.getProgression() != 0 { |
|
|
|
|
HStack(alignment: .top, spacing: 2) { |
|
|
|
|
Text("(") |
|
|
|
|
Text(player.getProgression().formatted(.number.sign(strategy: .always()))) |
|
|
|
|
.foregroundStyle(player.getProgressionColor(progression: player.getProgression())) |
|
|
|
|
Text(")") |
|
|
|
|
}.font(.title3) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if let pts = player.getPoints(), pts > 0 { |
|
|
|
|
HStack(alignment: .lastTextBaseline, spacing: 0) { |
|
|
|
|
Text(pts.formatted()).font(.title3) |
|
|
|
|
Text(" pts").font(.caption) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if let tournamentPlayed = player.tournamentPlayed, tournamentPlayed > 0 { |
|
|
|
|
HStack(alignment: .lastTextBaseline, spacing: 0) { |
|
|
|
|
Text(tournamentPlayed.formatted()).font(.title3) |
|
|
|
|
Text(" tournoi" + tournamentPlayed.pluralSuffix).font(.caption) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
.lineLimit(1) |
|
|
|
|
.truncationMode(.tail) |
|
|
|
|
|
|
|
|
|
if showFemaleInMaleAssimilation, let assimilatedAsMaleRank = player.getAssimilatedAsMaleRank() { |
|
|
|
|
HStack(alignment: .top, spacing: 2) { |
|
|
|
|
Text("(") |
|
|
|
|
Text(assimilatedAsMaleRank.formatted()) |
|
|
|
|
VStack(alignment: .leading, spacing: 0) { |
|
|
|
|
Text("équivalence") |
|
|
|
|
Text("messieurs") |
|
|
|
|
} |
|
|
|
|
.font(.caption) |
|
|
|
|
Text(")").font(.title3) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
HStack { |
|
|
|
|
Text(player.formattedLicense()) |
|
|
|
|
if let computedAge = player.computedAge { |
|
|
|
|
Text(computedAge.formatted() + " ans") |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
.font(.caption) |
|
|
|
|
if let clubName = player.clubName { |
|
|
|
|
Text(clubName) |
|
|
|
|
.font(.caption) |
|
|
|
|
} |
|
|
|
|
if let ligueName = player.ligueName { |
|
|
|
|
Text(ligueName) |
|
|
|
|
.font(.caption) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
ImportedPlayerView(player: player, index: searchViewModel.showIndex() ? (index + 1) : nil, showFemaleInMaleAssimilation: searchViewModel.showFemaleInMaleAssimilation, showProgression: true) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} header: { |
|
|
|
|
|