Browse Source

Merge pull request #155 from SuperNETorg/cleanup

Cleanup
all-modes
pbca26 8 years ago
committed by GitHub
parent
commit
4c8b2e168f
  1. 3
      react/change.log
  2. 8
      react/src/actions/actionCreators.js
  3. 7
      react/src/actions/actions/nativeSyncInfo.js
  4. 43
      react/src/actions/actions/settings.js
  5. 3
      react/src/actions/storeType.js
  6. 4
      react/src/components/addcoin/addcoin.render.js
  7. 2
      react/src/components/addcoin/addcoin.scss
  8. 24
      react/src/components/addcoin/coin-selectors.render.js
  9. 2
      react/src/components/dashboard/atomic/atomic.render.js
  10. 6
      react/src/components/dashboard/coinTile/coinTileItem.js
  11. 47
      react/src/components/dashboard/coindDownModal/coindDownModal.js
  12. 46
      react/src/components/dashboard/coindDownModal/coindDownModal.render.js
  13. 4
      react/src/components/dashboard/main/dashboard.render.js
  14. 12
      react/src/components/dashboard/settings/settings.js
  15. 6
      react/src/components/dashboard/settings/settings.render.js
  16. 26
      react/src/components/dashboard/walletsBalance/walletsBalance.render.js
  17. 7
      react/src/components/dashboard/walletsData/walletsData.js
  18. 11
      react/src/components/dashboard/walletsData/walletsData.render.js
  19. 4
      react/src/components/dashboard/walletsTxInfo/walletsTxInfo.render.js
  20. 26
      react/src/components/overrides.scss
  21. 1
      react/src/config.js
  22. 9
      react/src/reducers/dashboard.js

3
react/change.log

@ -7,6 +7,9 @@ UI:
- fixed logout bug - fixed logout bug
- minor placeholders fixes - minor placeholders fixes
- hide address dropdown if wallet has only one address - hide address dropdown if wallet has only one address
- komodod crash report modal
- values rounding (up to 6 decimals)
- add coin multi ui reflow fix
v0.2.0.21a-beta v0.2.0.21a-beta
-------------- --------------

8
react/src/actions/actionCreators.js

@ -25,6 +25,7 @@ import {
DASHBOARD_ACTIVE_COIN_CHANGE, DASHBOARD_ACTIVE_COIN_CHANGE,
ACTIVE_COIN_GET_ADDRESSES, ACTIVE_COIN_GET_ADDRESSES,
DASHBOARD_ACTIVE_COIN_NATIVE_TXHISTORY, DASHBOARD_ACTIVE_COIN_NATIVE_TXHISTORY,
DISPLAY_COIND_DOWN_MODAL,
START_INTERVAL, START_INTERVAL,
STOP_INTERVAL STOP_INTERVAL
} from './storeType'; } from './storeType';
@ -350,4 +351,11 @@ export function stopInterval(name, intervals) {
type: STOP_INTERVAL, type: STOP_INTERVAL,
name, name,
} }
}
export function toggleCoindDownModal(display) {
return {
type: DISPLAY_COIND_DOWN_MODAL,
displayCoindDownModal: display,
}
} }

7
react/src/actions/actions/nativeSyncInfo.js

@ -2,7 +2,8 @@ import { SYNCING_NATIVE_MODE } from '../storeType';
import { import {
triggerToaster, triggerToaster,
getPassthruAgent, getPassthruAgent,
getDebugLog getDebugLog,
toggleCoindDownModal
} from '../actionCreators'; } from '../actionCreators';
import { import {
logGuiHttp, logGuiHttp,
@ -157,9 +158,11 @@ export function getSyncInfoNative(coin, skipDebug) {
'Komodod is down', 'Komodod is down',
'Critical Error', 'Critical Error',
'error', 'error',
false true
) )
); );
dispatch(getDebugLog('komodo', 50));
dispatch(toggleCoindDownModal(true));
} else { } else {
json = JSON.parse(json); json = JSON.parse(json);
} }

43
react/src/actions/actions/settings.js

