Merge remote-tracking branch 'origin/master'

feature/top10
Razmig Sarkissian 7 years ago
commit c5e76f7963
  1. 2
      app/build.gradle
  2. 3
      app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt
  3. 28
      app/src/main/java/net/pokeranalytics/android/model/migrations/Patcher.kt
  4. 1
      app/src/main/java/net/pokeranalytics/android/model/migrations/PokerAnalyticsMigration.kt
  5. 6
      app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt
  6. 9
      app/src/main/java/net/pokeranalytics/android/model/realm/Result.kt
  7. 48
      app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt
  8. 1
      app/src/main/java/net/pokeranalytics/android/model/realm/SessionSet.kt
  9. 19
      app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDataFragment.kt
  10. 3
      app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt
  11. 5
      app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt
  12. 85
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetNumericTextFragment.kt
  13. 3
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetType.kt
  14. 4
      app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/BankrollRow.kt
  15. 116
      app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SessionRow.kt

@ -28,7 +28,7 @@ android {
applicationId "net.pokeranalytics.android" applicationId "net.pokeranalytics.android"
minSdkVersion 23 minSdkVersion 23
targetSdkVersion 28 targetSdkVersion 28
versionCode 11 versionCode 17
versionName "1.0" versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
} }

@ -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
@ -50,6 +51,8 @@ class PokerAnalyticsApplication : Application() {
if (BuildConfig.DEBUG) { if (BuildConfig.DEBUG) {
// 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()
}
}
}

@ -41,6 +41,7 @@ class PokerAnalyticsMigration : RealmMigration {
it.renameField("filterElements", "filterConditions") it.renameField("filterElements", "filterConditions")
} }
schema.get("SessionSet")?.let { schema.get("SessionSet")?.let {
it.addField("id", String::class.java).setRequired("id", true)
it.addPrimaryKey("id") it.addPrimaryKey("id")
} }
currentVersion++ currentVersion++

@ -89,11 +89,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
}
} }
} }
} }

