From 7fc9310760583dabe301d36ff3c4df55b7b7d947 Mon Sep 17 00:00:00 2001 From: Josef Citrine <josefcitrine@gmail.com> Date: Tue, 16 May 2017 21:29:52 +0100 Subject: [PATCH] Added archive button on admin pages --- .../directives/paged-tracks-list.html | 14 +++ .../app/directives/paged-tracks-list.coffee | 98 ++++++++++++------- 2 files changed, 76 insertions(+), 36 deletions(-) diff --git a/public/templates/directives/paged-tracks-list.html b/public/templates/directives/paged-tracks-list.html index b9dbce61..245bfa45 100644 --- a/public/templates/directives/paged-tracks-list.html +++ b/public/templates/directives/paged-tracks-list.html @@ -1,4 +1,18 @@ <div class="paged-tracks-list"> + <ul class="dropdowns"> + <li class="dropdown" ng-class="{'has-filter': !query.filters.archive.isDefault}"> + <a class="dropdown-toggle btn btn-default" bs-dropdown> + Archive: <strong>{{query.filters.archive.title}}</strong> + </a> + <a class="btn btn-default" pfm-eat-click ng-click="clearFilter('archive')"><i class="fa fa-remove"></i></a> + <ul class="dropdown-menu"> + <li ng-repeat="filter in ::filters.archive.values track by $index" ng-class="{selected: filter == query.filters.archive}"> + <a pfm-eat-click href="#" ng-click="setFilter('archive', filter)">{{::filter.title}}</a> + </li> + </ul> + </li> + </ul> + <div class="pagination" ng-if="totalPages > 1"> <ul> <li ng-class="{disabled: !prevPage}"><a href="#" ng-click="gotoPage(prevPage);" pfm-eat-click>Prev</a></li> diff --git a/resources/assets/scripts/app/directives/paged-tracks-list.coffee b/resources/assets/scripts/app/directives/paged-tracks-list.coffee index 2b9f319c..7ca87606 100644 --- a/resources/assets/scripts/app/directives/paged-tracks-list.coffee +++ b/resources/assets/scripts/app/directives/paged-tracks-list.coffee @@ -27,55 +27,81 @@ module.exports = angular.module('ponyfm').directive 'pfmPagedTracksList', () -> controller: [ '$scope', 'tracks', '$state', '$location' ($scope, tracks, $state, $location) -> - $scope.newClickOverride = (id) -> - $scope.clickOverride({id: id}) + tracks.loadFilters().then(-> + $scope.filters = tracks.filters + $scope.query = tracks.mainQuery + tracks.mainQuery.fromFilterString($state.params.filter) - typeEnum = switch - when $scope.type == 'normal' then tracks.FetchType.NORMAL - when $scope.type == 'all' then tracks.FetchType.ALL - when $scope.type == 'unclassified' then tracks.FetchType.UNCLASSIFIED - else tracks.FetchType.NORMAL + $scope.toggleListFilter = (filter, id) -> + $scope.query.toggleListFilter filter, id + $state.transitionTo $state.current.name, {filter: $scope.query.toFilterString()} - tracks.mainQuery.fetch(typeEnum).done (searchResults) -> - $scope.tracks = searchResults.tracks + $scope.setFilter = (filter, value) -> + $scope.query.setFilter filter, value + $state.transitionTo $state.current.name, {filter: $scope.query.toFilterString()} - $scope.currentPage = parseInt(searchResults.current_page) - $scope.totalPages = parseInt(searchResults.total_pages) - delete $scope.nextPage - delete $scope.prevPage + $scope.setListFilter = (filter, id) -> + $scope.query.setListFilter filter, id + $state.transitionTo $state.current.name, {filter: $scope.query.toFilterString()} - $scope.nextPage = $scope.currentPage + 1 if $scope.currentPage < $scope.totalPages - $scope.prevPage = $scope.currentPage - 1 if $scope.currentPage > 1 - $scope.allPages = [1..$scope.totalPages] + $scope.clearFilter = (filter) -> + $scope.query.clearFilter filter + $state.transitionTo $state.current.name, {filter: $scope.query.toFilterString()} - # The actual first page will always be in the paginator. - $scope.pages = [1] + $scope.newClickOverride = (id) -> + $scope.clickOverride({id: id}) - # This logic determines how many pages to add prior to the current page, if any. - firstPage = Math.max(2, $scope.currentPage-3) - $scope.pages = $scope.pages.concat [firstPage..$scope.currentPage] unless $scope.currentPage == 1 + tracks.loadFilters().then( + tracks.mainQuery.fromFilterString($state.params.filter) + ) - pagesLeftToAdd = 8-$scope.pages.length + typeEnum = switch + when $scope.type == 'normal' then tracks.FetchType.NORMAL + when $scope.type == 'all' then tracks.FetchType.ALL + when $scope.type == 'unclassified' then tracks.FetchType.UNCLASSIFIED + else tracks.FetchType.NORMAL - lastPage = Math.min($scope.totalPages - 1, $scope.currentPage+1+pagesLeftToAdd) - $scope.pages = $scope.pages.concat([$scope.currentPage+1..lastPage]) unless $scope.currentPage >= lastPage + tracks.mainQuery.fetch(typeEnum).done (searchResults) -> + $scope.tracks = searchResults.tracks - # The actual last page will always be in the paginator. - $scope.pages.push($scope.totalPages) unless $scope.totalPages in $scope.pages + $scope.currentPage = parseInt(searchResults.current_page) + $scope.totalPages = parseInt(searchResults.total_pages) + delete $scope.nextPage + delete $scope.prevPage - $scope.pageSelectorShown = false + $scope.nextPage = $scope.currentPage + 1 if $scope.currentPage < $scope.totalPages + $scope.prevPage = $scope.currentPage - 1 if $scope.currentPage > 1 + $scope.allPages = [1..$scope.totalPages] - $scope.gotoPage = (page) -> - #$scope.$emit 'pageChange', {filter: $state.params.filter, page: page} - $state.go '.', {filter: $state.params.filter, page: page} + # The actual first page will always be in the paginator. + $scope.pages = [1] - $scope.showPageSelector = () -> - $scope.pageSelectorShown = true - focus('#pagination-jump-destination') + # This logic determines how many pages to add prior to the current page, if any. + firstPage = Math.max(2, $scope.currentPage-3) + $scope.pages = $scope.pages.concat [firstPage..$scope.currentPage] unless $scope.currentPage == 1 + + pagesLeftToAdd = 8-$scope.pages.length + + lastPage = Math.min($scope.totalPages - 1, $scope.currentPage+1+pagesLeftToAdd) + $scope.pages = $scope.pages.concat([$scope.currentPage+1..lastPage]) unless $scope.currentPage >= lastPage + + # The actual last page will always be in the paginator. + $scope.pages.push($scope.totalPages) unless $scope.totalPages in $scope.pages - $scope.hidePageSelector = () -> $scope.pageSelectorShown = false - $scope.jumpToPage = (inputPageNumber) -> - $scope.gotoPage(inputPageNumber) + $scope.gotoPage = (page) -> + #$scope.$emit 'pageChange', {filter: $state.params.filter, page: page} + $state.go '.', {filter: $state.params.filter, page: page} + + $scope.showPageSelector = () -> + $scope.pageSelectorShown = true + focus('#pagination-jump-destination') + + $scope.hidePageSelector = () -> + $scope.pageSelectorShown = false + + $scope.jumpToPage = (inputPageNumber) -> + $scope.gotoPage(inputPageNumber) + ) ]