gioser-web: fix graph node click callback, dispatch MouseEvent on tip
- Graph callback now creates a web_sys::MouseEvent('click') and
dispatches it on the corresponding .tip element.
- The existing install_tip_clicks listener captures it and calls
open_or_switch with proper coordinates.
This commit is contained in:
Binary file not shown.
@@ -357,8 +357,7 @@ impl AppState {
|
|||||||
);
|
);
|
||||||
wrapper.append_child(&label).ok();
|
wrapper.append_child(&label).ok();
|
||||||
content_clone.append_child(&wrapper).ok();
|
content_clone.append_child(&wrapper).ok();
|
||||||
// Callback: recibe 'camino' del nodo clickeado y dispara click
|
// Callback: recibe 'camino' del nodo clickeado y navega
|
||||||
// en el tip correspondiente (simula apertura de página)
|
|
||||||
let cb: Box<dyn FnMut(String)> = Box::new(move |target| {
|
let cb: Box<dyn FnMut(String)> = Box::new(move |target| {
|
||||||
// Mapa camino → elemento HTML
|
// Mapa camino → elemento HTML
|
||||||
let el = match target.as_str() {
|
let el = match target.as_str() {
|
||||||
@@ -368,14 +367,15 @@ impl AppState {
|
|||||||
"uku" | "agua" => "uku",
|
"uku" | "agua" => "uku",
|
||||||
_ => "logos",
|
_ => "logos",
|
||||||
};
|
};
|
||||||
|
// Disparar evento click en el tip (el listener de
|
||||||
|
// install_tip_clicks lo captura y llama open_or_switch)
|
||||||
if let Some(tip) = document_clone.query_selector(
|
if let Some(tip) = document_clone.query_selector(
|
||||||
&format!(".tip[data-md][id='tip-{}']", el)
|
&format!(".tip[data-md][id='tip-{}']", el)
|
||||||
).ok().flatten() {
|
).ok().flatten() {
|
||||||
// Simular click real en el tip — la animación de
|
// Crear MouseEvent con coordenadas (necesario para
|
||||||
// expansión la maneja AppState::open_or_switch
|
// que prevent_default y open_or_switch tengan contexto)
|
||||||
let _ = tip.dispatch_event(
|
let ev = web_sys::MouseEvent::new("click").unwrap();
|
||||||
&web_sys::MouseEvent::new("click").unwrap()
|
let _ = tip.dispatch_event(&ev);
|
||||||
);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
let mut graph = GraphWidget::new(
|
let mut graph = GraphWidget::new(
|
||||||
|
|||||||
Reference in New Issue
Block a user