Add receipt/invoice email support and option to Quay

This commit is contained in:
Joseph Schorr 2013-11-15 14:42:31 -05:00
parent 318dc79de3
commit 457b619647
14 changed files with 310 additions and 32 deletions

View file

@ -6,6 +6,20 @@
visibility: hidden;
}
.settings-option {
padding: 4px;
font-size: 18px;
}
.settings-option label {
margin-left: 6px;
}
.settings-option .settings-description {
font-size: 12px;
color: #aaa;
}
.organization-header-element {
padding: 20px;
margin-bottom: 20px;

View file

@ -0,0 +1,17 @@
<div class="billing-options-element">
<div class="panel">
<div class="panel-title">
Billing Options
<i class="fa fa-spinner fa-spin" ng-show="working"></i>
</div>
<div class="panel-body">
<div class="settings-option">
<input id="invoiceEmail" type="checkbox" ng-model="invoice_email">
<label for="invoiceEmail">Send Receipt Emails</label>
<div class="settings-description">
If checked, a receipt email will be sent to {{ obj.email }} on every successful billing
</div>
</div>
</div>
</div>
</div>

View file

@ -621,6 +621,52 @@ quayApp.directive('roleGroup', function () {
});
quayApp.directive('billingOptions', function () {
var directiveDefinitionObject = {
priority: 0,
templateUrl: '/static/directives/billing-options.html',
replace: false,
transclude: false,
restrict: 'C',
scope: {
'user': '=user',
'organization': '=organization'
},
controller: function($scope, $element, Restangular) {
$scope.invoice_email = false;
var update = function() {
if (!$scope.user && !$scope.organization) { return; }
$scope.obj = $scope.user ? $scope.user : $scope.organization;
$scope.invoice_email = $scope.obj.invoice_email;
};
var save = function() {
$scope.working = true;
var url = $scope.organization ? getRestUrl('organization', $scope.organization.name) : 'user/';
var conductSave = Restangular.one(url);
conductSave.customPUT($scope.obj).then(function(resp) {
$scope.working = false;
});
};
var checkSave = function() {
if (!$scope.obj) { return; }
if ($scope.obj.invoice_email != $scope.invoice_email) {
$scope.obj.invoice_email = $scope.invoice_email;
save();
}
};
$scope.$watch('invoice_email', checkSave);
$scope.$watch('organization', update);
$scope.$watch('user', update);
}
};
return directiveDefinitionObject;
});
quayApp.directive('planManager', function () {
var directiveDefinitionObject = {
priority: 0,

View file

@ -29,8 +29,10 @@
<!-- Billing tab -->
<div id="billing" class="tab-pane">
<div class="billing-options" organization="organization"></div>
<div ng-show="invoiceLoading">
<i class="fa fa-spinner fa-spin fa-3x"></i>
Loading billing history: <i class="fa fa-spinner fa-spin fa-2x" style="vertical-align: middle; margin-left: 4px"></i>
</div>
<div ng-show="!invoiceLoading && !invoices">

View file

@ -28,6 +28,7 @@
<ul class="nav nav-pills nav-stacked">
<li class="active"><a href="javascript:void(0)" data-toggle="tab" data-target="#plan">Plan and Usage</a></li>
<li><a href="javascript:void(0)" data-toggle="tab" data-target="#password">Set Password</a></li>
<li><a href="javascript:void(0)" data-toggle="tab" data-target="#billing">Billing Options</a></li>
<li><a href="javascript:void(0)" data-toggle="tab" data-target="#migrate" id="migrateTab">Convert to Organization</a></li>
</ul>
</div>
@ -57,6 +58,11 @@
</form>
</div>
</div>
<!-- Billing options tab -->
<div id="billing" class="tab-pane">
<div class="billing-options" user="user"></div>
</div>
<!-- Convert to organization tab -->
<div id="migrate" class="tab-pane">