diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/CalendarDetailsActivity.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/CalendarDetailsActivity.kt index 53563031..6a8e5654 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/activity/CalendarDetailsActivity.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/CalendarDetailsActivity.kt @@ -4,34 +4,26 @@ import android.content.Context import android.content.Intent import android.os.Bundle import net.pokeranalytics.android.R -import net.pokeranalytics.android.calculus.Report -import net.pokeranalytics.android.calculus.Stat +import net.pokeranalytics.android.calculus.ComputedResults +import net.pokeranalytics.android.model.filter.QueryCondition import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity -import net.pokeranalytics.android.ui.fragment.GraphParameters class CalendarDetailsActivity : PokerAnalyticsActivity() { - private enum class IntentKey(val keyName: String) { - STAT("STAT"), - ENTRIES("ENTRIES"), - } - companion object { - // Unparcel fails when setting a custom Parcelable object on Entry so we use a static reference to passe objects - var parameters: GraphParameters? = null + var computedResults: ComputedResults? = null + var sessionTypeCondition: QueryCondition? = null + var title: String? = null /** * Default constructor */ - fun newInstance(context: Context) { - val intent = Intent(context, CalendarDetailsActivity::class.java) - context.startActivity(intent) - } - - fun newInstance(context: Context, stat: Stat, report: Report) { - parameters = GraphParameters(stat, report) + fun newInstance(context: Context, computedResults: ComputedResults, sessionTypeCondition: QueryCondition?, title: String?) { + this.computedResults = computedResults + this.sessionTypeCondition = sessionTypeCondition + this.title = title val intent = Intent(context, CalendarDetailsActivity::class.java) context.startActivity(intent) } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarDetailsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarDetailsFragment.kt index 04ae0170..27b1d366 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarDetailsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarDetailsFragment.kt @@ -7,10 +7,14 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import com.github.mikephil.charting.data.Entry +import com.google.android.material.tabs.TabLayout import kotlinx.android.synthetic.main.fragment_calendar_details.* import net.pokeranalytics.android.R import net.pokeranalytics.android.calculus.Stat +import net.pokeranalytics.android.model.filter.QueryCondition +import net.pokeranalytics.android.ui.activity.CalendarDetailsActivity import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity +import net.pokeranalytics.android.ui.extensions.toast import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment class CalendarDetailsFragment : PokerAnalyticsFragment() { @@ -50,6 +54,37 @@ class CalendarDetailsFragment : PokerAnalyticsFragment() { parentActivity.supportActionBar?.setDisplayHomeAsUpEnabled(true) setHasOptionsMenu(true) + toolbar.title = CalendarDetailsActivity.title + + tabs.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { + override fun onTabSelected(tab: TabLayout.Tab) { + toast("Tab: ${tab.position}") + + + } + + override fun onTabUnselected(tab: TabLayout.Tab) { + } + + override fun onTabReselected(tab: TabLayout.Tab) { + } + }) + + CalendarDetailsActivity.sessionTypeCondition?.let { + when(it) { + QueryCondition.CASH -> tabs.getTabAt(1)?.select() + QueryCondition.TOURNAMENT -> tabs.getTabAt(2)?.select() + else -> tabs.getTabAt(0)?.select() + } + } + + CalendarDetailsActivity.computedResults?.let { computedResults -> + + //computedResults.group.conditions + + + } + /* toolbar.title = stat.localizedTitle(requireContext()) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarFragment.kt index 48ddeb9a..07174f6a 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarFragment.kt @@ -18,6 +18,7 @@ import net.pokeranalytics.android.calculus.ComputedResults import net.pokeranalytics.android.calculus.Stat import net.pokeranalytics.android.model.comparison.Comparator import net.pokeranalytics.android.model.comparison.combined +import net.pokeranalytics.android.model.filter.QueryCondition import net.pokeranalytics.android.ui.activity.CalendarDetailsActivity import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate @@ -27,10 +28,7 @@ import net.pokeranalytics.android.ui.view.CalendarTabs import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.ui.view.rowrepresentable.CustomizableRowRepresentable -import net.pokeranalytics.android.util.extensions.getDateMonth -import net.pokeranalytics.android.util.extensions.getDateYear -import net.pokeranalytics.android.util.extensions.startOfMonth -import net.pokeranalytics.android.util.extensions.startOfYear +import net.pokeranalytics.android.util.extensions.* import timber.log.Timber import java.util.* import kotlin.coroutines.CoroutineContext @@ -38,11 +36,7 @@ import kotlin.coroutines.CoroutineContext class CalendarFragment : SessionObserverFragment(), CoroutineScope, StaticRowRepresentableDataSource, RowRepresentableDelegate { - private enum class SessionType { - ALL, CASH, TOURNAMENT - } - - private enum class TimeFilter { + enum class TimeFilter { MONTH, YEAR } @@ -70,8 +64,8 @@ class CalendarFragment : SessionObserverFragment(), CoroutineScope, StaticRowRep private var sortedYearlyReports: SortedMap = HashMap().toSortedMap() private var datesForRows: HashMap = HashMap() - private var currentSessionType = SessionType.ALL - private var currentTimeFilter = TimeFilter.MONTH + private var sessionTypeCondition: QueryCondition? = null + private var currentTimeFilter: TimeFilter = TimeFilter.MONTH private var currentStat = Stat.NETRESULT // Life Cycle @@ -93,8 +87,21 @@ class CalendarFragment : SessionObserverFragment(), CoroutineScope, StaticRowRep } override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { - Timber.d("Open ${datesForRows[row]}") - CalendarDetailsActivity.newInstance(requireContext()) + + when (currentTimeFilter) { + TimeFilter.MONTH -> { + val date = datesForRows[row] + sortedMonthlyReports[datesForRows[row]]?.let { + CalendarDetailsActivity.newInstance(requireContext(), it, sessionTypeCondition, date?.getMonthAndYear()) + } + } + TimeFilter.YEAR -> { + val date = datesForRows[row] + sortedYearlyReports[datesForRows[row]]?.let { + CalendarDetailsActivity.newInstance(requireContext(), it, sessionTypeCondition, date?.getDateYear()) + } + } + } } override fun sessionsChanged() { @@ -145,31 +152,31 @@ class CalendarFragment : SessionObserverFragment(), CoroutineScope, StaticRowRep // Manage session type filter filterSessionAll.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { - currentSessionType = SessionType.ALL + sessionTypeCondition = null filterSessionCash.isChecked = false filterSessionTournament.isChecked = false launchStatComputation() - } else if (currentSessionType == SessionType.ALL) { + } else if (sessionTypeCondition == null) { filterSessionAll.isChecked = true } } filterSessionCash.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { - currentSessionType = SessionType.CASH + sessionTypeCondition = QueryCondition.CASH filterSessionAll.isChecked = false filterSessionTournament.isChecked = false launchStatComputation() - } else if (currentSessionType == SessionType.CASH) { + } else if (sessionTypeCondition == QueryCondition.CASH) { filterSessionCash.isChecked = true } } filterSessionTournament.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { - currentSessionType = SessionType.TOURNAMENT + sessionTypeCondition = QueryCondition.TOURNAMENT filterSessionAll.isChecked = false filterSessionCash.isChecked = false launchStatComputation() - } else if (currentSessionType == SessionType.TOURNAMENT) { + } else if (sessionTypeCondition == QueryCondition.TOURNAMENT) { filterSessionTournament.isChecked = true } } @@ -225,10 +232,10 @@ class CalendarFragment : SessionObserverFragment(), CoroutineScope, StaticRowRep // Compute data per YEAR and MONTH - val monthConditions = when (currentSessionType) { - SessionType.ALL -> listOf(Comparator.YEAR, Comparator.MONTH_OF_YEAR).combined() - SessionType.CASH -> listOf(Comparator.YEAR, Comparator.MONTH_OF_YEAR, Comparator.CASH).combined() - SessionType.TOURNAMENT -> listOf(Comparator.YEAR, Comparator.MONTH_OF_YEAR, Comparator.TOURNAMENT).combined() + val monthConditions = when (sessionTypeCondition) { + QueryCondition.CASH -> listOf(Comparator.YEAR, Comparator.MONTH_OF_YEAR, Comparator.CASH).combined() + QueryCondition.TOURNAMENT -> listOf(Comparator.YEAR, Comparator.MONTH_OF_YEAR, Comparator.TOURNAMENT).combined() + else -> listOf(Comparator.YEAR, Comparator.MONTH_OF_YEAR).combined() } monthConditions.forEach { conditions -> @@ -253,10 +260,10 @@ class CalendarFragment : SessionObserverFragment(), CoroutineScope, StaticRowRep calendar.time = Date().startOfYear() // Compute data per YEAR - val yearConditions = when (currentSessionType) { - SessionType.ALL -> listOf(Comparator.YEAR).combined() - SessionType.CASH -> listOf(Comparator.YEAR, Comparator.CASH).combined() - SessionType.TOURNAMENT -> listOf(Comparator.YEAR, Comparator.TOURNAMENT).combined() + val yearConditions = when (sessionTypeCondition) { + QueryCondition.CASH -> listOf(Comparator.YEAR, Comparator.CASH).combined() + QueryCondition.TOURNAMENT -> listOf(Comparator.YEAR, Comparator.TOURNAMENT).combined() + else -> listOf(Comparator.YEAR).combined() } yearConditions.forEach { conditions -> diff --git a/app/src/main/res/layout/fragment_calendar_details.xml b/app/src/main/res/layout/fragment_calendar_details.xml index 44e1e283..e40f2f7b 100644 --- a/app/src/main/res/layout/fragment_calendar_details.xml +++ b/app/src/main/res/layout/fragment_calendar_details.xml @@ -5,22 +5,58 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - + app:layout_constraintTop_toTopOf="parent"> + + + + + + + + - + + + + + + + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintBottom_toBottomOf="parent" />