Merge remote-tracking branch 'origin/dev' into dev

feature/top10
Razmig Sarkissian 7 years ago
commit b093e83151
  1. 3
      app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt
  2. 28
      app/src/main/java/net/pokeranalytics/android/model/migrations/Patcher.kt
  3. 6
      app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt
  4. 2
      app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt
  5. 1
      app/src/main/java/net/pokeranalytics/android/model/realm/SessionSet.kt
  6. 7
      app/src/main/java/net/pokeranalytics/android/ui/activity/StatisticDetailsActivity.kt
  7. 6
      app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDataFragment.kt
  8. 32
      app/src/main/java/net/pokeranalytics/android/ui/fragment/GraphFragment.kt
  9. 3
      app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt
  10. 1
      app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt
  11. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticDetailsFragment.kt
  12. 5
      app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt
  13. 1
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetNumericTextFragment.kt
  14. 4
      app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/BankrollRow.kt

@ -9,6 +9,7 @@ import io.realm.RealmConfiguration
import io.realm.kotlin.where import io.realm.kotlin.where
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import net.pokeranalytics.android.model.migrations.Patcher
import net.pokeranalytics.android.model.migrations.PokerAnalyticsMigration import net.pokeranalytics.android.model.migrations.PokerAnalyticsMigration
import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.model.utils.Seed import net.pokeranalytics.android.model.utils.Seed
@ -53,6 +54,8 @@ class PokerAnalyticsApplication : Application() {
Timber.d("UserPreferences.defaultCurrency: ${UserDefaults.currency.symbol}") Timber.d("UserPreferences.defaultCurrency: ${UserDefaults.currency.symbol}")
//this.createFakeSessions() //this.createFakeSessions()
} }
Patcher.patchBreaks()
} }
/** /**

@ -0,0 +1,28 @@
package net.pokeranalytics.android.model.migrations
import io.realm.Realm
import net.pokeranalytics.android.model.realm.SessionSet
class Patcher {
companion object {
fun patchBreaks() {
val realm = Realm.getDefaultInstance()
val sets = realm.where(SessionSet::class.java).findAll()
realm.executeTransaction {
sets.forEach {
it.computeStats()
}
}
realm.close()
}
}
}

@ -101,11 +101,7 @@ open class Bankroll() : RealmObject(), NameManageable, StaticRowRepresentableDat
this.currency?.code = value as String? this.currency?.code = value as String?
} }
BankrollRow.RATE -> { BankrollRow.RATE -> {
value?.let { rate -> this.currency?.rate = value as Double?
this.currency?.rate = (rate as String).toDouble()
} ?: run {
this.currency?.rate = null
}
} }
} }
} }

@ -779,7 +779,7 @@ open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDat
cgBigBlind = null cgBigBlind = null
} }
SessionRow.BREAK_TIME -> { SessionRow.BREAK_TIME -> {
this.breakDuration = if (value != null) (value as String).toLong() * 60 * 1000 else 0 this.breakDuration = (value as Double? ?: 0.0).toLong() * 60 * 1000
} }
SessionRow.BUY_IN -> { SessionRow.BUY_IN -> {
val localResult = if (this.result != null) this.result as Result else realm.createObject(Result::class.java) val localResult = if (this.result != null) this.result as Result else realm.createObject(Result::class.java)

@ -63,6 +63,7 @@ open class SessionSet() : RealmObject(), Timed, Filterable {
this.ratedNet = this.sessions?.sumByDouble { it.computableResult?.ratedNet ?: 0.0 } ?: 0.0 this.ratedNet = this.sessions?.sumByDouble { it.computableResult?.ratedNet ?: 0.0 } ?: 0.0
this.estimatedHands = this.sessions?.sumByDouble { it.estimatedHands } ?: 0.0 this.estimatedHands = this.sessions?.sumByDouble { it.estimatedHands } ?: 0.0
this.bbNet = this.sessions?.sumByDouble { it.bbNet } ?: 0.0 this.bbNet = this.sessions?.sumByDouble { it.bbNet } ?: 0.0
this.breakDuration = this.sessions?.max("breakDuration")?.toLong() ?: 0L
} }
/** /**

@ -3,9 +3,8 @@ package net.pokeranalytics.android.ui.activity
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import com.github.mikephil.charting.data.Entry
import kotlinx.android.synthetic.main.activity_graph.*
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
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.PokerAnalyticsActivity
import net.pokeranalytics.android.ui.fragment.GraphParameters import net.pokeranalytics.android.ui.fragment.GraphParameters
@ -26,8 +25,8 @@ class StatisticDetailsActivity : PokerAnalyticsActivity() {
/** /**
* Default constructor * Default constructor
*/ */
fun newInstance(context: Context, stat: Stat, entries: List<Entry>) { fun newInstance(context: Context, stat: Stat, report: Report) {
parameters = GraphParameters(stat, entries) parameters = GraphParameters(stat, report)
val intent = Intent(context, StatisticDetailsActivity::class.java) val intent = Intent(context, StatisticDetailsActivity::class.java)
context.startActivity(intent) context.startActivity(intent)
} }

