diff --git a/charming/src/component/angle_axis.rs b/charming/src/component/angle_axis.rs index ae29f68..a4ada04 100644 --- a/charming/src/component/angle_axis.rs +++ b/charming/src/component/angle_axis.rs @@ -6,7 +6,7 @@ use crate::element::{ }; /// The angle axis in Polar Coordinate. -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct AngleAxis { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/component/aria.rs b/charming/src/component/aria.rs index 67ab4f9..b0f3e5d 100644 --- a/charming/src/component/aria.rs +++ b/charming/src/component/aria.rs @@ -8,7 +8,7 @@ use crate::{ /** A single decal pattern. */ -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct DecalItem { /// The symbol type of the decal. @@ -132,7 +132,7 @@ impl DecalItem { /** Decal patterns to be applied to series data. */ -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Decal { /// Whether to show decal patterns. If `decals` is not set, this option is @@ -202,7 +202,7 @@ Chart::new() .series(Bar::new().data(vec![140, 230, 120, 50, 30, 150, 120])); ``` */ -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Aria { /// Whether to enable WAI-ARIA. diff --git a/charming/src/component/axis.rs b/charming/src/component/axis.rs index 7894529..f7d5448 100644 --- a/charming/src/component/axis.rs +++ b/charming/src/component/axis.rs @@ -9,7 +9,7 @@ use crate::{ }; /// Axis in cartesian coordinate. -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Axis { /// Type of axis. diff --git a/charming/src/component/axis3d.rs b/charming/src/component/axis3d.rs index 4a20cd8..d9d86d8 100644 --- a/charming/src/component/axis3d.rs +++ b/charming/src/component/axis3d.rs @@ -2,7 +2,7 @@ use serde::Serialize; use crate::element::AxisType; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Axis3D { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/component/data_zoom.rs b/charming/src/component/data_zoom.rs index ece1d00..0041b29 100644 --- a/charming/src/component/data_zoom.rs +++ b/charming/src/component/data_zoom.rs @@ -5,7 +5,7 @@ use crate::{ element::{Color, DataBackground, Orient, TextStyle}, }; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub enum FilterMode { Filter, @@ -14,7 +14,7 @@ pub enum FilterMode { None, } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum DataZoomType { Inside, @@ -25,7 +25,7 @@ pub enum DataZoomType { /// DataZoom component is used for zooming a specific area, which enables user /// to investigate data in detail, or get an overview of the data, or get rid /// of outlier points. -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct DataZoom { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/component/geo_map.rs b/charming/src/component/geo_map.rs index 3c409fe..4a070c0 100644 --- a/charming/src/component/geo_map.rs +++ b/charming/src/component/geo_map.rs @@ -1,6 +1,6 @@ use serde::Serialize; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, Clone)] pub enum GeoMapOpt { #[serde(rename = "geoJSON")] GeoJson { @@ -20,7 +20,7 @@ where } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, Clone)] #[serde(rename_all = "camelCase")] pub struct GeoMap { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/component/grid.rs b/charming/src/component/grid.rs index 4f4d551..469138a 100644 --- a/charming/src/component/grid.rs +++ b/charming/src/component/grid.rs @@ -5,7 +5,7 @@ use crate::{ element::{Color, Padding, TextStyle, Trigger}, }; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct GridTooltip { /// Whether to show the tooltip component. @@ -133,7 +133,7 @@ impl GridTooltip { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Grid { /// Component ID. diff --git a/charming/src/component/grid3d.rs b/charming/src/component/grid3d.rs index eb6ed04..5003e13 100644 --- a/charming/src/component/grid3d.rs +++ b/charming/src/component/grid3d.rs @@ -1,6 +1,6 @@ use serde::Serialize; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Grid3D {} diff --git a/charming/src/component/legend.rs b/charming/src/component/legend.rs index 5ab8788..26bb2b3 100644 --- a/charming/src/component/legend.rs +++ b/charming/src/component/legend.rs @@ -1,3 +1,5 @@ +use std::collections::HashMap; + use serde::Serialize; use crate::{ @@ -5,7 +7,7 @@ use crate::{ element::{Color, Icon, ItemStyle, LabelAlign, LineStyle, Orient, Padding, TextStyle}, }; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum LegendType { /// Simple legend. @@ -15,7 +17,7 @@ pub enum LegendType { Scroll, } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum LegendSelectedMode { /// Multiple selection. @@ -25,7 +27,7 @@ pub enum LegendSelectedMode { Single, } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct LegendItem { pub name: String, @@ -67,7 +69,7 @@ impl From<(String, String)> for LegendItem { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Legend { /// Type of legend. @@ -158,6 +160,9 @@ pub struct Legend { #[serde(skip_serializing_if = "Option::is_none")] formatter: Option, + #[serde(skip_serializing_if = "Option::is_none")] + selected: Option>, + #[serde(skip_serializing_if = "Option::is_none")] selected_mode: Option, @@ -202,6 +207,7 @@ impl Legend { text_style: None, symbol_rotate: None, formatter: None, + selected: None, selected_mode: None, border_color: None, inactive_color: None, @@ -314,6 +320,14 @@ impl Legend { self } + pub fn selected, I: IntoIterator>( + mut self, + selected: I, + ) -> Self { + self.selected = Some(selected.into_iter().map(|(k, v)| (k.into(), v)).collect()); + self + } + pub fn selected_mode>(mut self, selected_mode: S) -> Self { self.selected_mode = Some(selected_mode.into()); self diff --git a/charming/src/component/parallel_axis.rs b/charming/src/component/parallel_axis.rs index f43f1f9..dd925d4 100644 --- a/charming/src/component/parallel_axis.rs +++ b/charming/src/component/parallel_axis.rs @@ -2,7 +2,7 @@ use serde::Serialize; use crate::element::{AxisType, NameLocation}; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct ParallelAxis { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/component/parallel_coordinate.rs b/charming/src/component/parallel_coordinate.rs index e1408e7..cff4330 100644 --- a/charming/src/component/parallel_coordinate.rs +++ b/charming/src/component/parallel_coordinate.rs @@ -8,7 +8,7 @@ use crate::{ }, }; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct ParallelAxisDefault { #[serde(skip_serializing_if = "Option::is_none")] @@ -233,7 +233,7 @@ impl ParallelAxisDefault { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct ParallelCoordinate { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/component/polar_coordinate.rs b/charming/src/component/polar_coordinate.rs index af91677..e73de56 100644 --- a/charming/src/component/polar_coordinate.rs +++ b/charming/src/component/polar_coordinate.rs @@ -3,7 +3,7 @@ use serde::Serialize; use crate::datatype::CompositeValue; /// Polar coordinate can be used in scatter and line chart. -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct PolarCoordinate { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/component/radar_coordinate.rs b/charming/src/component/radar_coordinate.rs index f1a911b..86ad5b9 100644 --- a/charming/src/component/radar_coordinate.rs +++ b/charming/src/component/radar_coordinate.rs @@ -8,7 +8,7 @@ use crate::{ }; /// Name options for radar indicators. -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct RadarAxisName { /// Whether to display the indicator's name. @@ -297,7 +297,7 @@ impl RadarAxisName { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct RadarIndicator { #[serde(skip_serializing_if = "Option::is_none")] @@ -372,7 +372,7 @@ impl From<(&str, i64, i64)> for RadarIndicator { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct RadarCoordinate { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/component/radius_axis.rs b/charming/src/component/radius_axis.rs index 8469e84..aa7ec7d 100644 --- a/charming/src/component/radius_axis.rs +++ b/charming/src/component/radius_axis.rs @@ -3,7 +3,7 @@ use serde::Serialize; use crate::element::{AxisLabel, AxisLine, AxisType, BoundaryGap, NameLocation, TextStyle}; /// Radius axis in polar coordinate. -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct RadiusAxis { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/component/single_axis.rs b/charming/src/component/single_axis.rs index d4be86d..2b10183 100644 --- a/charming/src/component/single_axis.rs +++ b/charming/src/component/single_axis.rs @@ -2,7 +2,7 @@ use serde::Serialize; use crate::{datatype::CompositeValue, element::Orient}; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum Type { Value, @@ -11,7 +11,7 @@ pub enum Type { Log, } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct SingleAxis { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/component/title.rs b/charming/src/component/title.rs index 9ab3a1d..149af95 100644 --- a/charming/src/component/title.rs +++ b/charming/src/component/title.rs @@ -6,7 +6,7 @@ use crate::{ }; /// Title component, including main title and subtitle. -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Title { /// Component ID. diff --git a/charming/src/component/toolbox.rs b/charming/src/component/toolbox.rs index 6010e40..4455dc0 100644 --- a/charming/src/component/toolbox.rs +++ b/charming/src/component/toolbox.rs @@ -2,7 +2,7 @@ use serde::Serialize; use crate::{datatype::CompositeValue, element::Orient}; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum SaveAsImageType { Png, @@ -10,7 +10,7 @@ pub enum SaveAsImageType { Svg, } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct SaveAsImage { #[serde(skip_serializing_if = "Option::is_none")] @@ -64,7 +64,7 @@ impl SaveAsImage { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Restore { #[serde(skip_serializing_if = "Option::is_none")] @@ -99,7 +99,7 @@ impl Restore { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct DataView { #[serde(skip_serializing_if = "Option::is_none")] @@ -143,7 +143,7 @@ impl DataView { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum MagicTypeType { /// For line charts. @@ -165,7 +165,7 @@ impl From<&str> for MagicTypeType { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct MagicType { #[serde(skip_serializing_if = "Option::is_none")] @@ -200,7 +200,7 @@ impl MagicType { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub enum BrushType { Rect, @@ -211,7 +211,7 @@ pub enum BrushType { Clear, } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Brush { #[serde(skip_serializing_if = "Vec::is_empty")] @@ -235,7 +235,7 @@ impl Brush { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct ToolboxDataZoom { #[serde(skip_serializing_if = "Option::is_none")] @@ -259,7 +259,7 @@ impl ToolboxDataZoom { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Feature { #[serde(skip_serializing_if = "Option::is_none")] @@ -330,7 +330,7 @@ impl Feature { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Toolbox { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/component/visual_map.rs b/charming/src/component/visual_map.rs index 5a78481..f0ef4f1 100644 --- a/charming/src/component/visual_map.rs +++ b/charming/src/component/visual_map.rs @@ -5,14 +5,14 @@ use crate::{ element::{Color, Orient, TextStyle}, }; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum VisualMapType { Continuous, Piecewise, } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct VisualMapPiece { #[serde(skip_serializing_if = "Option::is_none")] @@ -125,7 +125,7 @@ impl From<(i64, i64, &str)> for VisualMapPiece { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct VisualMapChannel { #[serde(skip_serializing_if = "Vec::is_empty")] @@ -149,7 +149,7 @@ impl VisualMapChannel { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct VisualMap { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/datatype/datapoint.rs b/charming/src/datatype/datapoint.rs index 4006e75..c35ec5e 100644 --- a/charming/src/datatype/datapoint.rs +++ b/charming/src/datatype/datapoint.rs @@ -6,7 +6,7 @@ use crate::element::ItemStyle; use super::CompositeValue; -#[derive(Serialize)] +#[derive(Serialize, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct DataPointItem { value: CompositeValue, @@ -72,7 +72,7 @@ where } } -#[derive(Debug, PartialEq, Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(untagged)] pub enum DataPoint { Value(CompositeValue), diff --git a/charming/src/datatype/dataset.rs b/charming/src/datatype/dataset.rs index 7bc2637..b63ccb2 100644 --- a/charming/src/datatype/dataset.rs +++ b/charming/src/datatype/dataset.rs @@ -4,7 +4,7 @@ use crate::element::RawString; use super::{DataSource, Dimension}; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] pub struct Source { source: DataSource, @@ -62,7 +62,7 @@ where } } -#[derive(Debug, Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Transform { #[serde(skip_serializing_if = "Option::is_none")] @@ -130,6 +130,7 @@ impl From<&str> for Transform { } } +#[derive(Debug, PartialEq, PartialOrd, Clone)] pub struct Dataset { sources: Vec, transforms: Vec, diff --git a/charming/src/datatype/dimension.rs b/charming/src/datatype/dimension.rs index a4ef3fd..7050cb8 100644 --- a/charming/src/datatype/dimension.rs +++ b/charming/src/datatype/dimension.rs @@ -1,6 +1,6 @@ use serde::Serialize; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(untagged)] pub enum DimensionType { Number, @@ -23,7 +23,7 @@ impl From<&str> for DimensionType { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Dimension { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/element/anchor.rs b/charming/src/element/anchor.rs index ce3e06f..a79dfe7 100644 --- a/charming/src/element/anchor.rs +++ b/charming/src/element/anchor.rs @@ -2,7 +2,7 @@ use serde::Serialize; use super::{icon::Icon, item_style::ItemStyle}; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Anchor { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/element/area_style.rs b/charming/src/element/area_style.rs index 2fedab0..fba5691 100644 --- a/charming/src/element/area_style.rs +++ b/charming/src/element/area_style.rs @@ -2,7 +2,7 @@ use serde::Serialize; use super::color::Color; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum OriginPosition { Auto, @@ -10,7 +10,7 @@ pub enum OriginPosition { End, } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct AreaStyle { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/element/axis_label.rs b/charming/src/element/axis_label.rs index 9d2c4ba..5f2d4fd 100644 --- a/charming/src/element/axis_label.rs +++ b/charming/src/element/axis_label.rs @@ -2,7 +2,7 @@ use serde::Serialize; use super::{color::Color, Formatter}; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct AxisLabel { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/element/axis_line.rs b/charming/src/element/axis_line.rs index 138f2a4..15fa214 100644 --- a/charming/src/element/axis_line.rs +++ b/charming/src/element/axis_line.rs @@ -2,6 +2,7 @@ use serde::{ser::SerializeSeq, Serialize}; use super::color::Color; +#[derive(Debug, PartialEq, PartialOrd, Clone)] pub struct ColorSegment(f64, Color); impl Serialize for ColorSegment { @@ -25,7 +26,7 @@ impl From<(f64, Color)> for ColorSegment { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct AxisLineStyle { color: Vec, @@ -116,7 +117,7 @@ impl From<(f64, &str, f64)> for AxisLineStyle { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct AxisLine { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/element/axis_pointer.rs b/charming/src/element/axis_pointer.rs index b4607a4..32a4861 100644 --- a/charming/src/element/axis_pointer.rs +++ b/charming/src/element/axis_pointer.rs @@ -5,7 +5,7 @@ use crate::{ element::{Label, LineStyle}, }; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum AxisPointerType { Line, @@ -14,7 +14,7 @@ pub enum AxisPointerType { None, } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum AxisPointerAxis { X, @@ -23,7 +23,7 @@ pub enum AxisPointerAxis { Angle, } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct AxisPointerLink { #[serde(skip_serializing_if = "Option::is_none")] @@ -78,7 +78,7 @@ impl AxisPointerLink { /// Axis Pointer is a tool for displaying reference line and axis value under /// mouse pointer. -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct AxisPointer { /// Component ID. diff --git a/charming/src/element/axis_tick.rs b/charming/src/element/axis_tick.rs index c7309b7..e121562 100644 --- a/charming/src/element/axis_tick.rs +++ b/charming/src/element/axis_tick.rs @@ -2,7 +2,7 @@ use serde::Serialize; use super::line_style::LineStyle; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct AxisTick { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/element/axis_type.rs b/charming/src/element/axis_type.rs index 1586c06..7fdbeb7 100644 --- a/charming/src/element/axis_type.rs +++ b/charming/src/element/axis_type.rs @@ -1,7 +1,7 @@ use serde::Serialize; /// Type of axis. -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum AxisType { /// Numerical axis, suitable for continuous data. diff --git a/charming/src/element/background.rs b/charming/src/element/background.rs index 213acac..41148a9 100644 --- a/charming/src/element/background.rs +++ b/charming/src/element/background.rs @@ -2,7 +2,7 @@ use serde::Serialize; use super::{area_style::AreaStyle, border_type::BorderType, color::Color, line_style::LineStyle}; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct BackgroundStyle { #[serde(skip_serializing_if = "Option::is_none")] @@ -73,7 +73,7 @@ impl BackgroundStyle { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct DataBackground { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/element/blur.rs b/charming/src/element/blur.rs index b56a9b1..86984a3 100644 --- a/charming/src/element/blur.rs +++ b/charming/src/element/blur.rs @@ -2,7 +2,7 @@ use serde::Serialize; use super::{item_style::ItemStyle, label::Label}; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Blur { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/element/border_type.rs b/charming/src/element/border_type.rs index 051a9ae..8a6290f 100644 --- a/charming/src/element/border_type.rs +++ b/charming/src/element/border_type.rs @@ -1,6 +1,6 @@ use serde::{Deserialize, Serialize}; -#[derive(Serialize, Deserialize, Clone, Debug)] +#[derive(Serialize, Deserialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum BorderType { Solid, diff --git a/charming/src/element/boundary_gap.rs b/charming/src/element/boundary_gap.rs index a8f31ae..e8f7d4c 100644 --- a/charming/src/element/boundary_gap.rs +++ b/charming/src/element/boundary_gap.rs @@ -9,6 +9,7 @@ use serde::{ser::SerializeSeq, Serialize}; /// For non-category axis, including time, numerical value, and log axes, /// `BoundaryGap` is an array of two values, representing the spanning range /// between minimum and maximum value. +#[derive(Debug, PartialEq, PartialOrd, Clone)] pub enum BoundaryGap { CategoryAxis(bool), NonCategoryAxis(String, String), diff --git a/charming/src/element/color.rs b/charming/src/element/color.rs index e0ad8cd..402e83d 100644 --- a/charming/src/element/color.rs +++ b/charming/src/element/color.rs @@ -1,7 +1,7 @@ use serde::ser::{SerializeStruct, Serializer}; use serde::{Deserialize, Serialize}; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum ColorBy { Series, @@ -18,7 +18,7 @@ impl From<&str> for ColorBy { } } -#[derive(Serialize, Deserialize, Clone, Debug)] +#[derive(Serialize, Deserialize, Debug, PartialEq, PartialOrd, Clone)] pub struct ColorStop { offset: f64, color: String, @@ -33,7 +33,7 @@ impl ColorStop { } } -#[derive(Clone, Deserialize, Debug)] +#[derive(Deserialize, Debug, PartialEq, PartialOrd, Clone)] pub enum Color { Value(String), LinearGradient { diff --git a/charming/src/element/coordinate.rs b/charming/src/element/coordinate.rs index f12a004..ab54301 100644 --- a/charming/src/element/coordinate.rs +++ b/charming/src/element/coordinate.rs @@ -1,6 +1,6 @@ use serde::Serialize; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum CoordinateSystem { Cartesian2d, diff --git a/charming/src/element/cursor.rs b/charming/src/element/cursor.rs index a18d517..bd48b8c 100644 --- a/charming/src/element/cursor.rs +++ b/charming/src/element/cursor.rs @@ -1,6 +1,6 @@ use serde::Serialize; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum Cursor { Pointer, diff --git a/charming/src/element/dimension_encode.rs b/charming/src/element/dimension_encode.rs index 62fd370..b55de22 100644 --- a/charming/src/element/dimension_encode.rs +++ b/charming/src/element/dimension_encode.rs @@ -2,7 +2,7 @@ use serde::Serialize; use crate::datatype::CompositeValue; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct DimensionEncode { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/element/emphasis.rs b/charming/src/element/emphasis.rs index 05292e5..da6ee98 100644 --- a/charming/src/element/emphasis.rs +++ b/charming/src/element/emphasis.rs @@ -2,7 +2,7 @@ use serde::Serialize; use super::{item_style::ItemStyle, AreaStyle, Label}; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum EmphasisFocus { None, @@ -15,7 +15,7 @@ pub enum EmphasisFocus { Adjacency, } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Emphasis { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/element/formatter.rs b/charming/src/element/formatter.rs index 3b55904..cce51b6 100644 --- a/charming/src/element/formatter.rs +++ b/charming/src/element/formatter.rs @@ -2,7 +2,7 @@ use serde::Serialize; use super::RawString; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(untagged)] pub enum Formatter { String(String), diff --git a/charming/src/element/icon.rs b/charming/src/element/icon.rs index 146e338..0275125 100644 --- a/charming/src/element/icon.rs +++ b/charming/src/element/icon.rs @@ -1,5 +1,6 @@ use serde::Serialize; +#[derive(Debug, PartialEq, PartialOrd, Clone)] pub enum Icon { Circle, Rect, diff --git a/charming/src/element/item_style.rs b/charming/src/element/item_style.rs index 8b5eb97..56d5536 100644 --- a/charming/src/element/item_style.rs +++ b/charming/src/element/item_style.rs @@ -1,7 +1,7 @@ use super::{border_type::BorderType, color::Color}; use serde::{Deserialize, Serialize}; -#[derive(Serialize, Deserialize, Clone, Debug)] +#[derive(Serialize, Deserialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct ItemStyle { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/element/label.rs b/charming/src/element/label.rs index 240aed6..fcfe63d 100644 --- a/charming/src/element/label.rs +++ b/charming/src/element/label.rs @@ -2,7 +2,7 @@ use serde::Serialize; use super::{color::Color, line_style::LineStyle, Formatter}; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub enum LabelPosition { Top, @@ -24,7 +24,7 @@ pub enum LabelPosition { Center, } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum LabelAlign { Left, @@ -32,7 +32,7 @@ pub enum LabelAlign { Right, } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum LabelVerticalAlign { Top, @@ -40,7 +40,7 @@ pub enum LabelVerticalAlign { Bottom, } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Label { #[serde(skip_serializing_if = "Option::is_none")] @@ -233,7 +233,7 @@ impl Label { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct LabelLine { #[serde(skip_serializing_if = "Option::is_none")] @@ -304,7 +304,7 @@ impl LabelLine { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct LabelLayout { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/element/line_style.rs b/charming/src/element/line_style.rs index 82c1fe1..55df743 100644 --- a/charming/src/element/line_style.rs +++ b/charming/src/element/line_style.rs @@ -2,7 +2,7 @@ use serde::Serialize; use super::color::Color; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum LineStyleType { Solid, @@ -10,7 +10,7 @@ pub enum LineStyleType { Dotted, } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct LineStyle { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/element/link_target.rs b/charming/src/element/link_target.rs index bc7e33c..c67bce7 100644 --- a/charming/src/element/link_target.rs +++ b/charming/src/element/link_target.rs @@ -1,6 +1,6 @@ use serde::Serialize; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum LinkTarget { #[serde(rename = "self")] diff --git a/charming/src/element/mark_area.rs b/charming/src/element/mark_area.rs index a4e47a4..54c8cf8 100644 --- a/charming/src/element/mark_area.rs +++ b/charming/src/element/mark_area.rs @@ -2,7 +2,7 @@ use serde::Serialize; use super::{blur::Blur, emphasis::Emphasis, item_style::ItemStyle, label::Label}; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct MarkAreaData { #[serde(skip_serializing_if = "Option::is_none")] @@ -46,7 +46,7 @@ impl MarkAreaData { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct MarkArea { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/element/mark_line.rs b/charming/src/element/mark_line.rs index 86c511e..8ed0401 100644 --- a/charming/src/element/mark_line.rs +++ b/charming/src/element/mark_line.rs @@ -4,7 +4,7 @@ use crate::datatype::CompositeValue; use super::{label::Label, line_style::LineStyle, symbol::Symbol}; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum MarkLineDataType { Min, @@ -25,7 +25,7 @@ impl From<&str> for MarkLineDataType { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct MarkLineData { #[serde(skip_serializing_if = "Option::is_none")] @@ -130,6 +130,7 @@ impl From<(&str, &str)> for MarkLineData { } } +#[derive(Debug, PartialEq, PartialOrd, Clone)] pub enum MarkLineVariant { Simple(MarkLineData), StartToEnd(MarkLineData, MarkLineData), @@ -149,7 +150,7 @@ impl Serialize for MarkLineVariant { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct MarkLine { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/element/mark_point.rs b/charming/src/element/mark_point.rs index e4fcc5a..4c296c7 100644 --- a/charming/src/element/mark_point.rs +++ b/charming/src/element/mark_point.rs @@ -1,6 +1,6 @@ use serde::Serialize; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum MarkPointDataType { Min, @@ -19,7 +19,7 @@ impl From<&str> for MarkPointDataType { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct MarkPointData { #[serde(skip_serializing_if = "Option::is_none")] @@ -88,7 +88,7 @@ impl From<(&str, &str)> for MarkPointData { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct MarkPoint { #[serde(skip_serializing_if = "Vec::is_empty")] diff --git a/charming/src/element/minor_split_line.rs b/charming/src/element/minor_split_line.rs index aecc59a..fc98bee 100644 --- a/charming/src/element/minor_split_line.rs +++ b/charming/src/element/minor_split_line.rs @@ -2,7 +2,7 @@ use serde::Serialize; use super::line_style::LineStyle; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct MinorSplitLine { show: Option, diff --git a/charming/src/element/minor_tick.rs b/charming/src/element/minor_tick.rs index 9972ec1..bb2bdde 100644 --- a/charming/src/element/minor_tick.rs +++ b/charming/src/element/minor_tick.rs @@ -2,7 +2,7 @@ use serde::Serialize; use super::line_style::LineStyle; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct MinorTick { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/element/mod.rs b/charming/src/element/mod.rs index 14ed0b6..69819ab 100644 --- a/charming/src/element/mod.rs +++ b/charming/src/element/mod.rs @@ -36,6 +36,7 @@ pub mod pointer; pub mod scale_limit; pub mod select; pub mod shape; +pub mod smoothness; pub mod sort; pub mod split_area; pub mod split_line; diff --git a/charming/src/element/name_location.rs b/charming/src/element/name_location.rs index 4b07bbc..3baf270 100644 --- a/charming/src/element/name_location.rs +++ b/charming/src/element/name_location.rs @@ -1,6 +1,6 @@ use serde::Serialize; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum NameLocation { Start, diff --git a/charming/src/element/orient.rs b/charming/src/element/orient.rs index 84895f6..6867ec5 100644 --- a/charming/src/element/orient.rs +++ b/charming/src/element/orient.rs @@ -1,6 +1,6 @@ use serde::Serialize; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum Orient { Horizontal, diff --git a/charming/src/element/padding.rs b/charming/src/element/padding.rs index 2adaed6..4b46833 100644 --- a/charming/src/element/padding.rs +++ b/charming/src/element/padding.rs @@ -1,6 +1,7 @@ use serde::{ser::SerializeSeq, Serialize}; /// Padding space around content. +#[derive(Debug, PartialEq, PartialOrd, Clone)] pub enum Padding { /// Set padding of all sides. Single(f64), diff --git a/charming/src/element/parallel_layout.rs b/charming/src/element/parallel_layout.rs index afe75cd..e7aad97 100644 --- a/charming/src/element/parallel_layout.rs +++ b/charming/src/element/parallel_layout.rs @@ -1,6 +1,6 @@ use serde::Serialize; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum ParallelLayout { Horizontal, diff --git a/charming/src/element/pointer.rs b/charming/src/element/pointer.rs index cc6cab5..e5bce52 100644 --- a/charming/src/element/pointer.rs +++ b/charming/src/element/pointer.rs @@ -2,7 +2,7 @@ use serde::Serialize; use super::{icon::Icon, item_style::ItemStyle}; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Pointer { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/element/raw_string.rs b/charming/src/element/raw_string.rs index 18210f6..4fe631f 100644 --- a/charming/src/element/raw_string.rs +++ b/charming/src/element/raw_string.rs @@ -2,7 +2,7 @@ use serde::Serialize; pub static RAW_MARK: &str = "#*#*#*#"; -#[derive(Debug)] +#[derive(Debug, PartialEq, PartialOrd, Clone)] pub struct RawString(String); impl Serialize for RawString { diff --git a/charming/src/element/scale_limit.rs b/charming/src/element/scale_limit.rs index b145355..7a9031e 100644 --- a/charming/src/element/scale_limit.rs +++ b/charming/src/element/scale_limit.rs @@ -1,6 +1,6 @@ use serde::Serialize; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct ScaleLimit { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/element/select.rs b/charming/src/element/select.rs index e6b435f..703f894 100644 --- a/charming/src/element/select.rs +++ b/charming/src/element/select.rs @@ -2,7 +2,7 @@ use serde::Serialize; use super::{item_style::ItemStyle, label::Label}; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Select { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/element/shape.rs b/charming/src/element/shape.rs index b581397..f86d24f 100644 --- a/charming/src/element/shape.rs +++ b/charming/src/element/shape.rs @@ -1,6 +1,6 @@ use serde::Serialize; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum Shape { Polygon, diff --git a/charming/src/element/smoothness.rs b/charming/src/element/smoothness.rs new file mode 100644 index 0000000..7a8aae5 --- /dev/null +++ b/charming/src/element/smoothness.rs @@ -0,0 +1,49 @@ +use serde::Serialize; + +#[derive(Debug, PartialEq, PartialOrd, Clone)] +pub enum Smoothness { + Single(f64), + Boolean(bool), +} + +impl Serialize for Smoothness { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + match self { + Smoothness::Single(smoothness) => serializer.serialize_f64(*smoothness), + Smoothness::Boolean(smoothness) => serializer.serialize_bool(*smoothness), + } + } +} + +impl From for Smoothness { + fn from(value: f64) -> Self { + Smoothness::Single(value) + } +} + +impl From for Smoothness { + fn from(value: f32) -> Self { + Smoothness::Single(value as f64) + } +} + +impl From for Smoothness { + fn from(value: i32) -> Self { + Smoothness::Single(value as f64) + } +} + +impl From for Smoothness { + fn from(value: u32) -> Self { + Smoothness::Single(value as f64) + } +} + +impl From for Smoothness { + fn from(value: bool) -> Self { + Smoothness::Boolean(value) + } +} diff --git a/charming/src/element/sort.rs b/charming/src/element/sort.rs index a56ddad..6f2589d 100644 --- a/charming/src/element/sort.rs +++ b/charming/src/element/sort.rs @@ -1,5 +1,6 @@ use serde::Serialize; +#[derive(Debug, PartialEq, PartialOrd, Clone)] pub enum Sort { Ascending, Descending, diff --git a/charming/src/element/split_area.rs b/charming/src/element/split_area.rs index 95f487d..999b514 100644 --- a/charming/src/element/split_area.rs +++ b/charming/src/element/split_area.rs @@ -1,6 +1,6 @@ use serde::Serialize; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct SplitArea { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/element/split_line.rs b/charming/src/element/split_line.rs index 66455f7..db1a804 100644 --- a/charming/src/element/split_line.rs +++ b/charming/src/element/split_line.rs @@ -2,7 +2,7 @@ use serde::Serialize; use super::line_style::LineStyle; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct SplitLine { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/element/symbol.rs b/charming/src/element/symbol.rs index c0061fd..4738e0d 100644 --- a/charming/src/element/symbol.rs +++ b/charming/src/element/symbol.rs @@ -1,7 +1,7 @@ use serde::Serialize; - use super::RawString; +#[derive(Debug, PartialEq, PartialOrd, Clone)] pub enum Symbol { Circle, Rect, diff --git a/charming/src/element/symbol_size.rs b/charming/src/element/symbol_size.rs index 242c72a..f896dab 100644 --- a/charming/src/element/symbol_size.rs +++ b/charming/src/element/symbol_size.rs @@ -2,7 +2,7 @@ use serde::Serialize; use super::RawString; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(untagged)] pub enum SymbolSize { Number(f64), diff --git a/charming/src/element/text_align.rs b/charming/src/element/text_align.rs index cd636a7..e628b61 100644 --- a/charming/src/element/text_align.rs +++ b/charming/src/element/text_align.rs @@ -1,6 +1,6 @@ use serde::Serialize; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum TextAlign { Auto, @@ -9,7 +9,7 @@ pub enum TextAlign { Center, } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum TextVerticalAlign { Auto, diff --git a/charming/src/element/text_style.rs b/charming/src/element/text_style.rs index 78dd854..974254c 100644 --- a/charming/src/element/text_style.rs +++ b/charming/src/element/text_style.rs @@ -2,7 +2,7 @@ use serde::Serialize; use super::color::Color; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct TextStyle { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/element/tooltip.rs b/charming/src/element/tooltip.rs index 7102386..f1237cf 100644 --- a/charming/src/element/tooltip.rs +++ b/charming/src/element/tooltip.rs @@ -2,7 +2,7 @@ use serde::Serialize; use crate::element::{AxisPointer, Color, Formatter, Padding}; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum TriggerOn { Mousemove, @@ -13,7 +13,7 @@ pub enum TriggerOn { } /// Types of triggering. -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum Trigger { Item, @@ -21,7 +21,7 @@ pub enum Trigger { None, } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Tooltip { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/charming/src/lib.rs b/charming/src/lib.rs index b420dc3..4c518ab 100644 --- a/charming/src/lib.rs +++ b/charming/src/lib.rs @@ -236,7 +236,7 @@ mouse pointer. [`Toolbox`] is a feature toolbox that includes data view, save as image, data zoom, restore, and reset. */ -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, Clone)] #[serde(rename_all = "camelCase")] pub struct Chart { #[serde(skip_serializing_if = "Vec::is_empty")] diff --git a/charming/src/renderer/image_renderer.rs b/charming/src/renderer/image_renderer.rs index b5175c4..1d718b5 100644 --- a/charming/src/renderer/image_renderer.rs +++ b/charming/src/renderer/image_renderer.rs @@ -19,7 +19,7 @@ var chart = echarts.init(null, {{#if theme}}'{{ theme }}'{{else}}null{{/if}}, { height: {{ height }} }); -chart.setOption({ animation: false }); +chart.setOption({ animation: false, progressive: 0 }); chart.setOption({{{ chart_option }}}); chart.renderToSVGString(); "#; diff --git a/charming/src/series/bar.rs b/charming/src/series/bar.rs index 3013f58..a07d946 100644 --- a/charming/src/series/bar.rs +++ b/charming/src/series/bar.rs @@ -7,7 +7,7 @@ use crate::{ element::{BackgroundStyle, ColorBy, CoordinateSystem, Emphasis, ItemStyle, Label, MarkLine}, }; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Bar { #[serde(rename = "type")] diff --git a/charming/src/series/bar3d.rs b/charming/src/series/bar3d.rs index 82597fd..f453389 100644 --- a/charming/src/series/bar3d.rs +++ b/charming/src/series/bar3d.rs @@ -5,7 +5,7 @@ use crate::{ element::{CoordinateSystem, DimensionEncode}, }; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] pub struct Bar3d { #[serde(rename = "type")] type_: String, diff --git a/charming/src/series/boxplot.rs b/charming/src/series/boxplot.rs index ee36ae0..ba47488 100644 --- a/charming/src/series/boxplot.rs +++ b/charming/src/series/boxplot.rs @@ -2,7 +2,7 @@ use serde::Serialize; use crate::element::{ColorBy, CoordinateSystem}; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Boxplot { #[serde(rename = "type")] diff --git a/charming/src/series/candlestick.rs b/charming/src/series/candlestick.rs index 29420f0..500ef95 100644 --- a/charming/src/series/candlestick.rs +++ b/charming/src/series/candlestick.rs @@ -5,7 +5,7 @@ use crate::{ element::{ColorBy, CoordinateSystem}, }; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Candlestick { #[serde(rename = "type")] diff --git a/charming/src/series/custom.rs b/charming/src/series/custom.rs index c5c1178..a82f17c 100644 --- a/charming/src/series/custom.rs +++ b/charming/src/series/custom.rs @@ -7,7 +7,7 @@ use crate::{ }, }; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Custom { type_: String, diff --git a/charming/src/series/effect_scatter.rs b/charming/src/series/effect_scatter.rs index 64335d5..83e09fe 100644 --- a/charming/src/series/effect_scatter.rs +++ b/charming/src/series/effect_scatter.rs @@ -8,27 +8,27 @@ use crate::{ }, }; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum EffectType { Ripple, } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum ShowEffectOn { Render, Emphasis, } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum RippleEffectBrushType { Fill, Stroke, } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct RippleEffect { #[serde(skip_serializing_if = "Option::is_none")] @@ -90,7 +90,7 @@ impl RippleEffect { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct EffectScatter { #[serde(rename = "type")] diff --git a/charming/src/series/funnel.rs b/charming/src/series/funnel.rs index 9f46ffe..ded015c 100644 --- a/charming/src/series/funnel.rs +++ b/charming/src/series/funnel.rs @@ -5,7 +5,7 @@ use crate::{ element::{ColorBy, Emphasis, ItemStyle, Label, LabelLine, Orient, Sort}, }; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum Align { Left, @@ -13,7 +13,7 @@ pub enum Align { Center, } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Funnel { #[serde(rename = "type")] diff --git a/charming/src/series/gauge.rs b/charming/src/series/gauge.rs index 1c0454a..747c016 100644 --- a/charming/src/series/gauge.rs +++ b/charming/src/series/gauge.rs @@ -8,7 +8,7 @@ use crate::{ }, }; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct GaugeDetail { #[serde(skip_serializing_if = "Option::is_none")] @@ -106,7 +106,7 @@ impl GaugeDetail { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct GaugeTitle { #[serde(skip_serializing_if = "Option::is_none")] @@ -141,7 +141,7 @@ impl GaugeTitle { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct GaugeProgress { #[serde(skip_serializing_if = "Option::is_none")] @@ -212,7 +212,7 @@ impl GaugeProgress { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Gauge { #[serde(rename = "type")] diff --git a/charming/src/series/graph.rs b/charming/src/series/graph.rs index 3fd0bca..47b840a 100644 --- a/charming/src/series/graph.rs +++ b/charming/src/series/graph.rs @@ -2,7 +2,7 @@ use serde::{Deserialize, Serialize}; use crate::element::{CoordinateSystem, Label, LabelLayout, LineStyle, ScaleLimit}; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct GraphLayoutCircular { #[serde(skip_serializing_if = "Option::is_none")] @@ -26,7 +26,7 @@ impl GraphLayoutCircular { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct GraphLayoutForce { #[serde(skip_serializing_if = "Option::is_none")] @@ -88,7 +88,7 @@ impl GraphLayoutForce { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum GraphLayout { None, @@ -107,7 +107,7 @@ impl From<&str> for GraphLayout { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct GraphNodeLabel { #[serde(skip_serializing_if = "Option::is_none")] @@ -169,7 +169,7 @@ impl GraphNodeLabel { } } -#[derive(Serialize, Deserialize)] +#[derive(Serialize, Deserialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct GraphNode { pub id: String, @@ -184,7 +184,7 @@ pub struct GraphNode { pub label: Option, } -#[derive(Serialize, Deserialize)] +#[derive(Serialize, Deserialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct GraphLink { pub source: String, @@ -193,13 +193,13 @@ pub struct GraphLink { pub value: Option, } -#[derive(Serialize, Deserialize)] +#[derive(Serialize, Deserialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct GraphCategory { pub name: String, } -#[derive(Serialize, Deserialize)] +#[derive(Serialize, Deserialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct GraphData { pub nodes: Vec, @@ -207,7 +207,7 @@ pub struct GraphData { pub categories: Vec, } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Graph { #[serde(rename = "type")] diff --git a/charming/src/series/heatmap.rs b/charming/src/series/heatmap.rs index bae05c2..12d4a7d 100644 --- a/charming/src/series/heatmap.rs +++ b/charming/src/series/heatmap.rs @@ -5,7 +5,7 @@ use crate::{ element::{CoordinateSystem, Emphasis, ItemStyle, Label}, }; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Heatmap { #[serde(rename = "type")] diff --git a/charming/src/series/line.rs b/charming/src/series/line.rs index 99f03e5..519a651 100644 --- a/charming/src/series/line.rs +++ b/charming/src/series/line.rs @@ -3,12 +3,12 @@ use serde::Serialize; use crate::{ datatype::{DataFrame, DataPoint}, element::{ - AreaStyle, CoordinateSystem, DimensionEncode, Emphasis, ItemStyle, Label, LineStyle, - MarkArea, MarkLine, MarkPoint, Symbol, + smoothness::Smoothness, AreaStyle, CoordinateSystem, DimensionEncode, Emphasis, ItemStyle, + Label, LineStyle, MarkArea, MarkLine, MarkPoint, Symbol, }, }; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Line { #[serde(rename = "type")] @@ -51,7 +51,7 @@ pub struct Line { emphasis: Option, #[serde(skip_serializing_if = "Option::is_none")] - smooth: Option, + smooth: Option, #[serde(skip_serializing_if = "Option::is_none")] connect_nulls: Option, @@ -178,7 +178,7 @@ impl Line { } /// Smoothness. - pub fn smooth>(mut self, smooth: F) -> Self { + pub fn smooth>(mut self, smooth: S) -> Self { self.smooth = Some(smooth.into()); self } diff --git a/charming/src/series/map.rs b/charming/src/series/map.rs index a9035dd..4fbb58b 100644 --- a/charming/src/series/map.rs +++ b/charming/src/series/map.rs @@ -1,5 +1,5 @@ use serde::Serialize; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Map {} diff --git a/charming/src/series/mod.rs b/charming/src/series/mod.rs index c56981a..9522fa0 100644 --- a/charming/src/series/mod.rs +++ b/charming/src/series/mod.rs @@ -50,6 +50,7 @@ pub use theme_river::*; pub use tree::*; pub use treemap::*; +#[derive(Debug, PartialEq, PartialOrd, Clone)] pub enum Series { Bar(bar::Bar), Bar3d(bar3d::Bar3d), diff --git a/charming/src/series/parallel.rs b/charming/src/series/parallel.rs index 0754b5d..8dc9377 100644 --- a/charming/src/series/parallel.rs +++ b/charming/src/series/parallel.rs @@ -2,17 +2,17 @@ use serde::Serialize; use crate::{ datatype::{DataFrame, DataPoint}, - element::{ColorBy, CoordinateSystem, Emphasis, LineStyle}, + element::{smoothness::Smoothness, ColorBy, CoordinateSystem, Emphasis, LineStyle}, }; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum ProgressiveChunkMode { Sequential, Mod, } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Parallel { #[serde(rename = "type")] @@ -49,7 +49,7 @@ pub struct Parallel { realtime: Option, #[serde(skip_serializing_if = "Option::is_none")] - smooth: Option, + smooth: Option, #[serde(skip_serializing_if = "Option::is_none")] progressive: Option, @@ -142,7 +142,7 @@ impl Parallel { self } - pub fn smooth>(mut self, smooth: F) -> Self { + pub fn smooth>(mut self, smooth: S) -> Self { self.smooth = Some(smooth.into()); self } diff --git a/charming/src/series/pictorial_bar.rs b/charming/src/series/pictorial_bar.rs index f613980..d857092 100644 --- a/charming/src/series/pictorial_bar.rs +++ b/charming/src/series/pictorial_bar.rs @@ -7,7 +7,7 @@ use crate::{ }, }; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct PictorialBar { #[serde(rename = "type")] diff --git a/charming/src/series/pie.rs b/charming/src/series/pie.rs index f3bf450..607282c 100644 --- a/charming/src/series/pie.rs +++ b/charming/src/series/pie.rs @@ -5,14 +5,14 @@ use crate::{ element::{ColorBy, CoordinateSystem, Emphasis, ItemStyle, Label, LabelLine}, }; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum PieRoseType { Radius, Area, } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Pie { #[serde(rename = "type")] diff --git a/charming/src/series/radar.rs b/charming/src/series/radar.rs index 64e0883..d3981f0 100644 --- a/charming/src/series/radar.rs +++ b/charming/src/series/radar.rs @@ -5,7 +5,7 @@ use crate::{ element::{AreaStyle, ColorBy, Emphasis, LineStyle, Symbol, Tooltip}, }; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Radar { #[serde(rename = "type")] diff --git a/charming/src/series/sankey.rs b/charming/src/series/sankey.rs index 7013cd3..69db444 100644 --- a/charming/src/series/sankey.rs +++ b/charming/src/series/sankey.rs @@ -5,7 +5,7 @@ use crate::{ element::{Emphasis, ItemStyle, Label, LineStyle, Orient}, }; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum SankeyNodeAlign { Left, @@ -13,7 +13,7 @@ pub enum SankeyNodeAlign { Justify, } -#[derive(Serialize, Deserialize, Debug)] +#[derive(Serialize, Deserialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct SankeyNode { pub name: String, @@ -70,7 +70,7 @@ where } } -#[derive(Serialize, Deserialize)] +#[derive(Serialize, Deserialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct SankeyLink { pub source: String, @@ -92,7 +92,7 @@ where } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Sankey { #[serde(rename = "type")] diff --git a/charming/src/series/scatter.rs b/charming/src/series/scatter.rs index 44d53c4..550f657 100644 --- a/charming/src/series/scatter.rs +++ b/charming/src/series/scatter.rs @@ -8,7 +8,7 @@ use crate::{ }, }; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Scatter { #[serde(rename = "type")] diff --git a/charming/src/series/sunburst.rs b/charming/src/series/sunburst.rs index 64855f5..2b8b53a 100644 --- a/charming/src/series/sunburst.rs +++ b/charming/src/series/sunburst.rs @@ -2,7 +2,7 @@ use serde::{Deserialize, Serialize}; use crate::element::{Emphasis, ItemStyle, Label, Sort}; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct SunburstLevel { #[serde(skip_serializing_if = "Option::is_none")] @@ -55,7 +55,7 @@ impl SunburstLevel { } } -#[derive(Serialize, Deserialize)] +#[derive(Serialize, Deserialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct SunburstNode { name: String, @@ -117,7 +117,7 @@ impl From<(&str, f64, &str)> for SunburstNode { } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Sunburst { #[serde(rename = "type")] diff --git a/charming/src/series/theme_river.rs b/charming/src/series/theme_river.rs index 742453d..bf843e5 100644 --- a/charming/src/series/theme_river.rs +++ b/charming/src/series/theme_river.rs @@ -5,6 +5,7 @@ use crate::{ element::{BoundaryGap, ColorBy, CoordinateSystem, Label}, }; +#[derive(Debug, PartialEq, PartialOrd, Clone)] pub struct ThemeRiverData { date: CompositeValue, value: CompositeValue, @@ -47,7 +48,7 @@ where } } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct ThemeRiver { #[serde(rename = "type")] diff --git a/charming/src/series/tree.rs b/charming/src/series/tree.rs index d92dbe7..e94ae57 100644 --- a/charming/src/series/tree.rs +++ b/charming/src/series/tree.rs @@ -5,14 +5,14 @@ use crate::{ element::{Blur, Emphasis, ItemStyle, Label, Select, Symbol}, }; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum TreeLayout { Orthogonal, Radial, } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] pub enum TreeOrient { #[serde(rename = "LR")] LeftRight, @@ -24,14 +24,14 @@ pub enum TreeOrient { BottomTop, } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "snake_case")] pub enum TreeEdgeShape { Curve, Polyline, } -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct TreeLeaves { #[serde(skip_serializing_if = "Option::is_none")] @@ -55,7 +55,7 @@ impl TreeLeaves { } } -#[derive(Serialize, Deserialize)] +#[derive(Serialize, Deserialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct TreeNode { pub name: String, @@ -71,7 +71,7 @@ pub struct TreeNode { } /// The tree diagram is mainly used to display the tree data structure. -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Tree { #[serde(rename = "type")] diff --git a/charming/src/series/treemap.rs b/charming/src/series/treemap.rs index 3a27b03..87e060e 100644 --- a/charming/src/series/treemap.rs +++ b/charming/src/series/treemap.rs @@ -5,7 +5,7 @@ use crate::{ element::{Emphasis, ItemStyle, Label}, }; -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq, PartialOrd, Clone)] #[serde(rename_all = "camelCase")] pub struct Treemap { #[serde(rename = "type")] diff --git a/gallery/src/line/area_pieces.rs b/gallery/src/line/area_pieces.rs index 5b9f152..e563ffd 100644 --- a/gallery/src/line/area_pieces.rs +++ b/gallery/src/line/area_pieces.rs @@ -35,7 +35,7 @@ pub fn chart() -> Chart { ) .series( Line::new() - .smooth(0.6) + .smooth(true) .symbol(Symbol::None) .line_style(LineStyle::new().width(5).color("#5470C6")) .area_style(AreaStyle::new()) diff --git a/gallery/src/line/distribution_of_electricity.rs b/gallery/src/line/distribution_of_electricity.rs index 326a0a6..45ceae3 100644 --- a/gallery/src/line/distribution_of_electricity.rs +++ b/gallery/src/line/distribution_of_electricity.rs @@ -51,7 +51,7 @@ pub fn chart() -> Chart { .series( Line::new() .name("Electricity") - .smooth(0.5) + .smooth(true) .connect_nulls(true) .data(vec![ Some(300), diff --git a/gallery/src/line/gradient_stacked_area.rs b/gallery/src/line/gradient_stacked_area.rs index cbf15c3..ad90574 100644 --- a/gallery/src/line/gradient_stacked_area.rs +++ b/gallery/src/line/gradient_stacked_area.rs @@ -61,7 +61,7 @@ pub fn chart() -> Chart { }) .opacity(0.8), ) - .smooth(0.5) + .smooth(true) .data(vec![140, 232, 101, 264, 90, 340, 250]), ) .series( @@ -84,7 +84,7 @@ pub fn chart() -> Chart { }) .opacity(0.8), ) - .smooth(0.5) + .smooth(true) .data(vec![120, 282, 111, 234, 220, 340, 310]), ) .series( @@ -107,7 +107,7 @@ pub fn chart() -> Chart { }) .opacity(0.8), ) - .smooth(0.5) + .smooth(true) .data(vec![320, 132, 201, 334, 190, 130, 220]), ) .series( @@ -130,7 +130,7 @@ pub fn chart() -> Chart { }) .opacity(0.8), ) - .smooth(0.5) + .smooth(true) .data(vec![220, 402, 231, 134, 190, 230, 120]), ) .series( @@ -153,7 +153,7 @@ pub fn chart() -> Chart { }) .opacity(0.8), ) - .smooth(0.5) + .smooth(true) .data(vec![220, 302, 181, 234, 210, 290, 150]), ) } diff --git a/gallery/src/line/smoothed_line.rs b/gallery/src/line/smoothed_line.rs index e23cf8e..e173d7b 100644 --- a/gallery/src/line/smoothed_line.rs +++ b/gallery/src/line/smoothed_line.rs @@ -10,7 +10,7 @@ pub fn chart() -> Chart { .y_axis(Axis::new().type_(AxisType::Value)) .series( Line::new() - .smooth(0.5) + .smooth(true) .data(vec![820, 932, 901, 934, 1290, 1330, 1320]), ) } diff --git a/gallery/src/line/stacked_line.rs b/gallery/src/line/stacked_line.rs index d60a6ae..5eb5068 100644 --- a/gallery/src/line/stacked_line.rs +++ b/gallery/src/line/stacked_line.rs @@ -9,13 +9,18 @@ pub fn chart() -> Chart { Chart::new() .title(Title::new().text("Stacked Line")) .tooltip(Tooltip::new().trigger(Trigger::Axis)) - .legend(Legend::new().data(vec![ - "Email", - "Union Ads", - "Video Ads", - "Direct", - "Search Engine", - ])) + .legend( + Legend::new() + .data(vec![ + "Email", + "Union Ads", + "Video Ads", + "Direct", + "Search Engine", + "Affiliate Marketing", + ]) + .selected([("Affiliate Marketing", false)]), + ) .grid( Grid::new() .left("3%") @@ -61,4 +66,10 @@ pub fn chart() -> Chart { .stack("Total") .data(vec![820, 932, 901, 934, 1290, 1330, 1320]), ) + .series( + Line::new() + .name("Affiliate Marketing") + .stack("Total") + .data(vec![180, 232, 210, 290, 250, 400, 370]), + ) }