Skip to content
use serde::Deserialize;

#[derive(Debug, Clone, PartialEq, Eq, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum ChartType {
    Line,
    Bar,
    Scatter,
    Histogram,
}

impl ChartType {
    pub fn value(&self) -> &'static str {
        match self {
            ChartType::Line => "line",
            ChartType::Bar => "bar",
            ChartType::Scatter => "scatter",
            ChartType::Histogram => "histogram",
        }
    }

    pub fn label(&self) -> &'static str {
        match self {
            ChartType::Line => "Line",
            ChartType::Bar => "Bar",
            ChartType::Scatter => "Scatter",
            ChartType::Histogram => "Histogram",
        }
    }

    pub fn all() -> &'static [ChartType] {
        &[
            ChartType::Line,
            ChartType::Bar,
            ChartType::Scatter,
            ChartType::Histogram,
        ]
    }
}

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ColKind {
    DateTime,
    Numeric,
    StringLike,
}