Pony.fm/resources/assets/scripts/app/directives/search.coffee

72 lines
2.5 KiB
CoffeeScript
Raw Normal View History

2016-01-16 10:10:07 +01:00
# Pony.fm - A community for pony fan music.
# Copyright (C) 2016 Peter Deltchev
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
angular.module('ponyfm').directive 'pfmSearch', () ->
restrict: 'E'
templateUrl: '/templates/directives/search.html'
scope:
resource: '=resource',
type: '@type'
controller: [
'$scope', 'search'
($scope, search) ->
2016-01-17 04:22:04 +01:00
$scope.searchQuery = ''
2016-01-16 10:10:07 +01:00
$scope.searchInProgress = false
$scope.searchComplete = false
2016-01-16 10:10:07 +01:00
$scope.tracks = []
$scope.albums = []
$scope.playlists = []
$scope.users = []
clearResults = ()->
2016-01-17 04:22:04 +01:00
$scope.tracks.length = 0
$scope.albums.length = 0
$scope.playlists.length = 0
$scope.users.length = 0
2016-01-16 10:10:07 +01:00
2016-01-17 04:22:04 +01:00
$scope.$watch 'searchQuery', _.debounce((searchQuery)->
$scope.$apply ()->
if searchQuery.length <3
clearResults()
$scope.searchInProgress = false
$scope.searchComplete = false
return
2016-01-16 10:10:07 +01:00
2016-01-17 04:22:04 +01:00
$scope.searchInProgress = true
2016-01-16 10:10:07 +01:00
2016-01-17 04:22:04 +01:00
search.searchAllContent(searchQuery)
.then (results)->
clearResults()
$scope.searchInProgress = false
$scope.searchComplete = true
2016-01-17 04:22:04 +01:00
for track in results.tracks
$scope.tracks.push(track)
2016-01-16 10:10:07 +01:00
2016-01-17 04:22:04 +01:00
for album in results.albums
$scope.albums.push(album)
2016-01-16 10:10:07 +01:00
2016-01-17 04:22:04 +01:00
for playlist in results.playlists
$scope.playlists.push(playlist)
for user in results.users
$scope.users.push(user)
, 300)
2016-01-16 10:10:07 +01:00
]