X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=cmd%2Fweb%2Fjs%2Fpoloniex.jsx;h=b28bc26a7b39f4dd78c252aa804573b5c89766fb;hb=refs%2Ftags%2Fv0.0.12;hp=a5fb9a74d49bb3ac45b933c088bb184c18038e75;hpb=adf936f66a5c59e6cc2e7a1c644148e0f119e5c8;p=perso%2FImmae%2FProjets%2FCryptomonnaies%2FCryptoportfolio%2FFront.git diff --git a/cmd/web/js/poloniex.jsx b/cmd/web/js/poloniex.jsx index a5fb9a7..b28bc26 100644 --- a/cmd/web/js/poloniex.jsx +++ b/cmd/web/js/poloniex.jsx @@ -1,63 +1,47 @@ import Api from './api.js'; -import classNames from 'classnames'; import React from 'react'; +import {PFBalance, Assets} from './balance.js'; class PoloniexController extends React.Component { constructor(props) { super(props); - this.state = {'apiKey': '', 'apiSecret': '', 'apiRequested': false, 'flag': 'loading', 'valueCurrency': null, 'balanceValue': null, 'balance': null}; + this.state = {'flag': 'loading', 'periodStart': null, 'variationP': null, 'balance': null, 'balances': null}; } - handleCredentialsChange = (key, secret) => { - this.setState({'apiKey': key, 'apiSecret': secret}); - } - - handleCredentialsSubmit = () => { - if (!this.state.apiKey || !this.state.apiSecret) { - return; - } - Api.Call('UPDATE_MARKET', {'key': this.state.apiKey, 'secret': this.state.apiSecret, 'name': 'poloniex'}, function(err, status, data) { + testCredentials = () => { + Api.Call('MARKET_TEST_CREDENTIALS', {'name': 'poloniex'}, function(err, status, data) { if (err) { console.error(err, data); + if (err.code === 'invalid_market_credentials') { + this.setState({'flag': 'invalidCredentials', 'variationP': null, 'balance': null, 'balances': null, 'periodStart': null}); + } else if (err.code === 'ip_restricted_api_key') { + this.setState({'flag': 'ipRestricted', 'variationP': null, 'balance': null, 'balances': null, 'periodStart': null}); + } else if (err.code === 'market_credentials_not_configured') { + this.setState({'flag': 'emptyCredentials'}); + } return; } - this.setState({'flag': 'loading', 'valueCurrency': null, 'balanceValue': null, 'balance': null}); - this.loadBalance(); + this.loadPortfolio(); }.bind(this)); } - loadBalance = () => { - Api.Call('MARKET_BALANCE', {'name': 'poloniex', 'currency': 'BTC'}, function(err, status, data) { + loadPortfolio = () => { + Api.Call('MARKET_GET_PORTFOLIO', {'name': 'poloniex'}, function(err, status, data) { if (err) { console.error(err, data); - if (err.code === 'invalid_market_credentials') { - this.setState({'flag': 'invalidCredentials', 'valueCurrency': null, 'balanceValue': null, 'balance': null}); + if (err.code === 'not_found') { + this.setState({'flag': 'noReport', 'variationP': null, 'balance': null, 'balances': null, 'periodStart': null}); } return; } - this.setState({'flag': 'ok', 'valueCurrency': data.valueCurrency, 'balanceValue': data.value, 'balance': data.balance}); + this.setState({'flag': 'ok', 'variationP': data.performance.variationP, 'balance': data.value, 'balances': data.balances, 'periodStart': data.periodStart}); }.bind(this)); } componentDidMount = () => { - Api.Call('MARKET', {'name': 'poloniex'}, function(err, status, data) { - this.setState({'apiRequested': true}); - if (err) { - console.error(err, data); - return; - } - - var flag = this.state.flag; - if (!data.key || !data.secret) { - flag = 'emptyCredentials'; - } else { - this.loadBalance(); - } - - this.setState({'apiKey': data.key, 'apiSecret': data.secret, 'flag': flag}); - }.bind(this)); + this.testCredentials(); } render = () => { @@ -66,133 +50,83 @@ class PoloniexController extends React.Component { case 'loading': displayText = 'Loading data from poloniex...'; break; - case 'invalidCredentials': - displayText = 'Invalid poloniex credentials'; + case 'noReport': + displayText = 'Your account is setup ! Reporting will start next Monday !'; break; + case 'invalidCredentials': + case 'ipRestricted': case 'emptyCredentials': - displayText = 'Please provide poloniex credentials'; + displayText =
Please provide poloniex credentials in Account page.
; break; default: displayText = null; } - if (this.state.apiRequested === false) { - return
; - } return (
-
); } } -class PoloniexBalance extends React.Component { - constructor(props) { - super(props); - this.state = {'hideMsg': true, 'msg': '', 'msgOk': false}; - } - +class Panel extends React.Component { render = () => { - var dashboard = null; - - if (this.props.balanceValue !== null) { - - var balance = Object.keys(this.props.balance).map(function(currency) { - return
{this.props.balance[currency]}
; - }.bind(this)); - - dashboard = -
-
-
- {balance} -
-
-
-
- Balance ({this.props.balanceCurrency}): {this.props.balanceValue} -
-
-
; -} else { - dashboard = -
-
- {this.props.displayText} -
-
; -} + if (this.props.component === null) { + return
; + } return (
-
+
-
Portfolio
+
{this.props.title}

- {dashboard} + {this.props.component}
-
- ); +
); } } -class PoloniexCredentialsForm extends React.Component { - constructor(props) { - super(props); - this.state = {'hideMsg': true, 'msg': '', 'editMode': false, 'msgOk': false}; - } - - handleSubmit = (e) => { - this.props.onCredentialsSubmit(); - this.setState({'editMode': false}); - e.preventDefault(); - } +class PoloniexBalance extends React.Component { - handleApiKeyChange = (event) => { - this.props.onCredentialsChange(event.target.value, this.props.apiSecret); - } + render = () => { + var balancePanel = null; + var assetsPanel = null; + var messagePanel = null; - handleApiSecretChange = (event) => { - this.props.onCredentialsChange(this.props.apiKey, event.target.value); - } + if (this.props.variationP !== null) { + balancePanel = +
+
+ +
+
; - onEditClick = () => { - this.setState({'editMode': true}); - } + assetsPanel = + ; - render = () => { - var submitType = this.state.editMode === true ? 'submit' : 'hidden'; - var buttonDisplay = this.state.editMode === true ? 'none' : 'inline'; - var secretDisplayed = this.state.editMode === true ? this.props.apiSecret : 'XXXXXXX'; - var keyDisplayed = this.state.editMode === true ? this.props.apiKey : 'XXXXXXX'; + } else { + messagePanel = +
+
+ {this.props.displayText} +
+
; + } return ( -
-
- Poloniex credentials -
-
- - - - -
-
-
- ); + + + + + + ); } }