Separate Report Display from Calculator.Options

split
Laurent 5 years ago
parent feb7ba5c1b
commit 1b486e0ae7
  1. 64
      app/src/main/java/net/pokeranalytics/android/calcul/ReportDisplay.kt
  2. 77
      app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt
  3. 8
      app/src/main/java/net/pokeranalytics/android/model/realm/ReportSetup.kt
  4. 3
      app/src/main/java/net/pokeranalytics/android/ui/activity/ProgressReportActivity.kt
  5. 2
      app/src/main/java/net/pokeranalytics/android/ui/activity/ReportCreationActivity.kt
  6. 20
      app/src/main/java/net/pokeranalytics/android/ui/activity/components/ReportActivity.kt
  7. 28
      app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportCreationFragment.kt
  8. 21
      app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportsFragment.kt
  9. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/report/AbstractReportFragment.kt
  10. 3
      app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ComposableTableReportFragment.kt
  11. 4
      app/src/main/java/net/pokeranalytics/android/ui/viewmodel/ReportViewModel.kt

@ -0,0 +1,64 @@
package net.pokeranalytics.android.calcul
import net.pokeranalytics.android.R
import net.pokeranalytics.android.calculus.Calculator
import net.pokeranalytics.android.exceptions.PAIllegalStateException
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
/**
* The way the computed stats are going to be displayed
*/
enum class ReportDisplay : RowRepresentable {
TABLE,
PROGRESS,
COMPARISON,
MAP;
override val resId: Int?
get() {
return when (this) {
TABLE -> R.string.table
PROGRESS -> R.string.progress
COMPARISON -> R.string.comparison
MAP -> R.string.map
}
}
val activityClass: Class<*>
get() {
return when (this) {
TABLE -> TableReportActivity::class.java
PROGRESS -> ProgressReportActivity::class.java
COMPARISON -> ComparisonReportActivity::class.java
else -> throw PAIllegalStateException("undefined activity for report display")
}
}
val progressValues: Calculator.Options.ProgressValues
get() {
return when (this) {
PROGRESS, COMPARISON -> Calculator.Options.ProgressValues.STANDARD
else -> Calculator.Options.ProgressValues.NONE
}
}
// val requireProgressValues: Boolean
// get() {
// return when (this) {
// PROGRESS, COMPARISON -> true
// else -> false
// }
// }
val multipleStatSelection: Boolean
get() {
return when (this) {
PROGRESS -> false
else -> true
}
}
}

