1. у ng-repeat есть orderBy функциональность. Почитай тут
https://docs.angularjs.org/api/ng/filter/orderBy. В этом же документе посмотри первый пример в Plunker (вот он
http://plnkr.co/edit/yKCrobzz8DJirFImgJtL?p=preview).
В целом ты можешь использовать этот же подход
ng-repeat="y in Tasks | orderBy: predicate", где predicate поначалу пустая строка (в этом случае данные будут выводиться в порядке как есть). Соответственно в твоем методе ng-click="filterBy($event)" ты будешь делать что-то вроде $scope.predicate = '/*название поля для фильтрации*/'.
Обрати также внимание что orderBy принимает не только строку-свойство объекта но также и функцию.