test(terminal): add renderer bench smoke script
This commit is contained in:
@@ -1,16 +1,89 @@
|
||||
use leptos::prelude::*;
|
||||
|
||||
use crate::components::layout::{AdminShell, Breadcrumb};
|
||||
use crate::terminal::TerminalPanel;
|
||||
use crate::terminal::{TerminalPanel, TerminalRenderEvent};
|
||||
|
||||
#[component]
|
||||
pub fn TerminalPage() -> impl IntoView {
|
||||
let on_render = Callback::new(update_terminal_bench_probe);
|
||||
|
||||
view! {
|
||||
<AdminShell>
|
||||
<Breadcrumb current="浏览器终端" />
|
||||
<section class="cowa-work-surface terminal-page-shell">
|
||||
<TerminalPanel />
|
||||
<TerminalPanel on_render=on_render />
|
||||
</section>
|
||||
</AdminShell>
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(target_arch = "wasm32")]
|
||||
fn update_terminal_bench_probe(event: TerminalRenderEvent) {
|
||||
use wasm_bindgen::JsValue;
|
||||
|
||||
let Some(window) = web_sys::window() else {
|
||||
return;
|
||||
};
|
||||
let Ok(probe) = js_sys::Reflect::get(&window, &JsValue::from_str("__terminalBench")) else {
|
||||
return;
|
||||
};
|
||||
let probe = if probe.is_object() {
|
||||
probe
|
||||
} else {
|
||||
let object = js_sys::Object::new();
|
||||
let _ = js_sys::Reflect::set(&window, &JsValue::from_str("__terminalBench"), &object);
|
||||
object.into()
|
||||
};
|
||||
|
||||
let count = js_sys::Reflect::get(&probe, &JsValue::from_str("renderCount"))
|
||||
.ok()
|
||||
.and_then(|value| value.as_f64())
|
||||
.unwrap_or(0.0)
|
||||
+ 1.0;
|
||||
let mode = if event.mode.is_live() {
|
||||
"live"
|
||||
} else {
|
||||
"history"
|
||||
};
|
||||
let renderer = format!("{:?}", event.renderer);
|
||||
|
||||
let _ = js_sys::Reflect::set(
|
||||
&probe,
|
||||
&JsValue::from_str("renderCount"),
|
||||
&JsValue::from_f64(count),
|
||||
);
|
||||
let _ = js_sys::Reflect::set(
|
||||
&probe,
|
||||
&JsValue::from_str("lastRenderAt"),
|
||||
&JsValue::from_f64(js_sys::Date::now()),
|
||||
);
|
||||
let _ = js_sys::Reflect::set(
|
||||
&probe,
|
||||
&JsValue::from_str("renderer"),
|
||||
&JsValue::from_str(&renderer),
|
||||
);
|
||||
let _ = js_sys::Reflect::set(&probe, &JsValue::from_str("mode"), &JsValue::from_str(mode));
|
||||
let _ = js_sys::Reflect::set(
|
||||
&probe,
|
||||
&JsValue::from_str("cols"),
|
||||
&JsValue::from_f64(f64::from(event.cols)),
|
||||
);
|
||||
let _ = js_sys::Reflect::set(
|
||||
&probe,
|
||||
&JsValue::from_str("rows"),
|
||||
&JsValue::from_f64(f64::from(event.rows)),
|
||||
);
|
||||
let _ = js_sys::Reflect::set(
|
||||
&probe,
|
||||
&JsValue::from_str("historyRows"),
|
||||
&JsValue::from_f64(event.history_rows as f64),
|
||||
);
|
||||
let _ = js_sys::Reflect::set(
|
||||
&probe,
|
||||
&JsValue::from_str("screenRows"),
|
||||
&JsValue::from_f64(event.screen_rows as f64),
|
||||
);
|
||||
}
|
||||
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
fn update_terminal_bench_probe(_event: TerminalRenderEvent) {}
|
||||
|
||||
Reference in New Issue
Block a user