@ -376,7 +376,16 @@ export function saveAppConfig(_payload) {
); );
}) })
.then(response => response.json()) .then(response => response.json())
.then(json => dispatch(getAppConfig())) .then(json => {
dispatch(getAppConfig());
dispatch(
triggerToaster(
'Settings are saved',
translate('TOASTR.SETTINGS_NOTIFICATION'),
'success'
)
);
})
} }
} }
@ -408,4 +417,36 @@ export function getAppConfig() {
.then(response => response.json()) .then(response => response.json())
.then(json => dispatch(getAppConfigState(json))) .then(json => dispatch(getAppConfigState(json)))
} }
}
export function resetAppConfig() {
return dispatch => {
return fetch(`http://127.0.0.1:${Config.agamaPort}/shepherd/appconf/reset`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
})
.catch(function(error) {
console.log(error);
dispatch(
triggerToaster(
'resetAppConfig',
'Error',
'error'
)
);
})
.then(response => response.json())
.then(json => {
dispatch(getAppConfig());
dispatch(
triggerToaster(
'Settings are reset to default',
translate('TOASTR.SETTINGS_NOTIFICATION'),
'success'
)
);
})
}
} }

3
react/src/actions/storeType.js

@ -43,4 +43,5 @@ export const DASHBOARD_ACTIVE_ADDRESS = 'DASHBOARD_ACTIVE_ADDRESS';
export const LOAD_APP_INFO = 'LOAD_APP_INFO'; export const LOAD_APP_INFO = 'LOAD_APP_INFO';
export const LOG_GUI_HTTP = 'LOG_GUI_HTTP'; export const LOG_GUI_HTTP = 'LOG_GUI_HTTP';
export const CLI = 'CLI'; export const CLI = 'CLI';
export const LOGOUT = 'LOGOUT'; export const LOGOUT = 'LOGOUT';
export const DISPLAY_COIND_DOWN_MODAL = 'DISPLAY_COIND_DOWN_MODAL';

4
react/src/components/addcoin/addcoin.render.js

@ -42,7 +42,7 @@ const AddCoinRender = function() {
</button> </button>
</span> </span>
{ this.renderCoinSelectors() } { this.renderCoinSelectors() }
<div className={ 'text-align-center vertical-margin-20 horizontal-margin-0 ' + (this.hasMoreThanOneCoin() ? 'col-sm-12' : 'hide') }> <div className={ 'text-align-center vertical-margin-20 horizontal-margin-0 padding-bottom-20 ' + (this.hasMoreThanOneCoin() ? 'col-sm-12' : 'hide') }>
<button <button
type="button" type="button"
className="btn btn-primary col-sm-4 float-none" className="btn btn-primary col-sm-4 float-none"
@ -62,7 +62,7 @@ const AddCoinRender = function() {
<strong>Komodo Daemon</strong> { translate('INDEX.NATIVE_MODE_DESC2') }&nbsp; <strong>Komodo Daemon</strong> { translate('INDEX.NATIVE_MODE_DESC2') }&nbsp;
<i>Iguana Daemon</i> { translate('INDEX.NATIVE_MODE_DESC3') }. <i>Iguana Daemon</i> { translate('INDEX.NATIVE_MODE_DESC3') }.
</p> </p>
<div className="alert alert-icon alert-primary"> <div className="alert alert-icon alert-primary margin-top-20">
<i className="icon md-info-outline"></i> <i className="icon md-info-outline"></i>
<strong>{ translate('INDEX.NATIVE_MODE') }</strong> { translate('INDEX.NATIVE_MODE_DESC4') }&nbsp; <strong>{ translate('INDEX.NATIVE_MODE') }</strong> { translate('INDEX.NATIVE_MODE_DESC4') }&nbsp;
<strong>{ translate('INDEX.NATIVE_MODE_DESC5') }</strong>,&nbsp; <strong>{ translate('INDEX.NATIVE_MODE_DESC5') }</strong>,&nbsp;

2
react/src/components/addcoin/addcoin.scss

@ -3,7 +3,7 @@
} }
.vertical-margin-20 { .vertical-margin-20 {
margin-top: 20px; margin-top: 10px;
margin-bottom: 20px; margin-bottom: 20px;
} }

24
react/src/components/addcoin/coin-selectors.render.js

