Have the view repo page's URL be updated for the currently selected tag automatically.

This commit is contained in:
Joseph Schorr 2013-10-16 23:09:43 -04:00
parent 0c3c1b9e0e
commit f798345d1c
2 changed files with 16 additions and 5 deletions

View file

@ -129,7 +129,7 @@ quayApp = angular.module('quay', ['restangular', 'angularMoment', 'angulartics',
// index rule to make sure that deep links directly deep into the app continue to work. // index rule to make sure that deep links directly deep into the app continue to work.
// WARNING WARNING WARNING // WARNING WARNING WARNING
$routeProvider. $routeProvider.
when('/repository/:namespace/:name', {templateUrl: '/static/partials/view-repo.html', controller: RepoCtrl}). when('/repository/:namespace/:name', {templateUrl: '/static/partials/view-repo.html', controller: RepoCtrl, reloadOnSearch: false}).
when('/repository/:namespace/:name/tag/:tag', {templateUrl: '/static/partials/view-repo.html', controller: RepoCtrl}). when('/repository/:namespace/:name/tag/:tag', {templateUrl: '/static/partials/view-repo.html', controller: RepoCtrl}).
when('/repository/:namespace/:name/admin', {templateUrl: '/static/partials/repo-admin.html', controller:RepoAdminCtrl}). when('/repository/:namespace/:name/admin', {templateUrl: '/static/partials/repo-admin.html', controller:RepoAdminCtrl}).
when('/repository/', {title: 'Repositories', templateUrl: '/static/partials/repo-list.html', controller: RepoListCtrl}). when('/repository/', {title: 'Repositories', templateUrl: '/static/partials/repo-list.html', controller: RepoListCtrl}).

View file

@ -256,9 +256,14 @@ function LandingCtrl($scope, $timeout, Restangular, UserService, KeyService) {
browserchrome.update(); browserchrome.update();
} }
function RepoCtrl($scope, Restangular, $routeParams, $rootScope) { function RepoCtrl($scope, Restangular, $routeParams, $rootScope, $location) {
$rootScope.title = 'Loading...'; $rootScope.title = 'Loading...';
// Watch for changes to the tag parameter.
$scope.$on('$routeUpdate', function(){
$scope.setTag($location.search().tag, false);
});
$scope.editDescription = function() { $scope.editDescription = function() {
if (!$scope.repo.can_write) { return; } if (!$scope.repo.can_write) { return; }
@ -307,7 +312,7 @@ function RepoCtrl($scope, Restangular, $routeParams, $rootScope) {
$scope.tree.draw('image-history-container'); $scope.tree.draw('image-history-container');
$($scope.tree).bind('tagChanged', function(e) { $($scope.tree).bind('tagChanged', function(e) {
$scope.$apply(function() { $scope.setTag(e.tag); }); $scope.$apply(function() { $scope.setTag(e.tag, true); });
}); });
$($scope.tree).bind('imageChanged', function(e) { $($scope.tree).bind('imageChanged', function(e) {
$scope.$apply(function() { $scope.setImage(e.image); }); $scope.$apply(function() { $scope.setImage(e.image); });
@ -322,12 +327,18 @@ function RepoCtrl($scope, Restangular, $routeParams, $rootScope) {
} }
}; };
$scope.setTag = function(tagName) { $scope.setTag = function(tagName, opt_updateURL) {
var repo = $scope.repo; var repo = $scope.repo;
$scope.currentTag = repo.tags[tagName] || repo.tags['latest']; $scope.currentTag = repo.tags[tagName] || repo.tags['latest'];
$scope.currentImage = $scope.currentTag.image; $scope.currentImage = $scope.currentTag.image;
currentTagName = $scope.currentTag.name;
if ($scope.tree) { if ($scope.tree) {
$scope.tree.setTag($scope.currentTag.name); $scope.tree.setTag(currentTagName);
}
if (opt_updateURL) {
$location.search('tag', currentTagName);
} }
}; };