2020-12-14 18:52:43 +00:00
|
|
|
|
import React, {Component} from "react";
|
|
|
|
|
import {Col, Container, Navbar, Row} from "react-bootstrap";
|
2020-12-13 11:27:50 +00:00
|
|
|
|
import HCard from "./HCard";
|
2020-12-13 19:32:33 +00:00
|
|
|
|
import RPlot from "./RPlot";
|
2020-12-14 18:52:43 +00:00
|
|
|
|
import {NewTickData, PositionState, socket} from "../";
|
|
|
|
|
import {PositionTable} from "./Tables";
|
2020-12-14 20:26:14 +00:00
|
|
|
|
import {EventData, Events} from "./Events";
|
2020-12-13 19:32:33 +00:00
|
|
|
|
|
|
|
|
|
type AppState = {
|
|
|
|
|
current_price: number,
|
|
|
|
|
current_tick: number,
|
2020-12-14 14:50:31 +00:00
|
|
|
|
last_update: Date,
|
2020-12-14 20:26:14 +00:00
|
|
|
|
positions: Array<PositionState>,
|
|
|
|
|
events: Array<EventData>
|
2020-12-13 19:32:33 +00:00
|
|
|
|
}
|
2020-12-12 20:18:25 +00:00
|
|
|
|
|
2020-12-14 14:50:31 +00:00
|
|
|
|
|
2020-12-14 18:52:43 +00:00
|
|
|
|
class App extends Component<{}, AppState> {
|
2020-12-13 19:32:33 +00:00
|
|
|
|
state = {
|
|
|
|
|
current_price: 0,
|
|
|
|
|
current_tick: 0,
|
2020-12-14 14:50:31 +00:00
|
|
|
|
last_update: new Date(),
|
2020-12-14 20:26:14 +00:00
|
|
|
|
positions: [],
|
|
|
|
|
events: []
|
2020-12-13 19:32:33 +00:00
|
|
|
|
}
|
|
|
|
|
|
2020-12-14 18:52:43 +00:00
|
|
|
|
constructor(props) {
|
|
|
|
|
super(props)
|
|
|
|
|
}
|
|
|
|
|
|
2020-12-13 19:32:33 +00:00
|
|
|
|
componentDidMount() {
|
|
|
|
|
socket.on("new_tick", (data: NewTickData) => {
|
2020-12-14 20:26:14 +00:00
|
|
|
|
const event: EventData = {name: "New Tick", id: data.tick, tick: data.tick}
|
|
|
|
|
|
2020-12-14 14:50:31 +00:00
|
|
|
|
this.setState({
|
|
|
|
|
current_price: data.price,
|
|
|
|
|
current_tick: data.tick,
|
|
|
|
|
last_update: new Date(),
|
2020-12-14 20:26:14 +00:00
|
|
|
|
positions: data.positions,
|
|
|
|
|
events: [...this.state.events, event]
|
2020-12-14 14:50:31 +00:00
|
|
|
|
})
|
2020-12-13 19:32:33 +00:00
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
2020-12-12 20:18:25 +00:00
|
|
|
|
render() {
|
|
|
|
|
return (
|
2020-12-14 13:55:33 +00:00
|
|
|
|
<div className="d-flex flex-fill flex-column">
|
|
|
|
|
<Navbar bg="light" expand="lg" className="border-bottom">
|
2020-12-14 20:26:14 +00:00
|
|
|
|
<Navbar.Brand href="#">Rustico - BfxBot</Navbar.Brand>
|
2020-12-14 13:55:33 +00:00
|
|
|
|
</Navbar>
|
|
|
|
|
|
|
|
|
|
<Container fluid className="mt-2 border flex-fill d-flex">
|
|
|
|
|
<Row className="flex-fill">
|
|
|
|
|
{/* Toolbar column */}
|
2020-12-14 20:26:14 +00:00
|
|
|
|
<Col md={4} lg={4} className="border-right d-flex flex-column">
|
2020-12-14 13:55:33 +00:00
|
|
|
|
<Row className="justify-content-center border-bottom py-2">
|
2020-12-14 18:52:43 +00:00
|
|
|
|
<HCard title="Current tick:" content={String(this.state.current_tick)}
|
|
|
|
|
update={this.state.last_update}/>
|
|
|
|
|
<HCard title="Current price:" content={String(this.state.current_price)}
|
|
|
|
|
update={this.state.last_update}/>
|
2020-12-14 13:55:33 +00:00
|
|
|
|
</Row>
|
2020-12-14 20:26:14 +00:00
|
|
|
|
<Row className={"flex-fill"}>
|
2020-12-14 18:52:43 +00:00
|
|
|
|
<PositionTable/>
|
2020-12-14 14:50:31 +00:00
|
|
|
|
</Row>
|
2020-12-14 20:26:14 +00:00
|
|
|
|
<Row className={"my-2"}>
|
|
|
|
|
<Events events={this.state.events}/>
|
|
|
|
|
</Row>
|
2020-12-14 13:55:33 +00:00
|
|
|
|
</Col>
|
|
|
|
|
|
|
|
|
|
{/* Graph column */}
|
|
|
|
|
<Col md={8} lg={8} className="flex-fill">
|
|
|
|
|
<div className="border-bottom mt-2">
|
|
|
|
|
<h2>Price graph:</h2>
|
|
|
|
|
|
|
|
|
|
</div>
|
2020-12-14 18:52:43 +00:00
|
|
|
|
<RPlot/>
|
2020-12-14 13:55:33 +00:00
|
|
|
|
</Col>
|
|
|
|
|
</Row>
|
|
|
|
|
{/* <Row className="flex-grow-1 border-top border-bottom">
|
|
|
|
|
<RPlot />
|
|
|
|
|
</Row> */}
|
2020-12-14 18:52:43 +00:00
|
|
|
|
</Container>
|
2020-12-14 20:26:14 +00:00
|
|
|
|
<footer className="footer py-3 bg-light border-top">
|
2020-12-14 13:55:33 +00:00
|
|
|
|
<Container className="text-center">
|
|
|
|
|
<span className="text-muted">Made with ❤️ by the Pepe</span>
|
|
|
|
|
</Container>
|
|
|
|
|
</footer>
|
|
|
|
|
</div>
|
2020-12-12 20:18:25 +00:00
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default App;
|