@ -114,8 +114,8 @@ class BankrollDataFragment : EditableDataFragment(), StaticRowRepresentableDataS
return when (row) { return when (row) {
SimpleRow.NAME -> row.editingDescriptors(mapOf("defaultValue" to this.bankroll.name)) SimpleRow.NAME -> row.editingDescriptors(mapOf("defaultValue" to this.bankroll.name))
BankrollRow.RATE -> { BankrollRow.RATE -> {
val rate = this.bankroll.currency?.rate ?: 1.0 val rate = this.bankroll.currency?.rate
row.editingDescriptors(mapOf("defaultValue" to rate.toRate())) row.editingDescriptors(mapOf("defaultValue" to rate))
} }
else -> null else -> null
} }
@ -204,7 +204,7 @@ class BankrollDataFragment : EditableDataFragment(), StaticRowRepresentableDataS
override fun onResponse(call: Call<Map<String, CurrencyConverterValue>>, response: Response<Map<String, CurrencyConverterValue>>) { override fun onResponse(call: Call<Map<String, CurrencyConverterValue>>, response: Response<Map<String, CurrencyConverterValue>>) {
response.body()?.let { response.body()?.let {
it[currenciesConverterValue]?.value?.let { rate -> it[currenciesConverterValue]?.value?.let { rate ->
onRowValueChanged(rate.toString(), BankrollRow.RATE) onRowValueChanged(rate, BankrollRow.RATE)
} }
} }

@ -15,22 +15,18 @@ import com.google.android.material.chip.Chip
import com.google.android.material.chip.ChipGroup import com.google.android.material.chip.ChipGroup
import kotlinx.android.synthetic.main.fragment_evograph.* import kotlinx.android.synthetic.main.fragment_evograph.*
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.calculus.GraphType import net.pokeranalytics.android.calculus.*
import net.pokeranalytics.android.calculus.ObjectIdentifier
import net.pokeranalytics.android.calculus.Stat
import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
import net.pokeranalytics.android.ui.extensions.ChipGroupExtension
import net.pokeranalytics.android.ui.extensions.px
import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment
import net.pokeranalytics.android.ui.graph.PALineDataSet import net.pokeranalytics.android.ui.graph.PALineDataSet
import net.pokeranalytics.android.ui.graph.setStyle import net.pokeranalytics.android.ui.graph.setStyle
import net.pokeranalytics.android.ui.view.LegendView import net.pokeranalytics.android.ui.view.LegendView
import net.pokeranalytics.android.ui.extensions.ChipGroupExtension
import net.pokeranalytics.android.ui.extensions.px
import net.pokeranalytics.android.ui.extensions.toast
import java.text.DateFormat import java.text.DateFormat
class GraphParameters(stat: Stat, entries: List<Entry>) { class GraphParameters(var stat: Stat, var report: Report) {
var stat: Stat = stat
var entries: List<Entry> = entries
} }
class GraphFragment : PokerAnalyticsFragment(), OnChartValueSelectedListener { class GraphFragment : PokerAnalyticsFragment(), OnChartValueSelectedListener {
@ -38,18 +34,27 @@ class GraphFragment : PokerAnalyticsFragment(), OnChartValueSelectedListener {
private lateinit var parentActivity: PokerAnalyticsActivity private lateinit var parentActivity: PokerAnalyticsActivity
private var stat: Stat = Stat.NETRESULT private var stat: Stat = Stat.NETRESULT
private var reports: Map<AggregationType, Report> = hashMapOf()
private var entries: List<Entry> = ArrayList() private var entries: List<Entry> = ArrayList()
lateinit var legendView: LegendView lateinit var legendView: LegendView
lateinit var chartView: BarLineChartBase<*> lateinit var chartView: BarLineChartBase<*>
private var aggregationTypes: List<AggregationType> = listOf()
companion object { companion object {
} }
fun setData(stat: Stat, entries: List<Entry>) { fun setData(stat: Stat, report: Report) {
this.stat = stat this.stat = stat
this.entries = entries
this.aggregationTypes = stat.aggregationTypes
// this.report = report
report.results.firstOrNull()?.defaultStatEntries(stat)?.let {
this.entries = it
}
} }
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
@ -98,7 +103,7 @@ class GraphFragment : PokerAnalyticsFragment(), OnChartValueSelectedListener {
this.chartView.highlightValue((this.entries.size - 1).toFloat(), 0) this.chartView.highlightValue((this.entries.size - 1).toFloat(), 0)
this.stat.aggregationTypes.forEach { type -> this.aggregationTypes.forEach { type ->
val chip = Chip(requireContext()) val chip = Chip(requireContext())
chip.id = type.ordinal chip.id = type.ordinal
chip.text = requireContext().getString(type.resId) chip.text = requireContext().getString(type.resId)
@ -112,7 +117,8 @@ class GraphFragment : PokerAnalyticsFragment(), OnChartValueSelectedListener {
this.chipGroup.setOnCheckedChangeListener(object : ChipGroupExtension.SingleSelectionOnCheckedListener() { this.chipGroup.setOnCheckedChangeListener(object : ChipGroupExtension.SingleSelectionOnCheckedListener() {
override fun onCheckedChanged(group: ChipGroup, checkedId: Int) { override fun onCheckedChanged(group: ChipGroup, checkedId: Int) {
super.onCheckedChanged(group, checkedId) super.onCheckedChanged(group, checkedId)
toast("Show: ${stat.aggregationTypes[group.getChildAt(checkedId).id].name}") val aggregationType = aggregationTypes[checkedId]
// toast("Show: ${this.aggregationTypes[group.getChildAt(checkedId).id].name}")
} }
}) })

@ -115,8 +115,7 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate {
sessionAdapter.refreshRow(row) sessionAdapter.refreshRow(row)
when (row) { when (row) {
SessionRow.CASHED_OUT, SessionRow.PRIZE, SessionRow.NET_RESULT, SessionRow.BUY_IN, SessionRow.TIPS, SessionRow.CASHED_OUT, SessionRow.PRIZE, SessionRow.NET_RESULT, SessionRow.BUY_IN, SessionRow.TIPS,
SessionRow.START_DATE, SessionRow.END_DATE, SessionRow.BANKROLL -> updateSessionUI() SessionRow.START_DATE, SessionRow.END_DATE, SessionRow.BANKROLL, SessionRow.BREAK_TIME -> updateSessionUI()
SessionRow.BREAK_TIME -> this.sessionAdapter.notifyDataSetChanged()
} }
} }

@ -58,7 +58,6 @@ class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Sta
private lateinit var settingsAdapterRow: RowRepresentableAdapter private lateinit var settingsAdapterRow: RowRepresentableAdapter
private lateinit var parentActivity: PokerAnalyticsActivity private lateinit var parentActivity: PokerAnalyticsActivity
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_settings, container, false) return inflater.inflate(R.layout.fragment_settings, container, false)
} }

@ -61,7 +61,7 @@ class StatisticDetailsFragment : PokerAnalyticsFragment() {
fragmentTransaction.commit() fragmentTransaction.commit()
StatisticDetailsActivity.parameters?.let { StatisticDetailsActivity.parameters?.let {
fragment.setData(it.stat, it.entries) fragment.setData(it.stat, it.report)
StatisticDetailsActivity.parameters = null StatisticDetailsActivity.parameters = null
} ?: run { } ?: run {
throw Exception("Missing graph parameters") throw Exception("Missing graph parameters")

@ -225,6 +225,7 @@ class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSourc
val realm = Realm.getDefaultInstance() val realm = Realm.getDefaultInstance()
val options = Calculator.Options() val options = Calculator.Options()
options.evolutionValues = Calculator.Options.EvolutionValues.STANDARD options.evolutionValues = Calculator.Options.EvolutionValues.STANDARD
options.displayedStats = listOf(stat)
report = Calculator.computeGroups(realm, listOf(computableGroup), options) report = Calculator.computeGroups(realm, listOf(computableGroup), options)
realm.close() realm.close()
@ -236,9 +237,7 @@ class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSourc
test.await() test.await()
if (!isDetached) { if (!isDetached) {
report.results.firstOrNull()?.defaultStatEntries(stat)?.let { entries -> StatisticDetailsActivity.newInstance(requireContext(), stat, report)
StatisticDetailsActivity.newInstance(requireContext(), stat, entries)
}
} }
} }

@ -63,6 +63,7 @@ class BottomSheetNumericTextFragment : BottomSheetFragment() {
data[0].defaultValue?.let { data[0].defaultValue?.let {
if (it is Double || it is Long) { if (it is Double || it is Long) {
val formatter = NumberFormat.getNumberInstance() val formatter = NumberFormat.getNumberInstance()
formatter.maximumFractionDigits = 6
formatter.isGroupingUsed = false formatter.isGroupingUsed = false
editText1.setText(formatter.format(it)) editText1.setText(formatter.format(it))
} else { } else {

@ -40,14 +40,14 @@ enum class BankrollRow : RowRepresentable, DefaultEditDataSource {
return when (this) { return when (this) {
LIVE -> BottomSheetType.NONE LIVE -> BottomSheetType.NONE
CURRENCY -> BottomSheetType.NONE CURRENCY -> BottomSheetType.NONE
RATE -> BottomSheetType.EDIT_TEXT RATE -> BottomSheetType.NUMERIC_TEXT
REFRESH_RATE -> BottomSheetType.NONE REFRESH_RATE -> BottomSheetType.NONE
} }
} }
override fun editingDescriptors(map: Map<String, Any?>): ArrayList<RowRepresentableEditDescriptor>? { override fun editingDescriptors(map: Map<String, Any?>): ArrayList<RowRepresentableEditDescriptor>? {
return when (this) { return when (this) {
BankrollRow.RATE -> { RATE -> {
val defaultValue : Any? by map val defaultValue : Any? by map
arrayListOf( arrayListOf(
RowRepresentableEditDescriptor(defaultValue, R.string.rate, InputType.TYPE_CLASS_NUMBER RowRepresentableEditDescriptor(defaultValue, R.string.rate, InputType.TYPE_CLASS_NUMBER

Loading…
Cancel
Save