charming_fork_zephyr/component/
angle_axis.rs1use serde::Serialize;
2
3use crate::element::{
4 AxisLabel, AxisLine, AxisPointer, AxisTick, AxisType, BoundaryGap, MinorSplitLine, MinorTick,
5 SplitArea, SplitLine,
6};
7
8#[derive(Serialize)]
10#[serde(rename_all = "camelCase")]
11pub struct AngleAxis {
12 #[serde(skip_serializing_if = "Option::is_none")]
13 boundary_gap: Option<BoundaryGap>,
14
15 #[serde(skip_serializing_if = "Option::is_none")]
17 id: Option<String>,
18
19 #[serde(skip_serializing_if = "Option::is_none")]
21 polar_index: Option<i64>,
22
23 #[serde(skip_serializing_if = "Option::is_none")]
25 start_angle: Option<i64>,
26
27 #[serde(skip_serializing_if = "Option::is_none")]
29 clockwise: Option<bool>,
30
31 #[serde(skip_serializing_if = "Option::is_none")]
33 #[serde(rename = "type")]
34 type_: Option<AxisType>,
35
36 #[serde(skip_serializing_if = "Option::is_none")]
37 zlevel: Option<i64>,
38
39 #[serde(skip_serializing_if = "Option::is_none")]
40 z: Option<i64>,
41
42 #[serde(skip_serializing_if = "Option::is_none")]
44 min: Option<i64>,
45
46 #[serde(skip_serializing_if = "Option::is_none")]
48 max: Option<i64>,
49
50 #[serde(skip_serializing_if = "Option::is_none")]
51 scale: Option<bool>,
52
53 #[serde(skip_serializing_if = "Option::is_none")]
54 split_number: Option<i64>,
55
56 #[serde(skip_serializing_if = "Option::is_none")]
57 min_interval: Option<i64>,
58
59 #[serde(skip_serializing_if = "Option::is_none")]
60 max_interval: Option<i64>,
61
62 #[serde(skip_serializing_if = "Option::is_none")]
63 interval: Option<i64>,
64
65 #[serde(skip_serializing_if = "Option::is_none")]
66 log_base: Option<i64>,
67
68 #[serde(skip_serializing_if = "Option::is_none")]
69 silent: Option<bool>,
70
71 #[serde(skip_serializing_if = "Option::is_none")]
72 trigger_event: Option<bool>,
73
74 #[serde(skip_serializing_if = "Option::is_none")]
75 axis_line: Option<AxisLine>,
76
77 #[serde(skip_serializing_if = "Option::is_none")]
78 axis_tick: Option<AxisTick>,
79
80 #[serde(skip_serializing_if = "Option::is_none")]
81 axis_pointer: Option<AxisPointer>,
82
83 #[serde(skip_serializing_if = "Option::is_none")]
84 minor_tick: Option<MinorTick>,
85
86 #[serde(skip_serializing_if = "Option::is_none")]
87 axis_label: Option<AxisLabel>,
88
89 #[serde(skip_serializing_if = "Option::is_none")]
90 split_line: Option<SplitLine>,
91
92 #[serde(skip_serializing_if = "Option::is_none")]
93 minor_split_line: Option<MinorSplitLine>,
94
95 #[serde(skip_serializing_if = "Option::is_none")]
96 split_area: Option<SplitArea>,
97
98 #[serde(skip_serializing_if = "Vec::is_empty")]
99 data: Vec<String>,
100}
101
102impl AngleAxis {
103 pub fn new() -> Self {
104 Self {
105 boundary_gap: None,
106 id: None,
107 polar_index: None,
108 start_angle: None,
109 clockwise: None,
110 type_: None,
111 zlevel: None,
112 z: None,
113 min: None,
114 max: None,
115 scale: None,
116 split_number: None,
117 min_interval: None,
118 max_interval: None,
119 interval: None,
120 log_base: None,
121 silent: None,
122 trigger_event: None,
123 axis_line: None,
124 axis_tick: None,
125 axis_pointer: None,
126 minor_tick: None,
127 axis_label: None,
128 split_line: None,
129 minor_split_line: None,
130 split_area: None,
131 data: vec![],
132 }
133 }
134
135 pub fn boundary_gap<B: Into<BoundaryGap>>(mut self, boundary_gap: B) -> Self {
136 self.boundary_gap = Some(boundary_gap.into());
137 self
138 }
139
140 pub fn id<S: Into<String>>(mut self, id: S) -> Self {
141 self.id = Some(id.into());
142 self
143 }
144
145 pub fn polar_index<F: Into<i64>>(mut self, polar_index: F) -> Self {
146 self.polar_index = Some(polar_index.into());
147 self
148 }
149
150 pub fn start_angle<F: Into<i64>>(mut self, start_angle: F) -> Self {
151 self.start_angle = Some(start_angle.into());
152 self
153 }
154
155 pub fn clockwise(mut self, clockwise: bool) -> Self {
156 self.clockwise = Some(clockwise);
157 self
158 }
159
160 pub fn type_<T: Into<AxisType>>(mut self, type_: T) -> Self {
161 self.type_ = Some(type_.into());
162 self
163 }
164
165 pub fn zlevel<F: Into<i64>>(mut self, zlevel: F) -> Self {
166 self.zlevel = Some(zlevel.into());
167 self
168 }
169
170 pub fn z<F: Into<i64>>(mut self, z: F) -> Self {
171 self.z = Some(z.into());
172 self
173 }
174
175 pub fn min<F: Into<i64>>(mut self, min: F) -> Self {
176 self.min = Some(min.into());
177 self
178 }
179
180 pub fn max<F: Into<i64>>(mut self, max: F) -> Self {
181 self.max = Some(max.into());
182 self
183 }
184
185 pub fn scale(mut self, scale: bool) -> Self {
186 self.scale = Some(scale);
187 self
188 }
189
190 pub fn split_number<F: Into<i64>>(mut self, split_number: F) -> Self {
191 self.split_number = Some(split_number.into());
192 self
193 }
194
195 pub fn min_interval<F: Into<i64>>(mut self, min_interval: F) -> Self {
196 self.min_interval = Some(min_interval.into());
197 self
198 }
199
200 pub fn max_interval<F: Into<i64>>(mut self, max_interval: F) -> Self {
201 self.max_interval = Some(max_interval.into());
202 self
203 }
204
205 pub fn interval<F: Into<i64>>(mut self, interval: F) -> Self {
206 self.interval = Some(interval.into());
207 self
208 }
209
210 pub fn log_base<F: Into<i64>>(mut self, log_base: F) -> Self {
211 self.log_base = Some(log_base.into());
212 self
213 }
214
215 pub fn silent(mut self, silent: bool) -> Self {
216 self.silent = Some(silent);
217 self
218 }
219
220 pub fn trigger_event(mut self, trigger_event: bool) -> Self {
221 self.trigger_event = Some(trigger_event);
222 self
223 }
224
225 pub fn axis_line<A: Into<AxisLine>>(mut self, axis_line: A) -> Self {
226 self.axis_line = Some(axis_line.into());
227 self
228 }
229
230 pub fn axis_tick<A: Into<AxisTick>>(mut self, axis_tick: A) -> Self {
231 self.axis_tick = Some(axis_tick.into());
232 self
233 }
234
235 pub fn axis_pointer<A: Into<AxisPointer>>(mut self, axis_pointer: A) -> Self {
236 self.axis_pointer = Some(axis_pointer.into());
237 self
238 }
239
240 pub fn minor_tick<M: Into<MinorTick>>(mut self, minor_tick: M) -> Self {
241 self.minor_tick = Some(minor_tick.into());
242 self
243 }
244
245 pub fn axis_label<A: Into<AxisLabel>>(mut self, axis_label: A) -> Self {
246 self.axis_label = Some(axis_label.into());
247 self
248 }
249
250 pub fn split_line<S: Into<SplitLine>>(mut self, split_line: S) -> Self {
251 self.split_line = Some(split_line.into());
252 self
253 }
254
255 pub fn minor_split_line<M: Into<MinorSplitLine>>(mut self, minor_split_line: M) -> Self {
256 self.minor_split_line = Some(minor_split_line.into());
257 self
258 }
259
260 pub fn split_area<S: Into<SplitArea>>(mut self, split_area: S) -> Self {
261 self.split_area = Some(split_area.into());
262 self
263 }
264
265 pub fn data<S: Into<String>>(mut self, data: Vec<S>) -> Self {
266 self.data = data.into_iter().map(|s| s.into()).collect();
267 self
268 }
269}