diff --git a/examples/model.rs b/examples/model.rs index b7f63c601..7f8dafe72 100644 --- a/examples/model.rs +++ b/examples/model.rs @@ -31,13 +31,12 @@ static App: FC<()> = |cx| { cx.render(rsx! { div { class: "calculator", onkeydown: move |evt| calc.get_mut().handle_keydown(evt), - div { class: "calculator-display","{formatted}"} + div { class: "calculator-display", "{formatted}" } div { class: "input-keys" div { class: "function-keys" - // All there ways that the calculator may be modified: - CalculatorKey { name: "key-clear", onclick: move |_| calc.get_mut().clear_display() "{clear_text}" } - CalculatorKey { name: "key-sign", onclick: move |_| calc.modify(Calculator::toggle_sign), "±"} - CalculatorKey { name: "key-percent", onclick: move |_| calc.modify(|f| f.toggle_percent()) "%"} + CalculatorKey { name: "key-clear", onclick: move |_| calc.get_mut().clear_display(), "{clear_text}" } + CalculatorKey { name: "key-sign", onclick: move |_| calc.get_mut().toggle_sign(), "±"} + CalculatorKey { name: "key-percent", onclick: move |_| calc.get_mut().toggle_percent(), "%"} } div { class: "digit-keys" CalculatorKey { name: "key-0", onclick: move |_| calc.get_mut().input_digit(0), "0" } @@ -58,12 +57,29 @@ static App: FC<()> = |cx| { }) }; +#[derive(Props)] +struct CalculatorKeyProps<'a> { + name: &'static str, + onclick: &'a dyn Fn(MouseEvent), +} + +fn CalculatorKey<'a>(cx: Context<'a, CalculatorKeyProps>) -> VNode<'a> { + cx.render(rsx! { + button { + class: "calculator-key {cx.name}" + onclick: {cx.onclick} + {cx.children()} + } + }) +} + #[derive(Clone)] struct Calculator { display_value: String, operator: Option, cur_val: f64, } + #[derive(Clone)] enum Operator { Add, @@ -116,7 +132,9 @@ impl Calculator { self.display_value = format!("-{}", self.display_value); } } - fn toggle_percent(&mut self) {} + fn toggle_percent(&mut self) { + self.display_value = (self.display_value.parse::().unwrap() / 100.0).to_string(); + } fn backspace(&mut self) { if !self.display_value.as_str().eq("0") { self.display_value.pop(); @@ -146,19 +164,3 @@ impl Calculator { } } } - -#[derive(Props)] -struct CalculatorKeyProps<'a> { - name: &'static str, - onclick: &'a dyn Fn(MouseEvent), -} - -fn CalculatorKey<'a, 'r>(cx: Context<'a, CalculatorKeyProps<'r>>) -> VNode<'a> { - cx.render(rsx! { - button { - class: "calculator-key {cx.name}" - onclick: {cx.onclick} - {cx.children()} - } - }) -}