feat(cosmobiologia): perfil del rectificador — barras clicables
Cada barra de la curva del barrido se vuelve clicable: un clic lleva la carta a esa hora candidata, reusando el scrub de tiempo del jog-dial (CanvasEvent::TimeOffsetChanged, ya cableado en el shell). Cierra el lazo del rectificador: ahora se puede inspeccionar sobre el wheel cualquier hora del barrido, no sólo leer la ganadora. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -1797,7 +1797,7 @@ fn render_wheel(
|
|||||||
// la hora de nacimiento que mejor explica los eventos conocidos.
|
// la hora de nacimiento que mejor explica los eventos conocidos.
|
||||||
if let Some(r) = rectificacion {
|
if let Some(r) = rectificacion {
|
||||||
if !r.perfil.is_empty() {
|
if !r.perfil.is_empty() {
|
||||||
footer = footer.child(render_rectify_profile(theme, palette, r));
|
footer = footer.child(render_rectify_profile(theme, palette, r, entity.clone()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2046,10 +2046,14 @@ fn render_harmonic_spectrum(
|
|||||||
/// de nacimiento candidata; su altura crece cuanto MEJOR explica los
|
/// de nacimiento candidata; su altura crece cuanto MEJOR explica los
|
||||||
/// eventos conocidos (menor puntaje de convergencia). La barra más alta
|
/// eventos conocidos (menor puntaje de convergencia). La barra más alta
|
||||||
/// —el valle del puntaje— es la hora rectificada, y va resaltada.
|
/// —el valle del puntaje— es la hora rectificada, y va resaltada.
|
||||||
|
///
|
||||||
|
/// Cada barra es clicable: un clic lleva la carta a esa hora candidata
|
||||||
|
/// (emite `TimeOffsetChanged`), para inspeccionarla sobre el wheel.
|
||||||
fn render_rectify_profile(
|
fn render_rectify_profile(
|
||||||
theme: &Theme,
|
theme: &Theme,
|
||||||
palette: &AstroPalette,
|
palette: &AstroPalette,
|
||||||
r: &Rectificacion,
|
r: &Rectificacion,
|
||||||
|
entity: gpui::Entity<AstrologyCanvas>,
|
||||||
) -> gpui::Div {
|
) -> gpui::Div {
|
||||||
const BAR_AREA_H: f32 = 46.0;
|
const BAR_AREA_H: f32 = 46.0;
|
||||||
|
|
||||||
@@ -2083,10 +2087,12 @@ fn render_rectify_profile(
|
|||||||
String::new()
|
String::new()
|
||||||
};
|
};
|
||||||
let column = div()
|
let column = div()
|
||||||
|
.id(SharedString::from(format!("tts-rectify-bar-{offset}")))
|
||||||
.flex()
|
.flex()
|
||||||
.flex_col()
|
.flex_col()
|
||||||
.items_center()
|
.items_center()
|
||||||
.gap(px(2.0))
|
.gap(px(2.0))
|
||||||
|
.cursor_pointer()
|
||||||
.child(
|
.child(
|
||||||
div()
|
div()
|
||||||
.h(px(BAR_AREA_H))
|
.h(px(BAR_AREA_H))
|
||||||
@@ -2104,7 +2110,17 @@ fn render_rectify_profile(
|
|||||||
theme.fg_disabled
|
theme.fg_disabled
|
||||||
})
|
})
|
||||||
.child(SharedString::from(label)),
|
.child(SharedString::from(label)),
|
||||||
);
|
)
|
||||||
|
.on_click({
|
||||||
|
// Un clic lleva la carta a esta hora candidata reusando
|
||||||
|
// el scrub de tiempo del jog-dial (`TimeOffsetChanged`).
|
||||||
|
let entity = entity.clone();
|
||||||
|
move |_: &gpui::ClickEvent, _w, cx: &mut gpui::App| {
|
||||||
|
entity.update(cx, |_this, cx| {
|
||||||
|
cx.emit(CanvasEvent::TimeOffsetChanged(offset));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
bars = bars.child(column);
|
bars = bars.child(column);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user