parent
9bc33ef59d
commit
aee3eea20b
@ -0,0 +1,61 @@
|
|||||||
|
//
|
||||||
|
// PlayerVSPage.swift
|
||||||
|
// App
|
||||||
|
//
|
||||||
|
// Created by etudiant2 on 28/05/2025.
|
||||||
|
//
|
||||||
|
|
||||||
|
import SwiftUI
|
||||||
|
import Charts
|
||||||
|
|
||||||
|
struct PlayerVSPage: View {
|
||||||
|
private var chartData: [(key: LocalizedStringKey, color: Color, value: UInt)] = [
|
||||||
|
(key: "playerVs.chart.wins \("Player 1")", color: .red, value: 1),
|
||||||
|
(key: "playerVs.chart.wins \("Player 2")", color: .yellow, value: 2),
|
||||||
|
(key: "playerVs.chart.draws", color: .gray, value: 3),
|
||||||
|
]
|
||||||
|
|
||||||
|
var body: some View {
|
||||||
|
VStack {
|
||||||
|
HStack {
|
||||||
|
PlayerPicker()
|
||||||
|
|
||||||
|
Spacer()
|
||||||
|
|
||||||
|
Chart {
|
||||||
|
ForEach(chartData, id: \.color) { entry in
|
||||||
|
SectorMark(angle: .value(entry.key, entry.value))
|
||||||
|
.annotation(position: .overlay) {
|
||||||
|
Text("\(entry.value)").font(.caption)
|
||||||
|
}
|
||||||
|
.foregroundStyle(entry.color)
|
||||||
|
}
|
||||||
|
}.frame(height: 100)
|
||||||
|
|
||||||
|
Spacer()
|
||||||
|
|
||||||
|
PlayerPicker()
|
||||||
|
}
|
||||||
|
|
||||||
|
ScoreboardView()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct PlayerPicker: View {
|
||||||
|
var body: some View {
|
||||||
|
VStack {
|
||||||
|
Circle().frame(width: 50, height: 50)
|
||||||
|
|
||||||
|
let text: String = "Button Idk"
|
||||||
|
|
||||||
|
Button(text) {
|
||||||
|
//
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#Preview {
|
||||||
|
PlayerVSPage()
|
||||||
|
}
|
@ -0,0 +1,51 @@
|
|||||||
|
//
|
||||||
|
// ScoreboardView.swift
|
||||||
|
// App
|
||||||
|
//
|
||||||
|
// Created by etudiant2 on 28/05/2025.
|
||||||
|
//
|
||||||
|
|
||||||
|
import SwiftUI
|
||||||
|
|
||||||
|
struct ScoreboardView: View {
|
||||||
|
@Environment(\.horizontalSizeClass)
|
||||||
|
private var horizontalSizeClass
|
||||||
|
|
||||||
|
@State private var unsinished = [
|
||||||
|
Result(date: Date.now, player1: "P1", player2: "P2", rules: "Rule1"),
|
||||||
|
Result(date: Date.now, player1: "P2", player2: "P3", rules: "Rule2"),
|
||||||
|
Result(date: Date.now, player1: "P3", player2: "P4", rules: "Rule3"),
|
||||||
|
Result(date: Date.now, player1: "P4", player2: "P5", rules: "Rule4"),
|
||||||
|
Result(date: Date.now, player1: "P5", player2: "P1", rules: "Rule5")
|
||||||
|
];
|
||||||
|
|
||||||
|
var body: some View {
|
||||||
|
// TODO: sort by date
|
||||||
|
if horizontalSizeClass == .compact {
|
||||||
|
List(self.unsinished) { result in
|
||||||
|
VStack(alignment: .center) {
|
||||||
|
Text("\(result.player1) scoreboard.column.players.entry \(result.player2)")
|
||||||
|
HStack {
|
||||||
|
Text(result.date, style: .date)
|
||||||
|
Spacer()
|
||||||
|
Text(result.rules)
|
||||||
|
}.foregroundStyle(.secondary)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else{
|
||||||
|
Table(self.unsinished) {
|
||||||
|
TableColumn("scoreboard.table.column.date") { result in
|
||||||
|
Text(result.date, style: .date)
|
||||||
|
}
|
||||||
|
TableColumn("scoreboard.table.column.players") { result in
|
||||||
|
Text("\(result.player1) scoreboard.column.players.entry \(result.player2)")
|
||||||
|
}
|
||||||
|
TableColumn("scoreboard.table.column.rules", value: \.rules)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#Preview {
|
||||||
|
ScoreboardView()
|
||||||
|
}
|
Loading…
Reference in new issue