@ -2,7 +2,6 @@ package net.pokeranalytics.android.calculus
import android.content.Context import android.content.Context
import io.realm.Realm import io.realm.Realm
import net.pokeranalytics.android.R
import net.pokeranalytics.android.calculus.Stat.* import net.pokeranalytics.android.calculus.Stat.*
import net.pokeranalytics.android.exceptions.PAIllegalStateException import net.pokeranalytics.android.exceptions.PAIllegalStateException
import net.pokeranalytics.android.model.Criteria import net.pokeranalytics.android.model.Criteria
@ -13,10 +12,6 @@ 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.util.extensions.startOfDay import net.pokeranalytics.android.util.extensions.startOfDay
import java.util.* import java.util.*
import kotlin.math.max import kotlin.math.max
@ -33,8 +28,7 @@ class Calculator {
* The options used for calculations and display * The options used for calculations and display
*/ */
class Options( class Options(
var display: Display = Display.TABLE, var progressValues: ProgressValues = ProgressValues.NONE,
progressValues: ProgressValues = ProgressValues.NONE,
var stats: List<Stat> = listOf(), var stats: List<Stat> = listOf(),
var criterias: List<Criteria> = listOf(), var criterias: List<Criteria> = listOf(),
var query: Query = Query(), var query: Query = Query(),
@ -44,7 +38,7 @@ class Calculator {
var reportSetupId: String? = null var reportSetupId: String? = null
) { ) {
constructor(display: Display = Display.TABLE, constructor(
progressValues: ProgressValues = ProgressValues.NONE, progressValues: ProgressValues = ProgressValues.NONE,
stats: List<Stat> = listOf(), stats: List<Stat> = listOf(),
criterias: List<Criteria> = listOf(), criterias: List<Criteria> = listOf(),
@ -52,18 +46,18 @@ class Calculator {
aggregationType: AggregationType? = null, aggregationType: AggregationType? = null,
userGenerated: Boolean = false, userGenerated: Boolean = false,
reportSetupId: String? = null) : reportSetupId: String? = null) :
this(display, progressValues, stats, criterias, filter?.query ?: Query(), filter?.id, aggregationType, userGenerated, reportSetupId) this(progressValues, stats, criterias, filter?.query ?: Query(), filter?.id, aggregationType, userGenerated, reportSetupId)
/** /**
* Specifies whether progress values should be added and their kind * Specifies whether progress values should be added and their kind
*/ */
var progressValues: ProgressValues = progressValues // var progressValues: ProgressValues = progressValues
get() { // get() {
if (field == ProgressValues.NONE && this.display.requireProgressValues) { // if (field == ProgressValues.NONE && this.display.requireProgressValues) {
return ProgressValues.STANDARD // return ProgressValues.STANDARD
} // }
return field // return field
} // }
init { init {
this.aggregationType?.let { this.aggregationType?.let {
@ -71,52 +65,6 @@ class Calculator {
} }
} }
/**
* The way the computed stats are going to be displayed
*/
enum class Display : RowRepresentable {
TABLE,
PROGRESS,
COMPARISON,
MAP;
override val resId: Int?
get() {
return when (this) {
TABLE -> R.string.table
PROGRESS -> R.string.progress
COMPARISON -> R.string.comparison
MAP -> R.string.map
}
}
val activityClass: Class<*>
get() {
return when (this) {
TABLE -> TableReportActivity::class.java
PROGRESS -> ProgressReportActivity::class.java
COMPARISON -> ComparisonReportActivity::class.java
else -> throw PAIllegalStateException("undefined activity for report display")
}
}
val requireProgressValues: Boolean
get() {
return when (this) {
PROGRESS, COMPARISON -> true
else -> false
}
}
val multipleStatSelection: Boolean
get() {
return when (this) {
PROGRESS -> false
else -> true
}
}
}
/** /**
* The type of evolution numericValues * The type of evolution numericValues
@ -205,7 +153,6 @@ class Calculator {
): Report { ): Report {
val options = Options( val options = Options(
display = Options.Display.PROGRESS,
progressValues = Options.ProgressValues.STANDARD, progressValues = Options.ProgressValues.STANDARD,
stats = listOf(stat), stats = listOf(stat),
aggregationType = aggregationType aggregationType = aggregationType
@ -504,10 +451,6 @@ class Calculator {
) )
results.addEvolutionValue(tHourlyRateBB, stat = HOURLY_RATE_BB, data = sessionSet) results.addEvolutionValue(tHourlyRateBB, stat = HOURLY_RATE_BB, data = sessionSet)
// Stat.netBBPer100Hands(tBBSum, tTotalHands)?.let { netBB100 ->
// results.addEvolutionValue(netBB100, stat = NET_BB_PER_100_HANDS, data = sessionSet)
// }
} }
Options.ProgressValues.TIMED -> { Options.ProgressValues.TIMED -> {
results.addEvolutionValue(tRatedNetSum, tHourlyDuration, NET_RESULT, sessionSet) results.addEvolutionValue(tRatedNetSum, tHourlyDuration, NET_RESULT, sessionSet)

@ -6,6 +6,7 @@ import io.realm.RealmList
import io.realm.RealmObject import io.realm.RealmObject
import io.realm.annotations.Ignore import io.realm.annotations.Ignore
import io.realm.annotations.PrimaryKey import io.realm.annotations.PrimaryKey
import net.pokeranalytics.android.calcul.ReportDisplay
import net.pokeranalytics.android.calculus.Calculator import net.pokeranalytics.android.calculus.Calculator
import net.pokeranalytics.android.calculus.Stat import net.pokeranalytics.android.calculus.Stat
import net.pokeranalytics.android.model.Criteria import net.pokeranalytics.android.model.Criteria
@ -30,7 +31,7 @@ open class ReportSetup : RealmObject(), RowRepresentable, Deletable {
var name: String = "" var name: String = ""
// The type of display of the report // The type of display of the report
var display: Int = Calculator.Options.Display.TABLE.ordinal var display: Int = ReportDisplay.TABLE.ordinal
/** /**
* A list of statIds to compute * A list of statIds to compute
@ -64,7 +65,7 @@ open class ReportSetup : RealmObject(), RowRepresentable, Deletable {
/** /**
* Returns the Options based on the ReportSetup parameters * Returns the Options based on the ReportSetup parameters
*/ */
fun options(realm: Realm): Calculator.Options { fun options(realm: Realm, reportDisplay: ReportDisplay): Calculator.Options {
val stats = this.statIds.map { Stat.valueByIdentifier(it) } val stats = this.statIds.map { Stat.valueByIdentifier(it) }
@ -79,10 +80,9 @@ open class ReportSetup : RealmObject(), RowRepresentable, Deletable {
allCriteria.addAll(criteria) allCriteria.addAll(criteria)
allCriteria.addAll(cfCriteria) allCriteria.addAll(cfCriteria)
return Calculator.Options( return Calculator.Options(
display = Calculator.Options.Display.values()[this.display],
stats = stats, stats = stats,
progressValues = reportDisplay.progressValues,
criterias = allCriteria, criterias = allCriteria,
filter = this.filter, filter = this.filter,
userGenerated = true, userGenerated = true,

@ -4,6 +4,7 @@ import android.content.Context
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.calcul.ReportDisplay
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.ReportActivity import net.pokeranalytics.android.ui.activity.components.ReportActivity
@ -20,7 +21,7 @@ class ProgressReportActivity : ReportActivity() {
*/ */
fun newInstance(context: Context, report: Report, title: String, stat: Stat? = null, displayAggregationChoices: Boolean = true) { fun newInstance(context: Context, report: Report, title: String, stat: Stat? = null, displayAggregationChoices: Boolean = true) {
val parameters = ReportParameters(report, title, stat, showAggregationChoices = displayAggregationChoices) val parameters = ReportParameters(report, ReportDisplay.PROGRESS, title, stat, showAggregationChoices = displayAggregationChoices)
ReportViewModel.defineParameters(parameters) ReportViewModel.defineParameters(parameters)
val intent = Intent(context, ProgressReportActivity::class.java) val intent = Intent(context, ProgressReportActivity::class.java)
context.startActivity(intent) context.startActivity(intent)

@ -5,6 +5,7 @@ import android.content.Intent
import android.os.Bundle import android.os.Bundle
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.calcul.ReportDisplay
import net.pokeranalytics.android.calculus.Calculator import net.pokeranalytics.android.calculus.Calculator
import net.pokeranalytics.android.ui.activity.components.BaseActivity import net.pokeranalytics.android.ui.activity.components.BaseActivity
import net.pokeranalytics.android.ui.activity.components.RequestCode import net.pokeranalytics.android.ui.activity.components.RequestCode
@ -14,6 +15,7 @@ class ReportCreationActivity : BaseActivity() {
companion object { companion object {
var options: Calculator.Options? = null var options: Calculator.Options? = null
var reportDisplay: ReportDisplay? = null
fun newInstanceForResult(fragment: Fragment, context: Context) { fun newInstanceForResult(fragment: Fragment, context: Context) {
val intent = Intent(context, ReportCreationActivity::class.java) val intent = Intent(context, ReportCreationActivity::class.java)

@ -5,12 +5,13 @@ import android.content.Intent
import android.os.Bundle import android.os.Bundle
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import net.pokeranalytics.android.calcul.ReportDisplay
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.viewmodel.ReportViewModel import net.pokeranalytics.android.ui.viewmodel.ReportViewModel
import net.pokeranalytics.android.ui.viewmodel.ViewModelHolder import net.pokeranalytics.android.ui.viewmodel.ViewModelHolder
class ReportParameters(var report: Report, var title: String, var stat: Stat? = null, var showAggregationChoices: Boolean = true) class ReportParameters(var report: Report, var reportDisplay: ReportDisplay, var title: String, var stat: Stat? = null, var showAggregationChoices: Boolean = true)
abstract class ReportActivity : BaseActivity(), ViewModelHolder { abstract class ReportActivity : BaseActivity(), ViewModelHolder {
@ -23,19 +24,19 @@ abstract class ReportActivity : BaseActivity(), ViewModelHolder {
/** /**
* Default constructor * Default constructor
*/ */
fun newInstance(context: Context, report: Report, reportTitle: String, stat: Stat? = null) { fun newInstance(context: Context, report: Report, reportDisplay: ReportDisplay, reportTitle: String, stat: Stat? = null) {
val options = report.options // val options = report.options
val parameters = ReportParameters(report, reportTitle, stat) val parameters = ReportParameters(report, reportDisplay, reportTitle, stat)
ReportViewModel.defineParameters(parameters) ReportViewModel.defineParameters(parameters)
val intent = Intent(context, options.display.activityClass) val intent = Intent(context, reportDisplay.activityClass)
context.startActivity(intent) context.startActivity(intent)
} }
fun newInstanceForResult(fragment: Fragment, report: Report, reportTitle: String, stat: Stat? = null) { fun newInstanceForResult(fragment: Fragment, report: Report, reportDisplay: ReportDisplay, reportTitle: String, stat: Stat? = null) {
val options = report.options // val options = report.options
val parameters = ReportParameters(report, reportTitle, stat) val parameters = ReportParameters(report, reportDisplay, reportTitle, stat)
ReportViewModel.defineParameters(parameters) ReportViewModel.defineParameters(parameters)
val intent = Intent(fragment.requireContext(), options.display.activityClass) val intent = Intent(fragment.requireContext(), reportDisplay.activityClass)
fragment.startActivityForResult(intent, RequestCode.DEFAULT.value) fragment.startActivityForResult(intent, RequestCode.DEFAULT.value)
} }
@ -50,6 +51,7 @@ abstract class ReportActivity : BaseActivity(), ViewModelHolder {
ReportViewModel.parameters?.let { ReportViewModel.parameters?.let {
this.model.report = it.report this.model.report = it.report
this.model.reportDisplay = it.reportDisplay
this.model.title = it.title this.model.title = it.title
val stat = it.stat ?: it.report.options.stats.first() val stat = it.stat ?: it.report.options.stats.first()
this.model.stat = stat this.model.stat = stat

@ -7,6 +7,7 @@ import android.view.*
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import io.realm.Realm import io.realm.Realm
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.calcul.ReportDisplay
import net.pokeranalytics.android.calculus.Calculator import net.pokeranalytics.android.calculus.Calculator
import net.pokeranalytics.android.calculus.Stat import net.pokeranalytics.android.calculus.Stat
import net.pokeranalytics.android.databinding.FragmentReportCreationBinding import net.pokeranalytics.android.databinding.FragmentReportCreationBinding
@ -123,7 +124,7 @@ class ReportCreationFragment : RealmFragment(), RowRepresentableDataSource, RowR
// } // }
// launch report // launch report
this.finishActivityWithOptions(this.assistant.options) this.finishActivityWithOptions(this.assistant.options, this.assistant.reportDisplay)
} else { } else {
this.updateUIWithCurrentStep() this.updateUIWithCurrentStep()
@ -158,8 +159,9 @@ class ReportCreationFragment : RealmFragment(), RowRepresentableDataSource, RowR
/** /**
* Finish activity * Finish activity
*/ */
private fun finishActivityWithOptions(options: Calculator.Options) { private fun finishActivityWithOptions(options: Calculator.Options, reportDisplay: ReportDisplay) {
ReportCreationActivity.options = options // temp object ReportCreationActivity.options = options // temp object
ReportCreationActivity.reportDisplay = reportDisplay
val intent = Intent() val intent = Intent()
activity?.setResult(Activity.RESULT_OK, intent) activity?.setResult(Activity.RESULT_OK, intent)
activity?.finish() activity?.finish()
@ -220,7 +222,10 @@ class ReportCreationFragment : RealmFragment(), RowRepresentableDataSource, RowR
class Assistant { class Assistant {
var step: Step = Step.TYPE var step: Step = Step.TYPE
private var display: Calculator.Options.Display = Calculator.Options.Display.TABLE
var reportDisplay: ReportDisplay = ReportDisplay.TABLE
private set
private var stats = mutableListOf<Stat>() private var stats = mutableListOf<Stat>()
private var comparators = mutableListOf<Criteria>() private var comparators = mutableListOf<Criteria>()
private var useFilter: Boolean? = null private var useFilter: Boolean? = null
@ -229,7 +234,6 @@ class Assistant {
val options: Calculator.Options val options: Calculator.Options
get() { get() {
return Calculator.Options( return Calculator.Options(
this.display,
stats = this.stats, stats = this.stats,
criterias = this.comparators, criterias = this.comparators,
filter = this.filter, filter = this.filter,
@ -255,13 +259,13 @@ class Assistant {
when (this.step) { when (this.step) {
Step.TYPE -> { Step.TYPE -> {
this.display = this.dataSource[position] as Calculator.Options.Display this.reportDisplay = this.dataSource[position] as ReportDisplay
this.nextStep() this.nextStep()
} }
Step.STAT -> { Step.STAT -> {
val stat = this.dataSource[position] as Stat val stat = this.dataSource[position] as Stat
when (this.display.multipleStatSelection) { when (this.reportDisplay.multipleStatSelection) {
true -> { true -> {
if (this.stats.contains(stat)) { if (this.stats.contains(stat)) {
this.stats.remove(stat) this.stats.remove(stat)
@ -336,7 +340,7 @@ class Assistant {
get() { get() {
return if (this.stats.isEmpty()) { return if (this.stats.isEmpty()) {
Step.STAT Step.STAT
} else if (this.display == Calculator.Options.Display.COMPARISON && this.comparators.isEmpty()) { } else if (this.reportDisplay == ReportDisplay.COMPARISON && this.comparators.isEmpty()) {
Step.COMPARATOR Step.COMPARATOR
} else if (this.step == Step.FILTER) { } else if (this.step == Step.FILTER) {
Step.FINALIZE Step.FINALIZE
@ -363,13 +367,13 @@ class Assistant {
get() { get() {
return when (this.step) { return when (this.step) {
Step.TYPE -> listOf( Step.TYPE -> listOf(
Calculator.Options.Display.TABLE, ReportDisplay.TABLE,
Calculator.Options.Display.PROGRESS, ReportDisplay.PROGRESS,
Calculator.Options.Display.COMPARISON ReportDisplay.COMPARISON
) )
Step.STAT -> { Step.STAT -> {
when (this.display) { when (this.reportDisplay) {
Calculator.Options.Display.PROGRESS -> Stat.evolutionValuesList ReportDisplay.PROGRESS -> Stat.evolutionValuesList
else -> Stat.userSelectableList else -> Stat.userSelectableList
} }
} }

@ -15,6 +15,7 @@ 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.calcul.ReportDisplay
import net.pokeranalytics.android.calculus.Calculator import net.pokeranalytics.android.calculus.Calculator
import net.pokeranalytics.android.calculus.Stat import net.pokeranalytics.android.calculus.Stat
import net.pokeranalytics.android.databinding.FragmentReportsBinding import net.pokeranalytics.android.databinding.FragmentReportsBinding
@ -86,10 +87,16 @@ class ReportsFragment : DeletableItemFragment(), StaticRowRepresentableDataSourc
super.onActivityResult(requestCode, resultCode, data) super.onActivityResult(requestCode, resultCode, data)
if (requestCode == RequestCode.NEW_REPORT.value && resultCode == Activity.RESULT_OK) { if (requestCode == RequestCode.NEW_REPORT.value && resultCode == Activity.RESULT_OK) {
ReportCreationActivity.options?.let { options -> ReportCreationActivity.options?.let { options ->
this.launchReportWithOptions(options, options.getName(requireContext())) ReportCreationActivity.reportDisplay?.let { display ->
} options.progressValues = display.progressValues
this.launchReportWithOptions(options, display, options.getName(requireContext()))
} ?: run { Timber.d("no display to run the report") }
} ?: run { Timber.d("no options to run the report") }
ReportCreationActivity.options = null ReportCreationActivity.options = null
ReportCreationActivity.reportDisplay = null
} else if (requestCode == RequestCode.DEFAULT.value && resultCode == Activity.RESULT_OK) { } else if (requestCode == RequestCode.DEFAULT.value && resultCode == Activity.RESULT_OK) {
val itemToDeleteId = data?.getStringExtra(DataListActivity.IntentKey.ITEM_DELETED.keyName) val itemToDeleteId = data?.getStringExtra(DataListActivity.IntentKey.ITEM_DELETED.keyName)
itemToDeleteId?.let { id -> itemToDeleteId?.let { id ->
@ -164,7 +171,8 @@ class ReportsFragment : DeletableItemFragment(), StaticRowRepresentableDataSourc
launchComputation(row.criteria, reportName) launchComputation(row.criteria, reportName)
} }
is ReportSetup -> { is ReportSetup -> {
launchReportWithOptions(row.options(getRealm()), row.name) val display = ReportDisplay.values()[row.display]
launchReportWithOptions(row.options(getRealm(), display), display, row.name)
} }
} }
} }
@ -181,20 +189,19 @@ class ReportsFragment : DeletableItemFragment(), StaticRowRepresentableDataSourc
val requiredStats: List<Stat> = listOf(Stat.NET_RESULT) val requiredStats: List<Stat> = listOf(Stat.NET_RESULT)
val options = Calculator.Options( val options = Calculator.Options(
display = Calculator.Options.Display.COMPARISON,
progressValues = Calculator.Options.ProgressValues.STANDARD, progressValues = Calculator.Options.ProgressValues.STANDARD,
stats = requiredStats, stats = requiredStats,
criterias = criteriaList criterias = criteriaList
) )
this.launchReportWithOptions(options, reportName) this.launchReportWithOptions(options, ReportDisplay.COMPARISON, reportName)
} }
/** /**
* Launch and display a report with some [options] and a [reportName] * Launch and display a report with some [options] and a [reportName]
*/ */
private fun launchReportWithOptions(options: Calculator.Options, reportName: String) { private fun launchReportWithOptions(options: Calculator.Options, reportDisplay: ReportDisplay, reportName: String) {
showLoader() showLoader()
@ -211,7 +218,7 @@ class ReportsFragment : DeletableItemFragment(), StaticRowRepresentableDataSourc
launch(Dispatchers.Main) { launch(Dispatchers.Main) {
if (!isDetached) { if (!isDetached) {
hideLoader() hideLoader()
ReportActivity.newInstanceForResult(this@ReportsFragment, report, reportName) ReportActivity.newInstanceForResult(this@ReportsFragment, report, reportDisplay, reportName)
} }
} }
realm.close() realm.close()

@ -117,7 +117,7 @@ abstract class AbstractReportFragment : DataManagerFragment() {
if (firstSave) { if (firstSave) {
val options = this.selectedReport.options val options = this.selectedReport.options
rs.name = name rs.name = name
rs.display = options.display.ordinal rs.display = this.reportViewModel.reportDisplay?.ordinal ?: throw PAIllegalStateException("Display not set")
options.stats.forEach { options.stats.forEach {
rs.statIds.add(it.uniqueIdentifier) rs.statIds.add(it.uniqueIdentifier)
} }

@ -12,6 +12,7 @@ import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.async import kotlinx.coroutines.async
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.calcul.ReportDisplay
import net.pokeranalytics.android.calculus.Calculator import net.pokeranalytics.android.calculus.Calculator
import net.pokeranalytics.android.calculus.ComputableGroup import net.pokeranalytics.android.calculus.ComputableGroup
import net.pokeranalytics.android.calculus.Report import net.pokeranalytics.android.calculus.Report
@ -237,7 +238,7 @@ open class ComposableTableReportFragment : RealmFragment(), StaticRowRepresentab
hideLoader() hideLoader()
report?.let { report?.let {
val title = stat.localizedTitle(requireContext()) val title = stat.localizedTitle(requireContext())
ReportActivity.newInstance(requireContext(), it, title, stat) ReportActivity.newInstance(requireContext(), it, ReportDisplay.PROGRESS, title, stat)
} ?: run { } ?: run {
throw PAIllegalStateException("Report should never be null here") throw PAIllegalStateException("Report should never be null here")
} }

@ -3,6 +3,7 @@ package net.pokeranalytics.android.ui.viewmodel
import android.content.Context import android.content.Context
import com.github.mikephil.charting.data.BarDataSet import com.github.mikephil.charting.data.BarDataSet
import com.github.mikephil.charting.data.LineDataSet import com.github.mikephil.charting.data.LineDataSet
import net.pokeranalytics.android.calcul.ReportDisplay
import net.pokeranalytics.android.calcul.barEntries import net.pokeranalytics.android.calcul.barEntries
import net.pokeranalytics.android.calcul.lineEntries import net.pokeranalytics.android.calcul.lineEntries
import net.pokeranalytics.android.calcul.multiLineEntries import net.pokeranalytics.android.calcul.multiLineEntries
@ -14,6 +15,9 @@ import net.pokeranalytics.android.ui.activity.components.ReportParameters
class ReportViewModel : GraphViewModel(), ReportHolder, GraphDataProvider { class ReportViewModel : GraphViewModel(), ReportHolder, GraphDataProvider {
override var report: Report = Report(Calculator.Options()) override var report: Report = Report(Calculator.Options())
var reportDisplay: ReportDisplay? = null
var showAggregationChoices: Boolean = true var showAggregationChoices: Boolean = true
companion object { companion object {

Loading…
Cancel
Save