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

feature/top10
Razmig Sarkissian 7 years ago
commit 125993d285
  1. 2
      app/src/main/java/net/pokeranalytics/android/model/comparison/Comparator.kt
  2. 4
      app/src/main/java/net/pokeranalytics/android/ui/activity/StatisticDetailsActivity.kt
  3. 14
      app/src/main/java/net/pokeranalytics/android/ui/extensions/UIExtensions.kt
  4. 11
      app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarDetailsFragment.kt
  5. 10
      app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarFragment.kt
  6. 107
      app/src/main/java/net/pokeranalytics/android/ui/fragment/GraphFragment.kt
  7. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/MoreFragment.kt
  8. 11
      app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportsFragment.kt
  9. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticDetailsFragment.kt
  10. 26
      app/src/main/java/net/pokeranalytics/android/ui/graph/GraphExtensions.kt
  11. 3
      app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt
  12. 16
      app/src/main/res/layout-sw320dp/fragment_calendar.xml
  13. 38
      app/src/main/res/layout-sw400dp/fragment_calendar.xml
  14. 16
      app/src/main/res/layout/fragment_calendar.xml
  15. 30
      app/src/main/res/layout/fragment_calendar_details.xml
  16. 11
      app/src/main/res/layout/row_graph.xml

@ -71,7 +71,7 @@ enum class Comparator {
BLIND -> { BLIND -> {
val blinds = arrayListOf<QueryCondition.BLIND>() val blinds = arrayListOf<QueryCondition.BLIND>()
val realm = Realm.getDefaultInstance() val realm = Realm.getDefaultInstance()
realm.where<Session>().distinct("blind", "bankroll.currency.code").findAll().sort("cgSmallBlind", Sort.ASCENDING).map { realm.where<Session>().distinct("blinds", "bankroll.currency.code").findAll().sort("cgSmallBlind", Sort.ASCENDING).map {
it.blinds?.let { stake -> it.blinds?.let { stake ->
blinds.add(QueryCondition.BLIND().apply { setBlind(stake, it.hasDefaultCurrency)}) blinds.add(QueryCondition.BLIND().apply { setBlind(stake, it.hasDefaultCurrency)})
} }

@ -22,12 +22,14 @@ class StatisticDetailsActivity : PokerAnalyticsActivity() {
// Unparcel fails when setting a custom Parcelable object on Entry so we use a static reference to passe objects // Unparcel fails when setting a custom Parcelable object on Entry so we use a static reference to passe objects
var parameters: GraphParameters? = null var parameters: GraphParameters? = null
var displayAggregationChoices: Boolean = true
/** /**
* Default constructor * Default constructor
*/ */
fun newInstance(context: Context, stat: Stat, group: ComputableGroup, report: Report) { fun newInstance(context: Context, stat: Stat, group: ComputableGroup, report: Report, displayAggregationChoices: Boolean = true) {
parameters = GraphParameters(stat, group, report) parameters = GraphParameters(stat, group, report)
this.displayAggregationChoices = displayAggregationChoices
val intent = Intent(context, StatisticDetailsActivity::class.java) val intent = Intent(context, StatisticDetailsActivity::class.java)
context.startActivity(intent) context.startActivity(intent)
} }

@ -5,11 +5,13 @@ import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.res.Resources import android.content.res.Resources
import android.net.Uri import android.net.Uri
import android.view.View
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.appcompat.widget.AppCompatTextView
import androidx.browser.customtabs.CustomTabsIntent import androidx.browser.customtabs.CustomTabsIntent
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
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.calculus.TextFormat
@ -108,3 +110,15 @@ fun AppCompatTextView.setTextFormat(textFormat: TextFormat, context: Context) {
this.setTextColor(textFormat.getColor(context)) this.setTextColor(textFormat.getColor(context))
this.text = textFormat.text this.text = textFormat.text
} }
fun View.hideWithAnimation() {
isVisible = true
animate().cancel()
animate().alpha(0f).withEndAction { isVisible = false }.start()
}
fun View.showWithAnimation() {
isVisible = true
animate().cancel()
animate().alpha(1f).start()
}

@ -6,6 +6,7 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.core.view.isVisible
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayout
import io.realm.Realm import io.realm.Realm
@ -72,7 +73,7 @@ class CalendarDetailsFragment : PokerAnalyticsFragment(), StaticRowRepresentable
is GraphRow -> { is GraphRow -> {
//TODO: Open graph details //TODO: Open graph details
row.report.results.firstOrNull()?.group?.let { computableGroup -> row.report.results.firstOrNull()?.group?.let { computableGroup ->
StatisticDetailsActivity.newInstance(requireContext(), row.stat, computableGroup, row.report) StatisticDetailsActivity.newInstance(requireContext(), row.stat, computableGroup, row.report, false)
} }
} }
} }
@ -146,6 +147,10 @@ class CalendarDetailsFragment : PokerAnalyticsFragment(), StaticRowRepresentable
*/ */
private fun launchStatComputation() { private fun launchStatComputation() {
progressBar.isVisible = true
progressBar.animate().alpha(1f).start()
recyclerView.animate().alpha(0f).start()
computedResults?.let { computedResults -> computedResults?.let { computedResults ->
GlobalScope.launch { GlobalScope.launch {
@ -193,6 +198,10 @@ class CalendarDetailsFragment : PokerAnalyticsFragment(), StaticRowRepresentable
launch(Dispatchers.Main) { launch(Dispatchers.Main) {
statsAdapter.notifyDataSetChanged() statsAdapter.notifyDataSetChanged()
progressBar.animate().cancel()
progressBar.animate().alpha(0f).withEndAction { progressBar.isVisible = false }.start()
recyclerView.animate().cancel()
recyclerView.animate().alpha(1f).start()
} }
} }
} }

@ -23,6 +23,8 @@ import net.pokeranalytics.android.ui.activity.CalendarDetailsActivity
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate 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.extensions.hideWithAnimation
import net.pokeranalytics.android.ui.extensions.showWithAnimation
import net.pokeranalytics.android.ui.fragment.components.SessionObserverFragment import net.pokeranalytics.android.ui.fragment.components.SessionObserverFragment
import net.pokeranalytics.android.ui.view.CalendarTabs import net.pokeranalytics.android.ui.view.CalendarTabs
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
@ -219,6 +221,9 @@ class CalendarFragment : SessionObserverFragment(), CoroutineScope, StaticRowRep
*/ */
private fun launchStatComputation() { private fun launchStatComputation() {
progressBar?.showWithAnimation()
recyclerView?.hideWithAnimation()
GlobalScope.launch { GlobalScope.launch {
val calendar = Calendar.getInstance() val calendar = Calendar.getInstance()
@ -303,6 +308,8 @@ class CalendarFragment : SessionObserverFragment(), CoroutineScope, StaticRowRep
} }
*/ */
realm.close()
GlobalScope.launch(Dispatchers.Main) { GlobalScope.launch(Dispatchers.Main) {
displayData() displayData()
} }
@ -373,6 +380,9 @@ class CalendarFragment : SessionObserverFragment(), CoroutineScope, StaticRowRep
calendarAdapter.notifyDataSetChanged() calendarAdapter.notifyDataSetChanged()
progressBar?.hideWithAnimation()
recyclerView?.showWithAnimation()
} }
} }

@ -4,6 +4,7 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.core.view.isVisible
import com.github.mikephil.charting.charts.BarChart import com.github.mikephil.charting.charts.BarChart
import com.github.mikephil.charting.charts.BarLineChartBase import com.github.mikephil.charting.charts.BarLineChartBase
import com.github.mikephil.charting.charts.LineChart import com.github.mikephil.charting.charts.LineChart
@ -34,35 +35,33 @@ class GraphParameters(var stat: Stat, var computableGroup: ComputableGroup, var
class GraphFragment : PokerAnalyticsFragment(), OnChartValueSelectedListener, CoroutineScope { class GraphFragment : PokerAnalyticsFragment(), OnChartValueSelectedListener, CoroutineScope {
companion object {
/**
* Create new instance
*/
fun newInstance(): GraphFragment {
val fragment = GraphFragment()
val bundle = Bundle()
fragment.arguments = bundle
return fragment
}
}
private lateinit var parentActivity: PokerAnalyticsActivity private lateinit var parentActivity: PokerAnalyticsActivity
private lateinit var computableGroup: ComputableGroup
private lateinit var selectedReport: Report
private lateinit var legendView: LegendView
private lateinit var chartView: BarLineChartBase<*>
private var stat: Stat = Stat.NETRESULT private var stat: Stat = Stat.NETRESULT
private var reports: MutableMap<AggregationType, Report> = hashMapOf() private var reports: MutableMap<AggregationType, Report> = hashMapOf()
lateinit private var computableGroup: ComputableGroup
lateinit private var selectedReport: Report
lateinit var legendView: LegendView
lateinit var chartView: BarLineChartBase<*>
private var aggregationTypes: List<AggregationType> = listOf() private var aggregationTypes: List<AggregationType> = listOf()
private var displayAggregationChoices: Boolean = true
override val coroutineContext: CoroutineContext override val coroutineContext: CoroutineContext
get() = Dispatchers.Main get() = Dispatchers.Main
companion object {
}
fun setData(stat: Stat, group: ComputableGroup, report: Report) {
this.stat = stat
this.computableGroup = group
this.aggregationTypes = stat.aggregationTypes
this.reports[this.aggregationTypes.first()] = report
this.selectedReport = report
}
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_evograph, container, false) return inflater.inflate(R.layout.fragment_evograph, container, false)
@ -73,6 +72,35 @@ class GraphFragment : PokerAnalyticsFragment(), OnChartValueSelectedListener, Co
initUI() initUI()
} }
// OnChartValueSelectedListener
override fun onNothingSelected() {
// nothing to do
}
override fun onValueSelected(e: Entry?, h: Highlight?) {
e?.let { entry ->
val statEntry = when (entry.data) {
is ObjectIdentifier -> {
val identifier = entry.data as ObjectIdentifier
getRealm().where(identifier.clazz).equalTo("id", identifier.id).findAll().firstOrNull()
}
is StatEntry -> entry.data as StatEntry?
else -> null
}
statEntry?.let {
val formattedDate = it.entryTitle
val entryValue = it.formattedValue(this.stat, requireContext())
val totalStatValue = this.stat.format(e.y.toDouble(), currency = null, context = requireContext())
this.legendView.setItemData(this.stat, formattedDate, entryValue, totalStatValue)
}
}
}
/** /**
* Init UI * Init UI
*/ */
@ -103,6 +131,7 @@ class GraphFragment : PokerAnalyticsFragment(), OnChartValueSelectedListener, Co
this.chipGroup.addView(chip) this.chipGroup.addView(chip)
} }
this.chipGroup.isVisible = displayAggregationChoices
this.chipGroup.check(this.stat.aggregationTypes.first().ordinal) this.chipGroup.check(this.stat.aggregationTypes.first().ordinal)
this.chipGroup.setOnCheckedChangeListener(object : ChipGroupExtension.SingleSelectionOnCheckedListener() { this.chipGroup.setOnCheckedChangeListener(object : ChipGroupExtension.SingleSelectionOnCheckedListener() {
@ -196,35 +225,17 @@ class GraphFragment : PokerAnalyticsFragment(), OnChartValueSelectedListener, Co
} }
// OnChartValueSelectedListener /**
* Set data
override fun onNothingSelected() { */
// nothing to do fun setData(stat: Stat, group: ComputableGroup, report: Report, displayAggregationChoices: Boolean = true) {
} this.stat = stat
this.computableGroup = group
override fun onValueSelected(e: Entry?, h: Highlight?) {
e?.let { entry ->
val statEntry = when (entry.data) {
is ObjectIdentifier -> {
val identifier = entry.data as ObjectIdentifier
getRealm().where(identifier.clazz).equalTo("id", identifier.id).findAll().firstOrNull()
}
is StatEntry -> entry.data as StatEntry?
else -> null
}
statEntry?.let {
val formattedDate = it.entryTitle
val entryValue = it.formattedValue(this.stat, requireContext())
val totalStatValue = this.stat.format(e.y.toDouble(), currency = null, context = requireContext())
this.legendView.setItemData(this.stat, formattedDate, entryValue, totalStatValue)
}
} this.aggregationTypes = stat.aggregationTypes
this.reports[this.aggregationTypes.first()] = report
this.selectedReport = report
this.displayAggregationChoices = displayAggregationChoices
} }

@ -44,7 +44,7 @@ class MoreFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource,
// Life Cycle // Life Cycle
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_calendar, container, false) return inflater.inflate(R.layout.fragment_more, container, false)
} }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {

@ -7,13 +7,13 @@ import android.view.ViewGroup
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import kotlinx.android.synthetic.main.fragment_stats.* import kotlinx.android.synthetic.main.fragment_stats.*
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.ui.activity.ComparisonChartActivity
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate 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.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.ReportRow import net.pokeranalytics.android.ui.view.rowrepresentable.ReportRow
import timber.log.Timber
class ReportsFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate { class ReportsFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate {
@ -59,7 +59,13 @@ class ReportsFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSour
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) {
super.onRowSelected(position, row, fromAction) super.onRowSelected(position, row, fromAction)
ComparisonChartActivity.newInstance(requireContext()) Timber.d("row: $row")
when (row) {
ReportRow.DAY_OF_WEEKS -> {
//TODO: Open ComparisonChartActivity with correct data
//TODO: Calcul report before or after
}
}
} }
@ -87,4 +93,5 @@ class ReportsFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSour
} }
} }
} }

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

