Add correct graph data for Bankroll

dev
Aurelien Hubert 7 years ago
parent ab6f102df0
commit 06630b82fc
  1. 4
      app/src/main/java/net/pokeranalytics/android/ui/activity/EditableDataActivity.kt
  2. 4
      app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollEditDataFragment.kt
  3. 23
      app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollFragment.kt
  4. 27
      app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarDetailsFragment.kt
  5. 2
      app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt
  6. 3
      app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/GraphRow.kt

@ -7,7 +7,7 @@ import androidx.fragment.app.Fragment
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.LiveData import net.pokeranalytics.android.model.LiveData
import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
import net.pokeranalytics.android.ui.fragment.BankrollDataFragment import net.pokeranalytics.android.ui.fragment.BankrollEditDataFragment
import net.pokeranalytics.android.ui.fragment.EditableDataFragment import net.pokeranalytics.android.ui.fragment.EditableDataFragment
import net.pokeranalytics.android.ui.fragment.LocationDataFragment import net.pokeranalytics.android.ui.fragment.LocationDataFragment
import net.pokeranalytics.android.ui.fragment.TransactionDataFragment import net.pokeranalytics.android.ui.fragment.TransactionDataFragment
@ -62,7 +62,7 @@ class EditableDataActivity : PokerAnalyticsActivity() {
val fragmentManager = supportFragmentManager val fragmentManager = supportFragmentManager
val fragmentTransaction = fragmentManager.beginTransaction() val fragmentTransaction = fragmentManager.beginTransaction()
val fragment: EditableDataFragment = when (dataType) { val fragment: EditableDataFragment = when (dataType) {
LiveData.BANKROLL.ordinal -> BankrollDataFragment() LiveData.BANKROLL.ordinal -> BankrollEditDataFragment()
LiveData.LOCATION.ordinal -> LocationDataFragment() LiveData.LOCATION.ordinal -> LocationDataFragment()
LiveData.TRANSACTION.ordinal -> TransactionDataFragment() LiveData.TRANSACTION.ordinal -> TransactionDataFragment()
else -> EditableDataFragment() else -> EditableDataFragment()

@ -30,7 +30,7 @@ import java.util.*
/** /**
* Custom EditableDataFragment to manage the Bankroll data * Custom EditableDataFragment to manage the Bankroll data
*/ */
class BankrollDataFragment : EditableDataFragment(), StaticRowRepresentableDataSource { class BankrollEditDataFragment : EditableDataFragment(), StaticRowRepresentableDataSource {
companion object { companion object {
const val REQUEST_CODE_CURRENCY: Int = 100 const val REQUEST_CODE_CURRENCY: Int = 100
@ -130,7 +130,7 @@ class BankrollDataFragment : EditableDataFragment(), StaticRowRepresentableDataS
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) {
when (row) { when (row) {
BankrollRow.CURRENCY -> CurrenciesActivity.newInstanceForResult(this@BankrollDataFragment, REQUEST_CODE_CURRENCY) BankrollRow.CURRENCY -> CurrenciesActivity.newInstanceForResult(this@BankrollEditDataFragment, REQUEST_CODE_CURRENCY)
BankrollRow.REFRESH_RATE -> refreshRate() BankrollRow.REFRESH_RATE -> refreshRate()
else -> super.onRowSelected(position, row, fromAction) else -> super.onRowSelected(position, row, fromAction)
} }

@ -22,13 +22,11 @@ import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.calculus.Calculator
import net.pokeranalytics.android.calculus.ComputedStat import net.pokeranalytics.android.calculus.ComputedStat
import net.pokeranalytics.android.calculus.Stat import net.pokeranalytics.android.calculus.Stat
import net.pokeranalytics.android.calculus.bankroll.BankrollCalculator import net.pokeranalytics.android.calculus.bankroll.BankrollCalculator
import net.pokeranalytics.android.calculus.bankroll.BankrollReport import net.pokeranalytics.android.calculus.bankroll.BankrollReport
import net.pokeranalytics.android.calculus.bankroll.BankrollReportSetup import net.pokeranalytics.android.calculus.bankroll.BankrollReportSetup
import net.pokeranalytics.android.model.Criteria
import net.pokeranalytics.android.model.LiveData import net.pokeranalytics.android.model.LiveData
import net.pokeranalytics.android.model.interfaces.Deletable import net.pokeranalytics.android.model.interfaces.Deletable
import net.pokeranalytics.android.model.realm.Bankroll import net.pokeranalytics.android.model.realm.Bankroll
@ -106,11 +104,14 @@ class BankrollFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSou
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) {
Timber.d("onRowSelected: $row")
when (row) { when (row) {
is GraphRow -> { is GraphRow -> {
row.report.results.firstOrNull()?.group?.let { computableGroup -> row.report?.let { report ->
StatisticDetailsActivity.newInstance(requireContext(), row.stat, computableGroup, row.report, false, row.title) row.stat?.let { stat ->
report.results.firstOrNull()?.group?.let { computableGroup ->
StatisticDetailsActivity.newInstance(requireContext(), stat, computableGroup, report, false, row.title)
}
}
} }
} }
else -> { else -> {
@ -139,19 +140,9 @@ class BankrollFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSou
val realm = Realm.getDefaultInstance() val realm = Realm.getDefaultInstance()
// Graph // Graph
val requiredStats: List<Stat> = listOf(Stat.NET_RESULT)
val options = Calculator.Options(
evolutionValues = Calculator.Options.EvolutionValues.STANDARD,
stats = requiredStats,
criterias = listOf(Criteria.Bankrolls)
)
val report = Calculator.computeStats(realm, options = options)
rows.add(0, GraphRow(report, Stat.NET_RESULT))
val globalBankrollReportSetup = BankrollReportSetup() val globalBankrollReportSetup = BankrollReportSetup()
val globalBankrollReport = BankrollCalculator.computeReport(globalBankrollReportSetup) val globalBankrollReport = BankrollCalculator.computeReport(globalBankrollReportSetup)
rows.add(0, GraphRow(dataSet = globalBankrollReport.lineDataSet(requireContext())))
rows.add(globalBankrollReport) rows.add(globalBankrollReport)
bankrollReportForRow[globalBankrollReport] = globalBankrollReport bankrollReportForRow[globalBankrollReport] = globalBankrollReport

@ -150,8 +150,12 @@ class CalendarDetailsFragment : PokerAnalyticsFragment(), StaticRowRepresentable
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) {
when (row) { when (row) {
is GraphRow -> { is GraphRow -> {
row.report.results.firstOrNull()?.group?.let { computableGroup -> row.report?.let { report ->
StatisticDetailsActivity.newInstance(requireContext(), row.stat, computableGroup, row.report, false, row.title) row.stat?.let { stat ->
report.results.firstOrNull()?.group?.let { computableGroup ->
StatisticDetailsActivity.newInstance(requireContext(), stat, computableGroup, report, false, row.title)
}
}
} }
} }
} }
@ -199,7 +203,8 @@ class CalendarDetailsFragment : PokerAnalyticsFragment(), StaticRowRepresentable
val options = Calculator.Options( val options = Calculator.Options(
evolutionValues = Calculator.Options.EvolutionValues.STANDARD, evolutionValues = Calculator.Options.EvolutionValues.STANDARD,
stats = requiredStats, stats = requiredStats,
query = query) query = query
)
val report = Calculator.computeStats(realm, options) val report = Calculator.computeStats(realm, options)
Timber.d("Report take: ${System.currentTimeMillis() - startDate.time}ms") Timber.d("Report take: ${System.currentTimeMillis() - startDate.time}ms")
@ -207,17 +212,27 @@ class CalendarDetailsFragment : PokerAnalyticsFragment(), StaticRowRepresentable
report.results.firstOrNull()?.let { report.results.firstOrNull()?.let {
// Create rows // Create rows
val dataSet1 = report.results.firstOrNull()?.defaultStatEntries(Stat.NET_RESULT, requireContext())
val dataSet2 = report.results.firstOrNull()?.defaultStatEntries(Stat.STANDARD_DEVIATION, requireContext())
val dataSet3 = report.results.firstOrNull()?.defaultStatEntries(Stat.HOURLY_DURATION, requireContext())
rowRepresentables.clear() rowRepresentables.clear()
rowRepresentables.add(CustomizableRowRepresentable(RowViewType.HEADER_TITLE, resId = R.string.net_result)) rowRepresentables.add(CustomizableRowRepresentable(RowViewType.HEADER_TITLE, resId = R.string.net_result))
rowRepresentables.add(GraphRow(report, Stat.NET_RESULT)) rowRepresentables.add(GraphRow(dataSet1, report = report, stat = Stat.NET_RESULT))
rowRepresentables.add(StatDoubleRow(it.computedStat(Stat.NET_RESULT), it.computedStat(Stat.HOURLY_RATE))) 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(StatDoubleRow(it.computedStat(Stat.LOCATIONS_PLAYED), it.computedStat(Stat.LONGEST_STREAKS)))
rowRepresentables.add(CustomizableRowRepresentable(RowViewType.HEADER_TITLE, resId = R.string.distribution)) rowRepresentables.add(CustomizableRowRepresentable(RowViewType.HEADER_TITLE, resId = R.string.distribution))
rowRepresentables.add(GraphRow(report, Stat.STANDARD_DEVIATION, requireContext().getString(R.string.distribution))) rowRepresentables.add(
GraphRow(
dataSet2,
requireContext().getString(R.string.distribution),
report = report,
stat = Stat.STANDARD_DEVIATION
)
)
rowRepresentables.add(StatDoubleRow(it.computedStat(Stat.WIN_RATIO), it.computedStat(Stat.MAXIMUM_NETRESULT))) 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(CustomizableRowRepresentable(RowViewType.HEADER_TITLE, resId = R.string.volume))
rowRepresentables.add(GraphRow(report, Stat.HOURLY_DURATION)) rowRepresentables.add(GraphRow(dataSet3, report = report, stat = Stat.HOURLY_DURATION))
rowRepresentables.add(StatDoubleRow(it.computedStat(Stat.HOURLY_DURATION), it.computedStat(Stat.AVERAGE_HOURLY_DURATION))) rowRepresentables.add(StatDoubleRow(it.computedStat(Stat.HOURLY_DURATION), it.computedStat(Stat.AVERAGE_HOURLY_DURATION)))
rowRepresentables.add(StatDoubleRow(it.computedStat(Stat.DAYS_PLAYED), it.computedStat(Stat.MAXIMUM_DURATION))) rowRepresentables.add(StatDoubleRow(it.computedStat(Stat.DAYS_PLAYED), it.computedStat(Stat.MAXIMUM_DURATION)))
} }

@ -319,7 +319,7 @@ enum class RowViewType(private var layoutRes: Int) {
if (row is GraphRow) { if (row is GraphRow) {
row.report.results.firstOrNull()?.defaultStatEntries(row.stat, itemView.context)?.let { dataSet -> row.dataSet?.let { dataSet ->
val context = itemView.context val context = itemView.context

@ -1,12 +1,13 @@
package net.pokeranalytics.android.ui.view.rowrepresentable package net.pokeranalytics.android.ui.view.rowrepresentable
import com.github.mikephil.charting.data.DataSet
import net.pokeranalytics.android.calculus.Report import net.pokeranalytics.android.calculus.Report
import net.pokeranalytics.android.calculus.Stat import net.pokeranalytics.android.calculus.Stat
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.ui.view.RowViewType
class GraphRow(var report: Report, var stat: Stat, var title: String? = null) : RowRepresentable { class GraphRow(var dataSet: DataSet<*>?, var title: String? = null, var report: Report? = null, var stat: Stat? = null) : RowRepresentable {
override val viewType: Int override val viewType: Int
get() = RowViewType.GRAPH.ordinal get() = RowViewType.GRAPH.ordinal

Loading…
Cancel
Save