From df794594310f2cece38335329471a4a43f05a971 Mon Sep 17 00:00:00 2001 From: Michael Freeborn Date: Sat, 13 Aug 2022 14:04:15 +0100 Subject: [PATCH 1/5] add serde_with dependency --- plotly/Cargo.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/plotly/Cargo.toml b/plotly/Cargo.toml index 124fe49d..598da9a5 100644 --- a/plotly/Cargo.toml +++ b/plotly/Cargo.toml @@ -32,6 +32,7 @@ once_cell = "1" serde = { version = "1.0.132", features = ["derive"] } serde_json = "1.0.73" serde_repr = "0.1" +serde_with = "2" rand = "0.8" rand_distr = "0.4" wasm-bindgen = { version = "0.2", optional = true } From c028a24f0999ca92e987411874b334b5fd71aa62 Mon Sep 17 00:00:00 2001 From: Michael Freeborn Date: Sat, 13 Aug 2022 19:01:16 +0100 Subject: [PATCH 2/5] apply skip_serializing_none macro --- plotly/src/traces/bar.rs | 63 ++++++++----------- plotly/src/traces/box_plot.rs | 71 +++++++++------------- plotly/src/traces/candlestick.rs | 29 ++++----- plotly/src/traces/contour.rs | 90 +++++++++------------------ plotly/src/traces/heat_map.rs | 50 +++++++-------- plotly/src/traces/histogram.rs | 94 ++++++++++++----------------- plotly/src/traces/ohlc.rs | 25 +++----- plotly/src/traces/sankey.rs | 54 ++++++----------- plotly/src/traces/scatter.rs | 97 ++++++++++++------------------ plotly/src/traces/scatter3d.rs | 90 +++++++++++---------------- plotly/src/traces/scatter_polar.rs | 64 +++++++------------- plotly/src/traces/surface.rs | 78 ++++++++---------------- 12 files changed, 304 insertions(+), 501 deletions(-) diff --git a/plotly/src/traces/bar.rs b/plotly/src/traces/bar.rs index b7591468..809115d2 100644 --- a/plotly/src/traces/bar.rs +++ b/plotly/src/traces/bar.rs @@ -1,14 +1,15 @@ //! Bar plot +use serde::Serialize; + use crate::common::{ Calendar, ConstrainText, Dim, ErrorData, Font, HoverInfo, Label, Marker, Orientation, PlotType, TextAnchor, TextPosition, Visible, }; -use crate::Trace; -use serde::Serialize; - use crate::private; +use crate::Trace; +#[serde_with::skip_serializing_none] #[derive(Serialize, Debug, Default, Clone)] pub struct Bar where @@ -18,69 +19,58 @@ where x: Vec, y: Vec, r#type: PlotType, - #[serde(skip_serializing_if = "Option::is_none")] name: Option, - #[serde(skip_serializing_if = "Option::is_none")] visible: Option, - #[serde(skip_serializing_if = "Option::is_none", rename = "showlegend")] + #[serde(rename = "showlegend")] show_legend: Option, - #[serde(skip_serializing_if = "Option::is_none", rename = "legendgroup")] + #[serde(rename = "legendgroup")] legend_group: Option, - #[serde(skip_serializing_if = "Option::is_none")] opacity: Option, - #[serde(skip_serializing_if = "Option::is_none")] ids: Option>, - #[serde(skip_serializing_if = "Option::is_none")] width: Option, - #[serde(skip_serializing_if = "Option::is_none")] offset: Option>, - #[serde(skip_serializing_if = "Option::is_none")] text: Option>, - #[serde(skip_serializing_if = "Option::is_none", rename = "textposition")] + #[serde(rename = "textposition")] text_position: Option>, - #[serde(skip_serializing_if = "Option::is_none", rename = "texttemplate")] + #[serde(rename = "texttemplate")] text_template: Option>, - #[serde(skip_serializing_if = "Option::is_none", rename = "hovertext")] + #[serde(rename = "hovertext")] hover_text: Option>, - #[serde(skip_serializing_if = "Option::is_none", rename = "hoverinfo")] + #[serde(rename = "hoverinfo")] hover_info: Option, - #[serde(skip_serializing_if = "Option::is_none", rename = "hovertemplate")] + #[serde(rename = "hovertemplate")] hover_template: Option>, - #[serde(skip_serializing_if = "Option::is_none", rename = "xaxis")] + #[serde(rename = "xaxis")] x_axis: Option, - #[serde(skip_serializing_if = "Option::is_none", rename = "yaxis")] + #[serde(rename = "yaxis")] y_axis: Option, - #[serde(skip_serializing_if = "Option::is_none")] orientation: Option, - #[serde(skip_serializing_if = "Option::is_none", rename = "alignmentgroup")] + #[serde(rename = "alignmentgroup")] alignment_group: Option, - #[serde(skip_serializing_if = "Option::is_none", rename = "offsetgroup")] + #[serde(rename = "offsetgroup")] offset_group: Option, - #[serde(skip_serializing_if = "Option::is_none")] marker: Option, - #[serde(skip_serializing_if = "Option::is_none", rename = "textangle")] + #[serde(rename = "textangle")] text_angle: Option, - #[serde(skip_serializing_if = "Option::is_none", rename = "textfont")] + #[serde(rename = "textfont")] text_font: Option, - #[serde(skip_serializing_if = "Option::is_none")] error_x: Option, - #[serde(skip_serializing_if = "Option::is_none")] error_y: Option, - #[serde(skip_serializing_if = "Option::is_none", rename = "cliponaxis")] + #[serde(rename = "cliponaxis")] clip_on_axis: Option, - #[serde(skip_serializing_if = "Option::is_none", rename = "constraintext")] + #[serde(rename = "constraintext")] constrain_text: Option, - #[serde(skip_serializing_if = "Option::is_none", rename = "hoverlabel")] + #[serde(rename = "hoverlabel")] hover_label: Option