diff --git a/bin/map/src/id_list.rs b/bin/map/src/id_list.rs index 43333d233..87e27fe1d 100644 --- a/bin/map/src/id_list.rs +++ b/bin/map/src/id_list.rs @@ -5,6 +5,7 @@ use tui::widgets::ListState; #[derive(Clone)] pub struct IdList { pub state: ListState, + // todo: mutex pub node_id: Vec, } diff --git a/bin/map/src/lib.rs b/bin/map/src/lib.rs index 8bb213488..f2031c668 100644 --- a/bin/map/src/lib.rs +++ b/bin/map/src/lib.rs @@ -1,9 +1,9 @@ -pub mod app; pub mod id_list; pub mod info_list; +pub mod model; pub mod node_info; pub mod types; pub mod ui; -pub use app::App; +pub use model::Model; pub use ui::ui; diff --git a/bin/map/src/main.rs b/bin/map/src/main.rs index 27fb96d45..2fe9e9eaf 100644 --- a/bin/map/src/main.rs +++ b/bin/map/src/main.rs @@ -16,7 +16,7 @@ use tui::{ Terminal, }; -use map::{id_list::IdList, info_list::InfoList, node_info::NodeInfo, ui, App}; +use map::{id_list::IdList, info_list::InfoList, node_info::NodeInfo, ui, Model}; struct Map { url: String, @@ -119,8 +119,8 @@ async fn main() -> Result<()> { let id_list = IdList::new(ids); - //let app = Arc::new(App::new(id_list, info_list)); - let app = App::new(id_list, info_list); + //let app = Arc::new(Model::new(id_list, info_list)); + let app = Model::new(id_list, info_list); let nthreads = num_cpus::get(); let (signal, shutdown) = async_channel::unbounded::<()>(); @@ -143,7 +143,7 @@ async fn main() -> Result<()> { result } -async fn run_rpc(ex: Arc>, app: App) -> Result<()> { +async fn run_rpc(ex: Arc>, app: Model) -> Result<()> { let client = Map::new("tcp://127.0.0.1:8000".to_string()); ex.spawn(poll(client, app)).detach(); @@ -151,7 +151,7 @@ async fn run_rpc(ex: Arc>, app: App) -> Result<()> { Ok(()) } -async fn poll(client: Map, _app: App) -> Result<()> { +async fn poll(client: Map, _app: Model) -> Result<()> { loop { let reply = client.get_info().await?; @@ -179,7 +179,7 @@ async fn poll(client: Map, _app: App) -> Result<()> { } } -async fn run_app(terminal: &mut Terminal, mut app: App) -> io::Result<()> { +async fn run_app(terminal: &mut Terminal, mut app: Model) -> io::Result<()> { let mut asi = async_stdin(); terminal.clear()?; diff --git a/bin/map/src/app.rs b/bin/map/src/model.rs similarity index 78% rename from bin/map/src/app.rs rename to bin/map/src/model.rs index 7c7b64898..77d9e33d3 100644 --- a/bin/map/src/app.rs +++ b/bin/map/src/model.rs @@ -8,19 +8,19 @@ use crate::{id_list::IdList, info_list::InfoList, node_info::NodeInfo}; // arc reference #[derive(Clone)] -pub struct App { +pub struct Model { pub id_list: IdList, pub info_list: InfoList, } -impl App { - pub fn new(id_list: IdList, info_list: InfoList) -> App { +impl Model { + pub fn new(id_list: IdList, info_list: InfoList) -> Model { //let infos = Vec::new(); //let ids = Vec::new(); //let info_list = InfoList::new(infos); //let id_list = IdList::new(ids); - App { id_list, info_list } + Model { id_list, info_list } } // TODO: implement this @@ -28,7 +28,7 @@ impl App { // Timer::after(dur).await; //} - pub async fn update(mut self, node_vec: Vec) -> App { + pub async fn update(mut self, node_vec: Vec) -> Model { let ids = vec![node_vec[0].id.clone()]; for id in ids { @@ -42,11 +42,11 @@ impl App { } let info_list = self.info_list; - App { id_list, info_list } + Model { id_list, info_list } } } -//impl Default for App { +//impl Default for Model { // fn default() -> Self { // Self::new() // } diff --git a/bin/map/src/ui.rs b/bin/map/src/ui.rs index 1d16b182c..31607613e 100644 --- a/bin/map/src/ui.rs +++ b/bin/map/src/ui.rs @@ -1,4 +1,4 @@ -use crate::app::App; +use crate::model::Model; use async_std::sync::{Arc, Mutex}; use tui::{ backend::Backend, @@ -9,7 +9,7 @@ use tui::{ Frame, }; -pub fn ui(f: &mut Frame<'_, B>, mut app: App) { +pub fn ui(f: &mut Frame<'_, B>, mut app: Model) { let slice = Layout::default() .direction(Direction::Horizontal) .margin(2) @@ -30,6 +30,7 @@ pub fn ui(f: &mut Frame<'_, B>, mut app: App) { .block(Block::default().borders(Borders::ALL)) .highlight_style(Style::default().fg(Color::LightCyan).add_modifier(Modifier::BOLD)); + // needs to be mutable. could f.render_stateful_widget(nodes, slice[0], &mut app.id_list.state); let index = app.info_list.index; @@ -37,7 +38,7 @@ pub fn ui(f: &mut Frame<'_, B>, mut app: App) { render_info(app, f, index, slice); } -fn render_info(app: App, f: &mut Frame<'_, B>, index: usize, slice: Vec) { +fn render_info(app: Model, f: &mut Frame<'_, B>, index: usize, slice: Vec) { let info = &app.info_list.infos; let id = &info[index].id; let connections = info[index].connections;