mirror of
https://github.com/c9s/bbgo.git
synced 2024-11-26 08:45:16 +00:00
Merge pull request #715 from c9s/yc/on-demand-sync-button
feature: on demand sync button
This commit is contained in:
commit
ea88e84445
|
@ -10,13 +10,21 @@ export function ping(cb) {
|
||||||
}
|
}
|
||||||
|
|
||||||
export function queryOutboundIP(cb) {
|
export function queryOutboundIP(cb) {
|
||||||
return axios.get(baseURL + '/api/outbound-ip').then((response) => {
|
return axios.get<any>(baseURL + '/api/outbound-ip').then((response) => {
|
||||||
cb(response.data.outboundIP);
|
cb(response.data.outboundIP);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const triggerSync = async () => {
|
||||||
|
return axios.post<any>(baseURL + '/api/environment/sync');
|
||||||
|
};
|
||||||
|
|
||||||
|
export { triggerSync };
|
||||||
|
|
||||||
export function querySyncStatus(cb) {
|
export function querySyncStatus(cb) {
|
||||||
return axios.get(baseURL + '/api/environment/syncing').then((response) => {
|
return axios
|
||||||
|
.get<any>(baseURL + '/api/environment/syncing')
|
||||||
|
.then((response) => {
|
||||||
cb(response.data.syncing);
|
cb(response.data.syncing);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -73,48 +81,50 @@ export function testSessionConnection(session, cb) {
|
||||||
}
|
}
|
||||||
|
|
||||||
export function queryStrategies(cb) {
|
export function queryStrategies(cb) {
|
||||||
return axios.get(baseURL + '/api/strategies/single').then((response) => {
|
return axios.get<any>(baseURL + '/api/strategies/single').then((response) => {
|
||||||
cb(response.data.strategies || []);
|
cb(response.data.strategies || []);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function querySessions(cb) {
|
export function querySessions(cb) {
|
||||||
return axios.get(baseURL + '/api/sessions', {}).then((response) => {
|
return axios.get<any>(baseURL + '/api/sessions', {}).then((response) => {
|
||||||
cb(response.data.sessions || []);
|
cb(response.data.sessions || []);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function querySessionSymbols(sessionName, cb) {
|
export function querySessionSymbols(sessionName, cb) {
|
||||||
return axios
|
return axios
|
||||||
.get(baseURL + `/api/sessions/${sessionName}/symbols`, {})
|
.get<any>(baseURL + `/api/sessions/${sessionName}/symbols`, {})
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
cb(response.data.symbols || []);
|
cb(response.data?.symbols || []);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function queryTrades(params, cb) {
|
export function queryTrades(params, cb) {
|
||||||
axios.get(baseURL + '/api/trades', { params: params }).then((response) => {
|
axios
|
||||||
|
.get<any>(baseURL + '/api/trades', { params: params })
|
||||||
|
.then((response) => {
|
||||||
cb(response.data.trades || []);
|
cb(response.data.trades || []);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function queryClosedOrders(params, cb) {
|
export function queryClosedOrders(params, cb) {
|
||||||
axios
|
axios
|
||||||
.get(baseURL + '/api/orders/closed', { params: params })
|
.get<any>(baseURL + '/api/orders/closed', { params: params })
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
cb(response.data.orders || []);
|
cb(response.data.orders || []);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function queryAssets(cb) {
|
export function queryAssets(cb) {
|
||||||
axios.get(baseURL + '/api/assets', {}).then((response) => {
|
axios.get<any>(baseURL + '/api/assets', {}).then((response) => {
|
||||||
cb(response.data.assets || []);
|
cb(response.data.assets || []);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function queryTradingVolume(params, cb) {
|
export function queryTradingVolume(params, cb) {
|
||||||
axios
|
axios
|
||||||
.get(baseURL + '/api/trading-volume', { params: params })
|
.get<any>(baseURL + '/api/trading-volume', { params: params })
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
cb(response.data.tradingVolumes || []);
|
cb(response.data.tradingVolumes || []);
|
||||||
});
|
});
|
|
@ -1,6 +1,6 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
import { makeStyles } from '@mui/styles';
|
import { makeStyles, styled } from '@mui/styles';
|
||||||
import AppBar from '@mui/material/AppBar';
|
import AppBar from '@mui/material/AppBar';
|
||||||
import Toolbar from '@mui/material/Toolbar';
|
import Toolbar from '@mui/material/Toolbar';
|
||||||
import Typography from '@mui/material/Typography';
|
import Typography from '@mui/material/Typography';
|
||||||
|
@ -9,6 +9,9 @@ import Container from '@mui/material/Container';
|
||||||
import SideBar from '../components/SideBar';
|
import SideBar from '../components/SideBar';
|
||||||
|
|
||||||
import ConnectWallet from '../components/ConnectWallet';
|
import ConnectWallet from '../components/ConnectWallet';
|
||||||
|
import { Box } from '@mui/material';
|
||||||
|
import { throttle } from '../src/utils';
|
||||||
|
import { triggerSync } from '../api/bbgo';
|
||||||
|
|
||||||
const useStyles = makeStyles((theme) => ({
|
const useStyles = makeStyles((theme) => ({
|
||||||
root: {
|
root: {
|
||||||
|
@ -30,6 +33,18 @@ const useStyles = makeStyles((theme) => ({
|
||||||
},
|
},
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
const ToolbarButton = styled('button')(({ theme }) => ({
|
||||||
|
padding: theme.spacing(1),
|
||||||
|
}));
|
||||||
|
|
||||||
|
function SyncButton() {
|
||||||
|
const handleClick = throttle(async () => {
|
||||||
|
await triggerSync();
|
||||||
|
}, 2000);
|
||||||
|
|
||||||
|
return <ToolbarButton onClick={handleClick}>Sync</ToolbarButton>;
|
||||||
|
}
|
||||||
|
|
||||||
export default function DashboardLayout({ children }) {
|
export default function DashboardLayout({ children }) {
|
||||||
const classes = useStyles();
|
const classes = useStyles();
|
||||||
|
|
||||||
|
@ -40,7 +55,8 @@ export default function DashboardLayout({ children }) {
|
||||||
<Typography variant="h6" className={classes.title}>
|
<Typography variant="h6" className={classes.title}>
|
||||||
BBGO
|
BBGO
|
||||||
</Typography>
|
</Typography>
|
||||||
{/* <Button color="inherit">Login</Button> */}
|
<Box sx={{ flexGrow: 1 }} />
|
||||||
|
<SyncButton />
|
||||||
<ConnectWallet />
|
<ConnectWallet />
|
||||||
</Toolbar>
|
</Toolbar>
|
||||||
</AppBar>
|
</AppBar>
|
||||||
|
|
|
@ -24,3 +24,14 @@ export function currencyColor(currency) {
|
||||||
return '#4A7DED';
|
return '#4A7DED';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function throttle(fn, delayMillis) {
|
||||||
|
let permitted = true;
|
||||||
|
return () => {
|
||||||
|
if (permitted) {
|
||||||
|
fn.apply(this, arguments);
|
||||||
|
permitted = false;
|
||||||
|
setTimeout(() => (permitted = true), delayMillis);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user