@ -11,8 +11,12 @@ const CoinSelectorsRender = function(item, coin, i) {
<div <div
className={ this.hasMoreThanOneCoin() ? 'multi' : 'single' } className={ this.hasMoreThanOneCoin() ? 'multi' : 'single' }
key={ `add-coin-${i}` }> key={ `add-coin-${i}` }>
<div className="col-sm-8"> <div
<div className="form-group"> className={ this.hasMoreThanOneCoin() ? 'col-sm-10' : 'col-sm-8' }
style={{ paddingLeft: !this.hasMoreThanOneCoin() ? '0' : '15px' }}>
<div
className={ this.hasMoreThanOneCoin() && (item.mode === '-1' || item.mode === -1) ? 'col-sm-6 form-group' : 'form-group' }
style={{ paddingLeft: this.hasMoreThanOneCoin() ? '0' : '15px' }}>
<select <select
className="form-control form-material" className="form-control form-material"
name="selectedCoin" name="selectedCoin"
@ -25,6 +29,20 @@ const CoinSelectorsRender = function(item, coin, i) {
<AddCoinOptionsACFiat appSettings={ this.props.Settings } /> <AddCoinOptionsACFiat appSettings={ this.props.Settings } />
</select> </select>
</div> </div>
<div className={ this.hasMoreThanOneCoin() && (item.mode === '-1' || item.mode === -1) ? 'col-sm-6' : 'hide' }>
<div className="toggle-box padding-bottom-10">
<select
className="form-control form-material"
name="daemonParam"
onChange={ (event) => this.updateDaemonParam(event, i) }
autoFocus>
<option>Daemon param: none</option>
<option value="silent">Daemon param: background process</option>
<option value="reindex">Daemon param: reindex</option>
<option value="rescan">Daemon param: rescan</option>
</select>
</div>
</div>
</div> </div>
<div className={ this.hasMoreThanOneCoin() ? 'hide' : 'col-sm-4' }> <div className={ this.hasMoreThanOneCoin() ? 'hide' : 'col-sm-4' }>
<button <button
@ -137,7 +155,7 @@ const CoinSelectorsRender = function(item, coin, i) {
<i className="fa fa-trash-o"></i> <i className="fa fa-trash-o"></i>
</button> </button>
</div> </div>
<div className={ item.mode === '-1' || item.mode === -1 ? 'col-sm-5' : 'hide' }> <div className={ !this.hasMoreThanOneCoin() && (item.mode === '-1' || item.mode === -1) ? 'col-sm-5 padding-bottom-30' : 'hide' }>
<div className="toggle-box padding-top-3 padding-bottom-10"> <div className="toggle-box padding-top-3 padding-bottom-10">
<select <select
className="form-control form-material" className="form-control form-material"

2
react/src/components/dashboard/atomic/atomic.render.js

@ -7,7 +7,7 @@ import AddCoinOptionsACFiat from '../../addcoin/addcoinOptionsACFiat';
const AtomicRender = function () { const AtomicRender = function () {
return ( return (
<div className="page margin-left-0"> <div className="page margin-left-0 full-height">
<div className="page-content"> <div className="page-content">
<div className="row"> <div className="row">
<div className="col-xlg-12 col-md-12"> <div className="col-xlg-12 col-md-12">

6
react/src/components/dashboard/coinTile/coinTileItem.js

@ -46,10 +46,12 @@ class CoinTileItem extends React.Component {
const _propsDashboard = this.props.Dashboard; const _propsDashboard = this.props.Dashboard;
const syncPercentage = _propsDashboard && _propsDashboard.progress && (parseFloat(parseInt(_propsDashboard.progress.blocks, 10) * 100 / parseInt(this.props.Dashboard.progress.longestchain, 10)).toFixed(2)).replace('NaN', 0); const syncPercentage = _propsDashboard && _propsDashboard.progress && (parseFloat(parseInt(_propsDashboard.progress.blocks, 10) * 100 / parseInt(this.props.Dashboard.progress.longestchain, 10)).toFixed(2)).replace('NaN', 0);
if (syncPercentage < 100) { if (syncPercentage < 100 &&
!this.props.Dashboard.displayCoindDownModal) {
Store.dispatch(getDebugLog('komodo', 10)); Store.dispatch(getDebugLog('komodo', 10));
} }
if (_propsDashboard.progress && if (!this.props.Dashboard.displayCoindDownModal &&
_propsDashboard.progress &&
_propsDashboard.progress.blocks && _propsDashboard.progress.blocks &&
_propsDashboard.progress.longestchain && _propsDashboard.progress.longestchain &&
syncPercentage && syncPercentage &&

47
react/src/components/dashboard/coindDownModal/coindDownModal.js

@ -0,0 +1,47 @@
import React from 'react';
import { toggleCoindDownModal } from '../../../actions/actionCreators';
import Store from '../../../store';
import CoindDownModalRender from './coindDownModal.render';
class CoindDownModal extends React.Component {
constructor(props) {
super(props);
this.state = {
display: false,
debugLogCrash: null,
};
this.dismiss = this.dismiss.bind(this);
}
dismiss() {
Store.dispatch(toggleCoindDownModal(false));
}
componentWillReceiveProps(props) {
const coindDownModalProps = props ? props.Dashboard : null;
if (coindDownModalProps &&
coindDownModalProps.displayCoindDownModal !== this.state.display) {
this.setState(Object.assign({}, this.state, {
display: coindDownModalProps.displayCoindDownModal,
}));
setTimeout(() => {
this.setState(Object.assign({}, this.state, {
display: coindDownModalProps.displayCoindDownModal,
}));
}, 100);
}
}
render() {
if (this.state.display) {
return CoindDownModalRender.call(this);
}
return null;
}
}
export default CoindDownModal;

46
react/src/components/dashboard/coindDownModal/coindDownModal.render.js

@ -0,0 +1,46 @@
import React from 'react';
import { translate } from '../../../translate/translate';
const CoindDownModalRender = function () {
return (
<div>
<div
className={ 'modal modal-3d-sign coind-down-modal ' + (this.state.display ? 'show in' : 'fade hide') }
id="AddCoinDilogModel-login">
<div className="modal-dialog modal-center modal-lg">
<div className="modal-content">
<div className="modal-header bg-orange-a400 wallet-send-header">
<button
type="button"
className="close white"
onClick={ this.dismiss }>
<span>×</span>
</button>
<h4 className="modal-title white">Komodod is down!</h4>
</div>
<div className="modal-body">
<div className="vertical-align text-center">
<div className="page-content vertical-align-middle">
<strong>Debug.log (last 50 lines)</strong>
<div className="form-group form-material floating">
<textarea
className="form-control"
value={ this.props.Settings.debugLog }></textarea>
</div>
<button
type="button"
className="btn btn-primary btn-block"
id="loginbtn"
onClick={ this.dismiss }>OK</button>
</div>
</div>
</div>
</div>
</div>
</div>
<div className={ 'modal-backdrop ' + (this.state.display ? 'show in' : 'fade hide') }></div>
</div>
);
};
export default CoindDownModalRender;

4
react/src/components/dashboard/main/dashboard.render.js

@ -15,6 +15,7 @@ import ReceiveCoin from '../receiveCoin/receiveCoin';
import About from '../about/about'; import About from '../about/about';
import WalletsNative from '../walletsNative/walletsNative'; import WalletsNative from '../walletsNative/walletsNative';
import WalletsTxInfo from '../walletsTxInfo/walletsTxInfo'; import WalletsTxInfo from '../walletsTxInfo/walletsTxInfo';
import CoindDownModal from '../coindDownModal/coindDownModal';
const DashboardRender = function() { const DashboardRender = function() {
return ( return (
@ -23,6 +24,7 @@ const DashboardRender = function() {
className={ this.isSectionActive('wallets') ? 'page-main' : '' } className={ this.isSectionActive('wallets') ? 'page-main' : '' }
id="section-dashboard"> id="section-dashboard">
<Navbar {...this.props} /> <Navbar {...this.props} />
<CoindDownModal {...this.props} />
<div className={ this.isSectionActive('wallets') ? 'show' : 'hide' }> <div className={ this.isSectionActive('wallets') ? 'show' : 'hide' }>
<CoinTile {...this.props} /> <CoinTile {...this.props} />
<WalletsNav {...this.props} /> <WalletsNav {...this.props} />
@ -37,7 +39,7 @@ const DashboardRender = function() {
<div className={ this.isSectionActive('edex') ? 'show' : 'hide' }> <div className={ this.isSectionActive('edex') ? 'show' : 'hide' }>
<EDEX {...this.props} /> <EDEX {...this.props} />
</div> </div>
<div className={ this.isSectionActive('atomic') ? 'show' : 'hide' }> <div className={ this.isSectionActive('atomic') ? 'show full-height' : 'hide' }>
<Atomic {...this.props} /> <Atomic {...this.props} />
</div> </div>
<div className={ this.isSectionActive('jumblr') ? 'show' : 'hide' }> <div className={ this.isSectionActive('jumblr') ? 'show' : 'hide' }>

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

@ -11,10 +11,11 @@ import {
addPeerNode, addPeerNode,
getAppConfig, getAppConfig,
saveAppConfig, saveAppConfig,
resetAppConfig,
getAppInfo, getAppInfo,
shepherdCli, shepherdCli,
checkForUpdateUIPromise, checkForUpdateUIPromise,
updateUIPromise updateUIPromise,
} from '../../../actions/actionCreators'; } from '../../../actions/actionCreators';
import Store from '../../../store'; import Store from '../../../store';
@ -72,6 +73,7 @@ class Settings extends React.Component {
this.renderPeersList = this.renderPeersList.bind(this); this.renderPeersList = this.renderPeersList.bind(this);
this.renderSNPeersList = this.renderSNPeersList.bind(this); this.renderSNPeersList = this.renderSNPeersList.bind(this);
this._saveAppConfig = this._saveAppConfig.bind(this); this._saveAppConfig = this._saveAppConfig.bind(this);
this._resetAppConfig = this._resetAppConfig.bind(this);
this.exportWifKeysRaw = this.exportWifKeysRaw.bind(this); this.exportWifKeysRaw = this.exportWifKeysRaw.bind(this);
this.toggleSeedInputVisibility = this.toggleSeedInputVisibility.bind(this); this.toggleSeedInputVisibility = this.toggleSeedInputVisibility.bind(this);
this._checkForUpdateUIPromise = this._checkForUpdateUIPromise.bind(this); this._checkForUpdateUIPromise = this._checkForUpdateUIPromise.bind(this);
@ -97,12 +99,16 @@ class Settings extends React.Component {
} }
} }
_resetAppConfig() {
Store.dispatch(resetAppConfig());
}
resizeLoginTextarea() { resizeLoginTextarea() {
// auto-size textarea // auto-size textarea
setTimeout(() => { setTimeout(() => {
if (this.state.seedInputVisibility) { if (this.state.seedInputVisibility) {
document.querySelector('#wifkeysPassphraseTextarea').style.height = '1px'; document.querySelector('#wifkeysPassphraseTextarea').style.height = '1px';
document.querySelector('#wifkeysPassphraseTextarea').style.height = `${(15 + document.querySelector('#wifkeysPassphraseTextarea').scrollHeight)}px`; document.querySelector('#wifkeysPassphraseTextarea').style.height = `${(15 + document.querySelector('#wifkeysPassphraseTextarea').scrollHeight)}px`;
} }
}, 100); }, 100);
} }

6
react/src/components/dashboard/settings/settings.render.js

@ -538,6 +538,10 @@ export const SettingsRender = function() {
type="button" type="button"
className="btn btn-primary waves-effect waves-light" className="btn btn-primary waves-effect waves-light"
onClick={ this._saveAppConfig }>{ translate('SETTINGS.SAVE_APP_CONFIG') }</button> onClick={ this._saveAppConfig }>{ translate('SETTINGS.SAVE_APP_CONFIG') }</button>
<button
type="button"
className="btn btn-primary waves-effect waves-light margin-left-30"
onClick={ this._resetAppConfig }>Reset to default</button>
</div> </div>
</div> </div>
</div> </div>
@ -570,7 +574,7 @@ export const SettingsRender = function() {
name="cliCoin" name="cliCoin"
id="settingsCliOptions" id="settingsCliOptions"
onChange={ this.updateInput }> onChange={ this.updateInput }>
<option value="">{ translate('INDEX.CLI_NATIVE_COIN') }</option> <option>{ translate('INDEX.CLI_NATIVE_COIN') }</option>
{ this.renderActiveCoinsList('native') } { this.renderActiveCoinsList('native') }
</select> </select>
<label <label

26
react/src/components/dashboard/walletsBalance/walletsBalance.render.js

@ -1,5 +1,7 @@
import React from 'react'; import React from 'react';
import { translate } from '../../../translate/translate'; import { translate } from '../../../translate/translate';
import { formatValue } from '../../../util/formatValue';
import Config from '../../../config';
const WalletsBalanceRender = function() { const WalletsBalanceRender = function() {
return ( return (
@ -30,12 +32,14 @@ const WalletsBalanceRender = function() {
<i className="icon fa-eye font-size-24 vertical-align-bottom margin-right-5"></i> <i className="icon fa-eye font-size-24 vertical-align-bottom margin-right-5"></i>
{ this.isNativeMode() ? translate('INDEX.TRANSPARENT_BALANCE') : translate('INDEX.BALANCE') } { this.isNativeMode() ? translate('INDEX.TRANSPARENT_BALANCE') : translate('INDEX.BALANCE') }
</div> </div>
<span className="pull-right padding-top-10 font-size-22"> <span
className="pull-right padding-top-10 font-size-22"
title={ Config.roundValues ? this.renderBalance('main') : null }>
{ this.isNativeMode() ? { this.isNativeMode() ?
this.props.ActiveCoin.balance.transparent ? this.props.ActiveCoin.balance.transparent : '-' this.props.ActiveCoin.balance.transparent ? this.props.ActiveCoin.balance.transparent : '-'
: :
<span> <span>
{ this.renderBalance('main') } { this.props.ActiveCoin.coin } { Config.roundValues ? formatValue('round', this.renderBalance('main'), -6) : this.renderBalance('main') } { this.props.ActiveCoin.coin }
</span> </span>
} }
</span> </span>
@ -54,8 +58,10 @@ const WalletsBalanceRender = function() {
<i className="icon fa-eye-slash font-size-24 vertical-align-bottom margin-right-5"></i> <i className="icon fa-eye-slash font-size-24 vertical-align-bottom margin-right-5"></i>
{ translate('INDEX.Z_BALANCE') } { translate('INDEX.Z_BALANCE') }
</div> </div>
<span className="pull-right padding-top-10 font-size-22"> <span
{ this.props.ActiveCoin.balance.private ? this.props.ActiveCoin.balance.private : '-' } className="pull-right padding-top-10 font-size-22"
title={ Config.roundValues ? this.props.ActiveCoin.balance.private : null }>
{ this.props.ActiveCoin.balance.private ? (Config.roundValues ? formatValue('round', this.props.ActiveCoin.balance.private, -6) : this.props.ActiveCoin.balance.private) : '-' }
</span> </span>
</div> </div>
</div> </div>
@ -73,13 +79,15 @@ const WalletsBalanceRender = function() {
<i className="icon fa-money font-size-24 vertical-align-bottom margin-right-5"></i> <i className="icon fa-money font-size-24 vertical-align-bottom margin-right-5"></i>
{ translate('INDEX.INTEREST_EARNED') } { translate('INDEX.INTEREST_EARNED') }
</div> </div>
<span className="pull-right padding-top-10 font-size-22"> <span
className="pull-right padding-top-10 font-size-22"
title={ Config.roundValues ? this.renderBalance('interest') : null }>
{ this.isNativeMode() ? { this.isNativeMode() ?
this.props.Dashboard.progress this.props.Dashboard.progress
&& this.props.Dashboard.progress.interest ? this.props.Dashboard.progress.interest : '-' && this.props.Dashboard.progress.interest ? this.props.Dashboard.progress.interest : '-'
: :
<span> <span>
{this.renderBalance('interest')} {this.props.ActiveCoin.coin} { Config.roundValues ? formatValue('round', this.renderBalance('interest'), -6) : this.renderBalance('interest') } { this.props.ActiveCoin.coin }
</span> </span>
} }
</span> </span>
@ -99,12 +107,14 @@ const WalletsBalanceRender = function() {
<i className="icon fa-bullseye font-size-24 vertical-align-bottom margin-right-5"></i> <i className="icon fa-bullseye font-size-24 vertical-align-bottom margin-right-5"></i>
{ translate('INDEX.TOTAL_BALANCE') } { translate('INDEX.TOTAL_BALANCE') }
</div> </div>
<span className="pull-right padding-top-10 font-size-22"> <span
className="pull-right padding-top-10 font-size-22"
title={ Config.roundValues ? this.renderBalance('total') : null }>
{ this.isNativeMode() ? { this.isNativeMode() ?
this.props.ActiveCoin.balance.total ? this.props.ActiveCoin.balance.total : '-' this.props.ActiveCoin.balance.total ? this.props.ActiveCoin.balance.total : '-'
: :
<span> <span>
{ this.renderBalance('total') } { this.props.ActiveCoin.coin } { Config.roundValues ? formatValue('round', this.renderBalance('total'), -6) : this.renderBalance('total') } { this.props.ActiveCoin.coin }
</span> </span>
} }
</span> </span>

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

@ -1,6 +1,7 @@
import React from 'react'; import React from 'react';
import { translate } from '../../../translate/translate'; import { translate } from '../../../translate/translate';
import { sortByDate } from '../../../util/sort'; import { sortByDate } from '../../../util/sort';
import { formatValue } from '../../../util/formatValue';
import Config from '../../../config'; import Config from '../../../config';
import { import {
basiliskRefresh, basiliskRefresh,
@ -448,6 +449,8 @@ class WalletsData extends React.Component {
_amount = _cache && _cache[_coin] && _cache[_coin][address] && _cache[_coin][address].getbalance.data && _cache[_coin][address].getbalance.data.balance ? _cache[_coin][address].getbalance.data.balance : 'N/A'; _amount = _cache && _cache[_coin] && _cache[_coin][address] && _cache[_coin][address].getbalance.data && _cache[_coin][address].getbalance.data.balance ? _cache[_coin][address].getbalance.data.balance : 'N/A';
} }
_amount = formatValue('round', _amount, -6);
items.push( items.push(
<li key={address}> <li key={address}>
<a onClick={ () => this.updateAddressSelection(address, type, _amount) }> <a onClick={ () => this.updateAddressSelection(address, type, _amount) }>
@ -484,7 +487,9 @@ class WalletsData extends React.Component {
return _addresses.public[i].amount; return _addresses.public[i].amount;
} else { } else {
const address = _addresses.public[i].address; const address = _addresses.public[i].address;
const _amount = _cache && _cache[_coin] && _cache[_coin][address] && _cache[_coin][address].getbalance.data && _cache[_coin][address].getbalance.data.balance ? _cache[_coin][address].getbalance.data.balance : 'N/A'; let _amount = _cache && _cache[_coin] && _cache[_coin][address] && _cache[_coin][address].getbalance.data && _cache[_coin][address].getbalance.data.balance ? _cache[_coin][address].getbalance.data.balance : 'N/A';
_amount = formatValue('round', _amount, -6);
return _amount; return _amount;
} }

11
react/src/components/dashboard/walletsData/walletsData.render.js

@ -5,6 +5,8 @@ import WalletsBasiliskConnection from '../walletsBasiliskConnection/walletsBasil
import WalletsNotariesList from '../walletsNotariesList/walletsNotariesList'; import WalletsNotariesList from '../walletsNotariesList/walletsNotariesList';
import WalletsCacheData from '../walletsCacheData/walletsCacheData'; import WalletsCacheData from '../walletsCacheData/walletsCacheData';
import { secondsToString } from '../../../util/time'; import { secondsToString } from '../../../util/time';
import { formatValue } from '../../../util/formatValue';
import Config from '../../../config';
// TODO: clean basilisk dropdown menu // TODO: clean basilisk dropdown menu
@ -87,7 +89,12 @@ export const TxHistoryListRender = function(tx, index) {
} }
<td>{ this.renderTxType(tx.category || tx.type) }</td> <td>{ this.renderTxType(tx.category || tx.type) }</td>
<td>{ tx.confirmations }</td> <td>{ tx.confirmations }</td>
<td>{ tx.amount || translate('DASHBOARD.UNKNOWN') }</td> { Config.roundValues &&
<td title={ tx.amount }>{ formatValue('round', tx.amount, -6) || translate('DASHBOARD.UNKNOWN') }</td>
}
{ !Config.roundValues &&
<td>{ tx.amount || translate('DASHBOARD.UNKNOWN') }</td>
}
<td>{ secondsToString(tx.blocktime || tx.timestamp || tx.time) }</td> <td>{ secondsToString(tx.blocktime || tx.timestamp || tx.time) }</td>
<td className={ this.isFullMode() ? '' : 'hide' }>{ tx.address }</td> <td className={ this.isFullMode() ? '' : 'hide' }>{ tx.address }</td>
<td className={ this.isNativeMode() ? '' : 'hide' }>{ this.renderAddress(tx) }</td> <td className={ this.isNativeMode() ? '' : 'hide' }>{ this.renderAddress(tx) }</td>
@ -144,7 +151,7 @@ export const WalletsDataRender = function() {
<WalletsNotariesList {...this.props} /> <WalletsNotariesList {...this.props} />
<WalletsCacheData {...this.props} /> <WalletsCacheData {...this.props} />
<div id="edexcoin_dashboardinfo"> <div id="edexcoin_dashboardinfo">
<div className="col-xs-12 margin-top-20"> <div className="col-xs-12 margin-top-20 backround-gray">
<div className="panel nav-tabs-horizontal"> <div className="panel nav-tabs-horizontal">
<div> <div>
<div className="col-xlg-12 col-lg-12 col-sm-12 col-xs-12"> <div className="col-xlg-12 col-lg-12 col-sm-12 col-xs-12">

4
react/src/components/dashboard/walletsTxInfo/walletsTxInfo.render.js

@ -1,6 +1,8 @@
import React from 'react'; import React from 'react';
import { translate } from '../../../translate/translate'; import { translate } from '../../../translate/translate';
import { secondsToString } from '../../../util/time'; import { secondsToString } from '../../../util/time';
import { formatValue } from '../../../util/formatValue';
import Config from '../../../config';
const WalletsTxInfoRender = function(txInfo) { const WalletsTxInfoRender = function(txInfo) {
return ( return (
@ -55,7 +57,7 @@ const WalletsTxInfoRender = function(txInfo) {
<tr> <tr>
<td>{ translate('TX_INFO.AMOUNT') }</td> <td>{ translate('TX_INFO.AMOUNT') }</td>
<td> <td>
{ txInfo.amount } { Config.roundValues ? formatValue('round', txInfo.amount, -10) : txInfo.amount }
</td> </td>
</tr> </tr>
<tr> <tr>

26
react/src/components/overrides.scss

@ -615,4 +615,30 @@ select{
margin-left: 10px; margin-left: 10px;
margin-top: -2px; margin-top: -2px;
} }
}
.clipboard-edexaddr {
margin-left: 10px;
}
.coind-down-modal {
.modal-body {
height: 60vh;
> div {
height: 100%;
}
.page-content {
width: 90%;
height: 100%;
textarea {
min-height: 200px;
}
}
}
}
.backround-gray {
background: #f3f4f5;
} }

1
react/src/config.js

@ -12,6 +12,7 @@ let _config = {
default: true default: true
}, },
iguanaLessMode: true, iguanaLessMode: true,
roundValues: true,
}; };
try { try {

9
react/src/reducers/dashboard.js

@ -8,7 +8,8 @@ import {
DASHBOARD_CONNECT_NOTARIES, DASHBOARD_CONNECT_NOTARIES,
VIEW_CACHE_DATA, VIEW_CACHE_DATA,
LOG_GUI_HTTP, LOG_GUI_HTTP,
TOGGLE_NOTIFICATIONS_MODAL TOGGLE_NOTIFICATIONS_MODAL,
DISPLAY_COIND_DOWN_MODAL
} from '../actions/storeType'; } from '../actions/storeType';
const HTTP_STACK_MAX_ENTRIES = 150; // limit stack mem length to N records per type const HTTP_STACK_MAX_ENTRIES = 150; // limit stack mem length to N records per type
@ -36,6 +37,7 @@ export function Dashboard(state = {
failedToConnectNodes: null, failedToConnectNodes: null,
}, },
guiLog: {}, guiLog: {},
displayCoindDownModal: false,
}, action) { }, action) {
switch (action.type) { switch (action.type) {
case DASHBOARD_SECTION_CHANGE: case DASHBOARD_SECTION_CHANGE:
@ -97,6 +99,11 @@ export function Dashboard(state = {
return Object.assign({}, state, { return Object.assign({}, state, {
guiLog: newLogState, guiLog: newLogState,
}); });
case DISPLAY_COIND_DOWN_MODAL:
return Object.assign({}, state, {
displayCoindDownModal: action.displayCoindDownModal,
});
break;
default: default:
return state; return state;
} }

Loading…
Cancel
Save