arey/angular-musicbrainz

View on GitHub
app/js/controllers.js

Summary

Maintainability
A
0 mins
Test Coverage
'use strict';

/* Controllers */

angular.module('musicAlbumApp.controllers', ['ui.bootstrap']).
    controller('SearchCtrl', ['$scope', 'searchService', function ($scope, searchService) {
        $scope.maxSize = 5;
        $scope.currentPage = 1;
        $scope.pageSizes = [
            {count: 5, label: '5 ' + $scope.translation.SEARCH_PAGE_RESULT},
            {count: 10, label: '10 ' + $scope.translation.SEARCH_PAGE_RESULT},
            {count: 20, label: '20 ' + $scope.translation.SEARCH_PAGE_RESULT},
            {count: 50, label: '50 ' + $scope.translation.SEARCH_PAGE_RESULT}
        ];
        $scope.pageSize = $scope.pageSizes[1]; // 10

        $scope.selectPage = function (page) {
            $scope.fullTextSearch($scope.searchText, page);
        };

        $scope.fullTextSearch = function (text, page) {
            $scope.currentPage = page;
            var from = ($scope.currentPage - 1) * $scope.pageSize.count;
            searchService.fullTextSearch(from, $scope.pageSize.count, text).then(
                function (resp) {
                    $scope.searchResp = resp;
                    $scope.totalItems = resp.hits.total;
                }
            );
        };

        $scope.isAvailableResults = function () {
            return $scope.searchResp ? true : false;
        };

        $scope.isAtLeastOneResult = function () {
            if (!$scope.isAvailableResults()) {
                return false;
            }
            return $scope.searchResp.hits.total > 0;
        };

        $scope.autocomplete = function (text) {
            return searchService.autocomplete(text).then(function (res) {
                var albums = [];
                angular.forEach(res.hits.hits, function (hit) {
                    albums.push(hit.fields['artist.name'] + ' - ' + hit.fields.name + ' (' + hit.fields.year + ')');
                });
                $scope.autocompleteResp = albums;
                return albums;
            });
        };

        $scope.rangeGreaterThanZero = function (range) {
            return range.count > 0;
        };
    }])
    .controller('InfoCtrl', ['$scope', function ($scope) {
        $scope.demoUrl = 'http://angular-musicbrainz.javaetmoi.com/';
        $scope.demoSourceUrl = 'https://github.com/arey/angular-musicbrainz';
        $scope.blogArticleUrl = 'http://javaetmoi.com/2014/02/developper-industrialiser-web-app-recherche-angularjs';
    }
]);