Skip to content

Commit

Permalink
Merge pull request #30 from qknight/klick_builder_pattern
Browse files Browse the repository at this point in the history
Klick builder pattern
  • Loading branch information
yuankunzhang committed Feb 7, 2024
2 parents 79ed43f + a0d19c8 commit 974f8d6
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 11 deletions.
4 changes: 2 additions & 2 deletions charming/src/element/border_type.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use serde::Serialize;
use serde::{Serialize, Deserialize};

#[derive(Serialize)]
#[derive(Serialize, Deserialize, Clone, Debug)]
#[serde(rename_all = "snake_case")]
pub enum BorderType {
Solid,
Expand Down
5 changes: 3 additions & 2 deletions charming/src/element/color.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use serde::ser::{SerializeStruct, Serializer};
use serde::Serialize;
use serde::{Serialize, Deserialize};

#[derive(Serialize)]
#[serde(rename_all = "snake_case")]
Expand All @@ -18,7 +18,7 @@ impl From<&str> for ColorBy {
}
}

#[derive(Serialize)]
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct ColorStop {
offset: f64,
color: String,
Expand All @@ -33,6 +33,7 @@ impl ColorStop {
}
}

#[derive(Clone, Deserialize, Debug)]
pub enum Color {
Value(String),
LinearGradient {
Expand Down
5 changes: 2 additions & 3 deletions charming/src/element/item_style.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
use serde::Serialize;

use serde::{Serialize, Deserialize};
use super::{border_type::BorderType, color::Color};

#[derive(Serialize)]
#[derive(Serialize, Deserialize, Clone, Debug)]
#[serde(rename_all = "camelCase")]
pub struct ItemStyle {
#[serde(skip_serializing_if = "Option::is_none")]
Expand Down
37 changes: 33 additions & 4 deletions charming/src/series/sankey.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use serde::{Deserialize, Serialize};

use crate::{
datatype::CompositeValue,
element::{Emphasis, Label, LineStyle, Orient},
element::{Emphasis, Label, LineStyle, Orient, ItemStyle},
};

#[derive(Serialize)]
Expand All @@ -13,7 +13,7 @@ pub enum SankeyNodeAlign {
Justify,
}

#[derive(Serialize, Deserialize)]
#[derive(Serialize, Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
pub struct SankeyNode {
pub name: String,
Expand All @@ -23,17 +23,46 @@ pub struct SankeyNode {

#[serde(skip_serializing_if = "Option::is_none")]
pub depth: Option<f64>,

#[serde(skip_serializing_if = "Option::is_none")]
pub item_style: Option<ItemStyle>,
}

impl SankeyNode {
pub fn new<S>(name: S) -> Self where S: Into<String> {
Self {
name: name.into(),
value: None,
depth: None,
item_style: None,
}
}

pub fn value<V: Into<f64>>(mut self, value: V) -> Self {
self.value = Some(value.into());
self
}
pub fn depth<D: Into<f64>>(mut self, depth: D) -> Self {
self.depth = Some(depth.into());
self
}

pub fn item_style<S: Into<ItemStyle>>(mut self, item_style: S) -> Self {
self.item_style = Some(item_style.into());
self
}
}

impl<S> From<S> for SankeyNode
where
S: Into<String>,
where
S: Into<String>,
{
fn from(name: S) -> Self {
SankeyNode {
name: name.into(),
value: None,
depth: None,
item_style: None,
}
}
}
Expand Down

0 comments on commit 974f8d6

Please sign in to comment.