50 lines
1.3 KiB
JavaScript
50 lines
1.3 KiB
JavaScript
|
/**
|
||
|
* Element for displaying the list of billing invoices for the user or organization.
|
||
|
*/
|
||
|
angular.module('quay').directive('billingInvoices', function () {
|
||
|
var directiveDefinitionObject = {
|
||
|
priority: 0,
|
||
|
templateUrl: '/static/directives/billing-invoices.html',
|
||
|
replace: false,
|
||
|
transclude: false,
|
||
|
restrict: 'C',
|
||
|
scope: {
|
||
|
'organization': '=organization',
|
||
|
'user': '=user',
|
||
|
'makevisible': '=makevisible'
|
||
|
},
|
||
|
controller: function($scope, $element, $sce, ApiService) {
|
||
|
$scope.loading = false;
|
||
|
$scope.invoiceExpanded = {};
|
||
|
|
||
|
$scope.toggleInvoice = function(id) {
|
||
|
$scope.invoiceExpanded[id] = !$scope.invoiceExpanded[id];
|
||
|
};
|
||
|
|
||
|
var update = function() {
|
||
|
var hasValidUser = !!$scope.user;
|
||
|
var hasValidOrg = !!$scope.organization;
|
||
|
var isValid = hasValidUser || hasValidOrg;
|
||
|
|
||
|
if (!$scope.makevisible || !isValid) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
$scope.loading = true;
|
||
|
|
||
|
ApiService.listInvoices($scope.organization).then(function(resp) {
|
||
|
$scope.invoices = resp.invoices;
|
||
|
$scope.loading = false;
|
||
|
});
|
||
|
};
|
||
|
|
||
|
$scope.$watch('organization', update);
|
||
|
$scope.$watch('user', update);
|
||
|
$scope.$watch('makevisible', update);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
return directiveDefinitionObject;
|
||
|
});
|
||
|
|