added types.ts. renamed various type names. added fake currency switch to be implemented
This commit is contained in:
parent
1bc46e421c
commit
3933545a77
@ -2,22 +2,24 @@ import React, {Component} from "react";
|
|||||||
import {Col, Container, Navbar, Row} from "react-bootstrap";
|
import {Col, Container, Navbar, Row} from "react-bootstrap";
|
||||||
import HCard from "./HCard";
|
import HCard from "./HCard";
|
||||||
import RPlot from "./RPlot";
|
import RPlot from "./RPlot";
|
||||||
import {FirstConnectMessage, NewEventMessage, NewTickMessage, PositionState, socket} from "../";
|
|
||||||
import {PositionTable} from "./Tables";
|
import {PositionTable} from "./Tables";
|
||||||
import {EventData, Events} from "./Events";
|
import {EventProp, Events} from "./Events";
|
||||||
import {Helmet} from "react-helmet";
|
import {Helmet} from "react-helmet";
|
||||||
|
import {CurrencyDropdown} from "./Currency";
|
||||||
|
import {FirstConnectMessage, NewEventMessage, NewTickMessage, PositionState} from "../types";
|
||||||
|
import {socket} from "../index";
|
||||||
|
|
||||||
type AppState = {
|
type AppState = {
|
||||||
current_price: number,
|
current_price: number,
|
||||||
current_tick: number,
|
current_tick: number,
|
||||||
last_update: Date,
|
last_update: Date,
|
||||||
positions: Array<PositionState>,
|
positions: Array<PositionState>,
|
||||||
events: Array<EventData>
|
events: Array<EventProp>
|
||||||
}
|
}
|
||||||
|
|
||||||
let event_id = 0;
|
|
||||||
|
|
||||||
class App extends Component<{}, AppState> {
|
class App extends Component<{}, AppState> {
|
||||||
|
event_id = 0;
|
||||||
|
|
||||||
state = {
|
state = {
|
||||||
current_price: 0,
|
current_price: 0,
|
||||||
current_tick: 0,
|
current_tick: 0,
|
||||||
@ -54,13 +56,13 @@ class App extends Component<{}, AppState> {
|
|||||||
socket.on("new_event", (data: NewEventMessage) => {
|
socket.on("new_event", (data: NewEventMessage) => {
|
||||||
// ignore new tick
|
// ignore new tick
|
||||||
if (!data.kind.toLowerCase().includes("new_tick")) {
|
if (!data.kind.toLowerCase().includes("new_tick")) {
|
||||||
const new_event: EventData = {
|
const new_event: EventProp = {
|
||||||
id: event_id,
|
id: this.event_id,
|
||||||
name: data.kind,
|
name: data.kind,
|
||||||
tick: data.tick
|
tick: data.tick
|
||||||
}
|
}
|
||||||
|
|
||||||
event_id += 1
|
this.event_id += 1
|
||||||
|
|
||||||
this.setState({
|
this.setState({
|
||||||
events: [...this.state.events, new_event]
|
events: [...this.state.events, new_event]
|
||||||
@ -76,8 +78,10 @@ class App extends Component<{}, AppState> {
|
|||||||
{/* TODO: fix currency */}
|
{/* TODO: fix currency */}
|
||||||
<title> Rustico - USD {String(this.state.current_price)} </title>
|
<title> Rustico - USD {String(this.state.current_price)} </title>
|
||||||
</Helmet>
|
</Helmet>
|
||||||
|
|
||||||
<Navbar bg="light" expand="lg" className="border-bottom">
|
<Navbar bg="light" expand="lg" className="border-bottom">
|
||||||
<Navbar.Brand href="#">Rustico - BfxBot</Navbar.Brand>
|
<Navbar.Brand href="#" className={"mr-auto"}>Rustico - BfxBot</Navbar.Brand>
|
||||||
|
<CurrencyDropdown active_pair={"BTC/USD"} pairs={["BTC/USD", "XMR/USD"]}/>
|
||||||
</Navbar>
|
</Navbar>
|
||||||
|
|
||||||
<Container fluid className="mt-2 border flex-fill d-flex">
|
<Container fluid className="mt-2 border flex-fill d-flex">
|
||||||
|
@ -2,20 +2,13 @@ import React, {Component} from "react";
|
|||||||
import {Container, ListGroup} from "react-bootstrap";
|
import {Container, ListGroup} from "react-bootstrap";
|
||||||
|
|
||||||
|
|
||||||
export type EventData = {
|
export type EventProp = {
|
||||||
id: number,
|
id: number,
|
||||||
name: string,
|
name: string,
|
||||||
tick: number
|
tick: number
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class Events extends Component<{ events: Array<EventProp> }> {
|
||||||
const testEvent: EventData = {
|
|
||||||
id: 1,
|
|
||||||
name: "Test",
|
|
||||||
tick: 1
|
|
||||||
}
|
|
||||||
|
|
||||||
export class Events extends Component<{ events: Array<EventData> }, { events: Array<EventData> }> {
|
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
super(props);
|
super(props);
|
||||||
}
|
}
|
||||||
@ -25,7 +18,7 @@ export class Events extends Component<{ events: Array<EventData> }, { events: Ar
|
|||||||
}
|
}
|
||||||
|
|
||||||
mapEvents() {
|
mapEvents() {
|
||||||
return this.state.events.map((event: EventData) => {
|
return this.state.events.map((event: EventProp) => {
|
||||||
return (
|
return (
|
||||||
<ListGroup.Item action key={event.id}>
|
<ListGroup.Item action key={event.id}>
|
||||||
{event.name} @ Tick {event.tick}
|
{event.name} @ Tick {event.tick}
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import React, {Component} from "react"
|
import React, {Component} from "react"
|
||||||
import Plot from "react-plotly.js"
|
import Plot from "react-plotly.js"
|
||||||
|
|
||||||
import {NewTickMessage, socket} from '../';
|
import {socket} from '../';
|
||||||
|
import {NewTickMessage} from "../types";
|
||||||
|
|
||||||
|
|
||||||
type FirstConnectData = {
|
type FirstConnectData = {
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
import React, {Component} from "react"
|
import React, {Component} from "react"
|
||||||
import {Badge, Button, Container, Table} from "react-bootstrap"
|
import {Badge, Button, Container, Table} from "react-bootstrap"
|
||||||
import {PositionCloseMessage, PositionState, socket} from '../';
|
import {socket} from '../';
|
||||||
|
import {PositionCloseMessage, PositionProp} from "../types";
|
||||||
|
|
||||||
|
|
||||||
export class PositionTable extends Component<{ positions: Array<PositionState> }> {
|
export class PositionTable extends Component<{ positions: Array<PositionProp> }> {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
super(props)
|
super(props)
|
||||||
}
|
}
|
||||||
@ -32,7 +33,7 @@ export class PositionTable extends Component<{ positions: Array<PositionState> }
|
|||||||
}
|
}
|
||||||
|
|
||||||
tableData() {
|
tableData() {
|
||||||
return this.props.positions.map((position: PositionState) => {
|
return this.props.positions.map((position: PositionProp) => {
|
||||||
let row_bg = "";
|
let row_bg = "";
|
||||||
|
|
||||||
if (!position.state.toLowerCase().includes("break")) {
|
if (!position.state.toLowerCase().includes("break")) {
|
||||||
|
@ -6,39 +6,6 @@ import io from "socket.io-client";
|
|||||||
|
|
||||||
export const socket = io();
|
export const socket = io();
|
||||||
|
|
||||||
|
|
||||||
export type PositionState = {
|
|
||||||
id: number,
|
|
||||||
state: string,
|
|
||||||
base_price: number,
|
|
||||||
amount: number,
|
|
||||||
symbol: string,
|
|
||||||
profit_loss: number,
|
|
||||||
profit_loss_percentage: number
|
|
||||||
}
|
|
||||||
|
|
||||||
export type FirstConnectMessage = {
|
|
||||||
ticks: Array<number>,
|
|
||||||
prices: Array<number>,
|
|
||||||
positions: Array<PositionState>
|
|
||||||
}
|
|
||||||
|
|
||||||
export type NewEventMessage = {
|
|
||||||
tick: number,
|
|
||||||
kind: string,
|
|
||||||
}
|
|
||||||
|
|
||||||
export type NewTickMessage = {
|
|
||||||
tick: number,
|
|
||||||
price: number,
|
|
||||||
positions: Array<PositionState>
|
|
||||||
}
|
|
||||||
|
|
||||||
export type PositionCloseMessage = {
|
|
||||||
message_name: string,
|
|
||||||
position_id: number,
|
|
||||||
}
|
|
||||||
|
|
||||||
socket.on("connect", function () {
|
socket.on("connect", function () {
|
||||||
console.log("Connected!")
|
console.log("Connected!")
|
||||||
})
|
})
|
||||||
|
34
websrc/types.ts
Normal file
34
websrc/types.ts
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
import {EventProp} from "./components/Events";
|
||||||
|
|
||||||
|
export type PositionProp = {
|
||||||
|
id: number,
|
||||||
|
state: string,
|
||||||
|
base_price: number,
|
||||||
|
amount: number,
|
||||||
|
symbol: string,
|
||||||
|
profit_loss: number,
|
||||||
|
profit_loss_percentage: number
|
||||||
|
}
|
||||||
|
|
||||||
|
export type FirstConnectMessage = {
|
||||||
|
ticks: Array<number>,
|
||||||
|
prices: Array<number>,
|
||||||
|
positions: Array<PositionProp>
|
||||||
|
}
|
||||||
|
|
||||||
|
export type NewEventMessage = {
|
||||||
|
tick: number,
|
||||||
|
kind: string,
|
||||||
|
}
|
||||||
|
|
||||||
|
export type NewTickMessage = {
|
||||||
|
tick: number,
|
||||||
|
price: number,
|
||||||
|
positions: Array<PositionProp>
|
||||||
|
}
|
||||||
|
|
||||||
|
export type PositionCloseMessage = {
|
||||||
|
message_name: string,
|
||||||
|
position_id: number,
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user