filterable update

feature/top10
Razmig Sarkissian 7 years ago
parent 2bfc176553
commit 6f69912e78
  1. 87
      app/src/main/java/net/pokeranalytics/android/model/filter/FilterComponent.kt
  2. 18
      app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt

@ -5,6 +5,9 @@ import io.realm.RealmObject
import io.realm.RealmQuery import io.realm.RealmQuery
import io.realm.RealmResults import io.realm.RealmResults
import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.model.realm.Session
import com.google.android.libraries.places.internal.`in`
import java.util.*
enum class FilterComponent { enum class FilterComponent {
@ -14,15 +17,91 @@ enum class SessionFilterable(var fieldName:String? = null) : Filterable {
LIVE("bankroll.live"), LIVE("bankroll.live"),
CASH("type"), CASH("type"),
ONLINE, ONLINE,
TOURNAMENT TOURNAMENT,
BANKROLL("bankroll.id"),
GAME("game.id"),
LIMIT("limit"),
TABLE_SIZE("tableSize"),
LOCATION("location.id"),
NUMBEROFTABLE("numberOfTable"),
COMMENT("comment"),
TOURNAMENT_TYPE("tournamentType"),
TOURNAMENT_NAME("tournamentName.id"),
TOURNAMENT_FEATURES("tournamentFeature.id"),
TOURNAMENT_NUMBER_OF_PLAYER("tournamentNumberOfPlayers"),
TOURNAMENT_ENTRY_FEE("tournamentEntryFee"),
RESULT_BUYIN("result.buyin"),
RESULT_CASHED_OUT("result.cashout"),
RESULT_NET("result.ratedNet"),
RESULT_TIPS("result.tips"),
STARTED_FROM_DATE,
STARTED_TO_DATE,
ENDED_FROM_DATE,
ENDED_TO_DATE,
BLINDS,
; ;
private enum class Field(var fieldName:String? = null) {
START_DATE("startDate"),
END_DATE("endDate"),
CURRENCY("bankroll.currency.code"),
BIG_BLIND("cgBigBlind"),
SMALL_BLIND("cgSmallBlind");
}
var valueMap : Map<String, Any?>? = null
override fun filter(realmQuery: RealmQuery<*>): RealmQuery<out RealmObject> { override fun filter(realmQuery: RealmQuery<*>): RealmQuery<out RealmObject> {
return when (this) { return when (this) {
LIVE -> realmQuery.equalTo(this.fieldName, true) as RealmQuery<out RealmObject> LIVE -> realmQuery.equalTo(this.fieldName, true)
CASH -> realmQuery.equalTo(this.fieldName, Session.Type.CASH_GAME.ordinal) as RealmQuery<out RealmObject> CASH -> realmQuery.equalTo(this.fieldName, Session.Type.CASH_GAME.ordinal)
ONLINE -> LIVE.filter(realmQuery.not()) ONLINE -> LIVE.filter(realmQuery.not())
TOURNAMENT -> CASH.filter(realmQuery.not()) TOURNAMENT -> CASH.filter(realmQuery.not())
} BANKROLL -> {
val ids : Array<String> by valueMap
realmQuery.`in`(this.fieldName, ids)
}
STARTED_FROM_DATE -> {
val date : Date by valueMap
this.filter(realmQuery.greaterThanOrEqualTo(Field.START_DATE.fieldName, date))
}
STARTED_TO_DATE -> {
val date : Date by valueMap
this.filter(realmQuery.lessThanOrEqualTo(Field.START_DATE.fieldName, date))
}
ENDED_FROM_DATE -> {
val date : Date by valueMap
this.filter(realmQuery.greaterThanOrEqualTo(Field.END_DATE.fieldName, date))
}
ENDED_TO_DATE -> {
val date : Date by valueMap
this.filter(realmQuery.lessThanOrEqualTo(Field.END_DATE.fieldName, date))
}
BLINDS -> {
val map : Array<Map<String,Any?>> by valueMap
var finalQuery = realmQuery
map.forEach {
val sb : Double by it
val bb : Double by it
val code : String by it
finalQuery = finalQuery
.beginGroup()
.equalTo(Field.SMALL_BLIND.fieldName, sb)
.and()
.equalTo(Field.BIG_BLIND.fieldName, bb)
.and()
.equalTo(Field.CURRENCY.fieldName, code)
.endGroup()
if (map.last() != it) {
finalQuery = finalQuery.or()
}
}
finalQuery
}
else -> realmQuery
} as RealmQuery<out RealmObject>
} }
} }

@ -5,6 +5,7 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.lifecycle.LiveData
import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.DiffUtil
import io.realm.RealmResults import io.realm.RealmResults
import io.realm.Sort import io.realm.Sort
@ -17,6 +18,7 @@ import net.pokeranalytics.android.model.filter.FilterManager
import net.pokeranalytics.android.model.filter.Filterable import net.pokeranalytics.android.model.filter.Filterable
import net.pokeranalytics.android.model.filter.SessionFilterable import net.pokeranalytics.android.model.filter.SessionFilterable
import net.pokeranalytics.android.model.interfaces.Manageable import net.pokeranalytics.android.model.interfaces.Manageable
import net.pokeranalytics.android.model.realm.Bankroll
import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.ui.activity.SessionActivity import net.pokeranalytics.android.ui.activity.SessionActivity
import net.pokeranalytics.android.ui.adapter.LiveRowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.LiveRowRepresentableDataSource
@ -95,8 +97,20 @@ class HistoryFragment : PokerAnalyticsFragment(), LiveRowRepresentableDataSource
* Init data * Init data
*/ */
private fun initData() { private fun initData() {
//realmSessions = FilterManager().filter(getRealm(), Session::class.java, arrayListOf<Filterable>(SessionFilterable.ONLINE, SessionFilterable.CASH)).sort("creationDate", Sort.DESCENDING) as RealmResults<Session> var brs = (net.pokeranalytics.android.model.LiveData.BANKROLL.items(getRealm()) as RealmResults<Bankroll>).toArray().map{
realmSessions = getRealm().where<Session>().findAll().sort("creationDate", Sort.DESCENDING) (it as Bankroll).id
}
var br = SessionFilterable.BANKROLL
br.ids = arrayOf(brs.last())
println(br.ids)
realmSessions = FilterManager().filter(getRealm(), Session::class.java, arrayListOf<Filterable>(br))
.sort("creationDate", Sort.DESCENDING) as RealmResults<Session>
// realmSessions = FilterManager().filter(getRealm(), Session::class.java, arrayListOf<Filterable>(SessionFilterable.ONLINE, SessionFilterable.CASH)).sort("creationDate", Sort.DESCENDING) as RealmResults<Session>
//realmSessions = getRealm().where<Session>().findAll().sort("creationDate", Sort.DESCENDING)
val viewManager = SmoothScrollLinearLayoutManager(requireContext()) val viewManager = SmoothScrollLinearLayoutManager(requireContext())
historyAdapter = RowRepresentableAdapter(this, this) historyAdapter = RowRepresentableAdapter(this, this)

Loading…
Cancel
Save