diagram_panel.rs
This commit is contained in:
parent
d291e84f61
commit
c1b0eb33bf
24
frontend/src/diagram_panel.rs
Normal file
24
frontend/src/diagram_panel.rs
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
use zoon::*;
|
||||||
|
|
||||||
|
#[derive(Clone)]
|
||||||
|
pub struct DiagramPanel {
|
||||||
|
}
|
||||||
|
|
||||||
|
impl DiagramPanel {
|
||||||
|
pub fn new(
|
||||||
|
) -> impl Element {
|
||||||
|
Self {
|
||||||
|
}
|
||||||
|
.root()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn root(&self) -> impl Element {
|
||||||
|
Column::new()
|
||||||
|
.s(Padding::all(20))
|
||||||
|
.s(Scrollbars::y_and_clip_x())
|
||||||
|
.s(Width::fill())
|
||||||
|
.s(Height::fill())
|
||||||
|
.s(Gap::new().y(20))
|
||||||
|
.item("Diagram panel")
|
||||||
|
}
|
||||||
|
}
|
|
@ -7,6 +7,9 @@ mod script_bridge;
|
||||||
mod controls_panel;
|
mod controls_panel;
|
||||||
use controls_panel::ControlsPanel;
|
use controls_panel::ControlsPanel;
|
||||||
|
|
||||||
|
mod diagram_panel;
|
||||||
|
use diagram_panel::DiagramPanel;
|
||||||
|
|
||||||
mod waveform_panel;
|
mod waveform_panel;
|
||||||
use waveform_panel::{PixiController, WaveformPanel};
|
use waveform_panel::{PixiController, WaveformPanel};
|
||||||
|
|
||||||
|
@ -28,8 +31,10 @@ enum Layout {
|
||||||
|
|
||||||
#[derive(Clone, Copy, Default)]
|
#[derive(Clone, Copy, Default)]
|
||||||
enum Mode {
|
enum Mode {
|
||||||
#[default]
|
// @TODO make default
|
||||||
|
// #[default]
|
||||||
Waves,
|
Waves,
|
||||||
|
#[default]
|
||||||
Diagrams,
|
Diagrams,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,47 +76,64 @@ fn root() -> impl Element {
|
||||||
mode.clone(),
|
mode.clone(),
|
||||||
loaded_filename.clone(),
|
loaded_filename.clone(),
|
||||||
))
|
))
|
||||||
.item(
|
.item_signal(mode.signal().map(clone!((hierarchy, selected_var_refs, loaded_filename, canvas_controller) move |mode| match mode {
|
||||||
Row::new()
|
Mode::Waves => {
|
||||||
.s(Scrollbars::y_and_clip_x())
|
Column::new()
|
||||||
.s(Gap::new().x(15))
|
.s(Height::fill())
|
||||||
.s(Height::growable().min(150))
|
.s(Scrollbars::y_and_clip_x())
|
||||||
.item(ControlsPanel::new(
|
.item(
|
||||||
hierarchy.clone(),
|
Row::new()
|
||||||
selected_var_refs.clone(),
|
.s(Scrollbars::y_and_clip_x())
|
||||||
layout.clone(),
|
.s(Gap::new().x(15))
|
||||||
loaded_filename.clone(),
|
.s(Height::growable().min(150))
|
||||||
))
|
.item(ControlsPanel::new(
|
||||||
.item_signal({
|
|
||||||
let hierarchy = hierarchy.clone();
|
|
||||||
let selected_var_refs = selected_var_refs.clone();
|
|
||||||
let loaded_filename = loaded_filename.clone();
|
|
||||||
let canvas_controller = canvas_controller.clone();
|
|
||||||
map_ref!{
|
|
||||||
let layout = layout.signal(),
|
|
||||||
let hierarchy_is_some = hierarchy.signal_ref(Option::is_some) => {
|
|
||||||
(*hierarchy_is_some && matches!(layout, Layout::Tree)).then(clone!((hierarchy, selected_var_refs, loaded_filename, canvas_controller) move || WaveformPanel::new(
|
|
||||||
hierarchy.clone(),
|
hierarchy.clone(),
|
||||||
selected_var_refs.clone(),
|
selected_var_refs.clone(),
|
||||||
|
layout.clone(),
|
||||||
loaded_filename.clone(),
|
loaded_filename.clone(),
|
||||||
canvas_controller.clone(),
|
))
|
||||||
)))
|
.item_signal({
|
||||||
|
let hierarchy = hierarchy.clone();
|
||||||
|
let selected_var_refs = selected_var_refs.clone();
|
||||||
|
let loaded_filename = loaded_filename.clone();
|
||||||
|
let canvas_controller = canvas_controller.clone();
|
||||||
|
map_ref!{
|
||||||
|
let layout = layout.signal(),
|
||||||
|
let hierarchy_is_some = hierarchy.signal_ref(Option::is_some) => {
|
||||||
|
(*hierarchy_is_some && matches!(layout, Layout::Tree)).then(clone!((hierarchy, selected_var_refs, loaded_filename, canvas_controller) move || WaveformPanel::new(
|
||||||
|
hierarchy.clone(),
|
||||||
|
selected_var_refs.clone(),
|
||||||
|
loaded_filename.clone(),
|
||||||
|
canvas_controller.clone(),
|
||||||
|
)))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
.item_signal({
|
||||||
|
let hierarchy = hierarchy.clone();
|
||||||
|
let selected_var_refs = selected_var_refs.clone();
|
||||||
|
let loaded_filename = loaded_filename.clone();
|
||||||
|
let canvas_controller = canvas_controller.clone();
|
||||||
|
map_ref!{
|
||||||
|
let layout = layout.signal(),
|
||||||
|
let hierarchy_is_some = hierarchy.signal_ref(Option::is_some) => {
|
||||||
|
(*hierarchy_is_some && matches!(layout, Layout::Columns)).then(clone!((hierarchy, selected_var_refs, loaded_filename, canvas_controller) move || WaveformPanel::new(
|
||||||
|
hierarchy.clone(),
|
||||||
|
selected_var_refs.clone(),
|
||||||
|
loaded_filename.clone(),
|
||||||
|
canvas_controller.clone(),
|
||||||
|
)))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
}),
|
|
||||||
)
|
|
||||||
.item_signal(
|
|
||||||
map_ref!{
|
|
||||||
let layout = layout.signal(),
|
|
||||||
let hierarchy_is_some = hierarchy.signal_ref(Option::is_some) => {
|
|
||||||
(*hierarchy_is_some && matches!(layout, Layout::Columns)).then(clone!((hierarchy, selected_var_refs, loaded_filename, canvas_controller) move || WaveformPanel::new(
|
|
||||||
hierarchy.clone(),
|
|
||||||
selected_var_refs.clone(),
|
|
||||||
loaded_filename.clone(),
|
|
||||||
canvas_controller.clone(),
|
|
||||||
)))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
)
|
Mode::Diagrams => {
|
||||||
|
Column::new()
|
||||||
|
.s(Height::fill())
|
||||||
|
.s(Scrollbars::y_and_clip_x())
|
||||||
|
.item(DiagramPanel::new())
|
||||||
|
}
|
||||||
|
})))
|
||||||
.item(CommandPanel::new())
|
.item(CommandPanel::new())
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue