2014-03-19 09:17:18 -07:00
<!doctype html>
< html lang = "en" >
2014-03-14 13:38:27 -07:00
< head >
< meta charset = "utf-8" >
< meta http-equiv = "X-UA-Compatible" content = "IE=edge,chrome=1" >
< meta name = "viewport" content = "width=device-width" >
2014-03-28 11:08:14 -07:00
< title > Copay - Multisignature Wallet< / title >
2014-03-27 08:07:10 -07:00
< link rel = "stylesheet" href = "css/foundation.min.css" >
2014-03-28 12:39:58 -07:00
< link rel = "stylesheet" href = "css/foundation-icons.css" >
2014-03-14 13:38:27 -07:00
< link rel = "stylesheet" href = "css/main.css" >
< / head >
2014-04-25 07:50:53 -07:00
< body ng-cloak class = "ng-cloak" >
2014-04-25 13:22:51 -07:00
< div id = "wrap" >
< div data-ng-init = "init()" data-ng-controller = "HeaderController" >
< div class = "header" >
< div class = "header-content" >
2014-05-01 05:42:31 -07:00
< div class = "large-3 medium-3 columns" >
2014-04-29 07:56:37 -07:00
< span class = "logo" > < / span >
2014-04-25 13:22:51 -07:00
< / div >
2014-04-29 10:24:26 -07:00
< div class = "large-9 medium-9 columns text-center p10t" ng-show = "$root.wallet" >
2014-05-01 08:01:15 -07:00
< div class = "large-4 medium-4 columns line-dashed-v" >
2014-04-29 15:31:59 -07:00
< a href = "#/addresses" class = "has-tip" tooltip-placement = "bottom" tooltip = "{{$root.wallet.id}}" >
2014-04-29 14:20:44 -07:00
< strong > < span > {{$root.getWalletDisplay()}}< / span > < / strong >
2014-04-29 10:24:26 -07:00
< / a >
2014-04-30 15:50:13 -07:00
< a class = "button radius small-icon" title = "Manual Refresh"
ng-disabled="$root.loading"
ng-click="refresh()">< i class = "fi-refresh" > < / i > < / a >
< a class = "button radius small-icon" title = "Signout"
ng-click="signout()">< i class = "fi-power" > < / i > < / a >
2014-04-29 10:24:26 -07:00
< / div >
< div class = "large-4 medium-4 columns line-dashed-v" >
2014-04-28 13:23:01 -07:00
Balance: {{totalBalance || 0}} < i class = "fi-bitcoin" > < / i > < br >
2014-04-29 07:56:37 -07:00
< / div >
2014-04-29 10:24:26 -07:00
< div class = "large-4 medium-4 columns" >
2014-04-28 13:23:01 -07:00
Available to Spend: {{availableBalance || 0}} < i class = "fi-bitcoin" > < / i >
2014-04-29 07:56:37 -07:00
< / div >
2014-04-24 12:35:52 -07:00
< / div >
2014-03-28 08:32:29 -07:00
< / div >
2014-04-25 13:22:51 -07:00
< nav class = "top-bar" data-topbar ng-show = "$root.wallet" >
< ul class = "title-area" >
< li class = "name" > < / li >
< li class = "toggle-topbar menu-icon" >
< a ng-click = "isCollapsed=!isCollapsed" > Menu< / a >
2014-04-15 10:02:45 -07:00
< / li >
2014-03-28 08:32:29 -07:00
< / ul >
2014-04-25 13:22:51 -07:00
< section class = "top-bar-section {{isCollapsed && 'hide_menu' || 'show_menu'}}" >
< ul >
2014-04-29 15:26:12 -07:00
< li data-ng-repeat = "item in menu" ui-route = "/{{item.link}}" class = "text-center" data-ng-class = "{active: isActive(item)}" >
2014-04-25 13:22:51 -07:00
< a href = "{{item.link}}" > < i class = "{{item.icon}}" > < / i > {{item.title}}< / a >
< / li >
< / ul >
< / section >
< / nav >
2014-04-19 00:55:32 -07:00
< / div >
2014-04-09 07:05:25 -07:00
2014-04-25 13:22:51 -07:00
< div class = "row" ng-if = '$root.flashMessage.message' notification >
< div class = "small-8 large-centered columns" >
2014-04-30 10:59:20 -07:00
< div data-alert class = "alert-box radius {{$root.flashMessage.type}}" >
2014-04-25 13:22:51 -07:00
{{$root.flashMessage.message}}
< a ng-click = "clearFlashMessage()" class = "close" > × < / a >
< / div >
< / div >
< / div >
2014-04-23 09:44:20 -07:00
2014-04-25 13:22:51 -07:00
< div class = "row" >
2014-04-30 10:59:20 -07:00
< div ng-if = '$root.wallet && !$root.wallet.publicKeyRing.isComplete() && !loading' data-alert class = "alert-box warn radius size-18" >
2014-04-23 09:44:20 -07:00
2014-04-25 13:22:51 -07:00
< div style = "float:left; margin:0 15px" >
< i class = "fi-alert size-60" > < / i >
< / div >
< div class = "size-18" >
Note: Your wallet is not complete yet.
< span ng-show = "$root.wallet.publicKeyRing.totalCopayers - $root.wallet.publicKeyRing.registeredCopayers()>1" >
{{$root.wallet.publicKeyRing.totalCopayers - $root.wallet.publicKeyRing.registeredCopayers() }} keys are
< / span >
< span ng-show = "$root.wallet.publicKeyRing.totalCopayers - $root.wallet.publicKeyRing.registeredCopayers()==1" >
One key is
< / span >
missing.
< / div >
< div class = "size-18" >
Share this secret with your other copayers for them to join your wallet < br >
< / div >
< div class = "size-24" >
2014-04-30 08:58:40 -07:00
< b > {{$root.wallet.getSecret()}}< / b >
2014-04-25 13:22:51 -07:00
< / div >
< / div >
2014-04-17 14:11:42 -07:00
< / div >
2014-04-17 09:43:34 -07:00
2014-04-25 13:22:51 -07:00
< / div >
2014-04-17 09:43:34 -07:00
2014-04-25 13:22:51 -07:00
< div id = "main" class = "row" >
< div class = "large-12 columns" ng-view > < / div >
< / div >
2014-04-09 07:05:25 -07:00
< / div >
2014-04-29 07:56:37 -07:00
< div id = "footer" data-ng-controller = "FooterController" ng-show = "$root.wallet" >
< link rel = "stylesheet" ng-href = "{{theme}}" >
2014-04-29 14:20:44 -07:00
< div class = "row" >
2014-05-01 08:01:15 -07:00
< div class = "large-3 medium-3 columns m10t" >
< div >
< strong > {{$root.getWalletDisplay()}}< / strong >
< / div >
< div class = "size-12 m10t" >
2014-04-29 15:12:14 -07:00
{{$root.wallet.requiredCopayers}}-of-{{$root.wallet.totalCopayers}} wallet
2014-05-01 08:01:15 -07:00
< / div >
< div class = "size-12 m10t" ng-if = "themes.length > 1" >
< a class = "size-12" ng-click = "change_theme(th)" ng-repeat = "th in themes" > {{th}} {{$last ? '' : '· '}}< / a >
< / div >
2014-04-29 15:12:14 -07:00
< / div >
2014-05-01 08:01:15 -07:00
< div class = "large-9 medium-9 columns" >
< div class = "bottom-copay"
ng-repeat="c in $root.wallet.getRegisteredPeerIds()">
< video
ng-class="($root.wallet.getOnlinePeerIDs().indexOf(c.peerId) != -1) ? 'online' : 'offline'"
class="video-small"
autoplay ng-show="$root.videoSrc[c.peerId]"
ng-src="{{$root.getVideoURL(c.peerId)}}"
id="{{c.peerId + '-video'}}" muted="true"
title="{{c.peerId + (c.peerId == $root.wallet.network.peerId?' (You)':'')}}" >< / video >
< img ng-show = "!$root.videoSrc[c.peerId]"
ng-class="($root.wallet.getOnlinePeerIDs().indexOf(c.peerId) != -1) ? 'online' : 'offline'"
class="video-small"
src="./img/satoshi.gif"
title="{{c.peerId + (c.peerId == $root.wallet.network.peerId?' (You)':'')}}" />
< span ng-if = "c.nick" style = "position:absolute; bottom:-10px; width: 80px; overflow: hidden;" > {{c.nick}}< / span >
< / div >
2014-04-29 15:12:14 -07:00
< / div >
2014-04-29 07:56:37 -07:00
< / div >
2014-03-26 05:18:42 -07:00
< / div >
2014-03-19 09:17:18 -07:00
<!-- Templates -->
< script type = "text/ng-template" id = "signin.html" >
2014-04-22 12:07:14 -07:00
< div class = "signin" ng-controller = "SigninController" >
2014-04-30 10:59:20 -07:00
< div data-alert class = "alert-box info radius" ng-show = "loading" >
2014-04-24 19:13:55 -07:00
Looking for peers...
2014-03-31 08:48:35 -07:00
< / div >
< div ng-show = "!loading" >
2014-04-30 12:11:55 -07:00
< div class = "row" >
< div class = "large-6 columns" >
< div class = "box-signin" >
2014-05-01 07:51:35 -07:00
< h3 > Join a Wallet in Creation< / h3 >
< input type = "text" class = "form-control" placeholder = "Paste wallet secret here" ng-model = "connectionId" required autofocus >
< input type = "text" class = "form-control" placeholder = "Your name (optional)" ng-model = "nickname" >
< button class = "button primary expand radius" ng-click = "join(connectionId,nickname)" ng-disabled = "loading" loading = "Joining" > Join< / button >
2014-04-17 08:37:10 -07:00
< / div >
2014-03-31 14:05:35 -07:00
< / div >
2014-04-30 12:11:55 -07:00
< div class = "large-6 columns" >
< div class = "box-signin" >
2014-05-01 07:51:35 -07:00
< div ng-show = "wallets.length" >
< h3 > Open Wallet< / h3 >
< select class = "form-control" ng-model = "selectedWalletId" ng-options = "w.id as w.show for w in wallets" >
< / select >
< button class = "button secondary expand radius" type = "button" ng-click = "open(selectedWalletId)" ng-disabled = "loading" loading = "Opening" > Open< / button >
< / div >
< div ng-show = "!wallets.length" >
< h3 > Create a new wallet< / h3 >
< input type = "text" class = "form-control" ng-model = "walletName" placeholder = "Wallet name (optional)" >
< button class = "button secondary expand radius" ng-click = "create(walletName)" ng-disabled = "loading" loading = "Creating" > Create< / button >
< / div >
2014-04-17 08:37:10 -07:00
< / div >
< / div >
2014-04-21 09:04:47 -07:00
< / div >
< div class = "row" >
2014-04-30 12:11:55 -07:00
< div class = "large-12 columns text-center line-dashed" >
< span ng-show = "wallets.length" >
< a ng-click = "create()" ng-disabled = "loading" loading = "Creating" > Create a new wallet< / a > ·
< / span >
< a ng-href = "#import" > Import from file< / a >
2014-03-31 14:05:35 -07:00
< / div >
2014-03-27 12:31:42 -07:00
< / div >
2014-04-17 14:11:42 -07:00
2014-04-17 08:37:10 -07:00
2014-04-30 12:11:55 -07:00
< / div > <!-- End !loading -->
2014-03-27 12:31:42 -07:00
< / div >
< / script >
2014-04-29 12:34:40 -07:00
2014-04-25 13:34:24 -07:00
< script type = "text/ng-template" id = "import.html" >
< div ng-controller = "ImportController" >
< h3 > {{title}}< / h3 >
2014-04-25 15:11:56 -07:00
< div class = "large-6 columns" >
< input type = "file" class = "form-control" placeholder = "Select a backup file" ng-model = "backupFile" autofocus = "" ng-file-select >
< / div >
2014-04-25 13:34:24 -07:00
< / div >
< / script >
2014-04-16 13:07:14 -07:00
< script type = "text/ng-template" id = "setup.html" >
< div ng-controller = "SetupController" >
2014-04-30 10:59:20 -07:00
< div data-alert class = "alert-box info radius" ng-show = "loading" >
2014-04-29 13:44:35 -07:00
Creating new wallet...
2014-04-16 13:07:14 -07:00
< / div >
< div ng-show = "!loading" >
< div class = "row" >
2014-04-30 14:47:44 -07:00
< div class = "small-12 medium-8 medium-centered large-8 large-centered columns box-setup" >
< div class = "large-6 columns line-dashed-v" >
2014-04-17 14:11:42 -07:00
< h6 > Select total number of copayers< / h6 >
2014-04-16 13:07:14 -07:00
< select ng-model = "totalCopayers"
ng-options="totalCopayers as totalCopayers for totalCopayers in TCValues">
< / select >
< / div >
2014-04-30 14:47:44 -07:00
< div class = "large-6 columns" >
2014-04-21 08:08:39 -07:00
< h6 > Select required number of signatures< / h6 >
2014-04-16 13:07:14 -07:00
< select ng-model = "requiredCopayers"
ng-options="requiredCopayers as requiredCopayers for requiredCopayers in RCValues">
< / select >
< / div >
2014-04-30 14:47:44 -07:00
< / div >
< div class = "row" >
< div class = "small-12 medium-6 medium-centered large-6 large-centered columns m30v" >
< div class = "box-setup-copayers" >
< div class = "box-setup-copayers-fix" >
< img class = "box-setup-copay" ng-repeat = "i in getNumber(totalCopayers) track by $index" src = "./img/satoshi.gif" alt = "Copayer {{$index+1}}-{{totalCopayers}}" ng-class = "{'box-setup-copay-required': ($index+1) <= requiredCopayers}" >
< / div >
< / div >
< / div >
< / div >
2014-05-01 05:41:18 -07:00
2014-05-01 05:59:43 -07:00
< div class = "row" >
< div class = "small-12 medium-6 medium-centered large-6 large-centered columns m30v" >
< h6 > Wallet Password< / h6 >
< input type = "password" ng-model = "walletPassword" placeholder = "My wallet password" class = "form-control" required >
< / div >
< / div >
2014-04-30 14:47:44 -07:00
< div class = "row" >
< div class = "small-12 medium-6 medium-centered large-6 large-centered columns m30v" >
2014-04-24 12:35:52 -07:00
< h6 > Wallet name (optional)< / h6 >
2014-04-30 14:47:44 -07:00
< input type = "text" class = "form-control" ng-model = "walletName" placeholder = "Enter wallet name" >
2014-04-24 12:35:52 -07:00
< / div >
2014-05-01 05:41:18 -07:00
< div class = "large-6 large-centered columns m30v" >
2014-04-30 14:46:52 -07:00
< h6 > Your name (optional)< / h6 >
2014-05-01 05:41:18 -07:00
< input ng-model = "myNickname" placeholder = "" class = "size-24" style = "width:100%" >
< / div >
2014-04-30 14:47:44 -07:00
< / div >
< div class = "row" >
< div class = "large-12 columns line-dashed" >
2014-04-30 10:59:20 -07:00
< button class = "button primary radius right" type = "button"
2014-05-01 05:41:18 -07:00
ng-click="create(totalCopayers, requiredCopayers, walletName, myNickname)">
2014-04-16 15:45:22 -07:00
Create {{requiredCopayers}}-of-{{totalCopayers}} wallet
< / button >
2014-04-30 14:47:44 -07:00
< a class = "button secondary radius" href = "#signin" > Go back< / a >
2014-04-17 08:37:10 -07:00
< / div >
< / div >
2014-04-16 13:07:14 -07:00
< / div >
< / div >
< / script >
2014-04-28 12:22:59 -07:00
< script type = "text/ng-template" id = "password.html" >
< div class = "" ng-controller = "PasswordController" >
< h3 > Enter your password< / h3 >
< div class = "large-6 columns" >
2014-05-01 05:59:43 -07:00
< input type = "password" class = "form-control" placeholder = "Enter your passwor" ng-model = "password" autofocus required >
< button type = "submit" class = "button secondary round text-center" ng-click = "getPassphrase()" > Send< / button >
2014-04-28 12:22:59 -07:00
< / div >
< / div >
< / script >
< script type = "text/ng-template" id = "peer.html" >
< div class = "row" ng-if = "$root.wallet.requiredCopayers > $root.wallet.network.connectedCopayers().length" >
< div class = "large-12 columns p70l" >
< p class = "text-info" > < i class = "fi-alert size-28" > < / i >
{{$root.wallet.requiredCopayers}} copayers needed for signing transactions
< / div >
< / div >
< div class = "row" >
< div class = "large-4 columns"
ng-repeat="copayer in $root.wallet.getRegisteredPeerIds()">
< video
ng-class="($root.wallet.getOnlinePeerIDs().indexOf(copayer) != -1) ? 'online' : 'offline'"
class="video-small"
autoplay ng-show="$root.videoSrc[copayer]"
ng-src="{{$root.getVideoURL(copayer)}}"
id="{{copayer + '-video'}}" muted="true"
title="{{copayer + (copayer == $root.wallet.network.peerId?' (You)':'')}}" >< / video >
< img ng-show = "!$root.videoSrc[copayer]"
ng-class="($root.wallet.getOnlinePeerIDs().indexOf(copayer) != -1) ? 'online' : 'offline'"
class="video-small"
src="./img/satoshi.gif"
title="{{copayer + (copayer == $root.wallet.network.peerId?' (You)':'')}}" />
< / div >
< / div >
< / script >
2014-04-20 16:21:54 -07:00
<!-- ADDRESS -->
< script type = "text/ng-template" id = "addresses.html" >
< div class = "addresses" data-ng-controller = "AddressesController" >
2014-04-17 10:49:54 -07:00
< div ng-show = '$root.wallet.publicKeyRing.isComplete()' >
2014-04-29 11:17:14 -07:00
< div class = "row" >
2014-04-30 15:50:13 -07:00
< div class = "large-9 columns" ng-if = "addrInfos[0]" >
2014-04-29 11:17:14 -07:00
< div class = "large-8 columns" >
2014-04-30 15:50:13 -07:00
< a class = "panel db" ng-repeat = "addrInfo in addrInfos"
ng-click="selectAddr(addrInfo.address.toString())">
< span > {{addrInfo.address.toString()}}< / span >
< span ng-if = "addrInfo.isChange" > (change)< / span >
< span class = "right" >
< span ng-if = "$root.loading" > ...< / span >
< span ng-if = "!$root.loading" > {{balanceByAddr[addrInfo.address.toString()] || 0}}< / span >
< i class = "fi-bitcoin" > < / i >
2014-04-30 08:25:33 -07:00
< / span >
< / a >
2014-04-29 11:17:14 -07:00
< / div >
< div class = "large-4 columns line-dashed-v text-center" >
< qrcode size = "160" data = "{{selectedAddr}}" > < / qrcode >
2014-04-30 15:50:13 -07:00
< p class = "m10t" >
< strong >
< span ng-if = "$root.loading" > ...< / span >
< span ng-if = "!$root.loading" > {{balanceByAddr[selectedAddr] || 0}}< / span >
< i class = "fi-bitcoin" > < / i >
< / strong >
2014-04-30 08:25:33 -07:00
< / p >
2014-04-29 11:17:14 -07:00
< / div >
< / div >
2014-04-30 15:50:13 -07:00
< div class = "columns text-center" ng-class = "{'large-3' : !!addrInfos[0]}" >
2014-04-29 11:17:14 -07:00
< p > Create a New < strong > Address < / strong > < / p >
2014-04-30 15:50:13 -07:00
< button class = "secondary radius expandi new-address" ng-click = "newAddr()"
ng-disabled="loading" loading="Creating"> Create < / button >
2014-04-29 11:17:14 -07:00
< / div >
< / div >
2014-04-17 10:49:54 -07:00
< / div >
2014-03-26 05:18:42 -07:00
< / div >
< / script >
2014-05-01 05:59:43 -07:00
2014-03-26 13:56:11 -07:00
<!-- TRANSACTIONS -->
2014-03-26 05:18:42 -07:00
< script type = "text/ng-template" id = "transactions.html" >
< div class = "transactions" data-ng-controller = "TransactionsController" >
2014-04-17 10:49:54 -07:00
< div class = "row" ng-show = '$root.wallet.publicKeyRing.isComplete()' >
2014-04-14 13:58:12 -07:00
< div class = "large-12 columns" >
2014-04-22 22:01:54 -07:00
< h4 > Transactions proposals < small > ({{txs.length}})< / small > < / h4 >
2014-04-30 10:59:20 -07:00
< div class = "panel radius pending" ng-repeat = "tx in txs | orderBy: 'createdTs':true" >
2014-04-20 15:08:04 -07:00
< div class = "txheader" >
2014-04-30 10:59:20 -07:00
< div class = "row m10" >
2014-04-20 15:08:04 -07:00
< div class = "large-8 columns" >
2014-04-29 12:34:40 -07:00
< div class = "row" ng-repeat = "out in tx.outs" >
< p class = "large-3 columns" > {{out.value}} < i class = "fi-bitcoin size-18" > < / i > < / p >
< i class = "large-1 columns fi-arrow-right size-24" > < / i >
< p class = "large-8 columns" > {{out.address}} < / p >
< / div >
2014-04-20 15:08:04 -07:00
< / div >
< div class = "large-4 columns text-right" >
2014-04-22 08:26:23 -07:00
< h6 > created at {{tx.createdTs | date:'medium'}} < / h6 >
2014-04-20 15:08:04 -07:00
< / div >
< / div >
2014-04-18 07:33:49 -07:00
< / div >
2014-04-20 15:08:04 -07:00
2014-04-29 12:34:40 -07:00
< div class = "tx-copayers" >
2014-04-30 14:46:52 -07:00
< div class = "box-copayers" ng-repeat = "(cId, actions) in tx.peerActions" >
2014-04-29 12:34:40 -07:00
< figure class = "left" >
2014-04-30 14:46:52 -07:00
< a href = "#/transactions" class = "has-tip" tooltip-popup-delay = '1000' tooltip = "{{cId === $root.wallet.getMyCopayerId() ? 'You' : $root.wallet.publicKeyRing.nicknameForCopayer(cId)}}" >
< img src = "./img/satoshi.gif" alt = "cId" width = "200" >
2014-04-29 15:43:38 -07:00
< / a >
2014-04-29 12:34:40 -07:00
< / figure >
< div class = "box-status" >
2014-04-29 15:43:38 -07:00
< span ng-repeat = "(action, ts) in actions" >
< a ng-if = "action == 'create'" href = "#/transactions" class = "has-tip" tooltip-popup-delay = '1000' tooltip = "Created at {{ts | date:'medium'}}" >
< i class = "fi-crown size-12 icon-status icon-active" > < / i >
< / a >
< a ng-if = "action == 'seen'" href = "#/transactions" class = "has-tip" tooltip-popup-delay = '1000' tooltip = "Seen at {{ts | date:'medium'}}" >
< i class = "fi-eye size-12 icon-status icon-active" > < / i >
< / a >
< a ng-if = "action == 'sign'" href = "#/transactions" class = "has-tip" tooltip-popup-delay = '1000' tooltip = "Signed at {{ts | date:'medium'}}" >
< i class = "fi-check size-12 icon-status icon-active-check" > < / i >
< / a >
< a ng-if = "action == 'rejected'" href = "#/transactions" class = "has-tip" tooltip-popup-delay = '1000' tooltip = "Rejected at {{ts | date:'medium'}}" >
2014-04-30 12:11:50 -07:00
< i class = "fi-x size-12 icon-status icon-active-x" > < / i >
2014-04-29 15:43:38 -07:00
< / a >
< / span >
2014-04-29 12:34:40 -07:00
< / div >
2014-04-30 14:46:52 -07:00
< div class = "text-center" style = "margin-right:16px; color:#999; font-size:12px" >
{{$root.wallet.publicKeyRing.nicknameForCopayer(cId)}}
< / div >
2014-04-30 10:59:20 -07:00
< / div >
2014-04-18 07:33:49 -07:00
< / div >
2014-04-20 15:08:04 -07:00
2014-04-30 10:59:20 -07:00
< div class = "row m15" >
< div class = "large-4 columns" ng-show = "!tx.sentTs" style = "padding-left: 5px;" >
< div ng-show = "!tx.signedByUs && !tx.rejectedByUs && !tx.finallyRejected && tx.missingSignatures" >
< button class = "secondary radius m10r" ng-click = "sign(tx.ntxid)" ng-disabled = "loading" loading = "Signing" >
< i class = "fi-check" > < / i > Sign
< / button >
< button class = "warning radius" ng-click = "reject(tx.ntxid)" ng-disabled = "loading" loading >
< i class = "fi-x" > < / i > Reject
< / button >
2014-04-20 15:08:04 -07:00
< / div >
2014-04-30 10:59:20 -07:00
< span ng-show = "!tx.missingSignatures && !tx.sentTs" >
< button class = "primary radius" ng-click = "send(tx.ntxid)" ng-disabled = "loading" loading = "Broadcasting" > < i class = ".fi-upload-cloud" > < / i >
Broadcast Transaction
< / button >
< / span >
< / div >
2014-04-30 12:11:50 -07:00
2014-04-30 10:59:20 -07:00
< div class = "large-8 columns text-right" >
2014-04-30 12:11:50 -07:00
< span ng-show = "tx.finallyRejected" class = "text-warning" >
2014-04-30 10:59:20 -07:00
Transaction finally rejected
< / span >
< p class = "small" ng-show = "!tx.missingSignatures && tx.sentTs" >
< a href = "http://live.insight.is/tx/{{tx.sentTxid}}" target = "blank" >
< i class = "fi-arrow-right size-40" > < / i >
2014-04-20 17:19:32 -07:00
Sent at {{tx.sentTs | date:'medium'}}
2014-04-30 10:59:20 -07:00
< / a >
< / p >
< p class = "text-gray" ng-show = "!tx.finallyRejected && tx.missingSignatures==1" >
One signature missing
< / p >
< p class = "text-gray" ng-show = "!tx.finallyRejected && tx.missingSignatures>1" >
{{tx.missingSignatures}} signatures missing< / p >
< small class = "right text-gray" >
< strong > Fee: < / strong > < i class = "fi-bitcoin" > < / i > {{tx.fee}}
< strong > Proposal ID: < / strong > {{tx.ntxid}}
< / small >
2014-04-20 15:08:04 -07:00
< / div >
2014-04-18 07:33:49 -07:00
< / div >
2014-04-20 15:08:04 -07:00
< / div >
2014-04-08 10:16:38 -07:00
< / div >
2014-04-22 23:37:17 -07:00
< div class = "large-12 columns" ng-init = "getTransactions()" ng-show = "blockchain_txs[0].txid" >
2014-04-22 21:55:00 -07:00
< h3 > Last transactions< / h3 >
2014-04-22 23:37:17 -07:00
< div class = "btransactions" >
2014-04-30 12:11:50 -07:00
< div class = "panel radius" ng-repeat = "btx in blockchain_txs | orderBy: 'firstSeenTs':true" >
< div class = "m15" >
2014-04-22 21:55:00 -07:00
< div class = "row" >
< div class = "large-8 columns" >
ID: {{btx.txid}}
< / div >
< div class = "large-4 columns text-right" >
{{btx.firstSeenTs * 1000 | date:'medium'}} < / h6 >
< / div >
< / div >
< / div >
2014-04-30 12:11:50 -07:00
< div class = "tx-copayers" >
2014-04-22 21:55:00 -07:00
< div class = "large-5 columns" >
< div ng-repeat = "vin in btx.vin" >
2014-04-30 12:11:50 -07:00
< p class = "left text-gray size-12" > {{vin.addr}} < / p >
< small class = "right" > {{vin.value}}< / small >
2014-04-22 21:55:00 -07:00
< / div >
< / div >
< div class = "large-1 columns text-center" >
< i class = "fi-arrow-right" > < / i >
< / div >
< div class = "large-6 columns" >
< div ng-repeat = "vout in btx.vout" >
< div class = "row" >
< div class = "large-10 columns" >
< div ng-repeat = "addr in vout.scriptPubKey.addresses" >
2014-04-30 12:11:50 -07:00
< p class = "text-gray size-12" > {{addr}} < / p >
2014-04-22 21:55:00 -07:00
< / div >
< / div >
< div class = "large-2 columns" >
< small > {{vout.value}}< / small >
< / div >
< / div >
< / div >
< / div >
< / div >
2014-04-30 12:11:50 -07:00
< div class = "m15 size-12 text-gray" >
2014-04-22 21:55:00 -07:00
< div class = "row" >
< div class = "large-4 columns" > Fees: {{btx.fees}}< / div >
< div class = "large-4 columns text-center" > Confirmations: {{btx.confirmations || 0}}< / div >
< div class = "large-4 columns text-right" > Total: {{btx.valueOut}}< / div >
< / div >
< / div >
2014-04-08 10:16:38 -07:00
< / div >
< / div >
< / div >
< / div >
2014-03-26 05:18:42 -07:00
< / div >
< / script >
2014-03-26 13:56:11 -07:00
<!-- SEND -->
2014-03-26 05:18:42 -07:00
< script type = "text/ng-template" id = "send.html" >
< div class = "send" data-ng-controller = "SendController" >
2014-04-17 10:49:54 -07:00
< div class = "row" ng-show = '$root.wallet.publicKeyRing.isComplete()' >
2014-04-19 00:55:32 -07:00
< div class = "small-6 large-centered columns" >
2014-04-20 16:21:54 -07:00
< h3 > {{title}}< / h3 >
2014-04-19 00:55:32 -07:00
< form name = "sendForm" ng-submit = "submitForm(sendForm)" novalidate >
< div class = "row" >
< div class = "large-12 columns" >
< label for = "address" > To address
< small ng-hide = "!sendForm.address.$pristine" > required< / small >
2014-04-22 12:07:14 -07:00
< small class = "is-valid" ng-show = "!sendForm.address.$invalid && !sendForm.address.$pristine" > valid!< / small >
2014-04-19 00:55:32 -07:00
< small class = "has-error" ng-show = "sendForm.address.$invalid && !sendForm.address.$pristine" >
2014-04-22 12:07:14 -07:00
not valid< / small >
2014-04-19 00:55:32 -07:00
< / label >
2014-04-22 12:07:14 -07:00
< input type = "text" id = "address" name = "address" placeholder = "Send to" ng-model = "address" valid-address required >
2014-04-19 00:55:32 -07:00
< / div >
< / div >
< div class = "row" >
< div class = "large-6 columns" >
< div class = "row collapse" >
< label for = "amount" > Amount
< small ng-hide = "!sendForm.amount.$pristine" > required< / small >
2014-04-22 12:07:14 -07:00
< small class = "is-valid" ng-show = "!sendForm.amount.$invalid && !sendForm.amount.$pristine" > valid!< / small >
2014-04-19 00:55:32 -07:00
< small class = "has-error" ng-show = "sendForm.amount.$invalid && !sendForm.amount.$pristine" >
2014-04-23 09:16:20 -07:00
not valid.< / small >
< small ng-show = "notEnoughAmount" > {{notEnoughAmount}}< / small >
2014-04-19 00:55:32 -07:00
< / label >
< div class = "small-9 columns" >
2014-04-23 09:16:20 -07:00
< input type = "number" id = "amount" name = "amount" placeholder = "Amount" ng-model = "amount" min = "0.0001" max = "10000000" enough-amount required >
2014-04-19 00:55:32 -07:00
< / div >
< div class = "small-3 columns" >
< span class = "postfix" > BTC< / span >
< / div >
< / div >
< / div >
< / div >
< div class = "row" >
2014-04-24 18:43:19 -07:00
< div class = "large-5 columns" >
2014-04-30 10:59:20 -07:00
< button type = "submit" class = "button secondary radius text-center" ng-disabled = "sendForm.$invalid || loading" loading = "Sending" >
2014-04-19 00:55:32 -07:00
Send
< / button >
< / div >
< / div >
2014-04-16 06:52:13 -07:00
< / form >
< / div >
< / div >
2014-03-26 05:18:42 -07:00
< / div >
< / script >
2014-03-26 13:56:11 -07:00
<!-- BACKUP -->
2014-03-26 05:18:42 -07:00
< script type = "text/ng-template" id = "backup.html" >
< div class = "backup" data-ng-controller = "BackupController" >
2014-04-20 16:21:54 -07:00
< h3 > {{title}}< / h3 >
2014-04-03 12:32:17 -07:00
< div class = "row text-center" >
< div class = "large-4 columns" >
2014-04-17 14:02:20 -07:00
< a class = "panel box-backup" ng-click = "download()" >
2014-04-03 12:32:17 -07:00
< i class = "fi-download size-72" > < / i >
< p > Download File < / p >
< / a >
< / div >
< div class = "large-4 columns" >
2014-04-17 14:02:20 -07:00
< a class = "panel box-backup" ng-click = "dropbox()" >
2014-04-03 12:32:17 -07:00
< i class = "fi-social-dropbox size-72" > < / i >
< p > Backup to Dropbox < / p >
< / a >
< / div >
< div class = "large-4 columns" >
2014-04-17 14:02:20 -07:00
< a class = "panel box-backup" ng-click = "email()" >
2014-04-03 12:32:17 -07:00
< i class = "fi-mail size-72" > < / i >
< p > Backup to email < / p >
< / a >
< / div >
< / div >
2014-03-26 05:18:42 -07:00
< / div >
2014-03-19 09:17:18 -07:00
< / script >
2014-04-17 09:43:34 -07:00
2014-04-03 12:32:17 -07:00
<!-- / <div class="large - 4 columns box - backup">Backup to Dropbox</div>
// < div class = "large-4 columns box-backup" > Backup to email< / div > -->
2014-03-26 13:56:11 -07:00
<!-- NOT FOUND -->
2014-03-19 09:17:18 -07:00
< script type = "text/ng-template" id = "404.html" >
2014-03-26 05:18:42 -07:00
< h2 class = "text-center" > 404< / h2 >
< h3 class = "text-center" > Page not found< / h3 >
< p class = "text-center" > < a href = "#/" > go back...< / a > < / p >
2014-03-19 09:17:18 -07:00
< / script >
2014-04-20 12:06:56 -07:00
< script src = "config.js" > < / script >
2014-03-19 09:17:18 -07:00
< script src = "lib/angular/angular.min.js" > < / script >
2014-03-26 13:56:11 -07:00
< script src = "lib/qrcode-generator/js/qrcode.js" > < / script >
< script src = "lib/angular-qrcode/qrcode.js" > < / script >
2014-03-19 09:17:18 -07:00
< script src = "lib/angular-route/angular-route.min.js" > < / script >
2014-03-27 08:07:10 -07:00
< script src = "lib/angular-foundation/mm-foundation.min.js" > < / script >
< script src = "lib/angular-foundation/mm-foundation-tpls.min.js" > < / script >
2014-03-21 14:45:59 -07:00
< script src = "lib/peerjs/peer.js" > < / script >
2014-04-07 11:31:41 -07:00
< script src = "lib/bitcore.js" > < / script >
2014-04-28 13:23:15 -07:00
< script src = "lib/crypto-js/rollups/sha256.js" > < / script >
< script src = "lib/crypto-js/rollups/pbkdf2.js" > < / script >
2014-04-15 14:13:25 -07:00
< script src = "lib/crypto-js/rollups/aes.js" > < / script >
2014-04-17 14:02:20 -07:00
< script src = "lib/file-saver/FileSaver.js" > < / script >
2014-04-16 20:36:08 -07:00
< script src = "lib/socket.io.js" > < / script >
2014-04-30 10:14:43 -07:00
< script src = "lib/sjcl.js" > < / script >
2014-04-11 11:58:53 -07:00
< script src = "js/copayBundle.js" > < / script >
2014-04-07 11:31:41 -07:00
2014-03-19 09:17:18 -07:00
< script src = "js/app.js" > < / script >
2014-04-07 20:54:38 -07:00
< script src = "js/routes.js" > < / script >
2014-03-19 09:17:18 -07:00
< script src = "js/directives.js" > < / script >
< script src = "js/filters.js" > < / script >
2014-04-16 20:36:08 -07:00
< script src = "js/services/socket.js" > < / script >
2014-04-23 17:20:44 -07:00
< script src = "js/services/video.js" > < / script >
2014-04-16 15:14:58 -07:00
< script src = "js/services/walletFactory.js" > < / script >
2014-04-17 07:46:49 -07:00
< script src = "js/services/controllerUtils.js" > < / script >
2014-04-30 06:52:39 -07:00
< script src = "js/services/passphrase.js" > < / script >
2014-03-27 12:31:42 -07:00
2014-03-25 07:35:04 -07:00
< script src = "js/controllers/header.js" > < / script >
2014-04-25 13:22:51 -07:00
< script src = "js/controllers/footer.js" > < / script >
2014-04-20 16:21:54 -07:00
< script src = "js/controllers/addresses.js" > < / script >
2014-03-26 05:18:42 -07:00
< script src = "js/controllers/transactions.js" > < / script >
< script src = "js/controllers/send.js" > < / script >
< script src = "js/controllers/backup.js" > < / script >
2014-03-27 12:31:42 -07:00
< script src = "js/controllers/signin.js" > < / script >
2014-04-16 13:07:14 -07:00
< script src = "js/controllers/setup.js" > < / script >
2014-04-25 13:34:24 -07:00
< script src = "js/controllers/import.js" > < / script >
2014-04-28 12:22:59 -07:00
< script src = "js/controllers/password.js" > < / script >
2014-03-25 07:35:04 -07:00
2014-03-19 09:17:18 -07:00
< script src = "js/init.js" > < / script >
2014-03-14 13:38:27 -07:00
< / body >
< / html >