fix online reg

online_reg
Raz 11 months ago
parent 494f083a34
commit b4e267f695
  1. 2
      PadelClub/Utils/Tips.swift
  2. 31
      PadelClub/Views/Components/StepperView.swift
  3. 3
      PadelClub/Views/Shared/ImportedPlayerView.swift
  4. 2
      PadelClub/Views/Tournament/FileImportView.swift
  5. 22
      PadelClub/Views/Tournament/Screen/InscriptionManagerView.swift
  6. 8
      PadelClub/Views/Tournament/Screen/RegistrationSetupView.swift
  7. 39
      PadelClub/Views/Tournament/Screen/TableStructureView.swift

@ -600,7 +600,7 @@ struct ShouldTournamentBeOverTip: Tip {
}
var message: Text? {
Text("Le dernier match est terminé depuis plus de 2 heures. Si le tournoi a été annulé pour cause de météo vous pouvez l'indiquer comme 'Annulé' dans le menu 􀍡, si ce n'est pas le cas, saisissez les scores manquants pour clôturer automatiquement le tournoi et publier le classement final.")
Text("Le dernier match est terminé depuis plus de 2 heures. Si le tournoi a été annulé pour cause de météo vous pouvez l'indiquer comme 'Annulé' dans le menu en haut à droite, si ce n'est pas le cas, saisissez les scores manquants pour clôturer automatiquement le tournoi et publier le classement final.")
}
var image: Image? {

@ -16,6 +16,8 @@ struct StepperView: View {
var maximum: Int? = nil
var countChanged: (() -> ())? = nil
var submitFollowUpAction: (() -> ())? = nil
@FocusState private var amountIsFocused: Bool
var body: some View {
VStack {
@ -32,17 +34,14 @@ struct StepperView: View {
.buttonStyle(.borderless)
TextField("00", value: $count, format: .number)
.focused($amountIsFocused)
.keyboardType(.numberPad)
.fixedSize()
// .font(.title2)
.monospacedDigit()
.multilineTextAlignment(.center)
.onSubmit {
if let minimum, count < minimum {
count = minimum
} else if let maximum, count > maximum {
count = maximum
}
_validate()
}
Button(action: {
self._add()
@ -60,6 +59,28 @@ struct StepperView: View {
}
}
.multilineTextAlignment(.trailing)
.toolbar {
ToolbarItem(placement: .keyboard) {
if amountIsFocused {
HStack {
Spacer()
Button("Confirmer") {
amountIsFocused = false
_validate()
}
}
}
}
}
}
fileprivate func _validate() {
if let minimum, count < minimum {
count = minimum
} else if let maximum, count > maximum {
count = maximum
}
submitFollowUpAction?()
}
fileprivate func _minusIsDisabled() -> Bool {

@ -114,5 +114,8 @@ struct ImportedPlayerView: View {
}
}
}
.contextMenu {
CopyPasteButtonView(pasteValue: player.formattedLicense())
}
}
}

@ -140,7 +140,7 @@ struct FileImportView: View {
}
}
if tournament.unsortedTeams().count > 0 {
if tournament.unsortedTeams().count > 0, tournament.enableOnlineRegistration == false {
RowButtonView("Effacer les équipes déjà inscrites", role: .destructive) {
await _deleteTeams()
}

@ -536,20 +536,10 @@ struct InscriptionManagerView: View {
refreshStatus = nil
refreshInProgress = true
do {
try await self.tournamentStore.playerRegistrations.loadDataFromServerIfAllowed(clear: true)
try await self.tournamentStore.teamScores.loadDataFromServerIfAllowed(clear: true)
try await self.tournamentStore.teamRegistrations.loadDataFromServerIfAllowed(clear: true)
let storeIdentifier = StoreIdentifier(value: tournament.id, parameterName: "tournament")
let serverPlayers: [PlayerRegistration] = try await StoreCenter.main.service().get(identifier: storeIdentifier)
let serverTeamScores: [TeamScore] = try await StoreCenter.main.service().get(identifier: storeIdentifier)
let serverTeams: [TeamRegistration] = try await StoreCenter.main.service().get(identifier: storeIdentifier)
self.tournamentStore.playerRegistrations.reset()
self.tournamentStore.teamScores.reset()
self.tournamentStore.teamRegistrations.reset()
try self.tournamentStore.playerRegistrations.addOrUpdate(contentOfs: serverPlayers)
try self.tournamentStore.teamScores.addOrUpdate(contentOfs: serverTeamScores)
try self.tournamentStore.teamRegistrations.addOrUpdate(contentOfs: serverTeams)
_setHash()
self.refreshResult = "la synchronization a réussi"
@ -613,11 +603,11 @@ struct InscriptionManagerView: View {
} label: {
TeamRowView(team: team)
}
#if DEBUG
.swipeActions(edge: .trailing, allowsFullSwipe: true) {
_teamDeleteButtonView(team)
if tournament.enableOnlineRegistration == false {
_teamDeleteButtonView(team)
}
}
#endif
.listRowView(isActive: true, color: team.initialRoundColor() ?? tournament.cutLabelColor(index: teamIndex, teamCount: filterMode == .waiting ? 0 : selectedSortedTeams.count), hideColorVariation: true)
}
} header: {

@ -84,8 +84,14 @@ struct RegistrationSetupView: View {
if enableOnlineRegistration {
if let shareURL = tournament.shareURL(.info) {
Section {
Text(shareURL.absoluteString)
ShareLink(item: shareURL) {
Text(shareURL.absoluteString)
Text("Partager le lien")
}
Link(destination: shareURL) {
Text("Ouvrir le lien")
}
} header: {
Text("Page d'inscription")

@ -83,12 +83,20 @@ struct TableStructureView: View {
Section {
LabeledContent {
StepperView(count: $teamCount, minimum: 4, maximum: 128)
StepperView(count: $teamCount, minimum: 4, maximum: 128) {
} submitFollowUpAction: {
_verifyValueIntegrity()
}
} label: {
Text("Nombre d'équipes")
}
LabeledContent {
StepperView(count: $groupStageCount, minimum: 0, maximum: maxGroupStages)
StepperView(count: $groupStageCount, minimum: 0, maximum: maxGroupStages) {
} submitFollowUpAction: {
_verifyValueIntegrity()
}
} label: {
Text("Nombre de poules")
}
@ -100,21 +108,33 @@ struct TableStructureView: View {
if (teamCount / groupStageCount) > 1 {
Section {
LabeledContent {
StepperView(count: $teamsPerGroupStage, minimum: 2, maximum: (teamCount / groupStageCount))
StepperView(count: $teamsPerGroupStage, minimum: 2, maximum: (teamCount / groupStageCount)) {
} submitFollowUpAction: {
_verifyValueIntegrity()
}
} label: {
Text("Équipes par poule")
}
if structurePreset != .doubleGroupStage {
LabeledContent {
StepperView(count: $qualifiedPerGroupStage, minimum: 0, maximum: (teamsPerGroupStage-1))
StepperView(count: $qualifiedPerGroupStage, minimum: 0, maximum: (teamsPerGroupStage-1)) {
} submitFollowUpAction: {
_verifyValueIntegrity()
}
} label: {
Text("Qualifié\(qualifiedPerGroupStage.pluralSuffix) par poule")
}
if qualifiedPerGroupStage < teamsPerGroupStage - 1 {
LabeledContent {
StepperView(count: $groupStageAdditionalQualified, minimum: 0, maximum: maxMoreQualified)
StepperView(count: $groupStageAdditionalQualified, minimum: 0, maximum: maxMoreQualified) {
} submitFollowUpAction: {
_verifyValueIntegrity()
}
} label: {
Text("Qualifié\(groupStageAdditionalQualified.pluralSuffix) supplémentaires")
Text(moreQualifiedLabel)
@ -311,14 +331,9 @@ struct TableStructureView: View {
updatedElements.insert(.groupStageAdditionalQualified)
} else {
updatedElements.remove(.groupStageAdditionalQualified)
} }
.toolbar {
ToolbarItem(placement: .keyboard) {
Button("Confirmer") {
stepperFieldIsFocused = false
_verifyValueIntegrity()
}
}
}
.toolbar {
ToolbarItem(placement: .confirmationAction) {
if tournament.state() == .initial {
ButtonValidateView {

Loading…
Cancel
Save