Skip to content

Commit

Permalink
Merge pull request #33 from dgsantana/dynamic_update
Browse files Browse the repository at this point in the history
Expose update to allow dynamic updates on wasm
  • Loading branch information
yuankunzhang committed Nov 25, 2023
2 parents 14c4cc9 + c4f7d59 commit cff4950
Show file tree
Hide file tree
Showing 9 changed files with 139 additions and 225 deletions.
288 changes: 79 additions & 209 deletions Cargo.lock

Large diffs are not rendered by default.

14 changes: 8 additions & 6 deletions charming/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,14 @@ license = "MIT/Apache-2.0"
readme = "../README.md"

[dependencies]
deno_core = { version = "0.209", optional = true }
handlebars = "4.3"
deno_core = { version = "0.232", optional = true }
handlebars = { version = "4.3", optional = true }
image = { version = "0.24", optional = true }
resvg = { version = "0.35", optional = true }
resvg = { version = "0.36", optional = true }
serde = { version = "1.0", features = ["derive"] }
serde-wasm-bindgen = {version = "0.5", optional = true }
serde-wasm-bindgen = {version = "0.6", optional = true }
serde_json = "1.0"
serde_v8 = { version = "0.120", optional = true }
serde_v8 = { version = "0.141", optional = true }
wasm-bindgen = { version = "0.2", optional = true }

[dependencies.web-sys]
Expand All @@ -32,7 +32,9 @@ features = [
]

[features]
ssr = ["deno_core", "image", "resvg", "serde_v8"]
default = ["html"]
html = ["handlebars"]
ssr = ["html", "deno_core", "image", "resvg", "serde_v8"]
wasm = ["serde-wasm-bindgen", "wasm-bindgen", "web-sys"]

[package.metadata.docs.rs]
Expand Down
8 changes: 4 additions & 4 deletions charming/src/datatype/datapoint.rs
Original file line number Diff line number Diff line change
Expand Up @@ -124,8 +124,8 @@ mod test {
let q = DataPoint::Value(42.into());
assert_eq!(p, q);

let p: DataPoint = (-3.14).into();
let q = DataPoint::Value((-3.14).into());
let p: DataPoint = (-std::f32::consts::PI).into();
let q = DataPoint::Value((-std::f32::consts::PI).into());
assert_eq!(p, q);

let p: DataPoint = "foo".into();
Expand All @@ -134,14 +134,14 @@ mod test {

let p: DataPoint = vec![
CompositeValue::from(42),
CompositeValue::from(-3.14),
CompositeValue::from(-std::f32::consts::PI),
CompositeValue::from("foo"),
]
.into();
let q = DataPoint::Value(
vec![
CompositeValue::from(42),
CompositeValue::from(-3.14),
CompositeValue::from(-std::f32::consts::PI),
CompositeValue::from("foo"),
]
.into(),
Expand Down
34 changes: 34 additions & 0 deletions charming/src/element/text_style.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ pub struct TextStyle {

#[serde(skip_serializing_if = "Option::is_none")]
align: Option<String>,

#[serde(skip_serializing_if = "Option::is_none")]
padding: Option<[f64; 4]>,
}

impl TextStyle {
Expand All @@ -37,6 +40,7 @@ impl TextStyle {
font_size: None,
line_height: None,
align: None,
padding: None,
}
}

Expand Down Expand Up @@ -74,4 +78,34 @@ impl TextStyle {
self.align = Some(align.into());
self
}

pub fn padding<F: Into<f64> + Copy>(mut self, padding: [F; 4]) -> Self {
self.padding = Some([
padding[0].into(),
padding[1].into(),
padding[2].into(),
padding[3].into(),
]);
self
}

pub fn padding_all<F: Into<f64> + Copy>(mut self, padding: F) -> Self {
self.padding = Some([
padding.into(),
padding.into(),
padding.into(),
padding.into(),
]);
self
}

pub fn padding_pair<F: Into<f64> + Copy>(mut self, padding: [F; 2]) -> Self {
self.padding = Some([
padding[0].into(),
padding[1].into(),
padding[0].into(),
padding[1].into(),
]);
self
}
}
4 changes: 4 additions & 0 deletions charming/src/renderer/mod.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#[cfg(feature = "html")]
#[cfg_attr(docsrs, doc(cfg(feature = "html")))]
pub mod html_renderer;
#[cfg(feature = "ssr")]
#[cfg_attr(docsrs, doc(cfg(feature = "ssr")))]
Expand All @@ -6,6 +8,8 @@ pub mod image_renderer;
#[cfg_attr(docsrs, doc(cfg(feature = "wasm")))]
pub mod wasm_renderer;

#[cfg(feature = "html")]
#[cfg_attr(docsrs, doc(cfg(feature = "html")))]
pub use html_renderer::*;
#[cfg(feature = "ssr")]
#[cfg_attr(docsrs, doc(cfg(feature = "ssr")))]
Expand Down
4 changes: 4 additions & 0 deletions charming/src/renderer/wasm_renderer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,10 @@ impl WasmRenderer {
echarts
.resize(to_value(&chart_size).expect("could not convert resize options to `JsValue`"));
}

pub fn update(echarts: &Echarts, chart: &Chart) {
echarts.set_option(to_value(chart).unwrap());
}
}

#[derive(Serialize)]
Expand Down
4 changes: 2 additions & 2 deletions gallery/src/line/line_gradient.rs
Original file line number Diff line number Diff line change
Expand Up @@ -98,10 +98,10 @@ pub fn chart() -> Chart {
.max(10)
.max((data_list.len() - 1) as f64),
)
.x_axis(Axis::new().data(data_list.iter().map(|v| *v).collect()))
.x_axis(Axis::new().data(data_list.to_vec()))
.x_axis(
Axis::new()
.data(data_list.iter().map(|v| *v).collect())
.data(data_list.to_vec())
.grid_index(1),
)
.y_axis(Axis::new())
Expand Down
4 changes: 2 additions & 2 deletions gallery/src/line/rainfall.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ use charming::{

pub fn chart() -> Chart {
let time_data = TIME.iter().map(|&x| x.to_string()).collect::<Vec<_>>();
let flow_data = FLOW_DATA.iter().map(|&x| x).collect::<Vec<_>>();
let rainfall_data = RAINFALL_DATA.iter().map(|&x| x).collect::<Vec<_>>();
let flow_data = FLOW_DATA.to_vec();
let rainfall_data = RAINFALL_DATA.to_vec();

Chart::new()
.title(
Expand Down
4 changes: 2 additions & 2 deletions gallery/src/line/rainfall_vs_evaporation.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ pub fn chart() -> Chart {
.map(|x| x.replace("2009/", ""))
.collect::<Vec<_>>();

let evaporation_data = EVAPORATION_DATA.iter().map(|x| *x).collect::<Vec<_>>();
let rainfall_data = RAINFALL_DATA.iter().map(|x| *x).collect::<Vec<_>>();
let evaporation_data = EVAPORATION_DATA.to_vec();
let rainfall_data = RAINFALL_DATA.to_vec();

Chart::new()
.title(Title::new().text("Rainfall vs Evaporation").left("center"))
Expand Down

0 comments on commit cff4950

Please sign in to comment.