cadmpeg_ir/
spreadsheets.rs1use schemars::JsonSchema;
5use serde::{Deserialize, Serialize};
6
7use crate::features::{FeatureId, ParameterId};
8
9#[derive(
11 Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize, JsonSchema,
12)]
13#[serde(transparent)]
14pub struct SpreadsheetId(pub String);
15
16#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)]
18pub struct Spreadsheet {
19 pub id: SpreadsheetId,
21 pub feature: FeatureId,
23 pub cells: Vec<ParameterId>,
25 #[serde(default, skip_serializing_if = "Vec::is_empty")]
27 pub column_widths: Vec<SpreadsheetDimension>,
28 #[serde(default, skip_serializing_if = "Vec::is_empty")]
30 pub row_heights: Vec<SpreadsheetDimension>,
31 #[serde(default, skip_serializing_if = "Vec::is_empty")]
33 pub merged_ranges: Vec<SpreadsheetRange>,
34 #[serde(default, skip_serializing_if = "Option::is_none")]
36 pub native_ref: Option<String>,
37}
38
39#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
41pub struct SpreadsheetDimension {
42 pub name: String,
44 pub pixels: u32,
46}
47
48#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
50pub struct SpreadsheetRange {
51 pub start: String,
53 pub end: String,
55}