Showing
2 changed files
with
25 additions
and
7 deletions
No preview for this file type
@@ -5,7 +5,7 @@ use data::icons::*; | @@ -5,7 +5,7 @@ use data::icons::*; | ||
5 | use js_sys::JsString; | 5 | use js_sys::JsString; |
6 | use log::Level; | 6 | use log::Level; |
7 | use mogwai::prelude::*; | 7 | use mogwai::prelude::*; |
8 | -use web_sys::{RequestInit, RequestMode, Request, Response, MouseEvent}; | 8 | +use web_sys::{RequestInit, RequestMode, Request, Response}; |
9 | use std::panic; | 9 | use std::panic; |
10 | use wasm_bindgen::prelude::*; | 10 | use wasm_bindgen::prelude::*; |
11 | 11 | ||
@@ -14,6 +14,8 @@ enum AppLogic { | @@ -14,6 +14,8 @@ enum AppLogic { | ||
14 | Update, | 14 | Update, |
15 | Toggle, | 15 | Toggle, |
16 | Store, | 16 | Store, |
17 | + Select(Option<i32>), | ||
18 | + Discard, | ||
17 | } | 19 | } |
18 | 20 | ||
19 | fn md_to_html(source: &str) -> String { | 21 | fn md_to_html(source: &str) -> String { |
@@ -167,6 +169,15 @@ async fn editor_logic( mut rx_logic: broadcast::Receiver<AppLogic> | @@ -167,6 +169,15 @@ async fn editor_logic( mut rx_logic: broadcast::Receiver<AppLogic> | ||
167 | . await.unwrap(), | 169 | . await.unwrap(), |
168 | }; | 170 | }; |
169 | }, | 171 | }, |
172 | + AppLogic::Discard => { | ||
173 | + set_md(md.content.as_str()); | ||
174 | + update(); | ||
175 | + }, | ||
176 | + AppLogic::Select(id) => { | ||
177 | + md = md_from_db(id).await; | ||
178 | + set_md(md.content.as_str()); | ||
179 | + update(); | ||
180 | + }, | ||
170 | } | 181 | } |
171 | } | 182 | } |
172 | } | 183 | } |
@@ -176,13 +187,13 @@ fn editor_view( tx_logic: broadcast::Sender<AppLogic> | @@ -176,13 +187,13 @@ fn editor_view( tx_logic: broadcast::Sender<AppLogic> | ||
176 | , tx_dom: broadcast::Sender<Dom> | 187 | , tx_dom: broadcast::Sender<Dom> |
177 | ) -> ViewBuilder<Dom> | 188 | ) -> ViewBuilder<Dom> |
178 | { | 189 | { |
179 | - let ns = "http://www.w3.org/2000/svg"; | ||
180 | - | ||
181 | let input_filter = tx_logic | 190 | let input_filter = tx_logic |
182 | . sink() | 191 | . sink() |
183 | . contra_map(|_| AppLogic::Update); | 192 | . contra_map(|_| AppLogic::Update); |
184 | let store_filter = tx_logic | 193 | let store_filter = tx_logic |
185 | . sink() | 194 | . sink() |
195 | + . contra_map(|_| AppLogic::Store); | ||
196 | + /* keep as example how to handle concrete events. == | ||
186 | . contra_filter_map(|e :DomEvent| { | 197 | . contra_filter_map(|e :DomEvent| { |
187 | if let Either::Left(e) = e.clone_inner() { | 198 | if let Either::Left(e) = e.clone_inner() { |
188 | let e = e.dyn_into::<MouseEvent>().unwrap(); | 199 | let e = e.dyn_into::<MouseEvent>().unwrap(); |
@@ -194,9 +205,16 @@ fn editor_view( tx_logic: broadcast::Sender<AppLogic> | @@ -194,9 +205,16 @@ fn editor_view( tx_logic: broadcast::Sender<AppLogic> | ||
194 | None | 205 | None |
195 | } | 206 | } |
196 | }); | 207 | }); |
208 | + == */ | ||
197 | let toggle_filter = tx_logic | 209 | let toggle_filter = tx_logic |
198 | . sink() | 210 | . sink() |
199 | . contra_map(|_| AppLogic::Toggle); | 211 | . contra_map(|_| AppLogic::Toggle); |
212 | + let select_filter = tx_logic | ||
213 | + . sink() | ||
214 | + . contra_map(|_e| AppLogic::Select(None)); | ||
215 | + let discard_filter = tx_logic | ||
216 | + . sink() | ||
217 | + . contra_map(|_| AppLogic::Discard); | ||
200 | 218 | ||
201 | builder! { | 219 | builder! { |
202 | <div class="input" | 220 | <div class="input" |
@@ -206,13 +224,13 @@ fn editor_view( tx_logic: broadcast::Sender<AppLogic> | @@ -206,13 +224,13 @@ fn editor_view( tx_logic: broadcast::Sender<AppLogic> | ||
206 | <div contenteditable="true" | 224 | <div contenteditable="true" |
207 | style:cursor="text" | 225 | style:cursor="text" |
208 | style:display=("none", rx_view)> | 226 | style:display=("none", rx_view)> |
209 | - <pre on:click=store_filter></pre> | 227 | + <pre></pre> |
210 | </div> | 228 | </div> |
211 | <div> | 229 | <div> |
212 | <div> | 230 | <div> |
213 | - <button>{select_icon()}</button> | ||
214 | - <button>{save_icon()}</button> | ||
215 | - <button>{discard_icon()}</button> | 231 | + <button on:click=select_filter>{select_icon()}</button> |
232 | + <button on:click=store_filter>{save_icon()}</button> | ||
233 | + <button on:click=discard_filter>{discard_icon()}</button> | ||
216 | <button on:click=toggle_filter>{edit_icon()}</button> | 234 | <button on:click=toggle_filter>{edit_icon()}</button> |
217 | </div> | 235 | </div> |
218 | <div></div> | 236 | <div></div> |
Please
register
or
login
to post a comment