Browse Source

Merge branch 'redux' into decouple-jsx-out-of-js

# Conflicts:
#	react/src/components/addcoin/addcoin.js
#	react/src/components/dashboard/atomic.js
#	react/src/components/dashboard/coinTile.js
#	react/src/components/dashboard/coinTileItem.js
#	react/src/components/dashboard/jumblr.js
#	react/src/components/dashboard/navbar.js
#	react/src/components/dashboard/notifications.js
#	react/src/components/dashboard/receiveCoin.js
#	react/src/components/login/login.js
all-modes
petitPapillon 8 years ago
parent
commit
8596d2e865
  1. 4
      react/src/actions/actionCreators.js
  2. 3
      react/src/actions/actions/nativeNewAddress.js
  3. 3
      react/src/actions/actions/nativeSend.js
  4. 2
      react/src/components/dashboard/about.js
  5. 3
      react/src/components/dashboard/atomic.js
  6. 4
      react/src/components/dashboard/coinTileItem.js
  7. 4
      react/src/components/dashboard/dashboard.scss
  8. 2
      react/src/components/dashboard/edex.js
  9. 103
      react/src/components/dashboard/sendCoin.js
  10. 147
      react/src/components/dashboard/settings.js
  11. 36
      react/src/components/dashboard/syncOnly.js
  12. 35
      react/src/components/dashboard/walletsBalance.js
  13. 6
      react/src/components/dashboard/walletsBasiliskConnection.js
  14. 4
      react/src/components/dashboard/walletsBasiliskRefresh.js
  15. 9
      react/src/components/dashboard/walletsCacheData.js
  16. 120
      react/src/components/dashboard/walletsData.js
  17. 144
      react/src/components/dashboard/walletsHeader.js
  18. 4
      react/src/components/dashboard/walletsNative.js
  19. 8
      react/src/components/dashboard/walletsNativeAlert.js
  20. 32
      react/src/components/dashboard/walletsNativeBalance.js
  21. 22
      react/src/components/dashboard/walletsNativeInfo.js
  22. 42
      react/src/components/dashboard/walletsNativeReceive.js
  23. 53
      react/src/components/dashboard/walletsNativeSend.js
  24. 41
      react/src/components/dashboard/walletsNativeSyncProgress.js
  25. 46
      react/src/components/dashboard/walletsNativeTxHistory.js
  26. 67
      react/src/components/dashboard/walletsNativeTxInfo.js
  27. 21
      react/src/components/dashboard/walletsNav.js
  28. 4
      react/src/components/dashboard/walletsNotariesList.js
  29. 33
      react/src/components/dashboard/walletsProgress.js
  30. 35
      react/src/components/dashboard/walletsTxInfo.js
  31. 4
      react/src/components/overrides.scss
  32. 2
      react/src/components/toaster/toaster-item.js
  33. 4
      react/src/components/toaster/toaster.js
  34. 4
      react/src/translate/en.js

4
react/src/actions/actionCreators.js

