charming_fork_zephyr/series/
treemap.rs

1use serde::Serialize;
2
3use crate::{
4    datatype::CompositeValue,
5    element::{Emphasis, ItemStyle, Label},
6};
7
8#[derive(Serialize)]
9#[serde(rename_all = "camelCase")]
10pub struct Treemap {
11    #[serde(rename = "type")]
12    type_: String,
13
14    #[serde(skip_serializing_if = "Option::is_none")]
15    id: Option<String>,
16
17    #[serde(skip_serializing_if = "Option::is_none")]
18    name: Option<String>,
19
20    #[serde(skip_serializing_if = "Option::is_none")]
21    zlevel: Option<i64>,
22
23    #[serde(skip_serializing_if = "Option::is_none")]
24    z: Option<i64>,
25
26    #[serde(skip_serializing_if = "Option::is_none")]
27    left: Option<CompositeValue>,
28
29    #[serde(skip_serializing_if = "Option::is_none")]
30    top: Option<CompositeValue>,
31
32    #[serde(skip_serializing_if = "Option::is_none")]
33    right: Option<CompositeValue>,
34
35    #[serde(skip_serializing_if = "Option::is_none")]
36    bottom: Option<CompositeValue>,
37
38    #[serde(skip_serializing_if = "Option::is_none")]
39    width: Option<CompositeValue>,
40
41    #[serde(skip_serializing_if = "Option::is_none")]
42    height: Option<CompositeValue>,
43
44    #[serde(skip_serializing_if = "Option::is_none")]
45    label: Option<Label>,
46
47    #[serde(skip_serializing_if = "Option::is_none")]
48    item_style: Option<ItemStyle>,
49
50    #[serde(skip_serializing_if = "Option::is_none")]
51    emphasis: Option<Emphasis>,
52}
53
54impl Treemap {
55    pub fn new() -> Self {
56        Treemap {
57            type_: "treemap".to_string(),
58            id: None,
59            name: None,
60            zlevel: None,
61            z: None,
62            left: None,
63            top: None,
64            right: None,
65            bottom: None,
66            width: None,
67            height: None,
68            label: None,
69            item_style: None,
70            emphasis: None,
71        }
72    }
73
74    pub fn id<S: Into<String>>(mut self, id: S) -> Self {
75        self.id = Some(id.into());
76        self
77    }
78
79    pub fn name<S: Into<String>>(mut self, name: S) -> Self {
80        self.name = Some(name.into());
81        self
82    }
83
84    pub fn zlevel<F: Into<i64>>(mut self, zlevel: F) -> Self {
85        self.zlevel = Some(zlevel.into());
86        self
87    }
88
89    pub fn z<F: Into<i64>>(mut self, z: F) -> Self {
90        self.z = Some(z.into());
91        self
92    }
93
94    pub fn left<C: Into<CompositeValue>>(mut self, left: C) -> Self {
95        self.left = Some(left.into());
96        self
97    }
98
99    pub fn top<C: Into<CompositeValue>>(mut self, top: C) -> Self {
100        self.top = Some(top.into());
101        self
102    }
103
104    pub fn right<C: Into<CompositeValue>>(mut self, right: C) -> Self {
105        self.right = Some(right.into());
106        self
107    }
108
109    pub fn bottom<C: Into<CompositeValue>>(mut self, bottom: C) -> Self {
110        self.bottom = Some(bottom.into());
111        self
112    }
113
114    pub fn width<C: Into<CompositeValue>>(mut self, width: C) -> Self {
115        self.width = Some(width.into());
116        self
117    }
118
119    pub fn height<C: Into<CompositeValue>>(mut self, height: C) -> Self {
120        self.height = Some(height.into());
121        self
122    }
123
124    pub fn label<L: Into<Label>>(mut self, label: L) -> Self {
125        self.label = Some(label.into());
126        self
127    }
128
129    pub fn item_style<I: Into<ItemStyle>>(mut self, item_style: I) -> Self {
130        self.item_style = Some(item_style.into());
131        self
132    }
133
134    pub fn emphasis<E: Into<Emphasis>>(mut self, emphasis: E) -> Self {
135        self.emphasis = Some(emphasis.into());
136        self
137    }
138}