From ffc408d9496b8392579ef2c84db1fe688c55c1d9 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sat, 23 Nov 2019 02:33:22 -0500 Subject: shuffle some of the view structure around --- teleterm-web/src/views.rs | 1 + teleterm-web/src/views/list.rs | 50 +------------------- teleterm-web/src/views/sessions.rs | 55 ++++++++++++++++++++++ teleterm-web/src/views/terminal.rs | 7 +-- teleterm-web/src/views/watch.rs | 6 ++- teleterm/static/teleterm_web.js | 87 +++++++++++++++++------------------ teleterm/static/teleterm_web_bg.wasm | Bin 717549 -> 729758 bytes 7 files changed, 106 insertions(+), 100 deletions(-) create mode 100644 teleterm-web/src/views/sessions.rs diff --git a/teleterm-web/src/views.rs b/teleterm-web/src/views.rs index 738dad7..349a45c 100644 --- a/teleterm-web/src/views.rs +++ b/teleterm-web/src/views.rs @@ -1,4 +1,5 @@ pub(crate) mod list; pub(crate) mod page; +pub(crate) mod sessions; pub(crate) mod terminal; pub(crate) mod watch; diff --git a/teleterm-web/src/views/list.rs b/teleterm-web/src/views/list.rs index 88d8a37..36fcc19 100644 --- a/teleterm-web/src/views/list.rs +++ b/teleterm-web/src/views/list.rs @@ -1,56 +1,8 @@ use crate::prelude::*; pub(crate) fn render(model: &crate::model::Model) -> Vec> { - let rows: Vec<_> = model.sessions().iter().map(row).collect(); vec![ - seed::table![ - seed::attrs! { At::Class => "list" }, - seed::tr![ - seed::th!["username"], - seed::th!["size"], - seed::th!["idle"], - seed::th!["watchers"], - seed::th!["title"], - ], - rows - ], + crate::views::sessions::render(model.sessions()), seed::button![simple_ev(Ev::Click, crate::Msg::Refresh), "refresh"], ] } - -fn row(session: &crate::protocol::Session) -> Node { - seed::tr![ - simple_ev(Ev::Click, crate::Msg::StartWatching(session.id.clone())), - seed::td![ - seed::a![seed::attrs! {At::Href => "#"}, session.username,] - ], - seed::td![format!("{}x{}", session.size.cols, session.size.rows)], - seed::td![format_time(session.idle_time)], - seed::td![format!("{}", session.watchers)], - seed::td![session.title], - ] -} - -// XXX copied from teleterm -fn format_time(dur: u32) -> String { - let secs = dur % 60; - let dur = dur / 60; - if dur == 0 { - return format!("{}s", secs); - } - - let mins = dur % 60; - let dur = dur / 60; - if dur == 0 { - return format!("{}m{:02}s", mins, secs); - } - - let hours = dur % 24; - let dur = dur / 24; - if dur == 0 { - return format!("{}h{:02}m{:02}s", hours, mins, secs); - } - - let days = dur; - format!("{}d{:02}h{:02}m{:02}s", days, hours, mins, secs) -} diff --git a/teleterm-web/src/views/sessions.rs b/teleterm-web/src/views/sessions.rs new file mode 100644 index 0000000..f3eb734 --- /dev/null +++ b/teleterm-web/src/views/sessions.rs @@ -0,0 +1,55 @@ +use crate::prelude::*; + +pub(crate) fn render( + sessions: &[crate::protocol::Session], +) -> Node { + let rows: Vec<_> = sessions.iter().map(row).collect(); + seed::table![ + seed::attrs! { At::Class => "list" }, + seed::tr![ + seed::th!["username"], + seed::th!["size"], + seed::th!["idle"], + seed::th!["watchers"], + seed::th!["title"], + ], + rows + ] +} + +fn row(session: &crate::protocol::Session) -> Node { + seed::tr![ + simple_ev(Ev::Click, crate::Msg::StartWatching(session.id.clone())), + seed::td![ + seed::a![seed::attrs! {At::Href => "#"}, session.username,] + ], + seed::td![format!("{}x{}", session.size.cols, session.size.rows)], + seed::td![format_time(session.idle_time)], + seed::td![format!("{}", session.watchers)], + seed::td![session.title], + ] +} + +// XXX copied from teleterm +fn format_time(dur: u32) -> String { + let secs = dur % 60; + let dur = dur / 60; + if dur == 0 { + return format!("{}s", secs); + } + + let mins = dur % 60; + let dur = dur / 60; + if dur == 0 { + return format!("{}m{:02}s", mins, secs); + } + + let hours = dur % 24; + let dur = dur / 24; + if dur == 0 { + return format!("{}h{:02}m{:02}s", hours, mins, secs); + } + + let days = dur; + format!("{}d{:02}h{:02}m{:02}s", days, hours, mins, secs) +} diff --git a/teleterm-web/src/views/terminal.rs b/teleterm-web/src/views/terminal.rs index 104fbca..7a44629 100644 --- a/teleterm-web/src/views/terminal.rs +++ b/teleterm-web/src/views/terminal.rs @@ -1,12 +1,7 @@ use crate::prelude::*; use unicode_width::UnicodeWidthStr as _; -pub(crate) fn render(model: &crate::model::Model) -> Node { - let screen = if let Some(screen) = model.screen() { - screen - } else { - return seed::empty![]; - }; +pub(crate) fn render(screen: &vt100::Screen) -> Node { let (rows, cols) = screen.size(); let (cursor_row, cursor_col) = screen.cursor_position(); diff --git a/teleterm-web/src/views/watch.rs b/teleterm-web/src/views/watch.rs index b02c647..5fe7830 100644 --- a/teleterm-web/src/views/watch.rs +++ b/teleterm-web/src/views/watch.rs @@ -2,7 +2,11 @@ use crate::prelude::*; pub(crate) fn render(model: &crate::model::Model) -> Vec> { vec![ - crate::views::terminal::render(model), + if let Some(screen) = model.screen() { + crate::views::terminal::render(screen) + } else { + seed::empty![] + }, seed::button![simple_ev(Ev::Click, crate::Msg::StopWatching), "back"], ] } diff --git a/teleterm/static/teleterm_web.js b/teleterm/static/teleterm_web.js index 347b24f..32aadec 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(227)(arg0, arg1); -} - const heap = new Array(32); heap.fill(undefined); @@ -21,23 +17,26 @@ function addHeapObject(obj) { heap[idx] = obj; return idx; } +function __wbg_elem_binding0(arg0, arg1, arg2) { + wasm.__wbg_function_table.get(76)(arg0, arg1, addHeapObject(arg2)); +} function __wbg_elem_binding1(arg0, arg1, arg2) { - wasm.__wbg_function_table.get(78)(arg0, arg1, addHeapObject(arg2)); + wasm.__wbg_function_table.get(80)(arg0, arg1, arg2); } -function __wbg_elem_binding2(arg0, arg1, arg2) { - wasm.__wbg_function_table.get(78)(arg0, arg1, addHeapObject(arg2)); +function __wbg_elem_binding2(arg0, arg1) { + wasm.__wbg_function_table.get(227)(arg0, arg1); } function __wbg_elem_binding3(arg0, arg1, arg2) { wasm.__wbg_function_table.get(296)(arg0, arg1, addHeapObject(arg2)); } function __wbg_elem_binding4(arg0, arg1, arg2) { - wasm.__wbg_function_table.get(78)(arg0, arg1, addHeapObject(arg2)); + wasm.__wbg_function_table.get(76)(arg0, arg1, addHeapObject(arg2)); } function __wbg_elem_binding5(arg0, arg1, arg2) { - wasm.__wbg_function_table.get(82)(arg0, arg1, arg2); + wasm.__wbg_function_table.get(76)(arg0, arg1, addHeapObject(arg2)); } function __wbg_elem_binding6(arg0, arg1, arg2) { - wasm.__wbg_function_table.get(78)(arg0, arg1, addHeapObject(arg2)); + wasm.__wbg_function_table.get(76)(arg0, arg1, addHeapObject(arg2)); } function __wbg_elem_binding7(arg0, arg1, arg2, arg3, arg4) { wasm.__wbg_function_table.get(323)(arg0, arg1, addHeapObject(arg2), arg3, addHeapObject(arg4)); @@ -229,6 +228,17 @@ 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_cb_drop = function(arg0) { const obj = takeObject(arg0).original; if (obj.cnt-- == 1) { @@ -238,17 +248,6 @@ function init(module) { const ret = false; return ret; }; - imports.wbg.__wbindgen_object_clone_ref = function(arg0) { - const ret = getObject(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_string_new = function(arg0, arg1) { - const ret = getStringFromWasm(arg0, arg1); - return addHeapObject(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_wrapper319 = function(arg0, arg1, arg2) { + imports.wbg.__wbindgen_closure_wrapper1077 = 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_binding3(a, state.b, arg0); } finally { - if (--state.cnt === 0) wasm.__wbg_function_table.get(79)(a, state.b); + if (--state.cnt === 0) wasm.__wbg_function_table.get(297)(a, state.b); else state.a = a; } } @@ -903,16 +902,16 @@ function init(module) { const ret = real; return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper321 = function(arg0, arg1, arg2) { + imports.wbg.__wbindgen_closure_wrapper303 = 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_binding6(a, state.b, arg0); } finally { - if (--state.cnt === 0) wasm.__wbg_function_table.get(79)(a, state.b); + if (--state.cnt === 0) wasm.__wbg_function_table.get(77)(a, state.b); else state.a = a; } } @@ -921,16 +920,16 @@ function init(module) { const ret = real; return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper315 = function(arg0, arg1, arg2) { + imports.wbg.__wbindgen_closure_wrapper297 = 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_binding4(a, state.b, arg0); } finally { - if (--state.cnt === 0) wasm.__wbg_function_table.get(79)(a, state.b); + if (--state.cnt === 0) wasm.__wbg_function_table.get(77)(a, state.b); else state.a = a; } } @@ -939,16 +938,16 @@ function init(module) { const ret = real; return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper654 = function(arg0, arg1, arg2) { + imports.wbg.__wbindgen_closure_wrapper305 = 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_binding0(a, state.b, arg0); } finally { - if (--state.cnt === 0) wasm.__wbg_function_table.get(228)(a, state.b); + if (--state.cnt === 0) wasm.__wbg_function_table.get(77)(a, state.b); else state.a = a; } } @@ -957,16 +956,16 @@ function init(module) { const ret = real; return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper1074 = function(arg0, arg1, arg2) { + imports.wbg.__wbindgen_closure_wrapper301 = 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(297)(a, state.b); + if (--state.cnt === 0) wasm.__wbg_function_table.get(77)(a, state.b); else state.a = a; } } @@ -975,16 +974,16 @@ function init(module) { const ret = real; return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper313 = function(arg0, arg1, arg2) { + imports.wbg.__wbindgen_closure_wrapper299 = 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_binding4(a, state.b, arg0); + return __wbg_elem_binding1(a, state.b, arg0); } finally { - if (--state.cnt === 0) wasm.__wbg_function_table.get(79)(a, state.b); + if (--state.cnt === 0) wasm.__wbg_function_table.get(77)(a, state.b); else state.a = a; } } @@ -993,16 +992,16 @@ function init(module) { const ret = real; return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper317 = function(arg0, arg1, arg2) { + imports.wbg.__wbindgen_closure_wrapper657 = 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_binding6(a, state.b, arg0); + return __wbg_elem_binding2(a, state.b, ); } finally { - if (--state.cnt === 0) wasm.__wbg_function_table.get(79)(a, state.b); + if (--state.cnt === 0) wasm.__wbg_function_table.get(228)(a, state.b); else state.a = a; } } diff --git a/teleterm/static/teleterm_web_bg.wasm b/teleterm/static/teleterm_web_bg.wasm index e4870a3..7f9a695 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