|
|
|
@ -10,7 +10,7 @@ import kotlinx.android.synthetic.main.fragment_stats.* |
|
|
|
import kotlinx.coroutines.* |
|
|
|
import kotlinx.coroutines.* |
|
|
|
import net.pokeranalytics.android.R |
|
|
|
import net.pokeranalytics.android.R |
|
|
|
import net.pokeranalytics.android.calculus.* |
|
|
|
import net.pokeranalytics.android.calculus.* |
|
|
|
import net.pokeranalytics.android.model.StatRepresentable |
|
|
|
import net.pokeranalytics.android.ui.view.rowrepresentable.StatRow |
|
|
|
import net.pokeranalytics.android.model.filter.QueryCondition |
|
|
|
import net.pokeranalytics.android.model.filter.QueryCondition |
|
|
|
import net.pokeranalytics.android.ui.activity.StatisticDetailsActivity |
|
|
|
import net.pokeranalytics.android.ui.activity.StatisticDetailsActivity |
|
|
|
import net.pokeranalytics.android.ui.adapter.DisplayDescriptor |
|
|
|
import net.pokeranalytics.android.ui.adapter.DisplayDescriptor |
|
|
|
@ -36,88 +36,88 @@ class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSourc |
|
|
|
private var stringCashGame = "" |
|
|
|
private var stringCashGame = "" |
|
|
|
private var stringTournament = "" |
|
|
|
private var stringTournament = "" |
|
|
|
|
|
|
|
|
|
|
|
private lateinit var statsAdapter: RowRepresentableAdapter |
|
|
|
private lateinit var statsAdapter: RowRepresentableAdapter |
|
|
|
private var report: Report? = null |
|
|
|
private var report : Report? = null |
|
|
|
|
|
|
|
|
|
|
|
companion object { |
|
|
|
companion object { |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Create new instance |
|
|
|
* Create new instance |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
fun newInstance(): StatsFragment { |
|
|
|
fun newInstance(): StatsFragment { |
|
|
|
val fragment = StatsFragment() |
|
|
|
val fragment = StatsFragment() |
|
|
|
val bundle = Bundle() |
|
|
|
val bundle = Bundle() |
|
|
|
fragment.arguments = bundle |
|
|
|
fragment.arguments = bundle |
|
|
|
return fragment |
|
|
|
return fragment |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 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_stats, container, false) |
|
|
|
return inflater.inflate(R.layout.fragment_stats, container, false) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { |
|
|
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { |
|
|
|
super.onViewCreated(view, savedInstanceState) |
|
|
|
super.onViewCreated(view, savedInstanceState) |
|
|
|
initData() |
|
|
|
initData() |
|
|
|
initUI() |
|
|
|
initUI() |
|
|
|
launchStatComputation() |
|
|
|
launchStatComputation() |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Row Representable DS |
|
|
|
// Row Representable DS |
|
|
|
|
|
|
|
|
|
|
|
override fun adapterRows(): List<RowRepresentable>? { |
|
|
|
override fun adapterRows(): List<RowRepresentable>? { |
|
|
|
return this.rowRepresentables |
|
|
|
return this.rowRepresentables |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
override fun contentDescriptorForRow(row: RowRepresentable): DisplayDescriptor? { |
|
|
|
override fun contentDescriptorForRow(row: RowRepresentable): DisplayDescriptor? { |
|
|
|
val dc = DisplayDescriptor() |
|
|
|
val dc = DisplayDescriptor() |
|
|
|
dc.textFormat = TextFormat(NULL_TEXT) |
|
|
|
dc.textFormat = TextFormat(NULL_TEXT) |
|
|
|
if (row is StatRepresentable) { |
|
|
|
if (row is StatRow) { |
|
|
|
context?.let { context -> |
|
|
|
context?.let { context -> |
|
|
|
row.computedStat?.let { |
|
|
|
row.computedStat?.let { |
|
|
|
dc.textFormat = it.format(context) |
|
|
|
dc.textFormat = it.format(context) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return dc |
|
|
|
return dc |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
override fun statFormatForRow(row: RowRepresentable): TextFormat { |
|
|
|
override fun statFormatForRow(row: RowRepresentable): TextFormat { |
|
|
|
if (row is StatRepresentable) { |
|
|
|
if (row is StatRow) { |
|
|
|
context?.let { context -> |
|
|
|
context?.let { context -> |
|
|
|
row.computedStat?.let { return it.format(context) } |
|
|
|
row.computedStat?.let { return it.format(context) } |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return TextFormat(NULL_TEXT) |
|
|
|
return TextFormat(NULL_TEXT) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
override fun onResume() { |
|
|
|
override fun onResume() { |
|
|
|
super.onResume() |
|
|
|
super.onResume() |
|
|
|
statsAdapter.notifyDataSetChanged() |
|
|
|
statsAdapter.notifyDataSetChanged() |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Override |
|
|
|
// Override |
|
|
|
|
|
|
|
|
|
|
|
override fun sessionsChanged() { |
|
|
|
override fun sessionsChanged() { |
|
|
|
this.launchStatComputation() |
|
|
|
this.launchStatComputation() |
|
|
|
this.statsAdapter.notifyDataSetChanged() |
|
|
|
this.statsAdapter.notifyDataSetChanged() |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Business |
|
|
|
// Business |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Init data |
|
|
|
* Init data |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
private fun initData() { |
|
|
|
private fun initData() { |
|
|
|
|
|
|
|
|
|
|
|
this.stringAll = getString(R.string.all) |
|
|
|
this.stringAll = getString(R.string.all) |
|
|
|
this.stringCashGame = getString(R.string.cash_game) |
|
|
|
this.stringCashGame = getString(R.string.cash_game) |
|
|
|
this.stringTournament = getString(R.string.tournament) |
|
|
|
this.stringTournament = getString(R.string.tournament) |
|
|
|
|
|
|
|
|
|
|
|
this.statsAdapter = RowRepresentableAdapter(this, this) |
|
|
|
this.statsAdapter = RowRepresentableAdapter(this, this) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Init UI |
|
|
|
* Init UI |
|
|
|
@ -207,12 +207,12 @@ class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSourc |
|
|
|
|
|
|
|
|
|
|
|
val rows: ArrayList<RowRepresentable> = ArrayList() |
|
|
|
val rows: ArrayList<RowRepresentable> = ArrayList() |
|
|
|
|
|
|
|
|
|
|
|
report.results.forEach { result -> |
|
|
|
report.results.forEach { result -> |
|
|
|
rows.add(CustomizableRowRepresentable(title = result.group.name)) |
|
|
|
rows.add(CustomizableRowRepresentable(title = result.group.name)) |
|
|
|
result.group.stats?.forEach { stat -> |
|
|
|
result.group.stats?.forEach { stat -> |
|
|
|
rows.add(StatRepresentable(stat, result.computedStat(stat), result.group.name)) |
|
|
|
rows.add(StatRow(stat, result.computedStat(stat), result.group.name)) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return rows |
|
|
|
return rows |
|
|
|
} |
|
|
|
} |
|
|
|
@ -221,7 +221,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 && row.stat.hasEvolutionGraph) { |
|
|
|
if (row is StatRow && row.stat.hasEvolutionGraph) { |
|
|
|
|
|
|
|
|
|
|
|
// filter groups |
|
|
|
// filter groups |
|
|
|
val groupResults = this.report?.results?.filter { |
|
|
|
val groupResults = this.report?.results?.filter { |
|
|
|
|