example month year comparator in calendar

feature/top10
Razmig Sarkissian 7 years ago
parent 8de559b2f7
commit e39de5e1c7
  1. 16
      app/src/main/java/net/pokeranalytics/android/model/comparison/Comparator.kt
  2. 31
      app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarFragment.kt

@ -8,6 +8,10 @@ import net.pokeranalytics.android.exceptions.PokerAnalyticsException
import net.pokeranalytics.android.model.filter.Filterable import net.pokeranalytics.android.model.filter.Filterable
import net.pokeranalytics.android.model.filter.QueryCondition import net.pokeranalytics.android.model.filter.QueryCondition
import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.ui.fragment.CalendarFragment
import java.util.*
import kotlin.collections.ArrayList
import kotlin.collections.HashSet
enum class Comparator { enum class Comparator {
DAY_OF_WEEK, DAY_OF_WEEK,
@ -23,6 +27,17 @@ enum class Comparator {
MONTH_OF_YEAR -> List(12) { index-> QueryCondition.MONTH().apply { setMonth(index+1) } } MONTH_OF_YEAR -> List(12) { index-> QueryCondition.MONTH().apply { setMonth(index+1) } }
DAY_OF_WEEK -> listOf() DAY_OF_WEEK -> listOf()
YEAR -> { YEAR -> {
val years = arrayListOf<QueryCondition.YEAR>()
val calendar = Calendar.getInstance()
calendar.time = Date()
val yearNow = calendar.get(Calendar.YEAR)
val realm = Realm.getDefaultInstance()
realm.where<Session>().sort("year", Sort.ASCENDING).findFirst()?.year?.let {
List(yearNow - it ) { index-> QueryCondition.YEAR().apply { setYear(yearNow - index) } }
}
realm.close()
years
/*
val years = arrayListOf<QueryCondition.YEAR>() val years = arrayListOf<QueryCondition.YEAR>()
val realm = Realm.getDefaultInstance() val realm = Realm.getDefaultInstance()
val distinctYears = realm.where<Session>().distinct("year").findAll().sort("year", Sort.DESCENDING) val distinctYears = realm.where<Session>().distinct("year").findAll().sort("year", Sort.DESCENDING)
@ -33,6 +48,7 @@ enum class Comparator {
} }
realm.close() realm.close()
years years
*/
} }
else -> throw PokerAnalyticsException.QueryTypeUnhandled else -> throw PokerAnalyticsException.QueryTypeUnhandled
} }

@ -56,6 +56,37 @@ class CalendarFragment : SessionObserverFragment(), CoroutineScope {
*/ */
private fun initData() { private fun initData() {
val realm = getRealm()
//example
//per year x month
val report = Calculator.computeStatsWithComparators(realm, comparators = listOf(Comparator.YEAR, Comparator.MONTH_OF_YEAR), options = Calculator.Options())
report.results.forEach {
//show net result per year x month
print(it.computedStat(Stat.NETRESULT)?.value)
/*
si on voulait faire Year en même temps, il faudrait un array de yearData et la possibilité d'appeler un computedStat sur un array de computedResult
un yearData devra alors conteneir une variable "results" qui serait un array de tous des results de tous les mois d'une année (qu'on viendrait piocher dans report.results
A discuter:
- stocker les queryConditions dans chaque result ?
- appeler un computedStat sur un array de computedResult ?
- demander si on veut ou pas une entrée vide quand pas de sessions pour une query dans report.results
*/
}
//per year
val reportMonth = Calculator.computeStatsWithComparators(realm, comparators = listOf(Comparator.YEAR), options = Calculator.Options())
reportMonth.results.forEach {
//show net result per year
print(it.computedStat(Stat.NETRESULT)?.value)
}
val comparator = Comparator.MONTH // returns all months val comparator = Comparator.MONTH // returns all months
val conditions = comparator.queryConditions val conditions = comparator.queryConditions

Loading…
Cancel
Save