@ -153,7 +153,7 @@ export function basiliskConnection(display) {
export function syncingNativeModeState(display, json) {
return {
type: SYNCING_FULL_MODE,
type: SYNCING_NATIVE_MODE,
syncingNativeMode: display,
progress: json,
}
@ -161,7 +161,7 @@ export function syncingNativeModeState(display, json) {
export function syncingFullModeState(display, json) {
return {
type: SYNCING_NATIVE_MODE,
type: SYNCING_FULL_MODE,
syncingFullMode: display,
progress: json,
}

3
react/src/actions/actions/nativeNewAddress.js

@ -2,7 +2,8 @@ import { translate } from '../../translate/translate';
import {
triggerToaster,
Config,
getPassthruAgent
getPassthruAgent,
getKMDAddressesNative
} from '../actionCreators';
import {
logGuiHttp,

3
react/src/actions/actions/nativeSend.js

@ -16,7 +16,8 @@ export function sendNativeTx(coin, _payload) {
let payload;
let _apiMethod;
if (_payload.addressType === 'public') {
if (_payload.addressType === 'public' &&
_payload.sendTo.length !== 95) {
_apiMethod = 'sendtoaddress';
ajaxDataToHex = `["${_payload.sendTo}", ${Number(_payload.amount) - Number(_payload.fee)}]`;
} else {

2
react/src/components/dashboard/about.js

@ -4,7 +4,7 @@ class About extends React.Component {
render() {
return (
<div className="page margin-left-0">
<div className="page-content" id="section-about-iguana">
<div className="page-content">
<h2>About Iguana</h2>
<p>Page content goes here</p>
</div>

3
react/src/components/dashboard/atomic.js

@ -340,8 +340,7 @@ class Atomic extends React.Component {
}
if (props.Atomic.response.error === 'less than required responses') {
console.log('error');
// toastr.error(_lang[defaultLang].DASHBOARD.LESS_RESPONSES_REQ, _lang[defaultLang].DASHBOARD.BASILISC_NOTIFICATION)
Store.dispatch(triggerToaster(true, 'Basilisk connection error', translate('TOASTR.SERVICE_NOTIFICATION'), 'error'));
}
}
}

4
react/src/components/dashboard/coinTileItem.js

@ -37,10 +37,6 @@ class CoinTileItem extends React.Component {
// TODO: 1) cache native/full node data to file
// 2) limit amount of req per update e.g. list of addresses don't change too often
// 3) limit req in basilisk as much as possible incl. activehandle
// 4) add pending requests store
// TODO: update all addresses once in 20 min, current address every 10 min
// always fetch main addr data and current selected address
dispatchCoinActions(coin, mode) {
if (mode === 'native') {

4
react/src/components/dashboard/dashboard.scss

@ -95,11 +95,11 @@
}
//walletsData.js
z-index-10 {
.z-index-10 {
z-index: 10;
}
full-width {
.full-width {
width: 100%;
}

2
react/src/components/dashboard/edex.js

@ -4,7 +4,7 @@ class EDEX extends React.Component {
render() {
return (
<div className="page margin-left-0">
<div className="page-content" id="section-easydex">
<div className="page-content">
<h2>Coming Soon!</h2>
</div>
</div>

103
react/src/components/dashboard/sendCoin.js

@ -49,7 +49,7 @@ class SendCoin extends React.Component {
amount: 0,
fee: 0.0001,
sendSig: false,
sendApiType: false,
sendApiType: true,
addressSelectorOpen: false,
currentStackLength: 0,
totalStackLength: 0,
@ -164,18 +164,18 @@ class SendCoin extends React.Component {
</div>
<div className={ isReadyToUpdate ? 'hide' : '' }>{ translate('SEND.NEXT_UPDATE_IN') } { secondsElapsedToString(600 - timestamp) }s</div>
<div
className={'full-width margin-bottom-10 margin-top-10 ' + (this.state.currentStackLength === 1 || (this.state.currentStackLength === 0 && this.state.totalStackLength === 0) ? 'hide' : 'progress progress-sm') }>
className={ 'full-width margin-bottom-10 margin-top-10 ' + (this.state.currentStackLength === 1 || (this.state.currentStackLength === 0 && this.state.totalStackLength === 0) ? 'hide' : 'progress progress-sm') }>
<div
className="progress-bar progress-bar-striped active progress-bar-indicating progress-bar-success font-size-80-percent"
style={{ width: 100 - (this.state.currentStackLength * 100 / this.state.totalStackLength) + '%' }}
role="progressbar">
style={{ width: 100 - (this.state.currentStackLength * 100 / this.state.totalStackLength) + '%' }}>
{ translate('SEND.PROCESSING_REQ') }: { this.state.currentStackLength } / { this.state.totalStackLength }
</div>
</div>
<button
type="button"
className={'margin-top-10 ' + (isReadyToUpdate ? 'btn btn-primary waves-effect waves-light' : 'hide') }
onClick={ this._fetchNewUTXOData } disabled={ waitUntilCallIsFinished }>
className={ 'margin-top-10 ' + (isReadyToUpdate ? 'btn btn-primary waves-effect waves-light' : 'hide') }
onClick={ this._fetchNewUTXOData }
disabled={ waitUntilCallIsFinished }>
{ waitUntilCallIsFinished ? translate('SEND.LOCKED_PLEASE_WAIT') + '...' : translate('SEND.UPDATE') }
</button>
</div>
@ -218,12 +218,9 @@ class SendCoin extends React.Component {
return(
<li
data-original-index="2"
key={ mainAddress }
className={ mainAddressAmount <= 0 ? 'hide' : '' }>
<a
tabIndex="0"
onClick={ () => this.updateAddressSelection(mainAddress, type, mainAddressAmount) }><i className={ type === 'public' ? 'icon fa-eye' : 'icon fa-eye-slash' }></i> <span className="text">[ { mainAddressAmount } { this.props.ActiveCoin.coin } ] { mainAddress }</span><span className="glyphicon glyphicon-ok check-mark"></span></a>
<a onClick={ () => this.updateAddressSelection(mainAddress, type, mainAddressAmount) }><i className={ type === 'public' ? 'icon fa-eye' : 'icon fa-eye-slash' }></i> <span className="text">[ { mainAddressAmount } { this.props.ActiveCoin.coin } ] { mainAddress }</span><span className="glyphicon glyphicon-ok check-mark"></span></a>
</li>
);
} else {
@ -242,9 +239,7 @@ class SendCoin extends React.Component {
<li
key={ address.address }
className={ _amount <= 0 ? 'hide' : '' }>
<a
tabIndex="0"
onClick={ () => this.updateAddressSelection(address.address, type, _amount) }><i className={ type === 'public' ? 'icon fa-eye' : 'icon fa-eye-slash' }></i> <span className="text">[ { _amount } { this.props.ActiveCoin.coin } ] { address.address }</span><span className="glyphicon glyphicon-ok check-mark"></span></a>
<a onClick={ () => this.updateAddressSelection(address.address, type, _amount) }><i className={ type === 'public' ? 'icon fa-eye' : 'icon fa-eye-slash' }></i> <span className="text">[ { _amount } { this.props.ActiveCoin.coin } ] { address.address }</span><span className="glyphicon glyphicon-ok check-mark"></span></a>
</li>
);
}
@ -291,12 +286,11 @@ class SendCoin extends React.Component {
renderAddressList() {
return (
<div id="showkmdwalletaddrs" className={ `btn-group bootstrap-select form-control form-material showkmdwalletaddrs show-tick ${(this.state.addressSelectorOpen ? 'open' : '')}` }>
<div className={ `btn-group bootstrap-select form-control form-material showkmdwalletaddrs show-tick ${(this.state.addressSelectorOpen ? 'open' : '')}` }>
<button
type="button"
className="btn dropdown-toggle btn-info"
title={ '-' + translate('SEND.SELECT_T_OR_Z_ADDR') + '-' }
aria-expanded="true"
onClick={ this.openDropMenu }>
<span className="filter-option pull-left">{ this.renderSelectorCurrentLabel() } </span>&nbsp;
<span className="bs-caret">
@ -304,9 +298,9 @@ class SendCoin extends React.Component {
</span>
</button>
<div className="dropdown-menu open">
<ul className="dropdown-menu inner" role="menu">
<ul className="dropdown-menu inner">
<li className="selected">
<a tabIndex="0"><span className="text"> - { translate('SEND.SELECT_T_OR_Z_ADDR') } - </span><span className="glyphicon glyphicon-ok check-mark"></span></a>
<a><span className="text"> - { translate('SEND.SELECT_T_OR_Z_ADDR') } - </span><span className="glyphicon glyphicon-ok check-mark"></span></a>
</li>
{ this.renderAddressByType('public') }
</ul>
@ -366,7 +360,8 @@ class SendCoin extends React.Component {
}
if (step === 2) {
if (!this.state.sendApiType && this.props.ActiveCoin.mode === 'basilisk') {
if (!this.state.sendApiType &&
this.props.ActiveCoin.mode === 'basilisk') {
this.handleBasiliskSend();
} else {
Store.dispatch(sendToAddress(this.props.ActiveCoin.coin, this.state));
@ -694,7 +689,8 @@ class SendCoin extends React.Component {
.then(function(json) {
const reply = json.Answer;
if (reply && reply.length) {
if (reply &&
reply.length) {
for (let i = 0; i < reply.length; i++) {
const _address = reply[i].data.split(' ');
const coin = _address[0].replace('"oa1:', '');
@ -723,13 +719,13 @@ class SendCoin extends React.Component {
<div className="col-lg-6 form-group form-material">
<label
className="control-label"
htmlFor="kmd_wallet_sendto">Fetch OpenAlias recipient address</label>
htmlFor="kmdWalletSendTo">Fetch OpenAlias recipient address</label>
<input
type="text"
className="form-control"
name="sendToOA"
onChange={ this.updateInput }
id="kmd_wallet_sendto"
id="kmdWalletSendTo"
placeholder="Enter an alias as address@site.com"
autoComplete="off"
required />
@ -738,7 +734,6 @@ class SendCoin extends React.Component {
<button
type="button"
className="btn btn-primary waves-effect waves-light"
id="kmd_wallet_send_coins_btn"
onClick={ this.getOAdress }>
Get address
</button>
@ -775,30 +770,24 @@ class SendCoin extends React.Component {
this.props.ActiveCoin.send &&
this.props.ActiveCoin.mode !== 'native') {
return (
<div className="col-sm-12 padding-top-10" id="edexcoin_send">
<div className="col-sm-12 padding-top-10">
<div className="col-xlg-12 col-md-12 col-sm-12 col-xs-12">
<div className="steps row margin-top-10">
<div
className={ this.state.currentStep === 0 ? 'step col-md-4 current' : 'step col-md-4' }
id="edexcoin_send_step_1">
<div className={ this.state.currentStep === 0 ? 'step col-md-4 current' : 'step col-md-4' }>
<span className="step-number">1</span>
<div className="step-desc">
<span className="step-title">{ translate('INDEX.FILL_SEND_FORM') }</span>
<p>{ translate('INDEX.FILL_SEND_DETAILS') }</p>
</div>
</div>
<div
className={ this.state.currentStep === 1 ? 'step col-md-4 current' : 'step col-md-4' }
id="edexcoin_send_step_2">
<div className={ this.state.currentStep === 1 ? 'step col-md-4 current' : 'step col-md-4' }>
<span className="step-number">2</span>
<div className="step-desc">
<span className="step-title">{ translate('INDEX.CONFIRMING') }</span>
<p>{ translate('INDEX.CONFIRM_DETAILS') }</p>
</div>
</div>
<div
className={ this.state.currentStep === 2 ? 'step col-md-4 current' : 'step col-md-4' }
id="edexcoin_send_step_3">
<div className={ this.state.currentStep === 2 ? 'step col-md-4 current' : 'step col-md-4' }>
<span className="step-number">3</span>
<div className="step-desc">
<span className="step-title">{ translate('INDEX.PROCESSING_TX') }</span>
@ -807,29 +796,29 @@ class SendCoin extends React.Component {
</div>
</div>
<div className={ this.state.currentStep === 0 ? 'panel' : 'panel hide' } id="edexcoin-send-screen">
<div className={ this.state.currentStep === 0 ? 'panel' : 'panel hide' }>
<div className="panel-heading">
<h3 className="panel-title">
{ translate('INDEX.SEND') } { this.props.ActiveCoin.coin }
</h3>
</div>
<div className="panel-body container-fluid">
<form className="edexcoin-send-form" method="post" role="form" autoComplete="off">
{this.renderSendApiTypeSelector()}
<form className="edexcoin-send-form" method="post" autoComplete="off">
{ this.renderSendApiTypeSelector() }
<div className="row">
<div className={ this.props.ActiveCoin.mode === 'basilisk' ? 'col-xlg-12 form-group form-material' : 'hide' }>
<label className="control-label" htmlFor="edexcoin_send_from">{ translate('INDEX.SEND_FROM') }</label>
<label className="control-label" htmlFor="edexcoinSendFrom">{ translate('INDEX.SEND_FROM') }</label>
{ this.renderAddressList() }
</div>
</div>
{ this.renderOASendUI() }
<div className="row">
<div className="col-xlg-12 form-group form-material">
<label className="control-label" htmlFor="edexcoin_sendto">{ translate('INDEX.SEND_TO') }</label>
<label className="control-label" htmlFor="edexcoinSendTo">{ translate('INDEX.SEND_TO') }</label>
<input
type="text"
className="form-control"
id="edexcoin_sendto"
id="edexcoinSendTo"
name="sendTo"
placeholder={ translate('SEND.ENTER_AN_ADDRESS') }
autoComplete="off"
@ -838,24 +827,24 @@ class SendCoin extends React.Component {
required />
</div>
<div className="col-lg-6 form-group form-material">
<label className="control-label" htmlFor="edexcoin_amount" id="edexcoin_amount_label">
<label className="control-label" htmlFor="edexcoinAmount">
{ this.props.ActiveCoin.coin }
</label>
<input
type="text"
className="form-control"
id="edexcoin_amount"
id="edexcoinAmount"
name="amount"
placeholder="0.000"
autoComplete="off"
onChange={ this.updateInput } />
</div>
<div className="col-lg-6 form-group form-material">
<label className="control-label" htmlFor="edexcoin_fee">{ translate('INDEX.FEE') }</label>
<label className="control-label" htmlFor="edexcoinFee">{ translate('INDEX.FEE') }</label>
<input
type="text"
className="form-control"
id="edexcoin_fee"
id="edexcoinFee"
name="fee"
defaultValue={ this.state.fee }
value={ this.state.fee }
@ -864,8 +853,8 @@ class SendCoin extends React.Component {
onChange={ this.updateInput } />
</div>
<div className="col-lg-12">
<span data-edexcoin="KMD">
<strong>{ translate('INDEX.TOTAL') } ({ translate('INDEX.AMOUNT_SM') } - txfee):</strong> <span id="edexcoin_total_value">{ Number(this.state.amount) - Number(this.state.fee) }</span> { this.props.ActiveCoin.coin }
<span>
<strong>{ translate('INDEX.TOTAL') } ({ translate('INDEX.AMOUNT_SM') } - txfee):</strong> { Number(this.state.amount) - Number(this.state.fee) } { this.props.ActiveCoin.coin }
</span>
</div>
<div className={ this.state.sendApiType ? 'hide' : 'col-lg-10 margin-top-30' }>
@ -881,8 +870,9 @@ class SendCoin extends React.Component {
<div className="col-lg-12">
<button
type="button"
className="btn btn-primary waves-effect waves-light pull-right edexcoin_send_coins_btn_step1"
onClick={ () => this.changeSendCoinStep(1) }>
className="btn btn-primary waves-effect waves-light pull-right"
onClick={ () => this.changeSendCoinStep(1) }
disabled={ !this.state.sendFrom || !this.state.sendTo || !this.state.amount }>
{ translate('INDEX.SEND') } { Number(this.state.amount) - Number(this.state.fee) } { this.props.ActiveCoin.coin }
</button>
</div>
@ -893,19 +883,19 @@ class SendCoin extends React.Component {
</div>
<div className={ this.state.currentStep === 1 ? 'col-xlg-12 col-md-12 col-sm-12 col-xs-12' : 'col-xlg-12 col-md-12 col-sm-12 col-xs-12 hide' }>
<div className="panel" id="edexcoin-send-confirm-screen">
<div className="panel">
<div className="panel-body">
<div className="row">
<div className="col-xs-12">
<strong>{ translate('INDEX.TO') }</strong>
</div>
<div className="col-lg-6 col-sm-6 col-xs-12" id="mdl_confirm_currency_sendto_addr">{ this.state.sendTo }</div>
<div className="col-lg-6 col-sm-6 col-xs-12">{ this.state.sendTo }</div>
<div className="col-lg-6 col-sm-6 col-xs-6">
<span id="mdl_confirm_currency_send_amount">{this.state.amount}</span> { this.props.ActiveCoin.coin }
{ this.state.amount } { this.props.ActiveCoin.coin }
</div>
<div className="col-lg-6 col-sm-6 col-xs-12">{ translate('INDEX.TX_FEE_REQ') }</div>
<div className="col-lg-6 col-sm-6 col-xs-6">
<span id="mdl_confirm_currency_send_fee">{ this.state.fee }</span> { this.props.ActiveCoin.coin }
{ this.state.fee } { this.props.ActiveCoin.coin }
</div>
</div>
<br />
@ -914,21 +904,19 @@ class SendCoin extends React.Component {
<div className="col-xs-12">
<strong>{ translate('INDEX.FROM') }</strong>
</div>
<div className="col-lg-6 col-sm-6 col-xs-12" id="mdl_confirm_currency_sendfrom_addr">{ this.props.Dashboard.activeHandle[this.props.ActiveCoin.coin] }</div>
<div className="col-lg-6 col-sm-6 col-xs-12">{ this.props.Dashboard.activeHandle[this.props.ActiveCoin.coin] }</div>
<div className="col-lg-6 col-sm-6 col-xs-6 confirm-currency-send-container">
<span id="mdl_confirm_currency_sendfrom_total_dedcut">{ Number(this.state.amount) - Number(this.state.fee) }</span> { this.props.ActiveCoin.coin }
{ Number(this.state.amount) - Number(this.state.fee) } { this.props.ActiveCoin.coin }
</div>
</div>
<div className="widget-body-footer">
<a
className="btn btn-default waves-effect waves-light"
id="edexcoin_send_coins_back_btn"
onClick={ () => this.changeSendCoinStep(0) }>{ translate('INDEX.BACK') }</a>
<div className="widget-actions pull-right">
<button
type="button"
className="btn btn-primary"
id="edexcoin_send_coins_btn"
onClick={ () => this.changeSendCoinStep(2) }>{ translate('INDEX.CONFIRM') }</button>
</div>
</div>
@ -937,15 +925,13 @@ class SendCoin extends React.Component {
</div>
<div className={ this.state.currentStep === 2 ? 'col-xlg-12 col-md-12 col-sm-12 col-xs-12' : 'col-xlg-12 col-md-12 col-sm-12 col-xs-12 hide' }>
<div className="panel" id="edexcoin-send-txdetails-screen">
<div className="panel">
<div className="panel-heading">
<h4 className="panel-title">{ translate('INDEX.TRANSACTION_RESULT') }</h4>
<div className={ !this.state.sendSig ? 'hide' : 'center' }>
{ translate('SEND.YOU_PICKED_OPT') }
</div>
<table
className="table table-hover table-striped edexcoin_sendto_result"
id="edexcoin_sendto_result">
<table className="table table-hover table-striped">
<thead>
<tr>
<th>{ translate('INDEX.KEY') }</th>
@ -961,7 +947,6 @@ class SendCoin extends React.Component {
<button
type="button"
className="btn btn-primary"
id="edexcoin_send_coins_anothertx_btn"
onClick={ () => this.changeSendCoinStep(0) }
disabled={ this.state.utxoMethodInProgress }>{ !this.state.utxoMethodInProgress ? translate('INDEX.MAKE_ANOTHER_TX') : translate('SEND.PLEASE_WAIT') + '...' }</button>
</div>

147
react/src/components/dashboard/settings.js

@ -126,16 +126,14 @@ class Settings extends React.Component {
if (releaseInfo) {
return (
<div className="panel" id="AppInfo" onClick={ () => this.openTab('AppInfo', 8) }>
<div className="panel-heading" role="tab">
<a className={this.state.activeTab === 8 ? 'panel-title' : 'panel-title collapsed'}>
<i className="icon md-info" aria-hidden="true"></i>{ translate('SETTINGS.APP_INFO') }
<div className="panel-heading">
<a className={ this.state.activeTab === 8 ? 'panel-title' : 'panel-title collapsed' }>
<i className="icon md-info"></i>{ translate('SETTINGS.APP_INFO') }
</a>
</div>
<div
className={ this.state.activeTab === 8 ? 'panel-collapse collapse in' : 'panel-collapse collapse' }
style={{ height: this.state.activeTab === 8 ? this.state.activeTabHeight + 'px' : '0' }}
aria-labelledby="DebugLog"
role="tabpanel">
style={{ height: this.state.activeTab === 8 ? this.state.activeTabHeight + 'px' : '0' }}>
<div className="panel-body">
<div className="col-sm-12 padding-top-15">
<div className="row">
@ -346,29 +344,26 @@ class Settings extends React.Component {
return (
<div className="margin-left-0">
<div className="page-content" id="section-iguana-wallet-settings">
<div className="row" id="iguana-wallet-settings">
<div className="row">
<div className="col-xlg-12 col-md-12">
<div className="row" id="iguana-wallet-settings">
<div className="row">
<div className="col-xlg-12 col-md-12">
<h4 className="font-size-14 text-uppercase">{ translate('INDEX.WALLET_SETTINGS') }</h4>
<div className="panel-group" id="SettingsAccordion" aria-multiselectable="true" role="tablist">
<div className="panel-group" id="SettingsAccordion">
<div
className="panel"
id="WalletInfo"
onClick={ () => this.openTab('WalletInfo', 0) }>
<div className="panel-heading" role="tab">
<div className="panel-heading">
<a className={ this.state.activeTab === 0 ? 'panel-title' : 'panel-title collapsed' }>
<i className="icon md-balance-wallet" aria-hidden="true"></i>{ translate('INDEX.WALLET_INFO') }
<i className="icon md-balance-wallet"></i>{ translate('INDEX.WALLET_INFO') }
</a>
</div>
<div
className={ this.state.activeTab === 0 ? 'panel-collapse collapse in' : 'panel-collapse collapse' }
style={{ height: this.state.activeTab === 0 ? this.state.activeTabHeight + 'px' : '0' }}
id="WalletInfoTab"
aria-labelledby="WalletInfo"
role="tabpanel">
style={{ height: this.state.activeTab === 0 ? this.state.activeTabHeight + 'px' : '0' }}>
<div className="panel-body">
<table className="table" id="wallet-info-table">
<table className="table">
<thead>
<tr>
<th width="10%">{ translate('INDEX.KEY') }</th>
@ -378,39 +373,27 @@ class Settings extends React.Component {
<tbody>
<tr>
<td className="wallet-info-key">pubkey</td>
<td>
<div id="winfo_pubkey_value">{ this.props.Main.activeHandle.pubkey }</div>
</td>
<td>{ this.props.Main.activeHandle.pubkey }</td>
</tr>
<tr>
<td className="wallet-info-key">btcpubkey</td>
<td>
<div id="winfo_btcpubkey_value">{ this.props.Main.activeHandle.btcpubkey }</div>
</td>
<td>{ this.props.Main.activeHandle.btcpubkey }</td>
</tr>
<tr>
<td className="wallet-info-key">rmd160</td>
<td>
<div id="winfo_rmd160_value">{ this.props.Main.activeHandle.rmd160 }</div>
</td>
<td>{ this.props.Main.activeHandle.rmd160 }</td>
</tr>
<tr>
<td className="wallet-info-key">NXT</td>
<td>
<div id="winfo_NXT_value">{ this.props.Main.activeHandle.NXT }</div>
</td>
<td>{ this.props.Main.activeHandle.NXT }</td>
</tr>
<tr>
<td className="wallet-info-key">notary</td>
<td>
<div id="winfo_notary_value">{ this.props.Main.activeHandle.notary }</div>
</td>
<td>{ this.props.Main.activeHandle.notary }</td>
</tr>
<tr>
<td className="wallet-info-key">status</td>
<td>
<div id="winfo_status_value">{ this.props.Main.activeHandle.status }</div>
</td>
<td>{ this.props.Main.activeHandle.status }</td>
</tr>
</tbody>
</table>
@ -422,17 +405,14 @@ class Settings extends React.Component {
className="panel"
id="AddNodeforCoin"
onClick={ () => this.openTab('AddNodeforCoin', 1) }>
<div className="panel-heading" role="tab">
<div className="panel-heading">
<a className={ this.state.activeTab === 1 ? 'panel-title' : 'panel-title collapsed' }>
<i className="icon md-plus-square" aria-hidden="true"></i>{ translate('INDEX.ADD_NODE') }
<i className="icon md-plus-square"></i>{ translate('INDEX.ADD_NODE') }
</a>
</div>
<div
className={ this.state.activeTab === 1 ? 'panel-collapse collapse in' : 'panel-collapse collapse' }
style={{ height: this.state.activeTab === 1 ? this.state.activeTabHeight + 'px' : '0' }}
id="AddNodeforCoinTab"
aria-labelledby="AddNodeforCoin"
role="tabpanel">
style={{ height: this.state.activeTab === 1 ? this.state.activeTabHeight + 'px' : '0' }}>
<div className="panel-body">
<div className="row">
<div className="col-sm-6">
@ -443,7 +423,6 @@ class Settings extends React.Component {
<div className="form-group">
<select
className="form-control form-material"
id="settings_select_coin_options"
name="getPeersCoin"
onChange={ this.updateInput }>
<option>{ translate('INDEX.SELECT_COIN') }</option>
@ -457,18 +436,17 @@ class Settings extends React.Component {
<button
type="button"
className="btn btn-primary waves-effect waves-light"
id="settings_getcoinpeers_btn"
onClick={ this.checkNodes }>{ translate('INDEX.CHECK_NODES') }</button>
</div>
<div className="col-sm-12">
<h5>
SuperNET Peers: <span id="coin_supernetpeers_h"></span>
SuperNET Peers:
</h5>
<p id="coin_supernetpeers">{ this.renderSNPeersList() }</p>
<p>{ this.renderSNPeersList() }</p>
<h5>
Raw Peers: <span id="coin_rawpeers_h"></span>
Raw Peers:
</h5>
<p id="coin_rawpeers">{ this.renderPeersList() }</p>
<p>{ this.renderPeersList() }</p>
</div>
</div>
@ -480,7 +458,6 @@ class Settings extends React.Component {
<div className="form-group">
<select
className="form-control form-material"
id="settings_select_coin_addpeer_options"
name="addNodeCoin"
onChange={ this.updateInput }>
<option>{ translate('INDEX.SELECT_COIN') }</option>
@ -493,7 +470,6 @@ class Settings extends React.Component {
<input
type="text"
className="form-control"
id="settings_add_peer_ip"
name="addPeerIP"
placeholder={ translate('SETTINGS.ADD_PEER_IP') }
onChange={ this.updateInput } />
@ -503,7 +479,6 @@ class Settings extends React.Component {
<button
type="button"
className="btn btn-primary waves-effect waves-light"
id="settings_addcoinpeers_btn"
onClick={ this.addNode }>{ translate('INDEX.ADD_NODE') }</button>
</div>
</div>
@ -516,17 +491,14 @@ class Settings extends React.Component {
className="panel"
id="DumpWallet"
onClick={ () => this.openTab('DumpWallet', 2) }>
<div className="panel-heading" role="tab">
<a className={this.state.activeTab === 2 ? 'panel-title' : 'panel-title collapsed'}>
<i className="icon wb-briefcase" aria-hidden="true"></i>{ translate('INDEX.WALLET_BACKUP') }
<div className="panel-heading">
<a className={ this.state.activeTab === 2 ? 'panel-title' : 'panel-title collapsed' }>
<i className="icon wb-briefcase"></i>{ translate('INDEX.WALLET_BACKUP') }
</a>
</div>
<div
className={ this.state.activeTab === 2 ? 'panel-collapse collapse in' : 'panel-collapse collapse' }
style={{ height: this.state.activeTab === 2 ? this.state.activeTabHeight + 'px' : '0' }}
id="DumpWalletTab"
aria-labelledby="DumpWallet"
role="tabpanel">
style={{ height: this.state.activeTab === 2 ? this.state.activeTabHeight + 'px' : '0' }}>
<div className="panel-body">Wallet Backup section to be updated soon.</div>
</div>
</div>
@ -535,17 +507,14 @@ class Settings extends React.Component {
className="panel"
id="FiatCurrencySettings"
onClick={ () => this.openTab('FiatCurrencySettings', 3) }>
<div className="panel-heading" role="tab">
<div className="panel-heading">
<a className={ this.state.activeTab === 3 ? 'panel-title' : 'panel-title collapsed' }>
<i className="icon fa-money" aria-hidden="true"></i>{ translate('INDEX.FIAT_CURRENCY') }
<i className="icon fa-money"></i>{ translate('INDEX.FIAT_CURRENCY') }
</a>
</div>
<div
className={ this.state.activeTab === 3 ? 'panel-collapse collapse in' : 'panel-collapse collapse' }
style={{ height: this.state.activeTab === 3 ? this.state.activeTabHeight + 'px' : '0' }}
id="FiatCurrencySettingsTab"
aria-labelledby="FiatCurrencySettings"
role="tabpanel">
style={{ height: this.state.activeTab === 3 ? this.state.activeTabHeight + 'px' : '0' }}>
<div className="panel-body">Fiat currency settings section to be updated soon.</div>
</div>
</div>
@ -554,17 +523,14 @@ class Settings extends React.Component {
className="panel"
id="ExportKeys"
onClick={ () => this.openTab('ExportKeys', 4) }>
<div className="panel-heading" role="tab">
<div className="panel-heading">
<a className={ this.state.activeTab === 4 ? 'panel-title' : 'panel-title collapsed' }>
<i className="icon md-key" aria-hidden="true"></i>{ translate('INDEX.EXPORT_KEYS') }
<i className="icon md-key"></i>{ translate('INDEX.EXPORT_KEYS') }
</a>
</div>
<div
className={ this.state.activeTab === 4 ? 'panel-collapse collapse in' : 'panel-collapse collapse' }
style={{ height: this.state.activeTab === 4 ? this.state.activeTabHeight + 'px' : '0' }}
id="ExportKeysTab"
aria-labelledby="ExportKeys"
role="tabpanel">
style={{ height: this.state.activeTab === 4 ? this.state.activeTabHeight + 'px' : '0' }}>
<div className="panel-body">
<p>
<div>{ this.renderLB('INDEX.ONLY_ACTIVE_WIF_KEYS') }</div><br/>
@ -579,21 +545,20 @@ class Settings extends React.Component {
type="password"
className="form-control"
name="wifkeysPassphrase"
id="wifkeys_passphrase"
id="wifkeysPassphrase"
onChange={ this.updateInput } />
<label className="floating-label" htmlFor="wifkeys_passphrase">{ translate('INDEX.PASSPHRASE') }</label>
<label className="floating-label" htmlFor="wifkeysPassphrase">{ translate('INDEX.PASSPHRASE') }</label>
</div>
<div className="col-sm-12 col-xs-12 text-align-center">
<button
type="button"
className="btn btn-primary waves-effect waves-light"
id="wifkeys_passphrase_btn"
onClick={ this.exportWifKeys }>{ translate('INDEX.GET_WIF_KEYS') }</button>
</div>
</form>
<div className="col-sm-12 padding-top-15">
<div className="row" id="wif-priv-keys">
<div className="row">
<table className={ this.props.Settings && this.props.Settings.address ? 'table show' : 'table hide' }>
<tr>
<td className="width-5-percent">
@ -618,17 +583,14 @@ class Settings extends React.Component {
className="panel"
id="ImportKeys"
onClick={ () => this.openTab('ImportKeys', 5) }>
<div className="panel-heading" role="tab">
<div className="panel-heading">
<a className={ this.state.activeTab === 5 ? 'panel-title' : 'panel-title collapsed' }>
<i className="icon md-key" aria-hidden="true"></i>{ translate('INDEX.IMPORT_KEYS') }
<i className="icon md-key"></i>{ translate('INDEX.IMPORT_KEYS') }
</a>
</div>
<div
className={ this.state.activeTab === 5 ? 'panel-collapse collapse in' : 'panel-collapse collapse' }
style={{ height: this.state.activeTab === 5 ? this.state.activeTabHeight + 'px' : '0' }}
id="ImportKeysTab"
aria-labelledby="ImportKeys"
role="tabpanel">
style={{ height: this.state.activeTab === 5 ? this.state.activeTabHeight + 'px' : '0' }}>
<div className="panel-body">
<p>
<div>{ translate('INDEX.IMPORT_KEYS_DESC_P1') }</div><br/>
@ -645,17 +607,16 @@ class Settings extends React.Component {
type="text"
className="form-control"
name="importWifKey"
id="import_wifkey"
id="importWifkey"
onChange={ this.updateInput } />
<label
className="floating-label"
htmlFor="import_wifkey">{ translate('INDEX.INPUT_PRIV_KEY') }</label>
htmlFor="importWifkey">{ translate('INDEX.INPUT_PRIV_KEY') }</label>
</div>
<div className="col-sm-12 col-xs-12 text-align-center">
<button
type="button"
className="btn btn-primary waves-effect waves-light"
id="import_wifkey_btn"
onClick={ this.importWifKey }>{ translate('INDEX.IMPORT_PRIV_KEY') }</button>
</div>
</form>
@ -667,15 +628,14 @@ class Settings extends React.Component {
className="panel"
id="DebugLog"
onClick={ () => this.openTab('DebugLog', 6) }>
<div className="panel-heading" role="tab">
<div className="panel-heading">
<a className={ this.state.activeTab === 6 ? 'panel-title' : 'panel-title collapsed' }>
<i className="icon fa-bug" aria-hidden="true"></i>{ translate('INDEX.DEBUG_LOG') }
<i className="icon fa-bug"></i>{ translate('INDEX.DEBUG_LOG') }
</a>
</div>
<div
className={ this.state.activeTab === 6 ? 'panel-collapse collapse in' : 'panel-collapse collapse' }
style={{ height: this.state.activeTab === 6 ? this.state.activeTabHeight + 'px' : '0' }}
id="DebugLogTab" aria-labelledby="DebugLog" role="tabpanel">
style={{ height: this.state.activeTab === 6 ? this.state.activeTabHeight + 'px' : '0' }}>
<div className="panel-body">
<p>{ translate('INDEX.DEBUG_LOG_DESC') }</p>
<div className="col-sm-12"></div>
@ -689,31 +649,30 @@ class Settings extends React.Component {
type="text"
className="form-control"
name="debugLinesCount"
id="read_debug_log_lines"
id="readDebugLogLines"
value={ this.state.debugLinesCount }
onChange={ this.updateInput } />
<label
className="floating-label"
htmlFor="read_debug_log_lines">{ translate('INDEX.DEBUG_LOG_LINES') }</label>
htmlFor="readDebugLogLines">{ translate('INDEX.DEBUG_LOG_LINES') }</label>
</div>
<div className="form-group form-material floating">
<select
className="form-control form-material"
name="debugTarget"
id="settings_select_debuglog_options"
id="settingsDelectDebugLogOptions"
onChange={ this.updateInput }>
<option value="iguana">Iguana</option>
<option value="komodo">Komodo</option>
</select>
<label
className="floating-label"
htmlFor="settings_select_debuglog_options">{ translate('INDEX.TARGET') }</label>
htmlFor="settingsDelectDebugLogOptions">{ translate('INDEX.TARGET') }</label>
</div>
<div className="col-sm-12 col-xs-12 text-align-center">
<button
type="button"
className="btn btn-primary waves-effect waves-light"
id="read_debug_log_btn"
onClick={ this.readDebugLog }>{ translate('INDEX.LOAD_DEBUG_LOG') }</button>
</div>
<div className="col-sm-12 col-xs-12 text-align-left">
@ -728,15 +687,14 @@ class Settings extends React.Component {
className="panel"
id="AppSettings"
onClick={ () => this.openTab('AppSettings', 7) }>
<div className="panel-heading" role="tab">
<div className="panel-heading">
<a className={ this.state.activeTab === 7 ? 'panel-title' : 'panel-title collapsed' }>
<i className="icon fa-wrench" aria-hidden="true"></i>{ translate('SETTINGS.APP_CONFIG') } (config.json)
<i className="icon fa-wrench"></i>{ translate('SETTINGS.APP_CONFIG') } (config.json)
</a>
</div>
<div
className={ this.state.activeTab === 7 ? 'panel-collapse collapse in' : 'panel-collapse collapse' }
style={{ height: this.state.activeTab === 7 ? this.state.activeTabHeight + 'px' : '0' }}
id="DebugLogTab" aria-labelledby="DebugLog" role="tabpanel">
style={{ height: this.state.activeTab === 7 ? this.state.activeTabHeight + 'px' : '0' }}>
<div className="panel-body">
<p>
<strong>{ translate('SETTINGS.CONFIG_RESTART_REQUIRED') }</strong>
@ -752,7 +710,6 @@ class Settings extends React.Component {
<button
type="button"
className="btn btn-primary waves-effect waves-light"
id="read_debug_log_btn"
onClick={ this._saveAppConfig }>{ translate('SETTINGS.SAVE_APP_CONFIG') }</button>
</div>
</div>

36
react/src/components/dashboard/syncOnly.js

@ -97,17 +97,13 @@ class SyncOnly extends React.Component {
<div>
<div className="progress progress-sm">
<div
className={'font-size-80-percent full-width ' + (this.isFullySynced(fork) ? 'progress-bar progress-bar-striped active progress-bar-indicating progress-bar-success' : 'hide') }
role="progressbar"
id="currency-bundles">
{ translate('INDEX.BUNDLES') } <span id="currency-bundles-percent">({ fork.coin }) 100.00% - ( { fork.blocks } / { fork.blocks } ) ==&gt;&gt; RT{ fork.RTheight }</span>
className={'font-size-80-percent full-width ' + (this.isFullySynced(fork) ? 'progress-bar progress-bar-striped active progress-bar-indicating progress-bar-success' : 'hide') }>
{ translate('INDEX.BUNDLES') } ({ fork.coin }) 100.00% - ( { fork.blocks } / { fork.blocks } ) ==&gt;&gt; RT{ fork.RTheight }
</div>
<div
className={'font-size-80-percent ' + (this.isFullySynced(fork) ? 'hide' : 'progress-bar progress-bar-info progress-bar-striped active') }
style={{ width: fork.bundles + '%' }}
role="progressbar"
id="currency-bundles">
{ translate('INDEX.BUNDLES') } <span id="currency-bundles-percent">{ fork.bundles }%</span>
className={ 'font-size-80-percent ' + (this.isFullySynced(fork) ? 'hide' : 'progress-bar progress-bar-info progress-bar-striped active') }
style={{ width: fork.bundles + '%' }}>
{ translate('INDEX.BUNDLES') } { fork.bundles }%
</div>
</div>
</div>
@ -115,28 +111,22 @@ class SyncOnly extends React.Component {
<div className="progress progress-sm">
<div
className="progress-bar progress-bar-warning progress-bar-striped active font-size-80-percent"
style={{ width: fork.utxo + '%' }}
role="progressbar"
id="currency-utxo">
utxo <span id="currency-utxo-percent">{ fork.utxo }%</span>
style={{ width: fork.utxo + '%' }}>
utxo { fork.utxo }%
</div>
</div>
<div className="progress progress-sm">
<div
className="progress-bar progress-bar-danger progress-bar-striped active font-size-80-percent"
style={{ width: fork.balances + '%' }}
role="progressbar"
id="currency-balances">
{ translate('INDEX.BALANCES') } <span id="currency-balances-percent">{ fork.balances }%</span>
style={{ width: fork.balances + '%' }}>
{ translate('INDEX.BALANCES') } { fork.balances }%
</div>
</div>
<div className="progress progress-sm">
<div
className="progress-bar progress-bar-success progress-bar-striped active font-size-80-percent"
style={{ width: fork.validated + '%' }}
role="progressbar"
id="currency-validated">
{ translate('INDEX.VALIDATED') } <span id="currency-validated-percent">{ fork.validated }%</span>
style={{ width: fork.validated + '%' }}>
{ translate('INDEX.VALIDATED') } { fork.validated }%
</div>
</div>
</div>
@ -176,7 +166,7 @@ class SyncOnly extends React.Component {
</div>
</div>
<div className="progress-bars">
{this.renderProgress(forkInfo.getinfo)}
{ this.renderProgress(forkInfo.getinfo) }
</div>
</div>
);
@ -197,7 +187,7 @@ class SyncOnly extends React.Component {
this.props.SyncOnly.display) {
return (
<div>
<div className="modal show sync-only-forks" aria-hidden="false" role="dialog">
<div className="modal show sync-only-forks">
<div className="modal-dialog modal-center modal-lg">
<div className="modal-content">
<div className="modal-body modal-body-container">

35
react/src/components/dashboard/walletsBalance.js

@ -98,30 +98,29 @@ class WalletsBalance extends React.Component {
<div id="wallet-widgets">
<div className="col-xs-12">
<div className={ this.isActiveCoinMode('native') || (this.isActiveCoinMode('full') && !this.isFullySynced()) ? 'col-xs-12' : 'col-xs-12 hide' }>
<div role="alert" className="alert alert-info alert-dismissible" id="edexcoin-wallet-waitingrt-alert">
<button aria-label="Close" data-dismiss="alert" className="close" type="button">
<span aria-hidden="true">×</span>
<div className="alert alert-info alert-dismissible">
<button className="close" type="button">
<span>×</span>
</button>
<h4>{ translate('INDEX.ACTIVATING_WALLET_RT') }</h4>
<p id="edexcoin-wallet-waitingrt-alert-text">{ translate('INDEX.IGUANA_FULL_MODE_SYNC_P1') }</p>
<p>{ translate('INDEX.IGUANA_FULL_MODE_SYNC_P1') }</p>
<p>{ translate('INDEX.IGUANA_FULL_MODE_SYNC_P2') }</p>
<p className="font-weight-600">{ this.renderLB('INDEX.IGUANA_FULL_MODE_SYNC_P3') }</p>
</div>
<div role="alert" className="alert alert-info alert-dismissible" id="edexcoin-wallet-waitingcache-alert">
<button aria-label="Close" data-dismiss="alert" className="close" type="button">
<span aria-hidden="true">×</span>
<div className="alert alert-info alert-dismissible">
<button className="close" type="button">
<span>×</span>
</button>
<h4>{ translate('INDEX.FETCHING_COIN_DATA') }</h4>
<p id="edexcoin-wallet-waitingcache-alert-text">{ translate('INDEX.IGUANA_FULL_MODE_SYNC_P1') }</p>
<p>{ translate('INDEX.IGUANA_FULL_MODE_SYNC_P1') }</p>
<p>{ translate('INDEX.IGUANA_FULL_MODE_SYNC_P2') }</p>
<p className="font-weight-600">{ this.renderLB('INDEX.IGUANA_FULL_MODE_SYNC_P3') }</p>
</div>
</div>
<div
className={ this.isNativeOrBasiliskCoinMode() ? 'col-lg-4 col-xs-12' : 'col-lg-12 col-xs-12' }
id="edexcoin_getbalance_t">
<div className="widget widget-shadow" id="widgetLineareaOne">
<div className={ this.isNativeOrBasiliskCoinMode() ? 'col-lg-4 col-xs-12' : 'col-lg-12 col-xs-12' }>
<div className="widget widget-shadow">
<div className="widget-content">
<div className="padding-20 padding-top-10">
<div className="clearfix">
@ -137,10 +136,8 @@ class WalletsBalance extends React.Component {
</div>
</div>
<div
className={ this.isNativeOrBasiliskCoinMode() ? 'col-lg-4 col-xs-12' : 'col-lg-4 col-xs-12 hide' }
id="edexcoin_getbalance_interest">
<div className="widget widget-shadow" id="widgetLineareaOne">
<div className={ this.isNativeOrBasiliskCoinMode() ? 'col-lg-4 col-xs-12' : 'col-lg-4 col-xs-12 hide' }>
<div className="widget widget-shadow">
<div className="widget-content">
<div className="padding-20 padding-top-10">
<div className="clearfix">
@ -156,10 +153,8 @@ class WalletsBalance extends React.Component {
</div>
</div>
<div
className={ this.isNativeOrBasiliskCoinMode() ? 'col-lg-4 col-xs-12' : 'col-lg-4 col-xs-12 hide' }
id="edexcoin_getbalance_total_interest">
<div className="widget widget-shadow" id="widgetLineareaOne">
<div className={ this.isNativeOrBasiliskCoinMode() ? 'col-lg-4 col-xs-12' : 'col-lg-4 col-xs-12 hide' }>
<div className="widget widget-shadow">
<div className="widget-content">
<div className="padding-20 padding-top-10">
<div className="clearfix">

6
react/src/components/dashboard/walletsBasiliskConnection.js

@ -28,15 +28,15 @@ class WalletsBasiliskConnection extends React.Component {
if (this.isBasiliskConnection()) {
return (
<div onKeyDown={ (event) => this.handleKeydown(event) }>
<div className="modal show" id="RefreshBasiliskConnectionsMdl" aria-hidden="false" role="dialog">
<div className="modal show" id="RefreshBasiliskConnectionsMdl">
<div className="modal-dialog modal-center modal-md">
<div className="modal-content">
<div className="modal-header bg-orange-a400 wallet-send-header">
<h4 className="modal-title white">
<span className="icon fa-refresh no-margin"></span> { translate('INDEX.REFRESHING_BASILISK_NET') }...
</h4>
<button type="button" className="close btn-close" aria-label="Close" onClick={ this.basiliskConnectionAction }>
<span aria-hidden="true">&times;</span>
<button type="button" className="close btn-close" onClick={ this.basiliskConnectionAction }>
<span>&times;</span>
<span className="sr-only">{ translate('INDEX.CLOSE') }</span>
</button>
</div>

4
react/src/components/dashboard/walletsBasiliskRefresh.js

@ -17,11 +17,11 @@ class WalletsBasiliskRefresh extends React.Component {
<div className="panel-heading">
<h3 className="panel-title">{ translate('INDEX.FETCHING_BASILISK_DATA') }</h3>
<div className="panel-actions">
<a className="panel-action icon md-refresh-alt" aria-hidden="true"></a>
<a className="panel-action icon md-refresh-alt"></a>
</div>
</div>
<div className="table-responsive">
<table className="table table-hover table-striped tbl_edexcoin_dashboard_basilisk_refresh_status">
<table className="table table-hover table-striped">
<thead>
<tr>
<th>{ translate('INDEX.ADDRESS') }</th>

9
react/src/components/dashboard/walletsCacheData.js

@ -162,14 +162,14 @@ class WalletsCacheData extends React.Component {
return (
<div>
<div className="modal show" aria-hidden="false" role="dialog">
<div className="modal show">
<div className="modal-dialog modal-center modal-lg">
<div className="modal-content">
<div className="modal-body modal-body-container">
<div className="panel nav-tabs-horizontal">
<div className="panel-body">
<div className="tab-content">
<div className="tab-pane active" role="tabpanel">
<div className="tab-pane active">
{ this.renderNotariesFetching() }
<Tree defaultExpandAll={ false } openAnimation={ animation }>
{ this.renderCoinRootNodes() }
@ -180,7 +180,10 @@ class WalletsCacheData extends React.Component {
</div>
</div>
<div className="modal-footer">
<button type="button" className="btn btn-default" onClick={ this.closeViewCacheModal }>{ translate('INDEX.CLOSE') }</button>
<button
type="button"
className="btn btn-default"
onClick={ this.closeViewCacheModal }>{ translate('INDEX.CLOSE') }</button>
</div>
</div>
</div>

120
react/src/components/dashboard/walletsData.js

@ -253,8 +253,7 @@ class WalletsData extends React.Component {
key={ `${i}-pagination-link` }
className={ this.state.activePage === i + 1 ? 'paginate_button active' : 'paginate_button' }>
<a
aria-controls="kmd-tx-history-tbl"
tabIndex="0" key={ `${i}-pagination` }
key={ `${i}-pagination` }
onClick={ this.state.activePage !== (i + 1) ? () => this.updateCurrentPage(i + 1) : null }>{ i + 1 }</a>
</li>
);
@ -268,12 +267,11 @@ class WalletsData extends React.Component {
this.state.itemsList !== 'loading' &&
this.props.ActiveCoin.txhistory.length > 10) {
return (
<div className="dataTables_length" id="kmd-tx-history-tbl_length">
<div className="dataTables_length">
<label>
{ translate('INDEX.SHOW') }&nbsp;
<select
name="itemsPerPage"
aria-controls="kmd-tx-history-tbl"
className="form-control input-sm"
onChange={ this.updateInput }>
<option value="10">10</option>
@ -300,31 +298,17 @@ class WalletsData extends React.Component {
return (
<div className="row unselectable">
<div className="col-sm-5">
<div
className="dataTables_info"
id="kmd-tx-history-tbl_info"
role="status"
aria-live="polite">{ translate('INDEX.SHOWING') } { _paginationFrom } { translate('INDEX.TO_ALT') } { _paginationTo } { translate('INDEX.OF') } { this.props.ActiveCoin.txhistory.length } { translate('INDEX.ENTRIES_SM') }</div>
<div className="dataTables_info">{ translate('INDEX.SHOWING') } { _paginationFrom } { translate('INDEX.TO_ALT') } { _paginationTo } { translate('INDEX.OF') } { this.props.ActiveCoin.txhistory.length } { translate('INDEX.ENTRIES_SM') }</div>
</div>
<div className="col-sm-7">
<div className="dataTables_paginate paging_simple_numbers" id="kmd-tx-history-tbl_paginate">
<div className="dataTables_paginate paging_simple_numbers">
<ul className="pagination">
<li
className={ this.state.activePage === 1 ? 'paginate_button previous disabled' : 'paginate_button previous' }
id="kmd-tx-history-tbl_previous">
<a
aria-controls="kmd-tx-history-tbl"
tabIndex="0"
onClick={ () => this.updateCurrentPage(this.state.activePage - 1) }>{ translate('INDEX.PREVIOUS') }</a>
<li className={ this.state.activePage === 1 ? 'paginate_button previous disabled' : 'paginate_button previous' }>
<a onClick={ () => this.updateCurrentPage(this.state.activePage - 1) }>{ translate('INDEX.PREVIOUS') }</a>
</li>
{ this.renderPaginationItems() }
<li
className={ this.state.activePage > Math.floor(this.props.ActiveCoin.txhistory.length / this.state.itemsPerPage) ? 'paginate_button next disabled' : 'paginate_button next' }
id="kmd-tx-history-tbl_next">
<a
aria-controls="kmd-tx-history-tbl"
tabIndex="0"
onClick={ () => this.updateCurrentPage(this.state.activePage + 1) }>{ translate('INDEX.NEXT') }</a>
<li className={ this.state.activePage > Math.floor(this.props.ActiveCoin.txhistory.length / this.state.itemsPerPage) ? 'paginate_button next disabled' : 'paginate_button next' }>
<a onClick={ () => this.updateCurrentPage(this.state.activePage + 1) }>{ translate('INDEX.NEXT') }</a>
</li>
</ul>
</div>
@ -420,10 +404,10 @@ class WalletsData extends React.Component {
}));
if (this.props.ActiveCoin.mode === 'basilisk') {
setTimeout(function() {
setTimeout(() => {
Store.dispatch(changeMainBasiliskAddress(address));
Store.dispatch(getBasiliskTransactionsList(this.props.ActiveCoin.coin, address));
}.bind(this), 100);
}, 100);
Store.dispatch(fetchNewCacheData({
'pubkey': this.props.Dashboard.activeHandle.pubkey,
@ -496,9 +480,7 @@ class WalletsData extends React.Component {
items.push(
<li key={address.address}>
<a
tabIndex="0"
onClick={ () => this.updateAddressSelection(address.address, type, _amount) }><i className={ type === 'public' ? 'icon fa-eye' : 'icon fa-eye-slash' }></i> <span className="text">[ { _amount } { this.props.ActiveCoin.coin } ] { address.address }</span><span className="glyphicon glyphicon-ok check-mark"></span></a>
<a onClick={ () => this.updateAddressSelection(address.address, type, _amount) }><i className={ type === 'public' ? 'icon fa-eye' : 'icon fa-eye-slash' }></i> <span className="text">[ { _amount } { this.props.ActiveCoin.coin } ] { address.address }</span><span className="glyphicon glyphicon-ok check-mark"></span></a>
</li>
);
}
@ -559,7 +541,6 @@ class WalletsData extends React.Component {
type="button"
className="btn dropdown-toggle btn-info"
title={ `-${translate('KMD_NATIVE.SELECT_ADDRESS')}-` }
aria-expanded="true"
onClick={ this.openDropMenu }>
<span className="filter-option pull-left">{ this.renderSelectorCurrentLabel() } </span>&nbsp;
<span className="bs-caret">
@ -567,9 +548,9 @@ class WalletsData extends React.Component {
</span>
</button>
<div className="dropdown-menu open">
<ul className="dropdown-menu inner" role="menu">
<li data-original-index="1" className="selected">
<a tabIndex="0"><span className="text"> - { translate('KMD_NATIVE.SELECT_ADDRESS') } - </span><span className="glyphicon glyphicon-ok check-mark"></span></a>
<ul className="dropdown-menu inner">
<li className="selected">
<a><span className="text"> - { translate('KMD_NATIVE.SELECT_ADDRESS') } - </span><span className="glyphicon glyphicon-ok check-mark"></span></a>
</li>
{ this.renderAddressByType('public') }
</ul>
@ -597,83 +578,66 @@ class WalletsData extends React.Component {
<div id="edexcoin_dashboardinfo">
<div className="col-xs-12 margin-top-20">
<div className="panel nav-tabs-horizontal">
<div id="edexcoin_dashoard_section">
<div className="col-xlg-12 col-lg-12 col-sm-12 col-xs-12 edexcoin_dashoard_section_main_div">
<div id="edexcoin_txhistory" className="panel">
<div>
<div className="col-xlg-12 col-lg-12 col-sm-12 col-xs-12">
<div className="panel">
<header className="panel-heading z-index-10">
<div className={ this.props.ActiveCoin.mode === 'basilisk' ? 'panel-actions' : 'panel-actions hide' }>
<div
className={'full-width margin-bottom-3 ' + (this.state.currentStackLength === 1 || (this.state.currentStackLength === 0 && this.state.totalStackLength === 0) ? 'hide' : 'progress progress-sm') }>
<div className={'full-width margin-bottom-3 ' + (this.state.currentStackLength === 1 || (this.state.currentStackLength === 0 && this.state.totalStackLength === 0) ? 'hide' : 'progress progress-sm') }>
<div
className="progress-bar progress-bar-striped active progress-bar-indicating progress-bar-success font-size-80-percent"
style={{ width: 100 - (this.state.currentStackLength * 100 / this.state.totalStackLength) + '%'}}
role="progressbar">
style={{ width: 100 - (this.state.currentStackLength * 100 / this.state.totalStackLength) + '%'}}>
{ translate('SEND.PROCESSING_REQ') }: { this.state.currentStackLength } / { this.state.totalStackLength }
</div>
</div>
<div
className={ this.state.basiliskActionsMenu ? 'dropdown open' : 'dropdown' }
onClick={ this.toggleBasiliskActionsMenu }>
<a
className="dropdown-toggle btn-xs btn-default"
id="btn_edexcoin_basilisk"
href="javascript:void(0)"
aria-expanded="false"
role="button">
<i className="icon fa-magic margin-right-10" aria-hidden="true"></i> { translate('INDEX.BASILISK_ACTIONS') } <span className="caret"></span>
<a className="dropdown-toggle btn-xs btn-default">
<i className="icon fa-magic margin-right-10"></i> { translate('INDEX.BASILISK_ACTIONS') } <span className="caret"></span>
</a>
<ul className="dropdown-menu dropdown-menu-right" aria-labelledby="btn_edexcoin_basilisk" role="menu">
<li role="presentation">
<ul className="dropdown-menu dropdown-menu-right">
<li>
<a
className="btn_edexcoin_dashboard_getnotaries"
id="btn_edexcoin_dashboard_getnotaries"
role="menuitem"
onClick={ this.getDexNotariesAction }>
<i className="icon fa-sitemap" aria-hidden="true"></i> { translate('INDEX.GET_NOTARY_NODES_LIST') }
<i className="icon fa-sitemap"></i> { translate('INDEX.GET_NOTARY_NODES_LIST') }
</a>
</li>
<li role="presentation">
<li>
<a
className="btn_edexcoin_dashboard_refresh_basilisk_conn"
id="btn_edexcoin_dashboard_refresh_basilisk_conn"
role="menuitem"
onClick={ this.basiliskConnectionAction }>
<i className="icon wb-refresh" aria-hidden="true"></i> { translate('INDEX.REFRESH_BASILISK_CONNECTIONS') }
<i className="icon wb-refresh"></i> { translate('INDEX.REFRESH_BASILISK_CONNECTIONS') }
</a>
</li>
<li role="presentation" className={ !this.state.useCache ? 'hide' : '' }>
<li className={ !this.state.useCache ? 'hide' : '' }>
<a
className="btn_edexcoin_dashboard_fetchdata"
id="btn_edexcoin_dashboard_fetchdata"
role="menuitem"
onClick={ this.basiliskRefreshActionOne }>
<i className="icon fa-cloud-download" aria-hidden="true"></i> { translate('INDEX.FETCH_WALLET_DATA') } ({ translate('INDEX.ACTIVE_ADDRESS') })
<i className="icon fa-cloud-download"></i> { translate('INDEX.FETCH_WALLET_DATA') } ({ translate('INDEX.ACTIVE_ADDRESS') })
</a>
</li>
<li
role="presentation"
className={ !this.state.useCache || this.props.ActiveCoin.addresses && this.props.ActiveCoin.addresses.public.length === 1 ? 'hide' : '' }>
<a role="menuitem" onClick={ this.basiliskRefreshAction }>
<i className="icon fa-cloud-download" aria-hidden="true"></i> { translate('INDEX.FETCH_ALL_ADDR') }
<li className={ !this.state.useCache || this.props.ActiveCoin.addresses && this.props.ActiveCoin.addresses.public.length === 1 ? 'hide' : '' }>
<a onClick={ this.basiliskRefreshAction }>
<i className="icon fa-cloud-download"></i> { translate('INDEX.FETCH_ALL_ADDR') }
</a>
</li>
<li role="presentation" className={ !this.state.useCache ? 'hide' : '' }>
<li className={ !this.state.useCache ? 'hide' : '' }>
<a
className="btn_edexcoin_dashboard_refetchdata"
id="btn_edexcoin_dashboard_refetchdata"
role="menuitem"
onClick={ this.removeAndFetchNewCache }>
<i className="icon fa-history" aria-hidden="true"></i> { translate('INDEX.REFETCH_WALLET_DATA') }
<i className="icon fa-history"></i> { translate('INDEX.REFETCH_WALLET_DATA') }
</a>
</li>
<li role="presentation" className={'display-none ' + (!this.state.useCache ? 'hide' : '') }>
<a role="menuitem" onClick={ this.restartBasiliskInstance }>
<i className="icon fa-refresh" aria-hidden="true"></i> Restart Basilisk Instance (unsafe!)
<li className={ 'display-none ' + (!this.state.useCache ? 'hide' : '') }>
<a onClick={ this.restartBasiliskInstance }>
<i className="icon fa-refresh"></i> Restart Basilisk Instance (unsafe!)
</a>
</li>
<li role="presentation" className={ !this.state.useCache ? 'hide' : '' }>
<a className="btn_edexcoin_dashboard_fetchdata" role="menuitem" onClick={ this._toggleViewCacheModal }>
<i className="icon fa-list-alt" aria-hidden="true"></i> { translate('INDEX.VIEW_CACHE_DATA') }
<li className={ !this.state.useCache ? 'hide' : '' }>
<a className="btn_edexcoin_dashboard_fetchdata" onClick={ this._toggleViewCacheModal }>
<i className="icon fa-list-alt"></i> { translate('INDEX.VIEW_CACHE_DATA') }
</a>
</li>
</ul>
@ -693,15 +657,15 @@ class WalletsData extends React.Component {
{ this.renderPaginationItemsPerPageSelector() }
</div>
<div className="col-sm-6">
<div id="kmd-tx-history-tbl_filter" className="dataTables_filter">
<div className="dataTables_filter">
<label>
{ translate('INDEX.SEARCH') }: <input type="search" className="form-control input-sm" aria-controls="kmd-tx-history-tbl" disabled="true" />
{ translate('INDEX.SEARCH') }: <input type="search" className="form-control input-sm" disabled="true" />
</label>
</div>
</div>
</div>
<div className="row">
<table className="table table-hover dataTable table-striped" id="edex-tx-history-tbl" width="100%">
<table className="table table-hover dataTable table-striped" width="100%">
<thead>
<tr>
<th>{ translate('INDEX.DIRECTION') }</th>

144
react/src/components/dashboard/walletsHeader.js

@ -29,39 +29,22 @@ class WalletsHeader extends React.Component {
<div id="kmd_header_button">
<button
type="button"
id="easydex_kmd_wallet_actions_header"
className="bg-teal-500 btn btn-floating white waves-effect waves-float waves-light"
aria-expanded="false">
<i className="icon md-plus" aria-hidden="true"></i>
className="bg-teal-500 btn btn-floating white waves-effect waves-float waves-light">
<i className="icon md-plus"></i>
</button>
<ul
className="dropdown-menu animate dropdown-menu-right"
aria-labelledby="easydex_kmd_wallet_actions_header"
role="menu">
<li role="presentation">
<a
href="javascript:void(0)"
role="menuitem"
id="btn_kmd_wallet_dashboard">{ translate('INDEX.DASHBOARD') }</a>
<ul className="dropdown-menu animate dropdown-menu-right">
<li>
<a>{ translate('INDEX.DASHBOARD') }</a>
</li>
<li role="presentation">
<a
href="javascript:void(0)"
role="menuitem"
id="btn_kmd_wallet_send">{ translate('INDEX.SEND') }</a>
<li>
<a>{ translate('INDEX.SEND') }</a>
</li>
<li role="presentation">
<a
href="javascript:void(0)"
role="menuitem"
id="btn_kmd_wallet_recieve">{ translate('INDEX.RECEIVE') }</a>
<li>
<a>{ translate('INDEX.RECEIVE') }</a>
</li>
<li className="divider" role="presentation"></li>
<li role="presentation">
<a
href="javascript:void(0)"
role="menuitem"
id="btn_kmd_wallet_settings">{ translate('INDEX.SETTINGS') }</a>
<li className="divider"></li>
<li>
<a>{ translate('INDEX.SETTINGS') }</a>
</li>
</ul>
</div>
@ -69,43 +52,22 @@ class WalletsHeader extends React.Component {
<div id="zec_header_button" className="display-none">
<button
type="button"
id="easydex_zec_wallet_actions_header"
className="bg-yellow-600 btn btn-floating white waves-effect waves-float waves-light"
aria-expanded="false">
<i className="icon md-plus" aria-hidden="true"></i>
className="bg-yellow-600 btn btn-floating white waves-effect waves-float waves-light">
<i className="icon md-plus"></i>
</button>
<ul
className="dropdown-menu animate dropdown-menu-right"
aria-labelledby="easydex_zec_wallet_actions_header"
role="menu">
<li role="presentation">
<a
href="javascript:void(0)"
role="menuitem"
data-extcoin-menu="ZEC"
id="btn_zec_wallet_dashboard">{ translate('INDEX.DASHBOARD') }</a>
<ul className="dropdown-menu animate dropdown-menu-right">
<li>
<a>{ translate('INDEX.DASHBOARD') }</a>
</li>
<li role="presentation">
<a
href="javascript:void(0)"
role="menuitem"
data-extcoin-menu="ZEC"
id="btn_zec_wallet_send">{ translate('INDEX.SEND') }</a>
<li>
<a>{ translate('INDEX.SEND') }</a>
</li>
<li role="presentation">
<a
href="javascript:void(0)"
role="menuitem"
data-extcoin-menu="ZEC"
id="btn_zec_wallet_recieve">{ translate('INDEX.RECEIVE') }</a>
<li>
<a>{ translate('INDEX.RECEIVE') }</a>
</li>
<li className="divider" role="presentation"></li>
<li role="presentation">
<a
href="javascript:void(0)"
role="menuitem"
data-extcoin-menu="ZEC"
id="btn_zec_wallet_settings">{ translate('INDEX.SETTINGS') }</a>
<li className="divider"></li>
<li>
<a>{ translate('INDEX.SETTINGS') }</a>
</li>
</ul>
</div>
@ -113,67 +75,45 @@ class WalletsHeader extends React.Component {
<div id="kmd_header_button">
<button
type="button"
id="jumblr_actions_header"
className="btn white waves-effect waves-light">
<i className="icon fa-refresh" aria-hidden="true"></i>{ translate('INDEX.REFRESH') }
<i className="icon fa-refresh"></i>{ translate('INDEX.REFRESH') }
</button>
</div>
<div id="kmd_header_button" className="display-none">
<button
type="button"
id="easydex_acpax_wallet_actions_header"
className="bg-teal-500 btn btn-floating white waves-effect waves-float waves-light"
aria-expanded="false">
<i className="icon md-plus" aria-hidden="true"></i>
className="bg-teal-500 btn btn-floating white waves-effect waves-float waves-light">
<i className="icon md-plus"></i>
</button>
<ul
className="dropdown-menu animate dropdown-menu-right"
aria-labelledby="easydex_acpax_wallet_actions_header"
role="menu">
<li role="presentation">
<a
href="javascript:void(0)"
role="menuitem"
data-extcoin-menu="KMD"
id="btn_acpax_wallet_dashboard">{ translate('INDEX.DASHBOARD') }</a>
<ul className="dropdown-menu animate dropdown-menu-right">
<li>
<a>{ translate('INDEX.DASHBOARD') }</a>
</li>
<li role="presentation">
<a
href="javascript:void(0)"
role="menuitem"
data-extcoin-menu="KMD"
id="btn_acpax_wallet_send">{ translate('INDEX.SEND') }</a>
<li>
<a>{ translate('INDEX.SEND') }</a>
</li>
<li role="presentation">
<a
href="javascript:void(0)"
role="menuitem"
data-extcoin-menu="KMD"
id="btn_acpax_wallet_recieve">{ translate('INDEX.RECEIVE') }</a>
<li>
<a>{ translate('INDEX.RECEIVE') }</a>
</li>
<li className="divider" role="presentation"></li>
<li role="presentation">
<a
href="javascript:void(0)"
role="menuitem"
data-extcoin-menu="KMD"
id="btn_acpax_wallet_settings">{ translate('INDEX.SETTINGS') }</a>
<li className="divider"></li>
<li>
<a>{ translate('INDEX.SETTINGS') }</a>
</li>
</ul>
</div>
<div className="row no-space width-350 hidden-xs" id="easydex_btc_btcd_balances_header display-none">
<div className="row no-space width-350 hidden-xs display-none">
<div className="col-xs-6">
<div className="counter">
<span className="font-weight-medium" id="header_coinname_balance"> - BTC</span>
<span className="counter-label small" id="header_coinfiatbalance"> - USD</span>
<span className="font-weight-medium"> - BTC</span>
<span className="counter-label small"> - USD</span>
</div>
</div>
<div className="col-xs-6">
<div className="counter">
<span className="font-weight-medium" id="header_coinname_balance"> - BTCD</span>
<span className="counter-label small" id="header_coinfiatbalance"> - USD</span>
<span className="font-weight-medium"> - BTCD</span>
<span className="counter-label small"> - USD</span>
</div>
</div>
</div>

4
react/src/components/dashboard/walletsNative.js

@ -32,7 +32,7 @@ class WalletsNative extends React.Component {
if (this.isActiveCoinModeNative()) {
return (
<div className="page margin-left-0">
<div id="section-extcoin" className="padding-top-0">
<div className="padding-top-0">
<div id="easydex-header-div" className="background-color-white" style={{ 'backgroundImage': `url("assets/images/bg/${this.defaultBG()}_transparent_header_bg.png")` }}>
<ol className="breadcrumb">
<li className="header-easydex-section">
@ -42,7 +42,7 @@ class WalletsNative extends React.Component {
</div>
<div className="page-content">
<WalletsNativeSyncProgress {...this.props} />
<div className="row" id="extcoin-wallet">
<div className="row">
<WalletsNativeBalance {...this.props} />
<WalletsNativeTxHistory {...this.props} />
<WalletsNativeReceive {...this.props} />

8
react/src/components/dashboard/walletsNativeAlert.js

@ -11,12 +11,12 @@ class WalletsNativeAlert extends React.Component {
render() {
if (this.hasNoProgress()) {
return (
<div role="alert" className="alert alert-danger alert-dismissible" id="extcoin-wallet-connection-alert">
<button aria-label="Close" data-dismiss="alert" className="close" type="button">
<span aria-hidden="true">×</span>
<div className="alert alert-danger alert-dismissible">
<button className="close" type="button">
<span>×</span>
</button>
<h4>{ translate('INDEX.OOPS_ERROR') }</h4>
<p id="extcoin-wallet-connection-alert-text">
<p>
<span>{ translate('INDEX.OOPS_ERROR_DESC') }</span>
<code>server=1</code><br/>
<code>rpcport=</code><br/>

32
react/src/components/dashboard/walletsNativeBalance.js

@ -7,68 +7,60 @@ class WalletsNativeBalance extends React.Component {
this.props.ActiveCoin.nativeActiveSection === 'default') {
return (
<div className="col-xs-12">
<div className="col-lg-3 col-xs-12" id="kmd_widget_get_total_balance_t">
<div className="widget widget-shadow" id="widgetLineareaOne">
<div className="col-lg-3 col-xs-12">
<div className="widget widget-shadow">
<div className="widget-content white bg-yellow-800">
<div className="padding-20 padding-top-10">
<div className="clearfix">
<div className="pull-left padding-vertical-10">
<i className="icon fa-eye font-size-24 vertical-align-bottom margin-right-5"></i>{ translate('INDEX.TRANSPARENT_BALANCE') }
</div>
<span
className="pull-right padding-top-10 font-size-22"
id="kmd_transparent_balance">{ this.props.ActiveCoin.balance.transparent ? this.props.ActiveCoin.balance.transparent : '-' }</span>
<span className="pull-right padding-top-10 font-size-22">{ this.props.ActiveCoin.balance.transparent ? this.props.ActiveCoin.balance.transparent : '-' }</span>
</div>
</div>
</div>
</div>
</div>
<div className="col-lg-3 col-xs-12" id="kmd_widget_get_total_balance_z">
<div className="widget widget-shadow" id="widgetLineareaOne">
<div className="col-lg-3 col-xs-12">
<div className="widget widget-shadow">
<div className="widget-content white bg-blue-grey-800">
<div className="padding-20 padding-top-10">
<div className="clearfix">
<div className="pull-left padding-vertical-10">
<i className="icon fa-eye-slash font-size-24 vertical-align-bottom margin-right-5"></i>{ translate('INDEX.Z_BALANCE') }
</div>
<span
className="pull-right padding-top-10 font-size-22"
id="kmd_private_balance">{ this.props.ActiveCoin.balance.private ? this.props.ActiveCoin.balance.private : '-' }</span>
<span className="pull-right padding-top-10 font-size-22">{ this.props.ActiveCoin.balance.private ? this.props.ActiveCoin.balance.private : '-' }</span>
</div>
</div>
</div>
</div>
</div>
<div className="col-lg-3 col-xs-12" id="kmd_widget_get_total_balance_i">
<div className="widget widget-shadow" id="widgetLineareaOne">
<div className="col-lg-3 col-xs-12">
<div className="widget widget-shadow">
<div className="widget-content white bg-cyan-700">
<div className="padding-20 padding-top-10">
<div className="clearfix">
<div className="pull-left padding-vertical-10">
<i className="icon fa-money font-size-24 vertical-align-bottom margin-right-5"></i>{ translate('INDEX.INTEREST_EARNED') }
</div>
<span
className="pull-right padding-top-10 font-size-22"
id="kmd_total_interest_balance">{ this.props.ActiveCoin.balance.interest ? this.props.ActiveCoin.balance.interest : '-' }</span>
<span className="pull-right padding-top-10 font-size-22">{ this.props.ActiveCoin.balance.interest ? this.props.ActiveCoin.balance.interest : '-' }</span>
</div>
</div>
</div>
</div>
</div>
<div className="col-lg-3 col-xs-12" id="kmd_widget_get_total_balance_tzi">
<div className="widget widget-shadow" id="widgetLineareaOne">
<div className="col-lg-3 col-xs-12">
<div className="widget widget-shadow">
<div className="widget-content white bg-green-600">
<div className="padding-20 padding-top-10">
<div className="clearfix">
<div className="pull-left padding-vertical-10">
<i className="icon fa-bullseye font-size-24 vertical-align-bottom margin-right-5"></i>{ translate('INDEX.ZT_BALANCE') }
</div>
<span
className="pull-right padding-top-10 font-size-22"
id="kmd_total_tz_balance">{ this.props.ActiveCoin.balance.total ? this.props.ActiveCoin.balance.total : '-' }</span>
<span className="pull-right padding-top-10 font-size-22">{ this.props.ActiveCoin.balance.total ? this.props.ActiveCoin.balance.total : '-' }</span>
</div>
</div>
</div>

22
react/src/components/dashboard/walletsNativeInfo.js

@ -12,9 +12,9 @@ class WalletsNativeInfo extends React.Component {
this.props.Dashboard.progress &&
this.props.ActiveCoin.nativeActiveSection === 'settings') {
return (
<div id="kmd_wallet_settings">
<div>
<div className="col-xlg-6 col-md-4">
<div className="panel" id="projects">
<div className="panel">
<div className="panel-heading">
<h3 className="panel-title">{ translate('INDEX.WALLET_INFO') }</h3>
</div>
@ -35,21 +35,15 @@ class WalletsNativeInfo extends React.Component {
</tr>
<tr>
<td>{ translate('INDEX.UNCONFIRMED_BALANCE') }</td>
<td>
<span id="kmd_unconfirmed_balance"></span>
</td>
<td></td>
</tr>
<tr>
<td>{ translate('INDEX.IMMATURE_BALANCE') }</td>
<td>
<span id="kmd_immature_balance"></span>
</td>
<td></td>
</tr>
<tr>
<td>{ translate('INDEX.TOTAL_TX_COUNT') }</td>
<td>
<span id="KMDTotalTransactionsCount"></span>
</td>
<td></td>
</tr>
</tbody>
</table>
@ -58,7 +52,7 @@ class WalletsNativeInfo extends React.Component {
</div>
<div className="col-xlg-6 col-md-8">
<div className="panel" id="projects">
<div className="panel">
<div className="panel-heading">
<h3 className="panel-title">
Komodo { translate('INDEX.INFO') }
@ -102,9 +96,7 @@ class WalletsNativeInfo extends React.Component {
<td>
{ translate('INDEX.NOTARIZED') } BTC
</td>
<td>
<span id="kmd_notarizedbtc"></span>
</td>
<td></td>
</tr>
<tr>
<td>{ translate('INDEX.BLOCKS') }</td>

42
react/src/components/dashboard/walletsNativeReceive.js

@ -55,8 +55,7 @@ class WalletsNativeReceive extends React.Component {
</span>
<button
className="btn btn-default btn-xs clipboard-edexaddr margin-left-10"
id="edexcoin_active_addr_clipboard"
onClick={ () => this.copyZAddress(address.address) }><i className="icon wb-copy" aria-hidden="true"></i> { translate('INDEX.COPY') }</button>
onClick={ () => this.copyZAddress(address.address) }><i className="icon wb-copy"></i> { translate('INDEX.COPY') }</button>
</td>
<td>{ type === 'public' ? address.address : address.address.substring(0, 34) + '...' }</td>
<td>{ address.amount }</td>
@ -77,43 +76,28 @@ class WalletsNativeReceive extends React.Component {
this.props.ActiveCoin &&
this.props.ActiveCoin.nativeActiveSection === 'receive') {
return (
<div id="kmd_wallet_recieve">
<div>
<div className="col-xs-12 margin-top-20">
<div className="panel nav-tabs-horizontal">
<div id="kmd_wallet_recieve_section">
<div>
<div className="col-xlg-12 col-lg-12 col-sm-12 col-xs-12">
<div className="panel">
<header className="panel-heading">
<div className="panel-actions">
<div className={ 'dropdown' + (this.state.openDropMenu ? ' open' : '') } onClick={ this.openDropMenu }>
<a
className="dropdown-toggle white btn btn-warning"
id="GetNewRecievingAddress"
href="javascript:void(0)"
aria-expanded="false"
role="button">
<i className="icon md-arrows margin-right-10" aria-hidden="true"></i> { translate('INDEX.GET_NEW_ADDRESS') } <span className="caret"></span>
<a className="dropdown-toggle white btn btn-warning">
<i className="icon md-arrows margin-right-10"></i> { translate('INDEX.GET_NEW_ADDRESS') } <span className="caret"></span>
</a>
<ul
className="dropdown-menu dropdown-menu-right"
aria-labelledby="GetNewRecievingAddress"
role="menu">
<li role="presentation">
<a
href="javascript:void(0)"
id="kmd_get_new_taddr"
role="menuitem"
onClick={ () => this.getNewAddress('public') }>
<i className="icon fa-eye" aria-hidden="true"></i> { translate('INDEX.TRANSPARENT_ADDRESS') }
className="dropdown-menu dropdown-menu-right">
<li>
<a onClick={ () => this.getNewAddress('public') }>
<i className="icon fa-eye"></i> { translate('INDEX.TRANSPARENT_ADDRESS') }
</a>
</li>
<li data-extcoin="COIN" role="presentation">
<a
href="javascript:void(0)"
id="kmd_get_new_zaddr"
role="menuitem"
onClick={ () => this.getNewAddress('private') }>
<i className="icon fa-eye-slash" aria-hidden="true"></i> { translate('INDEX.PRIVATE_Z_ADDRESS') }
<li>
<a onClick={ () => this.getNewAddress('private') }>
<i className="icon fa-eye-slash"></i> { translate('INDEX.PRIVATE_Z_ADDRESS') }
</a>
</li>
</ul>
@ -122,7 +106,7 @@ class WalletsNativeReceive extends React.Component {
<h3 className="panel-title">{ translate('INDEX.RECEIVING_ADDRESS') }</h3>
</header>
<div className="panel-body">
<table className="table table-hover dataTable table-striped" id="kmd-recieve-addr-tbl">
<table className="table table-hover dataTable table-striped">
<thead>
<tr>
<th>{ translate('INDEX.TYPE') }</th>

53
react/src/components/dashboard/walletsNativeSend.js

@ -53,10 +53,8 @@ class WalletsNativeSend extends React.Component {
this.props.ActiveCoin.addresses[type] &&
this.props.ActiveCoin.addresses[type].length) {
return this.props.ActiveCoin.addresses[type].map((address) =>
<li data-original-index="2" key={ address.address } className={ address.amount <= 0 ? 'hide' : '' }>
<a
tabIndex="0"
onClick={ () => this.updateAddressSelection(address.address, type, address.amount) }><i className={ type === 'public' ? 'icon fa-eye' : 'icon fa-eye-slash' }></i> <span className="text">[ { address.amount } { this.props.ActiveCoin.coin } ] { address.address }</span><span className="glyphicon glyphicon-ok check-mark"></span></a>
<li key={ address.address } className={ address.amount <= 0 ? 'hide' : '' }>
<a onClick={ () => this.updateAddressSelection(address.address, type, address.amount) }><i className={ type === 'public' ? 'icon fa-eye' : 'icon fa-eye-slash' }></i> <span className="text">[ { address.amount } { this.props.ActiveCoin.coin } ] { address.address }</span><span className="glyphicon glyphicon-ok check-mark"></span></a>
</li>
);
} else {
@ -85,7 +83,6 @@ class WalletsNativeSend extends React.Component {
type="button"
className="btn dropdown-toggle btn-info"
title="- { translate('SEND.SELECT_T_OR_Z_ADDR') } -"
aria-expanded="true"
onClick={ this.openDropMenu }>
<span className="filter-option pull-left">{ this.renderSelectorCurrentLabel() } </span>
<span className="bs-caret">
@ -93,9 +90,9 @@ class WalletsNativeSend extends React.Component {
</span>
</button>
<div className="dropdown-menu open">
<ul className="dropdown-menu inner" role="menu">
<ul className="dropdown-menu inner">
<li className="selected">
<a tabIndex="0"><span className="text"> - { translate('SEND.SELECT_T_OR_Z_ADDR') } - </span><span className="glyphicon glyphicon-ok check-mark"></span></a>
<a><span className="text"> - { translate('SEND.SELECT_T_OR_Z_ADDR') } - </span><span className="glyphicon glyphicon-ok check-mark"></span></a>
</li>
{ this.renderAddressByType('public') }
{ this.renderAddressByType('private') }
@ -125,13 +122,11 @@ class WalletsNativeSend extends React.Component {
}
};
if (opid.status === 'queued') {
return (
<span className={`label label-${_satatusDef[opid.status].icon}`}>
<i className="icon fa-eye"></i> <span>{ translate(`KMD_NATIVE.${_satatusDef[opid.status].label}`) }</span>
</span>
);
}
return (
<span className={ `label label-${_satatusDef[opid.status].icon}` }>
<i className="icon fa-eye"></i> <span>{ translate(`KMD_NATIVE.${_satatusDef[opid.status].label}`) }</span>
</span>
);
}
renderOPIDResult(opid) {
@ -255,13 +250,13 @@ class WalletsNativeSend extends React.Component {
<div className="col-lg-6 form-group form-material">
<label
className="control-label"
htmlFor="kmd_wallet_sendto">{ translate('INDEX.SEND_TO') } via Openalias address</label>
htmlFor="kmdWalletSendTo">{ translate('INDEX.SEND_TO') } via Openalias address</label>
<input
type="text"
className="form-control"
name="sendToOA"
onChange={ this.updateInput }
id="kmd_wallet_sendto"
id="kmdWalletSendTo"
placeholder="Enter an alias as address@site.com"
autoComplete="off"
required />
@ -270,7 +265,6 @@ class WalletsNativeSend extends React.Component {
<button
type="button"
className="btn btn-primary waves-effect waves-light"
id="kmd_wallet_send_coins_btn"
onClick={ this.getOAdress }>
Get address
</button>
@ -296,32 +290,30 @@ class WalletsNativeSend extends React.Component {
</h3>
</div>
<div className="panel-body container-fluid">
<form className="extcoin-send-form" method="post" role="form" autoComplete="off">
<form className="extcoin-send-form" method="post" autoComplete="off">
<div className="row">
<div className="col-xlg-12 form-group form-material">
<label
className="control-label"
htmlFor="kmd_wallet_send_from">{ translate('INDEX.SEND_FROM') }</label>
<label className="control-label">{ translate('INDEX.SEND_FROM') }</label>
{ this.renderAddressList() }
</div>
</div>
{ this.renderOASendUI() }
<div className="row">
<div className="col-xlg-12 form-group form-material">
<label className="control-label" htmlFor="kmd_wallet_sendto">{ translate('INDEX.SEND_TO') }</label>
<label className="control-label" htmlFor="kmdWalletSendTo">{ translate('INDEX.SEND_TO') }</label>
<input
type="text"
className="form-control"
name="sendTo"
onChange={ this.updateInput }
value={ this.state.sendTo }
id="kmd_wallet_sendto"
id="kmdWalletSendTo"
placeholder={ translate('SEND.ENTER_T_OR_Z_ADDR') }
autoComplete="off"
required />
</div>
<div className="col-lg-6 form-group form-material">
<label className="control-label" htmlFor="kmd_wallet_amount" id="kmd_wallet_amount_label">
<label className="control-label" htmlFor="kmdWalletAmount">
{ this.props.ActiveCoin.coin }
</label>
<input
@ -329,18 +321,18 @@ class WalletsNativeSend extends React.Component {
className="form-control"
name="amount"
onChange={ this.updateInput }
id="kmd_wallet_amount"
id="kmdWalletAmount"
placeholder="0.000"
autoComplete="off" />
</div>
<div className="col-lg-6 form-group form-material">
<label className="control-label" htmlFor="kmd_wallet_fee">{ translate('INDEX.FEE') }</label>
<label className="control-label" htmlFor="kmdWalletFee">{ translate('INDEX.FEE') }</label>
<input
type="text"
className="form-control"
name="fee"
onChange={ this.updateInput }
id="kmd_wallet_fee"
id="kmdWalletFee"
placeholder="0.000"
value={ this.state.fee }
autoComplete="off" />
@ -354,8 +346,8 @@ class WalletsNativeSend extends React.Component {
<button
type="button"
className="btn btn-primary waves-effect waves-light pull-right"
id="kmd_wallet_send_coins_btn"
onClick={ this.handleSubmit }>
onClick={ this.handleSubmit }
disabled={ !this.state.sendFrom || !this.state.sendTo || !this.state.amount }>
{ translate('INDEX.SEND') } { this.state.amount } { this.props.ActiveCoin.coin }
</button>
</div>
@ -368,7 +360,7 @@ class WalletsNativeSend extends React.Component {
<div className="col-xs-12">
<div className="row">
<div className="panel nav-tabs-horizontal">
<div id="kmd_wallet_opids_status_section">
<div>
<div className="col-xlg-12 col-lg-12 col-sm-12 col-xs-12">
<div className="panel">
<header className="panel-heading">
@ -377,7 +369,6 @@ class WalletsNativeSend extends React.Component {
<div className="panel-body">
<table
className="table table-hover dataTable table-striped"
id="kmd-opid-status-tbl"
width="100%">
<thead>
<tr>

41
react/src/components/dashboard/walletsNativeSyncProgress.js

@ -6,24 +6,14 @@ class WalletsNativeSyncProgress extends React.Component {
if (this.props.Dashboard.progress.blocks > 0 &&
this.props.Dashboard.progress.longestchain === 0) {
return (
<div
className="progress-bar progress-bar-info progress-bar-striped active full-width font-size-80-percent"
role="progressbar"
id="extcoin-sync">
<span
id="extcoin-sync-percent"
className="full-width">{ translate('INDEX.SYNC_ERR_LONGESTCHAIN') }</span>
<div className="progress-bar progress-bar-info progress-bar-striped active full-width font-size-80-percent">
<span className="full-width">{ translate('INDEX.SYNC_ERR_LONGESTCHAIN') }</span>
</div>
);
} else if (this.props.Dashboard.progress.blocks === 0) {
return (
<div
className="progress-bar progress-bar-info progress-bar-striped active full-width font-size-80-percent"
role="progressbar"
id="extcoin-sync">
<span
id="extcoin-sync-percent"
className="full-width">{ translate('INDEX.SYNC_ERR_BLOCKS') }</span>
<div className="progress-bar progress-bar-info progress-bar-striped active full-width font-size-80-percent">
<span className="full-width">{ translate('INDEX.SYNC_ERR_BLOCKS') }</span>
</div>
);
} else {
@ -32,12 +22,8 @@ class WalletsNativeSyncProgress extends React.Component {
return (
<div
className="progress-bar progress-bar-info progress-bar-striped active font-size-80-percent"
style={{ width: syncPercentage }}
role="progressbar"
id="extcoin-sync">
<span
id="extcoin-sync-percent"
style={{ width: syncPercentage }}>{ syncPercentage }</span> | <span id="extcoin-synced-blocks">{ this.props.Dashboard.progress.blocks }</span> / <span id="extcoin-longestchain">{ this.props.Dashboard.progress.longestchain }</span> | { translate('INDEX.CONNECTIONS') }: <span id="extcoin-connections">{ this.props.Dashboard.progress.connections }</span>
style={{ width: syncPercentage }}>
<span style={{ width: syncPercentage }}>{ syncPercentage }</span> | { this.props.Dashboard.progress.blocks } / { this.props.Dashboard.progress.longestchain } | { translate('INDEX.CONNECTIONS') }: { this.props.Dashboard.progress.connections }
</div>
);
}
@ -60,7 +46,7 @@ class WalletsNativeSyncProgress extends React.Component {
return(`: ${Math.floor(currentBestChain * 100 / this.props.Dashboard.progress.remoteKMDNode.blocks)}% (blocks ${currentBestChain} / ${this.props.Dashboard.progress.remoteKMDNode.blocks})`);
} else {
return (
<span id="activating-komodod-tridot">...</span>
<span>...</span>
);
}
}
@ -81,17 +67,14 @@ class WalletsNativeSyncProgress extends React.Component {
if ((this.props.Dashboard.progress.blocks < this.props.Dashboard.progress.longestchain) ||
this.props.Dashboard.progress.remoteKMDNode) {
return (
<div
role="alert"
className="alert alert-info alert-dismissible margin-bottom-40"
id="extcoin-wallet-activating-alert">
<button aria-label="Close" data-dismiss="alert" className="close" type="button">
<span aria-hidden="true">×</span>
<div className="alert alert-info alert-dismissible margin-bottom-40">
<button className="close" type="button">
<span>×</span>
</button>
<h4>
{ translate('INDEX.ACTIVATING_CHAIN') }{ this.renderActivatingBestChainProgress() }
</h4>
<p id="extcoin-wallet-connection-alert-text">{ this.renderLB('INDEX.KMD_STARTED') }</p>
<p>{ this.renderLB('INDEX.KMD_STARTED') }</p>
</div>
);
} else {
@ -107,7 +90,7 @@ class WalletsNativeSyncProgress extends React.Component {
<div>
{ this.renderChainActivationNotification() }
<div className="row sync-progress-container">
<div className="col-xs-12" id="extcoin-progressbars">
<div className="col-xs-12">
<div className="progress">
{ this.renderSyncPercentagePlaceholder() }
</div>

46
react/src/components/dashboard/walletsNativeTxHistory.js

@ -125,8 +125,7 @@ class WalletsNativeTxHistory extends React.Component {
items.push(
<li className={ this.state.activePage === i + 1 ? 'paginate_button active' : 'paginate_button' }>
<a
aria-controls="kmd-tx-history-tbl"
tabIndex="0" key={ `${i}-pagination` }
key={ `${i}-pagination` }
onClick={ this.state.activePage !== (i + 1) ? () => this.updateCurrentPage(i + 1) : null }>{ i + 1 }</a>
</li>
);
@ -140,14 +139,13 @@ class WalletsNativeTxHistory extends React.Component {
this.props.ActiveCoin.txhistory !== 'loading' &&
this.props.ActiveCoin.txhistory.length > 10) {
return (
<div className="dataTables_length" id="kmd-tx-history-tbl_length">
<div className="dataTables_length">
<label>
{ translate('INDEX.SHOW') }&nbsp;
<select
name="itemsPerPage"
aria-controls="kmd-tx-history-tbl"
className="form-control input-sm"
onChange={this.updateInput}>
onChange={ this.updateInput }>
<option value="10">10</option>
<option value="25">25</option>
<option value="50">50</option>
@ -173,31 +171,17 @@ class WalletsNativeTxHistory extends React.Component {
return (
<div className="row unselectable">
<div className="col-sm-5">
<div
className="dataTables_info"
id="kmd-tx-history-tbl_info"
role="status"
aria-live="polite">{ translate('INDEX.SHOWING') } { _paginationStart } { translate('INDEX.TO') } { _paginationEnd } { translate('INDEX.OF') } { this.props.ActiveCoin.txhistory.length } { translate('INDEX.ENTRIES_SM') }</div>
<div className="dataTables_info">{ translate('INDEX.SHOWING') } { _paginationStart } { translate('INDEX.TO') } { _paginationEnd } { translate('INDEX.OF') } { this.props.ActiveCoin.txhistory.length } { translate('INDEX.ENTRIES_SM') }</div>
</div>
<div className="col-sm-7">
<div className="dataTables_paginate paging_simple_numbers" id="kmd-tx-history-tbl_paginate">
<div className="dataTables_paginate paging_simple_numbers">
<ul className="pagination">
<li
className={ this.state.activePage === 1 ? 'paginate_button previous disabled' : 'paginate_button previous' }
id="kmd-tx-history-tbl_previous">
<a
aria-controls="kmd-tx-history-tbl"
tabIndex="0"
onClick={ () => this.updateCurrentPage(this.state.activePage - 1) }>{ translate('INDEX.PREVIOUS') }</a>
<li className={ this.state.activePage === 1 ? 'paginate_button previous disabled' : 'paginate_button previous' }>
<a onClick={ () => this.updateCurrentPage(this.state.activePage - 1) }>{ translate('INDEX.PREVIOUS') }</a>
</li>
{this.renderPaginationItems()}
<li
className={ _paginationNextState ? 'paginate_button next disabled' : 'paginate_button next' }
id="kmd-tx-history-tbl_next">
<a
aria-controls="kmd-tx-history-tbl"
tabIndex="0"
onClick={ () => this.updateCurrentPage(this.state.activePage + 1) }>{ translate('INDEX.NEXT') }</a>
<li className={ _paginationNextState ? 'paginate_button next disabled' : 'paginate_button next' }>
<a onClick={ () => this.updateCurrentPage(this.state.activePage + 1) }>{ translate('INDEX.NEXT') }</a>
</li>
</ul>
</div>
@ -228,7 +212,7 @@ class WalletsNativeTxHistory extends React.Component {
this.state.itemsList.length &&
this.props.ActiveCoin.nativeActiveSection === 'default') {
return this.state.itemsList.map((tx, index) =>
<tr key={tx.txid + tx.amount}>
<tr key={ tx.txid + tx.amount }>
<td>
<span className="label label-default">
<i className="icon fa-eye"></i> { translate('IAPI.PUBLIC_SM') }
@ -258,10 +242,10 @@ class WalletsNativeTxHistory extends React.Component {
this.props.ActiveCoin.nativeActiveSection === 'default') {
return (
<div className="native-transactions">
<div id="kmd_wallet_dashboardinfo">
<div>
<div className="col-xs-12 margin-top-20">
<div className="panel nav-tabs-horizontal">
<div id="kmd_wallet_dashoard_section">
<div>
<div className="col-xlg-12 col-lg-12 col-sm-12 col-xs-12">
<div className="panel">
<header className="panel-heading">
@ -273,15 +257,15 @@ class WalletsNativeTxHistory extends React.Component {
{ this.renderPaginationItemsPerPageSelector() }
</div>
<div className="col-sm-6">
<div id="kmd-tx-history-tbl_filter" className="dataTables_filter">
<div className="dataTables_filter">
<label>
{ translate('INDEX.SEARCH') }: <input type="search" className="form-control input-sm" aria-controls="kmd-tx-history-tbl" disabled="true" />
{ translate('INDEX.SEARCH') }: <input type="search" className="form-control input-sm" disabled="true" />
</label>
</div>
</div>
</div>
<div className="row">
<table className="table table-hover dataTable table-striped" id="kmd-tx-history-tbl" width="100%">
<table className="table table-hover dataTable table-striped" width="100%">
<thead>
<tr>
<th>{ translate('INDEX.TYPE') }</th>

67
react/src/components/dashboard/walletsNativeTxInfo.js

@ -38,55 +38,36 @@ class WalletsNativeTxInfo extends React.Component {
return (
<div onKeyDown={ (event) => this.handleKeydown(event) }>
<div className="modal show" id="kmd_txid_info_mdl" aria-hidden="false" role="dialog">
<div className="modal show" id="kmd_txid_info_mdl">
<div className="modal-dialog modal-center modal-lg">
<div className="modal-content">
<div className="modal-body modal-body-container">
<div className="panel nav-tabs-horizontal">
<ul className="nav nav-tabs nav-tabs-line" role="tablist">
<li className={ this.state.activeTab === 0 ? 'active' : '' } role="presentation">
<a
data-toggle="tab"
aria-controls="KmdTxIDInfotab1"
role="tab"
onClick={ () => this.openTab(0) }>
<i className="icon md-balance-wallet" aria-hidden="true"></i>TxID Info
<ul className="nav nav-tabs nav-tabs-line">
<li className={ this.state.activeTab === 0 ? 'active' : '' }>
<a onClick={ () => this.openTab(0) }>
<i className="icon md-balance-wallet"></i>TxID Info
</a>
</li>
<li className={ this.state.activeTab === 1 ? 'active' : '' } role="presentation">
<a
data-toggle="tab"
aria-controls="KmdTxIDInfotab2"
role="tab"
onClick={ () => this.openTab(1) }>
<i className="icon md-plus-square" aria-hidden="true"></i>Vjointsplits, Details
<li className={ this.state.activeTab === 1 ? 'active' : '' }>
<a onClick={ () => this.openTab(1) }>
<i className="icon md-plus-square"></i>Vjointsplits, Details
</a>
</li>
<li className={ this.state.activeTab === 2 ? 'active' : '' } role="presentation">
<a
data-toggle="tab"
aria-controls="KmdTxIDInfotab3"
role="tab"
onClick={ () => this.openTab(2) }>
<i className="icon wb-briefcase" aria-hidden="true"></i>Hex
<li className={ this.state.activeTab === 2 ? 'active' : '' }>
<a onClick={ () => this.openTab(2) }>
<i className="icon wb-briefcase"></i>Hex
</a>
</li>
<li className={ this.state.activeTab === 3 ? 'active' : '' } role="presentation">
<a
data-toggle="tab"
aria-controls="KmdTxIDInfotab4"
role="tab"
onClick={ () => this.openTab(3) }>
<i className="icon wb-file" aria-hidden="true"></i>Raw info
<li className={ this.state.activeTab === 3 ? 'active' : '' }>
<a onClick={ () => this.openTab(3) }>
<i className="icon wb-file"></i>Raw info
</a>
</li>
</ul>
<div className="panel-body">
<div className="tab-content">
<div
className={ this.state.activeTab === 0 ? 'tab-pane active' : 'tab-pane' }
id="KmdTxIDInfotab1"
role="tabpanel">
<div className={ this.state.activeTab === 0 ? 'tab-pane active' : 'tab-pane' }>
<table className="table table-striped">
<tbody>
<tr>
@ -152,10 +133,7 @@ class WalletsNativeTxInfo extends React.Component {
</tbody>
</table>
</div>
<div
className={ this.state.activeTab === 1 ? 'tab-pane active' : 'tab-pane' }
id="KmdTxIDInfotab2"
role="tabpanel">
<div className={ this.state.activeTab === 1 ? 'tab-pane active' : 'tab-pane' }>
<table className="table table-striped">
<tbody>
<tr>
@ -173,23 +151,15 @@ class WalletsNativeTxInfo extends React.Component {
</tbody>
</table>
</div>
<div
className={ this.state.activeTab === 2 ? 'tab-pane active' : 'tab-pane' }
id="KmdTxIDInfotab3"
role="tabpanel">
<div className={ this.state.activeTab === 2 ? 'tab-pane active' : 'tab-pane' }>
<textarea
id="kmd_txid_info_hex"
className="full-width height-170"
rows="10"
cols="80"
defaultValue={ txInfo.hex } disabled></textarea>
</div>
<div
className={ this.state.activeTab === 3 ? 'tab-pane active' : 'tab-pane' }
id="KmdTxIDInfotab4"
role="tabpanel">
<div className={ this.state.activeTab === 3 ? 'tab-pane active' : 'tab-pane' }>
<textarea
id="kmd_txid_info_hex"
className="full-width height-400"
rows="40"
cols="80"
@ -204,7 +174,6 @@ class WalletsNativeTxInfo extends React.Component {
<button
type="button"
className="btn btn-default"
data-dismiss="modal"
onClick={ this.toggleTxInfoModal }>{ translate('INDEX.CLOSE') }</button>
</div>
</div>

21
react/src/components/dashboard/walletsNav.js

@ -54,11 +54,11 @@ class WalletsNav extends React.Component {
!this.props.ActiveCoin.coin) {
return (
<div>
<div className="col-xs-12 padding-top-20" id="no_wallet_selected">
<div className="alert alert-info alert-dismissible" role="alert">
<button type="button" className="close" data-dismiss="alert" aria-label="Close"></button>
<div className="col-xs-12 padding-top-20">
<div className="alert alert-info alert-dismissible">
<button type="button" className="close"></button>
<span className="font-size-24 text-align-center">
<i className="icon fa-paw" aria-hidden="true"></i> { translate('INDEX.NO_WALLET_CAPS') }
<i className="icon fa-paw"></i> { translate('INDEX.NO_WALLET_CAPS') }
</span>
<br/>
{ translate('INDEX.PLEASE_SELECT_A_WALLET') }.
@ -74,30 +74,27 @@ class WalletsNav extends React.Component {
id="header-dashboard"
style={{ marginBottom: this.props.ActiveCoin.mode === 'basilisk' ? '30px' : '0' }}>
<ol className="breadcrumb">
<strong>{ translate('INDEX.MY') } <span id="edexcoin-active">{ this.props && this.props.ActiveCoin ? this.props.ActiveCoin.coin : '-' }</span> { translate('INDEX.ADDRESS') }: </strong> <span id="edexcoin_active_addr">{ this.props && this.props.Dashboard && this.props.Dashboard.activeHandle ? this.props.Dashboard.activeHandle[this.props.ActiveCoin.coin] : '-' }</span> <button className="btn btn-default btn-xs clipboard-edexaddr" id="edexcoin_active_addr_clipboard" onClick={ () => this.copyMyAddress(this.props.Dashboard.activeHandle[this.props.ActiveCoin.coin]) }><i className="icon wb-copy" aria-hidden="true"></i> { translate('INDEX.COPY') }</button>
<strong>{ translate('INDEX.MY') } { this.props && this.props.ActiveCoin ? this.props.ActiveCoin.coin : '-' } { translate('INDEX.ADDRESS') }: </strong> { this.props && this.props.Dashboard && this.props.Dashboard.activeHandle ? this.props.Dashboard.activeHandle[this.props.ActiveCoin.coin] : '-' } <button className="btn btn-default btn-xs clipboard-edexaddr" onClick={ () => this.copyMyAddress(this.props.Dashboard.activeHandle[this.props.ActiveCoin.coin]) }><i className="icon wb-copy"></i> { translate('INDEX.COPY') }</button>
</ol>
<div className="page-header-actions" id="edexcoin-actions">
<div className="page-header-actions">
<div id="kmd_header_button">
<button
type="button"
className="btn btn-dark waves-effect waves-light"
id="btn_edexcoin_dashboard"
onClick={ this.toggleSendReceiveCoinForms }>
<i className="icon md-view-dashboard" aria-hidden="true"></i> { this.props.ActiveCoin.mode !== 'native' ? translate('INDEX.DASHBOARD') : translate('INDEX.WALLET_INFO') }
<i className="icon md-view-dashboard"></i> { this.props.ActiveCoin.mode !== 'native' ? translate('INDEX.DASHBOARD') : translate('INDEX.WALLET_INFO') }
</button>
<button
type="button"
className="btn btn-primary waves-effect waves-light"
id="btn_edexcoin_send"
onClick={ () => this.toggleSendCoinForm(!this.props.ActiveCoin.send) }>
<i className="icon fa-send" aria-hidden="true"></i> { translate('INDEX.SEND') }
<i className="icon fa-send"></i> { translate('INDEX.SEND') }
</button>
<button
type="button"
className="btn btn-info waves-effect waves-light"
id="btn_edexcoin_recieve"
onClick={ () => this.toggleReceiveCoinForm(!this.props.ActiveCoin.receive) }>
<i className="icon fa-inbox" aria-hidden="true"></i> { translate('INDEX.RECEIVE') }
<i className="icon fa-inbox"></i> { translate('INDEX.RECEIVE') }
</button>
</div>
</div>

4
react/src/components/dashboard/walletsNotariesList.js

@ -57,14 +57,14 @@ class WalletsNotariesList extends React.Component {
return (
<div onKeyDown={ (event) => this.handleKeydown(event) }>
<div className="modal show" id="kmd_txid_info_mdl" aria-hidden="false" role="dialog">
<div className="modal show" id="kmd_txid_info_mdl">
<div className="modal-dialog modal-center modal-lg">
<div className="modal-content">
<div className="modal-body modal-body-container">
<div className="panel nav-tabs-horizontal">
<div className="panel-body">
<div className="tab-content">
<div className="tab-pane active" role="tabpanel">
<div className="tab-pane active">
{ this.renderNotariesFetching() }
<Tree defaultExpandAll={ false } openAnimation={ animation }>
{ this.renderNotariesList() }

33
react/src/components/dashboard/walletsProgress.js

@ -34,47 +34,36 @@ class WalletsProgress extends React.Component {
<div className="row no-space">
<div id="currency-progressbars">
<div className="progress progress-sm">
<div
className={'full-width font-size-80-percent ' + (this.isFullySynced() ? 'progress-bar progress-bar-striped active progress-bar-indicating progress-bar-success' : 'hide') }
role="progressbar"
id="currency-bundles">
<div className={ 'full-width font-size-80-percent ' + (this.isFullySynced() ? 'progress-bar progress-bar-striped active progress-bar-indicating progress-bar-success' : 'hide') }>
{ translate('INDEX.BUNDLES') } <span id="currency-bundles-percent">({ this.props.ActiveCoin.coin }) 100.00% - ( { this.props.Dashboard.progress.blocks } / { this.props.Dashboard.progress.blocks } ) ==&gt;&gt; RT{ this.props.Dashboard.progress.RTheight }</span>
</div>
<div
className={'font-size-80-percent ' + (this.isFullySynced() ? 'hide' : 'progress-bar progress-bar-info progress-bar-striped active') }
style={{ width: this.props.Dashboard.progress.bundles + '%' }}
role="progressbar"
id="currency-bundles">
{ translate('INDEX.BUNDLES') } <span id="currency-bundles-percent">{ this.props.Dashboard.progress.bundles }%</span>
className={ 'font-size-80-percent ' + (this.isFullySynced() ? 'hide' : 'progress-bar progress-bar-info progress-bar-striped active') }
style={{ width: this.props.Dashboard.progress.bundles + '%' }}>
{ translate('INDEX.BUNDLES') } { this.props.Dashboard.progress.bundles }%
</div>
</div>
</div>
<div id="additional-progress-bars" className={ this.isFullySynced() ? 'hide' : '' }>
<div className={ this.isFullySynced() ? 'hide' : '' }>
<div className="progress progress-sm">
<div
className="progress-bar progress-bar-warning progress-bar-striped active font-size-80-percent"
style={{ width: this.props.Dashboard.progress.utxo + '%' }}
role="progressbar"
id="currency-utxo">
utxo <span id="currency-utxo-percent">{ this.props.Dashboard.progress.utxo }%</span>
style={{ width: this.props.Dashboard.progress.utxo + '%' }}>
utxo { this.props.Dashboard.progress.utxo }%
</div>
</div>
<div className="progress progress-sm">
<div
className="progress-bar progress-bar-danger progress-bar-striped active font-size-80-percent"
style={{ width: this.props.Dashboard.progress.balances + '%' }}
role="progressbar"
id="currency-balances">
{ translate('INDEX.BALANCES') } <span id="currency-balances-percent">{ this.props.Dashboard.progress.balances }%</span>
style={{ width: this.props.Dashboard.progress.balances + '%' }}>
{ translate('INDEX.BALANCES') } { this.props.Dashboard.progress.balances }%
</div>
</div>
<div className="progress progress-sm">
<div
className="progress-bar progress-bar-success progress-bar-striped active font-size-80-percent"
style={{ width: this.props.Dashboard.progress.validated + '%' }}
role="progressbar"
id="currency-validated">
{ translate('INDEX.VALIDATED') } <span id="currency-validated-percent">{ this.props.Dashboard.progress.validated }%</span>
style={{ width: this.props.Dashboard.progress.validated + '%' }}>
{ translate('INDEX.VALIDATED') } { this.props.Dashboard.progress.validated }%
</div>
</div>
</div>

35
react/src/components/dashboard/walletsTxInfo.js

@ -37,37 +37,26 @@ class WalletsTxInfo extends React.Component {
return (
<div onKeyDown={ (event) => this.handleKeydown(event) }>
<div className="modal show" id="kmd_txid_info_mdl" aria-hidden="false" role="dialog">
<div className="modal show" id="kmd_txid_info_mdl">
<div className="modal-dialog modal-center modal-lg">
<div className="modal-content">
<div className="modal-body modal-body-container">
<div className="panel nav-tabs-horizontal">
<ul className="nav nav-tabs nav-tabs-line" role="tablist">
<li className={ this.state.activeTab === 0 ? 'active' : '' } role="presentation">
<a
data-toggle="tab"
aria-controls="KmdTxIDInfotab1"
role="tab"
onClick={ () => this.openTab(0) }>
<i className="icon md-balance-wallet" aria-hidden="true"></i>TxID Info
<ul className="nav nav-tabs nav-tabs-line">
<li className={ this.state.activeTab === 0 ? 'active' : '' }>
<a onClick={ () => this.openTab(0) }>
<i className="icon md-balance-wallet"></i>TxID Info
</a>
</li>
<li className={ this.state.activeTab === 1 ? 'active' : '' } role="presentation">
<a
data-toggle="tab"
aria-controls="KmdTxIDInfotab4"
role="tab"
onClick={ () => this.openTab(1) }>
<i className="icon wb-file" aria-hidden="true"></i>Raw info
<li className={ this.state.activeTab === 1 ? 'active' : '' }>
<a onClick={ () => this.openTab(1) }>
<i className="icon wb-file"></i>Raw info
</a>
</li>
</ul>
<div className="panel-body">
<div className="tab-content">
<div
className={ this.state.activeTab === 0 ? 'tab-pane active' : 'tab-pane' }
id="KmdTxIDInfotab1"
role="tabpanel">
<div className={ this.state.activeTab === 0 ? 'tab-pane active' : 'tab-pane' }>
<table className="table table-striped">
<tbody>
<tr>
@ -115,11 +104,8 @@ class WalletsTxInfo extends React.Component {
</tbody>
</table>
</div>
<div
className={ this.state.activeTab === 1 ? 'tab-pane active' : 'tab-pane' }
id="KmdTxIDInfotab4" role="tabpanel">
<div className={ this.state.activeTab === 1 ? 'tab-pane active' : 'tab-pane' }>
<textarea
id="kmd_txid_info_hex"
className="full-width height-400"
rows="40"
cols="80"
@ -133,7 +119,6 @@ class WalletsTxInfo extends React.Component {
<button
type="button"
className="btn btn-default"
data-dismiss="modal"
onClick={ this.toggleTxInfoModal }>{ translate('INDEX.CLOSE') }</button>
</div>
</div>

4
react/src/components/overrides.scss

@ -549,4 +549,8 @@ input:checked + .slider:before {
.bootstrap-select > .dropdown-toggle {
z-index: 0;
}
select.form-control.form-material {
color: #757575;
}

2
react/src/components/toaster/toaster-item.js

@ -61,7 +61,7 @@ class ToasterItem extends React.Component {
return (
<div className={ `toast toast-${this.state.type}` }>
<button
className="toast-close-button" role="button"
className="toast-close-button"
onClick={ () => this.dismissToast(this.state.toastId) }>×
</button>
<div className="toast-title">{ this.state.title }</div>

4
react/src/components/toaster/toaster.js

@ -54,9 +54,7 @@ class Toaster extends React.Component {
return (
<div
id="toast-container"
className="single-toast toast-bottom-right"
aria-live="polite"
role="alert">
className="single-toast toast-bottom-right">
{ this.renderToasts() }
</div>
);

4
react/src/translate/en.js

@ -1,6 +1,10 @@
export const _lang = {
'EN': {
'INDEX': {
'IMPORT': 'Import',
'CHECK': 'Check',
'VALIDATE': 'Validate',
'COPY_TO_CLIPBOARD': 'Copy to clipboard',
'EMPTY_DEBUG_LOG': 'Debug.log is empty',
'RESTART': 'Restart',
'WALLET_INFO': 'Wallet Info',

Loading…
Cancel
Save