Factorize and cleanup code

dev
Laurent 7 years ago
parent 6124358f0c
commit c935df892f
  1. 23
      app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt
  2. 32
      app/src/main/java/net/pokeranalytics/android/ui/activity/ComparisonReportActivity.kt
  3. 26
      app/src/main/java/net/pokeranalytics/android/ui/activity/ProgressReportActivity.kt
  4. 11
      app/src/main/java/net/pokeranalytics/android/ui/activity/TableReportActivity.kt
  5. 23
      app/src/main/java/net/pokeranalytics/android/ui/activity/components/ReportActivity.kt
  6. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarDetailsFragment.kt
  7. 24
      app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportsFragment.kt
  8. 7
      app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ComposableTableReportFragment.kt
  9. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ProgressReportFragment.kt

@ -12,6 +12,9 @@ import net.pokeranalytics.android.model.filter.filter
import net.pokeranalytics.android.model.realm.ComputableResult import net.pokeranalytics.android.model.realm.ComputableResult
import net.pokeranalytics.android.model.realm.Filter import net.pokeranalytics.android.model.realm.Filter
import net.pokeranalytics.android.model.realm.SessionSet import net.pokeranalytics.android.model.realm.SessionSet
import net.pokeranalytics.android.ui.activity.ComparisonReportActivity
import net.pokeranalytics.android.ui.activity.ProgressReportActivity
import net.pokeranalytics.android.ui.activity.TableReportActivity
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.util.extensions.startOfDay import net.pokeranalytics.android.util.extensions.startOfDay
import java.util.* import java.util.*
@ -84,6 +87,19 @@ class Calculator {
} }
} }
val activityClass: Class<*>
get() {
return when (this) {
TABLE -> TableReportActivity::class.java
PROGRESS -> ProgressReportActivity::class.java
COMPARISON -> ComparisonReportActivity::class.java
else -> throw IllegalStateException("undefined activity for report display")
// MAP -> R.string.map
// POLYNOMIAL -> null
}
}
} }
/** /**
@ -172,8 +188,11 @@ class Calculator {
stats: List<Stat>? = null stats: List<Stat>? = null
): Report { ): Report {
val options = Options(evolutionValues = Options.EvolutionValues.STANDARD, aggregationType = aggregationType) val options = Options(display = Options.Display.PROGRESS,
options.stats = listOf(stat) evolutionValues = Options.EvolutionValues.STANDARD,
stats = listOf(stat),
aggregationType = aggregationType)
if (aggregationType == AggregationType.DURATION) { if (aggregationType == AggregationType.DURATION) {
options.evolutionValues = Options.EvolutionValues.TIMED options.evolutionValues = Options.EvolutionValues.TIMED
} }

@ -6,28 +6,8 @@ import net.pokeranalytics.android.ui.activity.components.ReportActivity
import net.pokeranalytics.android.ui.fragment.report.ComparisonReportFragment import net.pokeranalytics.android.ui.fragment.report.ComparisonReportFragment
class ComparisonReportActivity : ReportActivity() { class ComparisonReportActivity : ReportActivity() {
// companion object {
//
// // Unparcel fails when setting a custom Parcelable object on Entry so we use a static reference to passe objects
// private var report: Report? = null
// private var reportTitle: String = ""
//
// /**
// * Default constructor
// */
// fun newInstance(context: Context, report: Report, reportTitle: String) {
// //parameters = GraphParameters(stat, group, report)
// this.report = report
// this.reportTitle = reportTitle
// val intent = Intent(context, ComparisonReportActivity::class.java)
// context.startActivity(intent)
// }
//
// }
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(R.layout.activity_report_details) setContentView(R.layout.activity_report_details)
@ -39,14 +19,18 @@ class ComparisonReportActivity : ReportActivity() {
*/ */
private fun initUI() { private fun initUI() {
report?.let { parameters?.let {
val report = it.report
val title = it.title
val fragmentTransaction = supportFragmentManager.beginTransaction() val fragmentTransaction = supportFragmentManager.beginTransaction()
val reportDetailsFragment = ComparisonReportFragment.newInstance(it, reportTitle) val reportDetailsFragment = ComparisonReportFragment.newInstance(report, title)
fragmentTransaction.add(R.id.reportDetailsContainer, reportDetailsFragment) fragmentTransaction.add(R.id.reportDetailsContainer, reportDetailsFragment)
fragmentTransaction.commit() fragmentTransaction.commit()
report = null
} }
parameters = null
} }
} }

