# Pony.fm - A community for pony fan music. # Copyright (C) 2015 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 . window.pfm.preloaders['artist'] = [ 'artists', '$state' (artists, $state) -> artists.fetch $state.params.slug, true ] module.exports = angular.module('ponyfm').controller "artist", [ '$scope', 'artists', '$state', 'follow', '$rootScope', 'color' ($scope, artists, $state, follow, $rootScope, color) -> $scope.selectedTab = 0 updateArtist = (force = false) -> if force window.location.reload() artists.fetch($state.params.slug, force) .done (artistResponse) -> $scope.artist = artistResponse.artist if artistResponse.artist.avatar_colors.length > 2 $scope.headerStyle = {'background-image': color.createGradient(artistResponse.artist.avatar_colors[0], artistResponse.artist.avatar_colors[1])} tempImg = document.createElement('img') tempImg.setAttribute 'src', artistResponse.artist.avatars.small + '?' + new Date().getTime() tempImg.setAttribute 'crossOrigin', '' tempImg.crossOrigin = 'Anonymous' tempImg.addEventListener 'load', -> colorThief = new ColorThief(); palette = colorThief.getPalette(tempImg, 2) $('.top-bar').css('background': color.selectHeaderColour(palette[0], palette[1])) $scope.$apply() evaluateTab = (route) -> switch route when 'content.artist.profile' then $scope.selectedTab = 0 when 'content.artist.content' then $scope.selectedTab = 1 when 'content.artist.favourites' then $scope.selectedTab = 2 when 'content.artist.account.settings' then $scope.selectedTab = 3 $scope.toggleFollow = () -> follow.toggle('artist', $scope.artist.id).then (res) -> $scope.artist.user_data.is_following = res.is_followed updateArtist() evaluateTab($state.current.name) $scope.$on 'user-updated', -> updateArtist(true) $rootScope.$on '$stateChangeStart', (e, to, toParam, from, fromParam) -> evaluateTab to.name ]