diff --git a/TournamentStats/UI/components/DataSourceWrapper.swift b/TournamentStats/UI/components/DataSourceWrapper.swift index 26c3243..cc6bae4 100644 --- a/TournamentStats/UI/components/DataSourceWrapper.swift +++ b/TournamentStats/UI/components/DataSourceWrapper.swift @@ -12,12 +12,13 @@ import UIKit class DataSourceWrapper : NSObject, UITableViewDataSource, UITableViewDelegate { var columnRepresentables: [T] - let columnDescriptors = T.columnDescriptors() + var columnDescriptors: [ColumnDescriptor] // = T.columnDescriptors() var totalWidthWeigth: CGFloat = 0.0 fileprivate var _maxRows: Int? init(array: [T], maxRows: Int? = nil) { self.columnRepresentables = array + self.columnDescriptors = array.first?.columnDescriptors() ?? [] self.totalWidthWeigth = self.columnDescriptors.map { $0.widthWeight }.reduce(0, +) if let max = maxRows, max > columnRepresentables.count { self._maxRows = nil @@ -27,7 +28,7 @@ class DataSourceWrapper : NSObject, UITableViewDataSour } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - print("numberOfRowsInSection = \(self.columnRepresentables.count)") +// print("numberOfRowsInSection = \(self.columnRepresentables.count)") if let max = self._maxRows { return 1 + max } else { diff --git a/TournamentStats/report/structures/CountryCounter.swift b/TournamentStats/report/structures/CountryCounter.swift index b97fe7a..d38e579 100644 --- a/TournamentStats/report/structures/CountryCounter.swift +++ b/TournamentStats/report/structures/CountryCounter.swift @@ -37,7 +37,7 @@ final class CountryCounter : HTMLRepresentable, Aggregeable { self.counter += 1 } - static func columnDescriptors() -> [ColumnDescriptor] { + func columnDescriptors() -> [ColumnDescriptor] { return [ColumnDescriptor(header: "Country", number: false, widthWeight: 1.0), ColumnDescriptor(header: "Cashes", number: true, widthWeight: 1.0)] } diff --git a/TournamentStats/report/structures/CumulatedResults.swift b/TournamentStats/report/structures/CumulatedResults.swift index 9b6dab5..ce5d0a3 100644 --- a/TournamentStats/report/structures/CumulatedResults.swift +++ b/TournamentStats/report/structures/CumulatedResults.swift @@ -10,7 +10,9 @@ import Foundation class CumulatedResults : HTMLRepresentable, ColumnRepresentable { - var player: Player + let player: Player + let average: Bool + var total: Double = 0.0 var numberOfCashes: Int = 0 var results: [Result] = [] @@ -19,6 +21,7 @@ class CumulatedResults : HTMLRepresentable, ColumnRepresentable { init(player: Player, average: Bool = false) { self.player = player + self.average = average for result in player.results { self.add(result: result) @@ -40,9 +43,11 @@ class CumulatedResults : HTMLRepresentable, ColumnRepresentable { } } - static func columnDescriptors() -> [ColumnDescriptor] { + func columnDescriptors() -> [ColumnDescriptor] { + + let totalColumn = self.average ? "Average Earnings" : "Total Earnings" return [ColumnDescriptor(header: "Name", number: false, widthWeight: 2.0), - ColumnDescriptor(header: "Total Earnings", number: true, widthWeight: 1.2), + ColumnDescriptor(header: totalColumn, number: true, widthWeight: 1.2), ColumnDescriptor(header: "Cashes", number: true, widthWeight: 0.8)] } @@ -54,7 +59,7 @@ class CumulatedResults : HTMLRepresentable, ColumnRepresentable { return [name, self.total.currencyFormatted, "\(self.numberOfCashes)"] } -// static func htmlHeaders() -> String { +// func htmlHeaders() -> String { // var strings: [String] = [] // strings.append("Name") //// strings.append("Places (Year)") diff --git a/TournamentStats/report/structures/CumulatedWins.swift b/TournamentStats/report/structures/CumulatedWins.swift index d9461a3..18c2579 100644 --- a/TournamentStats/report/structures/CumulatedWins.swift +++ b/TournamentStats/report/structures/CumulatedWins.swift @@ -38,7 +38,7 @@ class CumulatedWins : HTMLRepresentable, ColumnRepresentable { } } - static func columnDescriptors() -> [ColumnDescriptor] { + func columnDescriptors() -> [ColumnDescriptor] { return [ColumnDescriptor(header: "Name", number: false, widthWeight: 2.0), ColumnDescriptor(header: "Wins", number: true, widthWeight: 1.0), ColumnDescriptor(header: "Total Earnings", number: true, widthWeight: 1.5)] @@ -48,7 +48,7 @@ class CumulatedWins : HTMLRepresentable, ColumnRepresentable { return [self.player.formattedName, "\(self.winsCount)", self.total.currencyFormatted] } -// static func htmlHeaders() -> String { +// func htmlHeaders() -> String { // var strings: [String] = [] // strings.append("Name") //// strings.append("Places (Year)") diff --git a/TournamentStats/report/structures/PlayerResult.swift b/TournamentStats/report/structures/PlayerResult.swift index 3530726..eb50ac6 100644 --- a/TournamentStats/report/structures/PlayerResult.swift +++ b/TournamentStats/report/structures/PlayerResult.swift @@ -13,7 +13,7 @@ struct PlayerResult : HTMLRepresentable { var tournament: Tournament var result: Result - static func columnDescriptors() -> [ColumnDescriptor] { + func columnDescriptors() -> [ColumnDescriptor] { return [ColumnDescriptor(header: "Player", number: false, widthWeight: 1.0), ColumnDescriptor(header: "Place", number: true, widthWeight: 1.0), ColumnDescriptor(header: "Earnings", number: true, widthWeight: 1.0), @@ -31,7 +31,7 @@ struct PlayerResult : HTMLRepresentable { ] } - static func htmlHeaders() -> String { + func htmlHeaders() -> String { var strings: String = "" strings.append("Player") strings.append("Place") diff --git a/TournamentStats/report/structures/TournamentCounter.swift b/TournamentStats/report/structures/TournamentCounter.swift index 50328c9..d70bd2e 100644 --- a/TournamentStats/report/structures/TournamentCounter.swift +++ b/TournamentStats/report/structures/TournamentCounter.swift @@ -22,7 +22,7 @@ class DistributionCounter : HTMLRepresentable { self.counter += 1 } - static func columnDescriptors() -> [ColumnDescriptor] { + func columnDescriptors() -> [ColumnDescriptor] { return [ColumnDescriptor(header: "Tournament", number: false, widthWeight: 2.0), ColumnDescriptor(header: "Counter", number: true, widthWeight: 1.0)] } @@ -38,7 +38,7 @@ class DistributionCounter : HTMLRepresentable { return PieChartDataEntry(value: Double(self.counter), label: name) } -// static func htmlHeaders() -> String { +// func htmlHeaders() -> String { // var strings: [String] = [] // strings.append("Tournament") // strings.append("Counter") diff --git a/TournamentStats/report/structures/TournamentRepresentable.swift b/TournamentStats/report/structures/TournamentRepresentable.swift index 6d8017f..284a628 100644 --- a/TournamentStats/report/structures/TournamentRepresentable.swift +++ b/TournamentStats/report/structures/TournamentRepresentable.swift @@ -12,7 +12,7 @@ struct TournamentRepresentable : HTMLRepresentable { var tournament: Tournament - static func columnDescriptors() -> [ColumnDescriptor] { + func columnDescriptors() -> [ColumnDescriptor] { return [ColumnDescriptor(header: "#", number: true, widthWeight: 0.3), ColumnDescriptor(header: "Buy-in", number: true, widthWeight: 0.5), ColumnDescriptor(header: "Event", number: false, widthWeight: 2.6), @@ -30,7 +30,7 @@ struct TournamentRepresentable : HTMLRepresentable { ] } - static func htmlHeaders() -> String { + func htmlHeaders() -> String { var strings: [String] = [] // strings.append("Date") strings.append("#") diff --git a/TournamentStats/report/structures/TournamentStats.swift b/TournamentStats/report/structures/TournamentStats.swift index c31ab03..a2c788c 100644 --- a/TournamentStats/report/structures/TournamentStats.swift +++ b/TournamentStats/report/structures/TournamentStats.swift @@ -27,7 +27,7 @@ class TournamentStats : NSObject, HTMLRepresentable, UITableViewDelegate, UITabl } - static func columnDescriptors() -> [ColumnDescriptor] { + func columnDescriptors() -> [ColumnDescriptor] { return [] } @@ -35,7 +35,7 @@ class TournamentStats : NSObject, HTMLRepresentable, UITableViewDelegate, UITabl return [] } - static func htmlHeaders() -> String { + func htmlHeaders() -> String { return "" } diff --git a/TournamentStats/report/structures/TournamentWinner.swift b/TournamentStats/report/structures/TournamentWinner.swift index 1ec253a..10cc8fc 100644 --- a/TournamentStats/report/structures/TournamentWinner.swift +++ b/TournamentStats/report/structures/TournamentWinner.swift @@ -13,7 +13,7 @@ struct TournamentWinner : HTMLRepresentable { var tournament: Tournament var result: Result - static func columnDescriptors() -> [ColumnDescriptor] { + func columnDescriptors() -> [ColumnDescriptor] { return [ColumnDescriptor(header: "#", number: true, widthWeight: 0.2), ColumnDescriptor(header: "Buy-in", number: true, widthWeight: 1.0), ColumnDescriptor(header: "Event", number: false, widthWeight: 1.0), @@ -30,7 +30,7 @@ struct TournamentWinner : HTMLRepresentable { ] } - static func htmlHeaders() -> String { + func htmlHeaders() -> String { var header = "" header.append("#") header.append("Buy-in") diff --git a/TournamentStats/utils/ColumnRepresentable.swift b/TournamentStats/utils/ColumnRepresentable.swift index e55dbd6..0072f7c 100644 --- a/TournamentStats/utils/ColumnRepresentable.swift +++ b/TournamentStats/utils/ColumnRepresentable.swift @@ -34,7 +34,7 @@ struct ColumnDescriptor { } protocol ColumnRepresentable { - static func columnDescriptors() -> [ColumnDescriptor] + func columnDescriptors() -> [ColumnDescriptor] func cellValues() -> [String] var chartDataEntry: ChartDataEntry { get } var pieChartDataEntry: PieChartDataEntry { get } @@ -107,13 +107,13 @@ protocol Aggregeable { } protocol HTMLRepresentable : ColumnRepresentable { - static func htmlHeaders() -> String + func htmlHeaders() -> String func html() -> String } extension HTMLRepresentable { - static func htmlHeaders() -> String { + func htmlHeaders() -> String { let all = self.columnDescriptors().map { $0.header }.joined(separator: "") return "\(all)" } @@ -131,7 +131,7 @@ extension Array where Element : HTMLRepresentable { var html = "\n" html.append("") - html.append(Element.htmlHeaders()) + html.append(self.first?.htmlHeaders() ?? "") html.append("\n") let max = limit ?? Int.max for (index, rep) in self.enumerated() {