aboutsummaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorjloup <jloup@jloup.work>2018-05-13 23:14:26 +0200
committerjloup <jloup@jloup.work>2018-05-13 23:18:48 +0200
commit2e4885d98ec49203180deb7e4e9148762e4720e7 (patch)
treef018a158d2f39133a21dba899176f6fde606bd92 /cmd
parent6bf174a95ba0f71abf25397316fc101405381cdf (diff)
downloadFront-2e4885d98ec49203180deb7e4e9148762e4720e7.tar.gz
Front-2e4885d98ec49203180deb7e4e9148762e4720e7.tar.zst
Front-2e4885d98ec49203180deb7e4e9148762e4720e7.zip
Admin minimal dashboard.v0.0.14
Diffstat (limited to 'cmd')
-rw-r--r--cmd/app/main.go1
-rw-r--r--cmd/web/js/admin.jsx45
-rw-r--r--cmd/web/js/api.js9
-rw-r--r--cmd/web/js/balance.jsx14
-rw-r--r--cmd/web/js/main.jsx7
5 files changed, 75 insertions, 1 deletions
diff --git a/cmd/app/main.go b/cmd/app/main.go
index 2cf29f9..4405bf1 100644
--- a/cmd/app/main.go
+++ b/cmd/app/main.go
@@ -146,6 +146,7 @@ func main() {
146 "/change-password", 146 "/change-password",
147 "/signout", 147 "/signout",
148 "/me", 148 "/me",
149 "/admin",
149 "/account", 150 "/account",
150 "/otp/enroll", 151 "/otp/enroll",
151 "/otp/validate", 152 "/otp/validate",
diff --git a/cmd/web/js/admin.jsx b/cmd/web/js/admin.jsx
new file mode 100644
index 0000000..81ce15d
--- /dev/null
+++ b/cmd/web/js/admin.jsx
@@ -0,0 +1,45 @@
1import Api from './api.js';
2import React from 'react';
3import {PFBalanceMinimal} from './balance.js';
4import Panel from './panel.js';
5
6class AdminDashboard extends React.Component {
7 constructor(state) {
8 super(state);
9 this.state = {'portfolios': null};
10 }
11
12 load = () => {
13 Api.Call('ADMIN_PORTFOLIOS', {}, function(err, status, data) {
14 if (err) {
15 console.error(err, data);
16 return;
17 }
18
19 this.setState({'portfolios': data});
20 }.bind(this));
21 }
22
23 componentDidMount = () => {
24 this.load();
25 }
26
27 render = () => {
28 if (this.state.portfolios === null) {
29 return <div></div>;
30 }
31 var portfolios = Object.keys(this.state.portfolios).map(function(email) {
32 return <div className="row" key={email}>
33 <div className="col-6"><span>{email}:</span></div>
34 <div className="col-6 text-center">
35 <PFBalanceMinimal variationP={this.state.portfolios[email].performance.variationP} balance={this.state.portfolios[email].value} periodStart={this.state.portfolios[email].periodStart}/>
36 </div>
37 </div>;
38 }.bind(this));
39
40 return <Panel component={<div>{portfolios}</div>} title="Portfolios Overview"/>;
41 }
42
43}
44
45export default AdminDashboard;
diff --git a/cmd/web/js/api.js b/cmd/web/js/api.js
index 63355f0..b626c5f 100644
--- a/cmd/web/js/api.js
+++ b/cmd/web/js/api.js
@@ -142,6 +142,15 @@ var ApiEndpoints = {
142 return '/otp/validate'; 142 return '/otp/validate';
143 } 143 }
144 }, 144 },
145 'ADMIN_PORTFOLIOS': {
146 'type': 'GET',
147 'auth': true,
148 'parameters': [],
149 'buildUrl': function() {
150 return '/admin/portfolios';
151 }
152 },
153
145}; 154};
146 155
147Api.BuildRequest = function(endpointId, params) { 156Api.BuildRequest = function(endpointId, params) {
diff --git a/cmd/web/js/balance.jsx b/cmd/web/js/balance.jsx
index 515a7ed..6217e96 100644
--- a/cmd/web/js/balance.jsx
+++ b/cmd/web/js/balance.jsx
@@ -95,4 +95,16 @@ class PFBalance extends React.Component {
95 } 95 }
96} 96}
97 97
98export {PFBalance, Assets}; 98class PFBalanceMinimal extends React.Component {
99 render = () => {
100 return <React.Fragment>
101 <div className="balance">
102 <div className="col-12">
103 <CurrencyLogo currency="BTC" /> <span><strong>{this.props.balance}</strong> <strong>{formatVariation(this.props.variationP)}</strong></span>
104 </div>
105 </div>
106 </React.Fragment>;
107 }
108}
109
110export {PFBalance, Assets, PFBalanceMinimal};
diff --git a/cmd/web/js/main.jsx b/cmd/web/js/main.jsx
index 7fa2d26..8014377 100644
--- a/cmd/web/js/main.jsx
+++ b/cmd/web/js/main.jsx
@@ -5,6 +5,7 @@ import ChangePasswordForm from './change_password.js';
5import OtpEnrollForm from './otp.js'; 5import OtpEnrollForm from './otp.js';
6import PoloniexController from './poloniex.js'; 6import PoloniexController from './poloniex.js';
7import UserAccount from './account.js'; 7import UserAccount from './account.js';
8import AdminDashboard from './admin.js';
8import App from './app.js'; 9import App from './app.js';
9import Api from './api.js'; 10import Api from './api.js';
10import cookies from './cookies.js'; 11import cookies from './cookies.js';
@@ -101,6 +102,12 @@ App.page('/account', true, function(context) {
101 </div>); 102 </div>);
102}); 103});
103 104
105App.page('/admin', true, function(context) {
106 App.mount(<div>
107 <AdminDashboard/>
108 </div>);
109});
110
104App.page('/not_confirmed', true, function(context) { 111App.page('/not_confirmed', true, function(context) {
105 App.mount(<div> 112 App.mount(<div>
106 <div className="row"> 113 <div className="row">