Merge branch 'dev' of gitlab.com:stax-river/poker-analytics into dev

feature/top10
Aurelien Hubert 7 years ago
commit b441f6806f
  1. 2
      app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt
  2. 11
      app/src/main/java/net/pokeranalytics/android/calculus/Stat.kt
  3. 2
      app/src/main/java/net/pokeranalytics/android/ui/extensions/ChipGroupExtension.kt
  4. 9
      app/src/main/java/net/pokeranalytics/android/ui/extensions/UIExtensions.kt
  5. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/ComparisonChartFragment.kt
  6. 14
      app/src/main/java/net/pokeranalytics/android/ui/fragment/GraphFragment.kt
  7. 6
      app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt
  8. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt
  9. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListGameFragment.kt
  10. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetTableSizeGridFragment.kt
  11. 15
      app/src/main/java/net/pokeranalytics/android/ui/graph/ChartDataSet.kt
  12. 93
      app/src/main/java/net/pokeranalytics/android/ui/graph/GraphExtensions.kt
  13. 7
      app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt
  14. 10
      app/src/main/java/net/pokeranalytics/android/ui/view/fields/FieldsExtension.kt
  15. 1
      app/src/main/res/values/colors.xml

@ -51,7 +51,7 @@ class PokerAnalyticsApplication : Application() {
} }
if (BuildConfig.DEBUG) { if (BuildConfig.DEBUG) {
// this.createFakeSessions() this.createFakeSessions()
} }
} }

@ -201,7 +201,16 @@ enum class Stat : RowRepresentable {
get() { get() {
return when (this) { return when (this) {
NETRESULT -> listOf(AggregationType.SESSION, AggregationType.MONTH, AggregationType.YEAR, AggregationType.DURATION) NETRESULT -> listOf(AggregationType.SESSION, AggregationType.MONTH, AggregationType.YEAR, AggregationType.DURATION)
else -> listOf(AggregationType.SESSION, AggregationType.MONTH, AggregationType.YEAR, AggregationType.DURATION) NUMBER_OF_GAMES, NUMBER_OF_SETS -> listOf(AggregationType.MONTH, AggregationType.YEAR)
else -> listOf(AggregationType.SESSION, AggregationType.MONTH, AggregationType.YEAR)
}
}
val hasEvolutionGraph: Boolean
get() {
return when (this) {
DURATION, AVERAGE_DURATION -> false
else -> true
} }
} }

@ -1,4 +1,4 @@
package net.pokeranalytics.android.util.extensions package net.pokeranalytics.android.ui.extensions
import com.google.android.material.chip.ChipGroup import com.google.android.material.chip.ChipGroup

@ -1,4 +1,4 @@
package net.pokeranalytics.android.util.extensions package net.pokeranalytics.android.ui.extensions
import android.content.ActivityNotFoundException import android.content.ActivityNotFoundException
import android.content.Context import android.content.Context
@ -7,10 +7,12 @@ import android.content.res.Resources
import android.net.Uri import android.net.Uri
import android.widget.Toast import android.widget.Toast
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.appcompat.widget.AppCompatTextView
import androidx.browser.customtabs.CustomTabsIntent import androidx.browser.customtabs.CustomTabsIntent
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import net.pokeranalytics.android.BuildConfig import net.pokeranalytics.android.BuildConfig
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.calculus.TextFormat
import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment
import net.pokeranalytics.android.util.DeviceUtils import net.pokeranalytics.android.util.DeviceUtils
@ -100,4 +102,9 @@ fun showAlertDialog(context: Context, title: Int? = null, message: Int? = null)
} }
builder.setPositiveButton(R.string.ok, null) builder.setPositiveButton(R.string.ok, null)
builder.show() builder.show()
}
fun AppCompatTextView.setTextFormat(textFormat: TextFormat, context: Context) {
this.setTextColor(textFormat.getColor(context))
this.text = textFormat.text
} }

