Merge branch 'master' of gitlab.com:stax-river/poker-analytics

feature/top10
Aurelien Hubert 7 years ago
commit e02c39188d
  1. 4
      app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt
  2. 14
      app/src/main/java/net/pokeranalytics/android/model/filter/Filterable.kt
  3. 31
      app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt
  4. 23
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/SessionObserverFragment.kt

@ -46,13 +46,13 @@ class PokerAnalyticsApplication : Application() {
val realm: Realm = Realm.getDefaultInstance() val realm: Realm = Realm.getDefaultInstance()
// Add observer on session time frame changes // Add observer on session time frame changes
this.sessions = realm.where(Session::class.java).findAll() // monitor session deletions this.sessions = realm.where(Session::class.java).findAll() // monitor session deletions
this.sessions?.addChangeListener { _, changeSet -> // this.sessions?.addChangeListener { _, changeSet ->
/* /*
val deletedSessions = val deletedSessions =
realm.where(Session::class.java).`in`("id", changeSet.deletions.toTypedArray()).findAll() realm.where(Session::class.java).`in`("id", changeSet.deletions.toTypedArray()).findAll()
deletedSessions.forEach { it.cleanup() } deletedSessions.forEach { it.cleanup() }
*/ */
} // }
if (BuildConfig.DEBUG) { if (BuildConfig.DEBUG) {
// Logs // Logs

@ -39,13 +39,13 @@ class FilterManager {
realmResults.where().greaterThan("test", 5).findAll() realmResults.where().greaterThan("test", 5).findAll()
} }
} }
//
fun MutableList<Filterable>.filter(filter: FilterComponent) : List<Filterable> { //fun MutableList<Filterable>.filter(filter: FilterComponent) : List<Filterable> {
//
return this.filter { f -> // return this.filter { f ->
return@filter true // return@filter true
} // }
} //}
// doesnt compile: Class "FilterableRealmObject" must contain at least 1 persistable field. // doesnt compile: Class "FilterableRealmObject" must contain at least 1 persistable field.

