diff options
author | Jesse Luehrs <doy@tozt.net> | 2019-11-22 11:07:25 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2019-11-22 11:07:45 -0500 |
commit | 365988f9df0c9f1c7d1e297012351efbc1bce8b4 (patch) | |
tree | 1fb87427432b072213d53bf343cf7c478f39cc1d /teleterm-web/src | |
parent | a9248f4a43b101245816c2c7e403774cd375a98b (diff) | |
download | teleterm-365988f9df0c9f1c7d1e297012351efbc1bce8b4.tar.gz teleterm-365988f9df0c9f1c7d1e297012351efbc1bce8b4.zip |
move views out into separate modules
Diffstat (limited to 'teleterm-web/src')
-rw-r--r-- | teleterm-web/src/lib.rs | 15 | ||||
-rw-r--r-- | teleterm-web/src/model.rs | 4 | ||||
-rw-r--r-- | teleterm-web/src/prelude.rs | 2 | ||||
-rw-r--r-- | teleterm-web/src/views.rs | 3 | ||||
-rw-r--r-- | teleterm-web/src/views/list.rs | 18 | ||||
-rw-r--r-- | teleterm-web/src/views/page.rs | 13 | ||||
-rw-r--r-- | teleterm-web/src/views/watch.rs | 5 |
7 files changed, 46 insertions, 14 deletions
diff --git a/teleterm-web/src/lib.rs b/teleterm-web/src/lib.rs index 5dd5a33..118ab2f 100644 --- a/teleterm-web/src/lib.rs +++ b/teleterm-web/src/lib.rs @@ -1,6 +1,7 @@ mod model; mod prelude; mod protocol; +mod views; mod ws; use crate::prelude::*; @@ -72,19 +73,7 @@ fn update( fn view(model: &crate::model::Model) -> impl View<Msg> { log::trace!("view"); - let mut list = vec![]; - for session in model.sessions() { - list.push(seed::li![seed::button![ - simple_ev(Ev::Click, Msg::StartWatching(session.id.clone())), - format!("{}: {}", session.username, session.id), - ]]); - } - vec![ - seed::h1!["it's a seed app"], - seed::ul![list], - seed::button![simple_ev(Ev::Click, Msg::Refresh), "refresh"], - seed::pre![model.screen()], - ] + crate::views::page::render(model) } #[wasm_bindgen(start)] diff --git a/teleterm-web/src/model.rs b/teleterm-web/src/model.rs index c3428e1..f83036b 100644 --- a/teleterm-web/src/model.rs +++ b/teleterm-web/src/model.rs @@ -56,6 +56,10 @@ impl Model { self.sessions = sessions; } + pub fn watching(&self) -> bool { + self.watch_conn.is_some() + } + pub fn process(&mut self, bytes: &[u8]) { if let Some(conn) = &mut self.watch_conn { conn.term.process(bytes); diff --git a/teleterm-web/src/prelude.rs b/teleterm-web/src/prelude.rs index 369318c..afab8ab 100644 --- a/teleterm-web/src/prelude.rs +++ b/teleterm-web/src/prelude.rs @@ -1,2 +1,2 @@ pub use seed::prelude::*; -pub use web_sys::*; +pub use web_sys::{ErrorEvent, MessageEvent, WebSocket}; diff --git a/teleterm-web/src/views.rs b/teleterm-web/src/views.rs new file mode 100644 index 0000000..c26a877 --- /dev/null +++ b/teleterm-web/src/views.rs @@ -0,0 +1,3 @@ +pub mod list; +pub mod page; +pub mod watch; diff --git a/teleterm-web/src/views/list.rs b/teleterm-web/src/views/list.rs new file mode 100644 index 0000000..75fddf2 --- /dev/null +++ b/teleterm-web/src/views/list.rs @@ -0,0 +1,18 @@ +use crate::prelude::*; + +pub(crate) fn render(model: &crate::model::Model) -> Vec<Node<crate::Msg>> { + let mut list = vec![]; + for session in model.sessions() { + list.push(seed::li![seed::button![ + simple_ev( + Ev::Click, + crate::Msg::StartWatching(session.id.clone()) + ), + format!("{}: {}", session.username, session.id), + ]]); + } + vec![ + seed::ul![list], + seed::button![simple_ev(Ev::Click, crate::Msg::Refresh), "refresh"], + ] +} diff --git a/teleterm-web/src/views/page.rs b/teleterm-web/src/views/page.rs new file mode 100644 index 0000000..6f459da --- /dev/null +++ b/teleterm-web/src/views/page.rs @@ -0,0 +1,13 @@ +use crate::prelude::*; + +pub(crate) fn render(model: &crate::model::Model) -> Vec<Node<crate::Msg>> { + let mut view = vec![seed::h1!["teleterm"]]; + + if model.watching() { + view.push(super::watch::render(model)) + } else { + view.extend(super::list::render(model)) + } + + view +} diff --git a/teleterm-web/src/views/watch.rs b/teleterm-web/src/views/watch.rs new file mode 100644 index 0000000..a589596 --- /dev/null +++ b/teleterm-web/src/views/watch.rs @@ -0,0 +1,5 @@ +use crate::prelude::*; + +pub(crate) fn render(model: &crate::model::Model) -> Node<crate::Msg> { + seed::pre![model.screen()] +} |