mod color_mode;
mod custom;
mod custom_format;
mod simple;
mod simple_format;
pub use color_mode::*;
pub use custom::*;
pub use custom_format::*;
use serde::{Deserialize, Serialize};
pub use simple::*;
pub use simple_format::*;
use ts_rs::TS;
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, TS)]
#[serde(untagged)]
pub enum DatetimeFormatType {
Custom(CustomDatetimeStyleConfig),
Simple(SimpleDatetimeStyleConfig),
}
impl Default for DatetimeFormatType {
fn default() -> Self {
Self::Simple(SimpleDatetimeStyleConfig::default())
}
}
impl DatetimeFormatType {
pub fn time_zone(&self) -> &Option<String> {
match self {
DatetimeFormatType::Custom(x) => &x.time_zone,
DatetimeFormatType::Simple(x) => &x.time_zone,
}
}
pub fn time_zone_mut(&mut self) -> &mut Option<String> {
match self {
DatetimeFormatType::Custom(x) => &mut x.time_zone,
DatetimeFormatType::Simple(x) => &mut x.time_zone,
}
}
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize, TS)]
pub struct DatetimeColumnStyleConfig {
#[serde(default)]
#[serde(skip_serializing_if = "Option::is_none")]
#[ts(optional, as = "Option<_>")]
pub date_format: Option<DatetimeFormatType>,
#[serde(default)]
#[serde(skip_serializing_if = "DatetimeColorMode::is_none")]
pub datetime_color_mode: DatetimeColorMode,
#[serde(default)]
#[serde(skip_serializing_if = "Option::is_none")]
#[ts(skip)]
pub color: Option<String>,
}