Changes before trying iced

This commit is contained in:
David Holland 2022-12-13 11:51:15 +01:00
parent a4c3b37019
commit 726dfefadf
Signed by: DustVoice
GPG Key ID: 47068995A14EDCA9
7 changed files with 1849 additions and 347 deletions

1
.gitignore vendored
View File

@ -5,6 +5,7 @@
!/Cargo.lock
!/Cargo.toml
!/config.toml
!/rust-toolchain.toml
!/Shots/
!/src/

2022
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
[package]
authors = ["David Holland <info@dustvoice.de>"]
name = "beanconqueror"
name = "rustybeans"
version = "0.5.0"
edition = "2021"
@ -8,13 +8,12 @@ edition = "2021"
[dependencies]
calamine = "0.18.0"
chrono = "0.4.22"
colourado = "0.2.0"
chrono = { version = "0.4.22", features = ["wasmbind"] }
console_error_panic_hook = "0.1.7"
dioxus = { version = "0.2.4", features = ["desktop"] }
fast-float = "0.2.0"
palette = "0.6.1"
plotly = { version = "=0.8.1", features = ["wasm"] }
plotly = { version = "0.8.1", features = ["wasm"] }
serde = "1.0.144"
serde_derive = "1.0.144"
toml = "0.5.9"
yew = "0.19.0"
yew-hooks = "0.1.56"

View File

@ -1,4 +1,4 @@
shot_dir = "Shots"
shot_dir = "shots"
output_dir = "images"
width = 1600

3
rust-toolchain.toml Normal file
View File

@ -0,0 +1,3 @@
[toolchain]
channel = "nightly"
components = [ "rustfmt", "rust-analyzer" ]

View File

@ -1,18 +1,20 @@
extern crate console_error_panic_hook;
use std::panic;
use calamine::{open_workbook, Reader, Xlsx};
use chrono::{Duration, NaiveTime};
use colourado::{ColorPalette, PaletteType};
use serde_derive::Deserialize;
use plotly::{
common::{Mode, Title},
Layout, Plot, Scatter,
common::{Mode, Title}
};
use yew::prelude::*;
use std::collections::HashMap;
use std::fs;
use dioxus::prelude::*;
#[derive(Deserialize)]
struct Shot {
filename: String,
@ -174,52 +176,28 @@ pub fn generate_plots() -> Vec<(String, Plot)> {
let layout = Layout::new().title(Title::new(&chart.1.title));
plot.set_layout(layout);
result.push((chart.1.title, plot))
// plot.use_local_plotly();
// plot.write_html(filename);
plot.use_local_plotly();
plot.write_html(filename);
result.push((chart.1.title, plot));
}
result
}
#[function_component(App)]
pub fn plot_component() -> Html {
let plot_compounds: Vec<(String, Plot)> = generate_plots();
let (names, plots): (Vec<_>, Vec<_>) = plot_compounds.into_iter().unzip();
let ids = names.clone();
let p = yew_hooks::use_async::<_, _, ()>({
async move {
for i in names.iter().zip(plots.iter()) {
let (name, plot) = i;
plotly::bindings::new_plot(&name, &plot).await;
}
Ok(())
}
});
use_effect_with_deps(
move |_| {
p.run();
|| ()
},
(),
);
html! {
<div id="plot-div">
{
ids.into_iter().map(|name| {
html!{
<div id={name}></div>
}
}).collect::<Html>()
}
</div>
}
}
fn main() {
yew::start_app::<App>();
panic::set_hook(Box::new(console_error_panic_hook::hook));
dioxus::desktop::launch(app);
generate_plots();
}
fn app(cx: Scope) -> Element {
cx.render(rsx! (
section { class: "rustybeans",
style { [include_str!("style.css")] }
div { class: "container row",
div { "Hello, world!" }
button { "Click me!" }
}
}
))
}

87
src/style.css Normal file
View File

@ -0,0 +1,87 @@
:root {
font-family: Inter, Avenir, Helvetica, Arial, sans-serif;
font-size: 16px;
line-height: 24px;
font-weight: 400;
color: #0f0f0f;
background-color: #f6f6f6;
font-synthesis: none;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
-webkit-text-size-adjust: 100%;
}
.container {
margin: 0;
/* padding-top: 10vh; */
display: flex;
flex-direction: column;
justify-content: center;
text-align: center;
}
.row {
display: flex;
justify-content: center;
}
a {
font-weight: 500;
color: #646cff;
text-decoration: inherit;
}
a:hover {
color: #535bf2;
}
h1 {
text-align: center;
}
input,
button {
border-radius: 8px;
border: 1px solid transparent;
padding: 0.6em 1.2em;
font-size: 1em;
font-weight: 500;
font-family: inherit;
color: #0f0f0f;
background-color: #ffffff;
transition: border-color 0.25s;
box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);
}
button {
cursor: pointer;
}
button:hover {
border-color: #396cd8;
}
input,
button {
outline: none;
}
@media (prefers-color-scheme: dark) {
:root {
color: #f6f6f6;
background-color: #2f2f2f;
}
a:hover {
color: #24c8db;
}
input,
button {
color: #ffffff;
background-color: #0f0f0f98;
}
}