// // 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) } }