This repository has been archived on 2020-03-24. You can view files and clone it, but cannot push or open issues or pull requests.
quay/static/js/directives/ui/manifest-label-list.js
2019-11-12 11:09:47 -05:00

60 lines
No EOL
1.6 KiB
JavaScript

/**
* An element which displays the labels on a repository manifest.
*/
angular.module('quay').directive('manifestLabelList', function () {
var directiveDefinitionObject = {
priority: 0,
templateUrl: '/static/directives/manifest-label-list.html',
replace: false,
transclude: true,
restrict: 'C',
scope: {
'repository': '=repository',
'manifestDigest': '=manifestDigest',
'cache': '=cache'
},
controller: function($scope, $element, ApiService) {
$scope.labels = null;
var loadLabels = function() {
if (!$scope.repository) {
return;
}
if (!$scope.manifestDigest) {
return;
}
if ($scope.cache[$scope.manifestDigest]) {
$scope.labels = $scope.cache[$scope.manifestDigest];
return;
}
$scope.labels = null;
$scope.loadError = false;
var params = {
'repository': $scope.repository.namespace + '/' + $scope.repository.name,
'manifestref': $scope.manifestDigest
};
ApiService.listManifestLabels(null, params).then(function(resp) {
$scope.labels = resp['labels'];
$scope.cache[$scope.manifestDigest] = resp['labels'];
}, function() {
$scope.loadError = true;
});
};
$scope.$watch('cache', function(cache) {
if (cache && $scope.manifestDigest && $scope.labels && !cache[$scope.manifestDigest]) {
loadLabels();
}
}, true);
$scope.$watch('repository', loadLabels);
$scope.$watch('manifestDigest', loadLabels);
}
};
return directiveDefinitionObject;
});