diff --git a/charming/src/element/symbol.rs b/charming/src/element/symbol.rs index ec37005..3aa219f 100644 --- a/charming/src/element/symbol.rs +++ b/charming/src/element/symbol.rs @@ -1,3 +1,4 @@ +use super::RawString; use serde::Serialize; #[derive(Debug, PartialEq, PartialOrd, Clone)] @@ -11,6 +12,7 @@ pub enum Symbol { Arrow, None, Custom(String), + Callback(RawString), } impl Serialize for Symbol { @@ -25,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), } } } 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;