+ transaction details with explorer redirection

+ sorting and floating header for wallets and address book
+ detect geth crash and notify the user
This commit is contained in:
Taegus
2019-03-05 18:54:29 +01:00
parent 0552dcdcba
commit 35c1eb5472
10 changed files with 366 additions and 251 deletions

View File

@@ -134,6 +134,15 @@ body.pg-loaded > .inner {
height: 300px;
}
#dlgTransactionInfo {
width: 700px;
max-width: 700px !important;
}
#dlgTransactionInfo .modalBody {
height: 300px;
}
#dlgAddAddressToBook .modalBody,
#dlgChangeWalletName .modalBody,
#dlgChangeAddressName .modalBody,
@@ -231,6 +240,7 @@ div.sidebar svg {
.dataTables_scrollBody .transactionsBlockNum {
color: #f92472;
cursor: pointer;
}
.sendWrapper,
@@ -268,7 +278,18 @@ div.sidebar svg {
.sendTXInfo label {
line-height: 30px;
font-size: 1.2em;
font-size: 1.1em;
}
.txInfo label {
line-height: 30px;
margin-left: 5px;
font-size: 1em;
}
.txInfo label + label {
color: #7A1336;
margin-left: 0px;
}
.sendTXdivider {
@@ -403,4 +424,4 @@ div.noAddressWrapper {
#chartMarketPrice {
height: calc(100vh - 260px);
}
}

View File

@@ -8,7 +8,7 @@ th[role=columnheader]:not(.no-sort):after {
margin-top: 7px;
border-width: 0 8px 8px;
border-style: solid;
border-color: #7A1336 transparent;
border-color: #ccc transparent;
visibility: hidden;
opacity: 0;
-ms-user-select: none;

View File

@@ -1,67 +1,74 @@
<div id="walletsToolbar">
<button type="button" class="btn btn-etho" id="btnNewAddress"><i class="fas fa-plus"></i></button>
<button type="button" class="btn btn-etho" id="btnNewAddress">
<i class="fas fa-plus"></i>
</button>
</div>
<div id="addressList" class="{{#if addressData.length}}addressWrapper{{else}}noAddressWrapper{{/if}}">
{{#if addressData.length}}
<table class="bordered" id="addressTable">
<thead>
<tr>
<th scope="col"></th>
<th scope="col">Name</th>
<th scope="col">Address</th>
<th scope="col">Actions</th>
</tr>
</thead>
<tbody>
{{#addressData}}
<tr>
<th scope="row" class="colEdit"><button type="button" class="btn btn-etho btnChangAddressName" data-address="{{address}}" data-name="{{name}}">Edit</button></th>
<td>{{name}}</td>
<td><span class="textAddress">{{address}}</span></td>
<td><button type="button" class="btn btn-etho btnDeleteAddress" data-address="{{address}}"><i class="far fa-trash-alt"></i></button></td>
</tr>
{{/addressData}}
</tbody>
</table>
{{else}}
<div id="noAddressPresent">You don't have any addresses, create a new one</div>
{{/if}}
{{#if addressData.length}}
<table class="bordered" id="addressTable">
<thead>
<tr>
<th scope="col" data-sort-method='none'></th>
<th scope="col">Name</th>
<th scope="col">Address</th>
<th scope="col" data-sort-method='none'>Actions</th>
</tr>
</thead>
<tbody>
{{#addressData}}
<tr>
<th scope="row" class="colEdit">
<button type="button" class="btn btn-etho btnChangAddressName" data-address="{{address}}" data-name="{{name}}">Edit</button>
</th>
<td>{{name}}</td>
<td>
<span class="textAddress">{{address}}</span></td>
<td>
<button type="button" class="btn btn-etho btnDeleteAddress" data-address="{{address}}">
<i class="far fa-trash-alt"></i>
</button>
</td>
</tr>
{{/addressData}}
</tbody>
</table>
{{else}}
<div id="noAddressPresent">You don't have any addresses, create a new one</div>
{{/if}}
</div>
<div id="dlgCreateAddressAndName" class="modalDialog" data-iziModal-title="Create new address" data-iziModal-subtitle="Enter the name and the address" data-iziModal-icon="icon-home">
<div class="modalBody">
<div class="form-group">
<label for="addressName">Address Name:</label>
<input type="text" class="form-control" id="addressName">
</div>
<div class="form-group">
<label for="addressHash">Address Hash:</label>
<input type="text" class="form-control" id="addressHash">
</div>
<button type="button" class="btn btn-etho btn-dialog-confirm" id="btnCreateAddressConfirm">Confirm</button>
<div id="dlgCreateAddressAndName" class="modalDialog" data-izimodal-title="Create new address" data-izimodal-subtitle="Enter the name and the address" data-izimodal-icon="icon-home">
<div class="modalBody">
<div class="form-group">
<label for="addressName">Address Name:</label>
<input type="text" class="form-control" id="addressName">
</div>
<div class="form-group">
<label for="addressHash">Address Hash:</label>
<input type="text" class="form-control" id="addressHash">
</div>
<button type="button" class="btn btn-etho btn-dialog-confirm" id="btnCreateAddressConfirm">Confirm</button>
</div>
</div>
<!-- The modal to change address name -->
<div id="dlgChangeAddressName" class="modalDialog" data-iziModal-title="Address Name" data-iziModal-subtitle="Enter the name for this address" data-iziModal-icon="icon-home">
<div class="modalBody">
<div class="form-group">
<label for="usr">Type Name:</label>
<input type="text" class="form-control" id="inputAddressName">
</div>
<button type="button" class="btn btn-etho btn-dialog-confirm" id="btnChangeAddressNameConfirm">Confirm</button>
<div id="dlgChangeAddressName" class="modalDialog" data-izimodal-title="Address Name" data-izimodal-subtitle="Enter the name for this address" data-izimodal-icon="icon-home">
<div class="modalBody">
<div class="form-group">
<label for="usr">Type Name:</label>
<input type="text" class="form-control" id="inputAddressName">
</div>
<button type="button" class="btn btn-etho btn-dialog-confirm" id="btnChangeAddressNameConfirm">Confirm</button>
</div>
</div>
<!-- The modal for delete confirmation -->
<div id="dlgDeleteAddressConfirm" class="modalDialog" data-iziModal-title="Application Error" data-iziModal-subtitle="Something went wrong, don't kill the fish..." data-iziModal-icon="icon-home">
<div class="modalBody">
<div class="form-group">
<span>Do you really want to delete the address?</span>
</div>
<button type="button" class="btn btn-etho btn-dialog-cancel" id="btnDeleteAddressCancel">No</button>
<button type="button" class="btn btn-etho btn-dialog-confirm" id="btnDeleteAddressConfirm">Yes</button>
<div id="dlgDeleteAddressConfirm" class="modalDialog" data-izimodal-title="Application Error" data-izimodal-subtitle="Something went wrong, don't kill the fish..." data-izimodal-icon="icon-home">
<div class="modalBody">
<div class="form-group">
<span>Do you really want to delete the address?</span>
</div>
<button type="button" class="btn btn-etho btn-dialog-cancel" id="btnDeleteAddressCancel">No</button>
<button type="button" class="btn btn-etho btn-dialog-confirm" id="btnDeleteAddressConfirm">Yes</button>
</div>
</div>

View File

@@ -1,110 +1,120 @@
<div class="sendWrapper">
<div class="card-panel">
<form class="col s12">
<div class="row">
<div class="input-field col s6">
<select id="sendFromAddress">
<option value="" disabled selected>Choose your address</option>
{{#addressData}}
<option value="{{address}}">{{name}} - {{address}}</option>
{{/addressData}}
</select>
<label for="sendFromAddress">From address:</label>
<small id="sendFromAddressName" class="form-text text-muted"></small>
</div>
<div class="input-field col s6">
<label for="sendToAddress" class="active">To address:</label>
<div class="addressInputWrapper">
<input id="sendToAddress" placeholder="recipient address" type="text">
<button type="button" class="btn btn-etho btnSendToolButton" id="btnAddToAddressBook"><i class="fas fa-plus"></i></button>
<button type="button" class="btn btn-etho btnSendToolButton" id="btnLookForToAddress"><i class="fas fa-search"></i></button>
</div>
<small id="sendToAddressName" class="form-text text-muted"></small>
</div>
</div>
<div class="row">
<div class="input-field col s6">
<input id="sendAmmount" placeholder="0" type="number" value="0">
<label for="sendAmmount" class="active">Amount:</label>
</div>
<div class="input-field col s6">
<div class="input-field col s12">
<span id="sendMaxAmmount">0</span><span>ETHO</span>
<button type="button" class="btn btn-etho" id="btnSendAll">ALL</button>
</div>
</div>
</div>
<div class="row">
<div class="input-field col s12">
<button type="button" class="btn btn-etho" id="btnSendTransaction">Send</button>
</div>
</div>
</form>
</div>
<div id="cardTransactionsForAddress" class="card-panel" style="display: none;">
<table id="tableTransactionsForAddress" class="display" style="width:100%">
<thead>
<tr>
<th>Block</th>
<th>Timestamp</th>
<th>To</th>
<th>Value</th>
</tr>
</thead>
<tfoot>
<tr>
<th>Block</th>
<th>Timestamp</th>
<th>To</th>
<th>Value</th>
</tr>
</tfoot>
</table>
</div>
<div class="card-panel">
<form class="col s12">
<div class="row">
<div class="input-field col s6">
<select id="sendFromAddress">
<option value="" disabled="disabled" selected="selected">Choose your address</option>
{{#addressData}}
<option value="{{address}}">{{name}}
-
{{address}}</option>
{{/addressData}}
</select>
<label for="sendFromAddress">From address:</label>
<small id="sendFromAddressName" class="form-text text-muted"></small>
</div>
<div class="input-field col s6">
<label for="sendToAddress" class="active">To address:</label>
<div class="addressInputWrapper">
<input id="sendToAddress" placeholder="recipient address" type="text">
<button type="button" class="btn btn-etho btnSendToolButton" id="btnAddToAddressBook">
<i class="fas fa-plus"></i>
</button>
<button type="button" class="btn btn-etho btnSendToolButton" id="btnLookForToAddress">
<i class="fas fa-search"></i>
</button>
</div>
<small id="sendToAddressName" class="form-text text-muted"></small>
</div>
</div>
<div class="row">
<div class="input-field col s6">
<input id="sendAmmount" placeholder="0" type="number" value="0">
<label for="sendAmmount" class="active">Amount:</label>
</div>
<div class="input-field col s6">
<div class="input-field col s12">
<span id="sendMaxAmmount">0</span><span>ETHO</span>
<button type="button" class="btn btn-etho" id="btnSendAll">ALL</button>
</div>
</div>
</div>
<div class="row">
<div class="input-field col s12">
<button type="button" class="btn btn-etho" id="btnSendTransaction">Send</button>
</div>
</div>
</form>
</div>
<div id="cardTransactionsForAddress" class="card-panel" style="display: none;">
<table id="tableTransactionsForAddress" class="display" style="width:100%">
<thead>
<tr>
<th>Block</th>
<th>Timestamp</th>
<th>To</th>
<th>Value</th>
</tr>
</thead>
<tfoot>
<tr>
<th>Block</th>
<th>Timestamp</th>
<th>To</th>
<th>Value</th>
</tr>
</tfoot>
</table>
</div>
</div>
<!-- The modal for wallet password -->
<div id="dlgSendWalletPassword" class="modalDialog" data-iziModal-title="Wallet Password" data-iziModal-subtitle="To send from this wallet, please enter the wallet password" data-iziModal-icon="icon-home">
<div class="modalBody">
<div class="form-group sendTXInfo">
<i class="fas fa-wallet"></i>
<label>From address:</label><label id="fromAddressInfo"></label>
</div>
<div class="form-group sendTXInfo">
<i class="fas fa-wallet"></i>
<label>To address:</label><label id="toAddressInfo"></label>
</div>
<div class="form-group sendTXInfo">
<i class="fas fa-dollar-sign"></i>
<label>Value to send:</label><label id="valueToSendInfo"></label><label class="currencyTicker">ETHO</label>
</div>
<div class="form-group sendTXInfo">
<i class="fas fa-dollar-sign"></i>
<label>Fee to pay:</label><label id="feeToPayInfo"></label><label class="currencyTicker">ETHO</label>
</div>
<hr class="sendTXdivider">
<div class="form-group sendTXPass">
<label for="usr">Type Password:</label>
<input type="password" class="form-control" id="walletPassword">
</div>
<button type="button" class="btn btn-etho btn-dialog-confirm" id="btnSendWalletPasswordConfirm">Confirm</button>
<!-- send details dialog -->
<div id="dlgSendWalletPassword" class="modalDialog" data-izimodal-title="Wallet Password" data-izimodal-subtitle="To send from this wallet, please enter the wallet password" data-izimodal-icon="icon-home">
<div class="modalBody">
<div class="form-group sendTXInfo">
<i class="fas fa-wallet"></i>
<label>From address:</label>
<label id="fromAddressInfo"></label>
</div>
<div class="form-group sendTXInfo">
<i class="fas fa-wallet"></i>
<label>To address:</label>
<label id="toAddressInfo"></label>
</div>
<div class="form-group sendTXInfo">
<i class="fas fa-dollar-sign"></i>
<label>Value to send:</label>
<label id="valueToSendInfo"></label>
<label class="currencyTicker">ETHO</label>
</div>
<div class="form-group sendTXInfo">
<i class="fas fa-dollar-sign"></i>
<label>Fee to pay:</label>
<label id="feeToPayInfo"></label>
<label class="currencyTicker">ETHO</label>
</div>
<hr class="sendTXdivider">
<div class="form-group sendTXPass">
<label for="usr">Type Password:</label>
<input type="password" class="form-control" id="walletPassword">
</div>
<button type="button" class="btn btn-etho btn-dialog-confirm" id="btnSendWalletPasswordConfirm">Confirm</button>
</div>
</div>
<!-- The modal for address list -->
<div id="dlgAddressList" class="modalDialog" data-iziModal-title="AddressList" data-iziModal-subtitle="Please select an address from the list" data-iziModal-icon="icon-home">
<div class="modalBody" id="dlgAddressListBody">
</div>
<div id="dlgAddressList" class="modalDialog" data-izimodal-title="AddressList" data-izimodal-subtitle="Please select an address from the list" data-izimodal-icon="icon-home">
<div class="modalBody" id="dlgAddressListBody"></div>
</div>
<!-- The modal to add address to address book -->
<div id="dlgAddAddressToBook" class="modalDialog" data-iziModal-title="Address Name" data-iziModal-subtitle="Enter the name for this address" data-iziModal-icon="icon-home">
<div class="modalBody">
<div class="form-group">
<label for="usr">Address Name:</label>
<input type="text" class="form-control" id="inputAddressName">
</div>
<button type="button" class="btn btn-etho btn-dialog-confirm" id="btnAddAddressToBookConfirm">Confirm</button>
<div id="dlgAddAddressToBook" class="modalDialog" data-izimodal-title="Address Name" data-izimodal-subtitle="Enter the name for this address" data-izimodal-icon="icon-home">
<div class="modalBody">
<div class="form-group">
<label for="usr">Address Name:</label>
<input type="text" class="form-control" id="inputAddressName">
</div>
<button type="button" class="btn btn-etho btn-dialog-confirm" id="btnAddAddressToBookConfirm">Confirm</button>
</div>
</div>

View File

@@ -1,38 +1,77 @@
<div id="transactionsWrapper">
<!----<button type="button" class="btn btn-etho" id="btnRefreshTransactions">Refresh</button>-->
<table id="tableTransactionsForAll" class="display tableTransactions" style="width:100%">
<thead>
<tr>
<th></th>
<th>Block</th>
<th>Timestamp</th>
<th>From</th>
<th>To</th>
<th>Value</th>
<th></th>
</tr>
</thead>
<tfoot>
<tr>
<th></th>
<th>Block</th>
<th>Timestamp</th>
<th>From</th>
<th>To</th>
<th>Value</th>
<th></th>
</tr>
</tfoot>
</table>
<!----<button type="button" class="btn btn-etho" id="btnRefreshTransactions">Refresh</button>-->
<table id="tableTransactionsForAll" class="display tableTransactions" style="width:100%">
<thead>
<tr>
<th></th>
<th>Block</th>
<th>Timestamp</th>
<th>TxHash</th>
<th>From</th>
<th>To</th>
<th>Value</th>
<th></th>
</tr>
</thead>
<tfoot>
<tr>
<th></th>
<th>Block</th>
<th>Timestamp</th>
<th>From</th>
<th>TxHash</th>
<th>To</th>
<th>Value</th>
<th></th>
</tr>
</tfoot>
</table>
</div>
<!-- transaction details dialog -->
<div id="dlgTransactionInfo" class="modalDialog" data-izimodal-title="Transaction Info" data-izimodal-subtitle="Detailed info about the selected transaction" data-izimodal-icon="icon-home">
<div class="modalBody">
<div class="form-group txInfo">
<i class="fas fa-wallet"></i>
<label>Block height:</label>
<label id="txBlockHeight"></label>
</div>
<div class="form-group txInfo">
<i class="fas fa-wallet"></i>
<label>TX Timestamp:</label>
<label id="txTimestamp"></label>
</div>
<div class="form-group txInfo">
<i class="fas fa-wallet"></i>
<label>TX hash:</label>
<a id="txHash"></a>
</div>
<div class="form-group txInfo">
<i class="fas fa-wallet"></i>
<label>From address:</label>
<a id="txFromAddress"></a>
</div>
<div class="form-group txInfo">
<i class="fas fa-wallet"></i>
<label>To address:</label>
<a id="txToAddress"></a>
</div>
<div class="form-group txInfo">
<i class="fas fa-dollar-sign"></i>
<label>Value:</label>
<label id="txValue"></label>
<label class="currencyTicker">ETHO</label>
</div>
<button type="button" class="btn btn-etho btn-dialog-confirm" id="btnTxInfoClose">Close</button>
</div>
</div>
<div class="loadingOverlay" id="loadingTransactionsOverlay">
<div class="loadingWrapper">
<div class="loadingTextTransactions">Transaction are loading, please wait...</div>
<div class='spinner'>
<div class='bounce bounce1'></div>
<div class='bounce bounce2'></div>
<div class='bounce bounce3'></div>
</div>
<div>
</div>
<div class="loadingWrapper">
<div class="loadingTextTransactions">Transaction are loading, please wait...</div>
<div class='spinner'>
<div class='bounce bounce1'></div>
<div class='bounce bounce2'></div>
<div class='bounce bounce3'></div>
</div>
<div></div>