From b6b2ba62aaf4a5b56b0a89639a785ab1a06cf0b4 Mon Sep 17 00:00:00 2001 From: TAMARA JERINIC Date: Tue, 13 Dec 2022 14:41:52 +0100 Subject: Izmenjena funkcija za filtritanje i sortiranje na back-u i front-u. Izmenjeni dijalozi za filter i sort. Dodate poruke za validaciju. --- Backend/Api/Api/Controllers/PostController.cs | 4 +- Backend/Api/Api/Interfaces/IPostService.cs | 2 +- Backend/Api/Api/Models/Post.cs | 4 +- Backend/Api/Api/Services/PostService.cs | 29 ++- .../brzodolokacije/Fragments/FragmentShowPosts.kt | 254 +++++++++++---------- .../brzodolokacije/Interfaces/IBackendApi.kt | 9 +- .../java/com/example/brzodolokacije/Models/Post.kt | 12 +- .../brzodolokacije/Services/RetrofitHelper.kt | 4 +- .../paging/SearchPostsPagingSource.kt | 5 +- .../src/main/res/layout/bottom_sheet_filter.xml | 164 ++++++++----- .../app/src/main/res/layout/bottom_sheet_sort.xml | 9 - 11 files changed, 299 insertions(+), 197 deletions(-) diff --git a/Backend/Api/Api/Controllers/PostController.cs b/Backend/Api/Api/Controllers/PostController.cs index c4156f0..97646c2 100644 --- a/Backend/Api/Api/Controllers/PostController.cs +++ b/Backend/Api/Api/Controllers/PostController.cs @@ -140,9 +140,9 @@ namespace Api.Controllers } [HttpGet("locations/{id}/posts")] [Authorize(Roles = "User")] - public async Task>> searchPosts(string id,int page=0,int sorttype=1,int filterdate=1) + public async Task>> searchPosts(string id,bool filter,int page=0,int sorttype=1,int filterdate=1,int ratingFrom=-1, int ratingTo=-1,int viewsFrom=-1,int viewsTo=-1) { - var res = await _postService.SearchPosts(id,page,sorttype,filterdate); + var res = await _postService.SearchPosts(id,filter,page,sorttype,filterdate,ratingFrom,ratingTo,viewsFrom,viewsTo); if (res != null) { return Ok(res); diff --git a/Backend/Api/Api/Interfaces/IPostService.cs b/Backend/Api/Api/Interfaces/IPostService.cs index 919f3cf..f554df6 100644 --- a/Backend/Api/Api/Interfaces/IPostService.cs +++ b/Backend/Api/Api/Interfaces/IPostService.cs @@ -16,7 +16,7 @@ namespace Api.Interfaces Task> CascadeComments(string parentid, Post p); Task DeleteComments(string postid, string cmntid,string userid); Task CascadeDeleteComments(string cmntid, Post p); - Task SearchPosts(string locid, int page = 0, int sorttype = 1, int filterdate = 1); + Task SearchPosts(string locid,bool filter, int page = 0, int sorttype = 1, int filterdate = 1, int ratingFrom = -1, int ratingTo = -1, int viewsFrom = -1, int viewsTo = -1); int DateEnumToDays(int filterdate); Task> GetUsersPosts(string id); Task> UserHistory(string userid); diff --git a/Backend/Api/Api/Models/Post.cs b/Backend/Api/Api/Models/Post.cs index 955431f..9f7e937 100644 --- a/Backend/Api/Api/Models/Post.cs +++ b/Backend/Api/Api/Models/Post.cs @@ -92,7 +92,9 @@ namespace Api.Models { VIEWS_DESC=1, RATING_DESC=2, - DATE =3 + DATE =3, + DATE_ASC=4, + } public enum FilterDate { diff --git a/Backend/Api/Api/Services/PostService.cs b/Backend/Api/Api/Services/PostService.cs index e6fa9fb..1c8f647 100644 --- a/Backend/Api/Api/Services/PostService.cs +++ b/Backend/Api/Api/Services/PostService.cs @@ -348,7 +348,7 @@ namespace Api.Services } } } - public async Task SearchPosts(string locid, int page = 0, int sorttype = 1, int filterdate = 1) // for now sorting by number of ratings , not avg rating + public async Task SearchPosts(string locid,bool filter, int page = 0, int sorttype = 1, int filterdate = 1, int ratingFrom = -1, int ratingTo = -1, int viewsFrom = -1, int viewsTo = -1) { var days = DateEnumToDays(filterdate); var tosend = new PostSendPage(); @@ -389,6 +389,26 @@ namespace Api.Services ls.Add(await postToPostSend(elem)); } + } + if (filter) + { + if (ratingFrom >= 0) + { + ls = ls.FindAll(post => post.ratings > ratingFrom).ToList(); + } + if (ratingTo >= 0) + { + ls= ls.FindAll(post => post.ratings < ratingTo).ToList(); + } + if (viewsFrom >= 0) + { + ls = ls.FindAll(post => post.views >viewsFrom).ToList(); + } + if (viewsTo >= 0) + { + ls = ls.FindAll(post => post.views < viewsTo).ToList(); + } + } switch (sorttype) { @@ -401,6 +421,9 @@ namespace Api.Services case 3: xd = ls.OrderByDescending(x => x.createdAt).ToList(); break; + case 4: + xd = ls.OrderBy(x => x.createdAt).ToList(); + break; default: xd = ls.OrderByDescending(x => x.views).ToList(); break; @@ -637,7 +660,7 @@ namespace Api.Services { var novi = new Trending(); novi.tagr = trending; - novi.page = await SearchPosts(trending.tag, 0, 1, 5); + novi.page = await SearchPosts(trending.tag, false,0, 1, 5,-1,-1,-1,-1); tosend.Add(novi); } @@ -660,7 +683,7 @@ namespace Api.Services } foreach (var elem in inradius) { - var locposts = await SearchPosts(elem._id, 0, 1, 1); + var locposts = await SearchPosts(elem._id, false,0, 1, 1,-1,-1,-1,-1); var best = locposts.posts.Take(1).FirstOrDefault(); if (best != null) tosend.Add(best); diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt index 3b976ad..9d4da20 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt @@ -1,5 +1,8 @@ package com.example.brzodolokacije.Fragments + +import android.graphics.Color + import android.os.Bundle import android.util.Log import android.view.KeyEvent @@ -19,7 +22,7 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import com.example.brzodolokacije.Activities.NavigationActivity import com.example.brzodolokacije.Adapters.ShowPostsAdapter import com.example.brzodolokacije.Adapters.ShowPostsGridViewAdapter -import com.example.brzodolokacije.Models.FilterSort + import com.example.brzodolokacije.Models.Location import com.example.brzodolokacije.Models.PostPreview import com.example.brzodolokacije.Models.SearchParams @@ -38,8 +41,6 @@ import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.launch import retrofit2.Call import retrofit2.Response -import java.util.Date - class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener { @@ -54,18 +55,24 @@ class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener { private var swipeRefreshLayout:SwipeRefreshLayout?=null private lateinit var searchButton: MaterialButton private lateinit var searchPostsViewModel:SearchPostsViewModel - private var searchParams:SearchParams?= SearchParams("-1",1,1) + private lateinit var btnFilter:ImageButton private lateinit var btnSort:ImageButton private lateinit var searchBar: AutoCompleteTextView var responseLocations:MutableList?=null var selectedLocation:com.example.brzodolokacije.Models.Location?=null - private lateinit var obj:FilterSort + private lateinit var filter:Button - private lateinit var removeFilter:Button private lateinit var sort:Button + private var filterBool:Boolean=false + private var ratingFrom:Int=-1 + private var ratingTo:Int=-1 + private var viewsFrom:Int=-1 + private var viewsTo:Int=-1 + private var searchParams:SearchParams?= SearchParams("-1",filterBool,1,1,ratingFrom,ratingTo,viewsFrom,viewsTo) + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setUpViewModel() @@ -83,7 +90,7 @@ class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener { var act=requireActivity() as NavigationActivity act.searchQuery=searchBar.text.toString() act.searchId="" - searchParams=SearchParams(searchBar.text.toString(),1,1) + searchParams=SearchParams(searchBar.text.toString(),filterBool,1,1,ratingFrom,ratingTo,viewsFrom,viewsTo) requestToBack(searchParams!!) } fun onTextEnter(){ @@ -133,7 +140,7 @@ class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener { var act=requireActivity() as NavigationActivity act.searchQuery=selectedLocation!!.name act.searchId=selectedLocation!!._id - searchParams=SearchParams(selectedLocation!!._id,1,1)//to do sort type + searchParams=SearchParams(selectedLocation!!._id,filterBool,1,1,ratingFrom,ratingTo,viewsFrom,viewsTo)//to do sort type requestToBack(searchParams!!) }) @@ -197,26 +204,13 @@ class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener { ): View? { val rootView = inflater?.inflate(R.layout.fragment_show_posts, container, false) recyclerView = rootView?.findViewById(R.id.rvMain) + + // set recyclerView attributes // recyclerView?.setHasFixedSize(true) //recyclerView?.layoutManager = linearManagerVar recyclerView?.layoutManager = linearManagerVar recyclerView?.adapter = adapterVar - setUpListeners(rootView) - swipeRefreshLayout = rootView?.findViewById(R.id.swipeContainer) as SwipeRefreshLayout - swipeRefreshLayout?.setOnRefreshListener(this) - swipeRefreshLayout?.setColorSchemeResources( - R.color.purple_200, - R.color.teal_200, - R.color.dark_blue_transparent, - R.color.purple_700 - ) - swipeRefreshLayout?.post(kotlinx.coroutines.Runnable { - swipeRefreshLayout?.isRefreshing=true - requestToBack(searchParams!!) - }) -////////////////////////////////////////////////////////////////// - //filter sort validacija //filter dialog @@ -229,75 +223,112 @@ class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener { bottomSheetDialogSort = BottomSheetDialog(requireContext()) bottomSheetDialogSort.setContentView(R.layout.bottom_sheet_sort) + var ratingFromInput=bottomSheetDialogFilter.findViewById(R.id.filterRatingFrom) as EditText + var ratingToInput=bottomSheetDialogFilter.findViewById(R.id.filterRatingTo) as EditText + var viewsFromInput=bottomSheetDialogFilter.findViewById(R.id.filterViewsFrom) as EditText + var viewsToInput=bottomSheetDialogFilter.findViewById(R.id.filterViewsTo) as EditText - - btnFilter=rootView.findViewById(R.id.btnSortType) - btnSort=rootView.findViewById(R.id.btnSortDirection) - - var dateFrom=bottomSheetDialogFilter.findViewById(R.id.filterDateFrom)as EditText - var dateFromDate:Date - var dateTo=bottomSheetDialogFilter.findViewById(R.id.filterDateTo) as EditText - var dateToDate:Date - var ratingFrom=bottomSheetDialogFilter.findViewById(R.id.filterRatingFrom) as EditText - var ratingTo=bottomSheetDialogFilter.findViewById(R.id.filterRatingTo) as EditText - var viewsFrom=bottomSheetDialogFilter.findViewById(R.id.filterViewsFrom) as EditText - var viewsTo=bottomSheetDialogFilter.findViewById(R.id.filterViewsTo) as EditText - - - var removeFilter = bottomSheetDialogFilter.findViewById(R.id.btnBSFFilterRemove) as Button - - obj=FilterSort(false,false,0,5,0,1000000000,false,false,false,false) - obj.filter=false - obj.sort=false - + btnFilter= rootView!!.findViewById(R.id.btnSortType) + btnSort=rootView!!.findViewById(R.id.btnSortDirection) btnFilter.setOnClickListener{ bottomSheetDialogFilter.show() + var filter = bottomSheetDialogFilter.findViewById(R.id.btnBSFFilter) as Button + var radioGroupF = bottomSheetDialogFilter.findViewById(R.id.radioGroupFilter) as RadioGroup filter.setOnClickListener { - //validacija unosa - Toast.makeText(activity, "Method called From Fragment", Toast.LENGTH_LONG).show(); - if(!dateFrom.text.equals("")){ - obj.filter=true } - else if(!dateTo.text.equals("")){ - obj.filter=true - } - if(ratingFrom.text.toString().trim().toInt()>=0){ - obj.filter=true - obj.filterRatingFrom=ratingFrom.text.toString().toInt() + var selectedRadioButtonIdF: Int = radioGroupF.checkedRadioButtonId + if (selectedRadioButtonIdF != -1) { + var selectedRadioButtonF = + bottomSheetDialogFilter.findViewById(selectedRadioButtonIdF) as RadioButton + val string: String = selectedRadioButtonF.text.toString().trim() + + if (string.equals("Prethodna nedelja")) { + searchParams!!.filterdate= 5 + } else if (string.equals("Prethodni mesec")) { + searchParams!!.filterdate=4 + } else if (string.equals("Prethodna tri meseca")) { + searchParams!!.filterdate=3 + } else if (string.equals("Prethodna godina")) { + searchParams!!.filterdate=2 + } else { + searchParams!!.filterdate=1 + } } - else{ - ///toast - } - if(ratingTo.text.toString().trim().toInt()>=0){ - obj.filter=true - obj.filterRatingTo=ratingTo.text.toString().toInt() - } - else{ - //toast - } - if(viewsFrom.text.toString().trim().toInt()>=0){ - obj.filter=true - obj.filterViewsFrom=viewsFrom.text.toString().toInt() + if(ratingFromInput.text.toString().isNotEmpty()) { + if (ratingFromInput.text.toString().trim().toInt() >= 0) { + filterBool = true + ratingFrom = ratingFromInput.text.toString().toInt() + } else { + Toast.makeText( + activity, + "Vrednost rejtinga ne može biti negativna", + Toast.LENGTH_LONG + ).show(); + var fromrating = + bottomSheetDialogFilter.findViewById(R.id.ratingFromtxt) as TextView + fromrating.setTextColor(Color.RED) + } } - else{ - //toast + if(ratingToInput.text.toString().isNotEmpty()) { + if (ratingToInput.text.toString().trim().toInt() >= 0) { + filterBool = true + ratingTo = ratingToInput.text.toString().toInt() + } else { + Toast.makeText( + activity, + "Vrednost rejtinga ne može biti negativna", + Toast.LENGTH_LONG + ).show(); + var torating = + bottomSheetDialogFilter.findViewById(R.id.ratingTotxt) as TextView + torating.setTextColor(Color.RED) + } } - if(viewsTo.text.toString().trim().toInt()>=0){ - obj.filter=true - obj.filterViewsTo=viewsTo.text.toString().trim().toInt() + if(viewsFromInput.text.toString().isNotEmpty()) { + if (viewsFromInput.text.toString().trim().toInt() >= 0) { + filterBool = true + viewsFrom = viewsFromInput.text.toString().toInt() + } else { + Toast.makeText( + activity, + "Vrednost broja pregleda ne može biti negativna", + Toast.LENGTH_LONG + ).show(); + var fromviews = + bottomSheetDialogFilter.findViewById(R.id.viewsFromtxt) as TextView + fromviews.setTextColor(Color.RED) + } } - else{ - //toast + if(viewsToInput.text.toString().isNotEmpty()) { + if (viewsToInput.text.toString().trim().toInt() >= 0) { + filterBool = true + viewsTo = viewsToInput.text.toString().trim().toInt() + } else { + Toast.makeText( + activity, + "Vrednost broja pregleda ne može biti negativna", + Toast.LENGTH_LONG + ).show(); + var toviews = + bottomSheetDialogFilter.findViewById(R.id.viewsTotxt) as TextView + toviews.setTextColor(Color.RED) + } } + searchParams!!.filter=filterBool + searchParams!!.ratingFrom=ratingFrom + searchParams!!.ratingTo=ratingTo + searchParams!!.viewsFrom=viewsFrom + searchParams!!.viewsTo=viewsTo - + bottomSheetDialogFilter.dismiss() } - } + + } btnSort.setOnClickListener{ bottomSheetDialogSort.show() var sort = bottomSheetDialogSort.findViewById(R.id.btnSortPosts) as Button @@ -310,28 +341,41 @@ class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener { bottomSheetDialogSort.findViewById(selectedRadioButtonId) as RadioButton val string: String = selectedRadioButton.text.toString().trim() if (string.equals("Najnovije")) { - obj.sort = true - obj.sortLatest = true + searchParams!!.sorttype = 3 } else if (string.equals("Najstarije")) { - obj.sort = true - obj.sortOldest = true + searchParams!!.sorttype=4 } else if (string.equals("Najbolje ocenjeno")) { - obj.sort = true - obj.sortBest = true + searchParams!!.sorttype=2 } else if (string.equals("Najviše pregleda")) { - obj.sort = true - obj.sortMostViews = true + searchParams!!.sorttype=1 } else { - obj.sort = false + searchParams!!.sorttype=1 } - - } else { - textView.text = "Nothing selected from the radio group" } } + bottomSheetDialogSort.dismiss() } + setUpListeners(rootView) + swipeRefreshLayout = rootView?.findViewById(R.id.swipeContainer) as SwipeRefreshLayout + swipeRefreshLayout?.setOnRefreshListener(this) + swipeRefreshLayout?.setColorSchemeResources( + R.color.purple_200, + R.color.teal_200, + R.color.dark_blue_transparent, + R.color.purple_700 + ) + swipeRefreshLayout?.post(kotlinx.coroutines.Runnable { + swipeRefreshLayout?.isRefreshing=true + requestToBack(searchParams!!) + }) +////////////////////////////////////////////////////////////////// + + + + + ///////////////////////////////////////////////////////////////////////////// searchBar=rootView.findViewById(R.id.etFragmentShowPostsSearch) as AutoCompleteTextView @@ -374,48 +418,16 @@ class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener { if(act.searchId!=null && act.searchId.trim()!="") { searchBar.setText(act.searchQuery,TextView.BufferType.EDITABLE) - searchParams= SearchParams(act.searchId,1,1) + searchParams= SearchParams(act.searchId,filterBool,1,1,ratingFrom,ratingTo,viewsFrom,viewsTo) requestToBack(searchParams!!) }else if(act.searchQuery!=null && act.searchQuery.trim()!="") { searchBar.setText(act.searchQuery,TextView.BufferType.EDITABLE) - searchParams= SearchParams(act.searchQuery,1,1) + searchParams= SearchParams(act.searchQuery,filterBool,1,1,ratingFrom,ratingTo,viewsFrom,viewsTo) requestToBack(searchParams!!) } } -/* - private fun showBottomSheetFilter() { - var bottomSheetDialog: BottomSheetDialog - bottomSheetDialog = BottomSheetDialog(requireContext()) - bottomSheetDialog.setContentView(R.layout.bottom_sheet_filter) - bottomSheetDialog.show() - - var dateFrom=bottomSheetDialog.findViewById(R.id.filterDateFrom)as EditText - var dateTo=bottomSheetDialog.findViewById(R.id.filterDateTo) as EditText - var ratingFrom=bottomSheetDialog.findViewById(R.id.filterRatingFrom) as EditText - var ratingTo=bottomSheetDialog.findViewById(R.id.filterRatingTo) as EditText - var viewsFrom=bottomSheetDialog.findViewById(R.id.filterViewsFrom) as EditText - var viewsTo=bottomSheetDialog.findViewById(R.id.filterViewsTo) as EditText - var filter = bottomSheetDialog.findViewById(R.id.btnBSFFilter) as Button - var removeFilter = bottomSheetDialog.findViewById(R.id.btnBSFFilterRemove) as Button - - - filter.setOnClickListener { - //povezati sa back-om - - - - } - } - private fun showBottomSheetSort() { - var bottomSheetDialogSort: BottomSheetDialog - bottomSheetDialogSort = BottomSheetDialog(requireContext()) - bottomSheetDialogSort.setContentView(R.layout.bottom_sheet_sort) - bottomSheetDialogSort.show() - - } - */ } \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt index 51e8391..fe86da3 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt @@ -60,9 +60,16 @@ interface IBackendApi { @GET("/api/post/locations/{id}/posts") suspend fun getPagedPosts(@Header("Authorization") authHeader: String, @Path("id") locationId:String, + @Query("filter") filter:Boolean, @Query("page") page:Int, @Query("sorttype") sorttype:Int, - @Query("filterdate") filterdate:Int + @Query("filterdate") filterdate:Int, + @Query("ratingFrom") ratingFrom:Int, + @Query("ratingTo") ratingTo:Int, + @Query("viewsFrom") viewsFrom:Int, + @Query("viewsTo") viewsTo:Int, + + ):PagedPosts @POST("/api/message/add") fun sendMessage(@Header("Authorization") authHeader:String,@Body message:MessageSend):Call diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt index a3858a7..3df1621 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt @@ -3,6 +3,7 @@ package com.example.brzodolokacije.Models import android.os.Parcelable import kotlinx.android.parcel.Parcelize import okhttp3.MultipartBody +import retrofit2.http.Query import java.time.LocalDateTime import java.util.* @@ -91,10 +92,15 @@ data class PagedPosts( data class SearchParams( var locationId: String, + var filter:Boolean, var sorttype:Int, - var filterdate:Int + var filterdate:Int, + var ratingFrom:Int, + var ratingTo:Int, + var viewsFrom:Int, + var viewsTo:Int, ) - +/* data class FilterSort( //var posts: MutableList, var sort:Boolean, @@ -111,4 +117,4 @@ data class FilterSort( var sortOldest:Boolean, var sortBest:Boolean, var sortMostViews:Boolean - ) \ No newline at end of file + )*/ \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt index 43c2109..88685e4 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt @@ -7,8 +7,8 @@ import retrofit2.converter.gson.GsonConverterFactory object RetrofitHelper { - val baseUrl="http://10.0.2.2:5279" - //val baseUrl="http://147.91.204.115:10082" + //val baseUrl="http://10.0.2.2:5279" + val baseUrl="http://147.91.204.115:10082" private var retrofit_noauth: IBackendApi? = null private var retrofit_auth: IBackendApi? = null diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/paging/SearchPostsPagingSource.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/paging/SearchPostsPagingSource.kt index cee39ce..6a8fec2 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/paging/SearchPostsPagingSource.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/paging/SearchPostsPagingSource.kt @@ -21,8 +21,9 @@ class SearchPostsPagingSource( val page=params.key?:0 val token=SharedPreferencesHelper.getValue("jwt", activity) return try{ - val response=backend.getPagedPosts("Bearer "+token,searchParams.locationId, - page,searchParams.sorttype,searchParams.filterdate + val response=backend.getPagedPosts("Bearer "+token,searchParams.locationId,searchParams.filter, + page,searchParams.sorttype,searchParams.filterdate,searchParams.ratingFrom,searchParams.ratingTo, + searchParams.viewsFrom,searchParams.viewsTo ) Log.d("main","stranicenje: "+page.toString()) LoadResult.Page( diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/bottom_sheet_filter.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/bottom_sheet_filter.xml index 5862c60..85915f0 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/bottom_sheet_filter.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/bottom_sheet_filter.xml @@ -17,7 +17,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> - - + + + + --> + + + app:layout_constraintTop_toBottomOf="@+id/textView8"> - + - + + + + + + + + + app:layout_constraintTop_toBottomOf="@+id/radioGroupFilter" /> - - +--> + app:layout_constraintTop_toBottomOf="@+id/divider4" + app:layout_constraintVertical_bias="1.0">