aboutsummaryrefslogtreecommitdiffstats
path: root/teleterm-web/src
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-11-22 11:07:25 -0500
committerJesse Luehrs <doy@tozt.net>2019-11-22 11:07:45 -0500
commit365988f9df0c9f1c7d1e297012351efbc1bce8b4 (patch)
tree1fb87427432b072213d53bf343cf7c478f39cc1d /teleterm-web/src
parenta9248f4a43b101245816c2c7e403774cd375a98b (diff)
downloadteleterm-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.rs15
-rw-r--r--teleterm-web/src/model.rs4
-rw-r--r--teleterm-web/src/prelude.rs2
-rw-r--r--teleterm-web/src/views.rs3
-rw-r--r--teleterm-web/src/views/list.rs18
-rw-r--r--teleterm-web/src/views/page.rs13
-rw-r--r--teleterm-web/src/views/watch.rs5
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()]
+}