From 805eebb7528f6a9c1a9759191984c52d485c962f Mon Sep 17 00:00:00 2001 From: Gregg Zigler Date: Wed, 1 Jul 2015 15:36:44 -0700 Subject: [PATCH 1/9] handle multiple outputs in transaction proposal --- public/views/includes/output.html | 20 +++++++++++ public/views/includes/transaction.html | 12 +++++-- public/views/modals/txp-details.html | 9 ++++- src/js/controllers/index.js | 50 ++++++++++++++++++++++---- 4 files changed, 82 insertions(+), 9 deletions(-) create mode 100644 public/views/includes/output.html diff --git a/public/views/includes/output.html b/public/views/includes/output.html new file mode 100644 index 000000000..ee51e0605 --- /dev/null +++ b/public/views/includes/output.html @@ -0,0 +1,20 @@ +
+ +
diff --git a/public/views/includes/transaction.html b/public/views/includes/transaction.html index 4b0a2b47a..f964a4f7f 100644 --- a/public/views/includes/transaction.html +++ b/public/views/includes/transaction.html @@ -16,8 +16,16 @@ {{tx.merchant.domain}} {{tx.merchant.domain}} - - {{tx.toAddress}} + + {{tx.outputs[0].toAddress.substring(0, 16)+'...'}} + and + {{tx.outputs.length - 1}} + more + + + + {{tx.toAddress}} +
{{tx.message}} diff --git a/public/views/modals/txp-details.html b/public/views/modals/txp-details.html index debb853af..82a4f1f14 100644 --- a/public/views/modals/txp-details.html +++ b/public/views/modals/txp-details.html @@ -16,7 +16,8 @@
+
+
+
+
+
diff --git a/src/js/controllers/index.js b/src/js/controllers/index.js index 53a9b5703..2260e92c5 100644 --- a/src/js/controllers/index.js +++ b/src/js/controllers/index.js @@ -429,15 +429,53 @@ angular.module('copayApp.controllers').controller('indexController', function($r var config = configService.getSync().wallet.settings; self.pendingTxProposalsCountForUs = 0; lodash.each(txps, function(tx) { - var amount = tx.amount * self.satToUnit; - tx.amountStr = profileService.formatAmount(tx.amount) + ' ' + config.unitName; + // 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' } + ]; + } + // gregg hack test data + + function formatAmount(obj) { + var amount = obj.amount * self.satToUnit; + 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; + }; + + if (tx.outputs) { + if (tx.outputs.length === 1) { + tx.amount = tx.outputs[0].amount; + tx.toAddress = tx.outputs[0].toAddress; + tx.message += (' ' + tx.outputs[0].message); + delete tx.outputs; + } else { + tx.amount = lodash.reduce(tx.outputs, function(total, o) { + return total + o.amount; + }, 0); + var cumAmount = 0; + var cumPercent = 0; + var sorted = 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); + }, []); + } + } + formatAmount(tx); + tx.feeStr = profileService.formatAmount(tx.fee) + ' ' + config.unitName; - tx.alternativeAmount = rateService.toFiat(tx.amount, config.alternativeIsoCode) ? rateService.toFiat(tx.amount, config.alternativeIsoCode).toFixed(2) : 'N/A'; - tx.alternativeAmountStr = tx.alternativeAmount + " " + config.alternativeIsoCode; tx.alternativeIsoCode = config.alternativeIsoCode; - - var action = lodash.find(tx.actions, { copayerId: self.copayerId }); From d61ba5489935846be50288a86f62f12cb9af788d Mon Sep 17 00:00:00 2001 From: Gregg Zigler Date: Thu, 2 Jul 2015 11:06:37 -0700 Subject: [PATCH 2/9] 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.toAddress}} -
  • -
  • - Amount: - {{output.amountStr}} - {{output.alternativeAmountStr}} - -
  • -
  • - Note: - {{output.message}} -
  • -
+
+
  • + 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'); }; From d929e329499cfe5f261fc3fe0f37f5ad1c068933 Mon Sep 17 00:00:00 2001 From: Gregg Zigler Date: Tue, 7 Jul 2015 14:33:12 -0700 Subject: [PATCH 3/9] remove data hack, display proposals honestly --- public/views/includes/transaction.html | 2 +- src/js/controllers/index.js | 21 ++------------------- src/js/controllers/walletHome.js | 8 ++++++-- 3 files changed, 9 insertions(+), 22 deletions(-) diff --git a/public/views/includes/transaction.html b/public/views/includes/transaction.html index f16692361..f6911be0c 100644 --- a/public/views/includes/transaction.html +++ b/public/views/includes/transaction.html @@ -17,7 +17,7 @@ {{tx.merchant.domain}} - {{tx.outputs[0].summary.length}} + {{tx.outputs.recipientCount}} recipients diff --git a/src/js/controllers/index.js b/src/js/controllers/index.js index f4b24d012..586a230f0 100644 --- a/src/js/controllers/index.js +++ b/src/js/controllers/index.js @@ -429,22 +429,6 @@ angular.module('copayApp.controllers').controller('indexController', function($r var config = configService.getSync().wallet.settings; self.pendingTxProposalsCountForUs = 0; lodash.each(txps, function(tx) { - // gregg hack test data - if (!tx.outputs) { - 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, 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'; @@ -462,9 +446,7 @@ angular.module('copayApp.controllers').controller('indexController', function($r formatAmount(o, o.amount * self.satToUnit); return total + o.amount; }, 0); - var summary = lodash.sortBy(tx.outputs, function(o) { - return -1 * o.amount; // descending order - }); + var summary = lodash.sortBy(tx.outputs, 'amount').reverse(); tx.outputs = [{ amount: tx.amount, message: tx.message, @@ -473,6 +455,7 @@ angular.module('copayApp.controllers').controller('indexController', function($r tx.outputs[0].parent = tx.outputs; tx.outputs.transform = formatAmount; tx.outputs.accumulator = 'amount'; + tx.outputs.recipientCount = summary.length; formatAmount(tx.outputs[0], tx.amount * self.satToUnit); } } diff --git a/src/js/controllers/walletHome.js b/src/js/controllers/walletHome.js index a66dd56bd..af32b891f 100644 --- a/src/js/controllers/walletHome.js +++ b/src/js/controllers/walletHome.js @@ -372,8 +372,12 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi lastItem[list.accumulator] -= nextItem[list.accumulator]; list.push(nextItem); if (lastItem.summary.length) { - list.transform(lastItem, lastItem[list.accumulator]); - list.push(lastItem); + if (lastItem.summary.length === 1) { + list.push(lastItem.summary.pop()); + } else { + list.transform(lastItem, lastItem[list.accumulator]); + list.push(lastItem); + } } } }; From acf33a54672358f0971cb08e1a6643e438fd1400 Mon Sep 17 00:00:00 2001 From: Gregg Zigler Date: Thu, 9 Jul 2015 14:12:36 -0700 Subject: [PATCH 4/9] txp outputs must be in same order and fully expanded so that signature matches --- src/js/controllers/index.js | 2 +- src/js/controllers/walletHome.js | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/js/controllers/index.js b/src/js/controllers/index.js index 586a230f0..67e8ab81c 100644 --- a/src/js/controllers/index.js +++ b/src/js/controllers/index.js @@ -446,7 +446,7 @@ angular.module('copayApp.controllers').controller('indexController', function($r formatAmount(o, o.amount * self.satToUnit); return total + o.amount; }, 0); - var summary = lodash.sortBy(tx.outputs, 'amount').reverse(); + var summary = tx.outputs; tx.outputs = [{ amount: tx.amount, message: tx.message, diff --git a/src/js/controllers/walletHome.js b/src/js/controllers/walletHome.js index af32b891f..9d9c431e7 100644 --- a/src/js/controllers/walletHome.js +++ b/src/js/controllers/walletHome.js @@ -255,6 +255,10 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi $scope.loading = true; $scope.error = null; $timeout(function() { + lodash.times( + txp.outputs ? txp.outputs.recipientCount : 0, + function(n) { $scope.expand(txp.outputs); } + ); fc.signTxProposal(txp, function(err, txpsi) { profileService.lockFC(); self.setOngoingProcess(); From c18fca0d7ad519bc01f82ffaae0671e4110b7cbc Mon Sep 17 00:00:00 2001 From: Gregg Zigler Date: Thu, 16 Jul 2015 13:31:46 -0700 Subject: [PATCH 5/9] if only one recipient, do not summarize in views --- public/views/includes/output.html | 7 ++++- public/views/includes/transaction.html | 6 ++++- src/js/controllers/index.js | 37 +++++++++++--------------- 3 files changed, 26 insertions(+), 24 deletions(-) diff --git a/public/views/includes/output.html b/public/views/includes/output.html index 905908dfc..82f324b62 100644 --- a/public/views/includes/output.html +++ b/public/views/includes/output.html @@ -1,10 +1,11 @@
  • To: - {{output.summary.length}} + {{output.summary.length}} recipients + {{output.summary[0].toAddress}}
  • To: @@ -16,6 +17,10 @@ {{output.alternativeAmountStr}}
  • +
  • + Note: + {{output.summary[0].message}} +
  • Note: {{output.message}} diff --git a/public/views/includes/transaction.html b/public/views/includes/transaction.html index f6911be0c..2ad5ecab5 100644 --- a/public/views/includes/transaction.html +++ b/public/views/includes/transaction.html @@ -16,10 +16,14 @@ {{tx.merchant.domain}} {{tx.merchant.domain}} - + {{tx.outputs.recipientCount}} recipients + + + {{tx.outputs[0].summary[0].toAddress}} + {{tx.toAddress}} diff --git a/src/js/controllers/index.js b/src/js/controllers/index.js index 67e8ab81c..62b8b7294 100644 --- a/src/js/controllers/index.js +++ b/src/js/controllers/index.js @@ -436,28 +436,21 @@ angular.module('copayApp.controllers').controller('indexController', function($r }; if (tx.outputs) { - if (tx.outputs.length === 1) { - tx.amount = tx.outputs[0].amount; - tx.toAddress = tx.outputs[0].toAddress; - tx.message += (' ' + tx.outputs[0].message); - 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 summary = tx.outputs; - tx.outputs = [{ - amount: tx.amount, - message: tx.message, - summary: summary - }]; - tx.outputs[0].parent = tx.outputs; - tx.outputs.transform = formatAmount; - tx.outputs.accumulator = 'amount'; - tx.outputs.recipientCount = summary.length; - formatAmount(tx.outputs[0], tx.amount * self.satToUnit); - } + tx.amount = lodash.reduce(tx.outputs, function(total, o) { + formatAmount(o, o.amount * self.satToUnit); + return total + o.amount; + }, 0); + var summary = tx.outputs; + tx.outputs = [{ + amount: tx.amount, + message: tx.message, + summary: summary + }]; + tx.outputs[0].parent = tx.outputs; + tx.outputs.transform = formatAmount; + tx.outputs.accumulator = 'amount'; + tx.outputs.recipientCount = summary.length; + formatAmount(tx.outputs[0], tx.amount * self.satToUnit); } formatAmount(tx, tx.amount * self.satToUnit); From 8caffb8632997eef922a9b7650d944c6cc8149d9 Mon Sep 17 00:00:00 2001 From: Gregg Zigler Date: Fri, 17 Jul 2015 14:48:46 -0700 Subject: [PATCH 6/9] simplify html, improve localizability by using Recipients as label --- public/views/includes/output.html | 10 ++-------- public/views/includes/transaction.html | 18 +++++++----------- 2 files changed, 9 insertions(+), 19 deletions(-) diff --git a/public/views/includes/output.html b/public/views/includes/output.html index 82f324b62..30779518d 100644 --- a/public/views/includes/output.html +++ b/public/views/includes/output.html @@ -1,11 +1,9 @@
  • - To: - {{output.summary.length}} - recipients + Recipients: + {{output.summary.length}} - {{output.summary[0].toAddress}}
  • To: @@ -17,10 +15,6 @@ {{output.alternativeAmountStr}}
  • -
  • - Note: - {{output.summary[0].message}} -
  • Note: {{output.message}} diff --git a/public/views/includes/transaction.html b/public/views/includes/transaction.html index 2ad5ecab5..a5438e714 100644 --- a/public/views/includes/transaction.html +++ b/public/views/includes/transaction.html @@ -11,20 +11,16 @@
  • - To: - - {{tx.merchant.domain}} - {{tx.merchant.domain}} - - + + Recipients: {{tx.outputs.recipientCount}} - recipients - - - - {{tx.outputs[0].summary[0].toAddress}} + To: + + {{tx.merchant.domain}} + {{tx.merchant.domain}} + {{tx.toAddress}} From 4867e9983f264d0019992978b563e84899eb5db0 Mon Sep 17 00:00:00 2001 From: Gregg Zigler Date: Thu, 23 Jul 2015 15:06:56 -0700 Subject: [PATCH 7/9] simplify recipient summary logic so that entire list is expanded with one click --- public/views/includes/output.html | 14 ++++++++------ public/views/includes/transaction.html | 2 +- public/views/modals/txp-details.html | 2 +- src/js/controllers/index.js | 17 ++++++++--------- src/js/controllers/walletHome.js | 26 +++++++------------------- 5 files changed, 25 insertions(+), 36 deletions(-) diff --git a/public/views/includes/output.html b/public/views/includes/output.html index 30779518d..2e8355edb 100644 --- a/public/views/includes/output.html +++ b/public/views/includes/output.html @@ -1,21 +1,23 @@
    -
  • +
  • Recipients: - {{output.summary.length}} + {{output.parent.length}}
  • -
  • +
  • To: - {{output.toAddress}} + {{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 a5438e714..849bd2140 100644 --- a/public/views/includes/transaction.html +++ b/public/views/includes/transaction.html @@ -13,7 +13,7 @@
    Recipients: - {{tx.outputs.recipientCount}} + {{tx.outputs.length}} To: diff --git a/public/views/modals/txp-details.html b/public/views/modals/txp-details.html index fbe0fcb57..5a1554944 100644 --- a/public/views/modals/txp-details.html +++ b/public/views/modals/txp-details.html @@ -15,7 +15,7 @@

    Details

    • diff --git a/src/js/controllers/index.js b/src/js/controllers/index.js index 62b8b7294..7148ab005 100644 --- a/src/js/controllers/index.js +++ b/src/js/controllers/index.js @@ -436,21 +436,20 @@ angular.module('copayApp.controllers').controller('indexController', function($r }; 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); return total + o.amount; }, 0); - var summary = tx.outputs; - tx.outputs = [{ + tx.outputs.summary = [{ amount: tx.amount, message: tx.message, - summary: summary + parent: tx.outputs }]; - tx.outputs[0].parent = tx.outputs; - tx.outputs.transform = formatAmount; - tx.outputs.accumulator = 'amount'; - tx.outputs.recipientCount = summary.length; - formatAmount(tx.outputs[0], tx.amount * self.satToUnit); + formatAmount(tx.outputs.summary[0], tx.amount * self.satToUnit); + tx.outputs.isSummarized = true; + tx.outputs.list = tx.outputs.summary; } formatAmount(tx, tx.amount * self.satToUnit); diff --git a/src/js/controllers/walletHome.js b/src/js/controllers/walletHome.js index 9d9c431e7..e3479c451 100644 --- a/src/js/controllers/walletHome.js +++ b/src/js/controllers/walletHome.js @@ -255,10 +255,6 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi $scope.loading = true; $scope.error = null; $timeout(function() { - lodash.times( - txp.outputs ? txp.outputs.recipientCount : 0, - function(n) { $scope.expand(txp.outputs); } - ); fc.signTxProposal(txp, function(err, txpsi) { profileService.lockFC(); self.setOngoingProcess(); @@ -368,21 +364,13 @@ 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) { - if (lastItem.summary.length === 1) { - list.push(lastItem.summary.pop()); - } else { - list.transform(lastItem, lastItem[list.accumulator]); - list.push(lastItem); - } - } + $scope.toggleOutputSummary = function(output) { + if (output.parent.isSummarized) { + output.parent.isSummarized = false; + output.parent.list = output.parent.details; + } else { + output.parent.isSummarized = true; + output.parent.list = output.parent.summary; } }; From 43bca75728b21328e6dbacf9468ca307bb45e3c6 Mon Sep 17 00:00:00 2001 From: Gregg Zigler Date: Tue, 28 Jul 2015 10:22:46 -0700 Subject: [PATCH 8/9] txp and txhistory share outputs.html for all amount/address/message --- public/views/includes/output.html | 24 +++++------ public/views/modals/tx-details.html | 17 ++++---- public/views/modals/txp-details.html | 26 +++++------- src/js/controllers/index.js | 59 +++++++++++++++++----------- src/js/controllers/walletHome.js | 14 +++---- 5 files changed, 75 insertions(+), 65 deletions(-) diff --git a/public/views/includes/output.html b/public/views/includes/output.html index 2e8355edb..d217412b2 100644 --- a/public/views/includes/output.html +++ b/public/views/includes/output.html @@ -1,24 +1,24 @@
      -
    • +
    • Recipients: - {{output.parent.length}} - + {{output.recipientCount}} + +
    • -
    • +
    • To: - {{output.toAddress}} - - + {{output.toAddress || output.address}}
    • -
    • - Amount: +
    • + Total + Amount: {{output.amountStr}} - {{output.alternativeAmountStr}} + {{output.alternativeAmountStr}}
    • -
    • +
    • Note: - {{output.message}} + {{output.message}}
    diff --git a/public/views/modals/tx-details.html b/public/views/modals/tx-details.html index 459d6601e..51df05a21 100644 --- a/public/views/modals/tx-details.html +++ b/public/views/modals/tx-details.html @@ -27,8 +27,17 @@

    Details

    +
      -
    • +
      +
      +
      +
      +
    • To: @@ -54,12 +63,6 @@ Fee: {{feeStr}}
    • -
    • - Note: - - {{btx.message}} - -
    • Merchant message: diff --git a/public/views/modals/txp-details.html b/public/views/modals/txp-details.html index 5a1554944..783668dae 100644 --- a/public/views/modals/txp-details.html +++ b/public/views/modals/txp-details.html @@ -14,24 +14,18 @@
      - + Recipients: {{tx.outputs.length}} - + To: {{tx.merchant.domain}}