|
|
|
|
@ -11,6 +11,7 @@ import net.pokeranalytics.android.model.filter.Query |
|
|
|
|
import net.pokeranalytics.android.model.filter.filter |
|
|
|
|
import net.pokeranalytics.android.model.realm.* |
|
|
|
|
import net.pokeranalytics.android.util.extensions.startOfDay |
|
|
|
|
import timber.log.Timber |
|
|
|
|
import java.util.* |
|
|
|
|
import kotlin.math.max |
|
|
|
|
import kotlin.math.min |
|
|
|
|
@ -200,7 +201,7 @@ class Calculator { |
|
|
|
|
fun computeGroups(realm: Realm, groups: List<ComputableGroup>, options: Options = Options()): Report { |
|
|
|
|
|
|
|
|
|
val report = Report(options) |
|
|
|
|
groups.forEach { group -> |
|
|
|
|
for (group in groups) { |
|
|
|
|
|
|
|
|
|
// Clean existing computables / sessionSets if group is reused |
|
|
|
|
group.cleanup() |
|
|
|
|
@ -251,6 +252,8 @@ class Calculator { |
|
|
|
|
// Timber.d("$$$ buyin = ${it.ratedBuyin} $$$ net result = ${it.ratedNet}") |
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
val d1 = Date() |
|
|
|
|
|
|
|
|
|
var ratedNet = computables.sum(ComputableResult.Field.RATED_NET.identifier).toDouble() |
|
|
|
|
if (options.includedTransactions.isNotEmpty()) { |
|
|
|
|
for (transactionType in options.includedTransactions) { |
|
|
|
|
@ -331,6 +334,7 @@ class Calculator { |
|
|
|
|
averageBB = bbSum / bbSessionCount |
|
|
|
|
results.addStat(AVERAGE_NET_BB, averageBB) |
|
|
|
|
} |
|
|
|
|
val d2 = Date() |
|
|
|
|
|
|
|
|
|
val shouldIterateOverComputables = |
|
|
|
|
(options.progressValues == Options.ProgressValues.STANDARD || options.computeLongestStreak) |
|
|
|
|
@ -350,7 +354,7 @@ class Calculator { |
|
|
|
|
var currentStreak = 0 |
|
|
|
|
var tITMCount = 0 |
|
|
|
|
|
|
|
|
|
computables.forEach { computable -> |
|
|
|
|
for (computable in computables) { |
|
|
|
|
index++ |
|
|
|
|
tSum += computable.ratedNet |
|
|
|
|
tBBSum += computable.bbNet |
|
|
|
|
@ -415,6 +419,8 @@ class Calculator { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
val d3 = Date() |
|
|
|
|
|
|
|
|
|
val sessionSets = computableGroup.sessionSets(realm, options.shouldSortValues) |
|
|
|
|
results.addStat(NUMBER_OF_SETS, sessionSets.size.toDouble()) |
|
|
|
|
|
|
|
|
|
@ -449,7 +455,7 @@ class Calculator { |
|
|
|
|
val daysSet = mutableSetOf<Date>() |
|
|
|
|
var tMaxDuration = 0.0 |
|
|
|
|
|
|
|
|
|
sessionSets.forEach { sessionSet -> |
|
|
|
|
for (sessionSet in sessionSets) { |
|
|
|
|
tIndex++ |
|
|
|
|
|
|
|
|
|
val setStats = SSStats(sessionSet, computableGroup.query) |
|
|
|
|
@ -529,6 +535,8 @@ class Calculator { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
val d4 = Date() |
|
|
|
|
|
|
|
|
|
var hourlyRate = 0.0 |
|
|
|
|
if (gHourlyDuration != null) { |
|
|
|
|
|
|
|
|
|
@ -561,10 +569,10 @@ class Calculator { |
|
|
|
|
var stdSum = 0.0 |
|
|
|
|
var stdBBSum = 0.0 |
|
|
|
|
var stdBBper100HandsSum = 0.0 |
|
|
|
|
computables.forEach { session -> |
|
|
|
|
stdSum += (session.ratedNet - average).pow(2.0) |
|
|
|
|
stdBBSum += (session.bbNet - averageBB).pow(2.0) |
|
|
|
|
stdBBper100HandsSum += (session.bbPer100Hands - bbPer100Hands).pow(2.0) |
|
|
|
|
for (computable in computables) { |
|
|
|
|
stdSum += (computable.ratedNet - average).pow(2.0) |
|
|
|
|
stdBBSum += (computable.bbNet - averageBB).pow(2.0) |
|
|
|
|
stdBBper100HandsSum += (computable.bbPer100Hands - bbPer100Hands).pow(2.0) |
|
|
|
|
} |
|
|
|
|
val standardDeviation = sqrt(stdSum / computables.size) |
|
|
|
|
val standardDeviationBB = sqrt(stdBBSum / computables.size) |
|
|
|
|
@ -577,7 +585,7 @@ class Calculator { |
|
|
|
|
// Session Set |
|
|
|
|
if (gHourlyDuration != null) { |
|
|
|
|
var hourlyStdSum = 0.0 |
|
|
|
|
sessionSets.forEach { set -> |
|
|
|
|
for (set in sessionSets) { |
|
|
|
|
val ssStats = SSStats(set, computableGroup.query) |
|
|
|
|
val sHourlyRate = ssStats.hourlyRate |
|
|
|
|
hourlyStdSum += (sHourlyRate - hourlyRate).pow(2.0) |
|
|
|
|
@ -588,6 +596,16 @@ class Calculator { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
val d5 = Date() |
|
|
|
|
|
|
|
|
|
val s1 = d2.time - d1.time |
|
|
|
|
val s2 = d3.time - d2.time |
|
|
|
|
val s3 = d4.time - d3.time |
|
|
|
|
val s4 = d5.time - d4.time |
|
|
|
|
Timber.d("Section 1 = $s1") |
|
|
|
|
Timber.d("Section 2 = $s2") |
|
|
|
|
Timber.d("Section 3 = $s3") |
|
|
|
|
Timber.d("Section 4 = $s4") |
|
|
|
|
|
|
|
|
|
return results |
|
|
|
|
} |
|
|
|
|
|