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.
196 lines
7.6 KiB
196 lines
7.6 KiB
//
|
|
// InfographyView.swift
|
|
// TournamentStats
|
|
//
|
|
// Created by Laurent Morvillier on 15/08/2019.
|
|
// Copyright © 2019 Stax River. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
import UIKit
|
|
|
|
class InfographyView: UIView {
|
|
|
|
static func generate(_ generator: ReportGenerator) {
|
|
|
|
if let infographyView = Bundle.main.loadNibNamed("InfographyView", owner: self, options: nil)?.first as? InfographyView {
|
|
infographyView.generator = generator
|
|
|
|
if let imageData = infographyView.toImage()?.pngData() {
|
|
|
|
guard let directory = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) as NSURL else {
|
|
return
|
|
}
|
|
|
|
do {
|
|
try imageData.write(to: directory.appendingPathComponent("infography.png")!)
|
|
} catch {
|
|
print(error.localizedDescription)
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
var generator: ReportGenerator? {
|
|
didSet {
|
|
self._fillView()
|
|
}
|
|
}
|
|
|
|
@IBOutlet weak var infographyTitle: UILabel!
|
|
|
|
@IBOutlet weak var collectionView: UICollectionView!
|
|
|
|
@IBOutlet weak var hStack1a: UIStackView!
|
|
@IBOutlet weak var label11: UILabel!
|
|
@IBOutlet weak var label12: UILabel!
|
|
@IBOutlet weak var label13: UILabel!
|
|
|
|
@IBOutlet weak var hStack1b: UIStackView!
|
|
@IBOutlet weak var tableView11: TableView!
|
|
@IBOutlet weak var tableView12: TableView!
|
|
@IBOutlet weak var tableView13: TableView!
|
|
|
|
@IBOutlet weak var mostTableView: TableView!
|
|
@IBOutlet weak var mostTableView2: TableView!
|
|
|
|
@IBOutlet weak var most10kCashTableView: TableView!
|
|
@IBOutlet weak var biggest10kWinnersTableView: TableView!
|
|
|
|
@IBOutlet weak var hStack2a: UIStackView!
|
|
@IBOutlet weak var label21: UILabel!
|
|
@IBOutlet weak var label22: UILabel!
|
|
@IBOutlet weak var label23: UILabel!
|
|
|
|
@IBOutlet weak var hStack2b: UIStackView!
|
|
@IBOutlet weak var container21: UIView!
|
|
@IBOutlet weak var container22: UIView!
|
|
@IBOutlet weak var container23: UIView!
|
|
|
|
@IBOutlet weak var hStack3a: UIStackView!
|
|
@IBOutlet weak var label31: UILabel!
|
|
@IBOutlet weak var label32: UILabel!
|
|
@IBOutlet weak var label33: UILabel!
|
|
|
|
@IBOutlet weak var hStack3b: UIStackView!
|
|
@IBOutlet weak var tableView31: TableView!
|
|
@IBOutlet weak var tableView32: TableView!
|
|
@IBOutlet weak var tableView33: TableView!
|
|
|
|
@IBOutlet weak var hStack4a: UIStackView!
|
|
@IBOutlet weak var label41: UILabel!
|
|
|
|
@IBOutlet weak var hStack4b: UIStackView!
|
|
@IBOutlet weak var container41: UIView!
|
|
|
|
@IBOutlet weak var hStack5a: UIStackView!
|
|
@IBOutlet weak var label51: UILabel!
|
|
|
|
@IBOutlet weak var hStack5b: UIStackView!
|
|
@IBOutlet weak var collectionView51: UICollectionView!
|
|
@IBOutlet weak var containerTableSize: UIView!
|
|
|
|
override func awakeFromNib() {
|
|
super.awakeFromNib()
|
|
|
|
self._createBackground()
|
|
}
|
|
|
|
fileprivate func _createBackground() {
|
|
self.backgroundColor = UIColor(r: 8, g: 54, b: 63, a: 1)
|
|
}
|
|
|
|
fileprivate func _fillView() {
|
|
|
|
guard let generator = self.generator else {
|
|
return
|
|
}
|
|
|
|
self.infographyTitle.text = "2022 World Series of Poker"
|
|
self.infographyTitle.textColor = Fonts.color
|
|
self.infographyTitle.font = Fonts.mainTitle
|
|
|
|
self.collectionView.register(UINib(nibName: "StatCollectionViewCell", bundle: Bundle.main), forCellWithReuseIdentifier: "Stat")
|
|
self.collectionView.delegate = generator.festivalStats
|
|
self.collectionView.dataSource = generator.festivalStats
|
|
|
|
/////
|
|
|
|
self.mostTableView.delegate = generator.rankings1
|
|
self.mostTableView.dataSource = generator.rankings1
|
|
|
|
self.mostTableView2.setHeader(header: "Most final tables")
|
|
self.mostTableView2.setData(data: generator.finalTables, maxRows: 10)
|
|
|
|
self.most10kCashTableView.setHeader(header: "Most cashes for 10k+ buy-ins")
|
|
self.most10kCashTableView.setData(data: generator.mostCashesIn10KPlus, maxRows: 5)
|
|
|
|
self.biggest10kWinnersTableView.setHeader(header: "Biggest winners for 10k+ buy-in")
|
|
self.biggest10kWinnersTableView.setData(data: generator.biggest10KPlusWinners, maxRows: 5)
|
|
|
|
/////
|
|
|
|
self.tableView11.setData(data: generator.biggestWinners)
|
|
self.tableView11.setHeader(header: "Biggest winners")
|
|
self.tableView11.setFooter(footer: "* denotes a Main Event finalist")
|
|
|
|
self.tableView12.setData(data: generator.mostCashes, maxRows: 5)
|
|
self.tableView12.setHeader(header: "Most cashes")
|
|
self.tableView13.setData(data: generator.averageCash.results, maxRows: 5)
|
|
self.tableView13.setHeader(header: "Best average cash (\(generator.averageCash.minimumCashes)+)")
|
|
|
|
/////
|
|
|
|
self.label21.text = "Buy-in distribution"
|
|
self.label22.text = "First prizes distribution"
|
|
|
|
let barChartFrame = CGRect(x: 0, y: 0, width: 650, height: 500)
|
|
let buyinDistribBarChart = BarChart(frame: barChartFrame)
|
|
buyinDistribBarChart.data = generator.tournamentBuyinDistribution.barChartData
|
|
buyinDistribBarChart.setXAxisLabels(generator.tournamentBuyinDistribution.labels)
|
|
self.container21.addSubview(buyinDistribBarChart)
|
|
|
|
let firstPrizeDistributionBarChart = BarChart(frame: barChartFrame)
|
|
firstPrizeDistributionBarChart.data = generator.firstPrizeDistribution.barChartData
|
|
firstPrizeDistributionBarChart.setXAxisLabels(generator.firstPrizeDistribution.labels)
|
|
self.container22.addSubview(firstPrizeDistributionBarChart)
|
|
|
|
/////
|
|
|
|
self.tableView31.setHeader(header: "Events by prizepool")
|
|
self.tableView31.setData(data: generator.tourniesByPrizepool, maxRows: 5)
|
|
self.tableView32.setHeader(header: "Events by entries")
|
|
self.tableView32.setData(data: generator.tourniesByEntries, maxRows: 5)
|
|
self.tableView33.setHeader(header: "10k championship winners")
|
|
self.tableView33.setData(data: generator.championshipWinners, maxRows: Int.max)
|
|
|
|
/////
|
|
|
|
self.label41.text = "USA vs. World bracelets"
|
|
|
|
let USABraceletsDistribBarChart = BarChart(frame: barChartFrame)
|
|
USABraceletsDistribBarChart.data = generator.USAvsWorldWins.barChartData
|
|
USABraceletsDistribBarChart.setXAxisLabels(generator.USAvsWorldWins.labels)
|
|
self.container41.addSubview(USABraceletsDistribBarChart)
|
|
self.container41.addMaxConstraints(view: USABraceletsDistribBarChart)
|
|
|
|
let holdemDistributionBarChart = BarChart(frame: barChartFrame)
|
|
holdemDistributionBarChart.data = generator.gamesDistribution.barChartData
|
|
holdemDistributionBarChart.setXAxisLabels(generator.gamesDistribution.labels)
|
|
|
|
self.label51.text = "Average event"
|
|
let ds: TournamentStats? = generator.averageEvent.first
|
|
self.collectionView51.register(UINib(nibName: "StatCollectionViewCell", bundle: Bundle.main), forCellWithReuseIdentifier: "Stat")
|
|
self.collectionView51.dataSource = ds
|
|
self.collectionView51.delegate = ds
|
|
|
|
// let tableSizeDistributionBarChart = BarChart(frame: barChartFrame)
|
|
// tableSizeDistributionBarChart.data = generator.tableSizeDistribution.barChartData
|
|
// tableSizeDistributionBarChart.setXAxisLabels(generator.tableSizeDistribution.labels)
|
|
// self.containerTableSize.addSubview(tableSizeDistributionBarChart)
|
|
}
|
|
|
|
}
|
|
|