Update filter for report creation

dev
Aurelien Hubert 7 years ago
parent 690379bace
commit 9b77b62bf5
  1. 11
      app/src/main/java/net/pokeranalytics/android/ui/activity/FiltersActivity.kt
  2. 8
      app/src/main/java/net/pokeranalytics/android/ui/activity/ReportCreationActivity.kt
  3. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt
  4. 15
      app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersFragment.kt
  5. 80
      app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportCreationFragment.kt
  6. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt

@ -15,6 +15,7 @@ class FiltersActivity : PokerAnalyticsActivity() {
enum class IntentKey(val keyName: String) { enum class IntentKey(val keyName: String) {
FILTER_ID("FILTER_ID"), FILTER_ID("FILTER_ID"),
FILTERABLE_TYPE("FILTERABLE_TYPE"), FILTERABLE_TYPE("FILTERABLE_TYPE"),
HIDE_MOST_USED_FILTERS("HIDE_MOST_USED_FILTERS"),
; ;
} }
@ -24,13 +25,15 @@ class FiltersActivity : PokerAnalyticsActivity() {
/** /**
* Create a new instance for result * Create a new instance for result
*/ */
fun newInstanceForResult(fragment: Fragment, filterId: String? = null, currentFilterable: FilterableType) { fun newInstanceForResult(fragment: Fragment, filterId: String? = null, currentFilterable: FilterableType, hideMostUsedFilters: Boolean = false) {
fragment.startActivityForResult(getIntent(fragment.requireContext(), filterId, currentFilterable), FilterActivityRequestCode.SELECT_FILTER.ordinal) val intent = getIntent(fragment.requireContext(), filterId, currentFilterable, hideMostUsedFilters)
fragment.startActivityForResult(intent, FilterActivityRequestCode.CREATE_FILTER.ordinal)
} }
private fun getIntent(context:Context, filterId:String?, currentFilterable: FilterableType) : Intent { private fun getIntent(context: Context, filterId: String?, currentFilterable: FilterableType, hideMostUsedFilters: Boolean = false): Intent {
val intent = Intent(context, FiltersActivity::class.java) val intent = Intent(context, FiltersActivity::class.java)
intent.putExtra(IntentKey.FILTERABLE_TYPE.keyName, currentFilterable.ordinal) intent.putExtra(IntentKey.FILTERABLE_TYPE.keyName, currentFilterable.ordinal)
intent.putExtra(IntentKey.HIDE_MOST_USED_FILTERS.keyName, hideMostUsedFilters)
filterId?.let { filterId?.let {
intent.putExtra(IntentKey.FILTER_ID.keyName, it) intent.putExtra(IntentKey.FILTER_ID.keyName, it)
} }
@ -57,12 +60,14 @@ class FiltersActivity : PokerAnalyticsActivity() {
val fragmentTransaction = fragmentManager.beginTransaction() val fragmentTransaction = fragmentManager.beginTransaction()
val filterId = intent.getStringExtra(IntentKey.FILTER_ID.keyName) val filterId = intent.getStringExtra(IntentKey.FILTER_ID.keyName)
val ordinal = intent.getIntExtra(IntentKey.FILTERABLE_TYPE.keyName, 0) val ordinal = intent.getIntExtra(IntentKey.FILTERABLE_TYPE.keyName, 0)
val hideMostUsedFilters = intent.getBooleanExtra(IntentKey.HIDE_MOST_USED_FILTERS.keyName, false)
val filterableType = FilterableType.values()[ordinal] val filterableType = FilterableType.values()[ordinal]
fragment = FiltersFragment() fragment = FiltersFragment()
fragmentTransaction.add(R.id.container, fragment) fragmentTransaction.add(R.id.container, fragment)
fragmentTransaction.commit() fragmentTransaction.commit()
fragment.setData(filterId, filterableType) fragment.setData(filterId, filterableType)
fragment.updateMostUsedFiltersVisibility(!hideMostUsedFilters)
} }

@ -18,21 +18,15 @@ class ReportCreationActivity : PokerAnalyticsActivity() {
var options: Calculator.Options? = null var options: Calculator.Options? = null
// fun newInstance(context: Context) {
// val intent = Intent(context, ReportCreationActivity::class.java)
// context.startActivity(intent)
// }
fun newInstanceForResult(fragment: Fragment, context: Context) { fun newInstanceForResult(fragment: Fragment, context: Context) {
val intent = Intent(context, ReportCreationActivity::class.java) val intent = Intent(context, ReportCreationActivity::class.java)
fragment.startActivityForResult(intent, RequestCode.NEW_REPORT.ordinal) fragment.startActivityForResult(intent, RequestCode.NEW_REPORT.ordinal)
} }
} }
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(R.layout.activity_reportcreation) setContentView(R.layout.activity_report_creation)
} }
} }

