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

dev
Laurent 7 years ago
commit a0b1314e98
  1. 2
      app/src/main/java/net/pokeranalytics/android/model/migrations/PokerAnalyticsMigration.kt
  2. 10
      app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt
  3. 6
      app/src/main/java/net/pokeranalytics/android/ui/activity/FiltersActivity.kt
  4. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt
  5. 8
      app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersFragment.kt
  6. 22
      app/src/main/java/net/pokeranalytics/android/ui/interfaces/FilterHandler.kt
  7. 6
      app/src/main/java/net/pokeranalytics/android/util/extensions/RealmExtensions.kt

@ -139,7 +139,7 @@ class PokerAnalyticsMigration : RealmMigration {
} }
} }
schema.get("Filter")?.addField("filterableTypeOrdinal", Integer::class.java) schema.get("Filter")?.addField("filterableTypeUniqueIdentifier", Integer::class.java)
schema.get("Filter")?.addField("useCount", Int::class.java) schema.get("Filter")?.addField("useCount", Int::class.java)
schema.get("Filter")?.removeField("usageCount") schema.get("Filter")?.removeField("usageCount")
currentVersion++ currentVersion++

@ -28,9 +28,9 @@ open class Filter : RealmObject(), RowRepresentable, Identifiable, Deletable, Co
companion object { companion object {
// Create a new instance // Create a new instance
fun newInstance(realm: Realm, filterableType:Int): Filter { fun newInstance(filterableTypeUniqueIdentifier:Int): Filter {
val filter = Filter() val filter = Filter()
filter.filterableTypeOrdinal = filterableType filter.filterableTypeUniqueIdentifier = filterableTypeUniqueIdentifier
return filter return filter
//return realm.copyToRealm(filter) //return realm.copyToRealm(filter)
} }
@ -67,12 +67,12 @@ open class Filter : RealmObject(), RowRepresentable, Identifiable, Deletable, Co
var filterConditions: RealmList<FilterCondition> = RealmList() var filterConditions: RealmList<FilterCondition> = RealmList()
private set private set
private var filterableTypeOrdinal: Int? = null private var filterableTypeUniqueIdentifier: Int? = null
val filterableType: FilterableType val filterableType: FilterableType
get() { get() {
this.filterableTypeOrdinal?.let { this.filterableTypeUniqueIdentifier?.let {
return FilterableType.values()[it] return FilterableType.valueByIdentifier(it)
} }
return FilterableType.ALL return FilterableType.ALL
} }

@ -32,7 +32,7 @@ class FiltersActivity : PokerAnalyticsActivity() {
private fun getIntent(context: Context, filterId: String?, currentFilterable: FilterableType, hideMostUsedFilters: Boolean = false): Intent { private fun getIntent(context: Context, filterId: String?, currentFilterable: FilterableType, hideMostUsedFilters: Boolean = false): Intent {
val intent = Intent(context, FiltersActivity::class.java) val intent = Intent(context, FiltersActivity::class.java)
intent.putExtra(IntentKey.FILTERABLE_TYPE.keyName, currentFilterable.ordinal) intent.putExtra(IntentKey.FILTERABLE_TYPE.keyName, currentFilterable.uniqueIdentifier)
intent.putExtra(IntentKey.HIDE_MOST_USED_FILTERS.keyName, hideMostUsedFilters) intent.putExtra(IntentKey.HIDE_MOST_USED_FILTERS.keyName, hideMostUsedFilters)
filterId?.let { filterId?.let {
intent.putExtra(IntentKey.FILTER_ID.keyName, it) intent.putExtra(IntentKey.FILTER_ID.keyName, it)
@ -59,9 +59,9 @@ class FiltersActivity : PokerAnalyticsActivity() {
val fragmentManager = supportFragmentManager val fragmentManager = supportFragmentManager
val fragmentTransaction = fragmentManager.beginTransaction() val fragmentTransaction = fragmentManager.beginTransaction()
val filterId = intent.getStringExtra(IntentKey.FILTER_ID.keyName) val filterId = intent.getStringExtra(IntentKey.FILTER_ID.keyName)
val ordinal = intent.getIntExtra(IntentKey.FILTERABLE_TYPE.keyName, 0) val uniqueIdentifier= intent.getIntExtra(IntentKey.FILTERABLE_TYPE.keyName, 0)
val hideMostUsedFilters = intent.getBooleanExtra(IntentKey.HIDE_MOST_USED_FILTERS.keyName, false) val hideMostUsedFilters = intent.getBooleanExtra(IntentKey.HIDE_MOST_USED_FILTERS.keyName, false)
val filterableType = FilterableType.values()[ordinal] val filterableType = FilterableType.valueByIdentifier(uniqueIdentifier)
fragment = FiltersFragment() fragment = FiltersFragment()
fragmentTransaction.add(R.id.container, fragment) fragmentTransaction.add(R.id.container, fragment)

@ -54,7 +54,7 @@ open class DataListFragment : DeletableItemFragment(), LiveRowRepresentableDataS
} }
open fun retrieveItems(realm: Realm): RealmResults<out Deletable> { open fun retrieveItems(realm: Realm): RealmResults<out Deletable> {
return realm.sorted(this.identifiableClass, editableOnly = true, filterableTypeOrdinal = dataType.subType) return realm.sorted(this.identifiableClass, editableOnly = true, filterableTypeUniqueIdentifier = dataType.subType)
} }
override fun deletableItems() : List<Deletable> { override fun deletableItems() : List<Deletable> {

@ -158,7 +158,7 @@ open class FiltersFragment : RealmFragment(), StaticRowRepresentableDataSource,
} }
moreFilters.setOnClickListener { moreFilters.setOnClickListener {
LiveData.FILTER.subType = filterableType.ordinal LiveData.FILTER.subType = filterableType.uniqueIdentifier
DataListActivity.newSelectInstance(this, LiveData.FILTER.ordinal, false) DataListActivity.newSelectInstance(this, LiveData.FILTER.ordinal, false)
} }
@ -176,9 +176,7 @@ open class FiltersFragment : RealmFragment(), StaticRowRepresentableDataSource,
currentFilter = realm.copyFromRealm(Filter.getFilterBydId(realm, it)) currentFilter = realm.copyFromRealm(Filter.getFilterBydId(realm, it))
isUpdating = true isUpdating = true
} ?: run { } ?: run {
realm.beginTransaction() currentFilter = Filter.newInstance(this.filterableType.uniqueIdentifier) //realm.copyFromRealm(Filter.newInstanceForResult(realm, this.filterableType.ordinal))
currentFilter = Filter.newInstance(realm, this.filterableType.ordinal) //realm.copyFromRealm(Filter.newInstanceForResult(realm, this.filterableType.ordinal))
realm.commitTransaction()
} }
// Create a copy if the user cancels the updates // Create a copy if the user cancels the updates
@ -202,7 +200,7 @@ open class FiltersFragment : RealmFragment(), StaticRowRepresentableDataSource,
private fun updateMostUsedFilters() { private fun updateMostUsedFilters() {
var nbChips = 0 var nbChips = 0
val filters = getRealm().sorted(Filter::class.java, editableOnly = false, filterableTypeOrdinal = this.filterableType.ordinal) val filters = getRealm().sorted(Filter::class.java, editableOnly = false, filterableTypeUniqueIdentifier = this.filterableType.uniqueIdentifier)
val currentFilterId = Preferences.getActiveFilterId(requireContext()) val currentFilterId = Preferences.getActiveFilterId(requireContext())
if (isUpdating || filters.isEmpty() || (filters.size == 1 && filters.first()?.id == currentFilterId)) { if (isUpdating || filters.isEmpty() || (filters.size == 1 && filters.first()?.id == currentFilterId)) {

@ -8,6 +8,8 @@ import io.realm.kotlin.where
import net.pokeranalytics.android.model.realm.Filter import net.pokeranalytics.android.model.realm.Filter
import net.pokeranalytics.android.ui.activity.FiltersActivity import net.pokeranalytics.android.ui.activity.FiltersActivity
import net.pokeranalytics.android.util.Preferences import net.pokeranalytics.android.util.Preferences
import net.pokeranalytics.android.util.enumerations.IntIdentifiable
import net.pokeranalytics.android.util.enumerations.IntSearchable
enum class FilterActivityRequestCode { enum class FilterActivityRequestCode {
SELECT_FILTER, SELECT_FILTER,
@ -15,13 +17,21 @@ enum class FilterActivityRequestCode {
; ;
} }
enum class FilterableType { enum class FilterableType(override var uniqueIdentifier: Int): IntIdentifiable {
ALL, ALL(0),
SESSION, SESSION(1),
TRANSACTION, TRANSACTION(2),
BANKROLL, BANKROLL(3),
HAND_HISTORY, HAND_HISTORY(4),
; ;
companion object : IntSearchable<FilterableType> {
override fun valuesInternal(): Array<FilterableType> {
return values()
}
}
} }
interface FilterHandler { interface FilterHandler {

@ -35,7 +35,7 @@ inline fun <reified T: NameManageable> Realm.getOrCreate(name: String) : T {
* Returns all entities of the [clazz] sorted with their default sorting * Returns all entities of the [clazz] sorted with their default sorting
* Set [editableOnly] to true to only receive entities that can be edited * Set [editableOnly] to true to only receive entities that can be edited
*/ */
fun < T : RealmModel> Realm.sorted(clazz: Class<T>, editableOnly: Boolean = false, filterableTypeOrdinal: Int? = null) : RealmResults<T> { fun < T : RealmModel> Realm.sorted(clazz: Class<T>, editableOnly: Boolean = false, filterableTypeUniqueIdentifier: Int? = null) : RealmResults<T> {
val query = this.where(clazz) val query = this.where(clazz)
when (clazz.kotlin) { when (clazz.kotlin) {
TransactionType::class -> { TransactionType::class -> {
@ -44,8 +44,8 @@ fun < T : RealmModel> Realm.sorted(clazz: Class<T>, editableOnly: Boolean = fals
} }
} }
Filter::class -> { Filter::class -> {
filterableTypeOrdinal?.let { filterableTypeUniqueIdentifier?.let {
query.equalTo("filterableTypeOrdinal", it) query.equalTo("filterableTypeUniqueIdentifier", it)
} }
} }
} }

Loading…
Cancel
Save