diff options
Diffstat (limited to 'src/view.rs')
-rw-r--r-- | src/view.rs | 72 |
1 files changed, 15 insertions, 57 deletions
diff --git a/src/view.rs b/src/view.rs index 81634ed..9b95691 100644 --- a/src/view.rs +++ b/src/view.rs @@ -1,83 +1,41 @@ -use crate::model::BCard; +use crate::pdfgen; use wasm_bindgen::prelude::*; +use js_sys; use yew::prelude::*; struct Form { - link: ComponentLink<Self>, - bcard: BCard, } -impl Component for Form { // probably not necessary but who knows +impl Component for Form { type Message = (); type Properties = (); - fn create(_: Self::Properties, link: ComponentLink<Self>) -> Self { - Self { link } + fn create(_props: Self::Properties, _link: ComponentLink<Self>) -> Self { + Self { } } - fn update(&mut self, _: Self::Message) -> ShouldRender { + fn update(&mut self, _msg: Self::Message) -> ShouldRender { false } - fn change(&mut self, _: Self::Properties) -> ShouldRender { - false - } - - fn view(&self) -> Html { - html! { - <BCardForm/> - } - } -} - -// example - -struct Model { - link: ComponentLink<Self>, - value: i64, -} - -enum Msg { - AddOne, - Input(BCard), -} - -impl Component for Model { - type Message = Msg; - type Properties = (); - - fn create(_: Self::Properties, link: ComponentLink<Self>) -> Self { - Self { - link, - value: 0, - } - } - - fn update(&mut self, msg: Self::Message) -> ShouldRender { - match msg { - Msg::AddOne => self.value += 1 - } - true - } - fn change(&mut self, _props: Self::Properties) -> ShouldRender { - // Should only return "true" if new properties are different to - // previously received properties. - // This component has no properties so we will always return "false". false } fn view(&self) -> Html { - html! { - <div> - <button onclick=self.link.callback(|_| Msg::AddOne)>{ "+1" }</button> - <p>{ self.value }</p> - </div> + let pdf_raw = /*include_bytes!("../demo.pdf"); // this works */pdfgen::genpdf(); // this doesn't work + let pdf = std::str::from_utf8(&pdf_raw).expect("should be able to convert to string"); + let uri_component: String = js_sys::encode_uri_component(pdf).into(); + let href = format!{"data:application/pdf;charset=utf-8,{}", uri_component }; + html!{ + <a href=href download="demo.pdf" > + { "Download PDF" } + </a> } } } #[wasm_bindgen(start)] pub fn run_app() { - App::<Model>::new().mount_to_body(); + App::<Form>::new().mount_to_body(); }
\ No newline at end of file |