Skip to content

Commit

Permalink
rework pagination on review related lists
Browse files Browse the repository at this point in the history
  • Loading branch information
CollinBeczak committed Jan 2, 2024
1 parent 8406fc9 commit 68e574c
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -604,15 +604,21 @@ class TaskReviewController @Inject() (
/**
* Returns a list of challenges that have reviews/review requests.
*
* @param reviewTasksType The type of reviews (1: To Be Reviewed, 2: User's reviewed Tasks, 3: All reviewed by users 4: meta review tasks)
* @param tStatus The task statuses to include
* @param excludeOtherReviewers Whether tasks completed by other reviewers should be included
* @param reviewTasksType The type of reviews (1: To Be Reviewed, 2: User's reviewed Tasks, 3: All reviewed by users 4: meta review tasks)
* @param tStatus The task statuses to include
* @param excludeOtherReviewers Whether tasks completed by other reviewers should be included
* @param challengeSearchQuery Query string for filtering challenges
* @param projectSearchQuery Query string for filtering projects
* @param limit Number of items per page
* @param page Page number
* @return JSON challenge list
*/
def listChallenges(
reviewTasksType: Int,
tStatus: String,
excludeOtherReviewers: Boolean = false,
challengeSearchQuery: String = "",
projectSearchQuery: String = "",
limit: Int,
page: Int
): Action[AnyContent] =
Expand All @@ -623,11 +629,14 @@ class TaskReviewController @Inject() (
case _ => None
}

// Filter challenges based on search query
val challenges = this.serviceManager.challengeListing.withReviewList(
reviewTasksType,
user,
taskStatus,
excludeOtherReviewers,
challengeSearchQuery,
projectSearchQuery,
Paging(limit, page)
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,22 +29,43 @@ class ChallengeListingService @Inject() (
/**
* Returns a list of challenges that have reviews/review requests.
*
* @param reviewTasksType The type of reviews (1: To Be Reviewed, 2: User's reviewed Tasks, 3: All reviewed by users)
* @param user The user making request (for challenge permission visibility)
* @param taskStatus The task statuses to include
* @param reviewTasksType The type of reviews (1: To Be Reviewed, 2: User's reviewed Tasks, 3: All reviewed by users)
* @param user The user making request (for challenge permission visibility)
* @param taskStatus The task statuses to include
* @param excludeOtherReviewers Whether tasks completed by other reviewers should be included
* @param challengeSearchQuery Search query for filtering challenges
* @param projectSearchQuery Search query for filtering projects
* @param paging Paging information
* @return A list of children listing objects
*/
def withReviewList(
reviewTasksType: Int,
user: User,
taskStatus: Option[List[Int]] = None,
excludeOtherReviewers: Boolean = false,
challengeSearchQuery: String = "",
projectSearchQuery: String = "",
paging: Paging = Paging()
): List[ChallengeListing] = {
val filter =
Filter(
List(
FilterGroup(
List(
BaseParameter(
Challenge.FIELD_NAME,
SQLUtils.search(challengeSearchQuery),
Operator.ILIKE,
table = Some(Challenge.TABLE)
),
BaseParameter(
Project.FIELD_DISPLAY_NAME,
SQLUtils.search(projectSearchQuery),
Operator.ILIKE,
table = Some(Project.TABLE)
)
)
),
FilterGroup(
List(
// Has a task review
Expand Down Expand Up @@ -104,7 +125,7 @@ class ChallengeListingService @Inject() (
)
)
),
// Check project/challenge visiblity
// Check project/challenge visibility
challengeService.challengeVisibilityFilter(user),
// reviewed_by is empty or user.id if excludeOtherReviewers
FilterGroup(
Expand Down
8 changes: 7 additions & 1 deletion conf/v2_route/challenge.api
Original file line number Diff line number Diff line change
Expand Up @@ -539,14 +539,20 @@ POST /challenges/bulkArchive @org.maproulette.controllers
# - name: excludeOtherReviewers
# in: query
# description: Exclude reviews by completed by other reviewers (default true)
# - name: challengeSearchQuery
# in: query
# description: Filter for challenge names that include this value
# - name: projectSearchQuery
# in: query
# description: Filter for project names that include this value
# - name: limit
# in: query
# description: Limit the number of results returned in the response. Default value is 10.
# - name: page
# in: query
# description: Used in conjunction with the limit parameter to page through X number of responses. Default value is 0, ie. first page.
###
GET /review/challenges @org.maproulette.framework.controller.TaskReviewController.listChallenges(reviewTasksType:Int, tStatus:String ?= "", excludeOtherReviewers:Boolean ?= false, limit:Int ?= 10, page:Int ?= 0)
GET /review/challenges @org.maproulette.framework.controller.TaskReviewController.listChallenges(reviewTasksType:Int, tStatus:String ?= "", excludeOtherReviewers:Boolean ?= false, challengeSearchQuery ?= "", projectSearchQuery ?= "", limit:Int ?= 10, page:Int ?= 0)
###
# tags: [ Challenge ]
# summary: List all the Challenges Tasks.
Expand Down

0 comments on commit 68e574c

Please sign in to comment.