diff --git a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt index a76267ca..0d7c697b 100644 --- a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt +++ b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt @@ -46,13 +46,13 @@ class PokerAnalyticsApplication : Application() { val realm: Realm = Realm.getDefaultInstance() // Add observer on session time frame changes this.sessions = realm.where(Session::class.java).findAll() // monitor session deletions - this.sessions?.addChangeListener { _, changeSet -> +// this.sessions?.addChangeListener { _, changeSet -> /* val deletedSessions = realm.where(Session::class.java).`in`("id", changeSet.deletions.toTypedArray()).findAll() deletedSessions.forEach { it.cleanup() } */ - } +// } if (BuildConfig.DEBUG) { // Logs diff --git a/app/src/main/java/net/pokeranalytics/android/model/filter/Filterable.kt b/app/src/main/java/net/pokeranalytics/android/model/filter/Filterable.kt index 56875b83..edd10a97 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/filter/Filterable.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/filter/Filterable.kt @@ -39,13 +39,13 @@ class FilterManager { realmResults.where().greaterThan("test", 5).findAll() } } - -fun MutableList.filter(filter: FilterComponent) : List { - - return this.filter { f -> - return@filter true - } -} +// +//fun MutableList.filter(filter: FilterComponent) : List { +// +// return this.filter { f -> +// return@filter true +// } +//} // doesnt compile: Class "FilterableRealmObject" must contain at least 1 persistable field. diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt index 3509ae71..4fa1cd8f 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt @@ -5,7 +5,6 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.LinearLayoutManager -import io.realm.Realm import kotlinx.android.synthetic.main.fragment_stats.* import kotlinx.coroutines.runBlocking 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.ui.adapter.DisplayDescriptor 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.fragment.components.PokerAnalyticsFragment +import net.pokeranalytics.android.ui.fragment.components.SessionObserverFragment import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.ui.view.rowrepresentable.HeaderRowRepresentable import net.pokeranalytics.android.util.NULL_TEXT -class StatsFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource { +class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSource { private var rowRepresentables: ArrayList = ArrayList() - private lateinit var statsAdapterRow: RowRepresentableAdapter + private lateinit var statsAdapter: RowRepresentableAdapter companion object { @@ -41,7 +39,7 @@ class StatsFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource } } - + // Life Cycle override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater.inflate(R.layout.fragment_stats, container, false) @@ -80,6 +78,15 @@ class StatsFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource return TextFormat(NULL_TEXT) } + // Override + + override fun sessionsChanged() { + this.launchStatComputation() + this.statsAdapter.notifyDataSetChanged() + } + + // Business + /** * Init data */ @@ -93,12 +100,10 @@ class StatsFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource runBlocking { - val realm = Realm.getDefaultInstance() - val allSessions = realm.where(Session::class.java).findAll() val cgSessions = mutableListOf() val tSessions = mutableListOf() - allSessions.forEach { session -> + super.sessions.forEach { session -> if (session.isCashGame()) { cgSessions.add(session) } else { @@ -107,7 +112,7 @@ class StatsFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource } val allStats: List = 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 = 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 tStats: List = 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.statsAdapterRow = RowRepresentableAdapter(this) // StatsAdapter(this, null) - + this.statsAdapter = RowRepresentableAdapter(this) // StatsAdapter(this, null) val viewManager = LinearLayoutManager(requireContext()) recyclerView.apply { setHasFixedSize(true) layoutManager = viewManager - adapter = statsAdapterRow + adapter = statsAdapter } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/SessionObserverFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/SessionObserverFragment.kt new file mode 100644 index 00000000..c3513e9d --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/SessionObserverFragment.kt @@ -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 + + init { + val realm = Realm.getDefaultInstance() + this.sessions = realm.where(Session::class.java).findAll() + this.sessions.addChangeListener { _, _ -> + this.sessionsChanged() + } + } + + open fun sessionsChanged() { + + } + +} \ No newline at end of file