@ -80,12 +80,15 @@ open class Result : RealmObject() {
private fun computeNet() { private fun computeNet() {
val transactionsSum = transactions.sumByDouble { it.amount } val transactionsSum = transactions.sumByDouble { it.amount }
this.netResult?.let {
this.net = it + transactionsSum val isLive = this.session?.bankroll?.live ?: true
} ?: run { if (isLive) {
val buyin = this.buyin ?: 0.0 val buyin = this.buyin ?: 0.0
val cashOut = this.cashout ?: 0.0 val cashOut = this.cashout ?: 0.0
this.net = cashOut - buyin + transactionsSum this.net = cashOut - buyin + transactionsSum
} else {
val netResult = this.netResult ?: 0.0
this.net = netResult + transactionsSum
} }
// Precompute results // Precompute results

@ -627,7 +627,8 @@ open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDat
SessionRow.BLINDS -> getBlinds() SessionRow.BLINDS -> getBlinds()
SessionRow.BREAK_TIME -> if (this.breakDuration > 0.0) this.breakDuration.toMinutes() else NULL_TEXT SessionRow.BREAK_TIME -> if (this.breakDuration > 0.0) this.breakDuration.toMinutes() else NULL_TEXT
SessionRow.BUY_IN -> this.result?.buyin?.toCurrency(CurrencyUtils.getCurrency(bankroll)) ?: NULL_TEXT SessionRow.BUY_IN -> this.result?.buyin?.toCurrency(CurrencyUtils.getCurrency(bankroll)) ?: NULL_TEXT
SessionRow.CASHED_OUT, SessionRow.PRIZE, SessionRow.NET_RESULT -> this.result?.cashout?.toCurrency(CurrencyUtils.getCurrency(bankroll)) ?: NULL_TEXT SessionRow.CASHED_OUT, SessionRow.PRIZE -> this.result?.cashout?.toCurrency(CurrencyUtils.getCurrency(bankroll)) ?: NULL_TEXT
SessionRow.NET_RESULT -> this.result?.netResult?.toCurrency(CurrencyUtils.getCurrency(bankroll)) ?: NULL_TEXT
SessionRow.COMMENT -> if (this.comment.isNotEmpty()) this.comment else NULL_TEXT SessionRow.COMMENT -> if (this.comment.isNotEmpty()) this.comment else NULL_TEXT
SessionRow.END_DATE -> this.endDate?.shortDateTime() ?: NULL_TEXT SessionRow.END_DATE -> this.endDate?.shortDateTime() ?: NULL_TEXT
SessionRow.GAME -> getFormattedGame() SessionRow.GAME -> getFormattedGame()
@ -664,7 +665,7 @@ open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDat
override fun actionIconForRow(row: RowRepresentable): Int? { override fun actionIconForRow(row: RowRepresentable): Int? {
return when (row) { return when (row) {
SessionRow.START_DATE, SessionRow.END_DATE -> { SessionRow.START_DATE, SessionRow.END_DATE -> {
net.pokeranalytics.android.R.drawable.ic_close R.drawable.ic_close
} }
else -> null else -> null
} }
@ -699,14 +700,14 @@ open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDat
SessionRow.BUY_IN -> row.editingDescriptors(mapOf( SessionRow.BUY_IN -> row.editingDescriptors(mapOf(
"bb" to cgBigBlind, "bb" to cgBigBlind,
"fee" to this.tournamentEntryFee, "fee" to this.tournamentEntryFee,
"ratedBuyin" to ratedBuyin "ratedBuyin" to result?.buyin
)) ))
SessionRow.BREAK_TIME -> row.editingDescriptors(mapOf()) SessionRow.BREAK_TIME -> row.editingDescriptors(mapOf())
SessionRow.CASHED_OUT, SessionRow.PRIZE -> row.editingDescriptors(mapOf( SessionRow.CASHED_OUT, SessionRow.PRIZE -> row.editingDescriptors(mapOf(
"defaultValue" to result?.cashout?.round() "defaultValue" to result?.cashout
)) ))
SessionRow.NET_RESULT -> row.editingDescriptors(mapOf( SessionRow.NET_RESULT -> row.editingDescriptors(mapOf(
"defaultValue" to result?.netResult?.round() "defaultValue" to result?.netResult
)) ))
SessionRow.COMMENT -> row.editingDescriptors(mapOf( SessionRow.COMMENT -> row.editingDescriptors(mapOf(
"defaultValue" to this.comment)) "defaultValue" to this.comment))
@ -755,7 +756,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)
@ -766,24 +767,19 @@ open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDat
SessionRow.CASHED_OUT, SessionRow.PRIZE -> { SessionRow.CASHED_OUT, SessionRow.PRIZE -> {
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)
if (value == null) { localResult.cashout = value as Double?
localResult.cashout = null
} else {
localResult.cashout = (value as String).toDouble()
}
this.result = localResult this.result = localResult
} }
SessionRow.NET_RESULT -> { SessionRow.NET_RESULT -> {
this.result?.let { result -> this.result?.let { result ->
result.netResult = (value as String).toDouble() result.netResult = value as Double?
} }
} }
SessionRow.COMMENT -> comment = value as String? ?: "" SessionRow.COMMENT -> comment = value as String? ?: ""
SessionRow.END_DATE -> if (value is Date?) { SessionRow.END_DATE -> if (value is Date?) {
this.endDate = value this.endDate = value
} }
SessionRow.GAME -> { SessionRow.GAME -> {
if (value is ArrayList<*>) { if (value is ArrayList<*>) {
@ -802,15 +798,26 @@ open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDat
} else if (value == null) { } else if (value == null) {
limit = null limit = null
game = null game = null
} }
} }
SessionRow.INITIAL_BUY_IN -> tournamentEntryFee = if (value == null) null else (value as String).toDouble() SessionRow.INITIAL_BUY_IN -> {
this.tournamentEntryFee = (value as Double?)
}
SessionRow.LOCATION -> location = value as Location? SessionRow.LOCATION -> location = value as Location?
SessionRow.PLAYERS -> tournamentNumberOfPlayers = if (value != null) (value as String).toInt() else null SessionRow.PLAYERS -> {
if (value is Double) {
this.tournamentNumberOfPlayers = value.toInt()
} else {
this.tournamentNumberOfPlayers = null
}
}
SessionRow.POSITION -> { SessionRow.POSITION -> {
val localResult = if (result != null) result as Result else realm.createObject(Result::class.java) val localResult = if (result != null) result as Result else realm.createObject(Result::class.java)
localResult.tournamentFinalPosition = if (value == null) null else (value as String).toInt() if (value is Double) {
localResult.tournamentFinalPosition = value.toInt()
} else {
localResult.tournamentFinalPosition = null
}
result = localResult result = localResult
} }
SessionRow.START_DATE -> if (value is Date) { SessionRow.START_DATE -> if (value is Date) {
@ -824,9 +831,14 @@ open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDat
} }
SessionRow.TOURNAMENT_NAME -> tournamentName = value as TournamentName? SessionRow.TOURNAMENT_NAME -> tournamentName = value as TournamentName?
SessionRow.TOURNAMENT_TYPE -> tournamentType = value as Int? SessionRow.TOURNAMENT_TYPE -> tournamentType = value as Int?
SessionRow.TOURNAMENT_FEATURE -> value?.let { SessionRow.TOURNAMENT_FEATURE -> {
value?.let {
tournamentFeatures = RealmList() tournamentFeatures = RealmList()
tournamentFeatures.addAll((it as ArrayList<TournamentFeature>)) tournamentFeatures.addAll((it as ArrayList<TournamentFeature>))
} ?: run {
tournamentFeatures.removeAll(this.tournamentFeatures)
}
} }
} }
} }

