@ -29,6 +29,8 @@ import '@vaadin/grid'
import '@vaadin/icon'
import '@vaadin/icons'
import '@vaadin/password-field'
import '@vaadin/tabs'
import '@vaadin/tabsheet'
// Multi language support
import { get , registerTranslateConfig , translate , use } from '../../../../core/translate'
@ -127,7 +129,12 @@ class MultiWallet extends LitElement {
bookDogecoinAddress : { type : String } ,
bookDigibyteAddress : { type : String } ,
bookRavencoinAddress : { type : String } ,
bookPiratechainAddress : { type : String }
bookPiratechainAddress : { type : String } ,
visitedTab : { type : Number } ,
searchOffset : { type : Number } ,
searchLimit : { type : Number } ,
counter : { type : Number } ,
pageButtonsHidden : { type : Boolean }
}
}
@ -235,6 +242,11 @@ class MultiWallet extends LitElement {
this . bookDigibyteAddress = ''
this . bookRavencoinAddress = ''
this . bookPiratechainAddress = ''
this . visitedTab = 0
this . searchOffset = 0
this . searchLimit = 10
this . counter = 1
this . pageButtonsHidden = false
this . wallets = new Map ( )
let coinProp = {
@ -387,6 +399,7 @@ class MultiWallet extends LitElement {
< div class = "qrcode-pos" ? hidden = "${this.getSelectedWalletAddress().length < 1}" >
< qortal - qrcode - generator data = "${this.getSelectedWalletAddress()}" mode = "octet" format = "html" auto > < / q o r t a l - q r c o d e - g e n e r a t o r >
< / d i v >
$ { this . renderTabTransactions ( ) }
< div id = "transactions" >
$ { this . loading ? html `
< paper - spinner - lite style = "display: block; margin: 5px auto;" active > < / p a p e r - s p i n n e r - l i t e >
@ -2246,7 +2259,7 @@ class MultiWallet extends LitElement {
this . transactionsDOM = this . shadowRoot . getElementById ( 'transactionsDOM' )
this . showWallet ( )
this . showNewQort Wallet ( )
window . addEventListener ( 'storage' , ( ) => {
const checkLanguage = localStorage . getItem ( 'qortalLanguage' )
@ -2282,6 +2295,38 @@ class MultiWallet extends LitElement {
} , 600000 )
}
async myTabChanged ( value ) {
this . pageButtonsHidden = false
this . visitedTab = value
this . searchOffset = 0
this . searchLimit = 10
this . counter = 1
await this . renderNewDom ( )
}
renderTabTransactions ( ) {
if ( this . _selectedWallet == 'qort' ) {
return html `
< div style = "margin-top: 10px;" >
< vaadin - tabs >
< vaadin - tab id = "type" disabled > < span style = "color: var(--black);" > $ { translate ( "walletpage.wchange6" ) } : < / s p a n > < / v a a d i n - t a b >
< vaadin - tab id = "payment-tab" style = "cursor: pointer;" @ click = $ { ( e ) => this . myTabChanged ( 0 ) } > PAYMENT < / v a a d i n - t a b >
< vaadin - tab id = "arbitary-tab" style = "cursor: pointer;" @ click = $ { ( e ) => this . myTabChanged ( 1 ) } > ARBITARY < / v a a d i n - t a b >
< vaadin - tab id = "at-tab" style = "cursor: pointer;" @ click = $ { ( e ) => this . myTabChanged ( 2 ) } > AT < / v a a d i n - t a b >
< vaadin - tab id = "group-tab" style = "cursor: pointer;" @ click = $ { ( e ) => this . myTabChanged ( 3 ) } > GROUP < / v a a d i n - t a b >
< vaadin - tab id = "name-tab" style = "cursor: pointer;" @ click = $ { ( e ) => this . myTabChanged ( 4 ) } > NAME < / v a a d i n - t a b >
< vaadin - tab id = "asset-tab" style = "cursor: pointer;" @ click = $ { ( e ) => this . myTabChanged ( 5 ) } > ASSET < / v a a d i n - t a b >
< vaadin - tab id = "poll-tab" style = "cursor: pointer;" @ click = $ { ( e ) => this . myTabChanged ( 6 ) } > POLL < / v a a d i n - t a b >
< vaadin - tab id = "rewarshare-tab" style = "cursor: pointer;" @ click = $ { ( e ) => this . myTabChanged ( 7 ) } > REWARDSHARE < / v a a d i n - t a b >
< vaadin - tab id = "misc-tab" style = "cursor: pointer;" @ click = $ { ( e ) => this . myTabChanged ( 8 ) } > MISC < / v a a d i n - t a b >
< / v a a d i n - t a b s >
< / d i v >
`
} else {
return html ` `
}
}
async paymentFee ( ) {
const myNode = window . parent . reduxStore . getState ( ) . app . nodeConfig . knownNodes [ window . parent . reduxStore . getState ( ) . app . nodeConfig . node ]
const nodeUrl = myNode . protocol + '://' + myNode . domain + ':' + myNode . port
@ -2499,7 +2544,11 @@ class MultiWallet extends LitElement {
tabWalletQort ( ) {
this . _selectedWallet = 'qort'
this . showWallet ( )
this . visitedTab = 0
this . searchOffset = 0
this . searchLimit = 10
this . pageButtonsHidden = false
this . showNewQortWallet ( )
}
tabWalletBtc ( ) {
@ -3538,19 +3587,18 @@ class MultiWallet extends LitElement {
renderCAB ( ) {
return html `
< span > $ { this . selectedTransaction . aTAddress } < / s p a n >
< button - icon - copy
title = "${translate(" blockpage . bcchange8 ")}"
onSuccessMessage = "${translate(" walletpage . wchange4 ")}"
onErrorMessage = "${translate(" walletpage . wchange39 ")}"
textToCopy = $ { this . selectedTransaction . aTAddress }
buttonSize = "24px"
iconSize = "16px"
color = "var(--copybutton)"
offsetLeft = "4px"
>
< / b u t t o n - i c o n - c o p y >
`
< span > $ { this . selectedTransaction . aTAddress } < / s p a n >
< button - icon - copy
title = "${translate(" blockpage . bcchange8 ")}"
onSuccessMessage = "${translate(" walletpage . wchange4 ")}"
onErrorMessage = "${translate(" walletpage . wchange39 ")}"
textToCopy = $ { this . selectedTransaction . aTAddress }
buttonSize = "24px"
iconSize = "16px"
color = "var(--copybutton)"
offsetLeft = "4px"
> < / b u t t o n - i c o n - c o p y >
`
}
renderFetchText ( ) {
@ -3857,7 +3905,7 @@ class MultiWallet extends LitElement {
}
}
await validateReceiver ( recipient )
await this . showWallet ( )
await this . showNewQort Wallet ( )
}
async sendBtc ( ) {
@ -4139,15 +4187,21 @@ class MultiWallet extends LitElement {
if ( this . _selectedWallet == 'qort' ) {
if ( ! window . parent . reduxStore . getState ( ) . app . blockInfo . height ) {
await parentEpml . request ( 'apiCall' , { url : ` /blocks/height ` , type : 'api' } )
. then ( height => parentEpml . request ( 'updateBlockInfo' , { height } ) )
await parentEpml . request ( 'apiCall' , {
url : ` /blocks/height ` ,
type : 'api'
} ) . then ( height => parentEpml . request ( 'updateBlockInfo' , {
height
} ) )
}
}
const coin = this . _selectedWallet
await this . fetchWalletAddress ( this . _selectedWallet )
await this . fetchWalletServer ( this . _selectedWallet )
await this . fetchWalletDetails ( this . _selectedWallet )
await this . fetchWalletServer ( this . _selectedWallet )
if ( this . _selectedWallet == coin ) {
await this . renderTransactions ( )
await this . getTransactionGrid ( this . _selectedWallet )
@ -4157,32 +4211,314 @@ class MultiWallet extends LitElement {
}
}
async showNewQortWallet ( ) {
this . pageButtonsHidden = false
this . transactionsDOM . hidden = true
this . loading = true
if ( ! window . parent . reduxStore . getState ( ) . app . blockInfo . height ) {
await parentEpml . request ( 'apiCall' , {
url : ` /blocks/height ` ,
type : 'api'
} ) . then ( height => parentEpml . request ( 'updateBlockInfo' , {
height
} ) )
}
const coin = this . _selectedWallet
this . balanceString = this . renderFetchText ( )
parentEpml . request ( 'apiCall' , {
url : ` /addresses/balance/ ${ this . wallets . get ( 'qort' ) . wallet . address } `
} ) . then ( ( res ) => {
if ( isNaN ( Number ( res ) ) ) {
let snack4string = get ( "walletpage.wchange32" )
parentEpml . request ( 'showSnackBar' , ` ${ snack4string } ` )
} else {
if ( this . _selectedWallet == coin ) {
this . wallets . get ( coin ) . balance = Number ( res ) . toFixed ( 8 )
this . balanceString = this . wallets . get ( this . _selectedWallet ) . balance + " " + this . _selectedWallet . toLocaleUpperCase ( )
this . balance = this . wallets . get ( this . _selectedWallet ) . balance
}
}
} )
await this . fetchWalletDetails ( this . _selectedWallet )
await this . fetchWalletServer ( this . _selectedWallet )
this . shadowRoot . getElementById ( 'type' ) . selected = false
this . shadowRoot . getElementById ( 'payment-tab' ) . selected = true
this . shadowRoot . getElementById ( 'arbitary-tab' ) . selected = false
this . shadowRoot . getElementById ( 'at-tab' ) . selected = false
this . shadowRoot . getElementById ( 'group-tab' ) . selected = false
this . shadowRoot . getElementById ( 'name-tab' ) . selected = false
this . shadowRoot . getElementById ( 'asset-tab' ) . selected = false
this . shadowRoot . getElementById ( 'poll-tab' ) . selected = false
this . shadowRoot . getElementById ( 'rewarshare-tab' ) . selected = false
this . shadowRoot . getElementById ( 'misc-tab' ) . selected = false
if ( this . _selectedWallet == coin ) {
await this . renderTransactions ( )
await this . getTransactionGrid ( this . _selectedWallet )
this . loading = false
this . transactionsDOM . hidden = false
}
}
async renderNewDom ( ) {
this . transactionsDOM . hidden = true
this . loading = true
if ( ! window . parent . reduxStore . getState ( ) . app . blockInfo . height ) {
await parentEpml . request ( 'apiCall' , {
url : ` /blocks/height ` ,
type : 'api'
} ) . then ( height => parentEpml . request ( 'updateBlockInfo' , {
height
} ) )
}
const coin = this . _selectedWallet
await this . fetchWalletDetails ( this . _selectedWallet )
if ( this . _selectedWallet == coin ) {
await this . renderTransactions ( )
await this . getTransactionGrid ( this . _selectedWallet )
this . loading = false
this . transactionsDOM . hidden = false
}
}
goBackwardTX ( ) {
if ( this . searchOffset === 0 ) {
this . pageButtonsHidden = false
this . searchLimit = 10
this . counter = 1
} else {
this . pageButtonsHidden = false
this . searchLimit = 10
this . counter = this . searchOffset / 10
this . searchOffset = this . searchOffset - 10
this . renderNewDom ( )
}
}
goForwardTX ( ) {
this . pageButtonsHidden = false
this . searchLimit = 10
this . searchOffset = this . searchOffset + 10
this . counter = ( this . searchOffset / 10 ) + 1
this . renderNewDom ( )
}
showAllTX ( ) {
this . pageButtonsHidden = true
this . searchLimit = 0
this . searchOffset = 0
this . counter = 1
this . renderNewDom ( )
}
async fetchWalletDetails ( coin ) {
switch ( coin ) {
case 'qort' :
this . balanceString = this . renderFetchText ( )
parentEpml . request ( 'apiCall' , {
url : ` /addresses/balance/ ${ this . wallets . get ( 'qort' ) . wallet . address } ?apiKey= ${ this . getApiKey ( ) } `
} ) . then ( ( res ) => {
if ( isNaN ( Number ( res ) ) ) {
let snack4string = get ( "walletpage.wchange32" )
parentEpml . request ( 'showSnackBar' , ` ${ snack4string } ` )
} else {
if ( this . _selectedWallet == coin ) {
this . wallets . get ( coin ) . balance = Number ( res ) . toFixed ( 8 )
this . balanceString = this . wallets . get ( this . _selectedWallet ) . balance + " " + this . _selectedWallet . toLocaleUpperCase ( )
this . balance = this . wallets . get ( this . _selectedWallet ) . balance
}
}
const paymentTxsQort = await parentEpml . request ( 'apiCall' , {
url : ` /transactions/search?address= ${ this . wallets . get ( 'qort' ) . wallet . address } &confirmationStatus=CONFIRMED&reverse=true
& limit = $ { this . searchLimit }
& offset = $ { this . searchOffset }
& txType = PAYMENT
`
} )
const pendingPaymentTxsQort = await parentEpml . request ( 'apiCall' , {
url : ` /transactions/unconfirmed?creator= ${ this . wallets . get ( 'qort' ) . wallet . base58PublicKey } &reverse=true
& limit = $ { this . searchLimit }
& offset = $ { this . searchOffset }
& txType = PAYMENT
`
} )
const arbitaryTxsQort = await parentEpml . request ( 'apiCall' , {
url : ` /transactions/search?address= ${ this . wallets . get ( 'qort' ) . wallet . address } &confirmationStatus=CONFIRMED&reverse=true
& limit = $ { this . searchLimit }
& offset = $ { this . searchOffset }
& txType = ARBITRARY
`
} )
const pendingArbitaryTxsQort = await parentEpml . request ( 'apiCall' , {
url : ` /transactions/unconfirmed?creator= ${ this . wallets . get ( 'qort' ) . wallet . base58PublicKey } &reverse=true
& limit = $ { this . searchLimit }
& offset = $ { this . searchOffset }
& txType = ARBITRARY
`
} )
const atTxsQort = await parentEpml . request ( 'apiCall' , {
url : ` /transactions/search?address= ${ this . wallets . get ( 'qort' ) . wallet . address } &confirmationStatus=CONFIRMED&reverse=true
& limit = $ { this . searchLimit }
& offset = $ { this . searchOffset }
& txType = AT
& txType = DEPLOY _AT
& txType = MESSAGE
`
} )
const pendingAtTxsQort = await parentEpml . request ( 'apiCall' , {
url : ` /transactions/unconfirmed?creator= ${ this . wallets . get ( 'qort' ) . wallet . base58PublicKey } &reverse=true
& limit = $ { this . searchLimit }
& offset = $ { this . searchOffset }
& txType = AT
& txType = DEPLOY _AT
& txType = MESSAGE
`
} )
const groupTxsQort = await parentEpml . request ( 'apiCall' , {
url : ` /transactions/search?address= ${ this . wallets . get ( 'qort' ) . wallet . address } &confirmationStatus=CONFIRMED&reverse=true
& limit = $ { this . searchLimit }
& offset = $ { this . searchOffset }
& txType = CREATE _GROUP
& txType = UPDATE _GROUP
& txType = ADD _GROUP _ADMIN
& txType = REMOVE _GROUP _ADMIN
& txType = GROUP _BAN
& txType = CANCEL _GROUP _BAN
& txType = GROUP _KICK
& txType = GROUP _INVITE
& txType = CANCEL _GROUP _INVITE
& txType = JOIN _GROUP
& txType = LEAVE _GROUP
& txType = GROUP _APPROVAL
& txType = SET _GROUP
`
} )
const pendingGroupTxsQort = await parentEpml . request ( 'apiCall' , {
url : ` /transactions/unconfirmed?creator= ${ this . wallets . get ( 'qort' ) . wallet . base58PublicKey } &reverse=true
& limit = $ { this . searchLimit }
& offset = $ { this . searchOffset }
& txType = CREATE _GROUP
& txType = UPDATE _GROUP
& txType = ADD _GROUP _ADMIN
& txType = REMOVE _GROUP _ADMIN
& txType = GROUP _BAN
& txType = CANCEL _GROUP _BAN
& txType = GROUP _KICK
& txType = GROUP _INVITE
& txType = CANCEL _GROUP _INVITE
& txType = JOIN _GROUP
& txType = LEAVE _GROUP
& txType = GROUP _APPROVAL
& txType = SET _GROUP
`
} )
const txsQort = await parentEpml . request ( 'apiCall' , {
url : ` /transactions/search?address= ${ this . wallets . get ( 'qort' ) . wallet . address } &confirmationStatus=CONFIRMED&reverse=true&txType=PAYMENT&txType=REGISTER_NAME&txType=UPDATE_NAME&txType=SELL_NAME&txType=CANCEL_SELL_NAME&txType=BUY_NAME&txType=CREATE_POLL&txType=VOTE_ON_POLL&txType=ARBITRARY&txType=ISSUE_ASSET&txType=TRANSFER_ASSET&txType=CREATE_ASSET_ORDER&txType=CANCEL_ASSET_ORDER&txType=MULTI_PAYMENT&txType=DEPLOY_AT&txType=MESSAGE&txType=AIRDROP&txType=AT&txType=CREATE_GROUP&txType=UPDATE_GROUP&txType=ADD_GROUP_ADMIN&txType=REMOVE_GROUP_ADMIN&txType=GROUP_BAN&txType=CANCEL_GROUP_BAN&txType=GROUP_KICK&txType=GROUP_INVITE&txType=CANCEL_GROUP_INVITE&txType=JOIN_GROUP&txType=LEAVE_GROUP&txType=GROUP_APPROVAL&txType=SET_GROUP&txType=UPDATE_ASSET&txType=ACCOUNT_FLAGS&txType=ENABLE_FORGING&txType=REWARD_SHARE&txType=ACCOUNT_LEVEL&txType=TRANSFER_PRIVS&txType=PRESENCE ` ,
const nameTxsQort = await parentEpml . request ( 'apiCall' , {
url : ` /transactions/search?address= ${ this . wallets . get ( 'qort' ) . wallet . address } &confirmationStatus=CONFIRMED&reverse=true
& limit = $ { this . searchLimit }
& offset = $ { this . searchOffset }
& txType = REGISTER _NAME
& txType = UPDATE _NAME
& txType = SELL _NAME
& txType = CANCEL _SELL _NAME
& txType = BUY _NAME
`
} )
const pendingTxsQort = await parentEpml . request ( 'apiCall' , {
url : ` /transactions/unconfirmed?creator= ${ this . wallets . get ( 'qort' ) . wallet . base58PublicKey } &reverse=true&txType=PAYMENT&txType=REGISTER_NAME&txType=UPDATE_NAME&txType=SELL_NAME&txType=CANCEL_SELL_NAME&txType=BUY_NAME&txType=CREATE_POLL&txType=VOTE_ON_POLL&txType=ARBITRARY&txType=ISSUE_ASSET&txType=TRANSFER_ASSET&txType=CREATE_ASSET_ORDER&txType=CANCEL_ASSET_ORDER&txType=MULTI_PAYMENT&txType=DEPLOY_AT&txType=MESSAGE&txType=AIRDROP&txType=AT&txType=CREATE_GROUP&txType=UPDATE_GROUP&txType=ADD_GROUP_ADMIN&txType=REMOVE_GROUP_ADMIN&txType=GROUP_BAN&txType=CANCEL_GROUP_BAN&txType=GROUP_KICK&txType=GROUP_INVITE&txType=CANCEL_GROUP_INVITE&txType=JOIN_GROUP&txType=LEAVE_GROUP&txType=GROUP_APPROVAL&txType=SET_GROUP&txType=UPDATE_ASSET&txType=ACCOUNT_FLAGS&txType=ENABLE_FORGING&txType=REWARD_SHARE&txType=ACCOUNT_LEVEL&txType=TRANSFER_PRIVS&txType=PRESENCE ` ,
const pendingNameTxsQort = await parentEpml . request ( 'apiCall' , {
url : ` /transactions/unconfirmed?creator= ${ this . wallets . get ( 'qort' ) . wallet . base58PublicKey } &reverse=true
& limit = $ { this . searchLimit }
& offset = $ { this . searchOffset }
& txType = REGISTER _NAME
& txType = UPDATE _NAME
& txType = SELL _NAME
& txType = CANCEL _SELL _NAME
& txType = BUY _NAME
`
} )
const assetTxsQort = await parentEpml . request ( 'apiCall' , {
url : ` /transactions/search?address= ${ this . wallets . get ( 'qort' ) . wallet . address } &confirmationStatus=CONFIRMED&reverse=true
& limit = $ { this . searchLimit }
& offset = $ { this . searchOffset }
& txType = ISSUE _ASSET
& txType = TRANSFER _ASSET
& txType = CREATE _ASSET _ORDER
& txType = CANCEL _ASSET _ORDER
& txType = UPDATE _ASSET
`
} )
const pendingAssetTxsQort = await parentEpml . request ( 'apiCall' , {
url : ` /transactions/unconfirmed?creator= ${ this . wallets . get ( 'qort' ) . wallet . base58PublicKey } &reverse=true
& limit = $ { this . searchLimit }
& offset = $ { this . searchOffset }
& txType = ISSUE _ASSET
& txType = TRANSFER _ASSET
& txType = CREATE _ASSET _ORDER
& txType = CANCEL _ASSET _ORDER
& txType = UPDATE _ASSET
`
} )
const pollTxsQort = await parentEpml . request ( 'apiCall' , {
url : ` /transactions/search?address= ${ this . wallets . get ( 'qort' ) . wallet . address } &confirmationStatus=CONFIRMED&reverse=true
& limit = $ { this . searchLimit }
& offset = $ { this . searchOffset }
& txType = CREATE _POLL
& txType = VOTE _ON _POLL
`
} )
const pendingPollTxsQort = await parentEpml . request ( 'apiCall' , {
url : ` /transactions/unconfirmed?creator= ${ this . wallets . get ( 'qort' ) . wallet . base58PublicKey } &reverse=true
& limit = $ { this . searchLimit }
& offset = $ { this . searchOffset }
& txType = CREATE _POLL
& txType = VOTE _ON _POLL
`
} )
const rewardshareTxsQort = await parentEpml . request ( 'apiCall' , {
url : ` /transactions/search?address= ${ this . wallets . get ( 'qort' ) . wallet . address } &confirmationStatus=CONFIRMED&reverse=true
& limit = $ { this . searchLimit }
& offset = $ { this . searchOffset }
& txType = REWARD _SHARE
`
} )
const pendingRewardshareTxsQort = await parentEpml . request ( 'apiCall' , {
url : ` /transactions/unconfirmed?creator= ${ this . wallets . get ( 'qort' ) . wallet . base58PublicKey } &reverse=true
& limit = $ { this . searchLimit }
& offset = $ { this . searchOffset }
& txType = REWARD _SHARE
`
} )
const miscTxsQort = await parentEpml . request ( 'apiCall' , {
url : ` /transactions/search?address= ${ this . wallets . get ( 'qort' ) . wallet . address } &confirmationStatus=CONFIRMED&reverse=true
& limit = $ { this . searchLimit }
& offset = $ { this . searchOffset }
& txType = TRANSFER _PRIVS
& txType = PRESENCE
`
} )
const pendingMiscTxsQort = await parentEpml . request ( 'apiCall' , {
url : ` /transactions/unconfirmed?creator= ${ this . wallets . get ( 'qort' ) . wallet . base58PublicKey } &reverse=true
& limit = $ { this . searchLimit }
& offset = $ { this . searchOffset }
& txType = TRANSFER _PRIVS
& txType = PRESENCE
`
} )
if ( this . _selectedWallet == coin ) {
this . wallets . get ( coin ) . transactions = pendingTxsQort . concat ( txsQort )
if ( this . visitedTab === 0 ) {
this . wallets . get ( coin ) . transactions = pendingPaymentTxsQort . concat ( paymentTxsQort )
} else if ( this . visitedTab === 1 ) {
this . wallets . get ( coin ) . transactions = pendingArbitaryTxsQort . concat ( arbitaryTxsQort )
} else if ( this . visitedTab === 2 ) {
this . wallets . get ( coin ) . transactions = pendingAtTxsQort . concat ( atTxsQort )
} else if ( this . visitedTab === 3 ) {
this . wallets . get ( coin ) . transactions = pendingGroupTxsQort . concat ( groupTxsQort )
} else if ( this . visitedTab === 4 ) {
this . wallets . get ( coin ) . transactions = pendingNameTxsQort . concat ( nameTxsQort )
} else if ( this . visitedTab === 5 ) {
this . wallets . get ( coin ) . transactions = pendingAssetTxsQort . concat ( assetTxsQort )
} else if ( this . visitedTab === 6 ) {
this . wallets . get ( coin ) . transactions = pendingPollTxsQort . concat ( pollTxsQort )
} else if ( this . visitedTab === 7 ) {
this . wallets . get ( coin ) . transactions = pendingRewardshareTxsQort . concat ( rewardshareTxsQort )
} else if ( this . visitedTab === 8 ) {
this . wallets . get ( coin ) . transactions = pendingMiscTxsQort . concat ( miscTxsQort )
}
}
break
case 'btc' :
@ -4643,7 +4979,7 @@ class MultiWallet extends LitElement {
}
return html `
< div style = "padding-left:12px;" ? hidden = "${!this.isEmptyArray(transactions)}" > < span style = "color: var(--black);" > $ { translate ( "walletpage.wchange38" ) } < / s p a n > < / d i v >
< vaadin - grid theme = "large" id = "${coin}TransactionsGrid" ? hidden = "${this.isEmptyArray(this.wallets.get(this._selectedWallet).transactions)}" page - size = "25 " all - rows - visible >
< vaadin - grid theme = "large" id = "${coin}TransactionsGrid" ? hidden = "${this.isEmptyArray(this.wallets.get(this._selectedWallet).transactions)}" . items = "${this.wallets.get(this._selectedWallet).transactions} " all - rows - visible >
< vaadin - grid - column
auto - width
header = "${translate(" walletpage . wchange41 ")}"
@ -4709,7 +5045,20 @@ class MultiWallet extends LitElement {
>
< / v a a d i n - g r i d - c o l u m n >
< / v a a d i n - g r i d >
< div id = "pages" > < / d i v >
< div style = "margin-top: 10px;" >
< vaadin - button theme = "primary small" style = "cursor: pointer;" ? hidden = "${this.pageButtonsHidden}" @ click = $ { ( ) => this . goBackwardTX ( ) } >
<< < span style = "text-transform: uppercase; font-size: 14px;" > $ { translate ( "general.back" ) } < / s p a n >
< / v a a d i n - b u t t o n >
< span style = "color: var(--black); font-size: 16px; font-weight: 600;" > & nbsp ; $ { translate ( "general.page" ) } $ { this . counter } & nbsp ; < / s p a n >
< vaadin - button theme = "primary small" style = "cursor: pointer;" ? hidden = "${this.wallets.get(this._selectedWallet).transactions.length < 10 || this.pageButtonsHidden}" @ click = $ { ( ) => this . goForwardTX ( ) } >
< span style = "text-transform: uppercase; font-size: 14px;" > $ { translate ( "general.next" ) } < / s p a n > > >
< / v a a d i n - b u t t o n >
< div style = "float: right;" >
< vaadin - button theme = "primary small" style = "cursor: pointer;" @ click = $ { ( ) => this . showAllTX ( ) } >
< span style = "text-transform: uppercase; font-size: 14px;" > $ { translate ( "general.view" ) } $ { translate ( "general.all" ) } < / s p a n >
< / v a a d i n - b u t t o n >
< / d i v >
< / d i v >
`
}