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 +++++++- teleterm/static/teleterm_web.js | 83 +++++++++++++++++------------------ teleterm/static/teleterm_web_bg.wasm | Bin 688100 -> 687220 bytes 4 files changed, 61 insertions(+), 49 deletions(-) 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] } diff --git a/teleterm/static/teleterm_web.js b/teleterm/static/teleterm_web.js index 4b6e536..593d5a8 100644 --- a/teleterm/static/teleterm_web.js +++ b/teleterm/static/teleterm_web.js @@ -1,10 +1,6 @@ let wasm; -function __wbg_elem_binding0(arg0, arg1) { - wasm.__wbg_function_table.get(222)(arg0, arg1); -} - const heap = new Array(32); heap.fill(undefined); @@ -21,29 +17,32 @@ function addHeapObject(obj) { heap[idx] = obj; return idx; } -function __wbg_elem_binding1(arg0, arg1, arg2) { - wasm.__wbg_function_table.get(55)(arg0, arg1, addHeapObject(arg2)); +function __wbg_elem_binding0(arg0, arg1, arg2) { + wasm.__wbg_function_table.get(290)(arg0, arg1, addHeapObject(arg2)); +} +function __wbg_elem_binding1(arg0, arg1) { + wasm.__wbg_function_table.get(220)(arg0, arg1); } function __wbg_elem_binding2(arg0, arg1, arg2) { - wasm.__wbg_function_table.get(292)(arg0, arg1, addHeapObject(arg2)); + wasm.__wbg_function_table.get(72)(arg0, arg1, addHeapObject(arg2)); } function __wbg_elem_binding3(arg0, arg1, arg2) { - wasm.__wbg_function_table.get(55)(arg0, arg1, addHeapObject(arg2)); + wasm.__wbg_function_table.get(72)(arg0, arg1, addHeapObject(arg2)); } function __wbg_elem_binding4(arg0, arg1, arg2) { - wasm.__wbg_function_table.get(55)(arg0, arg1, addHeapObject(arg2)); + wasm.__wbg_function_table.get(76)(arg0, arg1, arg2); } function __wbg_elem_binding5(arg0, arg1, arg2) { - wasm.__wbg_function_table.get(55)(arg0, arg1, addHeapObject(arg2)); + wasm.__wbg_function_table.get(72)(arg0, arg1, addHeapObject(arg2)); } function __wbg_elem_binding6(arg0, arg1, arg2) { - wasm.__wbg_function_table.get(59)(arg0, arg1, arg2); + wasm.__wbg_function_table.get(72)(arg0, arg1, addHeapObject(arg2)); } function __wbg_elem_binding7(arg0, arg1, arg2, arg3, arg4) { - wasm.__wbg_function_table.get(319)(arg0, arg1, addHeapObject(arg2), arg3, addHeapObject(arg4)); + wasm.__wbg_function_table.get(317)(arg0, arg1, addHeapObject(arg2), arg3, addHeapObject(arg4)); } function __wbg_elem_binding8(arg0, arg1, arg2, arg3) { - wasm.__wbg_function_table.get(323)(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3)); + wasm.__wbg_function_table.get(321)(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3)); } /** */ @@ -229,16 +228,13 @@ function init(module) { imports.wbg.__wbindgen_object_drop_ref = function(arg0) { takeObject(arg0); }; - imports.wbg.__wbindgen_string_new = function(arg0, arg1) { - const ret = getStringFromWasm(arg0, arg1); - return addHeapObject(ret); - }; imports.wbg.__wbindgen_object_clone_ref = function(arg0) { const ret = getObject(arg0); return addHeapObject(ret); }; - imports.wbg.__wbindgen_cb_forget = function(arg0) { - takeObject(arg0); + imports.wbg.__wbindgen_string_new = function(arg0, arg1) { + const ret = getStringFromWasm(arg0, arg1); + return addHeapObject(ret); }; imports.wbg.__wbindgen_cb_drop = function(arg0) { const obj = takeObject(arg0).original; @@ -249,6 +245,9 @@ function init(module) { const ret = false; return ret; }; + imports.wbg.__wbindgen_cb_forget = function(arg0) { + takeObject(arg0); + }; imports.wbg.__wbindgen_json_parse = function(arg0, arg1) { const ret = JSON.parse(getStringFromWasm(arg0, arg1)); return addHeapObject(ret); @@ -885,16 +884,16 @@ function init(module) { imports.wbg.__wbindgen_throw = function(arg0, arg1) { throw new Error(getStringFromWasm(arg0, arg1)); }; - imports.wbg.__wbindgen_closure_wrapper249 = function(arg0, arg1, arg2) { + imports.wbg.__wbindgen_closure_wrapper294 = function(arg0, arg1, arg2) { const state = { a: arg0, b: arg1, cnt: 1 }; const real = (arg0) => { state.cnt++; const a = state.a; state.a = 0; try { - return __wbg_elem_binding1(a, state.b, arg0); + return __wbg_elem_binding2(a, state.b, arg0); } finally { - if (--state.cnt === 0) wasm.__wbg_function_table.get(56)(a, state.b); + if (--state.cnt === 0) wasm.__wbg_function_table.get(73)(a, state.b); else state.a = a; } } @@ -903,16 +902,16 @@ function init(module) { const ret = real; return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper243 = function(arg0, arg1, arg2) { + imports.wbg.__wbindgen_closure_wrapper1041 = function(arg0, arg1, arg2) { const state = { a: arg0, b: arg1, cnt: 1 }; const real = (arg0) => { state.cnt++; const a = state.a; state.a = 0; try { - return __wbg_elem_binding6(a, state.b, arg0); + return __wbg_elem_binding0(a, state.b, arg0); } finally { - if (--state.cnt === 0) wasm.__wbg_function_table.get(56)(a, state.b); + if (--state.cnt === 0) wasm.__wbg_function_table.get(291)(a, state.b); else state.a = a; } } @@ -921,16 +920,16 @@ function init(module) { const ret = real; return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper241 = function(arg0, arg1, arg2) { + imports.wbg.__wbindgen_closure_wrapper292 = function(arg0, arg1, arg2) { const state = { a: arg0, b: arg1, cnt: 1 }; const real = (arg0) => { state.cnt++; const a = state.a; state.a = 0; try { - return __wbg_elem_binding5(a, state.b, arg0); + return __wbg_elem_binding6(a, state.b, arg0); } finally { - if (--state.cnt === 0) wasm.__wbg_function_table.get(56)(a, state.b); + if (--state.cnt === 0) wasm.__wbg_function_table.get(73)(a, state.b); else state.a = a; } } @@ -939,16 +938,16 @@ function init(module) { const ret = real; return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper631 = function(arg0, arg1, arg2) { + imports.wbg.__wbindgen_closure_wrapper288 = function(arg0, arg1, arg2) { const state = { a: arg0, b: arg1, cnt: 1 }; - const real = () => { + const real = (arg0) => { state.cnt++; const a = state.a; state.a = 0; try { - return __wbg_elem_binding0(a, state.b, ); + return __wbg_elem_binding3(a, state.b, arg0); } finally { - if (--state.cnt === 0) wasm.__wbg_function_table.get(223)(a, state.b); + if (--state.cnt === 0) wasm.__wbg_function_table.get(73)(a, state.b); else state.a = a; } } @@ -957,16 +956,16 @@ function init(module) { const ret = real; return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper1042 = function(arg0, arg1, arg2) { + imports.wbg.__wbindgen_closure_wrapper290 = function(arg0, arg1, arg2) { const state = { a: arg0, b: arg1, cnt: 1 }; const real = (arg0) => { state.cnt++; const a = state.a; state.a = 0; try { - return __wbg_elem_binding2(a, state.b, arg0); + return __wbg_elem_binding4(a, state.b, arg0); } finally { - if (--state.cnt === 0) wasm.__wbg_function_table.get(293)(a, state.b); + if (--state.cnt === 0) wasm.__wbg_function_table.get(73)(a, state.b); else state.a = a; } } @@ -975,16 +974,16 @@ function init(module) { const ret = real; return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper247 = function(arg0, arg1, arg2) { + imports.wbg.__wbindgen_closure_wrapper296 = function(arg0, arg1, arg2) { const state = { a: arg0, b: arg1, cnt: 1 }; const real = (arg0) => { state.cnt++; const a = state.a; state.a = 0; try { - return __wbg_elem_binding3(a, state.b, arg0); + return __wbg_elem_binding5(a, state.b, arg0); } finally { - if (--state.cnt === 0) wasm.__wbg_function_table.get(56)(a, state.b); + if (--state.cnt === 0) wasm.__wbg_function_table.get(73)(a, state.b); else state.a = a; } } @@ -993,16 +992,16 @@ function init(module) { const ret = real; return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper245 = function(arg0, arg1, arg2) { + imports.wbg.__wbindgen_closure_wrapper630 = function(arg0, arg1, arg2) { const state = { a: arg0, b: arg1, cnt: 1 }; - const real = (arg0) => { + const real = () => { state.cnt++; const a = state.a; state.a = 0; try { - return __wbg_elem_binding4(a, state.b, arg0); + return __wbg_elem_binding1(a, state.b, ); } finally { - if (--state.cnt === 0) wasm.__wbg_function_table.get(56)(a, state.b); + if (--state.cnt === 0) wasm.__wbg_function_table.get(221)(a, state.b); else state.a = a; } } diff --git a/teleterm/static/teleterm_web_bg.wasm b/teleterm/static/teleterm_web_bg.wasm index 812e8bd..e2b981c 100644 Binary files a/teleterm/static/teleterm_web_bg.wasm and b/teleterm/static/teleterm_web_bg.wasm differ -- cgit v1.2.3-54-g00ecf