/** * An element that displays a list (grid or table) of repositories. */ angular.module('quay').directive('repoListView', function () { var directiveDefinitionObject = { priority: 0, templateUrl: '/static/directives/repo-list-view.html', replace: false, transclude: true, restrict: 'C', scope: { namespaces: '=namespaces', starredRepositories: '=starredRepositories', starToggled: '&starToggled', }, controller: function($scope, $element, CookieService) { $scope.resources = []; $scope.loading = true; $scope.showAsList = CookieService.get('quay.repoview') == 'list'; $scope.optionAllowed = true; $scope.$watch('namespaces', function(namespaces) { if (!namespaces) { return; } $scope.loading = false; $scope.resources = []; namespaces.forEach(function(namespace) { if (namespace && namespace.repositories) { $scope.resources.push(namespace.repositories); if (namespace.repositories.loading) { $scope.loading = true; } } }); $scope.optionAllowed = $scope.resources.length <= 250; if (!$scope.optionAllowed) { $scope.showAsList = true; } }, true); $scope.setShowAsList = function(value) { $scope.showAsList = value; CookieService.putPermanent('quay.repoview', value ? 'list' : 'grid'); }; } }; return directiveDefinitionObject; });