@ -7,36 +7,29 @@ import androidx.fragment.app.Fragment
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
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.activity.components.PokerAnalyticsActivity
import net.pokeranalytics.android.ui.activity.components.ReportActivity import net.pokeranalytics.android.ui.activity.components.ReportActivity
import net.pokeranalytics.android.ui.activity.components.ReportParameters
import net.pokeranalytics.android.ui.fragment.report.ProgressReportFragment import net.pokeranalytics.android.ui.fragment.report.ProgressReportFragment
class ProgressReportActivity : ReportActivity() {
class StatisticsDetailsParameters(var stat: Stat, var report: Report, var title: String)
class ProgressReportActivity : PokerAnalyticsActivity() {
companion object { companion object {
// Unparcel fails when setting a custom Parcelable object on Entry so we use a static reference to passe objects // Unparcel fails when setting a custom Parcelable object on Entry so we use a static reference to passe objects
private var parameters: StatisticsDetailsParameters? = null
private var displayAggregationChoices: Boolean = true
/** /**
* Default constructor * Default constructor
*/ */
fun newInstance(context: Context, stat: Stat, report: Report, displayAggregationChoices: Boolean = true, title: String) { fun newInstance(context: Context, report: Report, title: String, stat: Stat? = null, displayAggregationChoices: Boolean = true) {
this.parameters = StatisticsDetailsParameters(stat, report, title) parameters = ReportParameters(report, title, stat, showAggregationChoices = displayAggregationChoices)
this.displayAggregationChoices = displayAggregationChoices
val intent = Intent(context, ProgressReportActivity::class.java) val intent = Intent(context, ProgressReportActivity::class.java)
context.startActivity(intent) context.startActivity(intent)
} }
fun newInstanceForResult(fragment: Fragment, stat: Stat, report: Report, displayAggregationChoices: Boolean = true, title: String) { fun newInstanceForResult(fragment: Fragment, report: Report, title: String, stat: Stat? = null, displayAggregationChoices: Boolean = true) {
this.parameters = StatisticsDetailsParameters(stat, report, title) parameters = ReportParameters(report, title, stat, showAggregationChoices = displayAggregationChoices)
this.displayAggregationChoices = displayAggregationChoices
val intent = Intent(fragment.context, ProgressReportActivity::class.java) val intent = Intent(fragment.context, ProgressReportActivity::class.java)
fragment.startActivityForResult(intent, ReportActivity.DEFAULT_REQUEST_CODE) fragment.startActivityForResult(intent, DEFAULT_REQUEST_CODE)
} }
} }
@ -58,8 +51,9 @@ class ProgressReportActivity : PokerAnalyticsActivity() {
fragmentTransaction.commit() fragmentTransaction.commit()
parameters?.let { parameters?.let {
val report = it.report
statisticDetailsFragment.setData(it.stat, it.report, displayAggregationChoices, it.title) val stat = it.stat ?: report.options.stats.first()
statisticDetailsFragment.setData(report, stat, it.showAggregationChoices, it.title)
parameters = null parameters = null
} }

@ -18,13 +18,18 @@ class TableReportActivity : ReportActivity() {
*/ */
private fun initUI() { private fun initUI() {
report?.let { parameters?.let {
val report = it.report
val title = it.title
val fragmentTransaction = supportFragmentManager.beginTransaction() val fragmentTransaction = supportFragmentManager.beginTransaction()
val fragment = TableReportFragment.newInstance(it, reportTitle) val fragment = TableReportFragment.newInstance(report, title)
fragmentTransaction.add(R.id.reportDetailsContainer, fragment) fragmentTransaction.add(R.id.reportDetailsContainer, fragment)
fragmentTransaction.commit() fragmentTransaction.commit()
} }
report = null parameters = null
} }
} }

@ -4,6 +4,9 @@ import android.content.Context
import android.content.Intent import android.content.Intent
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import net.pokeranalytics.android.calculus.Report import net.pokeranalytics.android.calculus.Report
import net.pokeranalytics.android.calculus.Stat
class ReportParameters(var report: Report, var title: String, var stat: Stat? = null, var showAggregationChoices: Boolean = true)
abstract class ReportActivity : PokerAnalyticsActivity() { abstract class ReportActivity : PokerAnalyticsActivity() {
@ -12,24 +15,22 @@ abstract class ReportActivity : PokerAnalyticsActivity() {
const val DEFAULT_REQUEST_CODE = 999 const val DEFAULT_REQUEST_CODE = 999
// Unparcel fails when setting a custom Parcelable object on Entry so we use a static reference to passe objects // Unparcel fails when setting a custom Parcelable object on Entry so we use a static reference to passe objects
var report: Report? = null var parameters: ReportParameters? = null
var reportTitle: String = ""
/** /**
* Default constructor * Default constructor
*/ */
fun newInstance(context: Context, report: Report, reportTitle: String) { fun newInstance(context: Context, report: Report, reportTitle: String, stat: Stat? = null) {
this.report = report val options = report.options
this.reportTitle = reportTitle this.parameters = ReportParameters(report, reportTitle, stat)
val intent = Intent(context, this::class.java) val intent = Intent(context, options.display.activityClass)
context.startActivity(intent) context.startActivity(intent)
} }
fun newInstanceForResult(fragment: Fragment, clazz: Class<*>, report: Report, reportTitle: String) { fun newInstanceForResult(fragment: Fragment, report: Report, reportTitle: String, stat: Stat? = null) {
this.report = report val options = report.options
this.reportTitle = reportTitle this.parameters = ReportParameters(report, reportTitle, stat)
val intent = Intent(fragment.requireContext(), options.display.activityClass)
val intent = Intent(fragment.requireContext(), clazz)
fragment.startActivityForResult(intent, DEFAULT_REQUEST_CODE) fragment.startActivityForResult(intent, DEFAULT_REQUEST_CODE)
} }

@ -155,7 +155,7 @@ class CalendarDetailsFragment : PokerAnalyticsFragment(), StaticRowRepresentable
if (report != null && stat != null) { if (report != null && stat != null) {
val title = row.title ?: stat.localizedTitle(requireContext()) val title = row.title ?: stat.localizedTitle(requireContext())
ProgressReportActivity.newInstance(requireContext(), stat, report, false, title) ProgressReportActivity.newInstance(requireContext(), report, title, stat, false)
} }
} }
} }

@ -22,7 +22,8 @@ import net.pokeranalytics.android.model.Criteria
import net.pokeranalytics.android.model.LiveData import net.pokeranalytics.android.model.LiveData
import net.pokeranalytics.android.model.combined import net.pokeranalytics.android.model.combined
import net.pokeranalytics.android.model.realm.ReportSetup import net.pokeranalytics.android.model.realm.ReportSetup
import net.pokeranalytics.android.ui.activity.* import net.pokeranalytics.android.ui.activity.DataListActivity
import net.pokeranalytics.android.ui.activity.ReportCreationActivity
import net.pokeranalytics.android.ui.activity.components.ReportActivity import net.pokeranalytics.android.ui.activity.components.ReportActivity
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
@ -193,26 +194,7 @@ class ReportsFragment : DeletableItemFragment(), StaticRowRepresentableDataSourc
launch(Dispatchers.Main) { launch(Dispatchers.Main) {
if (!isDetached) { if (!isDetached) {
hideLoader() hideLoader()
ReportActivity.newInstanceForResult(this@ReportsFragment, report, reportName)
when (options.display) {
Calculator.Options.Display.TABLE -> {
ReportActivity.newInstanceForResult(this@ReportsFragment, TableReportActivity::class.java, report, reportName)
// TableReportActivity.newInstanceForResult(this@ReportsFragment, report, reportName)
// TableReportActivity.newInstance(requireContext(), report, reportName)
}
Calculator.Options.Display.PROGRESS -> {
val stat = options.stats.first()
val title = stat.localizedTitle(requireContext())
ProgressReportActivity.newInstanceForResult(this@ReportsFragment, stat, report, title = title)
}
Calculator.Options.Display.COMPARISON -> {
// ComparisonReportActivity.newInstance(requireContext(), report, reportName)
ReportActivity.newInstanceForResult(this@ReportsFragment, ComparisonReportActivity::class.java, report, reportName)
}
else -> {
Timber.d("Report type not handled at the moment")
}
}
} }
} }
realm.close() realm.close()

@ -12,7 +12,7 @@ import kotlinx.coroutines.*
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.calculus.* import net.pokeranalytics.android.calculus.*
import net.pokeranalytics.android.model.realm.ComputableResult import net.pokeranalytics.android.model.realm.ComputableResult
import net.pokeranalytics.android.ui.activity.ProgressReportActivity import net.pokeranalytics.android.ui.activity.components.ReportActivity
import net.pokeranalytics.android.ui.adapter.DisplayDescriptor import net.pokeranalytics.android.ui.adapter.DisplayDescriptor
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
@ -213,7 +213,10 @@ open class ComposableTableReportFragment : RealmFragment(), StaticRowRepresentab
hideLoader() hideLoader()
report?.let { report?.let {
val title = stat.localizedTitle(requireContext()) val title = stat.localizedTitle(requireContext())
ProgressReportActivity.newInstance(requireContext(), stat, it, title = title)
ReportActivity.newInstance(requireContext(), it, title, stat)
// ProgressReportActivity.newInstance(requireContext(), stat, it, title = title)
} }
} }
} }

@ -64,7 +64,7 @@ class ProgressReportFragment : AbstractReportFragment() {
/** /**
* Set data * Set data
*/ */
fun setData(stat: Stat, report: Report, displayAggregationChoices: Boolean, title: String) { fun setData(report: Report, stat: Stat, displayAggregationChoices: Boolean, title: String) {
this.stat = stat this.stat = stat
this.setReport(report) this.setReport(report)
this.displayAggregationChoices = displayAggregationChoices this.displayAggregationChoices = displayAggregationChoices

Loading…
Cancel
Save