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.Filter
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.util.extensions.startOfDay
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
): Report {
val options = Options(evolutionValues = Options.EvolutionValues.STANDARD, aggregationType = aggregationType)
options.stats = listOf(stat)
val options = Options(display = Options.Display.PROGRESS,
evolutionValues = Options.EvolutionValues.STANDARD,
stats = listOf(stat),
aggregationType = aggregationType)
if (aggregationType == AggregationType.DURATION) {
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
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?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_report_details)
@ -39,14 +19,18 @@ class ComparisonReportActivity : ReportActivity() {
*/
private fun initUI() {
report?.let {
parameters?.let {
val report = it.report
val title = it.title
val fragmentTransaction = supportFragmentManager.beginTransaction()
val reportDetailsFragment = ComparisonReportFragment.newInstance(it, reportTitle)
val reportDetailsFragment = ComparisonReportFragment.newInstance(report, title)
fragmentTransaction.add(R.id.reportDetailsContainer, reportDetailsFragment)
fragmentTransaction.commit()
report = null
}
parameters = null
}
}

@ -7,36 +7,29 @@ import androidx.fragment.app.Fragment
import net.pokeranalytics.android.R
import net.pokeranalytics.android.calculus.Report
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.ReportParameters
import net.pokeranalytics.android.ui.fragment.report.ProgressReportFragment
class StatisticsDetailsParameters(var stat: Stat, var report: Report, var title: String)
class ProgressReportActivity : PokerAnalyticsActivity() {
class ProgressReportActivity : ReportActivity() {
companion object {
// 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
*/
fun newInstance(context: Context, stat: Stat, report: Report, displayAggregationChoices: Boolean = true, title: String) {
this.parameters = StatisticsDetailsParameters(stat, report, title)
this.displayAggregationChoices = displayAggregationChoices
fun newInstance(context: Context, report: Report, title: String, stat: Stat? = null, displayAggregationChoices: Boolean = true) {
parameters = ReportParameters(report, title, stat, showAggregationChoices = displayAggregationChoices)
val intent = Intent(context, ProgressReportActivity::class.java)
context.startActivity(intent)
}
fun newInstanceForResult(fragment: Fragment, stat: Stat, report: Report, displayAggregationChoices: Boolean = true, title: String) {
this.parameters = StatisticsDetailsParameters(stat, report, title)
this.displayAggregationChoices = displayAggregationChoices
fun newInstanceForResult(fragment: Fragment, report: Report, title: String, stat: Stat? = null, displayAggregationChoices: Boolean = true) {
parameters = ReportParameters(report, title, stat, showAggregationChoices = displayAggregationChoices)
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()
parameters?.let {
statisticDetailsFragment.setData(it.stat, it.report, displayAggregationChoices, it.title)
val report = it.report
val stat = it.stat ?: report.options.stats.first()
statisticDetailsFragment.setData(report, stat, it.showAggregationChoices, it.title)
parameters = null
}

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

@ -4,6 +4,9 @@ import android.content.Context
import android.content.Intent
import androidx.fragment.app.Fragment
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() {
@ -12,24 +15,22 @@ abstract class ReportActivity : PokerAnalyticsActivity() {
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
var report: Report? = null
var reportTitle: String = ""
var parameters: ReportParameters? = null
/**
* Default constructor
*/
fun newInstance(context: Context, report: Report, reportTitle: String) {
this.report = report
this.reportTitle = reportTitle
val intent = Intent(context, this::class.java)
fun newInstance(context: Context, report: Report, reportTitle: String, stat: Stat? = null) {
val options = report.options
this.parameters = ReportParameters(report, reportTitle, stat)
val intent = Intent(context, options.display.activityClass)
context.startActivity(intent)
}
fun newInstanceForResult(fragment: Fragment, clazz: Class<*>, report: Report, reportTitle: String) {
this.report = report
this.reportTitle = reportTitle
val intent = Intent(fragment.requireContext(), clazz)
fun newInstanceForResult(fragment: Fragment, report: Report, reportTitle: String, stat: Stat? = null) {
val options = report.options
this.parameters = ReportParameters(report, reportTitle, stat)
val intent = Intent(fragment.requireContext(), options.display.activityClass)
fragment.startActivityForResult(intent, DEFAULT_REQUEST_CODE)
}

@ -155,7 +155,7 @@ class CalendarDetailsFragment : PokerAnalyticsFragment(), StaticRowRepresentable
if (report != null && stat != null) {
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.combined
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.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
@ -193,26 +194,7 @@ class ReportsFragment : DeletableItemFragment(), StaticRowRepresentableDataSourc
launch(Dispatchers.Main) {
if (!isDetached) {
hideLoader()
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")
}
}
ReportActivity.newInstanceForResult(this@ReportsFragment, report, reportName)
}
}
realm.close()

@ -12,7 +12,7 @@ import kotlinx.coroutines.*
import net.pokeranalytics.android.R
import net.pokeranalytics.android.calculus.*
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.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
@ -213,7 +213,10 @@ open class ComposableTableReportFragment : RealmFragment(), StaticRowRepresentab
hideLoader()
report?.let {
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
*/
fun setData(stat: Stat, report: Report, displayAggregationChoices: Boolean, title: String) {
fun setData(report: Report, stat: Stat, displayAggregationChoices: Boolean, title: String) {
this.stat = stat
this.setReport(report)
this.displayAggregationChoices = displayAggregationChoices

Loading…
Cancel
Save