From e6b6398033125d2fc6dce32e61458e0724bddb6a Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Fri, 22 Nov 2019 11:47:32 -0500 Subject: start working on watch display --- teleterm-web/src/model.rs | 8 ++------ teleterm-web/src/views/watch.rs | 19 ++++++++++++++++++- 2 files changed, 20 insertions(+), 7 deletions(-) (limited to 'teleterm-web') diff --git a/teleterm-web/src/model.rs b/teleterm-web/src/model.rs index fa0cb63..72ac8c3 100644 --- a/teleterm-web/src/model.rs +++ b/teleterm-web/src/model.rs @@ -67,11 +67,7 @@ impl Model { } } - pub fn screen(&self) -> String { - if let Some(conn) = &self.watch_conn { - conn.term.screen().contents() - } else { - "".to_string() - } + pub fn screen(&self) -> Option<&vt100::Screen> { + self.watch_conn.as_ref().map(|conn| conn.term.screen()) } } diff --git a/teleterm-web/src/views/watch.rs b/teleterm-web/src/views/watch.rs index a589596..07e8244 100644 --- a/teleterm-web/src/views/watch.rs +++ b/teleterm-web/src/views/watch.rs @@ -1,5 +1,22 @@ use crate::prelude::*; pub(crate) fn render(model: &crate::model::Model) -> Node { - seed::pre![model.screen()] + let screen = if let Some(screen) = model.screen() { + screen + } else { + return seed::empty![]; + }; + let (rows, cols) = screen.size(); + + let mut grid = vec![]; + for row_idx in 0..rows { + let mut row = vec![]; + for col_idx in 0..cols { + let cell = screen.cell(row_idx, col_idx).unwrap(); + row.push(seed::div![cell.contents()]) + } + grid.push(seed::div![row]); + } + + seed::div![grid] } -- cgit v1.2.3-54-g00ecf