Shows the images that will be deleted when removing a tag

This commit is contained in:
Joseph Schorr 2014-01-09 15:15:06 -05:00
parent de8f1ef776
commit d2b9e0d65a
3 changed files with 145 additions and 2 deletions

View file

@ -194,6 +194,60 @@ function RepoCtrl($scope, Restangular, ApiService, $routeParams, $rootScope, $lo
}
};
$scope.tagSpecificImages = function(tagName) {
if (!tagName) { return []; }
var tag = $scope.repo.tags[tagName];
if (!tag) { return []; }
if ($scope.specificImages && $scope.specificImages[tagName]) {
return $scope.specificImages[tagName];
}
var getIdsForTag = function(currentTag) {
var ancestors = currentTag.image.ancestors.split('/');
var dbid = currentTag.image.dbid;
var ids = {};
ids[dbid] = true;
for (var i = 0; i < ancestors.length; ++i) {
if (ancestors[i]) {
ids[ancestors[i]] = true;
}
}
return ids;
};
// Remove any IDs that match other tags.
var toDelete = getIdsForTag(tag);
for (var currentTagName in $scope.repo.tags) {
var currentTag = $scope.repo.tags[currentTagName];
if (currentTag != tag) {
for (var dbid in getIdsForTag(currentTag)) {
delete toDelete[dbid];
}
}
}
// Return the matching list of images.
var images = [];
for (var i = 0; i < $scope.images.length; ++i) {
var image = $scope.images[i];
if (toDelete[image.dbid]) {
images.push(image);
}
}
images.sort(function(a, b) {
return b.dbid - a.dbid;
});
$scope.specificImages[tagName] = images;
return images;
};
$scope.askDeleteTag = function(tagName) {
if (!$scope.repo.can_admin) { return; }
@ -257,6 +311,22 @@ function RepoCtrl($scope, Restangular, ApiService, $routeParams, $rootScope, $lo
}
};
$scope.getFirstTextLine = getFirstTextLine;
$scope.getImageListingClasses = function(image, tagName) {
var classes = '';
if (image.ancestors.length > 1) {
classes += 'child ';
}
var currentTag = $scope.repo.tags[tagName];
if (image.dbid == currentTag.image.dbid) {
classes += 'tag-image ';
}
return classes;
};
$scope.getTagCount = function(repo) {
if (!repo) { return 0; }
var count = 0;
@ -389,6 +459,9 @@ function RepoCtrl($scope, Restangular, ApiService, $routeParams, $rootScope, $lo
var listImages = function() {
var params = {'repository': namespace + '/' + name};
$scope.imageHistory = ApiService.listRepositoryImagesAsResource(params).get(function(resp) {
$scope.images = resp.images;
$scope.specificImages = [];
// Dispose of any existing tree.
if ($scope.tree) {
$scope.tree.dispose();