hh
Laurent 6 years ago
parent c5ba4da06c
commit ec2586aadb
  1. 2
      app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt
  2. 12
      app/src/main/java/net/pokeranalytics/android/calculus/optimalduration/CashGameOptimalDurationCalculator.kt
  3. 4
      app/src/main/java/net/pokeranalytics/android/ui/modules/session/SessionFragment.kt

@ -76,7 +76,7 @@ class PokerAnalyticsApplication : Application() {
if (BuildConfig.DEBUG) { if (BuildConfig.DEBUG) {
Timber.d("UserPreferences.defaultCurrency: ${UserDefaults.currency.symbol}") Timber.d("UserPreferences.defaultCurrency: ${UserDefaults.currency.symbol}")
this.createFakeSessions() // this.createFakeSessions()
} }
Patcher.patchAll(this.applicationContext) Patcher.patchAll(this.applicationContext)

@ -8,6 +8,7 @@ import net.pokeranalytics.android.model.filter.QueryCondition
import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.model.realm.Session
import org.apache.commons.math3.fitting.PolynomialCurveFitter import org.apache.commons.math3.fitting.PolynomialCurveFitter
import org.apache.commons.math3.fitting.WeightedObservedPoints import org.apache.commons.math3.fitting.WeightedObservedPoints
import timber.log.Timber
import java.util.* import java.util.*
import kotlin.math.pow import kotlin.math.pow
import kotlin.math.round import kotlin.math.round
@ -44,13 +45,18 @@ class CashGameOptimalDurationCalculator {
val sessions = query.queryWith(realm.where(Session::class.java)).findAll() val sessions = query.queryWith(realm.where(Session::class.java)).findAll()
val sessionsByDuration = sessions.groupBy { val sessionsByDuration = sessions.groupBy {
round((it.netDuration / bucket).toDouble()) * bucket val dur = round((it.netDuration / bucket).toDouble()) * bucket
Timber.d("Stop notif > key: $dur")
dur
} }
// define validity interval // define validity interval
var start: Double? = null var start: Double? = null
var end: Double? = null var end: Double? = null
var validBuckets = 0 var validBuckets = 0
val hkeys = sessionsByDuration.keys.map { it / 3600 / 1000.0 }.sorted()
Timber.d("Stop notif > keys: $hkeys ")
for (key in sessionsByDuration.keys.sorted()) { for (key in sessionsByDuration.keys.sorted()) {
val sessionCount = sessionsByDuration[key]?.size ?: 0 val sessionCount = sessionsByDuration[key]?.size ?: 0
if (start == null && sessionCount >= minimumValidityCount) { if (start == null && sessionCount >= minimumValidityCount) {
@ -61,12 +67,15 @@ class CashGameOptimalDurationCalculator {
validBuckets++ validBuckets++
} }
} }
Timber.d("Stop notif > validBuckets: $validBuckets ")
if (!(start != null && end != null && (end - start) >= intervalValidity)) { if (!(start != null && end != null && (end - start) >= intervalValidity)) {
Timber.d("Stop notif > invalid setup: $start / $end ")
return null return null
} }
// define if we have enough sessions // define if we have enough sessions
if (sessions.size < 50) { if (sessions.size < 50) {
Timber.d("Stop notif > not enough sessions: ${sessions.size} ")
return null return null
} }
@ -115,6 +124,7 @@ class CashGameOptimalDurationCalculator {
return bestDuration return bestDuration
} }
Timber.d("Stop notif > not found, best duration: $bestDuration")
realm.close() realm.close()
return null return null
} }

@ -401,7 +401,7 @@ class SessionFragment : RealmFragment(), RowRepresentableDelegate {
if (!isDetached) { if (!isDetached) {
optimalDuration?.let { optimalDuration?.let {
val delay = 1000L // it.toLong() val delay = it.toLong()
scheduleNotification(delay, "stop notif tag") scheduleNotification(delay, "stop notif tag")
val formattedDuration = (it / 3600 / 1000).formattedHourlyDuration() val formattedDuration = (it / 3600 / 1000).formattedHourlyDuration()
@ -429,7 +429,7 @@ class SessionFragment : RealmFragment(), RowRepresentableDelegate {
.addTag(tag) .addTag(tag)
.build() .build()
WorkManager.getInstance().enqueue(work) WorkManager.getInstance(requireContext()).enqueue(work)
} }
/** /**

Loading…
Cancel
Save