diff --git a/app/src/androidTest/java/net/pokeranalytics/android/unitTests/BankrollInstrumentedUnitTest.kt b/app/src/androidTest/java/net/pokeranalytics/android/unitTests/BankrollInstrumentedUnitTest.kt index 62a47bf9..a76308ed 100644 --- a/app/src/androidTest/java/net/pokeranalytics/android/unitTests/BankrollInstrumentedUnitTest.kt +++ b/app/src/androidTest/java/net/pokeranalytics/android/unitTests/BankrollInstrumentedUnitTest.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) } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0864aea4..44851fd3 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -57,6 +57,11 @@ android:launchMode="singleTop" android:screenOrientation="portrait" /> + + ? = null + private var barDataSets: List? = null + private var style: GraphFragment.Style? = GraphFragment.Style.LINE + private var activityTitle: String? = null + + /** + * Default constructor + */ + fun newInstance( + context: Context, lineDataSets: List? = null, barDataSets: List? = 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 + } + +} diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollFragment.kt index 442c6bab..fb7628b6 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollFragment.kt @@ -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,29 +133,30 @@ class BankrollFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSou GlobalScope.launch { - val startDate = Date() - val realm = Realm.getDefaultInstance() + launch(Dispatchers.Main) { - // Graph - val globalBankrollReportSetup = BankrollReportSetup() - val globalBankrollReport = BankrollCalculator.computeReport(globalBankrollReportSetup) - rows.add(0, GraphRow(dataSet = globalBankrollReport.lineDataSet(requireContext()))) - rows.add(globalBankrollReport) - bankrollReportForRow[globalBankrollReport] = globalBankrollReport + val startDate = Date() + //val realm = Realm.getDefaultInstance() - // Bankrolls - rows.add(CustomizableRowRepresentable(RowViewType.HEADER_TITLE, resId = R.string.bankrolls)) + // Graph + val globalBankrollReportSetup = BankrollReportSetup() + val globalBankrollReport = BankrollCalculator.computeReport(getRealm(), globalBankrollReportSetup) + rows.add(0, GraphRow(dataSet = globalBankrollReport.lineDataSet(requireContext()))) + rows.add(globalBankrollReport) + bankrollReportForRow[globalBankrollReport] = globalBankrollReport - realm.close() - Timber.d("initData: ${System.currentTimeMillis() - startDate.time}ms") + // Bankrolls + rows.add(CustomizableRowRepresentable(RowViewType.HEADER_TITLE, resId = R.string.bankrolls)) + + //realm.close() + Timber.d("initData: ${System.currentTimeMillis() - startDate.time}ms") - launch(Dispatchers.Main) { val bankrolls = LiveData.BANKROLL.items(getRealm()) as RealmResults 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) 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 2d802873..b8d4fccb 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 @@ -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 -> @@ -182,7 +179,7 @@ class GraphFragment : PokerAnalyticsFragment(), OnChartValueSelectedListener { } } - private fun selectValue(entry: Entry, dataSet: IBarLineScatterCandleBubbleDataSet? = null) { + private fun selectValue(entry: Entry, dataSet: IBarLineScatterCandleBubbleDataSet? = null) { val statEntry = when (entry.data) { is ObjectIdentifier -> {