Archived
Filtering fixed, but it still doesn't quite work as I wanted it to. e.g. selecting 'pork' and 'vegan' shows no elements, because of course nothing is both vegan and contains pork, but I wanted it to show options that are either or. Should leave it the way it is?
This commit is contained in:
@@ -32,6 +32,10 @@ class CanteenFragment : Fragment() {
|
|||||||
private lateinit var viewPagerAdapter: CanteenOfferPageAdapter
|
private lateinit var viewPagerAdapter: CanteenOfferPageAdapter
|
||||||
private val viewModel: CanteenViewModel by viewModels()
|
private val viewModel: CanteenViewModel by viewModels()
|
||||||
|
|
||||||
|
|
||||||
|
private var elements: List<CanteenOffer> = listOf()
|
||||||
|
private var dateSize = 0
|
||||||
|
|
||||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
|
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
|
||||||
_binding = FragmentCanteenBinding.inflate(inflater, container, false)
|
_binding = FragmentCanteenBinding.inflate(inflater, container, false)
|
||||||
return binding.root
|
return binding.root
|
||||||
@@ -77,12 +81,16 @@ class CanteenFragment : Fragment() {
|
|||||||
|
|
||||||
liveData = viewModel.allOffers
|
liveData = viewModel.allOffers
|
||||||
liveData.observe(viewLifecycleOwner) { offers ->
|
liveData.observe(viewLifecycleOwner) { offers ->
|
||||||
|
elements = offers
|
||||||
|
|
||||||
val groupedElements = offers.groupElements().distinct()
|
val groupedElements = offers.groupElements().distinct()
|
||||||
|
|
||||||
dates = groupedElements.map { it.date }.distinct()
|
dates = groupedElements.map { it.date }.distinct()
|
||||||
createTabLayoutMediator()
|
createTabLayoutMediator()
|
||||||
|
|
||||||
|
// this.groupedElements = groupedElements
|
||||||
|
this.dateSize = dates.size
|
||||||
|
|
||||||
viewPagerAdapter.setNewItems(groupedElements, dates.size)
|
viewPagerAdapter.setNewItems(groupedElements, dates.size)
|
||||||
|
|
||||||
// TODO this must be changed. if an exception is raised, then this will not fire
|
// TODO this must be changed. if an exception is raised, then this will not fire
|
||||||
@@ -113,7 +121,8 @@ class CanteenFragment : Fragment() {
|
|||||||
|
|
||||||
private fun setPreference(pref: DietaryPreferences, newValue: Boolean) {
|
private fun setPreference(pref: DietaryPreferences, newValue: Boolean) {
|
||||||
viewModel.setPreference(pref, newValue)
|
viewModel.setPreference(pref, newValue)
|
||||||
viewPagerAdapter.refreshView(getPrefRegex())
|
// viewPagerAdapter.refreshView(getPrefRegex())
|
||||||
|
viewPagerAdapter.setNewItems(elements.groupElements().distinct(), dateSize)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getPreference(pref: DietaryPreferences): Boolean =
|
private fun getPreference(pref: DietaryPreferences): Boolean =
|
||||||
@@ -137,6 +146,8 @@ class CanteenFragment : Fragment() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Log.d("eek!6", "preference: $prefsRegex, list: $filteredForPreferences")
|
||||||
|
|
||||||
// val a = filteredForPreferences.map {
|
// val a = filteredForPreferences.map {
|
||||||
// CanteenOfferGroupElement(
|
// CanteenOfferGroupElement(
|
||||||
// it.title,
|
// it.title,
|
||||||
|
|||||||
@@ -61,9 +61,7 @@
|
|||||||
android:id="@+id/chip_pref_fish"
|
android:id="@+id/chip_pref_fish"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/pref_fish"
|
android:text="@string/pref_fish"/>
|
||||||
app:chipIcon="@drawable/cross"
|
|
||||||
app:checkedIcon="@drawable/flatware"/>
|
|
||||||
|
|
||||||
<com.google.android.material.chip.Chip
|
<com.google.android.material.chip.Chip
|
||||||
style="@style/Widget.Material3.Chip.Filter"
|
style="@style/Widget.Material3.Chip.Filter"
|
||||||
|
|||||||
Reference in New Issue
Block a user