diff --git a/Cargo.lock b/Cargo.lock index e050724..9bc1a82 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -354,6 +354,7 @@ dependencies = [ "deno_core", "handlebars", "image", + "js-sys", "resvg", "serde", "serde-wasm-bindgen", diff --git a/charming/Cargo.toml b/charming/Cargo.toml index 42423d3..6a65201 100644 --- a/charming/Cargo.toml +++ b/charming/Cargo.toml @@ -22,6 +22,7 @@ serde_json = "1.0" serde_v8 = { version = "0.220", optional = true } serde_with = "3.11.0" wasm-bindgen = { version = "0.2", optional = true } +js-sys = { version = "0.3", optional = true } [dev-dependencies] assert-json-diff = "2.0.2" @@ -39,7 +40,7 @@ features = [ default = ["html"] html = ["handlebars"] ssr = ["html", "deno_core", "image", "resvg", "serde_v8"] -wasm = ["serde-wasm-bindgen", "wasm-bindgen", "web-sys"] +wasm = ["serde-wasm-bindgen", "wasm-bindgen", "web-sys", "js-sys"] [package.metadata.docs.rs] all-features = true diff --git a/charming/src/renderer/wasm_renderer.rs b/charming/src/renderer/wasm_renderer.rs index e7f2cfc..65b92e5 100644 --- a/charming/src/renderer/wasm_renderer.rs +++ b/charming/src/renderer/wasm_renderer.rs @@ -54,7 +54,7 @@ impl WasmRenderer { }) .unwrap(), ); - echarts.set_option(to_value(chart).unwrap()); + Self::update(&echarts, chart); Ok(echarts) } @@ -66,7 +66,9 @@ impl WasmRenderer { } pub fn update(echarts: &Echarts, chart: &Chart) { - echarts.set_option(to_value(chart).unwrap()); + let json_str = serde_json::to_string(chart).unwrap(); + let option = js_sys::JSON::parse(&json_str).unwrap(); + echarts.set_option(option); } }