2015-04-23 19:51:21 -07:00
2015-05-16 20:34:26 -07:00
< div class = "topbar-container"
2015-05-07 14:35:54 -07:00
ng-include="'views/includes/topbar.html'"
ng-init="showCamera = true">
< / div >
< div ng-controller = "walletHomeController as home" >
2015-04-23 19:51:21 -07:00
< div class = "row columns m20tp" ng-show = "index.noFocusedWallet" >
< div class = "text-center text-warning m20b" >
2015-05-14 10:01:31 -07:00
< i class = "fi-alert" > < / i > < span translate > You do not have a wallet< / span >
2015-04-23 19:51:21 -07:00
< / div >
2015-06-11 07:59:48 -07:00
< button class = "button black round expand" ng-click = "$root.go('add')" translate > Create< / button >
2015-05-13 08:41:05 -07:00
2015-11-13 11:12:32 -08:00
< div class = "text-center text-gray p20v" ng-click = "$root.go('preferencesGlobal')" >
2015-11-09 10:20:15 -08:00
< button class = " outline round dark-gray tiny" translate > Settings< / button >
2015-05-13 08:41:05 -07:00
< / div >
2015-04-23 19:51:21 -07:00
< / div >
2015-04-24 11:02:14 -07:00
< div class = "onGoingProcess" ng-show = "index.isOffline" >
< div class = "onGoingProcess-content" ng-style = "{'background-color':'#222'}" >
2015-05-06 12:10:16 -07:00
< div class = "spinner" >
< div class = "rect1" > < / div >
< div class = "rect2" > < / div >
< div class = "rect3" > < / div >
< div class = "rect4" > < / div >
< div class = "rect5" > < / div >
< / div >
< span translate > Reconnecting to Wallet Service...< / span >
2015-04-24 11:02:14 -07:00
< / div >
2015-04-23 19:51:21 -07:00
< / div >
2015-04-24 11:02:14 -07:00
< div class = "onGoingProcess" ng-show = "index.anyOnGoingProcess && !index.isOffline" >
< div class = "onGoingProcess-content" ng-style = "{'background-color':index.backgroundColor}" >
2015-05-06 12:10:16 -07:00
< div class = "spinner" >
< div class = "rect1" > < / div >
< div class = "rect2" > < / div >
< div class = "rect3" > < / div >
< div class = "rect4" > < / div >
< div class = "rect5" > < / div >
< / div >
< span translate ng-show = "
index.onGoingProcessName == 'openingWallet'
|| index.onGoingProcessName == 'updatingStatus'
|| index.onGoingProcessName == 'updatingBalance'
2015-05-07 07:49:59 -07:00
|| index.onGoingProcessName == 'updatingPendingTxps'
2015-05-06 12:10:16 -07:00
"> Updating Wallet... < / span >
< span translate ng-show = "index.onGoingProcessName == 'scanning'" > Scanning Wallet funds...< / span >
< span translate ng-show = "index.onGoingProcessName == 'recreating'" > Recreating Wallet...< / span >
2015-07-14 07:16:54 -07:00
< span translate ng-show = "index.onGoingProcessName == 'generatingCSV'" > Generating .csv file...< / span >
2015-04-24 11:02:14 -07:00
< / div >
2015-04-23 19:51:21 -07:00
< / div >
2015-04-27 05:59:20 -07:00
< div class = "onGoingProcess" ng-show = "home.onGoingProcess && !index.anyOnGoingProces && !index.isOffline" >
2015-04-24 11:02:14 -07:00
< div class = "onGoingProcess-content" ng-style = "{'background-color':index.backgroundColor}" >
2015-05-06 12:10:16 -07:00
< div class = "spinner" >
< div class = "rect1" > < / div >
< div class = "rect2" > < / div >
< div class = "rect3" > < / div >
< div class = "rect4" > < / div >
< div class = "rect5" > < / div >
< / div >
{{home.onGoingProcess|translate}}...
2015-04-24 11:02:14 -07:00
< / div >
2015-04-23 22:42:10 -07:00
< / div >
2015-04-23 19:51:21 -07:00
< div class = "oh" ng-show = "!index.noFocusedWallet" >
2015-05-06 12:10:16 -07:00
<!--
2015-04-23 10:37:36 -07:00
2015-05-06 12:10:16 -07:00
WalletHome
2015-04-22 09:53:57 -07:00
2015-05-06 12:10:16 -07:00
-->
2015-04-22 08:31:30 -07:00
2015-05-06 12:10:16 -07:00
< div id = "walletHome" class = "walletHome tab-view tab-in" >
< div class = "oh" >
< div class = "amount" ng-style = "{'background-color':index.backgroundColor}" >
< div ng-if = "!index.anyOnGoingProcess && !index.notAuthorized" >
2015-06-26 07:56:32 -07:00
< div ng-show = "index.updateError" ng-click = 'index.openWallet(); index.updateTxHistory()' >
2015-08-12 09:04:39 -07:00
< span class = "size-12 db m10b" > {{index.updateError|translate}}< / span >
2015-06-28 12:56:23 -07:00
< button class = "outline white tiny round" translate > Tap to retry< / button >
2015-05-06 12:10:16 -07:00
< / div >
2015-04-23 20:34:52 -07:00
2015-05-06 12:10:16 -07:00
< div ng-show = "index.walletScanStatus == 'error'" ng-click = 'index.retryScan()' >
< span translate > Scan status finished with error< / span >
< br > < span translate > Tap to retry< / span >
< / div >
2015-03-06 07:00:10 -08:00
2015-06-26 07:56:32 -07:00
< div ng-click = 'index.updateAll(); index.updateTxHistory()' ng-show = "!index.updateError && index.walletScanStatus != 'error'" >
2015-05-06 12:10:16 -07:00
< strong class = "size-36" > {{index.totalBalanceStr}}< / strong >
< div class = "size-14"
ng-if="index.totalBalanceAlternative">
{{index.totalBalanceAlternative}} {{index.alternativeIsoCode}}
< / div >
2015-08-11 13:45:57 -07:00
< div class = "size-14"
ng-if="index.pendingAmount">
< span translate > Pending Confirmation< / span > :
{{index.pendingAmountStr}}
< / div >
2015-09-08 21:08:21 -07:00
2015-05-06 12:10:16 -07:00
< / div >
< / div >
2015-03-06 07:00:10 -08:00
2015-05-06 12:10:16 -07:00
< div ng-if = "index.anyOnGoingProcess" >
< div class = "size-36" >
< strong > ...< / strong >
< / div >
< / div >
< / div > <!-- amount -->
2015-03-06 07:00:10 -08:00
2015-05-06 12:10:16 -07:00
< div class = "pr columns line-b" >
< div class = "avatar-wallet left"
2015-05-29 18:29:23 -07:00
ng-style="{'background-color':index.backgroundColor}">{{ (index.alias || index.walletName) | limitTo: 1}}
2015-05-06 12:10:16 -07:00
< / div >
< div class = "right" >
2015-05-16 20:34:26 -07:00
< a ng-click = "$root.go('preferences')" class = "button outline round light-gray tiny preferences-icon m0" >
2015-05-06 12:10:16 -07:00
< i class = "fi-widget size-18 vm" > < / i >
< span class = "show-for-medium-up" translate > Preferences< / span >
< / a >
< / div >
2015-05-13 06:56:08 -07:00
< div class = "wallet-info" >
2015-11-06 10:32:10 -08:00
< div ng-show = "index.isShared" >
2015-05-13 06:56:08 -07:00
< p class = "m0" >
2015-05-19 14:18:19 -07:00
{{(index.alias || index.walletName)}}
2015-05-13 06:56:08 -07:00
< / p >
< div class = "size-12 text-gray" >
2015-09-04 06:17:59 -07:00
< span ng-include = "'views/includes/walletInfo.html'" > < / span >
2015-05-13 06:56:08 -07:00
< / div >
< / div >
< div ng-show = "!index.isShared" >
< p class = "m0" >
2015-05-19 14:18:19 -07:00
{{(index.alias || index.walletName)}}
2015-05-13 06:56:08 -07:00
< / p >
2015-08-31 11:01:48 -07:00
< div class = "size-12 text-gray" >
2015-09-04 06:17:59 -07:00
< span ng-include = "'views/includes/walletInfo.html'" > < / span >
2015-05-13 06:56:08 -07:00
< / div >
2015-05-06 12:10:16 -07:00
< / div >
< / div >
< / div >
< / div > <!-- oh -->
2015-03-06 07:00:10 -08:00
2015-04-23 08:27:43 -07:00
2015-05-06 12:10:16 -07:00
< div class = "m20t" ng-show = "index.notAuthorized && ! index.anyOnGoingProcess" >
< div class = "text-center text-warning" >
< i class = "fi-alert" > < / i >
< span translate >
WARNING: Wallet not registered
< / span >
< / div >
< div class = "text-center text-gray m15r m15l" translate >
This wallet is not registered at the given Bitcore Wallet Service (BWS). You can recreate it from the local information.
< / div >
< div class = "text-center m10t " >
2015-05-16 20:34:26 -07:00
< span class = "button outline round dark-gray tiny"
2015-05-06 12:10:16 -07:00
ng-click="index.recreate()">
< span translate > Recreate< / span >
< / span >
< / div >
2015-04-28 07:53:25 -07:00
< / div >
2015-04-23 20:34:52 -07:00
2015-05-06 12:10:16 -07:00
< div ng-if = "index.txps[0]" >
2015-09-07 13:43:55 -07:00
< h4 ng-show = "index.requiresMultipleSignatures" class = "title m0" translate > Payment Proposals< / h4 >
< h4 ng-show = "!index.requiresMultipleSignatures" class = "title m0" translate > Unsent transactions< / h4 >
2015-11-20 06:39:59 -08:00
< div class = "last-transactions pr" ng-repeat = "tx in index.txps" >
< div ng-include = "index.txTemplateUrl" > < / div >
2015-05-06 12:10:16 -07:00
< / div >
2015-04-23 08:58:08 -07:00
2015-09-07 13:43:55 -07:00
< div class = "text-gray text-center size-12 p10t"
ng-show="index.lockedBalanceSat & & !index.updatingStatus">
< span translate > Total Locked Balance< / span > :
< b > {{index.lockedBalanceStr}} < / b >
< span > {{index.lockedBalanceAlternative}}
{{index.alternativeIsoCode}} < / span >
2015-05-06 12:10:16 -07:00
< / div >
< / div >
2015-05-07 07:39:29 -07:00
< div class = "extra-margin-bottom" > < / div >
2015-05-06 12:10:16 -07:00
< / div > <!-- END WalletHome -->
2015-04-23 08:27:43 -07:00
2015-05-06 12:10:16 -07:00
<!--
2015-04-23 08:27:43 -07:00
2015-05-06 12:10:16 -07:00
receive
2015-04-26 23:33:57 -07:00
2015-05-06 12:10:16 -07:00
-->
2015-09-29 04:08:06 -07:00
< div id = "receive" class = "receive tab-view" >
2015-05-06 12:10:16 -07:00
2015-11-11 13:15:21 -08:00
< div ng-show = "index.needsBackup" class = "p60t row text-center" >
< div class = "large-12 columns" >
< div class = "text-warning text-bold m15b" >
< i class = "fi-alert" > < / i >
< span translate >
WARNING: Backup needed
< / span >
< / div >
< div class = "text-gray" translate >
Before receiving funds, it is highly recommended you backup your wallet keys.
< / div >
2015-04-26 23:33:57 -07:00
2015-11-11 13:15:21 -08:00
< button class = "m20t button black expand round"
2015-05-06 12:10:16 -07:00
ng-click="$root.go('backup')" ng-style="{'background-color':index.backgroundColor}" >
< span translate > Backup now< / span >
2015-11-11 13:15:21 -08:00
< / button >
2015-04-23 08:27:43 -07:00
< / div >
< / div >
2015-11-11 13:15:21 -08:00
< div ng-show = "!index.needsBackup" >
2015-05-06 12:10:16 -07:00
< div class = "row" >
<!-- Address -->
< div class = "large-12 columns" >
< h2 class = "text-center m10t" translate > My Bitcoin address< / h2 >
2015-09-02 11:56:00 -07:00
< div >
< div class = "box-notification" ng-show = "home.addrError" >
< span class = "text-warning" >
{{home.addrError|translate}}
< / span >
< / div >
2015-05-29 07:46:33 -07:00
2015-09-02 11:56:00 -07:00
< div class = "text-center" ng-click = "home.copyAddress(home.addr[index.walletId])" ng-show = "home.addr[index.walletId] || home.generatingAddress" >
2015-05-30 19:15:43 -07:00
< qrcode size = "220" data = "bitcoin:{{home.addr[index.walletId]}}" > < / qrcode >
2015-05-06 12:10:16 -07:00
< div ng-show = "home.generatingAddress" style = "position:relative; top:-226px; height:0px" >
< div style = "height:220px; width:220px; margin:auto; background: url(img/qr.png) white" >
< div class = "spinner" style = "margin-top:80px" >
< div class = "rect1" > < / div >
< div class = "rect2" > < / div >
< div class = "rect3" > < / div >
< div class = "rect4" > < / div >
< div class = "rect5" > < / div >
< / div >
< / div >
< / div >
< div class = "m10t" >
< h4 ng-class = "{'enable_text_select': !index.isCordova}" class = "size-12" >
2015-05-30 19:15:43 -07:00
{{home.generatingAddress ? '...' : home.addr[index.walletId]}}
2015-04-23 08:27:43 -07:00
2015-05-06 12:10:16 -07:00
< / h4 >
< / div >
< / div >
< / div >
2015-04-23 08:27:43 -07:00
2015-09-02 11:56:00 -07:00
< div ng-show = "home.addr[index.walletId]" >
< div class = "m10t text-center" ng-show = "index.isCordova" >
< span class = "button outline dark-gray tiny round"
ng-click="home.shareAddress(home.addr[index.walletId])">
< i class = "fi-share" > < / i >
< span translate > Share address< / span >
< / span >
< / div >
< div class = "line-t size-12" translate >
Share this wallet address to receive payments. To protect your privacy, new addresses are generated automatically once you use them.
< / div >
2015-05-06 12:10:16 -07:00
< / div >
< / div >
< / div >
< div class = "row m20t" >
< div class = "large-12 columns" >
2015-07-13 13:27:53 -07:00
< button class = "button black expand round m0" ng-click = "home.setAddress(true)"
2015-05-06 12:10:16 -07:00
ng-style="{'background-color':index.backgroundColor}" ng-disabled="home.blockUx || index.isOffline ||home.generatingAddress" translate>
Generate new address
< / button >
< / div >
< / div >
2015-07-13 13:27:53 -07:00
< div class = "m20t text-center" ng-show = "!home.generatingAddress && home.addr[index.walletId]" >
< a class = "size-12 text-gray" ng-click = "home.openCustomizedAmountModal(home.addr[index.walletId])" >
2015-09-08 21:08:21 -07:00
< i class = "fi-bitcoin" > < / i >
2015-07-13 13:27:53 -07:00
< span translate > Request a specific amount< / span >
2015-06-24 13:55:08 -07:00
< / a >
< / div >
2015-05-06 12:10:16 -07:00
< / div >
2015-05-07 07:39:29 -07:00
< div class = "extra-margin-bottom" > < / div >
2015-05-06 12:10:16 -07:00
< / div > <!-- END Receive -->
2015-04-23 08:27:43 -07:00
2015-05-06 12:10:16 -07:00
<!--
2015-04-23 08:27:43 -07:00
2015-05-06 12:10:16 -07:00
send
-->
2015-09-29 04:08:06 -07:00
< div id = "send" class = "send tab-view" >
2015-05-18 12:21:36 -07:00
< div >
2015-05-06 12:10:16 -07:00
< h4 class = "title m0" >
2015-05-18 12:21:36 -07:00
2015-06-22 10:35:16 -07:00
< a class = "right lh"
2015-08-11 13:45:57 -07:00
ng-if="index.feeToSendMaxStr & & index.availableBalanceSat > 0 & & !home.blockUx & & !home.lockAmount"
2015-11-23 05:47:24 -08:00
ng-click="home.sendAll(index.availableMaxBalance, index.feeToSendMaxStr, index.feeRateToSendMax, index.currentFeeLevel)"
2015-06-19 11:09:15 -07:00
translate> Send All
2015-06-22 10:35:16 -07:00
< / a >
2015-06-19 11:00:27 -07:00
2015-09-03 04:44:50 -07:00
< available-balance > < / available-balance >
2015-05-06 12:10:16 -07:00
< / h4 >
< / div >
< div class = "row m20t" >
< div class = "large-12 large-centered columns" >
< form name = "sendForm" ng-submit = "home.submitForm()" ng-disabled = "home.blockUx || home.onGoingProcess" novalidate >
< div class = "box-notification" ng-show = "home.error" ng-click = "home.resetError()" >
< span class = "text-warning" >
{{home.error|translate}}
< / span >
< a class = "close-notification text-warning" > × < / a >
< / div >
2015-04-23 08:27:43 -07:00
2015-05-06 12:10:16 -07:00
< div ng-hide = "home._paypro || home.hideAddress" >
< div class = "row collapse" >
< label for = "address" class = "left" >
< span translate > To< / span >
< / label >
< span ng-hide = "sendForm.address.$pristine" >
< span class = "has-error right size-12" ng-show = "sendForm.address.$invalid && _address" >
< i class = "icon-close-circle size-14" > < / i >
< span class = "vm" translate > Not valid< / span >
< / span >
< small class = "right text-primary" ng-show = "!sendForm.address.$invalid" >
< i class = "icon-checkmark-circle size-14" > < / i >
< / small >
2015-04-23 08:27:43 -07:00
< / span >
2015-05-06 12:10:16 -07:00
< / div >
2015-04-23 08:27:43 -07:00
2015-05-06 12:10:16 -07:00
< div class = "input" >
2015-10-22 14:43:32 -07:00
< input ng-show = "sendForm.address.$invalid" class = "m0" type = "text" id = "address" name = "address" ng-disabled = "home.blockUx || home.lockAddress" ng-attr-placeholder = "{{'Bitcoin address'|translate}}" ng-model = "_address" valid-address required ng-focus = "home.formFocus('address')" ng-blur = "home.formFocus(false)" >
2015-10-30 14:34:34 -07:00
< div class = "addressbook-input" ng-show = "!sendForm.address.$invalid && _address" >
{{index.addressbook[_address] || _address}}
< / div >
2015-11-18 10:19:47 -08:00
< a class = "postfix size-12 m0 text-gray"
2015-10-23 07:12:23 -07:00
ng-click="openDestinationAddressModal(index.otherWallets, _address)">
2015-06-29 08:54:07 -07:00
< i class = "icon-wallet size-18" > < / i >
< / a >
2015-05-06 12:10:16 -07:00
< / div >
2015-04-23 08:27:43 -07:00
< / div >
2015-05-06 12:10:16 -07:00
< div ng-show = "home._paypro && !home.hideAddress" >
< div class = "row collapse" ng-click = "home.openPPModal(home._paypro)" >
2015-04-23 08:27:43 -07:00
2015-05-06 12:10:16 -07:00
< label for = "domain" >
< span translate > Payment to< / span >
< / label >
2015-04-23 08:27:43 -07:00
2015-05-06 12:10:16 -07:00
< div class = "input block" >
< input class = "p45li" type = "text" id = "domain" name = "domain" ng-model = "home._paypro.domain" ng-disabled = "1" >
2015-09-18 08:07:51 -07:00
< i ng-show = "home._paypro.verified && home._paypro.caTrusted" class = "fi-lock color-greeni" > < / i >
< i ng-show = "!home._paypro.caTrusted" class = "fi-unlock color-yellowi" > < / i >
2015-05-06 12:10:16 -07:00
< / div >
2015-04-23 08:27:43 -07:00
< / div >
< / div >
2015-05-06 12:10:16 -07:00
< div class = "row" ng-init = "home.hideAlternative()" ng-hide = "home.hideAmount" >
< div class = "large-12 medium-12 columns" >
< div class = "right" ng-hide = "sendForm.amount.$pristine && !sendForm.amount.$modelValue " >
< span class = "has-error right size-12" ng-if = "sendForm.amount.$invalid" >
< i class = "icon-close-circle size-14" > < / i >
< span clas = "vm" translate > Not valid< / span >
< / span >
2015-08-07 13:21:22 -07:00
< small class = "text-primary right" ng-if = "!sendForm.amount.$invalid && !sendForm.alternative.$invalid" >
2015-05-06 12:10:16 -07:00
< i class = "icon-checkmark-circle size-14" > < / i >
< / small >
< / div >
< div ng-if = "!home.canShowAlternative()" >
< label for = "amount" >
< span translate > Amount< / span >
< / label >
< div class = "input" >
2015-08-13 08:59:19 -07:00
< input type = "number" id = "amount" ng-disabled = "home.blockUx || home.lockAmount" name = "amount" ng-attr-placeholder = "{{'Amount'|translate}}" ng-minlength = "0.00000001" ng-maxlength = "10000000000" ng-model = "_amount" valid-amount required autocomplete = "off" ng-focus = "home.formFocus('amount')" ng-blur = "home.formFocus(false)" >
< input type = "number" id = "alternative" name = "alternative" ng-model = "_alternative" style = "display:none" >
2015-05-06 12:10:16 -07:00
< a class = "postfix" ng-click = "home.showAlternative()" > {{home.unitName}}< / a >
< / div >
< / div >
< div ng-if = "home.canShowAlternative()" >
< label for = "alternative" > < span translate > Amount in< / span > {{ home.alternativeName }}
< / label >
< div class = "input" >
2015-08-13 08:59:19 -07:00
< input type = "number" id = "alternative" ng-disabled = "home.blockUx || !home.isRateAvailable || home.lockAmount" name = "alternative" ng-attr-placeholder = "{{'Amount'|translate}}" ng-model = "_alternative" required autocomplete = "off" ng-focus = "home.formFocus('amount')" ng-blur = "home.formFocus(false)" >
< input type = "number" id = "amount" name = "amount" ng-model = "_amount" style = "display:none" >
2015-05-06 12:10:16 -07:00
< a class = "postfix" ng-click = "home.hideAlternative()" > {{ home.alternativeIsoCode }}< / a >
< / div >
2015-04-23 08:27:43 -07:00
< / div >
< / div >
2015-05-06 12:10:16 -07:00
< / div >
2015-09-14 08:19:52 -07:00
< div class = "row" ng-hide = "home.hideNote" >
2015-05-06 12:10:16 -07:00
< div class = "large-12 columns" >
< label for = "comment" > < span translate > Note< / span >
< small translate ng-hide = "!sendForm.comment.$pristine" > optional< / small >
< small translate class = "has-error" ng-show = "sendForm.comment.$invalid && !sendForm.comment.$pristine" > too long!< / small >
2015-04-23 08:27:43 -07:00
< / label >
< div class = "input" >
2015-05-06 12:10:16 -07:00
< textarea id = "comment" ng-disabled = "home.blockUx" name = "comment"
2015-05-07 10:01:16 -07:00
ng-maxlength="500" ng-model="_comment" ng-focus="home.formFocus('msg')"
2015-05-06 12:10:16 -07:00
ng-blur="home.formFocus(false)">< / textarea >
2015-04-23 08:27:43 -07:00
< / div >
< / div >
< / div >
2015-05-06 12:10:16 -07:00
2015-11-23 05:47:24 -08:00
< div class = "m20b" ng-init = "home.hideAdvSend=true" ng-show = "!home.disableAdvSend" >
2015-08-05 08:56:25 -07:00
< a class = "button outline light-gray expand tiny m0" ng-click = "home.hideAdvSend=!home.hideAdvSend" >
2015-08-03 16:39:09 -07:00
< i class = "fi-widget m3r" > < / i >
2015-08-05 12:44:58 -07:00
< span translate ng-hide = "!home.hideAdvSend" > Show advanced options< / span >
< span translate ng-hide = "home.hideAdvSend" > Hide advanced options< / span >
2015-08-03 16:39:09 -07:00
< i ng-if = "home.hideAdvSend" class = "icon-arrow-down4" > < / i >
< i ng-if = "!home.hideAdvSend" class = "icon-arrow-up4" > < / i >
< / a >
2015-08-05 08:56:25 -07:00
< div class = "m10t" ng-hide = "home.hideAdvSend" >
2015-08-05 12:34:05 -07:00
< div ng-show = "(index.network == 'livenet' ? index.feeLevels.livenet : index.feeLevels.testnet)" >
< h4 class = "title m0" translate > Fee policy for this transaction< / h4 >
< ul class = "no-bullet m0 size-14" >
< li ng-repeat = "fee in (index.network == 'livenet' ? index.feeLevels.livenet : index.feeLevels.testnet)"
2015-08-11 13:11:40 -07:00
ng-click="home.setFee(fee.level)" class="line-b p20">
2015-08-05 12:34:05 -07:00
{{index.feeOpts[fee.level]|translate}}
2015-09-08 21:08:21 -07:00
< i class = "fi-check size-16 right"
2015-08-05 12:34:05 -07:00
ng-show="(home.currentSendFeeLevel || index.currentFeeLevel) == fee.level">< / i >
< / li >
< / ul >
< / div >
< h4 class = "title m0" > < / h4 >
2015-08-05 08:56:25 -07:00
< div class = "p20 line-b" >
2015-08-05 10:07:09 -07:00
< span class = "size-14" translate > Use Unconfirmed Funds< / span >
2015-08-05 08:56:25 -07:00
< switch id = "spend-unconfirmed" name = "currentSpendUnconfirmed" ng-model = "currentSpendUnconfirmed" class = "green right" > < / switch >
< / div >
2015-08-03 16:39:09 -07:00
< / div >
< / div >
2015-05-06 12:10:16 -07:00
< div class = "row" ng-show = "!home.onGoingProcess" >
2015-06-19 11:00:27 -07:00
< div class = "large-6 medium-6 small-6 columns" ng-show = "!home.blockUx && (home._paypro || home.lockAddress || home.lockAmount)" >
2015-05-16 20:34:26 -07:00
< a ng-click = "home.resetForm(sendForm)" class = "button expand outline dark-gray round" translate > Cancel< / a >
2015-05-06 12:10:16 -07:00
< / div >
2015-06-19 11:00:27 -07:00
< div class = "columns" ng-class = "{'small-6 medium-6 large-6':(home._paypro || home.lockAddress || home.lockAmount)}" >
2015-05-16 20:34:26 -07:00
< button type = "submit" class = "button black round expand" ng-disabled = "sendForm.$invalid || home.blockUx || index.isOffline"
2015-05-06 12:10:16 -07:00
ng-style="{'background-color':index.backgroundColor}" translate>
Send
< / button >
2015-04-23 08:27:43 -07:00
< / div >
< / div >
2015-05-06 12:10:16 -07:00
< / form >
< / div >
< / div >
2015-05-07 07:39:29 -07:00
< div class = "extra-margin-bottom" > < / div >
2015-05-06 12:10:16 -07:00
< / div > <!-- END Send -->
2015-04-23 12:54:19 -07:00
2015-05-06 12:10:16 -07:00
<!--
2015-04-23 08:58:08 -07:00
2015-05-06 12:10:16 -07:00
history
2015-04-23 08:58:08 -07:00
2015-05-06 12:10:16 -07:00
-->
2015-09-29 04:08:06 -07:00
< div id = "history" class = "history tab-view" >
2015-11-10 15:05:05 -08:00
< div class = "row m20t" ng-show = "!index.txHistory[0] && !index.updatingTxHistory[index.walletId]" >
2015-05-06 12:10:16 -07:00
< div class = "large-12 columns" >
< div class = "oh text-center" >
< span ng-show = "index.txHistoryError && !index.notAuthorized" ng-click = 'index.updateTxHistory()' >
2015-08-12 10:36:07 -07:00
< p class = "size-12 m10b db text-gray" translate > Could not fetch transaction history< / p >
2015-06-28 12:56:23 -07:00
< button class = "outline round light-gray tiny" translate > Tap to retry< / button >
2015-05-06 12:10:16 -07:00
< / span >
< span ng-if = "!index.txHistoryError" translate >
No transactions yet
< / span >
< / div >
< / div >
2015-04-23 08:27:43 -07:00
< / div >
2015-11-19 10:17:44 -08:00
< div ng-show = "index.updatingTxHistory[index.walletId]" >
< div ng-show = "index.txProgress > 6" class = "row m20t text-center" >
2015-11-18 10:19:47 -08:00
< div class = "circle-icon" >
< img src = "/img/icon-sync.svg" alt = "sync" width = "70" >
< / div >
< div translate class = "size-12 text-gray m20t small-10 small-centered columns" >
Initial transaction history synchronization can take some minutes for wallets with many transactions.
< b > Please stand by.< / b >
< / div >
< div class = "small-8 small-centered columns line-b p10 m20b" > < / div >
< div class = "columns large-12 medium-12 small-12 m10b" >
< div class = "spinner" >
< div class = "rect1" > < / div >
< div class = "rect2" > < / div >
< div class = "rect3" > < / div >
< div class = "rect4" > < / div >
< div class = "rect5" > < / div >
< / div >
< / div >
< div class = "size-14 text-gray m20t" >
< b > {{index.txProgress}}< / b > < br >
< span translate > Transactions Downloaded< / span >
2015-10-22 13:11:37 -07:00
< / div >
2015-11-06 08:06:08 -08:00
< / div >
2015-10-22 13:11:37 -07:00
< / div >
2015-11-06 08:06:08 -08:00
2015-07-13 13:27:53 -07:00
< div ng-show = "index.txHistory[0]" >
2015-05-06 12:10:16 -07:00
< div ng-repeat = "btx in index.txHistory"
ng-click="home.openTxModal(btx)"
class="row collapse last-transactions-content">
< div class = "large-3 medium-3 small-3 columns" >
< span class = "label tu radius" ng-show = "btx.action == 'received'"
ng-style="{'background-color':index.backgroundColor}" translate>Received< / span >
< span class = "label tu gray radius" ng-show = "btx.action == 'sent'" translate > Sent< / span >
< span class = "label tu gray radius" ng-show = "btx.action == 'moved'" translate > Moved< / span >
2015-07-15 06:08:40 -07:00
< span class = "label tu warning radius" ng-show = "btx.action == 'invalid'" translate > Invalid< / span >
2015-05-06 12:10:16 -07:00
< / div >
2015-04-23 08:27:43 -07:00
2015-05-11 12:33:40 -07:00
< div class = "large-4 medium-4 small-4 columns" >
2015-05-06 12:10:16 -07:00
< span class = "size-16" >
< span ng-if = "btx.action == 'received'" > +< / span >
< span ng-if = "btx.action == 'sent'" > -< / span >
2015-07-15 06:08:40 -07:00
< span class = "size-12" ng-if = "btx.action == 'invalid'" translate >
(possible double spend)
< / span >
< span ng-if = "btx.action != 'invalid'" >
2015-05-06 12:10:16 -07:00
{{btx.amountStr}}
2015-07-15 06:08:40 -07:00
< / span >
2015-05-06 12:10:16 -07:00
< / span >
< / div >
< div class = "large-4 medium-4 small-4 columns text-right" >
< div class = "m5t size-12 text-gray" >
< time ng-if = "btx.time" > {{btx.time * 1000 | amTimeAgo}}< / time >
< span translate class = "text-warning"
ng-show="!btx.time & & (!btx.confirmations || btx.confirmations == 0)">
Unconfirmed
< / span >
< / div >
< / div >
2015-05-11 12:33:40 -07:00
< div class = "large-1 medium-1 small-1 columns text-right" >
< i class = "icon-arrow-right3 size-18" > < / i >
< / div >
2015-05-06 12:10:16 -07:00
< div class = "size-14 text-gray columns m5t" ng-if = "btx.message || btx.addressTo" >
2015-11-16 10:53:09 -08:00
< div ng-show = "btx.message" > {{btx.message}}< / div >
2015-10-23 10:35:25 -07:00
< div ng-show = "!btx.message" >
2015-11-16 10:53:09 -08:00
{{index.addressbook[btx.addressTo] || btx.addressTo}}
2015-10-23 10:35:25 -07:00
< / div >
2015-05-06 12:10:16 -07:00
< / div >
< / div >
2015-11-06 08:06:08 -08:00
2015-11-06 11:17:07 -08:00
< div class = "row m20t text-center" ng-show = "index.historyRendering" >
< div class = "columns large-12 medium-12 small-12" >
< div class = "spinner" >
< div class = "rect1" > < / div >
< div class = "rect2" > < / div >
< div class = "rect3" > < / div >
< div class = "rect4" > < / div >
< div class = "rect5" > < / div >
< / div >
< / div >
< / div >
2015-11-18 10:19:47 -08:00
2015-11-06 08:06:08 -08:00
< div class = "row m20t" >
< div class = "large-6 medium-6 small-6 columns" >
< button type = "submit" class = "button black round expand" ng-show = "index.historyShowShowAll" ng-click = "index.showAllHistory()" ng-style = "{'background-color':index.backgroundColor}" translate >
2015-11-11 09:11:35 -08:00
Show all
2015-11-06 08:06:08 -08:00
< / button >
< / div >
< div class = "large-6 medium-6 small-6 columns" ng-show = "!index.isCordova" >
< input id = "export_file" type = "file" nwsaveas = "Copay-{{index.alias || index.walletName}}.csv" accept = ".csv" style = "display:none" >
< a class = "button outline dark-gray round" ng-click = "index.csvHistory();" >
< i class = "fi-page-export-csv" > < / i >
< span translate > Download CSV file< / span >
< / a >
< / div >
< / div >
2015-07-03 11:35:34 -07:00
< / div >
2015-05-07 07:39:29 -07:00
< div class = "extra-margin-bottom" > < / div >
2015-05-06 12:10:16 -07:00
< / div > <!-- END History -->
2015-04-23 08:27:43 -07:00
Addon support
Addons are simple Angular modules with views, controllers, services etc. Addons can register
themselves in Copay using pluginManagerProvider. It allows them to add extra items to the bottom
menu and as well as extra tab-views:
````
addonManagerProvider.registerAddon({
menuItem: {
'title': 'Assets',
'icon': 'icon-pricetag',
'link': 'assets'
},
view: {
id: 'assets',
'class': 'assets',
template: 'colored-coins/views/assets.html'
}
});
````
Addons can consume core Copay services and listen for events to react on changes. For this very
first addon system inplementation Copay emits additional BalanceUpdated event so that interested
addons can react on new transactions (see plugin reference implementation below).
As bottom menu can accomodate only 6 items without sacrificing usability, so it was reworked to
have second layer of items. Now If menu has more than 6 items, toggle button will be added to
the menu allowing to reveal extra items in a sliding panel. Bottom menu in this case will show
only 5 items, the rest will be rendered on sliding panel.
This changes addresses issue #2949 and reference implementation of addon could be found here:
https://github.com/troggy/copay-colored-coins-plugin
2015-07-04 03:02:46 -07:00
< div id = "{{view.id}}" class = "{{view.class}} tab-view" ng-repeat = "view in index.addonViews" ng-include = "view.template" >
< / div >
2015-05-06 12:10:16 -07:00
< / div >
2015-03-06 07:00:10 -08:00
< / div >
2015-05-07 14:35:54 -07:00
< div class = "extra-margin-bottom" > < / div >
2015-05-13 08:41:05 -07:00
< div ng-include = "'views/includes/menu.html'" ng-show = "!index.noFocusedWallet" > < / div >