Added system
This commit is contained in:
+13
-1
@@ -1,4 +1,4 @@
|
|||||||
use crate::types::{Account, ActivePosition, WatchListItem};
|
use crate::types::{Account, ActivePosition, System, WatchListItem};
|
||||||
|
|
||||||
pub trait Formatted {
|
pub trait Formatted {
|
||||||
fn get_formatted(&self) -> Vec<String>;
|
fn get_formatted(&self) -> Vec<String>;
|
||||||
@@ -55,6 +55,18 @@ impl Formatted for Account {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Formatted for System {
|
||||||
|
fn get_formatted(&self) -> Vec<String> {
|
||||||
|
vec![
|
||||||
|
Property("Feed", format!("{:?}", self.feed)),
|
||||||
|
Property("Exchange", self.exchange.clone()),
|
||||||
|
Property("DEX", self.dex.clone()),
|
||||||
|
Property("Latency", format!("{} ms", self.latency)),
|
||||||
|
]
|
||||||
|
.get_formatted()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Formatted for Property {
|
impl Formatted for Property {
|
||||||
fn get_formatted(&self) -> Vec<String> {
|
fn get_formatted(&self) -> Vec<String> {
|
||||||
vec![format!("\x1b[91m{}\x1b[0m", self.0), self.1.clone()]
|
vec![format!("\x1b[91m{}\x1b[0m", self.0), self.1.clone()]
|
||||||
|
|||||||
+12
-11
@@ -18,7 +18,7 @@ use pulse_ui::{
|
|||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
formatting::{Formatted, apply_padding},
|
formatting::{Formatted, apply_padding},
|
||||||
types::{Account, ActivePosition, WatchListItem},
|
types::{Account, ActivePosition, System, WatchListItem},
|
||||||
};
|
};
|
||||||
|
|
||||||
pub struct PulseTradeApp {
|
pub struct PulseTradeApp {
|
||||||
@@ -26,6 +26,7 @@ pub struct PulseTradeApp {
|
|||||||
watch_list: State<Vec<WatchListItem>>,
|
watch_list: State<Vec<WatchListItem>>,
|
||||||
active_positions: State<Vec<ActivePosition>>,
|
active_positions: State<Vec<ActivePosition>>,
|
||||||
account: State<Account>,
|
account: State<Account>,
|
||||||
|
system: State<System>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl App for PulseTradeApp {
|
impl App for PulseTradeApp {
|
||||||
@@ -178,16 +179,10 @@ impl App for PulseTradeApp {
|
|||||||
),
|
),
|
||||||
(
|
(
|
||||||
LayoutItem::Widget(Size::Flex(1)),
|
LayoutItem::Widget(Size::Flex(1)),
|
||||||
Box::new(
|
Box::new(format![
|
||||||
vec![
|
" SYSTEM\n{}",
|
||||||
" SYSTEM",
|
apply_padding(self.system.lock().await.get_formatted()).join("\n")
|
||||||
" Feed: Connected",
|
]),
|
||||||
" Exchange: Binance",
|
|
||||||
" DEX: DEX SCREENER",
|
|
||||||
" Latency: 18 ms",
|
|
||||||
]
|
|
||||||
.join("\n"),
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
]),
|
]),
|
||||||
);
|
);
|
||||||
@@ -209,6 +204,12 @@ async fn main() {
|
|||||||
realized: 2_182.49,
|
realized: 2_182.49,
|
||||||
margin: 0.0,
|
margin: 0.0,
|
||||||
}),
|
}),
|
||||||
|
system: ctx.use_state(System {
|
||||||
|
feed: types::Feed::Connected,
|
||||||
|
exchange: "Binance".to_string(),
|
||||||
|
dex: "DEX SCREENER".to_string(),
|
||||||
|
latency: 18,
|
||||||
|
}),
|
||||||
})
|
})
|
||||||
.await;
|
.await;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,3 +17,18 @@ pub struct Account {
|
|||||||
pub realized: f64,
|
pub realized: f64,
|
||||||
pub margin: f64,
|
pub margin: f64,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Copy)]
|
||||||
|
pub enum Feed {
|
||||||
|
Connected,
|
||||||
|
Disconnected,
|
||||||
|
Connecting,
|
||||||
|
Failed,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct System {
|
||||||
|
pub feed: Feed,
|
||||||
|
pub exchange: String,
|
||||||
|
pub dex: String,
|
||||||
|
pub latency: u16,
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user