@ -84,7 +84,7 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate {
if (data.getBooleanExtra(DataListActivity.IntentKey.ITEM_DELETED.keyName, false)) { if (data.getBooleanExtra(DataListActivity.IntentKey.ITEM_DELETED.keyName, false)) {
deleteSelectedTransaction() deleteSelectedTransaction()
} }
} else if (requestCode == FilterActivityRequestCode.SELECT_FILTER.ordinal && resultCode == RESULT_OK) { } else if (requestCode == FilterActivityRequestCode.CREATE_FILTER.ordinal && resultCode == RESULT_OK) {
data?.let { data?.let {
this.saveFilter(this.requireContext(), it.getStringExtra(FiltersActivity.IntentKey.FILTER_ID.keyName)) this.saveFilter(this.requireContext(), it.getStringExtra(FiltersActivity.IntentKey.FILTER_ID.keyName))
} }

@ -4,6 +4,7 @@ import android.app.Activity.RESULT_OK
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.view.* import android.view.*
import androidx.core.view.isVisible
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.google.android.material.chip.Chip import com.google.android.material.chip.Chip
import kotlinx.android.synthetic.main.fragment_editable_data.appBar import kotlinx.android.synthetic.main.fragment_editable_data.appBar
@ -27,6 +28,7 @@ import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.rowrepresentable.FilterCategoryRow import net.pokeranalytics.android.ui.view.rowrepresentable.FilterCategoryRow
import net.pokeranalytics.android.util.Preferences import net.pokeranalytics.android.util.Preferences
import net.pokeranalytics.android.util.extensions.sorted import net.pokeranalytics.android.util.extensions.sorted
import timber.log.Timber
open class FiltersFragment : RealmFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate { open class FiltersFragment : RealmFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate {
@ -50,7 +52,7 @@ open class FiltersFragment : RealmFragment(), StaticRowRepresentableDataSource,
private var selectedRow: RowRepresentable? = null private var selectedRow: RowRepresentable? = null
private var isUpdating = false private var isUpdating = false
private var isSaved = false private var showMostUsedFiltersLayout = true
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
super.onCreateView(inflater, container, savedInstanceState) super.onCreateView(inflater, container, savedInstanceState)
@ -158,6 +160,8 @@ open class FiltersFragment : RealmFragment(), StaticRowRepresentableDataSource,
moreFilters.setOnClickListener { moreFilters.setOnClickListener {
DataListActivity.newSelectInstance(this, LiveData.FILTER.ordinal, false) DataListActivity.newSelectInstance(this, LiveData.FILTER.ordinal, false)
} }
mostUsedFiltersLayout.isVisible = showMostUsedFiltersLayout
} }
/** /**
@ -292,4 +296,13 @@ open class FiltersFragment : RealmFragment(), StaticRowRepresentableDataSource,
this.filterableType = filterableType this.filterableType = filterableType
} }
/**
* Update the most used filters visibility
*/
fun updateMostUsedFiltersVisibility(visible: Boolean) {
Timber.d("updateMostUsedFiltersVisibility: $visible")
showMostUsedFiltersLayout = visible
mostUsedFiltersLayout?.isVisible = visible
}
} }

