Add initial value to Bankroll

feature/top10
Laurent 7 years ago
parent 4b9cb85fbb
commit 883b10e302
  1. 7
      app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollCalculator.kt
  2. 13
      app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollReport.kt
  3. 4
      app/src/main/java/net/pokeranalytics/android/model/migrations/PokerAnalyticsMigration.kt
  4. 54
      app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt
  5. 9
      app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDataFragment.kt
  6. 6
      app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt
  7. 11
      app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/BankrollRow.kt
  8. 1
      app/src/main/res/values/strings.xml

@ -5,10 +5,7 @@ import net.pokeranalytics.android.calculus.Calculator
import net.pokeranalytics.android.calculus.ComputableGroup
import net.pokeranalytics.android.calculus.ComputedResults
import net.pokeranalytics.android.calculus.Stat
import net.pokeranalytics.android.model.realm.Filter
import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.model.realm.Transaction
import net.pokeranalytics.android.model.realm.TransactionType
import net.pokeranalytics.android.model.realm.*
class BankrollCalculator {
@ -19,6 +16,8 @@ class BankrollCalculator {
val realm = Realm.getDefaultInstance()
val report = BankrollReport(setup)
val bankrolls: List<Bankroll> = if (setup.bankroll != null) listOf(setup.bankroll) else realm.where(Bankroll::class.java).findAll()
report.initial = bankrolls.sumByDouble { it.initialValue }
val queryConditions = setup.queryConditions
val transactions = Filter.queryOn<Transaction>(realm, queryConditions)

@ -25,13 +25,18 @@ class BankrollReport(setup: BankrollReportSetup) {
var total: Double = 0.0
private set
/**
* The initial value of the bankroll, or of all bankrolls if virtual is computed
*/
var initial: Double = 0.0
/**
* The net result from poker computables
*/
var netResult: Double = 0.0
set(value) {
field = value
total = this.netResult + this.transactionsNet
this.computeBankrollTotal()
}
/**
@ -40,9 +45,13 @@ class BankrollReport(setup: BankrollReportSetup) {
var transactionsNet: Double = 0.0
set(value) {
field = value
total = this.netResult + this.transactionsNet
this.computeBankrollTotal()
}
fun computeBankrollTotal() {
this.total = this.initial + this.netResult + this.transactionsNet
}
/**
* The sum of all deposits
*/

@ -64,6 +64,10 @@ class PokerAnalyticsMigration : RealmMigration {
it.removeField("sessionSet")
}
schema.get("Bankroll")?.let {
it.addField("initialValue", Double::class.java).setRequired("initialValue", true)
}
currentVersion++
}

@ -8,29 +8,12 @@ import io.realm.kotlin.where
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.interfaces.NameManageable
import net.pokeranalytics.android.model.interfaces.SaveValidityStatus
import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor
import net.pokeranalytics.android.ui.view.RowViewType
import net.pokeranalytics.android.ui.view.rowrepresentable.BankrollRow
import net.pokeranalytics.android.ui.view.rowrepresentable.CustomizableRowRepresentable
import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow
import net.pokeranalytics.android.util.NULL_TEXT
import java.util.*
import kotlin.collections.ArrayList
open class Bankroll() : RealmObject(), NameManageable, StaticRowRepresentableDataSource, RowRepresentable {
companion object {
val rowRepresentation : List<RowRepresentable> by lazy {
val rows = ArrayList<RowRepresentable>()
rows.add(SimpleRow.NAME)
rows.add(BankrollRow.LIVE)
rows.add(CustomizableRowRepresentable(customViewType = RowViewType.HEADER_TITLE, resId = R.string.currency))
rows.add(BankrollRow.CURRENCY)
rows
}
}
open class Bankroll() : RealmObject(), NameManageable, RowRepresentable {
@PrimaryKey
override var id = UUID.randomUUID().toString()
@ -46,44 +29,21 @@ open class Bankroll() : RealmObject(), NameManageable, StaticRowRepresentableDat
// The currency of the bankroll
var currency: Currency? = null
// The initial value of the bankroll
var initialValue: Double = 0.0
override fun getDisplayName(): String {
return this.name
}
// Row Representable Datasource
override fun adapterRows(): List<RowRepresentable>? {
return Bankroll.rowRepresentation
}
override fun stringForRow(row: RowRepresentable): String {
return when (row) {
SimpleRow.NAME -> if (this.name.isNotEmpty()) this.name else NULL_TEXT
else -> return super.stringForRow(row)
}
}
override fun boolForRow(row: RowRepresentable): Boolean {
return when (row) {
BankrollRow.LIVE -> !this.live
else -> super.boolForRow(row)
}
}
override fun editDescriptors(row: RowRepresentable): ArrayList<RowRepresentableEditDescriptor>? {
return when (row) {
SimpleRow.NAME -> row.editingDescriptors(mapOf("defaultValue" to this.name))
BankrollRow.RATE -> row.editingDescriptors(mapOf())
else -> {
row.editingDescriptors(mapOf())
}
}
}
override fun updateValue(value: Any?, row: RowRepresentable) {
when (row) {
SimpleRow.NAME -> this.name = value as String? ?: ""
BankrollRow.LIVE -> {
this.live = if (value is Boolean) !value else false
}
BankrollRow.INITIAL_VALUE -> {
this.initialValue = value as Double? ?: 0.0
}
BankrollRow.CURRENCY -> {
//TODO handle a use default currency option

@ -18,8 +18,8 @@ import net.pokeranalytics.android.ui.view.rowrepresentable.BankrollRow
import net.pokeranalytics.android.ui.view.rowrepresentable.CustomizableRowRepresentable
import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow
import net.pokeranalytics.android.util.NULL_TEXT
import net.pokeranalytics.android.util.Preferences
import net.pokeranalytics.android.util.UserDefaults
import net.pokeranalytics.android.util.extensions.toCurrency
import net.pokeranalytics.android.util.extensions.toRate
import retrofit2.Call
import retrofit2.Response
@ -95,6 +95,9 @@ class BankrollDataFragment : EditableDataFragment(), StaticRowRepresentableDataS
NULL_TEXT
}
}
BankrollRow.INITIAL_VALUE -> {
this.bankroll.initialValue.toCurrency()
}
BankrollRow.RATE -> {
val rate = this.bankroll.currency?.rate ?: 1.0
rate.toRate()
@ -114,6 +117,9 @@ class BankrollDataFragment : EditableDataFragment(), StaticRowRepresentableDataS
override fun editDescriptors(row: RowRepresentable): ArrayList<RowRepresentableEditDescriptor>? {
return when (row) {
SimpleRow.NAME -> row.editingDescriptors(mapOf("defaultValue" to this.bankroll.name))
BankrollRow.INITIAL_VALUE -> {
row.editingDescriptors(mapOf("defaultValue" to this.bankroll.initialValue))
}
BankrollRow.RATE -> {
val rate = this.bankroll.currency?.rate
row.editingDescriptors(mapOf("defaultValue" to rate))
@ -163,6 +169,7 @@ class BankrollDataFragment : EditableDataFragment(), StaticRowRepresentableDataS
rows.clear()
rows.add(SimpleRow.NAME)
rows.add(BankrollRow.LIVE)
rows.add(BankrollRow.INITIAL_VALUE)
rows.add(CustomizableRowRepresentable(customViewType = RowViewType.HEADER_TITLE, resId = R.string.currency))
rows.add(BankrollRow.CURRENCY)
if (this.shouldShowCurrencyRate) {

@ -159,12 +159,6 @@ open class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDele
finishActivityWithResult(uniqueIdentifier)
}
// if (managedItem is Bankroll) {
// managedItem.currency?.refreshRelatedRatedValues(it)
// }
//
// val uniqueIdentifier = (managedItem as Savable).id
// finishActivityWithResult(uniqueIdentifier)
}
}
else -> {

@ -11,6 +11,7 @@ import net.pokeranalytics.android.ui.view.RowViewType
enum class BankrollRow : RowRepresentable, DefaultEditDataSource {
LIVE,
INITIAL_VALUE,
CURRENCY,
RATE,
REFRESH_RATE;
@ -19,6 +20,7 @@ enum class BankrollRow : RowRepresentable, DefaultEditDataSource {
get() {
return when (this) {
LIVE -> R.string.online
INITIAL_VALUE -> R.string.initial_value
CURRENCY -> R.string.currency
RATE -> R.string.rate
REFRESH_RATE -> R.string.refresh_rate
@ -29,6 +31,7 @@ enum class BankrollRow : RowRepresentable, DefaultEditDataSource {
get() {
return when (this) {
LIVE -> RowViewType.TITLE_SWITCH.ordinal
INITIAL_VALUE -> RowViewType.TITLE_VALUE.ordinal
CURRENCY -> RowViewType.TITLE_VALUE_ARROW.ordinal
RATE -> RowViewType.TITLE_VALUE.ordinal
REFRESH_RATE -> RowViewType.ROW_BUTTON.ordinal
@ -39,6 +42,7 @@ enum class BankrollRow : RowRepresentable, DefaultEditDataSource {
get() {
return when (this) {
LIVE -> BottomSheetType.NONE
INITIAL_VALUE -> BottomSheetType.NUMERIC_TEXT
CURRENCY -> BottomSheetType.NONE
RATE -> BottomSheetType.NUMERIC_TEXT
REFRESH_RATE -> BottomSheetType.NONE
@ -47,6 +51,13 @@ enum class BankrollRow : RowRepresentable, DefaultEditDataSource {
override fun editingDescriptors(map: Map<String, Any?>): ArrayList<RowRepresentableEditDescriptor>? {
return when (this) {
INITIAL_VALUE -> {
val defaultValue : Any? by map
arrayListOf(
RowRepresentableEditDescriptor(defaultValue, R.string.initial_value, InputType.TYPE_CLASS_NUMBER
or InputType.TYPE_NUMBER_FLAG_DECIMAL)
)
}
RATE -> {
val defaultValue : Any? by map
arrayListOf(

@ -8,6 +8,7 @@
<string name="more">More</string>
<string name="variant">Variant</string>
<string name="line">Line</string>
<string name="initial_value">Initial Value</string>
<!--<string name="session_missing_end_date">Please set the end date for the session</string>-->
<!--<string name="default_error_message">Sorry, something went wrong...please contact us!</string>-->

Loading…
Cancel
Save