All checks were successful
/ test (push) Successful in 3m37s
Adds a `Diagnostics` component that shows the following diagnostics from the last realization: - Confirmation of success or a short description of what failed. - The value of the loss function at each step. - The spectrum of the Hessian at each step. The loss and spectrum plots are shown on switchable panels. Also includes some refactoring/renaming of existing code. Co-authored-by: Aaron Fenyes <aaron.fenyes@fareycircles.ooo> Reviewed-on: #92 Co-authored-by: Vectornaut <vectornaut@nobody@nowhere.net> Co-committed-by: Vectornaut <vectornaut@nobody@nowhere.net>
70 lines
No EOL
1.6 KiB
Rust
70 lines
No EOL
1.6 KiB
Rust
mod add_remove;
|
|
mod assembly;
|
|
mod diagnostics;
|
|
mod display;
|
|
mod engine;
|
|
mod outline;
|
|
mod specified;
|
|
|
|
#[cfg(test)]
|
|
mod tests;
|
|
|
|
use std::{collections::BTreeSet, rc::Rc};
|
|
use sycamore::prelude::*;
|
|
|
|
use add_remove::AddRemove;
|
|
use assembly::{Assembly, Element};
|
|
use diagnostics::Diagnostics;
|
|
use display::Display;
|
|
use outline::Outline;
|
|
|
|
#[derive(Clone)]
|
|
struct AppState {
|
|
assembly: Assembly,
|
|
selection: Signal<BTreeSet<Rc<dyn Element>>>
|
|
}
|
|
|
|
impl AppState {
|
|
fn new() -> AppState {
|
|
AppState {
|
|
assembly: Assembly::new(),
|
|
selection: create_signal(BTreeSet::default())
|
|
}
|
|
}
|
|
|
|
// in single-selection mode, select the given element. in multiple-selection
|
|
// mode, toggle whether the given element is selected
|
|
fn select(&self, element: &Rc<dyn Element>, multi: bool) {
|
|
if multi {
|
|
self.selection.update(|sel| {
|
|
if !sel.remove(element) {
|
|
sel.insert(element.clone());
|
|
}
|
|
});
|
|
} else {
|
|
self.selection.update(|sel| {
|
|
sel.clear();
|
|
sel.insert(element.clone());
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
// set the console error panic hook
|
|
#[cfg(feature = "console_error_panic_hook")]
|
|
console_error_panic_hook::set_once();
|
|
|
|
sycamore::render(|| {
|
|
provide_context(AppState::new());
|
|
|
|
view! {
|
|
div(id="sidebar") {
|
|
AddRemove {}
|
|
Outline {}
|
|
Diagnostics {}
|
|
}
|
|
Display {}
|
|
}
|
|
});
|
|
} |