You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
4.5 KiB
130 lines
4.5 KiB
//
|
|
// ToolboxView.swift
|
|
// PadelClub
|
|
//
|
|
// Created by Razmig Sarkissian on 29/02/2024.
|
|
//
|
|
|
|
import SwiftUI
|
|
import LeStorage
|
|
|
|
struct ToolboxView: View {
|
|
@EnvironmentObject var dataStore: DataStore
|
|
@Environment(NavigationViewModel.self) private var navigation: NavigationViewModel
|
|
|
|
var body: some View {
|
|
@Bindable var navigation = navigation
|
|
NavigationStack(path: $navigation.toolboxPath) {
|
|
List {
|
|
|
|
Section {
|
|
Text("Version de l'application").badge(PadelClubApp.appVersion)
|
|
SupportButtonView(contentIsUnavailable: false)
|
|
}
|
|
|
|
#if DEBUG
|
|
|
|
Section {
|
|
NavigationLink("Settings") {
|
|
DebugSettingsView()
|
|
}
|
|
NavigationLink("API calls") {
|
|
APICallsListView()
|
|
}
|
|
}
|
|
|
|
Section {
|
|
RowButtonView("Reset ALL API Calls") {
|
|
Store.main.resetApiCalls()
|
|
Logger.log("Api calls reset")
|
|
}
|
|
}
|
|
Section {
|
|
RowButtonView("Fix Names") {
|
|
let playerRegistrations = dataStore.playerRegistrations
|
|
playerRegistrations.forEach { player in
|
|
player.firstName = player.firstName.trimmed.capitalized
|
|
player.lastName = player.lastName.trimmed.uppercased()
|
|
}
|
|
|
|
do {
|
|
try dataStore.playerRegistrations.addOrUpdate(contentOfs: playerRegistrations)
|
|
} catch {
|
|
Logger.error(error)
|
|
}
|
|
}
|
|
}
|
|
|
|
Section {
|
|
RowButtonView("Delete teams") {
|
|
let teamRegistrations = dataStore.teamRegistrations.filter({ $0.tournamentObject() == nil })
|
|
do {
|
|
try dataStore.teamRegistrations.delete(contentOfs: teamRegistrations)
|
|
} catch {
|
|
Logger.error(error)
|
|
}
|
|
}
|
|
}
|
|
|
|
Section {
|
|
RowButtonView("Delete players") {
|
|
let playersRegistrations = dataStore.playerRegistrations.filter({ $0.team() == nil })
|
|
do {
|
|
try dataStore.playerRegistrations.delete(contentOfs: playersRegistrations)
|
|
} catch {
|
|
Logger.error(error)
|
|
}
|
|
}
|
|
|
|
}
|
|
#endif
|
|
|
|
Section {
|
|
Link(destination: URLs.main.url) {
|
|
Text("Accéder au site Padel Club")
|
|
}
|
|
}
|
|
|
|
Section {
|
|
NavigationLink {
|
|
SelectablePlayerListView()
|
|
} label: {
|
|
Label("Rechercher un joueur", systemImage: "person.fill.viewfinder")
|
|
}
|
|
}
|
|
|
|
Section {
|
|
NavigationLink {
|
|
RankCalculatorView()
|
|
} label: {
|
|
Label("Calculateur de points", systemImage: "scalemass")
|
|
}
|
|
}
|
|
|
|
Section {
|
|
NavigationLink {
|
|
GlobalSettingsView()
|
|
} label: {
|
|
Label("Formats de jeu par défaut", systemImage: "megaphone")
|
|
}
|
|
NavigationLink {
|
|
DurationSettingsView()
|
|
} label: {
|
|
Label("Définir les durées moyennes", systemImage: "deskclock")
|
|
}
|
|
} footer: {
|
|
Text("Vous pouvez définir vos propres estimations de durées de match en fonction du format de jeu.")
|
|
}
|
|
|
|
Section {
|
|
Link("Accéder au guide de la compétition", destination: URLs.padelRules.url)
|
|
}
|
|
}
|
|
.navigationTitle(TabDestination.toolbox.title)
|
|
}
|
|
}
|
|
}
|
|
|
|
//#Preview {
|
|
// ToolboxView()
|
|
//}
|
|
|