Skip to content

Commit 29cdf50

Browse files
committed
svg2gcode-web: fix yewdux root problem & bump version
1 parent 3d81650 commit 29cdf50

3 files changed

Lines changed: 85 additions & 78 deletions

File tree

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

web/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "svg2gcode-web"
3-
version = "0.0.6"
3+
version = "0.0.7"
44
authors = ["Sameer Puri <crates@purisa.me>"]
55
edition = "2021"
66
description = "Convert vector graphics to g-code for pen plotters, laser engravers, and other CNC machines"

web/src/main.rs

Lines changed: 83 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ use util::*;
2626
use yewdux::{prelude::use_store, use_dispatch, YewduxRoot};
2727
use zip::{write::FileOptions, CompressionMethod, ZipWriter};
2828

29-
#[function_component]
30-
fn App(_props: &()) -> Html {
29+
#[function_component(App)]
30+
fn app() -> Html {
3131
let generating = use_state_eq(|| false);
3232
let generating_setter = generating.setter();
3333

@@ -163,87 +163,94 @@ fn App(_props: &()) -> Html {
163163
};
164164

165165
html! {
166-
<YewduxRoot>
167-
<div class="container">
168-
<div class={classes!("column")}>
169-
<h1>
170-
{ "svg2gcode" }
171-
</h1>
172-
<p>
173-
{ env!("CARGO_PKG_DESCRIPTION") }
174-
</p>
175-
<SvgForm/>
176-
<ButtonGroup>
177-
<Button
178-
title="Generate G-Code"
179-
style={ButtonStyle::Primary}
180-
loading={*generating}
181-
icon={
182-
html_nested! (
183-
<Icon name={IconName::Download} />
184-
)
185-
}
186-
disabled={generate_disabled}
187-
onclick={generate_onclick}
188-
/>
189-
<HyperlinkButton
190-
title="Settings"
191-
style={ButtonStyle::Default}
192-
icon={IconName::Edit}
193-
href="#settings"
194-
/>
195-
</ButtonGroup>
196-
<div class={classes!("card-container", "columns")}>
197-
{
198-
for app_store.svgs.iter().enumerate().map(|(i, svg)| {
199-
let svg_base64 = base64::engine::general_purpose::STANDARD_NO_PAD.encode(svg.content.as_bytes());
200-
let remove_svg_onclick = app_dispatch.reduce_mut_callback(move |app| {
201-
app.svgs.remove(i);
202-
});
203-
let footer = html!{
204-
<Button
205-
title="Remove"
206-
style={ButtonStyle::Primary}
207-
icon={
208-
html_nested!(
209-
<Icon name={IconName::Delete} />
210-
)
211-
}
212-
onclick={remove_svg_onclick}
213-
/>
214-
};
215-
html!{
216-
<div class={classes!("column", "col-6", "col-xs-12")}>
217-
<Card
218-
title={svg.filename.clone()}
219-
img={html_nested!(
220-
<img class="img-responsive" src={format!("data:image/svg+xml;base64,{}", svg_base64)} alt={svg.filename.clone()} />
221-
)}
222-
footer={footer}
223-
/>
224-
</div>
225-
}
226-
})
166+
<div class="container">
167+
<div class={classes!("column")}>
168+
<h1>
169+
{ "svg2gcode" }
170+
</h1>
171+
<p>
172+
{ env!("CARGO_PKG_DESCRIPTION") }
173+
</p>
174+
<SvgForm/>
175+
<ButtonGroup>
176+
<Button
177+
title="Generate G-Code"
178+
style={ButtonStyle::Primary}
179+
loading={*generating}
180+
icon={
181+
html_nested! (
182+
<Icon name={IconName::Download} />
183+
)
227184
}
228-
</div>
229-
<SettingsForm/>
230-
<ImportExportModal/>
231-
</div>
232-
<div class={classes!("text-right", "column")}>
233-
<p>
234-
{ "See the project " }
235-
<a href={env!("CARGO_PKG_REPOSITORY")}>
236-
{ "on GitHub" }
237-
</a>
238-
{" for support" }
239-
</p>
185+
disabled={generate_disabled}
186+
onclick={generate_onclick}
187+
/>
188+
<HyperlinkButton
189+
title="Settings"
190+
style={ButtonStyle::Default}
191+
icon={IconName::Edit}
192+
href="#settings"
193+
/>
194+
</ButtonGroup>
195+
<div class={classes!("card-container", "columns")}>
196+
{
197+
for app_store.svgs.iter().enumerate().map(|(i, svg)| {
198+
let svg_base64 = base64::engine::general_purpose::STANDARD_NO_PAD.encode(svg.content.as_bytes());
199+
let remove_svg_onclick = app_dispatch.reduce_mut_callback(move |app| {
200+
app.svgs.remove(i);
201+
});
202+
let footer = html!{
203+
<Button
204+
title="Remove"
205+
style={ButtonStyle::Primary}
206+
icon={
207+
html_nested!(
208+
<Icon name={IconName::Delete} />
209+
)
210+
}
211+
onclick={remove_svg_onclick}
212+
/>
213+
};
214+
html!{
215+
<div class={classes!("column", "col-6", "col-xs-12")}>
216+
<Card
217+
title={svg.filename.clone()}
218+
img={html_nested!(
219+
<img class="img-responsive" src={format!("data:image/svg+xml;base64,{}", svg_base64)} alt={svg.filename.clone()} />
220+
)}
221+
footer={footer}
222+
/>
223+
</div>
224+
}
225+
})
226+
}
240227
</div>
228+
<SettingsForm/>
229+
<ImportExportModal/>
230+
</div>
231+
<div class={classes!("text-right", "column")}>
232+
<p>
233+
{ "See the project " }
234+
<a href={env!("CARGO_PKG_REPOSITORY")}>
235+
{ "on GitHub" }
236+
</a>
237+
{" for support" }
238+
</p>
241239
</div>
240+
</div>
241+
}
242+
}
243+
244+
#[function_component(AppContainer)]
245+
fn app_container() -> Html {
246+
html! {
247+
<YewduxRoot>
248+
<App/>
242249
</YewduxRoot>
243250
}
244251
}
245252

246253
fn main() {
247254
wasm_logger::init(wasm_logger::Config::new(Level::Info));
248-
yew::Renderer::<App>::new().render();
255+
yew::Renderer::<AppContainer>::new().render();
249256
}

0 commit comments

Comments
 (0)