use crate::encode::Encode;
use fission_core::op::Color;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LineSeries {
pub name: String,
pub data: Vec<f32>,
pub encode: Option<Encode>,
pub smooth: bool,
pub color: Color,
pub area_style: Option<Color>,
pub step: Option<String>, pub stack: Option<String>,
}
impl LineSeries {
pub fn new(name: &str) -> Self {
Self {
name: name.into(),
data: Vec::new(),
encode: None,
smooth: false,
color: Color::BLUE,
area_style: None,
step: None,
stack: None,
}
}
pub fn data(mut self, data: Vec<f32>) -> Self {
self.data = data;
self
}
pub fn encode(mut self, encode: Encode) -> Self {
self.encode = Some(encode);
self
}
pub fn smooth(mut self, smooth: bool) -> Self {
self.smooth = smooth;
self
}
pub fn color(mut self, color: Color) -> Self {
self.color = color;
self
}
pub fn area_style(mut self, color: Color) -> Self {
self.area_style = Some(color);
self
}
pub fn step(mut self, step_type: &str) -> Self {
self.step = Some(step_type.into());
self
}
pub fn stack(mut self, stack_name: &str) -> Self {
self.stack = Some(stack_name.into());
self
}
}
impl Into<super::Series> for LineSeries {
fn into(self) -> super::Series {
super::Series::Line(self)
}
}