Initial redesigned UI for repo listings w/ stars.

This commit is contained in:
Jimmy Zelinskie 2014-12-11 15:06:30 -05:00
parent 97b605ca8d
commit 5a484cfe11
10 changed files with 308 additions and 103 deletions

View file

@ -2267,6 +2267,7 @@ quayApp = angular.module('quay', quayDependencies, function($provide, cfpLoading
when('/', {title: 'Hosted Private Docker Registry', templateUrl: '/static/partials/landing.html', controller: LandingCtrl,
pageClass: 'landing-page'}).
when ('/starred/', {title: 'Starred Repositories', templateUrl: '/static/partials/starred.html', controller: StarCtrl}).
otherwise({redirectTo: '/'});
}]).
config(function(RestangularProvider) {

View file

@ -237,14 +237,52 @@ function RepoListCtrl($scope, $sanitize, Restangular, UserService, ApiService) {
$scope.publicPageCount = null;
// Monitor changes in the user.
UserService.updateUserIn($scope, function() {
loadMyRepos($scope.namespace);
UserService.load(function() {
console.log("updateUserIn");
var user = UserService.currentUser();
$scope.namespaces = [user];
for (var i = 0; i < user.organizations.length; i++) {
$scope.namespaces.push(user.organizations[i]);
}
loadStarredRepos();
loadRepos();
console.log($scope.namespaces);
});
// Monitor changes in the namespace.
$scope.$watch('namespace', function(namespace) {
loadMyRepos(namespace);
});
//$scope.$watch('namespace', function(namespace) {
// loadStarredRepos($scope.namespace)
// loadRepos();
//});
$scope.starRepo = function(repo) {
var data = {
'namespace': repo.namespace,
'repository': repo.name
};
ApiService.createStar(data).then(function(result) {
loadStarredRepos($scope.namespace);
loadRepos($scope.namespace);
}, function(result) {
loadStarredRepos();
loadRepos();
});
};
$scope.unstarRepo = function(repo) {
var data = {
'repository': repo.namespace + '/' + repo.name
};
ApiService.deleteStar(null, data).then(function(result) {
loadStarredRepos($scope.namespace);
loadRepos($scope.namespace);
}, function(result) {
loadStarredRepos($scope.namespace);
loadRepos();
});
};
$scope.movePublicPage = function(increment) {
if ($scope.publicPageCount == null) {
@ -263,18 +301,36 @@ function RepoListCtrl($scope, $sanitize, Restangular, UserService, ApiService) {
loadPublicRepos();
};
var loadMyRepos = function(namespace) {
if (!$scope.user || $scope.user.anonymous || !namespace) {
var loadStarredRepos = function() {
if (!$scope.user || $scope.user.anonymous) {
return;
}
var options = {'public': false, 'sort': true, 'namespace': namespace};
$scope.user_repositories = ApiService.listReposAsResource().withOptions(options).get(function(resp) {
$scope.starred_repositories = ApiService.listStarredReposAsResource().get(function(resp) {
return resp.repositories;
});
};
var loadRepos = function() {
if ($scope.namespaces.length == 0 || $scope.user.anonymous) {
return;
}
for (var i = 0; i < $scope.namespaces.length; i++) {
var namespace = $scope.namespaces[i];
var namespaceName = namespace.username || namespace.name;
var options = {
'public': false,
'sort': true,
'namespace': namespaceName,
'starred': false,
};
namespace.repositories = ApiService.listReposAsResource().withOptions(options).get(function(resp) {
return resp.repositories;
});
}
};
var loadPublicRepos = function() {
var options = {
'public': true,
@ -293,7 +349,7 @@ function RepoListCtrl($scope, $sanitize, Restangular, UserService, ApiService) {
});
};
loadPublicRepos();
//loadPublicRepos();
}
function LandingCtrl($scope, UserService, ApiService, Features, Config) {
@ -401,6 +457,10 @@ function LandingCtrl($scope, UserService, ApiService, Features, Config) {
};
}
function StarCtrl($scope) {
$scope.test = "hello";
}
function RepoCtrl($scope, $sanitize, Restangular, ImageMetadataService, ApiService, $routeParams, $rootScope, $location, $timeout, Config) {
$scope.Config = Config;