From e2dbc2c54840616b56faab2b0d3c7a3787d54e5e Mon Sep 17 00:00:00 2001 From: mbn-gy Date: Sun, 6 Oct 2024 23:42:00 +0800 Subject: [PATCH 1/3] add symbol callback --- charming/src/element/symbol.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/charming/src/element/symbol.rs b/charming/src/element/symbol.rs index 7451b6b..c0061fd 100644 --- a/charming/src/element/symbol.rs +++ b/charming/src/element/symbol.rs @@ -1,5 +1,7 @@ use serde::Serialize; +use super::RawString; + pub enum Symbol { Circle, Rect, @@ -10,6 +12,7 @@ pub enum Symbol { Arrow, None, Custom(String), + Callback(RawString), } impl Serialize for Symbol { @@ -24,6 +27,7 @@ impl Serialize for Symbol { Symbol::Arrow => serializer.serialize_str("arrow"), Symbol::None => serializer.serialize_str("none"), Symbol::Custom(s) => serializer.serialize_str(s), + Symbol::Callback(s) => s.serialize(serializer), } } } From 62fc603470fb8877bec9285998b081539c58d96f Mon Sep 17 00:00:00 2001 From: mbn-gy Date: Mon, 7 Oct 2024 10:13:52 +0800 Subject: [PATCH 2/3] add callback symbol example to gallery --- gallery/src/lib.rs | 1 + gallery/src/line/different_symbols.rs | 19 +++++++++++++++++++ gallery/src/line/mod.rs | 1 + 3 files changed, 21 insertions(+) create mode 100644 gallery/src/line/different_symbols.rs diff --git a/gallery/src/lib.rs b/gallery/src/lib.rs index b05114a..76b4f78 100644 --- a/gallery/src/lib.rs +++ b/gallery/src/lib.rs @@ -110,6 +110,7 @@ lazy_static! { insert!(m, line, area_pieces); insert!(m, line, basic_area); insert!(m, line, basic_line); + insert!(m, line, different_symbols); insert!(m, line, confidence_band); insert!(m, line, data_transform_filter); insert!(m, line, distribution_of_electricity); diff --git a/gallery/src/line/different_symbols.rs b/gallery/src/line/different_symbols.rs new file mode 100644 index 0000000..435dc84 --- /dev/null +++ b/gallery/src/line/different_symbols.rs @@ -0,0 +1,19 @@ +use charming::{ + component::Axis, + element::{AxisType, Symbol}, + series::Line, + Chart, +}; + +pub fn chart() -> Chart { + Chart::new() + .x_axis( + Axis::new() + .type_(AxisType::Category) + .data(vec!["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]), + ) + .y_axis(Axis::new().type_(AxisType::Value)) + .series(Line::new().data(vec![150, 230, 224, 218, 135, 147, 260]) + .symbol_size(20) + .symbol(Symbol::Callback("function (value, params) { return params.dataIndex % 2 === 0 ? value > 200 ? 'diamond' : 'circle' : 'triangle'; }".into()))) +} diff --git a/gallery/src/line/mod.rs b/gallery/src/line/mod.rs index 740f712..12d3bdd 100644 --- a/gallery/src/line/mod.rs +++ b/gallery/src/line/mod.rs @@ -3,6 +3,7 @@ pub mod basic_area; pub mod basic_line; pub mod confidence_band; pub mod data_transform_filter; +pub mod different_symbols; pub mod distribution_of_electricity; pub mod gradient_stacked_area; pub mod large_scale_area; From 55704aff5c8812b8feed36a45351fe668bcfb57f Mon Sep 17 00:00:00 2001 From: Grey Date: Mon, 7 Oct 2024 21:11:07 +0800 Subject: [PATCH 3/3] fix lint --- charming/src/component/legend.rs | 2 +- charming/src/element/symbol.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/charming/src/component/legend.rs b/charming/src/component/legend.rs index 26bb2b3..29fea58 100644 --- a/charming/src/component/legend.rs +++ b/charming/src/component/legend.rs @@ -69,7 +69,7 @@ impl From<(String, String)> for LegendItem { } } -#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] +#[derive(Serialize, Debug, PartialEq, Clone)] #[serde(rename_all = "camelCase")] pub struct Legend { /// Type of legend. diff --git a/charming/src/element/symbol.rs b/charming/src/element/symbol.rs index 4738e0d..3aa219f 100644 --- a/charming/src/element/symbol.rs +++ b/charming/src/element/symbol.rs @@ -1,5 +1,5 @@ -use serde::Serialize; use super::RawString; +use serde::Serialize; #[derive(Debug, PartialEq, PartialOrd, Clone)] pub enum Symbol {