mirror of https://github.com/BTCPrivate/copay.git
Merge pull request #2424 from cmgustavo/bug/UX-issues-01
Bug/ux issues 01
This commit is contained in:
commit
3796ddc4fb
|
@ -26,10 +26,6 @@ a:hover {
|
|||
color: #2980b9;
|
||||
}
|
||||
|
||||
.last-transactions-content:hover {
|
||||
background: #eee;
|
||||
}
|
||||
|
||||
a.button-setup.add-wallet:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
|
@ -51,11 +47,6 @@ ul.pagination li.current a:hover, ul.pagination li.current a:focus {
|
|||
background: #16A085;
|
||||
}
|
||||
|
||||
table tr:hover {
|
||||
background-color: #eee;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.button.outline.light-gray:hover {
|
||||
background: rgba(206,213,220,0.40);
|
||||
color: #4B6178;
|
||||
|
@ -187,7 +178,4 @@ a.text-warning:hover {color: #FD7262;}
|
|||
color: #fff;
|
||||
}
|
||||
|
||||
.last-transactions-content.active:hover {
|
||||
background-color: #E4E8EC;
|
||||
}
|
||||
|
||||
|
|
|
@ -616,11 +616,6 @@ ul.tx-copayers {
|
|||
.ma { margin: 0 auto;}
|
||||
.tu {text-transform: uppercase;}
|
||||
|
||||
.small {
|
||||
font-size: 60%;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
.line-dashed-setuph-v {
|
||||
border-left: 1px dashed #415970;
|
||||
}
|
||||
|
@ -850,6 +845,8 @@ input[type=number]::-webkit-outer-spin-button {
|
|||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
padding-top: 3px;
|
||||
line-height: 120%;
|
||||
}
|
||||
|
||||
ul.pagination li.current a {
|
||||
|
|
|
@ -121,7 +121,7 @@
|
|||
}
|
||||
|
||||
.modal-mobile {
|
||||
padding: 60px 0.5rem;
|
||||
padding: 20px .5rem;
|
||||
}
|
||||
|
||||
.reveal-modal {
|
||||
|
@ -393,11 +393,6 @@
|
|||
transform: none !important;
|
||||
}
|
||||
|
||||
.button.secondary:hover, button.secondary:hover {
|
||||
background: #008CC1;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.move-right .close-menu {
|
||||
cursor: pointer;
|
||||
box-shadow: none;
|
||||
|
@ -462,10 +457,22 @@
|
|||
color: #1ABC9C;
|
||||
}
|
||||
|
||||
.tab-bar {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@media (max-width: 640px) {
|
||||
|
||||
.tab-bar {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.modal-mobile {
|
||||
padding: 60px 0.5rem;
|
||||
}
|
||||
|
||||
.tx-comment {
|
||||
border-top: 1px solid #eee;
|
||||
padding-top: 10px;
|
||||
|
|
|
@ -33,25 +33,24 @@ angular.module('copayApp.controllers').controller('CopayersController',
|
|||
};
|
||||
|
||||
$scope.deleteWallet = function() {
|
||||
$scope.loading = true;
|
||||
identityService.deleteWallet(w, function(err) {
|
||||
if (err) {
|
||||
$scope.loading = null;
|
||||
$scope.error = err.message || err;
|
||||
copay.logger.warn(err);
|
||||
$timeout(function() {
|
||||
$scope.$digest();
|
||||
});
|
||||
} else {
|
||||
$scope.loading = false;
|
||||
if ($rootScope.wallet) {
|
||||
go.walletHome();
|
||||
$rootScope.starting = true;
|
||||
$timeout(function() {
|
||||
identityService.deleteWallet(w, function(err) {
|
||||
$rootScope.starting = false;
|
||||
if (err) {
|
||||
$scope.error = err.message || err;
|
||||
copay.logger.warn(err);
|
||||
$timeout(function () { $scope.$digest(); });
|
||||
} else {
|
||||
if ($rootScope.wallet) {
|
||||
go.walletHome();
|
||||
}
|
||||
$timeout(function() {
|
||||
notification.success('Success', 'The wallet "' + (w.name || w.id) + '" was deleted');
|
||||
});
|
||||
}
|
||||
$timeout(function() {
|
||||
notification.success('Success', 'The wallet "' + (w.name || w.id) + '" was deleted');
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
}, 100);
|
||||
};
|
||||
|
||||
$scope.copySecret = function(secret) {
|
||||
|
|
|
@ -18,6 +18,7 @@ angular.module('copayApp.controllers').controller('HistoryController',
|
|||
$scope.alternativeCurrency = [];
|
||||
|
||||
$scope.selectPage = function(page) {
|
||||
$scope.paging = true;
|
||||
$scope.currentPage = page;
|
||||
$scope.update();
|
||||
};
|
||||
|
@ -188,6 +189,7 @@ angular.module('copayApp.controllers').controller('HistoryController',
|
|||
$scope.totalItems = res.nbItems;
|
||||
|
||||
$scope.loading = false;
|
||||
$scope.paging = false;
|
||||
setTimeout(function() {
|
||||
$scope.$digest();
|
||||
}, 1);
|
||||
|
|
|
@ -119,22 +119,23 @@ angular.module('copayApp.controllers').controller('MoreController',
|
|||
|
||||
$scope.deleteWallet = function() {
|
||||
$scope.loading = true;
|
||||
identityService.deleteWallet(w, function(err) {
|
||||
if (err) {
|
||||
$scope.loading = null;
|
||||
$scope.error = err.message || err;
|
||||
copay.logger.warn(err);
|
||||
$timeout(function () { $scope.$digest(); });
|
||||
} else {
|
||||
$timeout(function() {
|
||||
identityService.deleteWallet(w, function(err) {
|
||||
$scope.loading = false;
|
||||
if ($rootScope.wallet) {
|
||||
go.walletHome();
|
||||
if (err) {
|
||||
$scope.error = err.message || err;
|
||||
copay.logger.warn(err);
|
||||
$timeout(function () { $scope.$digest(); });
|
||||
} else {
|
||||
if ($rootScope.wallet) {
|
||||
go.walletHome();
|
||||
}
|
||||
$timeout(function() {
|
||||
notification.success('Success', 'The wallet "' + (w.name || w.id) + '" was deleted');
|
||||
});
|
||||
}
|
||||
$timeout(function() {
|
||||
notification.success('Success', 'The wallet "' + (w.name || w.id) + '" was deleted');
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
}, 100);
|
||||
};
|
||||
|
||||
$scope.copyText = function(text) {
|
||||
|
|
|
@ -60,7 +60,7 @@ angular.module('copayApp.controllers').controller('ReceiveController',
|
|||
|
||||
$modal.open({
|
||||
templateUrl: 'views/modals/qr-address.html',
|
||||
windowClass: 'tiny',
|
||||
windowClass: 'small',
|
||||
controller: ModalInstanceCtrl,
|
||||
resolve: {
|
||||
address: function() {
|
||||
|
|
|
@ -407,10 +407,13 @@ angular.module('copayApp.controllers').controller('SendController',
|
|||
var $oscope = $scope;
|
||||
$scope.openPPModal = function(merchantData) {
|
||||
var ModalInstanceCtrl = function($scope, $modalInstance) {
|
||||
var w = $rootScope.wallet;
|
||||
var satToUnit = 1 / w.settings.unitToSatoshi;
|
||||
$scope.md = merchantData;
|
||||
$scope.alternative = $oscope._alternative;
|
||||
$scope.alternativeIsoCode = $oscope.alternativeIsoCode;
|
||||
$scope.isRateAvailable = $oscope.isRateAvailable;
|
||||
$scope.unitTotal = (merchantData.total * satToUnit).toFixed(w.settings.unitDecimals);
|
||||
|
||||
$scope.cancel = function() {
|
||||
$modalInstance.dismiss('cancel');
|
||||
|
@ -418,7 +421,7 @@ angular.module('copayApp.controllers').controller('SendController',
|
|||
};
|
||||
$modal.open({
|
||||
templateUrl: 'views/modals/paypro.html',
|
||||
windowClass: 'tiny',
|
||||
windowClass: 'medium',
|
||||
controller: ModalInstanceCtrl,
|
||||
});
|
||||
};
|
||||
|
@ -534,7 +537,8 @@ angular.module('copayApp.controllers').controller('SendController',
|
|||
};
|
||||
|
||||
$scope.cancel = function(form) {
|
||||
$scope.error = $scope.success = null;
|
||||
$scope.error = $scope.success = $scope.newaddress = $scope.newlabel = null;
|
||||
clearForm(form);
|
||||
$scope.toggleForm();
|
||||
};
|
||||
|
||||
|
@ -542,11 +546,23 @@ angular.module('copayApp.controllers').controller('SendController',
|
|||
$scope.showForm = !$scope.showForm;
|
||||
};
|
||||
|
||||
var clearForm = function(form) {
|
||||
form.newaddress.$pristine = true;
|
||||
form.newaddress.$setViewValue('');
|
||||
form.newaddress.$render();
|
||||
|
||||
form.newlabel.$pristine = true;
|
||||
form.newlabel.$setViewValue('');
|
||||
form.newlabel.$render();
|
||||
form.$setPristine();
|
||||
};
|
||||
|
||||
// TODO change to modal
|
||||
$scope.submitAddressBook = function(form) {
|
||||
if (form.$invalid) {
|
||||
return;
|
||||
}
|
||||
$scope.loading = true;
|
||||
$timeout(function() {
|
||||
var errorMsg;
|
||||
var entry = {
|
||||
|
@ -563,11 +579,13 @@ angular.module('copayApp.controllers').controller('SendController',
|
|||
if (errorMsg) {
|
||||
$scope.error = errorMsg;
|
||||
} else {
|
||||
clearForm(form);
|
||||
$scope.toggleForm();
|
||||
notification.success('Entry created', 'New addressbook entry created')
|
||||
}
|
||||
$scope.loading = false;
|
||||
$rootScope.$digest();
|
||||
}, 1);
|
||||
}, 100);
|
||||
return;
|
||||
};
|
||||
|
||||
|
|
|
@ -1,80 +1,86 @@
|
|||
<div ng-controller="CopayersController" ng-init="init()">
|
||||
<div class="row">
|
||||
<div class="large-12 medium-12 small-12 columns">
|
||||
<h1>Share this secret with your copayers</h1>
|
||||
</div>
|
||||
<div ng-show="$root.starting">
|
||||
<div ng-include="'views/includes/loading.html'" ng-init="title = 'Deleting'"></div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="large-8 columns">
|
||||
|
||||
<div ng-if="!$root.wallet.isComplete()">
|
||||
<div class="panel oh">
|
||||
<div class="box-notification">
|
||||
<div class="box-icon error">
|
||||
<i class="fi-alert size-24"></i>
|
||||
</div>
|
||||
<span class="text-warning size-14">
|
||||
Please note the wallet creator <b>must be online</b> until all copayers have joined.
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div ng-click="copySecret(secret)">
|
||||
<div class="text-center">
|
||||
<qrcode size="250" data="{{secret}}"></qrcode>
|
||||
</div>
|
||||
<div class="secret m10t">
|
||||
{{secret}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-center m10t" ng-if="isCordova">
|
||||
<span class="button outline dark-gray tiny"
|
||||
ng-click="shareSecret(secret)">
|
||||
<i class="fi-share"></i> Share secret
|
||||
</span>
|
||||
</div>
|
||||
<div class="size-10 line-t text-center">
|
||||
<h2 class="m10t">{{$root.wallet.getName()}}</h2>
|
||||
<span class="text-gray">
|
||||
[{{$root.wallet.requiredCopayers}} of {{$root.wallet.totalCopayers}} ]
|
||||
</span>
|
||||
<span ng-if="$root.wallet.isTestnet()"> in TESTNET</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="!$root.starting">
|
||||
<div class="row">
|
||||
<div class="large-12 medium-12 small-12 columns">
|
||||
<h1>Share this secret with your copayers</h1>
|
||||
</div>
|
||||
</div>
|
||||
<div class="large-4 columns">
|
||||
<div class="panel oh">
|
||||
<h3>Waiting for copayers</h3>
|
||||
<div ng-include="'views/includes/copayers.html'"></div>
|
||||
<div ng-if="!$root.wallet.isComplete()" class="m15t">
|
||||
<div class="left m10r" ng-include="'views/includes/photo.html'"></div>
|
||||
<p class="size-12 m0 m5t left mv">
|
||||
|
||||
<div class="row">
|
||||
<div class="large-8 columns">
|
||||
|
||||
<div ng-if="!$root.wallet.isComplete()">
|
||||
<div class="panel oh">
|
||||
<div class="box-notification">
|
||||
<div class="box-icon error">
|
||||
<i class="fi-alert size-24"></i>
|
||||
</div>
|
||||
<span class="text-warning size-14">
|
||||
Please note the wallet creator <b>must be online</b> until all copayers have joined.
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div ng-click="copySecret(secret)">
|
||||
<div class="text-center">
|
||||
<qrcode size="250" data="{{secret}}"></qrcode>
|
||||
</div>
|
||||
<div class="secret m10t">
|
||||
{{secret}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-center m10t" ng-if="isCordova">
|
||||
<span class="button outline dark-gray tiny"
|
||||
ng-click="shareSecret(secret)">
|
||||
<i class="fi-share"></i> Share secret
|
||||
</span>
|
||||
</div>
|
||||
<div class="size-10 line-t text-center">
|
||||
<h2 class="m10t">{{$root.wallet.getName()}}</h2>
|
||||
<span class="text-gray">
|
||||
[{{$root.wallet.requiredCopayers}} of {{$root.wallet.totalCopayers}} ]
|
||||
</span>
|
||||
<span ng-if="$root.wallet.isTestnet()"> in TESTNET</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="large-4 columns">
|
||||
<div class="panel oh">
|
||||
<h3>Waiting for copayers</h3>
|
||||
<div ng-include="'views/includes/copayers.html'"></div>
|
||||
<div ng-if="!$root.wallet.isComplete()" class="m15t">
|
||||
<div class="left m10r" ng-include="'views/includes/photo.html'"></div>
|
||||
<p class="size-12 m0 m5t left mv">
|
||||
<i class="fi-loop icon-rotate spinner"></i>
|
||||
<span translate>Waiting...</span>
|
||||
</p>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!-- end of row -->
|
||||
<div class="row">
|
||||
<div class="large-12 columns">
|
||||
<button class="small warning" ng-show="!confirmDelete" ng-click="confirmDelete=!confirmDelete">
|
||||
<i class="fi-trash"></i> Cancel
|
||||
</button>
|
||||
<div class="text-center" ng-show="confirmDelete">
|
||||
<h2>Are you sure you want to cancel and delete this wallet</h2>
|
||||
<div class="row">
|
||||
<div class="large-6 medium-6 small-6 columns">
|
||||
<button class="gray" ng-disabled="loading"
|
||||
ng-click="confirmDelete=!confirmDelete">No</button>
|
||||
</div>
|
||||
<div class="large-6 medium-6 small-6 columns">
|
||||
<button class="warning" ng-disabled="loading" ng-click="deleteWallet(); confirmDelete = !confirmDelete">
|
||||
<i class="fi-trash"></i> Yes
|
||||
</button>
|
||||
<!-- end of row -->
|
||||
<div class="row">
|
||||
<div class="large-12 columns">
|
||||
<button class="small warning" ng-show="!confirmDelete" ng-click="confirmDelete=!confirmDelete">
|
||||
<i class="fi-trash"></i> Cancel
|
||||
</button>
|
||||
<div class="text-center" ng-show="confirmDelete">
|
||||
<h2>Are you sure you want to cancel and delete this wallet</h2>
|
||||
<div class="row">
|
||||
<div class="large-6 medium-6 small-6 columns">
|
||||
<button class="gray" ng-disabled="loading"
|
||||
ng-click="confirmDelete=!confirmDelete">No</button>
|
||||
</div>
|
||||
<div class="large-6 medium-6 small-6 columns">
|
||||
<button class="warning" ng-disabled="loading" ng-click="deleteWallet(); confirmDelete = !confirmDelete">
|
||||
<i class="fi-trash"></i> Yes
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -11,38 +11,48 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" ng-if="blockchain_txs[0].txid">
|
||||
<div class="row m10b" ng-show="paging">
|
||||
<div class="large-12 columns">
|
||||
<div class="panel oh">
|
||||
<span class="text-gray" translate>Getting transactions...</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div ng-show="!paging" class="row" ng-if="blockchain_txs[0].txid">
|
||||
<div class="large-12 columns">
|
||||
<div class="panel oh">
|
||||
<div ng-repeat="btx in blockchain_txs | orderBy:'-ts'" ng-click="openTxModal(btx)" ng-class="{'line-b':!$last}" class="last-transactions-content">
|
||||
<div ng-repeat="btx in blockchain_txs | orderBy:'-ts'"
|
||||
ng-click="openTxModal(btx)"
|
||||
ng-class="{'line-b':!$last}"
|
||||
class="row last-transactions-content">
|
||||
|
||||
<div class="row">
|
||||
<div class="large-6 medium-6 small-12 columns size-16">
|
||||
<div class="ellipsis m10b">
|
||||
<div class="large-6 medium-6 small-5 columns">
|
||||
<div class="ellipsis">
|
||||
{{btx.comment || btx.labelTo}}
|
||||
</div>
|
||||
<div class="m5t size-14 text-gray">
|
||||
<time ng-if="btx.ts">{{btx.ts | amTimeAgo}}</time>
|
||||
<span class="label alert" ng-show="!btx.ts && (!btx.confirmations || btx.confirmations == 0)">
|
||||
<span translate>Unconfirmed</span>
|
||||
<span translate class="text-warning"
|
||||
ng-show="!btx.ts && (!btx.confirmations || btx.confirmations == 0)">
|
||||
Unconfirmed
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="large-6 medium-6 small-12 columns">
|
||||
<div class="text-right" ng-class="{
|
||||
<div class="large-6 medium-6 small-7 columns">
|
||||
<div ng-if="!$root.updatingBalance" class="text-right" ng-class="{
|
||||
'text-primary' : btx.action == 'received',
|
||||
'text-warning': btx.action == 'sent',
|
||||
'text-gray': btx.action == 'moved'}">
|
||||
<span class="size-21">
|
||||
<span ng-if="!$root.updatingBalance">
|
||||
<span ng-if="btx.action == 'received'">+</span><span ng-if="btx.action == 'sent'">-</span>{{btx.amount}}
|
||||
</span>
|
||||
{{$root.wallet.settings.unitName}}
|
||||
<span class="size-18">
|
||||
<span ng-if="btx.action == 'received'">+</span><span ng-if="btx.action == 'sent'">-</span>{{btx.amount}}
|
||||
{{$root.wallet.settings.unitName}}
|
||||
</span>
|
||||
<span class="size-14 db m5t text-gray" ng-show="btx.alternativeAmount">
|
||||
{{btx.alternativeAmount}} {{$root.wallet.settings.alternativeIsoCode}}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -6,12 +6,12 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="left" tooltip="ID: {{copayer.peerId}}" tooltip-placement="bottom">
|
||||
<small class="text-gray" ng-show="copayer.index == 0">
|
||||
<span class="size-12" ng-show="copayer.index == 0">
|
||||
<i class="fi-check m5r"></i> {{'Me'|translate}}
|
||||
</small>
|
||||
<small class="text-gray" ng-show="copayer.index > 0">
|
||||
</span>
|
||||
<span class="size-12 text-gray" ng-show="copayer.index > 0">
|
||||
<i class="fi-check m5r"></i> {{copayer.nick}}
|
||||
</small>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</ul>
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
<nav class="tab-bar text-right hide-for-large-up">
|
||||
<span ng-click="close()" class="p10 text-white">Close</span>
|
||||
</nav>
|
||||
<div class="row modal-mobile">
|
||||
<div class="large-12 columns">
|
||||
<div class="modal-mobile">
|
||||
<h1 ng-show="!showForm">Address Book</h1>
|
||||
<h1 ng-show="showForm">Add a new entry</h1>
|
||||
<p translate class="text-gray m15b" ng-show="!showForm && !hasEntry()">Empty. Create an alias for your addresses</p>
|
||||
|
@ -18,7 +17,7 @@
|
|||
<thead class="show-for-large-up">
|
||||
<tr>
|
||||
<th translate>Entry</th>
|
||||
<th ng-class="{'hide-for-small-only' : $root.wallet.isShared()}" ng-show="$root.wallet.isShared()" translate>Creator</th>
|
||||
<th class="show-for-large-up" ng-class="{'hide-for-small-only' : $root.wallet.isShared()}" ng-show="$root.wallet.isShared()" translate>Creator</th>
|
||||
<th class="show-for-large-up" translate>Date</th>
|
||||
<th class="show-for-large-up">Visible</th>
|
||||
</tr>
|
||||
|
@ -29,9 +28,9 @@
|
|||
ng-class="{'addressbook-disabled': info.hidden}">
|
||||
<td ng-click="copyToSend(addr)">
|
||||
<b>{{info.label}}</b><br>
|
||||
<span class="address-size">{{::addr}}</span>
|
||||
<small class="address-size">{{::addr}}</small>
|
||||
</td>
|
||||
<td ng-click="copyToSend(addr)" ng-show="$root.wallet.isShared()" ng-class="{'hide-for-small-only' : $root.wallet.isShared()}">{{$root.wallet.publicKeyRing.nicknameForCopayer(info.copayerId)}}</td>
|
||||
<td class="show-for-large-up" ng-click="copyToSend(addr)" ng-show="$root.wallet.isShared()">{{$root.wallet.publicKeyRing.nicknameForCopayer(info.copayerId)}}</td>
|
||||
<td ng-click="copyToSend(addr)" class="show-for-large-up"><time>{{::info.createdTs | amCalendar}}</time></td>
|
||||
<td class="show-for-large-up text-center">
|
||||
<a ng-click="toggleAddressBookEntry(addr)" title="{{ info.hidden ? 'Enable' : 'Disable'}} address">
|
||||
|
@ -42,9 +41,9 @@
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="large-6 medium-6 columns large-centered medium-centered" >
|
||||
<form ng-show="showForm" class="m0" name="addressBookForm" ng-submit="submitAddressBook(addressBookForm)" novalidate>
|
||||
<form ng-show="showForm" class="m0" name="addressBookForm"
|
||||
ng-disabled="loading"
|
||||
ng-submit="submitAddressBook(addressBookForm)" novalidate>
|
||||
<div class="box-notification" ng-show="error">
|
||||
<div class="box-icon error">
|
||||
<i class="size-24 fi-x"></i>
|
||||
|
@ -75,14 +74,13 @@
|
|||
placeholder="{{'Label'|translate}}" ng-model="newlabel" required>
|
||||
</div>
|
||||
</label>
|
||||
<a translate class="button secondary default" ng-click="cancel(addressBookForm)">Cancel</a>
|
||||
<a translate class="button secondary default" ng-show="!loading" ng-click="cancel(addressBookForm)">Cancel</a>
|
||||
<button class="primary right"
|
||||
ng-disabled="addressBookForm.$invalid || loading"
|
||||
ng-click="submitAddressBook(addressBookForm)">{{'Add'|translate}}</button>
|
||||
</form>
|
||||
</div>
|
||||
<div class="large-12 columns" ng-show="!showForm">
|
||||
<a class="button primary expand" ng-click="toggleForm()"><i class="fi-plus"></i> Add entry</a>
|
||||
</div>
|
||||
<a ng-show="!showForm" class="button primary expand" ng-disabled="loading" ng-click="toggleForm()">
|
||||
<i class="fi-plus"></i> Add entry
|
||||
</a>
|
||||
<a class="close-reveal-modal show-for-large-up" ng-click="close()"><i class="fi-x size-18"></i></a>
|
||||
</div>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<div class="modal-mobile">
|
||||
<div class="text-center">
|
||||
<div class="size-48">
|
||||
{{md.unitTotal}} {{$root.wallet.settings.unitName}}
|
||||
{{unitTotal}} {{$root.wallet.settings.unitName}}
|
||||
</div>
|
||||
<div class="size-18 m5t text-gray">
|
||||
{{ alternative }} {{ alternativeIsoCode }}
|
||||
|
|
|
@ -4,14 +4,18 @@
|
|||
<div class="modal-mobile text-center" ng-init="addr = address.address">
|
||||
<qrcode size="220" data="{{addr}}"></qrcode>
|
||||
|
||||
<div class="m10t"
|
||||
<div class="m20t"
|
||||
ng-init="label = $root.wallet.addressBook[addr].label">
|
||||
<div class="size-12">
|
||||
{{addr}} <small class="label" ng-show="address.isChange">change</small>
|
||||
{{addr}}
|
||||
</div>
|
||||
<b class="db m5t" ng-show="label">
|
||||
<div class="m5t size-10 text-secondary" ng-show="address.isChange" translate>change</div>
|
||||
<div class="m10t" ng-show="label">
|
||||
({{label}})
|
||||
</b>
|
||||
</div>
|
||||
<div class="m5t" ng-show="address.balance && address.balance > 0">
|
||||
<b>{{address.balance}} {{$root.wallet.settings.unitName}}</b>
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-center m10t" ng-if="isCordova">
|
||||
<button class="primary expand" ng-click="copyAddress(addr)">
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
</span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="size-48" ng-class="{
|
||||
<div class="size-42" ng-class="{
|
||||
'text-primary' : btx.action == 'received',
|
||||
'text-warning': btx.action == 'sent',
|
||||
'text-gray': btx.action == 'moved'}">
|
||||
|
@ -29,53 +29,53 @@
|
|||
<a class="close-reveal-modal show-for-large-up" ng-click="cancel()"><i class="fi-x size-18"></i></a>
|
||||
</div>
|
||||
|
||||
<div ng-if="btx.ts || btx.createdTs " class="m20v line-b">
|
||||
<i>Date:</i>
|
||||
<time >{{ (btx.ts || btx.createdTs ) | amCalendar}}</time>
|
||||
</div>
|
||||
<table>
|
||||
<tr ng-if="btx.ts || btx.createdTs">
|
||||
<td width="30"><i translate>Date:</i></td>
|
||||
<td><time>{{ (btx.ts || btx.createdTs ) | amCalendar}}</time></td>
|
||||
</tr>
|
||||
|
||||
<div ng-show="btx.comment" class="line-b m20v lh140">
|
||||
<i>Note:</i>
|
||||
<span>{{btx.comment}}</span>
|
||||
</div>
|
||||
<tr ng-if="btx.comment">
|
||||
<td width="30"><i translate>Note:</i></td>
|
||||
<td class="">{{btx.comment}}</td>
|
||||
</tr>
|
||||
|
||||
<div ng-if="btx.merchant" class="lh140 m10v line-b">
|
||||
<i>Merchant Message:</i>
|
||||
<p class="text-gray size-14">{{btx.merchant.pr.pd.memo}}</p>
|
||||
</div>
|
||||
<tr ng-if="btx.merchant">
|
||||
<td width="30"><i translate>Merchant Message:</i></td>
|
||||
<td class="text-gray">{{btx.merchant.pr.pd.memo}}</td>
|
||||
</tr>
|
||||
|
||||
<div class="m10v line-b">
|
||||
<span class="label alert" ng-show="!btx.ts && (!btx.confirmations || btx.confirmations == 0)">
|
||||
<span translate>Unconfirmed</span>
|
||||
</span>
|
||||
<span ng-show="btx.confirmations>0" class="m10v">
|
||||
<i translate>Confirmations: </i>
|
||||
<p class="label radius">{{btx.confirmations}}</p>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div ng-if="btx.actionList[0]" class="m10v">
|
||||
<i>Signatures:</i>
|
||||
<ul class="tx-copayers m10t" ng-if="btx.actionList[0]">
|
||||
<li ng-repeat="c in btx.actionList" ng-class="{'bottom-line-copayers':!$last}" ng-if="c.actions.rejected || c.actions.sign || c.actions.create">
|
||||
<span>
|
||||
<i ng-if="c.actions.rejected" class="fi-x icon-sign x"></i>
|
||||
<i ng-if="c.actions.sign" class="fi-check icon-sign check"></i>
|
||||
<tr ng-if="btx.ts">
|
||||
<td width="30"><i translate>Confirmations: </i></td>
|
||||
<td><span class="text-warning" ng-show="!btx.confirmations || btx.confirmations == 0" translate>
|
||||
Unconfirmed
|
||||
</span>
|
||||
<span>
|
||||
<i ng-if="c.actions.create" class="fi-crown icon-status icon-active m10r"></i>
|
||||
<span class="text-secondary" ng-show="btx.confirmations>0">
|
||||
{{btx.confirmations}}
|
||||
</span>
|
||||
<span>{{c.cId === $root.wallet.getMyCopayerId() ? 'Me' : $root.wallet.publicKeyRing.nicknameForCopayer(c.cId)}}</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<small class="ellipsis text-gray m10v" ng-if="btx.txid" > ID: {{btx.txid}} </small>
|
||||
|
||||
<div class="oh">
|
||||
<a class="button outline light-gray tiny right" ng-click="$root.openExternalLink('http://' + getShortNetworkName() + '.insight.is/tx/' + btx.txid)" ng-if="btx.txid">
|
||||
See it on the blockchain <i class="icon-arrow-right2 vm"></i>
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr ng-if="btx.actionList[0]">
|
||||
<td width="30"><i translate>Signatures:</i></td>
|
||||
<td>
|
||||
<ul class="no-bullet size-10 m0" ng-if="btx.actionList[0]">
|
||||
<li ng-repeat="c in btx.actionList" ng-class="{'m5b':!$last}" ng-if="c.actions.rejected || c.actions.sign || c.actions.create">
|
||||
<span>
|
||||
<i ng-if="c.actions.rejected" class="fi-x icon-sign x"></i>
|
||||
<i ng-if="c.actions.sign" class="fi-check icon-sign check"></i>
|
||||
</span>
|
||||
<span>{{c.cId === $root.wallet.getMyCopayerId() ? 'Me' : $root.wallet.publicKeyRing.nicknameForCopayer(c.cId)}}</span>
|
||||
</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<small class="ellipsis text-gray m20b text-right" ng-if="btx.txid" > ID: {{btx.txid}} </small>
|
||||
|
||||
<a class="button outline light-gray tiny right" ng-click="$root.openExternalLink('http://' + getShortNetworkName() + '.insight.is/tx/' + btx.txid)" ng-if="btx.txid">
|
||||
See it on the blockchain <i class="icon-arrow-right2 vm"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -90,16 +90,14 @@
|
|||
<div class="large-5 medium-5 small-5 columns">
|
||||
<button class="button warning m0 expand" ng-click="hideTxInfo = true; hideSign = true; reject(tx.ntxid);"
|
||||
ng-disabled="loading" ng-show="!hideReject">
|
||||
<i class="fi-x icon-sign x" ng-show="!loading"></i>
|
||||
<i class="fi-bitcoin-circle icon-rotate spinner" ng-show="loading"></i>
|
||||
<i class="fi-x icon-sign x"></i>
|
||||
<span translate>Reject</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="large-5 medium-5 small-5 columns text-right">
|
||||
<button class="button primary m0 expand" ng-click="hideTxInfo = true; hideReject = true; sign(tx.ntxid)"
|
||||
ng-disabled="loading" ng-show="!hideSign">
|
||||
<i class="fi-check icon-sign check" ng-show="!loading"></i>
|
||||
<i class="fi-bitcoin-circle icon-rotate spinner" ng-show="loading"></i>
|
||||
<i class="fi-check icon-sign check"></i>
|
||||
<span translate>Sign</span>
|
||||
</button>
|
||||
</div>
|
||||
|
|
|
@ -33,19 +33,16 @@
|
|||
<div ng-repeat="addr in addresses" ng-click="openAddressModal(addr)" class="pointer">
|
||||
<div class="panel">
|
||||
<div class="row">
|
||||
<div class="large-7 medium-7 small-9 columns">
|
||||
<contact class="ellipsis" address="{{::addr.address}}">
|
||||
<div class="large-3 medium-4 small-5 columns">
|
||||
<contact class="size-12 ellipsis" address="{{::addr.address}}"></contact>
|
||||
</div>
|
||||
<div class="large-1 medium-2 small-3 columns text-right">
|
||||
<small translate class="label" ng-show="::addr.isChange">change</small>
|
||||
<div class="large-1 medium-1 small-2 columns">
|
||||
<span translate class="text-secondary size-10" ng-show="::addr.isChange">change</span>
|
||||
</div>
|
||||
<div class="large-4 medium-3 small-12 columns text-right">
|
||||
<span ng-show="$root.updatingBalance">
|
||||
<i class="fi-bitcoin-circle icon-rotate spinner"></i>
|
||||
</span>
|
||||
<span class="size-14" ng-show="!$root.updatingBalance">
|
||||
<b>{{addr.balance || '0'}} {{$root.wallet.settings.unitName}}</b>
|
||||
</span>
|
||||
<div class="large-8 medium-7 small-5 columns text-right">
|
||||
<span class="size-12" ng-show="!$root.updatingBalance">
|
||||
<b>{{addr.balance || '0'}} {{$root.wallet.settings.unitName}}</b>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end of panel mobile -->
|
||||
|
|
|
@ -1,40 +1,42 @@
|
|||
<div class="send" ng-controller="SendController" ng-init="init()">
|
||||
<div class="columns" ng-show="$root.wallet.balanceInfo.lockedBalance">
|
||||
<div class="panel">
|
||||
<div class="left">
|
||||
<i class="fi-info size-42 m10r"></i>
|
||||
</div>
|
||||
<div>
|
||||
<p class="m0 size-14 text-bold">Available Balance: {{$root.wallet.balanceInfo.availableBalance}} {{$root.wallet.settings.unitName}}</p>
|
||||
<span class="size-12 text-gray">{{$root.wallet.balanceInfo.lockedBalance}} {{$root.wallet.settings.unitName}} in pending transactions</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row show-for-large-up">
|
||||
<div class="large-8 large-centered columns">
|
||||
<h1>{{$root.title}}</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row" ng-show="fetchingURL">
|
||||
<div class="row" ng-show="$root.wallet.balanceInfo.lockedBalance">
|
||||
<div class="large-12 columns">
|
||||
<div class="panel">
|
||||
<div class="box-notification">
|
||||
<div class="box-icon secondary">
|
||||
<i class="fi-bitcoin-circle icon-rotate spinner size-24"></i>
|
||||
</div>
|
||||
<span class="text-secondary size-14">
|
||||
Fetching Payment Information...
|
||||
</span>
|
||||
<div class="left">
|
||||
<i class="fi-info size-42 m10r"></i>
|
||||
</div>
|
||||
<div>
|
||||
<p class="m0 size-14 text-bold">Available Balance: {{$root.wallet.balanceInfo.availableBalance}} {{$root.wallet.settings.unitName}}</p>
|
||||
<span class="size-12 text-gray">{{$root.wallet.balanceInfo.lockedBalance}} {{$root.wallet.settings.unitName}} in pending transactions</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row" ng-show="!fetchingURL">
|
||||
<div class="row">
|
||||
<div class="large-8 large-centered columns">
|
||||
<form name="sendForm" ng-submit="submitForm(sendForm)" ng-disabled="loading" novalidate>
|
||||
<div class="row show-for-large-up">
|
||||
<div class="large-7 columns">
|
||||
<h1>{{$root.title}}</h1>
|
||||
</div>
|
||||
<div class="large-5 columns show-for-large-up text-right"
|
||||
ng-show="(!lockAddress && !_merchantData && !fetchingURL)">
|
||||
<div ng-hide="showScanner || disableScanner">
|
||||
<a class="button radius black tiny m0" ng-click="openScanner()"><i class="fi-camera size-18 vm m5r"></i> Scan QR </a>
|
||||
</div>
|
||||
<div ng-show="showScanner">
|
||||
<a translate class="button radius tiny warning m0" ng-click="cancelScanner()"><i class="fi-x size-18"></i> </a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-notification" ng-show="fetchingURL">
|
||||
<div class="box-icon secondary">
|
||||
<i class="fi-bitcoin-circle size-24"></i>
|
||||
</div>
|
||||
<span class="text-secondary size-14">
|
||||
Fetching Payment Information...
|
||||
</span>
|
||||
</div>
|
||||
<form ng-show="!fetchingURL" name="sendForm" ng-submit="submitForm(sendForm)" ng-disabled="loading" novalidate>
|
||||
<div class="panel">
|
||||
<div class="box-notification" ng-show="error && !hideForWP ">
|
||||
<div class="box-icon error">
|
||||
|
@ -63,15 +65,15 @@
|
|||
</label>
|
||||
|
||||
<span ng-hide="sendForm.address.$pristine">
|
||||
<span translate class="has-error right size-12" ng-show="sendForm.address.$invalid && _address">
|
||||
<span class="icon-input">
|
||||
<i class="fi-x"></i>
|
||||
</span>
|
||||
Not valid
|
||||
</span>
|
||||
<small class="icon-input right" ng-show="!sendForm.address.$invalid">
|
||||
<i class="fi-check"></i>
|
||||
</small>
|
||||
<span translate class="has-error right size-12" ng-show="sendForm.address.$invalid && _address">
|
||||
<span class="icon-input">
|
||||
<i class="fi-x"></i>
|
||||
</span>
|
||||
Not valid
|
||||
</span>
|
||||
<small class="icon-input right" ng-show="!sendForm.address.$invalid">
|
||||
<i class="fi-check"></i>
|
||||
</small>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
|
@ -101,10 +103,10 @@
|
|||
<div class="m5b right" ng-hide="sendForm.amount.$pristine">
|
||||
<span translate class="has-error right size-12" ng-show="sendForm.amount.$invalid">
|
||||
<span class="icon-input"><i class="fi-x"></i></span>
|
||||
Not valid
|
||||
Not valid
|
||||
</span>
|
||||
<small class="icon-input right" ng-show="!sendForm.amount.$invalid">
|
||||
<i class="fi-check"></i>
|
||||
<i class="fi-check"></i>
|
||||
</small>
|
||||
</div>
|
||||
<div ng-show="!showAlternative">
|
||||
|
@ -141,21 +143,13 @@
|
|||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="large-6 medium-6 small-12 columns text-right">
|
||||
<div class="large-6 medium-6 small-12 columns">
|
||||
<button type="submit" class="button primary expand" ng-disabled="sendForm.$invalid || loading">
|
||||
Send
|
||||
</button>
|
||||
</div>
|
||||
<div class="large-4 medium-4 small-12 columns text-left">
|
||||
<div class="show-for-large-up text-right" ng-show="!lockAddress && !_merchantData">
|
||||
<div ng-hide="showScanner || disableScanner">
|
||||
<a class="button radius black size-12" ng-click="openScanner()"><i class="fi-camera size-18 vm m5r"></i> Scan QR </a>
|
||||
</div>
|
||||
<div ng-show="showScanner">
|
||||
<a translate class="button radius tiny warning" ng-click="cancelScanner()"><i class="fi-x size-18"></i> </a>
|
||||
</div>
|
||||
</div>
|
||||
<a ng-click="resetForm()" class="button expand warning m0"
|
||||
<div class="large-4 medium-4 small-12 columns text-right">
|
||||
<a ng-click="resetForm()" class="button expand warning"
|
||||
ng-show="(_merchantData || lockAddress) && !loading">Cancel</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -39,23 +39,23 @@
|
|||
<input type="text" ng-model="insightTestnet" class="form-control" name="insightTestnet" valid-url required>
|
||||
</div>
|
||||
|
||||
<div translate class="small text-gray">
|
||||
<small translate class="text-gray">
|
||||
Insight API server is open-source software. You can run your own instances, check
|
||||
<a href
|
||||
ng-click="$root.openExternalLink('https://insight.is')">Insight API Homepage</a>
|
||||
</div>
|
||||
</small>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend translate>Storage</legend>
|
||||
<label for="insightTestnet">Read and Store Profiles:</label>
|
||||
<select class="form-control" ng-model="selectedStorage" ng-options="o.name for o in availableStorages" required>
|
||||
</select>
|
||||
<div translate class="small text-gray">
|
||||
<small translate class="text-gray">
|
||||
Wallets and profiles are stored encrypted using your password as a key. You can store the encrypted data locally, on this device, or remotely on the cloud (Insight Server).
|
||||
<a href
|
||||
ng-click="$root.openExternalLink('https://github.com/bitpay/copay/tree/master/js/plugins')">
|
||||
More pluggins are welcomed!</a>
|
||||
</div>
|
||||
</small>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend translate>Language</legend>
|
||||
|
@ -66,9 +66,9 @@
|
|||
<legend translate>Log level</legend>
|
||||
<select class="form-control" ng-model="selectedLogLevel" ng-options="o.name for o in availableLogLevels" required>
|
||||
</select>
|
||||
<div translate class="small text-gray">
|
||||
<small translate class="text-gray">
|
||||
Log level shows information on the console. This is useful to find bugs and to help users. 'debug' is the most verbose level while 'fatal' only shows unexpected errors
|
||||
</div>
|
||||
</small>
|
||||
</fieldset>
|
||||
<button translate type="submit" class="button primary radius expand m0" ng-disabled="settingsForm.$invalid || loading" ng-click="save()">
|
||||
Save
|
||||
|
|
Loading…
Reference in New Issue