ui() bug fix.

get_and_draw_outbound():
    * loop through the slots of every outbound connection, instead of
      just the first value (&connect.outbound[0])
    * recursively initialize and draw new widgets for each node instead
    of writing everything to the same vectors and frame.

get_and_draw_inbound()
    * recursively initialize and draw new widgets for each node instead
    of writing everything to the same vectors and frame.
This commit is contained in:
lunar-mining
2022-03-13 22:20:57 +01:00
parent 33f299f8c6
commit a4f0904e46

View File

@@ -201,39 +201,43 @@ impl NetWidget {
// parse outbound data by creating a text object called Vec<Spans>
// send Vec<Spans> to render_widget()
fn get_and_draw_outbound<B: Backend>(f: &mut Frame<'_, B>, view: View, oframe: NetFrame) {
let mut titles = Vec::new();
let mut msgs = Vec::new();
let mut slots = Vec::new();
let mut data = Vec::new();
titles.push(Spans::from(Span::styled("Outgoing", Style::default())));
data.push("Outgoing".to_string());
for id in &view.id_list.node_id {
let mut titles = Vec::new();
let mut msgs = Vec::new();
let mut slots = Vec::new();
let mut data = Vec::new();
titles.push(Spans::from(Span::styled("Outgoing", Style::default())));
data.push("Outgoing".to_string());
//debug!("Looping through nodes: {}", id);
match &view.info_list.infos.get(id) {
Some(connects) => {
// there is only a single outbound connection so this works
// this is probably a bug lol
for slot in &connects.outbound[0].slots {
if slot.addr.is_empty() {
slots.push(Spans::from(format!("Empty")));
data.push("empty".to_string());
} else {
slots.push(Spans::from(format!("{}", slot.addr)));
data.push(format!("{}", slot.addr));
}
match slot.channel.last_status.as_str() {
"recv" => {
msgs.push(Spans::from(format!("[R: {}]", slot.channel.last_msg)));
data.push(format!("{}", slot.channel.last_msg));
Some(node) => {
for outbound in &node.outbound.clone() {
for slot in outbound.slots.clone() {
if slot.addr.is_empty() {
slots.push(Spans::from(format!("Empty")));
data.push("empty".to_string());
} else {
slots.push(Spans::from(format!("{}", slot.addr)));
data.push(format!("{}", slot.addr));
}
"sent" => {
msgs.push(Spans::from(format!("[S: {}]", slot.channel.last_msg)));
data.push(format!("{}", slot.channel.last_msg));
}
e => {
//debug!("data getting lost {}", e);
// TODO: right now we do nothing with these values
debug!("last status: {}", slot.channel.last_status.as_str());
match slot.channel.last_status.as_str() {
"recv" => {
msgs.push(Spans::from(format!("[R: {}]", slot.channel.last_msg)));
data.push(format!("{}", slot.channel.last_msg));
}
"sent" => {
msgs.push(Spans::from(format!("[S: {}]", slot.channel.last_msg)));
data.push(format!("{}", slot.channel.last_msg));
}
"Null" => {
data.push("Null".to_string());
}
_ => {
// TODO
debug!("This is a bug");
}
}
}
}
@@ -243,20 +247,19 @@ fn get_and_draw_outbound<B: Backend>(f: &mut Frame<'_, B>, view: View, oframe: N
// TODO: Error
}
}
debug!("{:?}", data);
oframe.title.clone().draw(titles.clone(), f);
let t_len2 = titles.clone().len();
oframe.title.clone().update(t_len2);
oframe.addrs.clone().draw(slots.clone(), f);
let s_len2 = slots.clone().len();
oframe.addrs.clone().update(s_len2);
oframe.msgs.clone().draw(msgs.clone(), f);
let m_len2 = msgs.clone().len();
oframe.msgs.clone().update(m_len2);
}
//debug!("{:?}", data);
oframe.title.clone().draw(titles.clone(), f);
let t_len2 = titles.clone().len();
oframe.title.clone().update(t_len2);
oframe.addrs.clone().draw(slots.clone(), f);
let s_len2 = slots.clone().len();
oframe.addrs.clone().update(s_len2);
oframe.msgs.clone().draw(msgs.clone(), f);
let m_len2 = msgs.clone().len();
oframe.msgs.clone().update(m_len2);
}
fn print_type_of<T>(_: &T) {
@@ -272,18 +275,19 @@ fn get_and_draw_inbound<B: Backend>(
outframe: NetFrame,
) {
let slots_len = outframe.addrs.get_len();
let mut titles = Vec::new();
let mut addrs = Vec::new();
let mut msgs = Vec::new();
let mut data = Vec::new();
// need to have access to slots_len
for _i in 1..slots_len {
titles.push(Spans::from(""));
}
titles.push(Spans::from(Span::styled("Incoming", Style::default())));
data.push("Incoming".to_string());
for id in &view.id_list.node_id {
// create a new data thing
let mut titles = Vec::new();
let mut addrs = Vec::new();
let mut msgs = Vec::new();
let mut data = Vec::new();
// need to have access to slots_len
for _i in 1..slots_len {
titles.push(Spans::from(""));
}
titles.push(Spans::from(Span::styled("Incoming", Style::default())));
data.push("Incoming".to_string());
//debug!("Looping through nodes: {}", id);
match &view.info_list.infos.get(id) {
Some(node) => {
@@ -318,20 +322,17 @@ fn get_and_draw_inbound<B: Backend>(
// This should never happen. TODO: make this an error.
}
}
debug!("{:?}", data);
iframe.title.clone().draw(titles.clone(), f);
let t_len2 = titles.clone().len();
iframe.title.clone().update(t_len2);
iframe.addrs.clone().draw(addrs.clone(), f);
let s_len2 = addrs.clone().len();
iframe.addrs.clone().update(s_len2);
iframe.msgs.clone().draw(msgs.clone(), f);
let m_len2 = msgs.clone().len();
iframe.msgs.clone().update(m_len2);
}
//debug!("{:?}", data);
iframe.title.clone().draw(titles.clone(), f);
let t_len2 = titles.clone().len();
iframe.title.clone().update(t_len2);
iframe.addrs.clone().draw(addrs.clone(), f);
let s_len2 = addrs.clone().len();
iframe.addrs.clone().update(s_len2);
iframe.msgs.clone().draw(msgs.clone(), f);
let m_len2 = msgs.clone().len();
iframe.msgs.clone().update(m_len2);
}
fn draw_manual<B: Backend>(f: &mut Frame<'_, B>, view: View, mframe: NetFrame) {