60 lines
1.6 KiB
JavaScript
60 lines
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;
|
||
|
});
|