Fix & improve Filter management

dev
Aurelien Hubert 7 years ago
parent 5a73c8e41b
commit ef509213fd
  1. 10
      app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarFragment.kt
  2. 10
      app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt
  3. 7
      app/src/main/java/net/pokeranalytics/android/ui/fragment/MoreFragment.kt
  4. 9
      app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportsFragment.kt
  5. 16
      app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt

@ -21,7 +21,6 @@ import net.pokeranalytics.android.model.Criteria
import net.pokeranalytics.android.model.combined import net.pokeranalytics.android.model.combined
import net.pokeranalytics.android.model.filter.QueryCondition import net.pokeranalytics.android.model.filter.QueryCondition
import net.pokeranalytics.android.model.realm.ComputableResult 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.activity.CalendarDetailsActivity
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
@ -29,6 +28,7 @@ import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource
import net.pokeranalytics.android.ui.extensions.hideWithAnimation import net.pokeranalytics.android.ui.extensions.hideWithAnimation
import net.pokeranalytics.android.ui.extensions.showWithAnimation import net.pokeranalytics.android.ui.extensions.showWithAnimation
import net.pokeranalytics.android.ui.fragment.components.RealmFragment import net.pokeranalytics.android.ui.fragment.components.RealmFragment
import net.pokeranalytics.android.ui.interfaces.FragmentVisibility
import net.pokeranalytics.android.ui.view.CalendarTabs import net.pokeranalytics.android.ui.view.CalendarTabs
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
@ -39,8 +39,8 @@ import java.util.*
import kotlin.coroutines.CoroutineContext import kotlin.coroutines.CoroutineContext
class CalendarFragment : RealmFragment(), CoroutineScope, StaticRowRepresentableDataSource, class CalendarFragmentVisibility : RealmFragment(), CoroutineScope, StaticRowRepresentableDataSource,
RowRepresentableDelegate { RowRepresentableDelegate, FragmentVisibility {
enum class TimeFilter { enum class TimeFilter {
MONTH, YEAR MONTH, YEAR
@ -51,8 +51,8 @@ class CalendarFragment : RealmFragment(), CoroutineScope, StaticRowRepresentable
/** /**
* Create new instance * Create new instance
*/ */
fun newInstance(): CalendarFragment { fun newInstance(): CalendarFragmentVisibility {
val fragment = CalendarFragment() val fragment = CalendarFragmentVisibility()
val bundle = Bundle() val bundle = Bundle()
fragment.arguments = bundle fragment.arguments = bundle
return fragment return fragment

@ -36,15 +36,15 @@ import java.text.SimpleDateFormat
import java.util.* import java.util.*
class FeedFragment : FilterableFragment(), RowRepresentableDelegate { class FeedFragmentVisibility : FilterableFragment(), RowRepresentableDelegate {
companion object { companion object {
const val REQUEST_CODE_MENU = 100 const val REQUEST_CODE_MENU = 100
const val REQUEST_CODE_TRANSACTION_DETAILS = 101 const val REQUEST_CODE_TRANSACTION_DETAILS = 101
fun newInstance(): FeedFragment { fun newInstance(): FeedFragmentVisibility {
val fragment = FeedFragment() val fragment = FeedFragmentVisibility()
val bundle = Bundle() val bundle = Bundle()
fragment.arguments = bundle fragment.arguments = bundle
return fragment return fragment
@ -103,7 +103,7 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate {
super.setUserVisibleHint(isVisibleToUser) super.setUserVisibleHint(isVisibleToUser)
if (isVisibleToUser && view != null) { if (isVisibleToUser && view != null) {
if (FilterHandler.filterWasUpdated) { if (FilterHandler.filterWasUpdated) {
this.initData() applyFilter()
FilterHandler.filterWasUpdated = false FilterHandler.filterWasUpdated = false
} }
} }
@ -204,7 +204,6 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate {
val pendingSessions = sessionFilter?.let { getRealm().where<Session>().alwaysFalse().findAll() } ?: run { getRealm().where<Session>().isNull("year").isNull("month").findAll().sort("startDate", Sort.DESCENDING) } val pendingSessions = sessionFilter?.let { getRealm().where<Session>().alwaysFalse().findAll() } ?: run { getRealm().where<Session>().isNull("year").isNull("month").findAll().sort("startDate", Sort.DESCENDING) }
val distinctDateSessions = sessionFilter?.results("year", "month") ?: run { getRealm().where<Session>().distinct("year", "month").findAll() }.sort("startDate", Sort.DESCENDING) val distinctDateSessions = sessionFilter?.results("year", "month") ?: run { getRealm().where<Session>().distinct("year", "month").findAll() }.sort("startDate", Sort.DESCENDING)
this.feedSessionAdapter = FeedSessionRowRepresentableAdapter(this, realmSessions, pendingSessions, distinctDateSessions) this.feedSessionAdapter = FeedSessionRowRepresentableAdapter(this, realmSessions, pendingSessions, distinctDateSessions)
recyclerView.adapter = feedSessionAdapter
} }
private fun loadTransactions(filter : Filter? = null) { private fun loadTransactions(filter : Filter? = null) {
@ -304,6 +303,7 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate {
override fun removeFilter() { override fun removeFilter() {
super.removeFilter() super.removeFilter()
Timber.d("removeFilter")
this.loadSessions() this.loadSessions()
this.loadTransactions() this.loadTransactions()
if (currentFilterable== FilterableType.SESSION) { if (currentFilterable== FilterableType.SESSION) {

@ -13,18 +13,19 @@ import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
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.PokerAnalyticsFragment
import net.pokeranalytics.android.ui.interfaces.FragmentVisibility
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.rowrepresentable.MoreTabRow import net.pokeranalytics.android.ui.view.rowrepresentable.MoreTabRow
class MoreFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate { class MoreFragmentVisibility : PokerAnalyticsFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate, FragmentVisibility {
companion object { companion object {
/** /**
* Create new instance * Create new instance
*/ */
fun newInstance(): MoreFragment { fun newInstance(): MoreFragmentVisibility {
val fragment = MoreFragment() val fragment = MoreFragmentVisibility()
val bundle = Bundle() val bundle = Bundle()
fragment.arguments = bundle fragment.arguments = bundle
return fragment return fragment

@ -29,6 +29,7 @@ import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource
import net.pokeranalytics.android.ui.fragment.components.DeletableItemFragment import net.pokeranalytics.android.ui.fragment.components.DeletableItemFragment
import net.pokeranalytics.android.ui.interfaces.FragmentVisibility
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.CustomizableRowRepresentable import net.pokeranalytics.android.ui.view.rowrepresentable.CustomizableRowRepresentable
@ -36,7 +37,7 @@ import net.pokeranalytics.android.ui.view.rowrepresentable.ReportRow
import timber.log.Timber import timber.log.Timber
import java.util.* import java.util.*
class ReportsFragment : DeletableItemFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate { class ReportsFragmentVisibility : DeletableItemFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate, FragmentVisibility {
// private lateinit var dataListAdapter: RowRepresentableAdapter // private lateinit var dataListAdapter: RowRepresentableAdapter
private lateinit var reportSetups: RealmResults<ReportSetup> private lateinit var reportSetups: RealmResults<ReportSetup>
@ -51,8 +52,8 @@ class ReportsFragment : DeletableItemFragment(), StaticRowRepresentableDataSourc
/** /**
* Create new instance * Create new instance
*/ */
fun newInstance(): ReportsFragment { fun newInstance(): ReportsFragmentVisibility {
val fragment = ReportsFragment() val fragment = ReportsFragmentVisibility()
val bundle = Bundle() val bundle = Bundle()
fragment.arguments = bundle fragment.arguments = bundle
return fragment return fragment
@ -198,7 +199,7 @@ class ReportsFragment : DeletableItemFragment(), StaticRowRepresentableDataSourc
launch(Dispatchers.Main) { launch(Dispatchers.Main) {
if (!isDetached) { if (!isDetached) {
hideLoader() hideLoader()
ReportActivity.newInstanceForResult(this@ReportsFragment, report, reportName) ReportActivity.newInstanceForResult(this@ReportsFragmentVisibility, report, reportName)
} }
} }
realm.close() realm.close()

@ -31,7 +31,7 @@ import timber.log.Timber
import java.util.* import java.util.*
import kotlin.coroutines.CoroutineContext import kotlin.coroutines.CoroutineContext
class StatisticsFragment : FilterableFragment(), FilterHandler { class StatisticsFragmentVisibility : FilterableFragment(), FilterHandler {
val coroutineContext: CoroutineContext val coroutineContext: CoroutineContext
get() = Dispatchers.Main get() = Dispatchers.Main
@ -43,8 +43,8 @@ class StatisticsFragment : FilterableFragment(), FilterHandler {
/** /**
* Create new instance * Create new instance
*/ */
fun newInstance(): StatisticsFragment { fun newInstance(): StatisticsFragmentVisibility {
val fragment = StatisticsFragment() val fragment = StatisticsFragmentVisibility()
val bundle = Bundle() val bundle = Bundle()
fragment.arguments = bundle fragment.arguments = bundle
return fragment return fragment
@ -64,15 +64,17 @@ class StatisticsFragment : FilterableFragment(), FilterHandler {
launchStatComputation() launchStatComputation()
} }
/*
override fun setUserVisibleHint(isVisibleToUser: Boolean) { override fun setUserVisibleHint(isVisibleToUser: Boolean) {
super.setUserVisibleHint(isVisibleToUser) super.setUserVisibleHint(isVisibleToUser)
if (isVisibleToUser) { if (isVisibleToUser && view != null) {
if (FilterHandler.filterWasUpdated) { if (FilterHandler.filterWasUpdated) {
this.launchStatComputation() applyFilter()
FilterHandler.filterWasUpdated = false FilterHandler.filterWasUpdated = false
} }
} }
} }
*/
private fun initUI() { private fun initUI() {
val fragmentTransaction = requireFragmentManager().beginTransaction() val fragmentTransaction = requireFragmentManager().beginTransaction()
@ -110,14 +112,16 @@ class StatisticsFragment : FilterableFragment(), FilterHandler {
// Filter Handler // Filter Handler
override fun createFilter() { override fun createFilter() {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
} }
override fun applyFilter() { override fun applyFilter() {
super.applyFilter()
this.entitiesChanged() this.entitiesChanged()
} }
override fun removeFilter() { override fun removeFilter() {
super.removeFilter()
Timber.d("removeFilter")
this.entitiesChanged() this.entitiesChanged()
} }

Loading…
Cancel
Save