@ -13,7 +13,7 @@ import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource
import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.rowrepresentable.MoreTabRow import net.pokeranalytics.android.ui.view.rowrepresentable.MoreTabRow
import net.pokeranalytics.android.util.extensions.toast import net.pokeranalytics.android.ui.extensions.toast
class ComparisonChartFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate { class ComparisonChartFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate {

@ -9,7 +9,6 @@ import com.github.mikephil.charting.charts.BarLineChartBase
import com.github.mikephil.charting.charts.LineChart import com.github.mikephil.charting.charts.LineChart
import com.github.mikephil.charting.data.Entry import com.github.mikephil.charting.data.Entry
import com.github.mikephil.charting.data.LineData import com.github.mikephil.charting.data.LineData
import com.github.mikephil.charting.data.LineDataSet
import com.github.mikephil.charting.highlight.Highlight import com.github.mikephil.charting.highlight.Highlight
import com.github.mikephil.charting.listener.OnChartValueSelectedListener import com.github.mikephil.charting.listener.OnChartValueSelectedListener
import com.google.android.material.chip.Chip import com.google.android.material.chip.Chip
@ -21,11 +20,12 @@ import net.pokeranalytics.android.calculus.ObjectIdentifier
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.components.PokerAnalyticsFragment import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment
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.util.extensions.ChipGroupExtension import net.pokeranalytics.android.ui.extensions.ChipGroupExtension
import net.pokeranalytics.android.util.extensions.px import net.pokeranalytics.android.ui.extensions.px
import net.pokeranalytics.android.util.extensions.toast import net.pokeranalytics.android.ui.extensions.toast
import java.text.DateFormat import java.text.DateFormat
class GraphParameters(stat: Stat, entries: List<Entry>) { class GraphParameters(stat: Stat, entries: List<Entry>) {
@ -73,7 +73,7 @@ class GraphFragment : PokerAnalyticsFragment(), OnChartValueSelectedListener {
this.legendContainer.addView(this.legendView) this.legendContainer.addView(this.legendView)
this.legendView.prepareWithStat(this.stat, this.entries.size) this.legendView.prepareWithStat(this.stat, this.entries.size)
val dataSet = LineDataSet(this.entries, this.stat.name) val dataSet = PALineDataSet(this.entries, this.stat.name, requireContext())
val colors = arrayOf(R.color.green_light).toIntArray() val colors = arrayOf(R.color.green_light).toIntArray()
dataSet.setColors(colors, context) dataSet.setColors(colors, context)
dataSet.setDrawCircles(false) dataSet.setDrawCircles(false)
@ -93,9 +93,11 @@ class GraphFragment : PokerAnalyticsFragment(), OnChartValueSelectedListener {
this.chartContainer.addView(this.chartView) this.chartContainer.addView(this.chartView)
this.chartView.setStyle(requireContext()) this.chartView.setStyle(false, requireContext())
this.chartView.setOnChartValueSelectedListener(this) this.chartView.setOnChartValueSelectedListener(this)
this.chartView.highlightValue((this.entries.size - 1).toFloat(), 0)
this.stat.aggregationTypes.forEach { type -> this.stat.aggregationTypes.forEach { type ->
val chip = Chip(requireContext()) val chip = Chip(requireContext())
chip.id = type.ordinal chip.id = type.ordinal

@ -25,9 +25,9 @@ import net.pokeranalytics.android.ui.view.rowrepresentable.SettingRow
import net.pokeranalytics.android.util.Preferences import net.pokeranalytics.android.util.Preferences
import net.pokeranalytics.android.util.URL import net.pokeranalytics.android.util.URL
import net.pokeranalytics.android.util.UserDefaults import net.pokeranalytics.android.util.UserDefaults
import net.pokeranalytics.android.util.extensions.openContactMail import net.pokeranalytics.android.ui.extensions.openContactMail
import net.pokeranalytics.android.util.extensions.openPlayStorePage import net.pokeranalytics.android.ui.extensions.openPlayStorePage
import net.pokeranalytics.android.util.extensions.openUrl import net.pokeranalytics.android.ui.extensions.openUrl
import java.util.* import java.util.*

@ -199,7 +199,7 @@ class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSourc
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) {
if (row is StatRepresentable) { if (row is StatRepresentable && row.stat.hasEvolutionGraph) {
// filter groups // filter groups
val groupResults = this.report?.results?.filter { val groupResults = this.report?.results?.filter {

@ -14,7 +14,7 @@ import net.pokeranalytics.android.exceptions.RowRepresentableEditDescriptorExcep
import net.pokeranalytics.android.model.Limit import net.pokeranalytics.android.model.Limit
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.util.extensions.px import net.pokeranalytics.android.ui.extensions.px
/** /**
* Bottom Sheet List Game Fragment * Bottom Sheet List Game Fragment

@ -13,7 +13,7 @@ import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource
import net.pokeranalytics.android.ui.view.GridSpacingItemDecoration import net.pokeranalytics.android.ui.view.GridSpacingItemDecoration
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.util.extensions.px import net.pokeranalytics.android.ui.extensions.px
class BottomSheetTableSizeGridFragment : BottomSheetFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate { class BottomSheetTableSizeGridFragment : BottomSheetFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate {

@ -0,0 +1,15 @@
package net.pokeranalytics.android.ui.graph
import android.content.Context
import com.github.mikephil.charting.data.Entry
import com.github.mikephil.charting.data.LineDataSet
import net.pokeranalytics.android.R
class PALineDataSet(yVals: List<Entry>, label: String, context: Context) : LineDataSet(yVals, label) {
init {
this.highLightColor = context.getColor(R.color.chart_highlight_indicator)
}
}

@ -1,76 +1,61 @@
package net.pokeranalytics.android.ui.graph package net.pokeranalytics.android.ui.graph
import android.content.Context import android.content.Context
import android.graphics.Typeface
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import com.github.mikephil.charting.charts.BarLineChartBase import com.github.mikephil.charting.charts.BarLineChartBase
import com.github.mikephil.charting.components.XAxis import com.github.mikephil.charting.components.XAxis
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.util.extensions.px import net.pokeranalytics.android.ui.extensions.px
//fun BarChart.setStyle(context: Context) { fun BarLineChartBase<*>.setStyle(small: Boolean, context: Context) {
// GraphHelper.setStyle(this, context)
//}
fun BarLineChartBase<*>.setStyle(context: Context) { // X Axis
GraphHelper.setStyle(this, context) this.xAxis.axisLineColor = ContextCompat.getColor(context, R.color.chart_default)
} this.xAxis.enableGridDashedLine(3.0f.px, 5.0f.px, 1.0f.px)
this.xAxis.textColor = ContextCompat.getColor(context, R.color.chart_default)
this.xAxis.labelCount = 4
this.xAxis.position = XAxis.XAxisPosition.BOTTOM
class GraphHelper { this.xAxis.textColor = ContextCompat.getColor(context, R.color.chart_default)
this.xAxis.typeface = Typeface.DEFAULT
this.xAxis.labelCount = 4
this.xAxis.position = XAxis.XAxisPosition.BOTTOM
companion object { this.xAxis.setDrawLabels(true)
this.xAxis.setDrawGridLines(true)
this.xAxis.granularity = 1.0f
this.xAxis.isGranularityEnabled = true
this.xAxis.isEnabled = true
fun setStyle(chart: BarLineChartBase<*>, context: Context) { // Y Axis
this.axisLeft.setDrawAxisLine(false)
this.axisLeft.setDrawGridLines(true)
this.axisLeft.enableGridDashedLine(3.0f.px, 5.0f.px, 1.0f.px)
chart.xAxis.axisLineColor = ContextCompat.getColor(context, R.color.chart_default) this.axisLeft.setDrawZeroLine(true)
chart.xAxis.enableGridDashedLine(3.0f.px, 5.0f.px, 1.0f.px) // this.axisLeft.zeroLineWidth = 1.0f.px
chart.xAxis.textColor = ContextCompat.getColor(context, R.color.chart_default) this.axisLeft.zeroLineColor = ContextCompat.getColor(context, R.color.chart_default)
chart.xAxis.labelCount = 4
chart.xAxis.position = XAxis.XAxisPosition.BOTTOM
chart.axisLeft.enableGridDashedLine(3.0f.px, 5.0f.px, 1.0f.px) this.axisLeft.isGranularityEnabled = true
this.axisLeft.granularity = 1.0f
// this.xAxis.axisLineWidth = ChartAppearance.lineWidth this.axisLeft.textColor = ContextCompat.getColor(context, R.color.chart_default)
// this.xAxis.enableGridDashedLine(3.0f, 5.0f, 1.0f) this.axisLeft.typeface = Typeface.DEFAULT
// this.axisLeft.labelCount =
// this.xAxis.labelTextColor = ChartAppearance.defaultColor if (small) 1 else 7 // @todo not great if interval is [0..2] for number of records as we get decimals
// this.xAxis.labelFont = Fonts.graphAxis
// this.xAxis.labelCount = 4 this.axisRight.isEnabled = false
// this.xAxis.labelPosition = .bottom this.legend.isEnabled = false
//
// this.xAxis.drawLabelsEnabled = true
// this.xAxis.drawGridLinesEnabled = true // @todo
// this.xAxis.granularity = 1.0
// this.xAxis.granularityEnabled = true
// this.xAxis.enabled = true
//
// // Y Axis
// this.leftAxis.drawAxisLineEnabled = false
// this.leftAxis.drawGridLinesEnabled = true
// this.leftAxis.gridLineDashLengths = [3.0, 5.0]
//
// this.leftAxis.drawZeroLineEnabled = true
// this.leftAxis.zeroLineWidth = ChartAppearance.lineWidth
// this.leftAxis.zeroLineColor = ChartAppearance.defaultColor
//
// this.leftAxis.granularityEnabled = true
// this.leftAxis.granularity = 1.0
//
// this.leftAxis.labelTextColor = ChartAppearance.defaultColor
// this.leftAxis.labelFont = Fonts.graphAxis
// this.leftAxis.labelCount = small ? 1 : 7 // @todo not great if interval is [0..2] for number of records as we get decimals
//
// if timeYAxis { // if timeYAxis {
// this.leftAxis.valueFormatter = HourValueFormatter() // this.axisLeft.valueFormatter = HourValueFormatter()
// } else { // } else {
// this.leftAxis.valueFormatter = LargeNumberFormatter() // this.axisLeft.valueFormatter = LargeNumberFormatter()
// } // }
// //
// this.rightAxis.enabled = false
//
// this.legend.enabled = false
}
}
} }

@ -13,6 +13,7 @@ import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.row_history_session.view.* import kotlinx.android.synthetic.main.row_history_session.view.*
import kotlinx.android.synthetic.main.row_transaction.view.* import kotlinx.android.synthetic.main.row_transaction.view.*
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.StatRepresentable
import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.model.realm.Transaction import net.pokeranalytics.android.model.realm.Transaction
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
@ -232,11 +233,13 @@ enum class RowViewType(private var layoutRes: Int) {
itemView.findViewById<AppCompatTextView?>(R.id.value)?.let { view -> itemView.findViewById<AppCompatTextView?>(R.id.value)?.let { view ->
adapter.dataSource.contentDescriptorForRow(row)?.textFormat?.let { adapter.dataSource.contentDescriptorForRow(row)?.textFormat?.let {
view.setTextFormat(it, itemView.context) view.setTextFormat(it, itemView.context)
// view.text = it.text
// view.setTextColor(it.getColor(itemView.context))
} }
} }
if (row is StatRepresentable) {
itemView.findViewById<AppCompatImageView?>(R.id.nextArrow)?.isVisible = row.stat.hasEvolutionGraph
}
// Listener // Listener
val listener = View.OnClickListener { val listener = View.OnClickListener {
adapter.delegate?.onRowSelected(position, row) adapter.delegate?.onRowSelected(position, row)

@ -1,10 +0,0 @@
package net.pokeranalytics.android.ui.view.fields
import android.content.Context
import androidx.appcompat.widget.AppCompatTextView
import net.pokeranalytics.android.calculus.TextFormat
fun AppCompatTextView.setTextFormat(textFormat: TextFormat, context: Context) {
this.setTextColor(textFormat.getColor(context))
this.text = textFormat.text
}

@ -38,5 +38,6 @@
<color name="purple">#8e35c8</color> <color name="purple">#8e35c8</color>
<color name="chart_default">#5c7258</color> <color name="chart_default">#5c7258</color>
<color name="chart_highlight_indicator">#f8ffe5</color>
</resources> </resources>

Loading…
Cancel
Save