Adds average tournament stats

master
Laurent 7 years ago
parent 0948cbcc35
commit 842bca17d1
  1. 4
      TournamentStats.xcodeproj/project.pbxproj
  2. BIN
      TournamentStats.xcodeproj/project.xcworkspace/xcuserdata/laurent.xcuserdatad/UserInterfaceState.xcuserstate
  3. 21
      TournamentStats/report/Queries.swift
  4. 11
      TournamentStats/report/ReportGenerator.swift
  5. 42
      TournamentStats/report/structures/TournamentStats.swift

@ -8,6 +8,7 @@
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
4DA5CA1E22AD078A00AC628E /* CountryCashes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DA5CA1D22AD078A00AC628E /* CountryCashes.swift */; }; 4DA5CA1E22AD078A00AC628E /* CountryCashes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DA5CA1D22AD078A00AC628E /* CountryCashes.swift */; };
4DDEF11422AE4FB900F4D7C1 /* TournamentStats.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DDEF11322AE4FB900F4D7C1 /* TournamentStats.swift */; };
4DF7608422A3FB96004B0EF1 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DF7608322A3FB96004B0EF1 /* AppDelegate.swift */; }; 4DF7608422A3FB96004B0EF1 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DF7608322A3FB96004B0EF1 /* AppDelegate.swift */; };
4DF7608622A3FB96004B0EF1 /* MasterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DF7608522A3FB96004B0EF1 /* MasterViewController.swift */; }; 4DF7608622A3FB96004B0EF1 /* MasterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DF7608522A3FB96004B0EF1 /* MasterViewController.swift */; };
4DF7608822A3FB96004B0EF1 /* DetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DF7608722A3FB96004B0EF1 /* DetailViewController.swift */; }; 4DF7608822A3FB96004B0EF1 /* DetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DF7608722A3FB96004B0EF1 /* DetailViewController.swift */; };
@ -109,6 +110,7 @@
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
4DA5CA1D22AD078A00AC628E /* CountryCashes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CountryCashes.swift; sourceTree = "<group>"; }; 4DA5CA1D22AD078A00AC628E /* CountryCashes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CountryCashes.swift; sourceTree = "<group>"; };
4DDEF11322AE4FB900F4D7C1 /* TournamentStats.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TournamentStats.swift; sourceTree = "<group>"; };
4DF7608022A3FB96004B0EF1 /* TournamentStats.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TournamentStats.app; sourceTree = BUILT_PRODUCTS_DIR; }; 4DF7608022A3FB96004B0EF1 /* TournamentStats.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TournamentStats.app; sourceTree = BUILT_PRODUCTS_DIR; };
4DF7608322A3FB96004B0EF1 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; 4DF7608322A3FB96004B0EF1 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
4DF7608522A3FB96004B0EF1 /* MasterViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MasterViewController.swift; sourceTree = "<group>"; }; 4DF7608522A3FB96004B0EF1 /* MasterViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MasterViewController.swift; sourceTree = "<group>"; };
@ -404,6 +406,7 @@
4DF7614E22A6CF93004B0EF1 /* PlayerResult.swift */, 4DF7614E22A6CF93004B0EF1 /* PlayerResult.swift */,
4DF7615022A7AECA004B0EF1 /* TournamentRepresentable.swift */, 4DF7615022A7AECA004B0EF1 /* TournamentRepresentable.swift */,
4DA5CA1D22AD078A00AC628E /* CountryCashes.swift */, 4DA5CA1D22AD078A00AC628E /* CountryCashes.swift */,
4DDEF11322AE4FB900F4D7C1 /* TournamentStats.swift */,
); );
path = structures; path = structures;
sourceTree = "<group>"; sourceTree = "<group>";
@ -605,6 +608,7 @@
4DF7615122A7AECA004B0EF1 /* TournamentRepresentable.swift in Sources */, 4DF7615122A7AECA004B0EF1 /* TournamentRepresentable.swift in Sources */,
4DF7608622A3FB96004B0EF1 /* MasterViewController.swift in Sources */, 4DF7608622A3FB96004B0EF1 /* MasterViewController.swift in Sources */,
4DF7608422A3FB96004B0EF1 /* AppDelegate.swift in Sources */, 4DF7608422A3FB96004B0EF1 /* AppDelegate.swift in Sources */,
4DDEF11422AE4FB900F4D7C1 /* TournamentStats.swift in Sources */,
4DF760A722A3FD12004B0EF1 /* Model.swift in Sources */, 4DF760A722A3FD12004B0EF1 /* Model.swift in Sources */,
4DF7614F22A6CF93004B0EF1 /* PlayerResult.swift in Sources */, 4DF7614F22A6CF93004B0EF1 /* PlayerResult.swift in Sources */,
4DF7614622A59407004B0EF1 /* CumulatedResults.swift in Sources */, 4DF7614622A59407004B0EF1 /* CumulatedResults.swift in Sources */,

