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 186ba556..8cee2454 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/Report.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/Report.kt @@ -11,8 +11,8 @@ import net.pokeranalytics.android.model.realm.ComputableResult import net.pokeranalytics.android.model.realm.Filter import net.pokeranalytics.android.model.realm.SessionSet import net.pokeranalytics.android.ui.fragment.GraphFragment +import net.pokeranalytics.android.ui.graph.DataSetFactory import net.pokeranalytics.android.ui.graph.GraphUnderlyingEntry -import net.pokeranalytics.android.ui.graph.PALineDataSet import net.pokeranalytics.android.ui.view.DefaultLegendValues import net.pokeranalytics.android.ui.view.LegendContent import net.pokeranalytics.android.util.ColorUtils @@ -54,7 +54,7 @@ class Report(var options: Calculator.Options) { } } - return PALineDataSet(entries, statName, context) + return DataSetFactory.lineDataSetInstance(entries, statName, context) } fun barEntries(stat: Stat? = null, context: Context): BarDataSet { @@ -71,10 +71,8 @@ class Report(var options: Calculator.Options) { } } - val barDataSet = BarDataSet(entries, statToUse?.name) - barDataSet.color = context.getColor(R.color.green) - barDataSet.setDrawValues(false) - return barDataSet + val label = statToUse?.name ?: "" + return DataSetFactory.barDataSetInstance(entries, label, context) } fun multiLineEntries(context: Context): List { @@ -366,7 +364,7 @@ class ComputedResults(group: ComputableGroup, shouldManageMultiGroupProgressValu entries.add(Entry(index.toFloat(), p.y.toFloat(), p.data)) } } - return PALineDataSet(entries, this.group.name, context) + return DataSetFactory.lineDataSetInstance(entries, this.group.name, context) } fun durationEntries(stat: Stat, context: Context): LineDataSet { @@ -376,7 +374,7 @@ class ComputedResults(group: ComputableGroup, shouldManageMultiGroupProgressValu entries.add(Entry(p.x.toFloat(), p.y.toFloat(), p.data)) } } - return PALineDataSet(entries, stat.name, context) + return DataSetFactory.lineDataSetInstance(entries, stat.name, context) } fun barEntries(stat: Stat, context: Context): BarDataSet { @@ -387,11 +385,7 @@ class ComputedResults(group: ComputableGroup, shouldManageMultiGroupProgressValu entries.add(BarEntry(p.x.toFloat(), p.y.toFloat(), p.data)) } } - val dataSet = BarDataSet(entries, stat.name) - dataSet.color = context.getColor(R.color.green) -// dataSet.barBorderWidth = 1.0f - dataSet.setDrawValues(false) - return dataSet + return DataSetFactory.barDataSetInstance(entries, stat.name, context) } fun distributionEntries(stat: Stat, context: Context): BarDataSet { @@ -423,10 +417,7 @@ class ComputedResults(group: ComputableGroup, shouldManageMultiGroupProgressValu } } - val dataSet = BarDataSet(entries, stat.name) - dataSet.colors = colors - dataSet.setDrawValues(false) - return dataSet + return DataSetFactory.barDataSetInstance(entries, stat.name, context) } val isEmpty: Boolean diff --git a/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollReport.kt b/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollReport.kt index be3a4b47..53d8ff4e 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollReport.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollReport.kt @@ -7,7 +7,7 @@ import net.pokeranalytics.android.model.filter.QueryCondition import net.pokeranalytics.android.model.interfaces.DatedValue import net.pokeranalytics.android.model.realm.Bankroll import net.pokeranalytics.android.model.realm.Transaction -import net.pokeranalytics.android.ui.graph.PALineDataSet +import net.pokeranalytics.android.ui.graph.DataSetFactory import java.util.* import kotlin.collections.HashMap @@ -137,7 +137,7 @@ class BankrollReport(setup: BankrollReportSetup) { val entry = Entry(it.date.time.toFloat(), it.value.toFloat(), it.data) entries.add(entry) } - return PALineDataSet(entries, "", context) + return DataSetFactory.lineDataSetInstance(entries, "", context) } } 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 783da46a..8745d937 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 @@ -21,7 +21,6 @@ import net.pokeranalytics.android.ui.graph.GraphUnderlyingEntry import net.pokeranalytics.android.ui.graph.setStyle import net.pokeranalytics.android.ui.view.LegendView import net.pokeranalytics.android.ui.view.MultiLineLegendView -import timber.log.Timber class GraphFragment : PokerAnalyticsFragment(), OnChartValueSelectedListener { @@ -116,27 +115,28 @@ class GraphFragment : PokerAnalyticsFragment(), OnChartValueSelectedListener { */ private fun loadGraph() { - Timber.d("loadGraph") - this.chartContainer.removeAllViews() - var lastEntry: Entry? = null var groupName: String? = null this.lineDataSetList?.let { dataSets -> val lineChart = LineChart(context) + lineChart.setOnChartValueSelectedListener(this) + val lineData = LineData(dataSets) lineChart.data = lineData this.chartView = lineChart - dataSets.firstOrNull()?.let { + dataSets.firstOrNull()?.let { dataSet -> + + this.legendView.prepareWithStat(this.stat, dataSet.entryCount, this.style) + if (dataSet.entryCount > 0) { + val entry = dataSet.getEntryForIndex(dataSet.entryCount - 1) + groupName = dataSet.label + this.selectValue(entry, groupName ?: "") - this.legendView.prepareWithStat(this.stat, it.entryCount, this.style) - if (it.entryCount > 0) { - lastEntry = it.getEntryForIndex(it.entryCount - 1) - groupName = it.label } } @@ -146,6 +146,8 @@ class GraphFragment : PokerAnalyticsFragment(), OnChartValueSelectedListener { this.legendView.prepareWithStat(this.stat, style = this.style) val barChart = BarChart(context) + barChart.setOnChartValueSelectedListener(this) + if (stat.showXAxisZero) { barChart.xAxis.axisMinimum = 0.0f } @@ -158,8 +160,8 @@ class GraphFragment : PokerAnalyticsFragment(), OnChartValueSelectedListener { barChart.data = barData dataSets.firstOrNull()?.let { - lastEntry = it.getEntryForIndex(it.entryCount - 1) - groupName = it.label + val entry = it.getEntryForIndex(0) + this.chartView?.highlightValue(entry.x, 0) } } @@ -167,11 +169,6 @@ class GraphFragment : PokerAnalyticsFragment(), OnChartValueSelectedListener { this.chartView?.let { it.setStyle(false, axisFormatting, requireContext()) - it.setOnChartValueSelectedListener(this) - } - - lastEntry?.let { - this.selectValue(it, groupName ?: "") } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/graph/ChartDataSet.kt b/app/src/main/java/net/pokeranalytics/android/ui/graph/ChartDataSet.kt deleted file mode 100644 index 2338ad35..00000000 --- a/app/src/main/java/net/pokeranalytics/android/ui/graph/ChartDataSet.kt +++ /dev/null @@ -1,30 +0,0 @@ -package net.pokeranalytics.android.ui.graph - -import android.content.Context -import com.github.mikephil.charting.data.Entry -import com.github.mikephil.charting.data.LineDataSet -import net.pokeranalytics.android.R - -class PALineDataSet(yVals: List, label: String, context: Context) : LineDataSet(yVals, label) { - - init { - this.highLightColor = context.getColor(R.color.chart_highlight_indicator) - this.setDrawValues(false) - this.setDrawCircles(false) - - val colors = arrayOf(R.color.green_light).toIntArray() - this.setColors(colors, context) - - } - -} - - - -//class PABarDataSet(yVals: List, label: String, context: Context) : BarDataSet(yVals, label) { -// -// init { -// this.highLightColor = context.getColor(R.color.chart_highlight_indicator) -// } -// -//} \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/graph/DataSetFactory.kt b/app/src/main/java/net/pokeranalytics/android/ui/graph/DataSetFactory.kt new file mode 100644 index 00000000..4ca91b45 --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/graph/DataSetFactory.kt @@ -0,0 +1,38 @@ +package net.pokeranalytics.android.ui.graph + +import android.content.Context +import com.github.mikephil.charting.data.BarDataSet +import com.github.mikephil.charting.data.BarEntry +import com.github.mikephil.charting.data.Entry +import com.github.mikephil.charting.data.LineDataSet +import net.pokeranalytics.android.R + +class DataSetFactory { + + companion object { + + fun lineDataSetInstance(yVals: List, label: String, context: Context) : LineDataSet { + + val lineDataSet = LineDataSet(yVals, label) + lineDataSet.highLightColor = context.getColor(R.color.chart_highlight_indicator) + lineDataSet.setDrawValues(false) + lineDataSet.setDrawCircles(false) + + val colors = arrayOf(R.color.green_light).toIntArray() + lineDataSet.setColors(colors, context) + + return lineDataSet + } + + fun barDataSetInstance(entries: List, label: String, context: Context) : BarDataSet { + + val barDataSet = BarDataSet(entries, label) + barDataSet.color = context.getColor(R.color.chart_bar) + barDataSet.highLightColor = context.getColor(R.color.chart_selected_bar) + barDataSet.setDrawValues(false) + return barDataSet + } + + } + +} diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 20aa67c0..5fedd9a2 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -8,7 +8,7 @@ Jeu Lignes Valeur initiale - Il faut au moins deux valeur pour afficher ce rapport! + Il faut au moins deux valeurs pour afficher ce rapport! Adresse diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 16a219a4..a8d685f0 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -39,5 +39,7 @@ #5c7258 #f8ffe5 + #3c8c50 + #71fb94