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.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
@ -29,6 +28,7 @@ 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.RealmFragment
import net.pokeranalytics.android.ui.interfaces.FragmentVisibility
import net.pokeranalytics.android.ui.view.CalendarTabs
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType
@ -39,8 +39,8 @@ import java.util.*
import kotlin.coroutines.CoroutineContext
class CalendarFragment : RealmFragment(), CoroutineScope, StaticRowRepresentableDataSource,
RowRepresentableDelegate {
class CalendarFragmentVisibility : RealmFragment(), CoroutineScope, StaticRowRepresentableDataSource,
RowRepresentableDelegate, FragmentVisibility {
enum class TimeFilter {
MONTH, YEAR
@ -51,8 +51,8 @@ class CalendarFragment : RealmFragment(), CoroutineScope, StaticRowRepresentable
/**
* Create new instance
*/
fun newInstance(): CalendarFragment {
val fragment = CalendarFragment()
fun newInstance(): CalendarFragmentVisibility {
val fragment = CalendarFragmentVisibility()
val bundle = Bundle()
fragment.arguments = bundle
return fragment

@ -36,15 +36,15 @@ import java.text.SimpleDateFormat
import java.util.*
class FeedFragment : FilterableFragment(), RowRepresentableDelegate {
class FeedFragmentVisibility : FilterableFragment(), RowRepresentableDelegate {
companion object {
const val REQUEST_CODE_MENU = 100
const val REQUEST_CODE_TRANSACTION_DETAILS = 101
fun newInstance(): FeedFragment {
val fragment = FeedFragment()
fun newInstance(): FeedFragmentVisibility {
val fragment = FeedFragmentVisibility()
val bundle = Bundle()
fragment.arguments = bundle
return fragment
@ -103,7 +103,7 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate {
super.setUserVisibleHint(isVisibleToUser)
if (isVisibleToUser && view != null) {
if (FilterHandler.filterWasUpdated) {
this.initData()
applyFilter()
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 distinctDateSessions = sessionFilter?.results("year", "month") ?: run { getRealm().where<Session>().distinct("year", "month").findAll() }.sort("startDate", Sort.DESCENDING)
this.feedSessionAdapter = FeedSessionRowRepresentableAdapter(this, realmSessions, pendingSessions, distinctDateSessions)
recyclerView.adapter = feedSessionAdapter
}
private fun loadTransactions(filter : Filter? = null) {
@ -304,6 +303,7 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate {
override fun removeFilter() {
super.removeFilter()
Timber.d("removeFilter")
this.loadSessions()
this.loadTransactions()
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.StaticRowRepresentableDataSource
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.MoreTabRow
class MoreFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate {
class MoreFragmentVisibility : PokerAnalyticsFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate, FragmentVisibility {
companion object {
/**
* Create new instance
*/
fun newInstance(): MoreFragment {
val fragment = MoreFragment()
fun newInstance(): MoreFragmentVisibility {
val fragment = MoreFragmentVisibility()
val bundle = Bundle()
fragment.arguments = bundle
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.StaticRowRepresentableDataSource
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.RowViewType
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 java.util.*
class ReportsFragment : DeletableItemFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate {
class ReportsFragmentVisibility : DeletableItemFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate, FragmentVisibility {
// private lateinit var dataListAdapter: RowRepresentableAdapter
private lateinit var reportSetups: RealmResults<ReportSetup>
@ -51,8 +52,8 @@ class ReportsFragment : DeletableItemFragment(), StaticRowRepresentableDataSourc
/**
* Create new instance
*/
fun newInstance(): ReportsFragment {
val fragment = ReportsFragment()
fun newInstance(): ReportsFragmentVisibility {
val fragment = ReportsFragmentVisibility()
val bundle = Bundle()
fragment.arguments = bundle
return fragment
@ -198,7 +199,7 @@ class ReportsFragment : DeletableItemFragment(), StaticRowRepresentableDataSourc
launch(Dispatchers.Main) {
if (!isDetached) {
hideLoader()
ReportActivity.newInstanceForResult(this@ReportsFragment, report, reportName)
ReportActivity.newInstanceForResult(this@ReportsFragmentVisibility, report, reportName)
}
}
realm.close()

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

Loading…
Cancel
Save