use chrono_tz::Tz;
#[derive(Debug, Clone, PartialEq, Eq, Default)]
pub enum TimezoneMode {
#[default]
Utc,
Local,
Timezone(Tz),
Exchange(Tz),
}
impl TimezoneMode {
pub fn nyse() -> Self {
TimezoneMode::Exchange(Tz::America__New_York)
}
pub fn lse() -> Self {
TimezoneMode::Exchange(Tz::Europe__London)
}
pub fn jse() -> Self {
TimezoneMode::Exchange(Tz::Asia__Tokyo)
}
pub fn hkex() -> Self {
TimezoneMode::Exchange(Tz::Asia__Hong_Kong)
}
pub fn to_tz(&self) -> Option<Tz> {
match self {
TimezoneMode::Utc => None, TimezoneMode::Local => None, TimezoneMode::Timezone(tz) | TimezoneMode::Exchange(tz) => Some(*tz),
}
}
}
#[derive(Debug, Clone)]
pub struct TimeScaleOptions {
pub right_offset: f32,
pub right_offset_pixels: Option<f32>,
pub bar_spacing: f32,
pub min_bar_spacing: f32,
pub max_bar_spacing: f32,
pub fix_left_edge: bool,
pub fix_right_edge: bool,
pub lock_visible_time_range_on_resize: bool,
pub right_bar_stays_on_scroll: bool,
pub shift_visible_range_on_new_bar: bool,
pub allow_shift_visible_range_on_whitespace_replacement: bool,
pub time_visible: bool,
pub seconds_visible: bool,
pub ticks_visible: bool,
pub uniform_distribution: bool,
pub allow_bold_labels: bool,
pub timezone: TimezoneMode,
}
impl Default for TimeScaleOptions {
fn default() -> Self {
Self {
right_offset: 2.5, right_offset_pixels: None,
bar_spacing: 6.0,
min_bar_spacing: 0.5,
max_bar_spacing: 0.0,
fix_left_edge: true, fix_right_edge: false, lock_visible_time_range_on_resize: false,
right_bar_stays_on_scroll: false,
shift_visible_range_on_new_bar: true,
allow_shift_visible_range_on_whitespace_replacement: false,
time_visible: false,
seconds_visible: true,
ticks_visible: false,
uniform_distribution: false,
allow_bold_labels: true,
timezone: TimezoneMode::default(),
}
}
}