43 lines
1.1 KiB
JavaScript
43 lines
1.1 KiB
JavaScript
/**
|
|
* An element which allows for editing labels.
|
|
*/
|
|
angular.module('quay').directive('labelInput', function () {
|
|
return {
|
|
templateUrl: '/static/directives/label-input.html',
|
|
restrict: 'C',
|
|
replace: true,
|
|
scope: {
|
|
'labels': '<labels',
|
|
'updatedLabels': '=?updatedLabels',
|
|
},
|
|
controller: function($scope) {
|
|
$scope.tags = [];
|
|
|
|
$scope.$watch('tags', function(tags) {
|
|
if (!tags) { return; }
|
|
$scope.updatedLabels = tags.filter(function(tag) {
|
|
parts = tag['keyValue'].split('=', 2);
|
|
return tag['label'] ? tag['label'] : {
|
|
'key': parts[0],
|
|
'value': parts[1],
|
|
'is_new': true
|
|
};
|
|
});
|
|
}, true);
|
|
|
|
$scope.$watch('labels', function(labels) {
|
|
$scope.filteredLabels = labels.filter(function(label) {
|
|
return label['source_type'] == 'api';
|
|
});
|
|
|
|
$scope.tags = $scope.filteredLabels.map(function(label) {
|
|
return {
|
|
'id': label['id'],
|
|
'keyValue': label['key'] + '=' + label['value'],
|
|
'label': label
|
|
};
|
|
});
|
|
});
|
|
}
|
|
};
|
|
});
|