Skip to main content

logisheets_controller/api/
types.rs

1use gents_derives::TS;
2use logisheets_base::{BlockId, DiyCellId};
3
4use crate::{Appendix, Style, Value, style_manager::RawStyle};
5
6#[derive(Debug, Clone, TS)]
7#[ts(file_name = "save_file_result.ts", rename_all = "camelCase")]
8pub struct SaveFileResult {
9    pub data: Vec<u8>,
10    pub code: u8,
11}
12
13#[derive(Debug, Clone, TS)]
14#[ts(file_name = "cell_info.ts", rename_all = "camelCase")]
15pub struct CellInfo {
16    pub value: Value,
17    pub formula: String,
18    pub style: Style,
19    pub block_id: Option<BlockId>,
20    pub diy_cell_id: Option<DiyCellId>,
21    /// The value of this cell's data-validation shadow, if one exists. It is
22    /// the boolean result of the validation rule (`false` ⇒ the cell's value
23    /// violates the rule). `None` when the cell has no data-validation shadow.
24    pub validation_shadow: Option<Value>,
25}
26
27#[derive(Debug, Clone, TS)]
28#[ts(file_name = "sheet_dimension.ts", rename_all = "camelCase")]
29pub struct SheetDimension {
30    pub max_row: usize,
31    pub max_col: usize,
32    pub height: f64,
33    pub width: f64,
34}
35
36#[derive(Debug, Clone, TS)]
37#[ts(file_name = "reproducible_cell.ts", rename_all = "camelCase")]
38// It is used to reproduce cells.
39// Note that `value` or `style` is not friendly to the frontend, and reproducing cells
40// don't have formula.
41pub struct ReproducibleCell {
42    pub coordinate: SheetCoordinate,
43    pub value: Value,
44    pub style: RawStyle,
45    pub appendix: Vec<Appendix>,
46}
47
48#[derive(Debug, Clone, TS)]
49#[ts(file_name = "sheet_coordinate.ts", rename_all = "camelCase")]
50pub struct SheetCoordinate {
51    pub row: usize,
52    pub col: usize,
53}