Skip to main content

tree_table/args/
args_data_format.rs

1use alloc::string::String;
2
3use crate::DataFormat;
4use crate::SpanKey;
5use crate::statics::default_emit_event_for_api;
6use crate::statics::default_expand_for_api;
7use crate::statics::default_save_selection_for_api;
8use crate::statics::default_undo_for_api;
9#[cfg(feature = "serde")]
10use crate::statics::get_true;
11
12#[cfg_attr(feature = "tsify", derive(tsify::Tsify))]
13#[cfg_attr(feature = "tsify", tsify(from_wasm_abi))]
14#[cfg_attr(feature = "serde", serde(untagged))]
15#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
16#[derive(Debug, Clone, PartialEq)]
17pub enum FormatSpec {
18    /// Strings for default options.
19    Simple(String), // "dt", "fl64", "un32", etc.
20    /// Supports decimals, display_format, max_length, etc.
21    Rich(DataFormat),
22}
23
24#[cfg_attr(feature = "tsify", derive(tsify::Tsify))]
25#[cfg_attr(feature = "tsify", tsify(from_wasm_abi))]
26#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
27#[derive(Debug, Clone, PartialEq)]
28pub struct DataFormatArgs {
29    pub key: SpanKey,
30    pub fmt: Option<FormatSpec>,
31    #[cfg_attr(feature = "serde", serde(default = "get_true"))]
32    pub set_vals: bool,
33    #[cfg_attr(feature = "serde", serde(default = "get_true"))]
34    pub ignore_fmt_errs: bool,
35    #[cfg_attr(feature = "serde", serde(default))]
36    pub fmt_normalize: bool,
37    #[cfg_attr(feature = "serde", serde(default = "default_emit_event_for_api"))]
38    pub emit: bool,
39    #[cfg_attr(feature = "serde", serde(default = "default_undo_for_api"))]
40    pub undo: bool,
41    #[cfg_attr(feature = "serde", serde(default = "default_save_selection_for_api"))]
42    pub save_selection: bool,
43    #[cfg_attr(feature = "serde", serde(default = "default_expand_for_api"))]
44    pub expand: bool,
45}
46
47impl Default for DataFormatArgs {
48    fn default() -> Self {
49        DataFormatArgs {
50            key: SpanKey::None,
51            fmt: None,
52            set_vals: true,
53            ignore_fmt_errs: true,
54            fmt_normalize: false,
55            emit: default_emit_event_for_api(),
56            undo: default_undo_for_api(),
57            save_selection: default_save_selection_for_api(),
58            expand: default_expand_for_api(),
59        }
60    }
61}