@ -116,4 +116,25 @@ class Queries {
return countryCashes return countryCashes
} }
static func averageEvent(realm: Realm) -> [TournamentStats] {
let tournaments: Results<Tournament> = realm.objects(Tournament.self)
let entries: Double? = tournaments.average(ofProperty: "entries")
let buyin: Double? = tournaments.average(ofProperty: "buyin")
let prizepool: Double? = tournaments.average(ofProperty: "prizepool")
// let itmCount: Double? = tournaments.sum(ofProperty: "results.count")
let itmCount: Double = tournaments.reduce(0.0) { $0 + Double($1.results.count) }
let avgItmCount = itmCount / Double(tournaments.count)
if let entries = entries, let buyin = buyin, let prizepool = prizepool {
let itm = prizepool / avgItmCount
let ts = TournamentStats(entries: entries, buyin: buyin, prizepool: prizepool, itmValue: itm)
return [ts]
}
return []
}
} }

@ -50,11 +50,8 @@ class ReportGenerator {
let realm = try! Realm() let realm = try! Realm()
let winners = Queries.biggestWinners(realm: realm) Queries.biggestWinners(realm: realm).writeHTML(fileName: "reports/earningsLeaderboard.html")
winners.writeHTML(fileName: "reports/earningsLeaderboard.html") Queries.mostCashes(realm: realm).writeHTML(fileName: "reports/mostCashes.html", limit: 25)
let mostCashes = Queries.mostCashes(realm: realm)
mostCashes.writeHTML(fileName: "reports/mostCashes.html", limit: 25)
let tournamentWinners = Queries.allWinnersSortedByEvent(realm: realm) let tournamentWinners = Queries.allWinnersSortedByEvent(realm: realm)
tournamentWinners.writeHTML(fileName: "reports/allWinners.html", limit: nil) tournamentWinners.writeHTML(fileName: "reports/allWinners.html", limit: nil)
@ -81,8 +78,8 @@ class ReportGenerator {
tourniesByPrizepool.writeHTML(fileName: "reports/tourniesByPrizepool.html", limit: nil) tourniesByPrizepool.writeHTML(fileName: "reports/tourniesByPrizepool.html", limit: nil)
tourniesByPrizepool.writeHTML(fileName: "reports/tourniesByPrizepool_top5.html", limit: 5) tourniesByPrizepool.writeHTML(fileName: "reports/tourniesByPrizepool_top5.html", limit: 5)
let countryCashes = Queries.cashesByCountry(realm: realm) Queries.cashesByCountry(realm: realm).writeHTML(fileName: "reports/countryCashes.html")
countryCashes.writeHTML(fileName: "reports/countryCashes.html") Queries.averageEvent(realm: realm).writeHTML(fileName: "reports/averageEvent.html")
} }

@ -0,0 +1,42 @@
//
// TournamentStats.swift
// TournamentStats
//
// Created by Laurent Morvillier on 10/06/2019.
// Copyright © 2019 Stax River. All rights reserved.
//
import Foundation
struct TournamentStats : HTMLRepresentable {
var entries: Double
var buyin: Double
var prizepool: Double
var itmValue: Double
static func htmlHeaders() -> String {
return ""
}
func html() -> String {
let formatter = NumberFormatter()
var strings: [(String, String)] = []
strings.append(("Entries", formatter.string(from: NSNumber(value: self.entries))!))
strings.append(("Buy-in", Formatter.currency.string(from: NSNumber(value: self.buyin))!))
strings.append(("Prizepool", Formatter.currency.string(from: NSNumber(value: self.prizepool))!))
strings.append(("Earnings", Formatter.currency.string(from: NSNumber(value: self.itmValue))!))
var all = ""
strings.forEach { (tuple) in
let table = [tuple.0, tuple.1]
let joined = table.joined(separator: "</td><td>")
all.append("<tr><td>")
all.append(joined)
all.append("</td></tr>\n")
}
return all
}
}
Loading…
Cancel
Save