@ -61,6 +61,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
} }
/** /**

@ -88,18 +88,15 @@ class BankrollDataFragment : EditableDataFragment(), StaticRowRepresentableDataS
return when (row) { return when (row) {
SimpleRow.NAME -> if (bankroll.name.isNotEmpty()) bankroll.name else NULL_TEXT SimpleRow.NAME -> if (bankroll.name.isNotEmpty()) bankroll.name else NULL_TEXT
BankrollRow.CURRENCY -> { BankrollRow.CURRENCY -> {
bankroll.currency?.let { bankroll.currency?.code?.let { code ->
Currency.getInstance(it.code).currencyCode Currency.getInstance(code).currencyCode
} ?: run { } ?: run {
NULL_TEXT NULL_TEXT
} }
} }
BankrollRow.RATE -> { BankrollRow.RATE -> {
this.bankroll.currency?.rate?.let { rate -> val rate = this.bankroll.currency?.rate ?: 1.0
CurrencyUtils.getCurrencyRateFormatter().format(rate) CurrencyUtils.getCurrencyRateFormatter().format(rate)
} ?: run {
CurrencyUtils.getCurrencyRateFormatter().format(1.0)
}
} }
else -> super.stringForRow(row) else -> super.stringForRow(row)
} }
@ -117,12 +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
this.bankroll.currency?.rate?.let { rate -> row.editingDescriptors(mapOf("defaultValue" to rate))
row.editingDescriptors(mapOf("defaultValue" to CurrencyUtils.getCurrencyRateFormatter().format(rate)))
} ?: run {
row.editingDescriptors(mapOf())
}
} }
else -> null else -> null
} }
@ -211,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)
} }
} }

@ -117,8 +117,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()
} }
} }

@ -56,7 +56,10 @@ class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Sta
override fun stringForRow(row: RowRepresentable): String { override fun stringForRow(row: RowRepresentable): String {
return when (row) { return when (row) {
SettingRow.VERSION -> BuildConfig.VERSION_NAME + if (BuildConfig.DEBUG) " (${BuildConfig.VERSION_CODE}) DEBUG" else "" SettingRow.VERSION -> BuildConfig.VERSION_NAME + if (BuildConfig.DEBUG) " (${BuildConfig.VERSION_CODE}) DEBUG" else ""
SettingRow.CURRENCY -> Currency.getInstance(Preferences.getCurrencyLocale(this.parentActivity)).symbol SettingRow.CURRENCY -> {
val locale = Preferences.getCurrencyLocale(this.parentActivity)
Currency.getInstance(locale).symbol
}
else -> "" else -> ""
} }
} }

@ -0,0 +1,85 @@
package net.pokeranalytics.android.ui.fragment.components.bottomsheet
import android.os.Bundle
import android.text.InputType
import android.view.LayoutInflater
import android.view.View
import android.view.inputmethod.EditorInfo
import androidx.core.widget.addTextChangedListener
import kotlinx.android.synthetic.main.bottom_sheet_edit_text.*
import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.*
import net.pokeranalytics.android.R
import net.pokeranalytics.android.exceptions.RowRepresentableEditDescriptorException
import java.text.NumberFormat
class BottomSheetNumericTextFragment : BottomSheetFragment() {
private var value: Double? = null
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
initData()
initUI()
}
override fun onStart() {
super.onStart()
editText1.requestFocus()
}
override fun getValue(): Any? {
return this.value
}
/**
* Init data
*/
private fun initData() {
}
/**
* Init UI
*/
private fun initUI() {
val data = getData()?:throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor not found")
if (data.size != 1) {
throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor inconsistency")
}
LayoutInflater.from(requireContext()).inflate(R.layout.bottom_sheet_edit_text, view?.bottomSheetContainer, true)
data[0].hint?.let { editText1.hint = getString(it) }
editText1.inputType = data[0].inputType ?: InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_CAP_SENTENCES
editText1.addTextChangedListener {
this.value = try {
editText1.text.toString().toDouble()
} catch (e: Exception) {
null
}
}
data[0].defaultValue?.let {
if (it is Double || it is Long) {
val formatter = NumberFormat.getNumberInstance()
formatter.maximumFractionDigits = 6
formatter.isGroupingUsed = false
editText1.setText(formatter.format(it))
} else {
editText1.setText(it.toString())
}
}
editText1.setOnEditorActionListener { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_DONE) {
delegate.onRowValueChanged(getValue(), row)
dismiss()
true
} else {
false
}
}
}
}

