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..ba2518a8 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 @@ -14,19 +14,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 +40,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 +79,15 @@ class StatsFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource return TextFormat(NULL_TEXT) } + // Override + + override fun sessionsChanged() { + this.launchStatComputation() + this.statsAdapter.notifyDataSetChanged() + } + + // Business + /** * Init data */ @@ -94,11 +102,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 +114,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 +124,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..8c9a3c32 --- /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() { + + lateinit var 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