Improve Graph management & bankroll graph details

dev
Aurelien Hubert 7 years ago
parent 17b27f085b
commit 614524b118
  1. 10
      app/src/androidTest/java/net/pokeranalytics/android/unitTests/BankrollInstrumentedUnitTest.kt
  2. 5
      app/src/main/AndroidManifest.xml
  3. 6
      app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollCalculator.kt
  4. 70
      app/src/main/java/net/pokeranalytics/android/ui/activity/GraphActivity.kt
  5. 24
      app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollFragment.kt
  6. 5
      app/src/main/java/net/pokeranalytics/android/ui/fragment/GraphFragment.kt

@ -73,16 +73,16 @@ class BankrollInstrumentedUnitTest : SessionInstrumentedUnitTest() {
val br1 = realm.where(Bankroll::class.java).equalTo("name", "br1").findFirst()
val brSetup1 = BankrollReportSetup(br1)
val report1 = BankrollCalculator.computeReport(brSetup1)
val report1 = BankrollCalculator.computeReport(realm, brSetup1)
Assert.assertEquals(400.0, report1.total, EPSILON)
val br2 = realm.where(Bankroll::class.java).equalTo("name", "br2").findFirst()
val brSetup2 = BankrollReportSetup(br2)
val report2 = BankrollCalculator.computeReport(brSetup2)
val report2 = BankrollCalculator.computeReport(realm, brSetup2)
Assert.assertEquals(2000.0, report2.total, EPSILON)
val brSetupAll = BankrollReportSetup()
val reportAll = BankrollCalculator.computeReport(brSetupAll)
val reportAll = BankrollCalculator.computeReport(realm, brSetupAll)
Assert.assertEquals(2400.0, reportAll.total, EPSILON)
}
@ -117,11 +117,11 @@ class BankrollInstrumentedUnitTest : SessionInstrumentedUnitTest() {
}
val brSetup1 = BankrollReportSetup(br1)
val report1 = BankrollCalculator.computeReport(brSetup1)
val report1 = BankrollCalculator.computeReport(realm, brSetup1)
Assert.assertEquals(400.0, report1.total, EPSILON)
val brSetupAll = BankrollReportSetup()
val reportAll = BankrollCalculator.computeReport(brSetupAll)
val reportAll = BankrollCalculator.computeReport(realm, brSetupAll)
Assert.assertEquals(4000.0, reportAll.total, EPSILON)
}

@ -57,6 +57,11 @@
android:launchMode="singleTop"
android:screenOrientation="portrait" />
<activity
android:name="net.pokeranalytics.android.ui.activity.GraphActivity"
android:launchMode="singleTop"
android:screenOrientation="portrait" />
<activity
android:name="net.pokeranalytics.android.ui.activity.StatisticDetailsActivity"
android:launchMode="singleTop"

