From 10ac1a8a25377088d6e9076e9e2b38e45cdcf164 Mon Sep 17 00:00:00 2001 From: Rayhan Date: Sat, 22 Jun 2024 18:55:05 +0200 Subject: [PATCH] score board is done --- .../ViewModel/Players/PlayersVM.swift | 6 +++++ .../Views/Player/ScoreBoardView.swift | 24 +++++++++++-------- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/DouShouQi_App/DouShouQi_App/ViewModel/Players/PlayersVM.swift b/DouShouQi_App/DouShouQi_App/ViewModel/Players/PlayersVM.swift index 4f6a801..c3587b9 100644 --- a/DouShouQi_App/DouShouQi_App/ViewModel/Players/PlayersVM.swift +++ b/DouShouQi_App/DouShouQi_App/ViewModel/Players/PlayersVM.swift @@ -43,6 +43,12 @@ public class PlayersVM: ObservableObject{ } } + static func fetchTopPlayers(limit: Int = 10) -> [PlayerVM] { + let players = CoreDataManager.shared.fetchPlayers().map { PlayerVM(player: $0.toModel()) } + let sortedPlayers = players.sorted { $0.win > $1.win } + return Array(sortedPlayers.prefix(limit)) + } + init() { players = [] diff --git a/DouShouQi_App/DouShouQi_App/Views/Player/ScoreBoardView.swift b/DouShouQi_App/DouShouQi_App/Views/Player/ScoreBoardView.swift index 6752547..f70e6b3 100644 --- a/DouShouQi_App/DouShouQi_App/Views/Player/ScoreBoardView.swift +++ b/DouShouQi_App/DouShouQi_App/Views/Player/ScoreBoardView.swift @@ -1,14 +1,9 @@ -// -// ScoreBoardView.swift -// DouShouQi_App -// -// Created by Rémi REGNAULT on 21/05/2024. -// - import SwiftUI import DouShouQiModel struct ScoreBoardView: View { + @State private var topPlayers: [PlayerVM] = [] + var body: some View { VStack { HStack { @@ -39,14 +34,23 @@ struct ScoreBoardView: View { .frame(height: 2) } - PlayerScoreResumeFrame(Name: "Nathan Verdier", Rank: 1, Wins: 19, Looses: 15) - PlayerScoreResumeFrame(Name: "Rayhan Hassou", Rank: 2, Wins: 17, Looses: 17) - PlayerScoreResumeFrame(Name: "Rémi Regnault", Rank: 3, Wins: 15, Looses: 19) + ForEach(topPlayers.indices, id: \.self) { index in + let player = topPlayers[index] + PlayerScoreResumeFrame( + Name: player.player.name, + Rank: index + 1, + Wins: player.win, + Looses: player.loose + ) + } } Spacer() } .padding(10) + .onAppear { + topPlayers = PlayersVM.fetchTopPlayers() + } } }