@ -3,9 +3,7 @@ package net.pokeranalytics.android.ui.fragment
import android.app.Activity import android.app.Activity
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.view.LayoutInflater import android.view.*
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import io.realm.Realm import io.realm.Realm
import kotlinx.android.synthetic.main.fragment_report_creation.* import kotlinx.android.synthetic.main.fragment_report_creation.*
@ -14,11 +12,14 @@ import net.pokeranalytics.android.calculus.Calculator
import net.pokeranalytics.android.calculus.Stat import net.pokeranalytics.android.calculus.Stat
import net.pokeranalytics.android.model.Criteria import net.pokeranalytics.android.model.Criteria
import net.pokeranalytics.android.model.realm.Filter import net.pokeranalytics.android.model.realm.Filter
import net.pokeranalytics.android.ui.activity.FiltersActivity
import net.pokeranalytics.android.ui.activity.ReportCreationActivity import net.pokeranalytics.android.ui.activity.ReportCreationActivity
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
import net.pokeranalytics.android.ui.fragment.components.RealmFragment import net.pokeranalytics.android.ui.fragment.components.RealmFragment
import net.pokeranalytics.android.ui.interfaces.FilterActivityRequestCode
import net.pokeranalytics.android.ui.interfaces.FilterableType
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.ui.view.RowViewType
import net.pokeranalytics.android.ui.view.rowrepresentable.CustomizableRowRepresentable import net.pokeranalytics.android.ui.view.rowrepresentable.CustomizableRowRepresentable
@ -29,6 +30,7 @@ class ReportCreationFragment : RealmFragment(), RowRepresentableDataSource, RowR
private var assistant = Assistant() private var assistant = Assistant()
private var currentRows: List<RowRepresentable> = listOf() private var currentRows: List<RowRepresentable> = listOf()
private var reportCreationMenu: Menu? = null
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
super.onCreateView(inflater, container, savedInstanceState) super.onCreateView(inflater, container, savedInstanceState)
@ -37,6 +39,42 @@ class ReportCreationFragment : RealmFragment(), RowRepresentableDataSource, RowR
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
this.initUI()
this.updateUIWithCurrentStep()
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == FilterActivityRequestCode.CREATE_FILTER.ordinal && resultCode == Activity.RESULT_OK) {
this.updateUIWithCurrentStep()
}
}
override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
super.onCreateOptionsMenu(menu, inflater)
menu?.clear()
inflater?.inflate(R.menu.toolbar_report_creation, menu)
menu?.findItem(R.id.add)?.isVisible = false
reportCreationMenu = menu
}
override fun onOptionsItemSelected(item: MenuItem?): Boolean {
when (item?.itemId) {
R.id.add -> {
if (this.assistant.step == Assistant.Step.FILTER) {
FiltersActivity.newInstanceForResult(this, currentFilterable = FilterableType.SESSION, hideMostUsedFilters = true)
}
}
}
return super.onOptionsItemSelected(item)
}
/**
* Init UI
*/
private fun initUI() {
setDisplayHomeAsUpEnabled(true)
this.optionsAdapter = RowRepresentableAdapter(this, this) this.optionsAdapter = RowRepresentableAdapter(this, this)
@ -47,8 +85,6 @@ class ReportCreationFragment : RealmFragment(), RowRepresentableDataSource, RowR
adapter = optionsAdapter adapter = optionsAdapter
} }
this.updateUIWithCurrentStep()
this.next.setOnClickListener { this.next.setOnClickListener {
if (assistant.nextEnabled) { if (assistant.nextEnabled) {
this.assistant.nextStep() this.assistant.nextStep()
@ -68,23 +104,17 @@ class ReportCreationFragment : RealmFragment(), RowRepresentableDataSource, RowR
} }
} }
} }
}
private fun finishActivityWithOptions(options: Calculator.Options) {
ReportCreationActivity.options = options // temp object
val intent = Intent()
activity?.setResult(Activity.RESULT_OK, intent)
activity?.finish()
} }
/**
* Update UI when changing the current step
*/
private fun updateUIWithCurrentStep() { private fun updateUIWithCurrentStep() {
this.next.visibility = if (this.assistant.nextButtonShouldAppear) View.VISIBLE else View.GONE this.next.visibility = if (this.assistant.nextButtonShouldAppear) View.VISIBLE else View.GONE
this.next.text = requireContext().getString(this.assistant.nextButtonTitleResId) this.next.text = requireContext().getString(this.assistant.nextButtonTitleResId)
this.next.isEnabled = this.assistant.nextEnabled this.next.isEnabled = this.assistant.nextEnabled
this.reportCreationMenu?.findItem(R.id.add)?.isVisible = this.assistant.addButtonShouldAppear
val rows = mutableListOf<RowRepresentable>() val rows = mutableListOf<RowRepresentable>()
@ -99,6 +129,17 @@ class ReportCreationFragment : RealmFragment(), RowRepresentableDataSource, RowR
} }
/**
* Finish activity
*/
private fun finishActivityWithOptions(options: Calculator.Options) {
ReportCreationActivity.options = options // temp object
val intent = Intent()
activity?.setResult(Activity.RESULT_OK, intent)
activity?.finish()
}
// RowRepresentableDataSource // RowRepresentableDataSource
override fun adapterRows(): List<RowRepresentable>? { override fun adapterRows(): List<RowRepresentable>? {
@ -261,6 +302,7 @@ class Assistant {
} }
Step.COMPARATOR -> Criteria.all Step.COMPARATOR -> Criteria.all
Step.FILTER -> { Step.FILTER -> {
val data = ArrayList<RowRepresentable>()
val realm = Realm.getDefaultInstance() val realm = Realm.getDefaultInstance()
val filters = Filter.sortedByUsage(realm) val filters = Filter.sortedByUsage(realm)
realm.close() realm.close()
@ -296,4 +338,12 @@ class Assistant {
} }
} }
val addButtonShouldAppear: Boolean
get() {
return when (this.step) {
Step.FILTER -> true
else -> false
}
}
} }

@ -90,7 +90,7 @@ class StatisticsFragment : FilterableFragment() {
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data) super.onActivityResult(requestCode, resultCode, data)
if (requestCode == FilterActivityRequestCode.SELECT_FILTER.ordinal && resultCode == Activity.RESULT_OK) { if (requestCode == FilterActivityRequestCode.CREATE_FILTER.ordinal && resultCode == Activity.RESULT_OK) {
data?.let { data?.let {
this.saveFilter(this.requireContext(), it.getStringExtra(FiltersActivity.IntentKey.FILTER_ID.keyName)) this.saveFilter(this.requireContext(), it.getStringExtra(FiltersActivity.IntentKey.FILTER_ID.keyName))
} }

Loading…
Cancel
Save