From 9bc33ef59d2b6044bb51b26649cf04e9919336fc Mon Sep 17 00:00:00 2001 From: Mathieu GROUSSEAU Date: Wed, 28 May 2025 08:52:19 +0200 Subject: [PATCH] Fix iOS table rendering issue --- App/App/View/SavedGamesView.swift | 44 ++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/App/App/View/SavedGamesView.swift b/App/App/View/SavedGamesView.swift index 22b8cd4..c7c5bdb 100644 --- a/App/App/View/SavedGamesView.swift +++ b/App/App/View/SavedGamesView.swift @@ -9,6 +9,7 @@ import SwiftUI struct SavedGamesView: View { var body: some View { + // TODO: use the same collection view with headers instead? Or use collapsible sections? ScoreTable(key: "savedGames.section.unfinished") ScoreTable(key: "savedGames.section.finished") } @@ -17,22 +18,41 @@ struct SavedGamesView: View { struct ScoreTable: View { let key: LocalizedStringKey + @Environment(\.horizontalSizeClass) + private var horizontalSizeClass + @State private var unsinished = [ - Result(date: "D1", player1: "P1", player2: "P2", rules: "Rule1"), - Result(date: "D2", player1: "P2", player2: "P3", rules: "Rule2"), - Result(date: "D3", player1: "P3", player2: "P4", rules: "Rule3"), - Result(date: "D4", player1: "P4", player2: "P5", rules: "Rule4"), - Result(date: "D5", player1: "P5", player2: "P1", rules: "Rule5") + 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 { Section(self.key) { - Table(self.unsinished) { - TableColumn("savedGames.table.column.date", value: \.date) - TableColumn("savedGames.table.column.players") { result in - Text("\(result.player1) savedGames.table.column.players.entry \(result.player2)") + // TODO: sort by date + if horizontalSizeClass == .compact { + List(self.unsinished) { result in + VStack(alignment: .center) { + Text("\(result.player1) savedGames.table.column.players.entry \(result.player2)") + HStack { + Text(result.date, style: .date) + Spacer() + Text(result.rules) + }.foregroundStyle(.secondary) + } + } + } else{ + Table(self.unsinished) { + TableColumn("savedGames.table.column.date") { result in + Text(result.date, style: .date) + } + TableColumn("savedGames.table.column.players") { result in + Text("\(result.player1) savedGames.table.column.players.entry \(result.player2)") + } + TableColumn("savedGames.table.column.rules", value: \.rules) } - TableColumn("savedGames.table.column.rules", value: \.rules) } } } @@ -41,7 +61,7 @@ struct ScoreTable: View { struct Result: Identifiable { let id = UUID() - let date: String + let date: Date let player1: String let player2: String let rules: String