use serde::{Deserialize, Serialize};
use super::common::XlsxInnerXml;
#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename = "metadata")]
pub struct XlsxMetadata {
#[serde(rename = "metadataTypes", default, skip_serializing_if = "Option::is_none")]
pub metadata_types: Option<XlsxInnerXml>,
#[serde(rename = "metadataStrings", default, skip_serializing_if = "Option::is_none")]
pub metadata_strings: Option<XlsxInnerXml>,
#[serde(rename = "mdxMetadata", default, skip_serializing_if = "Option::is_none")]
pub mdx_metadata: Option<XlsxInnerXml>,
#[serde(rename = "futureMetadata", default)]
pub future_metadata: Vec<XlsxFutureMetadata>,
#[serde(rename = "cellMetadata", default, skip_serializing_if = "Option::is_none")]
pub cell_metadata: Option<XlsxMetadataBlocks>,
#[serde(rename = "valueMetadata", default, skip_serializing_if = "Option::is_none")]
pub value_metadata: Option<XlsxMetadataBlocks>,
#[serde(rename = "extLst", default, skip_serializing_if = "Option::is_none")]
pub ext_lst: Option<XlsxInnerXml>,
}
#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct XlsxFutureMetadata {
#[serde(rename = "bk", default)]
pub bk: Vec<XlsxFutureMetadataBlock>,
#[serde(rename = "extLst", default, skip_serializing_if = "Option::is_none")]
pub ext_lst: Option<XlsxInnerXml>,
}
#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct XlsxFutureMetadataBlock {
#[serde(rename = "extLst", default, skip_serializing_if = "Option::is_none")]
pub ext_lst: Option<XlsxInnerXml>,
}
#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct XlsxMetadataBlocks {
#[serde(rename = "@count", default, skip_serializing_if = "Option::is_none")]
pub count: Option<i64>,
#[serde(rename = "bk", default)]
pub bk: Vec<XlsxMetadataBlock>,
}
#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct XlsxMetadataBlock {
#[serde(rename = "rc", default)]
pub rc: Vec<XlsxMetadataRecord>,
}
#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct XlsxMetadataRecord {
#[serde(rename = "@t")]
pub t: i64,
#[serde(rename = "@v")]
pub v: i64,
}
#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename = "rvData")]
pub struct XlsxRichValueData {
#[serde(rename = "@count", default, skip_serializing_if = "Option::is_none")]
pub count: Option<i64>,
#[serde(rename = "rv", default)]
pub rv: Vec<XlsxRichValue>,
#[serde(rename = "extLst", default, skip_serializing_if = "Option::is_none")]
pub ext_lst: Option<XlsxInnerXml>,
}
#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct XlsxRichValue {
#[serde(rename = "@s")]
pub s: i64,
#[serde(rename = "v", default)]
pub v: Vec<String>,
#[serde(rename = "fb", default, skip_serializing_if = "Option::is_none")]
pub fb: Option<XlsxInnerXml>,
}
#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename = "richValueRels")]
pub struct XlsxRichValueRels {
#[serde(rename = "rel", default)]
pub rels: Vec<XlsxRichValueRelRelationship>,
#[serde(rename = "extLst", default, skip_serializing_if = "Option::is_none")]
pub ext_lst: Option<XlsxInnerXml>,
}
#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct XlsxRichValueRelRelationship {
#[serde(rename = "@r:id", default, skip_serializing_if = "String::is_empty")]
pub id: String,
#[serde(rename = "@id", default, skip_serializing)]
pub legacy_id: String,
}
impl XlsxRichValueRelRelationship {
pub fn rel_id(&self) -> &str {
if self.id.is_empty() {
&self.legacy_id
} else {
&self.id
}
}
}
#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename = "rvStructures")]
pub struct XlsxRichValueStructures {
#[serde(rename = "@count", default, skip_serializing_if = "Option::is_none")]
pub count: Option<i64>,
#[serde(rename = "s", default)]
pub s: Vec<XlsxRichValueStructure>,
#[serde(rename = "extLst", default, skip_serializing_if = "Option::is_none")]
pub ext_lst: Option<XlsxInnerXml>,
}
#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct XlsxRichValueStructure {
#[serde(rename = "@t")]
pub t: String,
#[serde(rename = "k", default)]
pub k: Vec<XlsxRichValueKey>,
}
#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct XlsxRichValueKey {
#[serde(rename = "@n")]
pub n: String,
#[serde(rename = "@t", default, skip_serializing_if = "Option::is_none")]
pub t: Option<String>,
}
#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename = "webImagesSrd")]
pub struct XlsxWebImagesSupportingRichData {
#[serde(rename = "webImageSrd", default)]
pub web_image_srd: Vec<XlsxWebImageSupportingRichData>,
#[serde(rename = "extLst", default, skip_serializing_if = "Option::is_none")]
pub ext_lst: Option<XlsxInnerXml>,
}
#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
pub struct XlsxWebImageSupportingRichData {
#[serde(rename = "address", default)]
pub address: XlsxExternalReference,
#[serde(rename = "moreImagesAddress", default)]
pub more_images_address: XlsxExternalReference,
#[serde(rename = "blip", default)]
pub blip: XlsxExternalReference,
}
#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct XlsxExternalReference {
#[serde(rename = "@r:id", default, skip_serializing_if = "Option::is_none")]
pub r_id: Option<String>,
}