fix issue with all filters listing

dev
Razmig Sarkissian 7 years ago
parent 2590b85241
commit 938668cd98
  1. 2
      app/src/main/java/net/pokeranalytics/android/model/LiveData.kt
  2. 3
      app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt
  3. 6
      app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersFragment.kt
  4. 16
      app/src/main/java/net/pokeranalytics/android/util/extensions/RealmExtensions.kt

@ -23,6 +23,8 @@ enum class LiveData : Localizable {
CUSTOM_FIELD,
REPORT_SETUP;
var subType:Int? = null
val relatedEntity: Class<out Deletable>
get() {
return when (this) {

@ -24,6 +24,7 @@ import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
import net.pokeranalytics.android.ui.fragment.components.DeletableItemFragment
import net.pokeranalytics.android.ui.helpers.SwipeToDeleteCallback
import net.pokeranalytics.android.ui.interfaces.FilterableType
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType
import net.pokeranalytics.android.util.extensions.sorted
@ -53,7 +54,7 @@ open class DataListFragment : DeletableItemFragment(), LiveRowRepresentableDataS
}
open fun retrieveItems(realm: Realm): RealmResults<out Deletable> {
return realm.sorted(this.identifiableClass, editableOnly = true)
return realm.sorted(this.identifiableClass, editableOnly = true, filterableTypeOrdinal = dataType.subType)
}
override fun deletableItems() : List<Deletable> {

@ -158,6 +158,7 @@ open class FiltersFragment : RealmFragment(), StaticRowRepresentableDataSource,
}
moreFilters.setOnClickListener {
LiveData.FILTER.subType = filterableType.ordinal
DataListActivity.newSelectInstance(this, LiveData.FILTER.ordinal, false)
}
@ -201,10 +202,7 @@ open class FiltersFragment : RealmFragment(), StaticRowRepresentableDataSource,
private fun updateMostUsedFilters() {
var nbChips = 0
val filters = getRealm().sorted(Filter::class.java).filter {
it.filterableType == this.filterableType
}
val filters = getRealm().sorted(Filter::class.java, editableOnly = false, filterableTypeOrdinal = this.filterableType.ordinal)
val currentFilterId = Preferences.getActiveFilterId(requireContext())
if (isUpdating || filters.isEmpty() || (filters.size == 1 && filters.first()?.id == currentFilterId)) {

@ -1,14 +1,12 @@
package net.pokeranalytics.android.util.extensions
import io.realm.Realm
import io.realm.RealmModel
import io.realm.RealmResults
import io.realm.Sort
import io.realm.*
import io.realm.kotlin.where
import net.pokeranalytics.android.model.interfaces.CountableUsage
import net.pokeranalytics.android.model.interfaces.Identifiable
import net.pokeranalytics.android.model.interfaces.NameManageable
import net.pokeranalytics.android.model.realm.*
import net.pokeranalytics.android.ui.interfaces.FilterableType
fun <T : Identifiable> Realm.findById(clazz: Class<T>, id: String) : T? {
return this.where(clazz).equalTo("id", id).findFirst()
@ -37,15 +35,19 @@ inline fun <reified T: NameManageable> Realm.getOrCreate(name: String) : T {
* Returns all entities of the [clazz] sorted with their default sorting
* Set [editableOnly] to true to only receive entities that can be edited
*/
fun < T : RealmModel> Realm.sorted(clazz: Class<T>, editableOnly: Boolean = false) : RealmResults<T> {
fun < T : RealmModel> Realm.sorted(clazz: Class<T>, editableOnly: Boolean = false, filterableTypeOrdinal: Int? = null) : RealmResults<T> {
val query = this.where(clazz)
if (editableOnly) {
when (clazz.kotlin) {
TransactionType::class -> {
if (editableOnly) {
query.equalTo("lock", false)
}
}
Filter::class -> {
filterableTypeOrdinal?.let {
query.equalTo("filterableTypeOrdinal", it)
}
}
}
val items = query.findAll()

Loading…
Cancel
Save