98 lines
2.8 KiB
JavaScript
98 lines
2.8 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.showCreateField = null;
|
||
|
$scope.invoiceFields = [];
|
||
|
|
||
|
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;
|
||
|
}, function() {
|
||
|
$scope.invoices = [];
|
||
|
$scope.loading = false;
|
||
|
});
|
||
|
|
||
|
ApiService.listInvoiceFields($scope.organization).then(function(resp) {
|
||
|
$scope.invoiceFields = resp.fields || [];
|
||
|
}, function() {
|
||
|
$scope.invoiceFields = [];
|
||
|
});
|
||
|
};
|
||
|
|
||
|
$scope.$watch('organization', update);
|
||
|
$scope.$watch('user', update);
|
||
|
$scope.$watch('makevisible', update);
|
||
|
|
||
|
$scope.showCreateField = function() {
|
||
|
$scope.createFieldInfo = {
|
||
|
'title': '',
|
||
|
'value': ''
|
||
|
};
|
||
|
};
|
||
|
|
||
|
$scope.askDeleteField = function(field) {
|
||
|
bootbox.confirm('Are you sure you want to delete field ' + field.title + '?', function(r) {
|
||
|
if (r) {
|
||
|
var params = {
|
||
|
'field_uuid': field.uuid
|
||
|
};
|
||
|
|
||
|
ApiService.deleteInvoiceField($scope.organization, null, params).then(function(resp) {
|
||
|
$scope.invoiceFields = $.grep($scope.invoiceFields, function(current) {
|
||
|
return current.uuid != field.uuid
|
||
|
});
|
||
|
|
||
|
}, ApiService.errorDisplay('Could not delete custom field'));
|
||
|
}
|
||
|
});
|
||
|
};
|
||
|
|
||
|
$scope.createCustomField = function(title, value, callback) {
|
||
|
var data = {
|
||
|
'title': title,
|
||
|
'value': value
|
||
|
};
|
||
|
|
||
|
if (!title || !value) {
|
||
|
callback(false);
|
||
|
bootbox.alert('Missing title or value');
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
ApiService.createInvoiceField($scope.organization, data).then(function(resp) {
|
||
|
$scope.invoiceFields.push(resp);
|
||
|
callback(true);
|
||
|
}, ApiService.errorDisplay('Could not create custom field'));
|
||
|
};
|
||
|
}
|
||
|
};
|
||
|
|
||
|
return directiveDefinitionObject;
|
||
|
});
|
||
|
|