simplify recipient summary logic so that entire list is expanded with one click

This commit is contained in:
Gregg Zigler 2015-07-23 15:06:56 -07:00
commit 4867e9983f
5 changed files with 25 additions and 36 deletions

View file

@ -1,21 +1,23 @@
<div class="ng-animate-disabled row collapse line-b" ng-class="text-gray"> <div class="ng-animate-disabled row collapse line-b" ng-class="text-gray">
<li ng-if="output.summary" class="line-b p10 oh" ng-click="expand(output.parent)"> <li ng-if="output.parent.isSummarized" class="line-b p10 oh" ng-click="toggleOutputSummary(output)">
<span class="text-gray" translate>Recipients</span>: <span class="text-gray" translate>Recipients</span>:
<span class="right enable_text_select">{{output.summary.length}} <span class="right enable_text_select">{{output.parent.length}}
<i class="icon-arrow-down size-24"></i> <i class="icon-arrow-down size-24"></i>
</span> </span>
</li> </li>
<li ng-if="!output.summary" class="line-b p10 oh" ng-click="copyAddress(output.toAddress)"> <li ng-if="!output.parent.isSummarized" class="line-b p10 oh" ng-click="toggleOutputSummary(output)">
<span class="text-gray" translate>To</span>: <span class="text-gray" translate>To</span>:
<span class="right enable_text_select">{{output.toAddress}}</span> <span class="right enable_text_select">{{output.toAddress}}
<i class="icon-arrow-up size-24"></i>
</span>
</li> </li>
<li class="line-b p10" ng-click="expand(output.parent)"> <li class="line-b p10" ng-click="toggleOutputSummary(output)">
<span class="text-gray" translate>Amount</span>: <span class="text-gray" translate>Amount</span>:
<span class="right">{{output.amountStr}} <span class="right">{{output.amountStr}}
<span class="label gray radius enable_text_select">{{output.alternativeAmountStr}}</span> <span class="label gray radius enable_text_select">{{output.alternativeAmountStr}}</span>
</span> </span>
</li> </li>
<li class="line-b p10 oh" ng-click="expand(output.parent)"> <li class="line-b p10 oh" ng-click="toggleOutputSummary(output)">
<span class="text-gray" translate>Note</span>: <span class="text-gray" translate>Note</span>:
<span class="right enable_text_select">{{output.message}}</span> <span class="right enable_text_select">{{output.message}}</span>
</li> </li>

View file

@ -13,7 +13,7 @@
<div class="ellipsis size-14"> <div class="ellipsis size-14">
<span ng-if="tx.outputs"> <span ng-if="tx.outputs">
<span translate>Recipients</span>: <span translate>Recipients</span>:
<span>{{tx.outputs.recipientCount}}</span> <span>{{tx.outputs.length}}</span>
</span> </span>
<span ng-if="!tx.outputs"> <span ng-if="!tx.outputs">
<span translate>To</span>: <span translate>To</span>:

View file

@ -15,7 +15,7 @@
<h4 class="title m0" translate>Details</h4> <h4 class="title m0" translate>Details</h4>
<ul class="no-bullet size-14 m0"> <ul class="no-bullet size-14 m0">
<div ng-if="tx.outputs" <div ng-if="tx.outputs"
ng-repeat="output in tx.outputs" ng-repeat="output in tx.outputs.list"
ng-include="'views/includes/output.html'"> ng-include="'views/includes/output.html'">
</div> </div>
<li ng-if="!tx.outputs" class="line-b p10 oh" ng-click="copyAddress(tx.toAddress)"> <li ng-if="!tx.outputs" class="line-b p10 oh" ng-click="copyAddress(tx.toAddress)">

View file

@ -436,21 +436,20 @@ angular.module('copayApp.controllers').controller('indexController', function($r
}; };
if (tx.outputs) { if (tx.outputs) {
tx.amount = lodash.reduce(tx.outputs, function(total, o) { tx.outputs.details = JSON.parse(JSON.stringify(tx.outputs));
tx.amount = lodash.reduce(tx.outputs.details, function(total, o) {
o.parent = tx.outputs;
formatAmount(o, o.amount * self.satToUnit); formatAmount(o, o.amount * self.satToUnit);
return total + o.amount; return total + o.amount;
}, 0); }, 0);
var summary = tx.outputs; tx.outputs.summary = [{
tx.outputs = [{
amount: tx.amount, amount: tx.amount,
message: tx.message, message: tx.message,
summary: summary parent: tx.outputs
}]; }];
tx.outputs[0].parent = tx.outputs; formatAmount(tx.outputs.summary[0], tx.amount * self.satToUnit);
tx.outputs.transform = formatAmount; tx.outputs.isSummarized = true;
tx.outputs.accumulator = 'amount'; tx.outputs.list = tx.outputs.summary;
tx.outputs.recipientCount = summary.length;
formatAmount(tx.outputs[0], tx.amount * self.satToUnit);
} }
formatAmount(tx, tx.amount * self.satToUnit); formatAmount(tx, tx.amount * self.satToUnit);

View file

@ -255,10 +255,6 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi
$scope.loading = true; $scope.loading = true;
$scope.error = null; $scope.error = null;
$timeout(function() { $timeout(function() {
lodash.times(
txp.outputs ? txp.outputs.recipientCount : 0,
function(n) { $scope.expand(txp.outputs); }
);
fc.signTxProposal(txp, function(err, txpsi) { fc.signTxProposal(txp, function(err, txpsi) {
profileService.lockFC(); profileService.lockFC();
self.setOngoingProcess(); self.setOngoingProcess();
@ -368,21 +364,13 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi
self.copyAddress(addr); self.copyAddress(addr);
}; };
$scope.expand = function(list) { $scope.toggleOutputSummary = function(output) {
if (list && list.length && list[list.length - 1].summary) { if (output.parent.isSummarized) {
var lastItem = list.pop(); output.parent.isSummarized = false;
if (lastItem.summary.length === 0) return; output.parent.list = output.parent.details;
var nextItem = lastItem.summary.shift(); } else {
lastItem[list.accumulator] -= nextItem[list.accumulator]; output.parent.isSummarized = true;
list.push(nextItem); output.parent.list = output.parent.summary;
if (lastItem.summary.length) {
if (lastItem.summary.length === 1) {
list.push(lastItem.summary.pop());
} else {
list.transform(lastItem, lastItem[list.accumulator]);
list.push(lastItem);
}
}
} }
}; };