Improved bar selection

feature/top10
Laurent 7 years ago
parent 301cd78d85
commit dd7c821f45
  1. 25
      app/src/main/java/net/pokeranalytics/android/calculus/Report.kt
  2. 4
      app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollReport.kt
  3. 29
      app/src/main/java/net/pokeranalytics/android/ui/fragment/GraphFragment.kt
  4. 30
      app/src/main/java/net/pokeranalytics/android/ui/graph/ChartDataSet.kt
  5. 38
      app/src/main/java/net/pokeranalytics/android/ui/graph/DataSetFactory.kt
  6. 2
      app/src/main/res/values/colors.xml

@ -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<LineDataSet> {
@ -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

@ -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)
}
}

@ -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 ?: "")
}
}

@ -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<Entry>, 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<BarEntry>, label: String, context: Context) : BarDataSet(yVals, label) {
//
// init {
// this.highLightColor = context.getColor(R.color.chart_highlight_indicator)
// }
//
//}

@ -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<Entry>, 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<BarEntry>, 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
}
}
}

@ -39,5 +39,7 @@
<color name="chart_default">#5c7258</color>
<color name="chart_highlight_indicator">#f8ffe5</color>
<color name="chart_bar">#3c8c50</color>
<color name="chart_selected_bar">#71fb94</color>
</resources>

Loading…
Cancel
Save