|
@@ -15,7 +15,7 @@ use crate::{
|
|
|
error::{DnetViewError, DnetViewResult},
|
|
error::{DnetViewError, DnetViewResult},
|
|
|
model::{NodeInfo, SelectableObject},
|
|
model::{NodeInfo, SelectableObject},
|
|
|
};
|
|
};
|
|
|
-//use log::debug;
|
|
|
|
|
|
|
+use log::debug;
|
|
|
|
|
|
|
|
#[derive(Debug)]
|
|
#[derive(Debug)]
|
|
|
pub struct View {
|
|
pub struct View {
|
|
@@ -187,41 +187,48 @@ impl View {
|
|
|
let style = Style::default();
|
|
let style = Style::default();
|
|
|
let mut spans = Vec::new();
|
|
let mut spans = Vec::new();
|
|
|
|
|
|
|
|
- let info = self.selectables.get(&selected);
|
|
|
|
|
|
|
+ if self.selectables.is_empty() {
|
|
|
|
|
+ // we have not received any selectable data
|
|
|
|
|
+ return Ok(())
|
|
|
|
|
+ } else {
|
|
|
|
|
+ let info = self.selectables.get(&selected);
|
|
|
|
|
|
|
|
- match info {
|
|
|
|
|
- Some(SelectableObject::Node(_node)) => {
|
|
|
|
|
- let name_span = Spans::from("Node Info");
|
|
|
|
|
- spans.push(name_span);
|
|
|
|
|
- }
|
|
|
|
|
- Some(SelectableObject::Session(_session)) => {
|
|
|
|
|
- let name_span = Spans::from("Session Info");
|
|
|
|
|
- spans.push(name_span);
|
|
|
|
|
- }
|
|
|
|
|
- Some(SelectableObject::Connect(connect)) => {
|
|
|
|
|
- let log = self.msg_log.get(&connect.id);
|
|
|
|
|
- match log {
|
|
|
|
|
- Some(values) => {
|
|
|
|
|
- for (k, v) in values {
|
|
|
|
|
- match k.as_str() {
|
|
|
|
|
- "send" => {
|
|
|
|
|
- let msg_log =
|
|
|
|
|
- Spans::from(Span::styled(format!("S: {}", v), style));
|
|
|
|
|
- spans.push(msg_log);
|
|
|
|
|
- }
|
|
|
|
|
- "recv" => {
|
|
|
|
|
- let msg_log =
|
|
|
|
|
- Spans::from(Span::styled(format!("R: {}", v), style));
|
|
|
|
|
- spans.push(msg_log);
|
|
|
|
|
|
|
+ match info {
|
|
|
|
|
+ Some(SelectableObject::Node(_node)) => {
|
|
|
|
|
+ let name_span = Spans::from("Node Info");
|
|
|
|
|
+ spans.push(name_span);
|
|
|
|
|
+ }
|
|
|
|
|
+ Some(SelectableObject::Session(_session)) => {
|
|
|
|
|
+ let name_span = Spans::from("Session Info");
|
|
|
|
|
+ spans.push(name_span);
|
|
|
|
|
+ }
|
|
|
|
|
+ Some(SelectableObject::Connect(connect)) => {
|
|
|
|
|
+ let log = self.msg_log.get(&connect.id);
|
|
|
|
|
+ match log {
|
|
|
|
|
+ Some(values) => {
|
|
|
|
|
+ for (k, v) in values {
|
|
|
|
|
+ match k.as_str() {
|
|
|
|
|
+ "send" => {
|
|
|
|
|
+ let msg_log =
|
|
|
|
|
+ Spans::from(Span::styled(format!("S: {}", v), style));
|
|
|
|
|
+ spans.push(msg_log);
|
|
|
|
|
+ }
|
|
|
|
|
+ "recv" => {
|
|
|
|
|
+ let msg_log =
|
|
|
|
|
+ Spans::from(Span::styled(format!("R: {}", v), style));
|
|
|
|
|
+ spans.push(msg_log);
|
|
|
|
|
+ }
|
|
|
|
|
+ data => {
|
|
|
|
|
+ return Err(DnetViewError::UnexpectedData(data.to_string()))
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
- data => return Err(DnetViewError::UnexpectedData(data.to_string())),
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ None => return Err(DnetViewError::CannotFindId),
|
|
|
}
|
|
}
|
|
|
- None => return Err(DnetViewError::CannotFindId),
|
|
|
|
|
}
|
|
}
|
|
|
|
|
+ None => return Err(DnetViewError::NotSelectableObject),
|
|
|
}
|
|
}
|
|
|
- None => return Err(DnetViewError::NotSelectableObject),
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
let graph = Paragraph::new(spans)
|
|
let graph = Paragraph::new(spans)
|