@ -11,9 +11,9 @@ class BankrollCalculator {
companion object {
fun computeReport(setup: BankrollReportSetup) : BankrollReport {
fun computeReport(realm: Realm, setup: BankrollReportSetup) : BankrollReport {
val realm = Realm.getDefaultInstance()
//val realm = Realm.getDefaultInstance()
val report = BankrollReport(setup)
@ -81,7 +81,7 @@ class BankrollCalculator {
report.generateGraphPointsIfNecessary()
realm.close()
//realm.close()
return report
}

@ -0,0 +1,70 @@
package net.pokeranalytics.android.ui.activity
import android.content.Context
import android.content.Intent
import android.os.Bundle
import com.github.mikephil.charting.data.BarDataSet
import com.github.mikephil.charting.data.LineDataSet
import kotlinx.android.synthetic.main.activity_graph.*
import net.pokeranalytics.android.R
import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
import net.pokeranalytics.android.ui.fragment.GraphFragment
class GraphActivity : PokerAnalyticsActivity() {
companion object {
private var lineDataSets: List<LineDataSet>? = null
private var barDataSets: List<BarDataSet>? = null
private var style: GraphFragment.Style? = GraphFragment.Style.LINE
private var activityTitle: String? = null
/**
* Default constructor
*/
fun newInstance(
context: Context, lineDataSets: List<LineDataSet>? = null, barDataSets: List<BarDataSet>? = null,
style: GraphFragment.Style = GraphFragment.Style.LINE, title: String? = null
) {
this.lineDataSets = lineDataSets
this.barDataSets = barDataSets
this.style = style
this.activityTitle = title
val intent = Intent(context, GraphActivity::class.java)
context.startActivity(intent)
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_graph)
initUI()
}
/**
* Init UI
*/
private fun initUI() {
activityTitle?.let {
setSupportActionBar(toolbar)
supportActionBar?.setDisplayHomeAsUpEnabled(true)
title = activityTitle
activityTitle = null
}
style?.let {
val fragmentTransaction = supportFragmentManager.beginTransaction()
val graphFragment = GraphFragment.newInstance(lineDataSets, barDataSets, it)
fragmentTransaction.add(R.id.container, graphFragment)
fragmentTransaction.commit()
}
lineDataSets = null
barDataSets = null
style = null
}
}

@ -7,8 +7,8 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.LinearLayoutManager
import com.github.mikephil.charting.data.LineDataSet
import com.google.android.material.snackbar.Snackbar
import io.realm.Realm
import io.realm.RealmObject
import io.realm.RealmResults
import kotlinx.android.synthetic.main.fragment_bankroll.*
@ -31,7 +31,7 @@ import net.pokeranalytics.android.model.realm.Bankroll
import net.pokeranalytics.android.ui.activity.BankrollDetailsActivity
import net.pokeranalytics.android.ui.activity.DataListActivity
import net.pokeranalytics.android.ui.activity.EditableDataActivity
import net.pokeranalytics.android.ui.activity.StatisticDetailsActivity
import net.pokeranalytics.android.ui.activity.GraphActivity
import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
@ -107,13 +107,8 @@ class BankrollFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSou
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) {
when (row) {
is GraphRow -> {
row.report?.let { report ->
row.stat?.let { stat ->
report.results.firstOrNull()?.group?.let { computableGroup ->
StatisticDetailsActivity.newInstance(requireContext(), stat, computableGroup, report, false, row.title)
}
}
}
val lineDataSet = row.dataSet as LineDataSet
GraphActivity.newInstance(requireContext(), listOf(lineDataSet), title = getString(R.string.bankroll))
}
else -> {
if (bankrollReportForRow.containsKey(row)) {
@ -138,12 +133,14 @@ class BankrollFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSou
GlobalScope.launch {
launch(Dispatchers.Main) {
val startDate = Date()
val realm = Realm.getDefaultInstance()
//val realm = Realm.getDefaultInstance()
// Graph
val globalBankrollReportSetup = BankrollReportSetup()
val globalBankrollReport = BankrollCalculator.computeReport(globalBankrollReportSetup)
val globalBankrollReport = BankrollCalculator.computeReport(getRealm(), globalBankrollReportSetup)
rows.add(0, GraphRow(dataSet = globalBankrollReport.lineDataSet(requireContext())))
rows.add(globalBankrollReport)
bankrollReportForRow[globalBankrollReport] = globalBankrollReport
@ -151,16 +148,15 @@ class BankrollFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSou
// Bankrolls
rows.add(CustomizableRowRepresentable(RowViewType.HEADER_TITLE, resId = R.string.bankrolls))
realm.close()
//realm.close()
Timber.d("initData: ${System.currentTimeMillis() - startDate.time}ms")
launch(Dispatchers.Main) {
val bankrolls = LiveData.BANKROLL.items(getRealm()) as RealmResults<Bankroll>
bankrolls.forEach {
val bankrollReportSetup = BankrollReportSetup(it)
val bankrollReport = BankrollCalculator.computeReport(bankrollReportSetup)
val bankrollReport = BankrollCalculator.computeReport(getRealm(), bankrollReportSetup)
val computedStat = ComputedStat(Stat.NET_RESULT, bankrollReport.total)
val row = CustomizableRowRepresentable(RowViewType.TITLE_VALUE_ARROW, title = it.name, computedStat = computedStat, isSelectable = true)

@ -22,6 +22,7 @@ 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 {
@ -101,7 +102,6 @@ class GraphFragment : PokerAnalyticsFragment(), OnChartValueSelectedListener {
private fun initUI() {
parentActivity = activity as PokerAnalyticsActivity
parentActivity.title = stat.localizedTitle(requireContext())
this.legendView = when (this.style) {
Style.MULTILINE -> MultiLineLegendView(requireContext())
@ -129,15 +129,12 @@ class GraphFragment : PokerAnalyticsFragment(), OnChartValueSelectedListener {
this.chartView = lineChart
dataSets.firstOrNull()?.let { dataSet ->
this.legendView.prepareWithStat(this.stat, dataSet.entryCount, this.style)
if (dataSet.entryCount > 0) {
val entry = dataSet.getEntryForIndex(dataSet.entryCount - 1)
this.selectValue(entry, dataSet)
}
}
}
this.barDataSetList?.let { dataSets ->

Loading…
Cancel
Save