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

dev
Aurelien Hubert 7 years ago
commit 880014f7bb
  1. 11
      app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarFragment.kt
  2. 25
      app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt
  3. 36
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/RealmFragment.kt
  4. 37
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/ResultsObserverFragment.kt
  5. 6
      app/src/main/java/net/pokeranalytics/android/ui/fragment/data/DataManagerFragment.kt
  6. 4
      app/src/main/java/net/pokeranalytics/android/ui/fragment/data/EditableDataFragment.kt

@ -7,6 +7,7 @@ import android.view.ViewGroup
import androidx.recyclerview.widget.LinearLayoutManager
import com.google.android.material.tabs.TabLayout
import io.realm.Realm
import io.realm.RealmModel
import kotlinx.android.synthetic.main.fragment_calendar.*
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
@ -19,13 +20,15 @@ import net.pokeranalytics.android.calculus.Stat
import net.pokeranalytics.android.model.Criteria
import net.pokeranalytics.android.model.combined
import net.pokeranalytics.android.model.filter.QueryCondition
import net.pokeranalytics.android.model.realm.ComputableResult
import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.ui.activity.CalendarDetailsActivity
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource
import net.pokeranalytics.android.ui.extensions.hideWithAnimation
import net.pokeranalytics.android.ui.extensions.showWithAnimation
import net.pokeranalytics.android.ui.fragment.components.ResultsObserverFragment
import net.pokeranalytics.android.ui.fragment.components.RealmFragment
import net.pokeranalytics.android.ui.view.CalendarTabs
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType
@ -36,7 +39,7 @@ import java.util.*
import kotlin.coroutines.CoroutineContext
class CalendarFragment : ResultsObserverFragment(), CoroutineScope, StaticRowRepresentableDataSource,
class CalendarFragment : RealmFragment(), CoroutineScope, StaticRowRepresentableDataSource,
RowRepresentableDelegate {
enum class TimeFilter {
@ -113,7 +116,9 @@ class CalendarFragment : ResultsObserverFragment(), CoroutineScope, StaticRowRep
}
}
override fun sessionsChanged() {
override val observedEntities: List<Class<out RealmModel>> = listOf(ComputableResult::class.java)
override fun entitiesChanged() {
launchStatComputation()
}

@ -7,6 +7,7 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import io.realm.Realm
import io.realm.RealmModel
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.async
@ -18,9 +19,10 @@ import net.pokeranalytics.android.calculus.Report
import net.pokeranalytics.android.calculus.Stat
import net.pokeranalytics.android.model.filter.Query
import net.pokeranalytics.android.model.filter.QueryCondition
import net.pokeranalytics.android.model.realm.ComputableResult
import net.pokeranalytics.android.model.realm.Filter
import net.pokeranalytics.android.ui.activity.FiltersActivity
import net.pokeranalytics.android.ui.fragment.components.ResultsObserverFragment
import net.pokeranalytics.android.ui.fragment.components.RealmFragment
import net.pokeranalytics.android.ui.fragment.report.ComposableTableReportFragment
import net.pokeranalytics.android.ui.interfaces.FilterActivityRequestCode
import net.pokeranalytics.android.ui.interfaces.FilterHandler
@ -29,7 +31,7 @@ import timber.log.Timber
import java.util.*
import kotlin.coroutines.CoroutineContext
class StatisticsFragment : ResultsObserverFragment(), FilterHandler {
class StatisticsFragment : RealmFragment(), FilterHandler {
val coroutineContext: CoroutineContext
get() = Dispatchers.Main
@ -70,7 +72,9 @@ class StatisticsFragment : ResultsObserverFragment(), FilterHandler {
this.tableReportFragment = fragment
}
override fun sessionsChanged() {
override val observedEntities: List<Class<out RealmModel>> = listOf(ComputableResult::class.java)
override fun entitiesChanged() {
this.launchStatComputation()
}
@ -100,11 +104,11 @@ class StatisticsFragment : ResultsObserverFragment(), FilterHandler {
}
override fun applyFilter() {
this.sessionsChanged()
this.entitiesChanged()
}
override fun removeFilter() {
this.sessionsChanged()
this.entitiesChanged()
}
override var currentFilterable: FilterableType = FilterableType.SESSION
@ -147,7 +151,7 @@ class StatisticsFragment : ResultsObserverFragment(), FilterHandler {
*/
private fun createSessionGroupsAndStartCompute(realm: Realm): Report {
val filter : Filter? = this.currentFilter(this.requireContext(), realm)
val filter: Filter? = this.currentFilter(this.requireContext(), realm)
val allStats: List<Stat> = listOf(
Stat.NET_RESULT,
@ -174,7 +178,14 @@ class StatisticsFragment : ResultsObserverFragment(), FilterHandler {
)
val cgSessionGroup = ComputableGroup(Query(QueryCondition.IsCash).merge(query), cgStats)
val tStats: List<Stat> =
listOf(Stat.NET_RESULT, Stat.HOURLY_RATE, Stat.ROI, Stat.WIN_RATIO, Stat.NUMBER_OF_GAMES, Stat.AVERAGE_BUYIN)
listOf(
Stat.NET_RESULT,
Stat.HOURLY_RATE,
Stat.ROI,
Stat.WIN_RATIO,
Stat.NUMBER_OF_GAMES,
Stat.AVERAGE_BUYIN
)
val tSessionGroup = ComputableGroup(Query(QueryCondition.IsTournament).merge(query), tStats)
Timber.d(">>>>> Start computations...")

@ -5,18 +5,44 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import io.realm.Realm
import io.realm.RealmModel
import io.realm.RealmResults
open class RealmFragment : PokerAnalyticsFragment() {
/**
* A realm instance
*/
private lateinit var realm: Realm
/**
* A List of observed RealmResults
*/
private var observedRealmResults: MutableList<RealmResults<*>> = mutableListOf()
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
realm = Realm.getDefaultInstance()
this.observedEntities.forEach {
val realmResults = realm.where(it).findAll()
realmResults.addChangeListener { _,_ ->
this.entitiesChanged()
}
this.observedRealmResults.add(realmResults)
}
return super.onCreateView(inflater, container, savedInstanceState)
}
override fun onDestroyView() {
super.onDestroyView()
this.observedRealmResults.forEach {
it.removeAllChangeListeners()
}
this.realm.close()
}
@ -27,4 +53,14 @@ open class RealmFragment : PokerAnalyticsFragment() {
return this.realm
}
/**
* A list of RealmModel classes to observe
*/
open val observedEntities: List<Class<out RealmModel>> = listOf()
/**
* The method called when a change happened in any RealmResults
*/
open fun entitiesChanged() {}
}

@ -1,37 +0,0 @@
package net.pokeranalytics.android.ui.fragment.components
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import io.realm.RealmResults
import net.pokeranalytics.android.model.realm.ComputableResult
open class ResultsObserverFragment : RealmFragment() {
private lateinit var computableResults: RealmResults<ComputableResult>
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = super.onCreateView(inflater, container, savedInstanceState)
// ComputableResult are existing only if sessions are ended
this.computableResults = getRealm().where(ComputableResult::class.java).findAll()
this.computableResults.addChangeListener { _, _ ->
this.sessionsChanged()
}
return view
}
override fun onDestroyView() {
super.onDestroyView()
computableResults.removeAllChangeListeners()
}
open fun sessionsChanged() {
// to override
}
}

@ -44,7 +44,7 @@ open class DataManagerFragment : RealmFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
initData()
loadItem()
}
override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
@ -74,10 +74,10 @@ open class DataManagerFragment : RealmFragment() {
/**
* Init data
*/
protected open fun initData() {
private fun loadItem() {
this.deleteButtonShouldAppear = this.primaryKey != null
this.item = this.liveDataType.updateOrCreate(this.getRealm(), primaryKey)
this.deleteButtonShouldAppear = this.primaryKey != null
}

@ -11,7 +11,6 @@ import kotlinx.android.synthetic.main.fragment_editable_data.view.*
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.LiveData
import net.pokeranalytics.android.model.interfaces.Editable
import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
@ -87,8 +86,7 @@ open class EditableDataFragment : DataManagerFragment(), RowRepresentableDelegat
return this.item as RowRepresentableDataSource
}
override fun initData() {
super.initData()
open fun initData() {
val dataSource = getDataSource()
this.rowRepresentableAdapter = RowRepresentableAdapter(getDataSource(), this)

Loading…
Cancel
Save