From 9b3520ea5771ea94f3d1fc1fdbc73bb187873927 Mon Sep 17 00:00:00 2001 From: epriestley Date: Thu, 12 Sep 2013 14:48:52 -0700 Subject: [PATCH] Add "group" to Maniphest "pro" search Summary: This is the last missing filter. Test Plan: Grouped results by a bunch of stuff. Reviewers: btrahan Reviewed By: btrahan CC: aran Differential Revision: https://secure.phabricator.com/D6960 --- .../query/ManiphestTaskSearchEngine.php | 37 ++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/src/applications/maniphest/query/ManiphestTaskSearchEngine.php b/src/applications/maniphest/query/ManiphestTaskSearchEngine.php index 906c58f31f..fb90035d59 100644 --- a/src/applications/maniphest/query/ManiphestTaskSearchEngine.php +++ b/src/applications/maniphest/query/ManiphestTaskSearchEngine.php @@ -18,6 +18,7 @@ final class ManiphestTaskSearchEngine $saved->setParameter('statuses', $request->getArr('statuses')); $saved->setParameter('priorities', $request->getArr('priorities')); + $saved->setParameter('group', $request->getStr('group')); $saved->setParameter('order', $request->getStr('order')); $ids = $request->getStrList('ids'); @@ -95,6 +96,14 @@ final class ManiphestTaskSearchEngine $query->setOrderBy(head($this->getOrderValues())); } + $group = $saved->getParameter('group'); + $group = idx($this->getGroupValues(), $group); + if ($group) { + $query->setGroupBy($group); + } else { + $query->setGroupBy(head($this->getGroupValues())); + } + $ids = $saved->getParameter('ids'); if ($ids) { $query->withIDs($ids); @@ -271,10 +280,16 @@ final class ManiphestTaskSearchEngine ->setValue($author_handles)) ->appendChild($status_control) ->appendChild($priority_control) + ->appendChild( + id(new AphrontFormSelectControl()) + ->setName('group') + ->setLabel(pht('Group By')) + ->setValue($saved->getParameter('group')) + ->setOptions($this->getGroupOptions())) ->appendChild( id(new AphrontFormSelectControl()) ->setName('order') - ->setLabel(pht('Order')) + ->setLabel(pht('Order By')) ->setValue($saved->getParameter('order')) ->setOptions($this->getOrderOptions())) ->appendChild( @@ -358,4 +373,24 @@ final class ManiphestTaskSearchEngine ); } + private function getGroupOptions() { + return array( + 'priority' => pht('Priority'), + 'assigned' => pht('Assigned'), + 'status' => pht('Status'), + 'project' => pht('Project'), + 'none' => pht('None'), + ); + } + + private function getGroupValues() { + return array( + 'priority' => ManiphestTaskQuery::GROUP_PRIORITY, + 'assigned' => ManiphestTaskQuery::GROUP_OWNER, + 'status' => ManiphestTaskQuery::GROUP_STATUS, + 'project' => ManiphestTaskQuery::GROUP_PROJECT, + 'none' => ManiphestTaskQuery::GROUP_NONE, + ); + } + }