From 9b68ab3b6629fdf93edab587aa8759c595da6df7 Mon Sep 17 00:00:00 2001 From: Laurent Date: Wed, 24 Apr 2019 19:02:27 +0200 Subject: [PATCH] Fixes various bugs --- .../pokeranalytics/android/calculus/Calculator.kt | 8 ++------ .../net/pokeranalytics/android/calculus/Stat.kt | 13 ++++++++++++- .../android/ui/fragment/GraphFragment.kt | 7 +++++-- .../android/ui/fragment/ReportsFragment.kt | 2 +- .../android/ui/fragment/StatisticDetailsFragment.kt | 12 ++++++++++++ .../android/ui/fragment/StatisticsFragment.kt | 9 ++++++++- .../android/ui/view/SessionRowView.kt | 6 ++++-- app/src/main/res/values/strings.xml | 2 +- 8 files changed, 45 insertions(+), 14 deletions(-) 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 1347d7f4..9bcf98fc 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt @@ -120,12 +120,8 @@ class Calculator { return when (aggregationType) { AggregationType.SESSION, AggregationType.DURATION -> this.computeGroups(realm, listOf(group), options) - AggregationType.MONTH -> { - val criteria: List = listOf(Criteria.Years, Criteria.MonthsOfYear) - this.computeStatsWithComparators(realm, criteria, group.conditions, options) - } - AggregationType.YEAR -> { - val criteria: List = listOf(Criteria.Years) + AggregationType.MONTH, AggregationType.YEAR -> { + val criteria: List = aggregationType.criterias this.computeStatsWithComparators(realm, criteria, group.conditions, options) } } 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 e8fc3c68..491aa7d7 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/Stat.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/Stat.kt @@ -3,6 +3,7 @@ package net.pokeranalytics.android.calculus import android.content.Context import net.pokeranalytics.android.R import net.pokeranalytics.android.exceptions.FormattingException +import net.pokeranalytics.android.model.Criteria import net.pokeranalytics.android.model.interfaces.Timed import net.pokeranalytics.android.ui.graph.AxisFormatting import net.pokeranalytics.android.ui.view.RowRepresentable @@ -46,6 +47,15 @@ enum class AggregationType { } } + val criterias: List + get() { + return when (this) { + MONTH -> listOf(Criteria.Years, Criteria.MonthsOfYear) + YEAR -> listOf(Criteria.Years) + else -> listOf() + } + } + } /** @@ -233,7 +243,8 @@ enum class Stat : RowRepresentable { val hasEvolutionGraph: Boolean get() { return when (this) { - HOURLY_DURATION, AVERAGE_HOURLY_DURATION -> false + HOURLY_DURATION, AVERAGE_HOURLY_DURATION, + STANDARD_DEVIATION, STANDARD_DEVIATION_HOURLY, STANDARD_DEVIATION_BB_PER_100_HANDS -> false else -> true } } 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 0ae4886d..783da46a 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 @@ -132,9 +132,12 @@ class GraphFragment : PokerAnalyticsFragment(), OnChartValueSelectedListener { this.chartView = lineChart dataSets.firstOrNull()?.let { + this.legendView.prepareWithStat(this.stat, it.entryCount, this.style) - lastEntry = it.getEntryForIndex(it.entryCount - 1) - groupName = it.label + if (it.entryCount > 0) { + lastEntry = it.getEntryForIndex(it.entryCount - 1) + groupName = it.label + } } } 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 8e35f4b4..488c76ec 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 @@ -108,7 +108,7 @@ class ReportsFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSour private fun launchComputation(criteria: List, reportName: String) { if (criteria.combined().size < 2) { - Toast.makeText(context, R.string.less_then_2_values_for_comparison, Toast.LENGTH_LONG).show() + Toast.makeText(context, R.string.less_then_2_values_for_display, Toast.LENGTH_LONG).show() return } 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 3ed90ebe..c3602d3d 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 @@ -4,6 +4,7 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.Toast import androidx.core.view.isVisible import com.github.mikephil.charting.data.BarDataSet import com.github.mikephil.charting.data.LineDataSet @@ -16,6 +17,7 @@ import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import net.pokeranalytics.android.R import net.pokeranalytics.android.calculus.* +import net.pokeranalytics.android.model.combined import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.extensions.ChipGroupExtension import net.pokeranalytics.android.ui.extensions.hideWithAnimation @@ -107,6 +109,16 @@ class StatisticDetailsFragment : PokerAnalyticsFragment() { super.onCheckedChanged(group, checkedId) val aggregationType = aggregationTypes[checkedId] + when (aggregationType) { + AggregationType.MONTH, AggregationType.YEAR -> { + val queryConditions = aggregationType.criterias.combined() + if (queryConditions.size < 2) { + Toast.makeText(context, R.string.less_then_2_values_for_display, Toast.LENGTH_LONG).show() + return + } + } + } + reports[aggregationType]?.let { report -> setGraphData(report, aggregationType) } ?: run { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt index 5fedf62d..fd147bb0 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt @@ -139,7 +139,14 @@ class StatisticsFragment : TableReportFragment() { Timber.d(">>>>> Start computations...") - return Calculator.computeGroups(realm, listOf(allSessionGroup, cgSessionGroup, tSessionGroup), Calculator.Options()) + val options = Calculator.Options() + var computedStats = mutableListOf() + computedStats.addAll(allStats) + computedStats.addAll(cgStats) + computedStats.addAll(tStats) + options.displayedStats = computedStats + + return Calculator.computeGroups(realm, listOf(allSessionGroup, cgSessionGroup, tSessionGroup), options) } } \ No newline at end of file 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 9920cbee..fc9b1c39 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 @@ -58,9 +58,11 @@ class SessionRowView : FrameLayout { */ fun setData(session: Session) { + val date = session.startDate ?: session.creationDate + // Date - rowHistorySession.dateDay.text = session.creationDate.getShortDayName() - rowHistorySession.dateNumber.text = session.creationDate.getDayNumber() + rowHistorySession.dateDay.text = date.getShortDayName() + rowHistorySession.dateNumber.text = date.getDayNumber() // Title / Game type diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 286f075c..7eaa63c9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -9,7 +9,7 @@ Variant Line Initial Value - There is less than two values to compare! Please change your habits :) + Can\'t show because there is less than two values to display!