@ -11,6 +11,7 @@ enum class BottomSheetType {
EDIT_TEXT { override fun newInstance() = BottomSheetEditTextFragment()}, EDIT_TEXT { override fun newInstance() = BottomSheetEditTextFragment()},
EDIT_TEXT_MULTI_LINES { override fun newInstance() = BottomSheetEditTextMultiLinesFragment()}, EDIT_TEXT_MULTI_LINES { override fun newInstance() = BottomSheetEditTextMultiLinesFragment()},
DOUBLE_EDIT_TEXT { override fun newInstance() = BottomSheetDoubleEditTextFragment()}, DOUBLE_EDIT_TEXT { override fun newInstance() = BottomSheetDoubleEditTextFragment()},
NUMERIC_TEXT { override fun newInstance() = BottomSheetNumericTextFragment()},
SUM { override fun newInstance() = BottomSheetSumFragment()}; SUM { override fun newInstance() = BottomSheetSumFragment()};
abstract fun newInstance(): BottomSheetFragment abstract fun newInstance(): BottomSheetFragment
@ -26,7 +27,7 @@ enum class BottomSheetType {
val addRequired : Boolean val addRequired : Boolean
get() = when (this) { get() = when (this) {
EDIT_TEXT, DOUBLE_EDIT_TEXT, EDIT_TEXT_MULTI_LINES, GRID, LIST_STATIC, SUM -> false EDIT_TEXT, NUMERIC_TEXT, DOUBLE_EDIT_TEXT, EDIT_TEXT_MULTI_LINES, GRID, LIST_STATIC, SUM -> false
else -> true else -> true
} }
} }

