The test checks generalized version works
#[test]
fn test_generalize() {
let command = vec![make_command(
1,
&[39, 40, 41, 42, 43, 44, 45, 46, 47, 48],
"The command",
)];
let jobs = vec![
make_job(39, &[10, 20], &[], "Install packages on server oss2.local."),
make_job(40, &[11, 21], &[39], "Configure NTP on oss2.local."),
make_job(41, &[12, 22], &[39], "Enable LNet on oss2.local."),
make_job(42, &[13, 23], &[39], "Configure Corosync on oss2.local."),
make_job(43, &[14, 24], &[42], "Start Corosync on oss2.local"),
make_job(44, &[15, 25], &[41], "Load the LNet kernel modules."),
make_job(45, &[16, 26], &[44], "Start the LNet networking layer."),
make_job(46, &[17, 27], &[39, 43], "Configure Pacemaker on oss2.local."),
make_job(47, &[18, 28], &[43, 46], "Start Pacemaker on oss2.local."),
make_job(
48,
&[19, 29],
&[39, 40, 41, 42, 45, 46, 47],
"Setup managed host oss2.local.",
),
];
let steps = vec![
make_step(10, "Step ten"),
make_step(11, "Step eleven"),
make_step(12, "Step twelve"),
make_step(13, "Step thirteen"),
make_step(14, "Step fourteen"),
make_step(15, "Step fifteen"),
make_step(16, "Step sixteen"),
make_step(17, "Step seventeen"),
make_step(18, "Step eighteen"),
make_step(19, "Step nineteen"),
make_step(20, "Step twenty"),
make_step(21, "Step twenty one"),
make_step(22, "Step twenty two"),
make_step(23, "Step twenty three"),
make_step(24, "Step twenty four"),
make_step(25, "Step twenty five"),
make_step(26, "Step twenty six"),
make_step(27, "Step twenty seven"),
make_step(28, "Step twenty eight"),
make_step(29, "Step twenty nine"),
];
let mut model = Model::default();
model.commands = convert_to_rich_hashmap(command, extract_children_from_cmd);
model.jobs = convert_to_rich_hashmap(jobs, extract_children_from_job);
model.steps = convert_to_rich_hashmap(steps, extract_children_from_step);
model.refresh_view((true, true, true));
let mut ctx = Context {
steps_view: &model.steps_view,
select: &model.select,
};
let dag_view = traverse_graph(
&model.jobs_graphs[&CmdId(1)],
&graph_item_view,
&graph_item_combine,
&mut ctx,
);
let dag_view = div![dag_view];
assert_eq!(format!("{:#?}", dag_view), NODE);
}
fn graph_item_combine(parent: Node<Msg>, acc: Vec<Node<Msg>>, _ctx: &mut Context) -> Node<Msg> {
if !parent.is_empty() {
// all the dependencies are shifted with the indent
let acc_plus = acc.into_iter().map(|a| a.merge_attrs(class![C.ml_3, C.mt_1]));
div![parent, acc_plus]
} else {
empty!()
}
}
fn graph_item_view(job: Arc<RichJob>, is_new: bool, ctx: &mut Context) -> Node<Msg> {
if is_new {
let icon = job_status_icon(job.as_ref());
// we don't use job.deps() since deps() now show interdependencies between jobs
if job.steps.is_empty() {
span![span![class![C.mr_1], icon], span![job.description]]
} else {
let is_open = ctx.select.contains(TypedId::Job(job.id));
let def_vec = Vec::new();
let steps = ctx.steps_view.get(&JobId(job.id)).unwrap_or(&def_vec);
div![
a![
span![class![C.mr_1], icon],
span![class![C.cursor_pointer, C.underline], job.description],
simple_ev(Ev::Click, Msg::Click(TypedId::Job(job.id))),
],
step_list_view(steps, &ctx.select, is_open),
]
}
} else {
empty!()
}
}
const NODE: &'static str = r#"Element(
El {
tag: Div,
attrs: Attrs {
vals: {},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: Div,
attrs: Attrs {
vals: {},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: Div,
attrs: Attrs {
vals: {},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: A,
attrs: Attrs {
vals: {},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {
Click: Group {
event_handlers: RefCell {
value: [
EventHandler('click'),
],
},
listener: None,
},
},
},
children: [
Element(
El {
tag: Span,
attrs: Attrs {
vals: {
Class: Some(
"mr-1",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: Svg,
attrs: Attrs {
vals: {
Class: Some(
"fill-current fill-current w-4 h-4 inline text-green-500",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: Use,
attrs: Attrs {
vals: {
Class: Some(
"pointer-events-none",
),
Href: Some(
"sprites/solid.svg#check",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [],
namespace: Some(
Svg,
),
node_ws: None,
refs: [],
},
),
],
namespace: Some(
Svg,
),
node_ws: None,
refs: [],
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
Element(
El {
tag: Span,
attrs: Attrs {
vals: {
Class: Some(
"cursor-pointer underline",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Text(
Text {
text: "Setup managed host oss2.local.",
node_ws: None,
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
Empty,
],
namespace: None,
node_ws: None,
refs: [],
},
),
Element(
El {
tag: Div,
attrs: Attrs {
vals: {
Class: Some(
"ml-3 mt-1",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: Div,
attrs: Attrs {
vals: {},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: A,
attrs: Attrs {
vals: {},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {
Click: Group {
event_handlers: RefCell {
value: [
EventHandler('click'),
],
},
listener: None,
},
},
},
children: [
Element(
El {
tag: Span,
attrs: Attrs {
vals: {
Class: Some(
"mr-1",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: Svg,
attrs: Attrs {
vals: {
Class: Some(
"fill-current fill-current w-4 h-4 inline text-green-500",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: Use,
attrs: Attrs {
vals: {
Class: Some(
"pointer-events-none",
),
Href: Some(
"sprites/solid.svg#check",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [],
namespace: Some(
Svg,
),
node_ws: None,
refs: [],
},
),
],
namespace: Some(
Svg,
),
node_ws: None,
refs: [],
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
Element(
El {
tag: Span,
attrs: Attrs {
vals: {
Class: Some(
"cursor-pointer underline",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Text(
Text {
text: "Install packages on server oss2.local.",
node_ws: None,
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
Empty,
],
namespace: None,
node_ws: None,
refs: [],
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
Element(
El {
tag: Div,
attrs: Attrs {
vals: {
Class: Some(
"ml-3 mt-1",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: Div,
attrs: Attrs {
vals: {},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: A,
attrs: Attrs {
vals: {},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {
Click: Group {
event_handlers: RefCell {
value: [
EventHandler('click'),
],
},
listener: None,
},
},
},
children: [
Element(
El {
tag: Span,
attrs: Attrs {
vals: {
Class: Some(
"mr-1",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: Svg,
attrs: Attrs {
vals: {
Class: Some(
"fill-current fill-current w-4 h-4 inline text-green-500",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: Use,
attrs: Attrs {
vals: {
Class: Some(
"pointer-events-none",
),
Href: Some(
"sprites/solid.svg#check",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [],
namespace: Some(
Svg,
),
node_ws: None,
refs: [],
},
),
],
namespace: Some(
Svg,
),
node_ws: None,
refs: [],
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
Element(
El {
tag: Span,
attrs: Attrs {
vals: {
Class: Some(
"cursor-pointer underline",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Text(
Text {
text: "Configure NTP on oss2.local.",
node_ws: None,
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
Empty,
],
namespace: None,
node_ws: None,
refs: [],
},
),
Empty,
],
namespace: None,
node_ws: None,
refs: [],
},
),
Element(
El {
tag: Div,
attrs: Attrs {
vals: {
Class: Some(
"ml-3 mt-1",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: Div,
attrs: Attrs {
vals: {},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: A,
attrs: Attrs {
vals: {},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {
Click: Group {
event_handlers: RefCell {
value: [
EventHandler('click'),
],
},
listener: None,
},
},
},
children: [
Element(
El {
tag: Span,
attrs: Attrs {
vals: {
Class: Some(
"mr-1",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: Svg,
attrs: Attrs {
vals: {
Class: Some(
"fill-current fill-current w-4 h-4 inline text-green-500",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: Use,
attrs: Attrs {
vals: {
Class: Some(
"pointer-events-none",
),
Href: Some(
"sprites/solid.svg#check",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [],
namespace: Some(
Svg,
),
node_ws: None,
refs: [],
},
),
],
namespace: Some(
Svg,
),
node_ws: None,
refs: [],
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
Element(
El {
tag: Span,
attrs: Attrs {
vals: {
Class: Some(
"cursor-pointer underline",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Text(
Text {
text: "Enable LNet on oss2.local.",
node_ws: None,
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
Empty,
],
namespace: None,
node_ws: None,
refs: [],
},
),
Empty,
],
namespace: None,
node_ws: None,
refs: [],
},
),
Element(
El {
tag: Div,
attrs: Attrs {
vals: {
Class: Some(
"ml-3 mt-1",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: Div,
attrs: Attrs {
vals: {},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: A,
attrs: Attrs {
vals: {},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {
Click: Group {
event_handlers: RefCell {
value: [
EventHandler('click'),
],
},
listener: None,
},
},
},
children: [
Element(
El {
tag: Span,
attrs: Attrs {
vals: {
Class: Some(
"mr-1",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: Svg,
attrs: Attrs {
vals: {
Class: Some(
"fill-current fill-current w-4 h-4 inline text-green-500",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: Use,
attrs: Attrs {
vals: {
Class: Some(
"pointer-events-none",
),
Href: Some(
"sprites/solid.svg#check",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [],
namespace: Some(
Svg,
),
node_ws: None,
refs: [],
},
),
],
namespace: Some(
Svg,
),
node_ws: None,
refs: [],
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
Element(
El {
tag: Span,
attrs: Attrs {
vals: {
Class: Some(
"cursor-pointer underline",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Text(
Text {
text: "Configure Corosync on oss2.local.",
node_ws: None,
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
Empty,
],
namespace: None,
node_ws: None,
refs: [],
},
),
Empty,
],
namespace: None,
node_ws: None,
refs: [],
},
),
Element(
El {
tag: Div,
attrs: Attrs {
vals: {
Class: Some(
"ml-3 mt-1",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: Div,
attrs: Attrs {
vals: {},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: A,
attrs: Attrs {
vals: {},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {
Click: Group {
event_handlers: RefCell {
value: [
EventHandler('click'),
],
},
listener: None,
},
},
},
children: [
Element(
El {
tag: Span,
attrs: Attrs {
vals: {
Class: Some(
"mr-1",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: Svg,
attrs: Attrs {
vals: {
Class: Some(
"fill-current fill-current w-4 h-4 inline text-green-500",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: Use,
attrs: Attrs {
vals: {
Class: Some(
"pointer-events-none",
),
Href: Some(
"sprites/solid.svg#check",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [],
namespace: Some(
Svg,
),
node_ws: None,
refs: [],
},
),
],
namespace: Some(
Svg,
),
node_ws: None,
refs: [],
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
Element(
El {
tag: Span,
attrs: Attrs {
vals: {
Class: Some(
"cursor-pointer underline",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Text(
Text {
text: "Start the LNet networking layer.",
node_ws: None,
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
Empty,
],
namespace: None,
node_ws: None,
refs: [],
},
),
Element(
El {
tag: Div,
attrs: Attrs {
vals: {
Class: Some(
"ml-3 mt-1",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: Div,
attrs: Attrs {
vals: {},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: A,
attrs: Attrs {
vals: {},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {
Click: Group {
event_handlers: RefCell {
value: [
EventHandler('click'),
],
},
listener: None,
},
},
},
children: [
Element(
El {
tag: Span,
attrs: Attrs {
vals: {
Class: Some(
"mr-1",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: Svg,
attrs: Attrs {
vals: {
Class: Some(
"fill-current fill-current w-4 h-4 inline text-green-500",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: Use,
attrs: Attrs {
vals: {
Class: Some(
"pointer-events-none",
),
Href: Some(
"sprites/solid.svg#check",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [],
namespace: Some(
Svg,
),
node_ws: None,
refs: [],
},
),
],
namespace: Some(
Svg,
),
node_ws: None,
refs: [],
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
Element(
El {
tag: Span,
attrs: Attrs {
vals: {
Class: Some(
"cursor-pointer underline",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Text(
Text {
text: "Load the LNet kernel modules.",
node_ws: None,
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
Empty,
],
namespace: None,
node_ws: None,
refs: [],
},
),
Empty,
],
namespace: None,
node_ws: None,
refs: [],
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
Element(
El {
tag: Div,
attrs: Attrs {
vals: {
Class: Some(
"ml-3 mt-1",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: Div,
attrs: Attrs {
vals: {},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: A,
attrs: Attrs {
vals: {},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {
Click: Group {
event_handlers: RefCell {
value: [
EventHandler('click'),
],
},
listener: None,
},
},
},
children: [
Element(
El {
tag: Span,
attrs: Attrs {
vals: {
Class: Some(
"mr-1",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: Svg,
attrs: Attrs {
vals: {
Class: Some(
"fill-current fill-current w-4 h-4 inline text-green-500",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: Use,
attrs: Attrs {
vals: {
Class: Some(
"pointer-events-none",
),
Href: Some(
"sprites/solid.svg#check",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [],
namespace: Some(
Svg,
),
node_ws: None,
refs: [],
},
),
],
namespace: Some(
Svg,
),
node_ws: None,
refs: [],
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
Element(
El {
tag: Span,
attrs: Attrs {
vals: {
Class: Some(
"cursor-pointer underline",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Text(
Text {
text: "Configure Pacemaker on oss2.local.",
node_ws: None,
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
Empty,
],
namespace: None,
node_ws: None,
refs: [],
},
),
Empty,
Element(
El {
tag: Div,
attrs: Attrs {
vals: {
Class: Some(
"ml-3 mt-1",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: Div,
attrs: Attrs {
vals: {},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: A,
attrs: Attrs {
vals: {},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {
Click: Group {
event_handlers: RefCell {
value: [
EventHandler('click'),
],
},
listener: None,
},
},
},
children: [
Element(
El {
tag: Span,
attrs: Attrs {
vals: {
Class: Some(
"mr-1",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: Svg,
attrs: Attrs {
vals: {
Class: Some(
"fill-current fill-current w-4 h-4 inline text-green-500",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: Use,
attrs: Attrs {
vals: {
Class: Some(
"pointer-events-none",
),
Href: Some(
"sprites/solid.svg#check",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [],
namespace: Some(
Svg,
),
node_ws: None,
refs: [],
},
),
],
namespace: Some(
Svg,
),
node_ws: None,
refs: [],
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
Element(
El {
tag: Span,
attrs: Attrs {
vals: {
Class: Some(
"cursor-pointer underline",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Text(
Text {
text: "Start Corosync on oss2.local",
node_ws: None,
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
Empty,
],
namespace: None,
node_ws: None,
refs: [],
},
),
Empty,
],
namespace: None,
node_ws: None,
refs: [],
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
Element(
El {
tag: Div,
attrs: Attrs {
vals: {
Class: Some(
"ml-3 mt-1",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: Div,
attrs: Attrs {
vals: {},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: A,
attrs: Attrs {
vals: {},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {
Click: Group {
event_handlers: RefCell {
value: [
EventHandler('click'),
],
},
listener: None,
},
},
},
children: [
Element(
El {
tag: Span,
attrs: Attrs {
vals: {
Class: Some(
"mr-1",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: Svg,
attrs: Attrs {
vals: {
Class: Some(
"fill-current fill-current w-4 h-4 inline text-green-500",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Element(
El {
tag: Use,
attrs: Attrs {
vals: {
Class: Some(
"pointer-events-none",
),
Href: Some(
"sprites/solid.svg#check",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [],
namespace: Some(
Svg,
),
node_ws: None,
refs: [],
},
),
],
namespace: Some(
Svg,
),
node_ws: None,
refs: [],
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
Element(
El {
tag: Span,
attrs: Attrs {
vals: {
Class: Some(
"cursor-pointer underline",
),
},
},
style: Style {
vals: {},
},
event_handler_manager: EventHandlerManager {
groups: {},
},
children: [
Text(
Text {
text: "Start Pacemaker on oss2.local.",
node_ws: None,
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
Empty,
],
namespace: None,
node_ws: None,
refs: [],
},
),
Empty,
Empty,
],
namespace: None,
node_ws: None,
refs: [],
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
),
],
namespace: None,
node_ws: None,
refs: [],
},
)"#;
Comments
0 B
|👍
/👎
0 B
|👍
/👎