@ -5,7 +5,6 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import io.realm.Realm
import kotlinx.android.synthetic.main.fragment_stats.* import kotlinx.android.synthetic.main.fragment_stats.*
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
@ -14,19 +13,18 @@ import net.pokeranalytics.android.model.StatRepresentable
import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.ui.adapter.DisplayDescriptor import net.pokeranalytics.android.ui.adapter.DisplayDescriptor
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource
import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource
import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment import net.pokeranalytics.android.ui.fragment.components.SessionObserverFragment
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.ui.view.RowViewType
import net.pokeranalytics.android.ui.view.rowrepresentable.HeaderRowRepresentable import net.pokeranalytics.android.ui.view.rowrepresentable.HeaderRowRepresentable
import net.pokeranalytics.android.util.NULL_TEXT import net.pokeranalytics.android.util.NULL_TEXT
class StatsFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource { class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSource {
private var rowRepresentables: ArrayList<RowRepresentable> = ArrayList<RowRepresentable>() private var rowRepresentables: ArrayList<RowRepresentable> = ArrayList<RowRepresentable>()
private lateinit var statsAdapterRow: RowRepresentableAdapter private lateinit var statsAdapter: RowRepresentableAdapter
companion object { companion object {
@ -41,7 +39,7 @@ class StatsFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource
} }
} }
// Life Cycle
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_stats, container, false) return inflater.inflate(R.layout.fragment_stats, container, false)
@ -80,6 +78,15 @@ class StatsFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource
return TextFormat(NULL_TEXT) return TextFormat(NULL_TEXT)
} }
// Override
override fun sessionsChanged() {
this.launchStatComputation()
this.statsAdapter.notifyDataSetChanged()
}
// Business
/** /**
* Init data * Init data
*/ */
@ -93,12 +100,10 @@ class StatsFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource
runBlocking { runBlocking {
val realm = Realm.getDefaultInstance()
val allSessions = realm.where(Session::class.java).findAll()
val cgSessions = mutableListOf<Session>() val cgSessions = mutableListOf<Session>()
val tSessions = mutableListOf<Session>() val tSessions = mutableListOf<Session>()
allSessions.forEach { session -> super.sessions.forEach { session ->
if (session.isCashGame()) { if (session.isCashGame()) {
cgSessions.add(session) cgSessions.add(session)
} else { } else {
@ -107,7 +112,7 @@ class StatsFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource
} }
val allStats: List<Stat> = listOf(Stat.NETRESULT, Stat.HOURLY_RATE, Stat.AVERAGE, Stat.NUMBER_OF_GAMES, Stat.AVERAGE_DURATION, Stat.DURATION) val allStats: List<Stat> = listOf(Stat.NETRESULT, Stat.HOURLY_RATE, Stat.AVERAGE, Stat.NUMBER_OF_GAMES, Stat.AVERAGE_DURATION, Stat.DURATION)
val allSessionGroup = SessionGroup(getString(R.string.all), allSessions, allStats) val allSessionGroup = SessionGroup(getString(R.string.all), super.sessions, allStats)
val cgStats: List<Stat> = listOf(Stat.NETRESULT, Stat.HOURLY_RATE, Stat.NET_BB_PER_100_HANDS, Stat.HOURLY_RATE_BB, Stat.AVERAGE, Stat.STANDARD_DEVIATION_HOURLY, Stat.WIN_RATIO, Stat.NUMBER_OF_GAMES, Stat.AVERAGE_BUYIN) val cgStats: List<Stat> = listOf(Stat.NETRESULT, Stat.HOURLY_RATE, Stat.NET_BB_PER_100_HANDS, Stat.HOURLY_RATE_BB, Stat.AVERAGE, Stat.STANDARD_DEVIATION_HOURLY, Stat.WIN_RATIO, Stat.NUMBER_OF_GAMES, Stat.AVERAGE_BUYIN)
val cgSessionGroup = SessionGroup(getString(R.string.cash_game), cgSessions, cgStats) val cgSessionGroup = SessionGroup(getString(R.string.cash_game), cgSessions, cgStats)
val tStats: List<Stat> = listOf(Stat.NETRESULT, Stat.HOURLY_RATE, Stat.ROI, Stat.WIN_RATIO, Stat.NUMBER_OF_GAMES, Stat.AVERAGE_BUYIN) val tStats: List<Stat> = listOf(Stat.NETRESULT, Stat.HOURLY_RATE, Stat.ROI, Stat.WIN_RATIO, Stat.NUMBER_OF_GAMES, Stat.AVERAGE_BUYIN)
@ -117,18 +122,16 @@ class StatsFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource
} }
this.rowRepresentables = this.convertResultsIntoRepresentables(results) this.rowRepresentables = this.convertResultsIntoRepresentables(results)
this.statsAdapterRow = RowRepresentableAdapter(this) // StatsAdapter(this, null) this.statsAdapter = RowRepresentableAdapter(this) // StatsAdapter(this, null)
val viewManager = LinearLayoutManager(requireContext()) val viewManager = LinearLayoutManager(requireContext())
recyclerView.apply { recyclerView.apply {
setHasFixedSize(true) setHasFixedSize(true)
layoutManager = viewManager layoutManager = viewManager
adapter = statsAdapterRow adapter = statsAdapter
} }
} }

@ -0,0 +1,23 @@
package net.pokeranalytics.android.ui.fragment.components
import io.realm.Realm
import io.realm.RealmResults
import net.pokeranalytics.android.model.realm.Session
open class SessionObserverFragment : PokerAnalyticsFragment() {
val sessions: RealmResults<Session>
init {
val realm = Realm.getDefaultInstance()
this.sessions = realm.where(Session::class.java).findAll()
this.sessions.addChangeListener { _, _ ->
this.sessionsChanged()
}
}
open fun sessionsChanged() {
}
}
Loading…
Cancel
Save