diff --git a/app/src/androidTest/java/net/pokeranalytics/android/performanceTests/PerfsInstrumentedUnitTest.kt b/app/src/androidTest/java/net/pokeranalytics/android/performanceTests/PerfsInstrumentedUnitTest.kt index 8cfd42ac..7246cfa7 100644 --- a/app/src/androidTest/java/net/pokeranalytics/android/performanceTests/PerfsInstrumentedUnitTest.kt +++ b/app/src/androidTest/java/net/pokeranalytics/android/performanceTests/PerfsInstrumentedUnitTest.kt @@ -53,7 +53,7 @@ class PerfsInstrumentedUnitTest : RealmInstrumentedUnitTest() { Timber.d("computableResults: ${computableResults.size}") Timber.d("sets: ${sets.size}") - val stats: List = listOf(Stat.NETRESULT, Stat.AVERAGE) + val stats: List = listOf(Stat.NET_RESULT, Stat.AVERAGE) val group = ComputableGroup("test", listOf(), stats) val options = Calculator.Options() @@ -62,7 +62,7 @@ class PerfsInstrumentedUnitTest : RealmInstrumentedUnitTest() { val results: ComputedResults = Calculator.compute(realm, group, options) Timber.d("*** ended in ${System.currentTimeMillis() - start} milliseconds") - val sum = results.computedStat(Stat.NETRESULT) + val sum = results.computedStat(Stat.NET_RESULT) Timber.d("*** NET RESULT: ${sum?.value}") val average = results.computedStat(Stat.AVERAGE) diff --git a/app/src/androidTest/java/net/pokeranalytics/android/unitTests/StatsInstrumentedUnitTest.kt b/app/src/androidTest/java/net/pokeranalytics/android/unitTests/StatsInstrumentedUnitTest.kt index 5c27d92c..202ee39d 100644 --- a/app/src/androidTest/java/net/pokeranalytics/android/unitTests/StatsInstrumentedUnitTest.kt +++ b/app/src/androidTest/java/net/pokeranalytics/android/unitTests/StatsInstrumentedUnitTest.kt @@ -81,7 +81,7 @@ class StatsInstrumentedUnitTest : SessionInstrumentedUnitTest() { val results: ComputedResults = Calculator.compute(realm, group, options) val delta = 0.01 - val sum = results.computedStat(Stat.NETRESULT) + val sum = results.computedStat(Stat.NET_RESULT) if (sum != null) { assertEquals(200.0, sum.value, delta) } else { @@ -250,7 +250,7 @@ class StatsInstrumentedUnitTest : SessionInstrumentedUnitTest() { } - val stats: List = listOf(Stat.NETRESULT, Stat.AVERAGE) + val stats: List = listOf(Stat.NET_RESULT, Stat.AVERAGE) val group = ComputableGroup("test", listOf(), stats) val options = Calculator.Options() @@ -317,7 +317,7 @@ class StatsInstrumentedUnitTest : SessionInstrumentedUnitTest() { realm.commitTransaction() - val stats: List = listOf(Stat.NETRESULT, Stat.AVERAGE) + val stats: List = listOf(Stat.NET_RESULT, Stat.AVERAGE) val group = ComputableGroup("test", listOf(), stats) val options = Calculator.Options() @@ -400,7 +400,7 @@ class StatsInstrumentedUnitTest : SessionInstrumentedUnitTest() { realm.commitTransaction() - val stats: List = listOf(Stat.NETRESULT, Stat.AVERAGE) + val stats: List = listOf(Stat.NET_RESULT, Stat.AVERAGE) val group = ComputableGroup("test", listOf(), stats) val options = Calculator.Options() @@ -420,7 +420,7 @@ class StatsInstrumentedUnitTest : SessionInstrumentedUnitTest() { s1.deleteFromRealm() } - val stats2: List = listOf(Stat.NETRESULT, Stat.AVERAGE) + val stats2: List = listOf(Stat.NET_RESULT, Stat.AVERAGE) val group2 = ComputableGroup("test", listOf(), stats2) val results2: ComputedResults = Calculator.compute(realm, group2, options) @@ -545,7 +545,7 @@ class StatsInstrumentedUnitTest : SessionInstrumentedUnitTest() { s1.endDate = null } - val stats: List = listOf(Stat.NETRESULT, Stat.AVERAGE) + val stats: List = listOf(Stat.NET_RESULT, Stat.AVERAGE) val group = ComputableGroup("test", listOf(), stats) val options = Calculator.Options() @@ -597,12 +597,12 @@ class StatsInstrumentedUnitTest : SessionInstrumentedUnitTest() { } - val stats: List = listOf(Stat.NETRESULT) + val stats: List = listOf(Stat.NET_RESULT) val group = ComputableGroup("test", listOf(), stats) val options = Calculator.Options() val results: ComputedResults = Calculator.compute(realm, group, options) - val netResult = results.computedStat(Stat.NETRESULT) + val netResult = results.computedStat(Stat.NET_RESULT) assertEquals(250.0, netResult?.value) } @@ -633,12 +633,12 @@ class StatsInstrumentedUnitTest : SessionInstrumentedUnitTest() { } - val stats: List = listOf(Stat.NETRESULT) + val stats: List = listOf(Stat.NET_RESULT) val group = ComputableGroup("test", listOf(), stats) val options = Calculator.Options() val results: ComputedResults = Calculator.compute(realm, group, options) - val netResult = results.computedStat(Stat.NETRESULT) + val netResult = results.computedStat(Stat.NET_RESULT) assertEquals(250.0, netResult?.value) println("currency set rate real test starts here") @@ -654,7 +654,7 @@ class StatsInstrumentedUnitTest : SessionInstrumentedUnitTest() { val updatedGroup = ComputableGroup("test", listOf(), stats) val updatedResults: ComputedResults = Calculator.compute(realm, updatedGroup, options) - val updatedNetResult = updatedResults.computedStat(Stat.NETRESULT) + val updatedNetResult = updatedResults.computedStat(Stat.NET_RESULT) assertEquals(650.0, updatedNetResult?.value) } diff --git a/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt b/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt index f07edda2..25efb031 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt @@ -155,7 +155,7 @@ class Calculator { */ fun computeGroups(realm: Realm, groups: List, options: Options): Report { - val report = Report() + val report = Report(options) groups.forEach { group -> val s = Date() @@ -201,7 +201,7 @@ class Calculator { } val sum = computables.sum(ComputableResult.Field.RATED_NET.identifier).toDouble() - results.addStat(NETRESULT, sum) + results.addStat(NET_RESULT, sum) val totalHands = computables.sum(ComputableResult.Field.ESTIMATED_HANDS.identifier).toDouble() results.addStat(HANDS_PLAYED, totalHands) @@ -298,7 +298,7 @@ class Calculator { val session = computable.session ?: throw IllegalStateException("Computing lone ComputableResult") - results.addEvolutionValue(tSum, stat = NETRESULT, data = session) + results.addEvolutionValue(tSum, stat = NET_RESULT, data = session) results.addEvolutionValue(tSum / index, stat = AVERAGE, data = session) results.addEvolutionValue(index.toDouble(), stat = NUMBER_OF_GAMES, data = session) results.addEvolutionValue(tBBSum / tBBSessionCount, stat = AVERAGE_NET_BB, data = session) @@ -400,7 +400,7 @@ class Calculator { } Options.EvolutionValues.TIMED -> { - results.addEvolutionValue(tRatedNetSum, tHourlyDuration, NETRESULT, sessionSet) + results.addEvolutionValue(tRatedNetSum, tHourlyDuration, NET_RESULT, sessionSet) results.addEvolutionValue(tHourlyRate, tHourlyDuration, HOURLY_RATE, sessionSet) results.addEvolutionValue( tIndex.toDouble(), diff --git a/app/src/main/java/net/pokeranalytics/android/calculus/Report.kt b/app/src/main/java/net/pokeranalytics/android/calculus/Report.kt index b4fb8b67..ad27c08e 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/Report.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/Report.kt @@ -14,15 +14,15 @@ import net.pokeranalytics.android.model.realm.SessionSet /** * The class returned after performing calculation in the Calculator object */ -class Report() { +class Report(var options: Calculator.Options) { private var _results: MutableList = mutableListOf() val results: List = this._results + // private var groups: MutableList = mutableListOf() // -// var options: Calculator.Options = options // // fun addGroup(group: ComputableGroup) { // this.groups.add(group) @@ -48,25 +48,33 @@ class Report() { return entries } - fun barEntries(stat: Stat): List { + fun barEntries(stat: Stat? = null): List { val entries = mutableListOf() - - this._results.forEachIndexed { index, results -> - val cs = results.computedStat(stat) - cs?.let { computedStat -> - val barEntry = BarEntry(index.toFloat(), computedStat.value.toFloat(), results) - entries.add(barEntry) + val statToUse = stat ?: options.displayedStats.firstOrNull() + + statToUse?.let { + this._results.forEachIndexed { index, results -> + val cs = results.computedStat(it) + cs?.let { computedStat -> + val barEntry = BarEntry(index.toFloat(), computedStat.value.toFloat(), results) + entries.add(barEntry) + } } } + return entries } - fun multiLineEntries(stat: Stat): List> { + fun multiLineEntries(): List> { val entries = mutableListOf>() - this._results.forEach { result -> - val entryList = result.singleLineEntries(stat) - entries.add(entryList) + + options.displayedStats.forEach { stat -> + this._results.forEach { result -> + val entryList = result.singleLineEntries(stat) + entries.add(entryList) + } } + return entries } @@ -216,7 +224,7 @@ class ComputedResults(group: ComputableGroup) : StatEntry { val previousValue = previousComputedStat.secondValue ?: previousComputedStat.value when (computedStat.stat) { - Stat.NETRESULT, Stat.DURATION, Stat.BB_NET_RESULT -> { + Stat.NET_RESULT, Stat.DURATION, Stat.BB_NET_RESULT -> { computedStat.secondValue = previousValue + computedStat.value } } diff --git a/app/src/main/java/net/pokeranalytics/android/calculus/Stat.kt b/app/src/main/java/net/pokeranalytics/android/calculus/Stat.kt index 64fe617e..9cf06183 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/Stat.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/Stat.kt @@ -55,7 +55,7 @@ enum class AggregationType { */ enum class Stat : RowRepresentable { - NETRESULT, + NET_RESULT, BB_NET_RESULT, HOURLY_RATE, AVERAGE, @@ -115,7 +115,7 @@ enum class Stat : RowRepresentable { override val resId: Int? get() { return when (this) { - NETRESULT -> R.string.net_result + NET_RESULT -> R.string.net_result BB_NET_RESULT -> R.string.total_net_result_bb_ HOURLY_RATE -> R.string.average_hour_rate AVERAGE -> R.string.average @@ -155,7 +155,7 @@ enum class Stat : RowRepresentable { when (this) { // Amounts + red/green - NETRESULT, HOURLY_RATE, AVERAGE, MAXIMUM_NETRESULT, MINIMUM_NETRESULT -> { + NET_RESULT, HOURLY_RATE, AVERAGE, MAXIMUM_NETRESULT, MINIMUM_NETRESULT -> { val color = if (value >= this.threshold) R.color.green else R.color.red return TextFormat(value.toCurrency(currency), color) } @@ -201,7 +201,7 @@ enum class Stat : RowRepresentable { HOURLY_RATE_BB, AVERAGE_NET_BB, ROI, WIN_RATIO, HOURLY_RATE -> R.string.average NUMBER_OF_SETS -> R.string.number_of_sessions NUMBER_OF_GAMES -> R.string.number_of_records - NETRESULT, DURATION -> R.string.total + NET_RESULT, DURATION -> R.string.total STANDARD_DEVIATION -> R.string.net_result STANDARD_DEVIATION_HOURLY -> R.string.hour_rate_without_pauses STANDARD_DEVIATION_BB_PER_100_HANDS -> R.string.net_result_bb_per_100_hands @@ -225,7 +225,7 @@ enum class Stat : RowRepresentable { val aggregationTypes: List get() { return when (this) { - NETRESULT -> listOf(AggregationType.SESSION, AggregationType.MONTH, AggregationType.YEAR, AggregationType.DURATION) + NET_RESULT -> listOf(AggregationType.SESSION, AggregationType.MONTH, AggregationType.YEAR, AggregationType.DURATION) NUMBER_OF_GAMES, NUMBER_OF_SETS -> listOf(AggregationType.MONTH, AggregationType.YEAR) else -> listOf(AggregationType.SESSION, AggregationType.MONTH, AggregationType.YEAR) } diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt index 49a3b80c..9d983688 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt @@ -583,7 +583,7 @@ open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDat CustomizableRowRepresentable( RowViewType.HEADER_TITLE_AMOUNT_BIG, title = getFormattedDuration(), - computedStat = ComputedStat(Stat.NETRESULT, result?.net ?: 0.0, currency = currency) + computedStat = ComputedStat(Stat.NET_RESULT, result?.net ?: 0.0, currency = currency) ) ) rows.add(SeparatorRow()) @@ -593,7 +593,7 @@ open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDat CustomizableRowRepresentable( RowViewType.HEADER_TITLE_AMOUNT_BIG, resId = R.string.pause, - computedStat = ComputedStat(Stat.NETRESULT, result?.net ?: 0.0, currency = currency) + computedStat = ComputedStat(Stat.NET_RESULT, result?.net ?: 0.0, currency = currency) ) ) rows.add(SeparatorRow()) @@ -603,7 +603,7 @@ open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDat CustomizableRowRepresentable( RowViewType.HEADER_TITLE_AMOUNT_BIG, title = getFormattedDuration(), - computedStat = ComputedStat(Stat.NETRESULT, result?.net ?: 0.0, currency = currency) + computedStat = ComputedStat(Stat.NET_RESULT, result?.net ?: 0.0, currency = currency) ) ) rows.add( @@ -926,7 +926,7 @@ open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDat this.result?.let { result -> val value: Double? = when (stat) { - Stat.NETRESULT, Stat.AVERAGE, Stat.STANDARD_DEVIATION -> result.net + Stat.NET_RESULT, Stat.AVERAGE, Stat.STANDARD_DEVIATION -> result.net Stat.NUMBER_OF_GAMES, Stat.NUMBER_OF_SETS -> 1.0 Stat.AVERAGE_BUYIN -> result.buyin Stat.ROI -> { diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/SessionSet.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/SessionSet.kt index 80d3ed20..562724b8 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/SessionSet.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/SessionSet.kt @@ -120,7 +120,7 @@ open class SessionSet() : RealmObject(), Timed, Filterable { override fun formattedValue(stat: Stat, context: Context) : TextFormat { return when (stat) { - Stat.NETRESULT, Stat.AVERAGE -> stat.format(this.ratedNet, currency = null, context = context) + Stat.NET_RESULT, Stat.AVERAGE -> stat.format(this.ratedNet, currency = null, context = context) Stat.DURATION, Stat.AVERAGE_DURATION -> stat.format(this.netDuration.toDouble(), currency = null, context = context) Stat.HOURLY_RATE -> stat.format(this.hourlyRate, currency = null, context = context) Stat.HANDS_PLAYED -> stat.format(this.estimatedHands, currency = null, context = context) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarDetailsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarDetailsFragment.kt index bead1e0e..1741e0eb 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarDetailsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarDetailsFragment.kt @@ -52,7 +52,7 @@ class CalendarDetailsFragment : PokerAnalyticsFragment(), StaticRowRepresentable private var sessionTypeCondition: QueryCondition? = null private var rowRepresentables: ArrayList = ArrayList() - //private var stat: Stat = Stat.NETRESULT + //private var stat: Stat = Stat.NET_RESULT //private var entries: List = ArrayList() override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { @@ -183,14 +183,14 @@ class CalendarDetailsFragment : PokerAnalyticsFragment(), StaticRowRepresentable rowRepresentables.clear() rowRepresentables.add(CustomizableRowRepresentable(RowViewType.HEADER_TITLE, resId = R.string.net_result)) - rowRepresentables.add(GraphRow(report, Stat.NETRESULT)) - rowRepresentables.add(StatDoubleRow(it.computedStat(Stat.NETRESULT), it.computedStat(Stat.HOURLY_RATE))) + rowRepresentables.add(GraphRow(report, Stat.NET_RESULT)) + rowRepresentables.add(StatDoubleRow(it.computedStat(Stat.NET_RESULT), it.computedStat(Stat.HOURLY_RATE))) rowRepresentables.add(StatDoubleRow(it.computedStat(Stat.LOCATIONS_PLAYED), it.computedStat(Stat.LONGEST_STREAKS))) rowRepresentables.add(CustomizableRowRepresentable(RowViewType.HEADER_TITLE, resId = R.string.distribution)) - rowRepresentables.add(GraphRow(report, Stat.NETRESULT)) + rowRepresentables.add(GraphRow(report, Stat.NET_RESULT)) rowRepresentables.add(StatDoubleRow(it.computedStat(Stat.WIN_RATIO), it.computedStat(Stat.MAXIMUM_NETRESULT))) rowRepresentables.add(CustomizableRowRepresentable(RowViewType.HEADER_TITLE, resId = R.string.volume)) - rowRepresentables.add(GraphRow(report, Stat.NETRESULT)) + rowRepresentables.add(GraphRow(report, Stat.NET_RESULT)) rowRepresentables.add(StatDoubleRow(it.computedStat(Stat.DURATION), it.computedStat(Stat.AVERAGE_DURATION))) rowRepresentables.add(StatDoubleRow(it.computedStat(Stat.DAYS_PLAYED), it.computedStat(Stat.MAXIMUM_DURATION))) } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarFragment.kt index c6092dd4..0eb03bc1 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarFragment.kt @@ -68,7 +68,7 @@ class CalendarFragment : SessionObserverFragment(), CoroutineScope, StaticRowRep private var sessionTypeCondition: QueryCondition? = null private var currentTimeFilter: TimeFilter = TimeFilter.MONTH - private var currentStat = Stat.NETRESULT + private var currentStat = Stat.NET_RESULT // Life Cycle @@ -132,7 +132,7 @@ class CalendarFragment : SessionObserverFragment(), CoroutineScope, StaticRowRep tabs.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { override fun onTabSelected(tab: TabLayout.Tab) { when (tab.position) { - 0 -> currentStat = Stat.NETRESULT + 0 -> currentStat = Stat.NET_RESULT 1 -> currentStat = Stat.HOURLY_RATE 2 -> currentStat = Stat.NUMBER_OF_GAMES 3 -> currentStat = Stat.WIN_RATIO @@ -299,12 +299,12 @@ class CalendarFragment : SessionObserverFragment(), CoroutineScope, StaticRowRep /* Timber.d("========== YEAR x MONTH") sortedMonthlyReports.keys.forEach { - Timber.d("$it => ${sortedMonthlyReports[it]?.computedStat(Stat.NETRESULT)?.value}") + Timber.d("$it => ${sortedMonthlyReports[it]?.computedStat(Stat.NET_RESULT)?.value}") } Timber.d("========== YEARLY") sortedYearlyReports.keys.forEach { - Timber.d("$it => ${sortedYearlyReports[it]?.computedStat(Stat.NETRESULT)?.value}") + Timber.d("$it => ${sortedYearlyReports[it]?.computedStat(Stat.NET_RESULT)?.value}") } */ diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/GraphFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/GraphFragment.kt index 8323de0d..e0314d6a 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/GraphFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/GraphFragment.kt @@ -54,7 +54,7 @@ class GraphFragment : PokerAnalyticsFragment(), OnChartValueSelectedListener, Co private lateinit var legendView: LegendView private lateinit var chartView: BarLineChartBase<*> - private var stat: Stat = Stat.NETRESULT + private var stat: Stat = Stat.NET_RESULT private var reports: MutableMap = hashMapOf() private var aggregationTypes: List = listOf() private var displayAggregationChoices: Boolean = true @@ -76,7 +76,7 @@ class GraphFragment : PokerAnalyticsFragment(), OnChartValueSelectedListener, Co * Set data */ fun setData(stat: Stat, group: ComputableGroup, report: Report, displayAggregationChoices: Boolean = true) { - this.stat = stat + this.stat = report.options.displayedStats.first() this.computableGroup = group this.aggregationTypes = stat.aggregationTypes diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportsFragment.kt index b8b5738a..b8a8a4cd 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportsFragment.kt @@ -5,8 +5,14 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.LinearLayoutManager +import io.realm.Realm import kotlinx.android.synthetic.main.fragment_stats.* +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch import net.pokeranalytics.android.R +import net.pokeranalytics.android.calculus.Calculator +import net.pokeranalytics.android.calculus.Stat +import net.pokeranalytics.android.model.comparison.Comparator import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource @@ -14,6 +20,8 @@ import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.rowrepresentable.ReportRow import timber.log.Timber +import java.util.* +import kotlin.collections.ArrayList class ReportsFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate { @@ -61,6 +69,7 @@ class ReportsFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSour super.onRowSelected(position, row, fromAction) Timber.d("row: $row") when (row) { + ReportRow.DAY_OF_WEEKS -> { //TODO: Open ComparisonChartActivity with correct data //TODO: Calcul report before or after @@ -93,5 +102,28 @@ class ReportsFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSour } } + private fun launchComputation(comparators: List) { + + + GlobalScope.launch { + + val startDate = Date() + + val realm = Realm.getDefaultInstance() + + val requiredStats: List = listOf(Stat.NET_RESULT) + val options = Calculator.Options(evolutionValues = Calculator.Options.EvolutionValues.STANDARD, stats = requiredStats) + val report = Calculator.computeStatsWithComparators(realm, comparators = comparators, options = options) + + + + + + + } + + + } + } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticDetailsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticDetailsFragment.kt index 8ea97620..16e9c3aa 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticDetailsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticDetailsFragment.kt @@ -25,7 +25,7 @@ class StatisticDetailsFragment : PokerAnalyticsFragment() { private lateinit var parentActivity: PokerAnalyticsActivity - private var stat: Stat = Stat.NETRESULT + private var stat: Stat = Stat.NET_RESULT private var entries: List = ArrayList() override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt index 2f302352..0ffd0696 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt @@ -137,14 +137,12 @@ class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSourc GlobalScope.launch(coroutineContext) { - var r = Report() val test = GlobalScope.async { val s = Date() Timber.d(">>> start...") val realm = Realm.getDefaultInstance() - r = createSessionGroupsAndStartCompute(realm) - report = r + report = createSessionGroupsAndStartCompute(realm) realm.close() val e = Date() @@ -155,7 +153,7 @@ class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSourc test.await() if (!isDetached) { - showResults(r) + showResults() } } @@ -164,7 +162,7 @@ class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSourc private fun createSessionGroupsAndStartCompute(realm: Realm): Report { val allStats: List = listOf( - Stat.NETRESULT, + Stat.NET_RESULT, Stat.HOURLY_RATE, Stat.AVERAGE, Stat.NUMBER_OF_SETS, @@ -173,7 +171,7 @@ class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSourc ) val allSessionGroup = ComputableGroup(stringAll, listOf(), allStats) val cgStats: List = listOf( - Stat.NETRESULT, + Stat.NET_RESULT, Stat.HOURLY_RATE, Stat.NET_BB_PER_100_HANDS, Stat.HOURLY_RATE_BB, @@ -185,7 +183,7 @@ class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSourc ) val cgSessionGroup = ComputableGroup(stringCashGame, listOf(QueryCondition.CASH), cgStats) val tStats: List = - listOf(Stat.NETRESULT, Stat.HOURLY_RATE, Stat.ROI, Stat.WIN_RATIO, Stat.NUMBER_OF_GAMES, Stat.AVERAGE_BUYIN) + listOf(Stat.NET_RESULT, Stat.HOURLY_RATE, Stat.ROI, Stat.WIN_RATIO, Stat.NUMBER_OF_GAMES, Stat.AVERAGE_BUYIN) val tSessionGroup = ComputableGroup(stringTournament, listOf(QueryCondition.TOURNAMENT), tStats) Timber.d(">>>>> Start computations...") @@ -198,9 +196,11 @@ class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSourc } - private fun showResults(report: Report) { - this.rowRepresentables = this.convertReportIntoRepresentables(report) - statsAdapter.notifyDataSetChanged() + private fun showResults() { + report?.let { + this.rowRepresentables = this.convertReportIntoRepresentables(it) + statsAdapter.notifyDataSetChanged() + } } private fun convertReportIntoRepresentables(report: Report): ArrayList { @@ -239,7 +239,7 @@ class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSourc GlobalScope.launch(coroutineContext) { - var report = Report() + var report: Report? = null val test = GlobalScope.async { val s = Date() Timber.d(">>> start...") @@ -259,7 +259,9 @@ class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSourc test.await() if (!isDetached) { - StatisticDetailsActivity.newInstance(requireContext(), stat, computableGroup, report) + report?.let { + StatisticDetailsActivity.newInstance(requireContext(), stat, computableGroup, it) + } } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/SessionRowView.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/SessionRowView.kt index 362a83fb..3fb91cac 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/SessionRowView.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/SessionRowView.kt @@ -149,7 +149,7 @@ class SessionRowView : FrameLayout { rowHistorySession.infoTitle.isVisible = false val result = session.result?.net ?: 0.0 - val formattedStat = ComputedStat(Stat.NETRESULT, result, currency = session.currency).format(context) + val formattedStat = ComputedStat(Stat.NET_RESULT, result, currency = session.currency).format(context) rowHistorySession.gameResult.setTextFormat(formattedStat, context) } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/TransactionRowView.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/TransactionRowView.kt index 6ccb8219..aa3182b4 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/TransactionRowView.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/TransactionRowView.kt @@ -63,7 +63,7 @@ class TransactionRowView : FrameLayout { rowTransaction.transactionSubtitle.text = subtitle // Amount - val formattedStat = ComputedStat(Stat.NETRESULT, transaction.amount).format(context) + val formattedStat = ComputedStat(Stat.NET_RESULT, transaction.amount).format(context) rowTransaction.transactionAmount.setTextFormat(formattedStat, context) } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/ReportRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/ReportRow.kt index 12209607..15abef1c 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/ReportRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/ReportRow.kt @@ -1,6 +1,7 @@ package net.pokeranalytics.android.ui.view.rowrepresentable import net.pokeranalytics.android.R +import net.pokeranalytics.android.model.comparison.Comparator import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowViewType @@ -15,7 +16,7 @@ enum class ReportRow : RowRepresentable { LOCATIONS, NUMBER_OF_TABLES, TOURNAMENT_TYPES, - VARIANT; + GAME; companion object { @@ -40,9 +41,24 @@ enum class ReportRow : RowRepresentable { LOCATIONS -> R.string.locations NUMBER_OF_TABLES -> R.string.number_of_tables TOURNAMENT_TYPES -> R.string.tournament_type_complete - VARIANT -> R.string.variant + GAME -> R.string.game } } override val viewType: Int = RowViewType.TITLE_ARROW.ordinal + + val comparators: List + get() { + return when (this) { + BLINDS -> listOf(Comparator.BLIND) + BUY_IN -> listOf(Comparator.TOURNAMENT_ENTRY_FEE) + DAY_OF_WEEKS -> listOf(Comparator.DAY_OF_WEEK) + GENERAL -> listOf(Comparator.CASH, Comparator.LIVE) + LOCATIONS -> listOf(Comparator.LOCATION) + NUMBER_OF_TABLES -> listOf() //TODO + TOURNAMENT_TYPES -> listOf(Comparator.TOURNAMENT_TYPE) + GAME -> listOf(Comparator.GAME) + } + } + } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_calendar_details.xml b/app/src/main/res/layout/fragment_calendar_details.xml index 3eda6595..cd88754a 100644 --- a/app/src/main/res/layout/fragment_calendar_details.xml +++ b/app/src/main/res/layout/fragment_calendar_details.xml @@ -64,10 +64,24 @@ app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="@+id/recyclerView" + app:layout_constraintTop_toBottomOf="@+id/appBar" tools:alpha="1" tools:visibility="visible" /> + +