use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GraphEntry {
pub sgv: f32,
pub date: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GraphTreatment {
pub insulin: Option<f32>,
pub carbs: Option<f32>,
pub mbg: Option<f32>,
pub date: DateTime<Utc>,
pub is_isf: bool, }
#[derive(Debug, Clone, Copy, PartialEq, Default)]
pub enum UnitDisplay {
#[default]
MgDl,
MmolL,
Dual {
primary: UnitPreference,
},
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum UnitPreference {
MgDl,
MmolL,
}
#[derive(Debug, Clone, Copy)]
pub enum GraphScaling {
Static { min: f32, max: f32 },
Dynamic {
clamp_min: f32,
clamp_max: f32,
default_min: f32,
default_max: f32,
},
}
impl Default for GraphScaling {
fn default() -> Self {
Self::Dynamic {
clamp_min: 40.0,
clamp_max: 400.0,
default_min: 60.0,
default_max: 200.0,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Default)]
pub enum TreatmentDisplayMode {
#[default]
Timeline,
Contextual,
}
#[derive(Debug, Clone, Copy, PartialEq, Default)]
pub enum TimeAxisMode {
#[default]
Simple,
EquallyDistributed { count: u32 },
}