import React, {Component} from "react"; import {Col, Container, Navbar, Row} from "react-bootstrap"; import HCard from "./HCard"; import RPlot from "./RPlot"; import {FirstConnectMessage, NewEventMessage, NewTickMessage, PositionState, socket} from "../"; import {PositionTable} from "./Tables"; import {EventData, Events} from "./Events"; type AppState = { current_price: number, current_tick: number, last_update: Date, positions: Array, events: Array } let event_id = 0; class App extends Component<{}, AppState> { state = { current_price: 0, current_tick: 0, last_update: new Date(), positions: [], events: [] } constructor(props) { super(props) } componentDidMount() { console.log(this) socket.on("first_connect", (data: FirstConnectMessage) => { this.setState({ current_price: data.prices[data.prices.length - 1], current_tick: data.ticks[data.ticks.length - 1], last_update: new Date(), positions: data.positions }) }) socket.on("new_tick", (data: NewTickMessage) => { this.setState({ current_price: data.price, current_tick: data.tick, last_update: new Date(), positions: data.positions, }) }) socket.on("new_event", (data: NewEventMessage) => { // ignore new tick if (!data.kind.toLowerCase().includes("new_tick")) { const new_event: EventData = { id: event_id, name: data.kind, tick: data.tick } event_id += 1 this.setState({ events: [...this.state.events, new_event] }) } }) } render() { return (
Rustico - BfxBot {/* Toolbar column */} {this.state.positions.length > 0 ? : null} {this.state.events.length > 0 ? : null} {/* Graph column */}
) } } export default App;