@ -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

@ -49,17 +49,39 @@ enum class SessionRow : RowRepresentable {
return when (session.getState()) { return when (session.getState()) {
SessionState.PENDING, SessionState.PLANNED -> { SessionState.PENDING, SessionState.PLANNED -> {
arrayListOf( arrayListOf(
GAME, INITIAL_BUY_IN, LOCATION, BANKROLL, TABLE_SIZE, TOURNAMENT_TYPE, TOURNAMENT_NAME, TOURNAMENT_FEATURE, GAME,
START_DATE, END_DATE INITIAL_BUY_IN,
LOCATION,
BANKROLL,
TABLE_SIZE,
TOURNAMENT_TYPE,
TOURNAMENT_NAME,
TOURNAMENT_FEATURE,
START_DATE,
END_DATE
) )
} }
SessionState.STARTED, SessionState.PAUSED, SessionState.FINISHED -> { SessionState.STARTED, SessionState.PAUSED, SessionState.FINISHED -> {
arrayListOf( arrayListOf(
PRIZE, BUY_IN, POSITION, PLAYERS, TIPS, PRIZE,
BUY_IN,
POSITION,
PLAYERS,
TIPS,
SeparatorRowRepresentable(), SeparatorRowRepresentable(),
GAME, INITIAL_BUY_IN, LOCATION, BANKROLL, TABLE_SIZE, TOURNAMENT_TYPE, TOURNAMENT_NAME, TOURNAMENT_FEATURE, GAME,
INITIAL_BUY_IN,
LOCATION,
BANKROLL,
TABLE_SIZE,
TOURNAMENT_TYPE,
TOURNAMENT_NAME,
TOURNAMENT_FEATURE,
SeparatorRowRepresentable(), SeparatorRowRepresentable(),
START_DATE, END_DATE, BREAK_TIME, COMMENT START_DATE,
END_DATE,
BREAK_TIME,
COMMENT
) )
} }
} }
@ -73,15 +95,33 @@ enum class SessionRow : RowRepresentable {
val liveBankroll = session.bankroll?.live ?: false val liveBankroll = session.bankroll?.live ?: false
return if (liveBankroll) { return if (liveBankroll) {
arrayListOf( arrayListOf(
CASHED_OUT, BUY_IN, TIPS, CASHED_OUT,
BUY_IN,
TIPS,
SeparatorRowRepresentable(), SeparatorRowRepresentable(),
GAME, BLINDS, LOCATION, BANKROLL, TABLE_SIZE, START_DATE, END_DATE, BREAK_TIME, COMMENT GAME,
BLINDS,
LOCATION,
BANKROLL,
TABLE_SIZE,
START_DATE,
END_DATE,
BREAK_TIME,
COMMENT
) )
} else { } else {
arrayListOf( arrayListOf(
NET_RESULT, NET_RESULT,
SeparatorRowRepresentable(), SeparatorRowRepresentable(),
GAME, BLINDS, LOCATION, BANKROLL, TABLE_SIZE, START_DATE, END_DATE, BREAK_TIME, COMMENT GAME,
BLINDS,
LOCATION,
BANKROLL,
TABLE_SIZE,
START_DATE,
END_DATE,
BREAK_TIME,
COMMENT
) )
} }
} }
@ -131,7 +171,7 @@ enum class SessionRow : RowRepresentable {
override val bottomSheetType: BottomSheetType override val bottomSheetType: BottomSheetType
get() { get() {
return when (this) { return when (this) {
NET_RESULT, CASHED_OUT, INITIAL_BUY_IN, BREAK_TIME, POSITION, PLAYERS, PRIZE -> BottomSheetType.EDIT_TEXT NET_RESULT, CASHED_OUT, INITIAL_BUY_IN, BREAK_TIME, POSITION, PLAYERS, PRIZE -> BottomSheetType.NUMERIC_TEXT
BUY_IN, TIPS -> BottomSheetType.SUM BUY_IN, TIPS -> BottomSheetType.SUM
BLINDS -> BottomSheetType.DOUBLE_EDIT_TEXT BLINDS -> BottomSheetType.DOUBLE_EDIT_TEXT
GAME -> BottomSheetType.LIST_GAME GAME -> BottomSheetType.LIST_GAME
@ -151,10 +191,15 @@ enum class SessionRow : RowRepresentable {
val sb: String? by map val sb: String? by map
val bb: String? by map val bb: String? by map
arrayListOf( arrayListOf(
RowRepresentableEditDescriptor(sb, R.string.smallblind, InputType.TYPE_CLASS_NUMBER RowRepresentableEditDescriptor(
or InputType.TYPE_NUMBER_FLAG_DECIMAL), sb, R.string.smallblind, InputType.TYPE_CLASS_NUMBER
RowRepresentableEditDescriptor(bb, R.string.bigblind, InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_DECIMAL
or InputType.TYPE_NUMBER_FLAG_DECIMAL)) ),
RowRepresentableEditDescriptor(
bb, R.string.bigblind, InputType.TYPE_CLASS_NUMBER
or InputType.TYPE_NUMBER_FLAG_DECIMAL
)
)
} }
BUY_IN -> { BUY_IN -> {
val bb: Double? by map val bb: Double? by map
@ -162,11 +207,11 @@ enum class SessionRow : RowRepresentable {
val ratedBuyin: Double? by map val ratedBuyin: Double? by map
val data = arrayListOf<RowRepresentableEditDescriptor>() val data = arrayListOf<RowRepresentableEditDescriptor>()
if (bb != null) { if (bb != null) {
data.add(RowRepresentableEditDescriptor(100.0 * (bb?: 0.0))) data.add(RowRepresentableEditDescriptor(100.0 * (bb ?: 0.0)))
data.add(RowRepresentableEditDescriptor(200.0 * (bb?: 0.0))) data.add(RowRepresentableEditDescriptor(200.0 * (bb ?: 0.0)))
} else if (fee != null) { } else if (fee != null) {
data.add(RowRepresentableEditDescriptor((fee?: 0.0) * 1.0)) data.add(RowRepresentableEditDescriptor((fee ?: 0.0) * 1.0))
data.add(RowRepresentableEditDescriptor((fee?: 0.0) * 2.0)) data.add(RowRepresentableEditDescriptor((fee ?: 0.0) * 2.0))
} else { } else {
data.add(RowRepresentableEditDescriptor(0)) data.add(RowRepresentableEditDescriptor(0))
data.add(RowRepresentableEditDescriptor(0)) data.add(RowRepresentableEditDescriptor(0))
@ -186,17 +231,18 @@ enum class SessionRow : RowRepresentable {
data data
} }
CASHED_OUT, PRIZE, NET_RESULT -> { CASHED_OUT, PRIZE, NET_RESULT -> {
val defaultValue: String? by map val defaultValue: Double? by map
arrayListOf( arrayListOf(
RowRepresentableEditDescriptor( RowRepresentableEditDescriptor(
defaultValue, defaultValue,
inputType = InputType.TYPE_CLASS_NUMBER inputType = InputType.TYPE_CLASS_NUMBER
or InputType.TYPE_NUMBER_FLAG_DECIMAL or InputType.TYPE_NUMBER_FLAG_DECIMAL
or InputType.TYPE_NUMBER_FLAG_SIGNED or InputType.TYPE_NUMBER_FLAG_SIGNED
)) )
)
} }
COMMENT -> { COMMENT -> {
val defaultValue : String? by map val defaultValue: String? by map
arrayListOf(RowRepresentableEditDescriptor(defaultValue, R.string.comment)) arrayListOf(RowRepresentableEditDescriptor(defaultValue, R.string.comment))
} }
BREAK_TIME -> { BREAK_TIME -> {
@ -207,22 +253,23 @@ enum class SessionRow : RowRepresentable {
) )
} }
GAME -> { GAME -> {
val limit : Int? by map val limit: Int? by map
val defaultValue : Any? by map val defaultValue: Any? by map
val data : RealmResults<*>? by map val data: RealmResults<*>? by map
arrayListOf( arrayListOf(
RowRepresentableEditDescriptor(limit), RowRepresentableEditDescriptor(limit),
RowRepresentableEditDescriptor(defaultValue, data = data)) RowRepresentableEditDescriptor(defaultValue, data = data)
)
} }
INITIAL_BUY_IN -> { INITIAL_BUY_IN -> {
val defaultValue : Double? by map val defaultValue: Double? by map
arrayListOf( arrayListOf(
RowRepresentableEditDescriptor(defaultValue?.round(), inputType = InputType.TYPE_CLASS_NUMBER) RowRepresentableEditDescriptor(defaultValue?.round(), inputType = InputType.TYPE_CLASS_NUMBER)
) )
} }
BANKROLL, LOCATION, TOURNAMENT_FEATURE, TOURNAMENT_NAME -> { BANKROLL, LOCATION, TOURNAMENT_FEATURE, TOURNAMENT_NAME -> {
val defaultValue : Any? by map val defaultValue: Any? by map
val data : RealmResults<*>? by map val data: RealmResults<*>? by map
arrayListOf( arrayListOf(
RowRepresentableEditDescriptor(defaultValue, data = data) RowRepresentableEditDescriptor(defaultValue, data = data)
) )
@ -237,7 +284,7 @@ enum class SessionRow : RowRepresentable {
) )
} }
POSITION -> { POSITION -> {
val defaultValue : Int? by map val defaultValue: Int? by map
arrayListOf( arrayListOf(
RowRepresentableEditDescriptor( RowRepresentableEditDescriptor(
defaultValue, defaultValue,
@ -246,7 +293,7 @@ enum class SessionRow : RowRepresentable {
) )
} }
TABLE_SIZE -> { TABLE_SIZE -> {
val defaultValue : Int? by map val defaultValue: Int? by map
arrayListOf(RowRepresentableEditDescriptor(defaultValue)) arrayListOf(RowRepresentableEditDescriptor(defaultValue))
} }
TIPS -> { TIPS -> {
@ -256,19 +303,20 @@ enum class SessionRow : RowRepresentable {
// Disable the buttons with value = 0, add current value & set the 2 edit texts // Disable the buttons with value = 0, add current value & set the 2 edit texts
arrayListOf( arrayListOf(
RowRepresentableEditDescriptor(sb?: 0.0), RowRepresentableEditDescriptor(sb ?: 0.0),
RowRepresentableEditDescriptor(bb?: 0.0), RowRepresentableEditDescriptor(bb ?: 0.0),
RowRepresentableEditDescriptor(tips?: 0.0), RowRepresentableEditDescriptor(tips ?: 0.0),
RowRepresentableEditDescriptor("", inputType = InputType.TYPE_CLASS_NUMBER), RowRepresentableEditDescriptor("", inputType = InputType.TYPE_CLASS_NUMBER),
RowRepresentableEditDescriptor("", inputType = InputType.TYPE_CLASS_NUMBER) RowRepresentableEditDescriptor("", inputType = InputType.TYPE_CLASS_NUMBER)
) )
} }
TOURNAMENT_TYPE -> { TOURNAMENT_TYPE -> {
val defaultValue : Any? by map val defaultValue: Any? by map
arrayListOf( arrayListOf(
RowRepresentableEditDescriptor(defaultValue, staticData = TournamentType.values().map { RowRepresentableEditDescriptor(defaultValue, staticData = TournamentType.values().map {
it it
})) })
)
} }
else -> null else -> null
} }

Loading…
Cancel
Save