@ -1,31 +1,29 @@
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 androidx.core.content.res.ResourcesCompat
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.ui.extensions.px import net.pokeranalytics.android.ui.extensions.px
fun BarLineChartBase<*>.setStyle(small: Boolean, context: Context) { fun BarLineChartBase<*>.setStyle(small: Boolean, context: Context) {
// X Axis // X Axis
this.xAxis.axisLineColor = ContextCompat.getColor(context, R.color.chart_default) this.xAxis.axisLineColor = ContextCompat.getColor(context, R.color.chart_default)
this.xAxis.enableGridDashedLine(3.0f.px, 5.0f.px, 1.0f.px) 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 this.xAxis.position = XAxis.XAxisPosition.BOTTOM
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
this.xAxis.setDrawLabels(true) this.xAxis.setDrawLabels(true)
this.xAxis.setDrawGridLines(true) this.xAxis.setDrawGridLines(true)
this.xAxis.granularity = 1.0f
this.xAxis.isGranularityEnabled = true this.xAxis.isGranularityEnabled = true
this.xAxis.granularity = 1.0f
this.xAxis.textColor = ContextCompat.getColor(context, R.color.chart_default)
this.xAxis.typeface = ResourcesCompat.getFont(context, R.font.roboto_medium)
this.xAxis.labelCount = 4
this.xAxis.textSize = 12f
this.xAxis.isEnabled = true this.xAxis.isEnabled = true
// Y Axis // Y Axis
@ -41,13 +39,15 @@ fun BarLineChartBase<*>.setStyle(small: Boolean, context: Context) {
this.axisLeft.granularity = 1.0f this.axisLeft.granularity = 1.0f
this.axisLeft.textColor = ContextCompat.getColor(context, R.color.chart_default) this.axisLeft.textColor = ContextCompat.getColor(context, R.color.chart_default)
this.axisLeft.typeface = Typeface.DEFAULT this.axisLeft.typeface = ResourcesCompat.getFont(context, R.font.roboto_medium)
this.axisLeft.labelCount = this.axisLeft.labelCount = if (small) 1 else 7 // @todo not great if interval is [0..2] for number of records as we get decimals
if (small) 1 else 7 // @todo not great if interval is [0..2] for number of records as we get decimals this.axisLeft.textSize = 12f
this.axisRight.isEnabled = false this.axisRight.isEnabled = false
this.legend.isEnabled = false this.legend.isEnabled = false
this.description.isEnabled = false
this.data?.isHighlightEnabled = !small
// @todo // @todo
// if timeYAxis { // if timeYAxis {

@ -329,6 +329,7 @@ enum class RowViewType(private var layoutRes: Int) {
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)
dataSet.setDrawValues(false)
val lineData = LineData(listOf(dataSet)) val lineData = LineData(listOf(dataSet))
val chartView = when (row.stat.graphType) { val chartView = when (row.stat.graphType) {
@ -348,7 +349,7 @@ enum class RowViewType(private var layoutRes: Int) {
it.addView(chartView) it.addView(chartView)
} }
chartView.setStyle(false, context) chartView.setStyle(true, context)
chartView.setTouchEnabled(false) chartView.setTouchEnabled(false)
chartView.highlightValue((entries.size - 1).toFloat(), 0) chartView.highlightValue((entries.size - 1).toFloat(), 0)
} }

@ -83,6 +83,22 @@
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>
<androidx.core.widget.ContentLoadingProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyle"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:alpha="0"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/appBar" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView" android:id="@+id/recyclerView"
android:layout_width="0dp" android:layout_width="0dp"

@ -17,28 +17,28 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center"
android:padding="8dp" android:orientation="horizontal"
android:orientation="horizontal"> android:padding="8dp">
<com.google.android.material.chip.ChipGroup <com.google.android.material.chip.ChipGroup
android:id="@+id/filtersTime" android:id="@+id/filtersTime"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:singleSelection="false" app:chipSpacing="8dp"
app:chipSpacing="8dp"> app:singleSelection="false">
<com.google.android.material.chip.Chip <com.google.android.material.chip.Chip
android:id="@+id/filterTimeMonth" android:id="@+id/filterTimeMonth"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:checked="true" android:checked="true"
android:text="@string/month"/> android:text="@string/month" />
<com.google.android.material.chip.Chip <com.google.android.material.chip.Chip
android:id="@+id/filterTimeYear" android:id="@+id/filterTimeYear"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/year"/> android:text="@string/year" />
</com.google.android.material.chip.ChipGroup> </com.google.android.material.chip.ChipGroup>
@ -51,27 +51,27 @@
android:id="@+id/filtersSession" android:id="@+id/filtersSession"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:singleSelection="false" app:chipSpacing="6dp"
app:chipSpacing="6dp"> app:singleSelection="false">
<com.google.android.material.chip.Chip <com.google.android.material.chip.Chip
android:id="@+id/filterSessionAll" android:id="@+id/filterSessionAll"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:checked="true" android:checked="true"
android:text="@string/all"/> android:text="@string/all" />
<com.google.android.material.chip.Chip <com.google.android.material.chip.Chip
android:id="@+id/filterSessionCash" android:id="@+id/filterSessionCash"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/cash_game"/> android:text="@string/cash_game" />
<com.google.android.material.chip.Chip <com.google.android.material.chip.Chip
android:id="@+id/filterSessionTournament" android:id="@+id/filterSessionTournament"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/tournament"/> android:text="@string/tournament" />
</com.google.android.material.chip.ChipGroup> </com.google.android.material.chip.ChipGroup>
@ -87,6 +87,22 @@
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>
<androidx.core.widget.ContentLoadingProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyle"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:alpha="0"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/appBar" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView" android:id="@+id/recyclerView"
android:layout_width="0dp" android:layout_width="0dp"

@ -88,6 +88,22 @@
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>
<androidx.core.widget.ContentLoadingProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyle"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:alpha="0"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/appBar" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView" android:id="@+id/recyclerView"
android:layout_width="0dp" android:layout_width="0dp"

@ -32,31 +32,49 @@
android:id="@+id/tabAll" android:id="@+id/tabAll"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/all"/> android:text="@string/all" />
<com.google.android.material.tabs.TabItem <com.google.android.material.tabs.TabItem
android:id="@+id/tabCash" android:id="@+id/tabCash"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/cash_game"/> android:text="@string/cash_game" />
<com.google.android.material.tabs.TabItem <com.google.android.material.tabs.TabItem
android:id="@+id/tabTournament" android:id="@+id/tabTournament"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/tournament"/> android:text="@string/tournament" />
</com.google.android.material.tabs.TabLayout> </com.google.android.material.tabs.TabLayout>
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>
<androidx.core.widget.ContentLoadingProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyle"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:alpha="0"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/recyclerView"
tools:alpha="1"
tools:visibility="visible" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView" android:id="@+id/recyclerView"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
app:layout_constraintTop_toBottomOf="@+id/appBar" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent" /> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/appBar" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

@ -2,17 +2,18 @@
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content">
android:padding="8dp">
<FrameLayout <FrameLayout
android:id="@+id/chartContainer" android:id="@+id/chartContainer"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
app:layout_constraintDimensionRatio="2:1" android:foreground="?selectableItemBackground"
android:paddingTop="8dp"
android:paddingBottom="8dp"
app:layout_constraintDimensionRatio="5:2"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent" />
android:foreground="?selectableItemBackground" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
Loading…
Cancel
Save