Implementation improvements + start of changes notifications

dev
Laurent 7 years ago
parent 0fb1276e69
commit cdaeff4684
  1. 3
      app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollCalculator.kt
  2. 48
      app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollReport.kt
  3. 55
      app/src/main/java/net/pokeranalytics/android/ui/activity/BankrollActivity.kt

@ -33,7 +33,8 @@ class BankrollCalculator {
}
bankroll.transactions?.let { transactions ->
transactionNet += transactions.sumByDouble { it.amount } * rate
val sum = transactions.sum("amount")
transactionNet += rate * sum.toDouble()
}
}

@ -12,6 +12,38 @@ import net.pokeranalytics.android.ui.graph.DataSetFactory
import java.util.*
import kotlin.collections.HashMap
//object BankrollReportManager {
//
// var mainReport: BankrollReport? = null
// var reports: MutableMap<String, BankrollReport> = mutableMapOf()
//
// fun udpateBankrolls(bankrolls: List<Bankroll>) {
// this.invalidateMainReport()
// bankrolls.forEach {
// this.reports.remove(it.id)
// }
// }
//
// fun deleteBankrolls(bankrolls: List<Bankroll>) {
// this.invalidateMainReport()
// bankrolls.forEach {
// this.reports.remove(it.id)
// }
// }
//
// private fun invalidateMainReport() {
// this.mainReport = null
// }
//
// private fun launchReports(bankrolls: List<Bankroll>) {
//
// this.mainReport = BankrollCalculator.computeReport()
//
//
// }
//
//}
/**
* This class holds the results from the BankrollCalculator computations
* It has all the information required for the Bankroll various displays
@ -219,17 +251,23 @@ class BankrollReportSetup(val bankroll: Bankroll? = null, val from: Date? = null
}
/**
* A TransactionBucket holds a list of transactions and computes its amount sum
* A TransactionBucket holds a list of _transactions and computes its amount sum
*/
class TransactionBucket(useRate: Boolean = false) {
/**
* A list of transactions
* A list of _transactions
*/
var transactions: MutableList<Transaction> = mutableListOf()
private var _transactions: MutableList<Transaction> = mutableListOf()
private set
val transactions: List<Transaction>
get() {
return this._transactions
}
/**
* The sum of all transactions
* The sum of all _transactions
*/
var total: Double = 0.0
private set
@ -242,7 +280,7 @@ class TransactionBucket(useRate: Boolean = false) {
fun addTransaction(transaction: Transaction) {
this.transactions.add(transaction)
this._transactions.add(transaction)
var rate = 1.0
if (this.useRate) {
rate = transaction.bankroll?.currency?.rate ?: 1.0

@ -4,11 +4,19 @@ import android.content.Context
import android.content.Intent
import android.os.Bundle
import androidx.fragment.app.Fragment
import io.realm.RealmResults
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.realm.Bankroll
import net.pokeranalytics.android.model.realm.ComputableResult
import net.pokeranalytics.android.model.realm.Transaction
import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
class BankrollActivity : PokerAnalyticsActivity() {
private lateinit var computableResults: RealmResults<ComputableResult>
private lateinit var bankrolls: RealmResults<Bankroll>
private lateinit var transactions: RealmResults<Transaction>
companion object {
fun newInstance(context: Context) {
val intent = Intent(context, BankrollActivity::class.java)
@ -28,6 +36,53 @@ class BankrollActivity : PokerAnalyticsActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_bankroll)
this.computableResults = getRealm().where(ComputableResult::class.java).findAll() // ComputableResult are existing only if sessions are ended
this.computableResults.addChangeListener { t, changeSet ->
val bankrolls = mutableSetOf<Bankroll>()
val indexes = mutableSetOf<Int>()
indexes.addAll(changeSet.changes.toList())
indexes.addAll(changeSet.insertions.toList())
indexes.addAll(changeSet.deletions.toList())
indexes.forEach { index ->
t[index]?.session?.bankroll?.let { br ->
bankrolls.add(br)
}
}
this.computeBankrollReports(bankrolls)
}
this.bankrolls = getRealm().where(Bankroll::class.java).findAll() // ComputableResult are existing only if sessions are ended
this.bankrolls.addChangeListener { _, changeSet ->
}
this.transactions = getRealm().where(Transaction::class.java).findAll() // ComputableResult are existing only if sessions are ended
this.transactions.addChangeListener { t, changeSet ->
val bankrolls = mutableSetOf<Bankroll>()
val indexes = mutableSetOf<Int>()
indexes.addAll(changeSet.changes.toList())
indexes.addAll(changeSet.insertions.toList())
indexes.addAll(changeSet.deletions.toList())
indexes.forEach { index ->
t[index]?.bankroll?.let { br ->
bankrolls.add(br)
}
}
this.computeBankrollReports(bankrolls)
}
}
fun computeBankrollReports(bankrolls: Collection<Bankroll>) {
}
}
Loading…
Cancel
Save