From d61ba5489935846be50288a86f62f12cb9af788d Mon Sep 17 00:00:00 2001 From: Gregg Zigler Date: Thu, 2 Jul 2015 11:06:37 -0700 Subject: [PATCH] replace outputs list at bottom with expandable list at top --- public/views/includes/output.html | 41 ++++++++++++------------ public/views/includes/transaction.html | 6 ++-- public/views/modals/txp-details.html | 25 +++++++-------- src/js/controllers/index.js | 43 ++++++++++++++------------ src/js/controllers/walletHome.js | 14 +++++++++ 5 files changed, 73 insertions(+), 56 deletions(-) diff --git a/public/views/includes/output.html b/public/views/includes/output.html index ee51e0605..905908dfc 100644 --- a/public/views/includes/output.html +++ b/public/views/includes/output.html @@ -1,20 +1,23 @@ -
- +
+
  • + To: + {{output.summary.length}} + recipients + + +
  • +
  • + To: + {{output.toAddress}} +
  • +
  • + Amount: + {{output.amountStr}} + {{output.alternativeAmountStr}} + +
  • +
  • + Note: + {{output.message}} +
  • diff --git a/public/views/includes/transaction.html b/public/views/includes/transaction.html index f964a4f7f..f16692361 100644 --- a/public/views/includes/transaction.html +++ b/public/views/includes/transaction.html @@ -17,10 +17,8 @@ {{tx.merchant.domain}} - {{tx.outputs[0].toAddress.substring(0, 16)+'...'}} - and - {{tx.outputs.length - 1}} - more + {{tx.outputs[0].summary.length}} + recipients diff --git a/public/views/modals/txp-details.html b/public/views/modals/txp-details.html index 82a4f1f14..fbe0fcb57 100644 --- a/public/views/modals/txp-details.html +++ b/public/views/modals/txp-details.html @@ -14,17 +14,24 @@ diff --git a/src/js/controllers/index.js b/src/js/controllers/index.js index 2260e92c5..f4b24d012 100644 --- a/src/js/controllers/index.js +++ b/src/js/controllers/index.js @@ -431,16 +431,21 @@ angular.module('copayApp.controllers').controller('indexController', function($r lodash.each(txps, function(tx) { // gregg hack test data if (!tx.outputs) { - tx.outputs = [ - { toAddress: '2MzCXF7QW4ArgiwDTh12qU3ymWNZzNsrbLo', amount: 123456, message: 'Bitography, Inc.' }, - { toAddress: '2N9JWQkJxbpbW6M4sVaz2Yvn4yczTZgZZh6', amount: 76543, message: 'Chipotle @ Buckhead' }, - { toAddress: '2NFvpdtduhJzQaJcsx3Hf1oJ1U4ouUfLiFG', amount: 543210, message: 'Grand Decentral' } - ]; + var maxCount = 5; + var notes = [ 'bitography.co', 'Chipotle @ Buckhead', 'Decentralus Maximus', 'Everyday Deals', 'FinTech Solutions']; + var addrs = [ '2MzCXF7QW4ArgiwDTh12qU3ymWNZzNsrbLo', '2N9JWQkJxbpbW6M4sVaz2Yvn4yczTZgZZh6', '2NFvpdtduhJzQaJcsx3Hf1oJ1U4ouUfLiFG']; + tx.outputs = []; + for (var i = 0; i < maxCount; i++) { + tx.outputs.push({ + toAddress: addrs[Math.round(Math.random() * addrs.length) % addrs.length], + amount: 100 * Math.round(Math.random() * Math.pow(10, (i % 5) + 2)) + 1, + message: notes[Math.round(Math.random() * notes.length) % notes.length] + }); + } } // gregg hack test data - function formatAmount(obj) { - var amount = obj.amount * self.satToUnit; + function formatAmount(obj, amount) { obj.amountStr = profileService.formatAmount(obj.amount) + ' ' + config.unitName; obj.alternativeAmount = rateService.toFiat(obj.amount, config.alternativeIsoCode) ? rateService.toFiat(obj.amount, config.alternativeIsoCode).toFixed(2) : 'N/A'; obj.alternativeAmountStr = obj.alternativeAmount + " " + config.alternativeIsoCode; @@ -454,24 +459,24 @@ angular.module('copayApp.controllers').controller('indexController', function($r delete tx.outputs; } else { tx.amount = lodash.reduce(tx.outputs, function(total, o) { + formatAmount(o, o.amount * self.satToUnit); return total + o.amount; }, 0); - var cumAmount = 0; - var cumPercent = 0; - var sorted = lodash.sortBy(tx.outputs, function(o) { + var summary = lodash.sortBy(tx.outputs, function(o) { return -1 * o.amount; // descending order }); - tx.outputs = lodash.transform(sorted, function(outputs, o) { - cumAmount += o.amount; - cumPercent += 100 * (o.amount / tx.amount); - o.cumAmount = cumAmount; - o.cumPercent = cumPercent; - formatAmount(o); - outputs.push(o); - }, []); + tx.outputs = [{ + amount: tx.amount, + message: tx.message, + summary: summary + }]; + tx.outputs[0].parent = tx.outputs; + tx.outputs.transform = formatAmount; + tx.outputs.accumulator = 'amount'; + formatAmount(tx.outputs[0], tx.amount * self.satToUnit); } } - formatAmount(tx); + formatAmount(tx, tx.amount * self.satToUnit); tx.feeStr = profileService.formatAmount(tx.fee) + ' ' + config.unitName; tx.alternativeIsoCode = config.alternativeIsoCode; diff --git a/src/js/controllers/walletHome.js b/src/js/controllers/walletHome.js index c4d19c977..a66dd56bd 100644 --- a/src/js/controllers/walletHome.js +++ b/src/js/controllers/walletHome.js @@ -364,6 +364,20 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi self.copyAddress(addr); }; + $scope.expand = function(list) { + if (list && list.length && list[list.length - 1].summary) { + var lastItem = list.pop(); + if (lastItem.summary.length === 0) return; + var nextItem = lastItem.summary.shift(); + lastItem[list.accumulator] -= nextItem[list.accumulator]; + list.push(nextItem); + if (lastItem.summary.length) { + list.transform(lastItem, lastItem[list.accumulator]); + list.push(lastItem); + } + } + }; + $scope.cancel = function() { $modalInstance.dismiss('cancel'); };